This document discusses ways to create lightweight Ruby solutions by simplifying frameworks and components. It suggests replacing ActiveRecord with the simpler and faster Sequel ORM. It also recommends using Zepto.js instead of jQuery for mobile apps, and Rack and Sinatra to build lightweight web apps instead of full Rails applications. Benchmarks show these lightweight approaches can significantly improve performance compared to default Rails. Tools mentioned that aid lightweight development include Pow for local web serving and rbenv for Ruby version management. The document concludes by reminding developers not to see Ruby as the only solution and to consider other languages like Erlang, Scala and C++ for certain problems.
Beautiful code instead of callback hell using ES6 Generators, Koa, Bluebird (...andreaslubbe
Avoid the callback hell and improve on promises in node.js and JavaScript by using the new ES6 generators.
This presentation will show you before and after code examples that will illustrate the full benefit of using this new syntax.
CouchDB for Web Applications - Erlang Factory London 2009Jason Davies
CouchDB is built "of the Web" and it's very exciting to convert the immense
power that CouchDB provides into a usable, real-world Web application. In this
talk I cover case studies of real-world applications that use CouchDB,
including some that can be served from CouchDB itself, and how CouchDB can
shape your Web applications to be highly scalable and flexible by embracing
HTTP philosophies, JavaScript and schemaless documents.
Beautiful code instead of callback hell using ES6 Generators, Koa, Bluebird (...andreaslubbe
Avoid the callback hell and improve on promises in node.js and JavaScript by using the new ES6 generators.
This presentation will show you before and after code examples that will illustrate the full benefit of using this new syntax.
CouchDB for Web Applications - Erlang Factory London 2009Jason Davies
CouchDB is built "of the Web" and it's very exciting to convert the immense
power that CouchDB provides into a usable, real-world Web application. In this
talk I cover case studies of real-world applications that use CouchDB,
including some that can be served from CouchDB itself, and how CouchDB can
shape your Web applications to be highly scalable and flexible by embracing
HTTP philosophies, JavaScript and schemaless documents.
I presented this slides at the Ansible Munich Meetup on Feb 22cd 2016. You can find the recording of the talk here: https://www.youtube.com/watch?v=B7K1ETPyzoQ (starts at 1:18). This talk is giving a 101 level introduction on developing Ansible Module in Python.
ECMAScript 6 (ES6) is getting closer and closer with more support available in both node 0.12.0 and io.js. ES6 promises to fundamentally change the way we develop applications on node.js by allowing for the use of generators for iterators and a standard promises library for orchestrating our asynchronous calls. In this talk we will explore the implications of ES6 for the node driver and applications written on top of the driver.
Kotlin 1.2: Sharing code between platformsKirill Rozov
Discover what's new in Kotlin 1.2: syntax, standard library, performance and , of course, "Multiplatform project". Take closer look at how Kotlin authors see way of reusing code between platforms.
How to create a libcloud driver from scratchMist.io
Apache Libcloud is a Python library which hides differences between different cloud provider APIs and allows you to manage different cloud resources through a unified and easy to use API. In this presentation we will go through the process of adding a new driver for a Cloud provider and submitting the changes but to the libcloud project
How to create a libcloud driver from scratchMike Muzurakis
Apache Libcloud is a Python library which hides differences between different cloud provider APIs and allows you to manage different cloud resources through a unified and easy to use API. In this presentation we will go through the process of adding a new driver for a Cloud provider and submitting the changes but to the libcloud project
I presented this slides at the Ansible Munich Meetup on Feb 22cd 2016. You can find the recording of the talk here: https://www.youtube.com/watch?v=B7K1ETPyzoQ (starts at 1:18). This talk is giving a 101 level introduction on developing Ansible Module in Python.
ECMAScript 6 (ES6) is getting closer and closer with more support available in both node 0.12.0 and io.js. ES6 promises to fundamentally change the way we develop applications on node.js by allowing for the use of generators for iterators and a standard promises library for orchestrating our asynchronous calls. In this talk we will explore the implications of ES6 for the node driver and applications written on top of the driver.
Kotlin 1.2: Sharing code between platformsKirill Rozov
Discover what's new in Kotlin 1.2: syntax, standard library, performance and , of course, "Multiplatform project". Take closer look at how Kotlin authors see way of reusing code between platforms.
How to create a libcloud driver from scratchMist.io
Apache Libcloud is a Python library which hides differences between different cloud provider APIs and allows you to manage different cloud resources through a unified and easy to use API. In this presentation we will go through the process of adding a new driver for a Cloud provider and submitting the changes but to the libcloud project
How to create a libcloud driver from scratchMike Muzurakis
Apache Libcloud is a Python library which hides differences between different cloud provider APIs and allows you to manage different cloud resources through a unified and easy to use API. In this presentation we will go through the process of adding a new driver for a Cloud provider and submitting the changes but to the libcloud project
«Работа с базами данных с использованием Sequel»Olga Lavrentieva
Сергей Нартымов (Software Engineer в Transinet GmbH, г.Минск)
Доклад: «Работа с базами данных с использованием Sequel»
О чём: Ruby библиотека для работы с базами данных Sequel представляет собой легковесную альтернативу более популярной Active Record. Sequel лежит в основе работы с SQL базами данных в ROM (Ruby Object Mapper) - развивающемся ORM для Ruby, реализующим паттерн Data Mapper. В докладе будут рассмотрены различные аспекты использования Sequel, в том числе показаны примеры использования некоторых возможностей PostgreSQL с помощью Sequel.
Building on the Glimmer rendering engine, Ember continues to make performance and stability dual priorities. Let's discuss what the web looks like in 2017 and how Ember is prepared, and can better prepare, to meet new challenges.
Building production websites with Node.js on the Microsoft stackCellarTracker
Node.js on Windows, in production, may not be the most common configuration – but it’s immensely powerful with the help of edge.js, iisnode, and other open source projects. In fact, it’s a great tool for building highly performant, scalable front- and back-end websites on the Microsoft stack (IIS, .NET, SQL Server, etc).
In this talk, I’ll share some details, tips-and-tricks, and experiences building a production website on Windows, using CellarTracker – the world’s largest collection of community wine reviews and tools for cellar management – as an example.
Serverless technologies and capabilities are here and are accessible now more than ever.
The power of infinite scale and system capabilities has never been more accessible. This also affects traditional front end development as serverless technologies allow for easy construction of backend support for any frontend with ease and simplicity.
In this talk, we will demonstrate how to build a fully functional Graphql endpoint for FE applications using Apollo Server and Client libraries, utilizing different cloud providers. We will also demonstrate the usage of Servless.com framework to set up the required infrastructure as code to simplify and support this setup
The video of the presentation (Hebrew):
https://youtu.be/8ba4cpdtK-8
Spring Day | Spring and Scala | Eberhard WolffJAX London
2011-10-31 | 09:45 AM - 10:30 AM
Spring is widely used in the Java world - but does it make any sense to combine it with Scala? This talk gives an answer and shows how and why Spring is useful in the Scala world. All areas of Spring such as Dependency Injection, Aspect-Oriented Programming and the Portable Service Abstraction as well as Spring MVC are covered.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
3. Less code
=
Easier to maintain
=
(often)
Faster
4. Motives to travel light
• Production performance
• Complexity overhead
• Learning curve
• More flexibility
• Self-improvement
5. Do you always need all
$ ls
of that?
app/
config/
db/
doc/
Gemfile
lib/
log
public/
Rakefile
README
script/
spec/
test/
tmp/
vendor/
www/
Gemfile.lock
.rspec
config.ru
6. Do you always need all
$ ls
of that?
app/
config/
db/
doc/
Gemfile
lib/
log
public/
Rakefile
README
script/
spec/
test/
tmp/
vendor/
www/
Gemfile.lock
.rspec
config.ru
7. Lightweight plan
• Replace components of your framework
• Inject lightweight tools
• Migrate to a different platform
• Don't forget to be consistent
8. ActiveRecord? Sequel!
• http://sequel.rubyforge.org
• Sequel is a gem providing both raw SQL and neat
ORM interfaces
• 18 DBMS support out of the box
• 25—50% faster than ActiveRecord
• 100% ActiveModel compliant
9. Sequel ORM
class UsersController < ApplicationController
before_filter :find_user, :except => [:create]
def create
@user = User.new(params[:user])
end
protected
def find_user
@user = User[params[:id]]
end
end
10. Sequel Model
class User < Sequel::Model
one_to_many :comments
subset(:active){comments_count > 20}
plugin :validation_helpers
def validate
super
validates_presence [:email, :name]
validates_unique :email
validates_integer :age if new?
end
def before_create
self.created_at ||= Time.now # however there's a plugin
super # for timestamping
end
end
11. Raw SQL
DB.fetch("SELECT * FROM albums WHERE name LIKE :pattern", :pattern=>'A%') do |row|
puts row[:name]
end
DB.run "CREATE TABLE albums (id integer primary key, name varchar(255))"
db(:legacy).fetch("
SELECT
(SELECT count(*) FROM activities WHERE
ACTION = 'logged_in'
AND
DATE(created_at) BETWEEN DATE(:start) AND DATE(:end)
) AS login_count,
(SELECT count(*) FROM users WHERE
(DATE(created_at) BETWEEN DATE(:start) AND DATE(:end))
AND
(activated_at IS NOT NULL)
) AS user_count",
:start => start_date, :end => end_date)
13. Clean frontend with
Zepto.js
• http://zeptojs.com
• JS framework for with a jQ-compatible syntax
and API
• Perfect for rich mobile (esp. iOS) web-apps, but
works in any modern browser except IE
• 7.5 Kb at the moment (vs. 31 Kb jQ)
• Officially — beta, but used at mobile version of
Groupon production-ready
15. Xtra Xtra Small: Rack
• Rack is a specification of a minimal Ruby
API that models HTTP
• One might say Rack is a CGI in a Ruby
world
• Only connects a webserver with your
«app» (actually it can be just a lambda!)
16. Rack
• You need to have an object with a method
call(env)
• It should return an array with 3 elements
[status_code, headers, body]
• So now you can connect it with any webserver
that supports Rack
require ‘thin’
Rack::Handler::Thin.run(app, :Port => 4000)
• Lightweight webapp completed
17. Rack App Example
class ServerLoad
def call(env)
[200, {"Content-Type" => "text/plain"}, ["uptime | cut -f 11 -d ' '"]]
end
end
18. Metal. Rack on Rails
• ActionController::Metal is a way to get a valid Rack
app from a controller
• A bit more comfortable dealing with Rack inside
Rails
• You still can include any parts of ActionController
stack inside your metal controller
• Great for API`s
19. Metallic API
class ApiController < ActionController::Metal
include AbstractController::Callbacks
include ActionController::Helpers
include Devise::Controllers::Helpers
before_filter :require_current_user
def history
content_type = "application/json"
recipient = User.find(params[:user_id])
messages = Message.between(current_user, recipient)
if params[:start_date]
response_body = messages.after(params[:start_date]).to_json
else
response_body = messages.recent.to_json
end
end
end
20. Sinatra
• Sinatra should be considered as a compact
framework (however they prefer calling it DSL)
replacing ActionController and router
• You still can include ActiveRecord, ActiveSupport
or on the other side — include Sinatra app inside
Rails app
• But you can also go light with Sequel / DataMapper
and plaintext / XML / JSON output
21. Sinatra
require 'rubygems'
require 'sinatra'
get '/' do
haml :index
end
post '/signup' do
Spam.deliver(params[:email])
end
mime :json, 'application/json'
get '/events/recent.json' do
content_type :json
Event.recent.to_json
end
22. Padrino. DSL evolves to
a framework
• http://www.padrinorb.com/
• Based on a Sinatra and brings LIKE-A-BOSS
comfort to a Sinatra development process
• Fully supports 6 ORMs, 5 JS libs, 2
rendering engines, 6 test frameworks, 2
stylesheet engines and 2 mocking libs out
of the box
• Still remains quick and simple
23. Padrino blog
$ padrino g project sample_blog -t shoulda -e haml
-c sass -s jquery -d activerecord -b
class SampleBlog < Padrino::Application
register Padrino::Helpers
register Padrino::Mailer
register SassInitializer
get "/" do
"Hello World!"
end
get :about, :map => '/about_us' do
render :haml, "%p This is a sample blog"
end
end
24. Posts controller
SampleBlog.controllers :posts do
get :index, :provides => [:html, :rss, :atom] do
@posts = Post.all(:order => 'created_at desc')
render 'posts/index'
end
get :show, :with => :id do
@post = Post.find_by_id(params[:id])
render 'posts/show'
end
end
25. A little bit of useless
benchmarking
• We take almost plain «Hello World»
application and run
ab ‐c 10 ‐n 1000
• rack 1200 rps
• sinatra 600 rps
• padrino 570 rps
• rails 140 rps
27. Pow
• http://pow.cx/
• A 37signals Rack-based webserver for
developer needs
• One-line installer, unobtrusive, fast and only
serves web-apps, nothing else
• cd ~/.pow
ln ‐s /path/to/app
30. Ruby is not a silver
bullet
You should always consider different platforms and
languages: Erlang, Scala, .NET and even C++
31. Ruby is not a silver
bullet
You should always consider different platforms and
languages: Erlang, Scala, .NET and even C++
Don't miss Timothy Tsvetkov's speech
tomorrow