This document summarizes a presentation on using JRuby and Ruby on Rails for web application development. It discusses how JRuby allows Ruby code to drive Java, embed Ruby in Java applications, and compile Ruby to Java bytecode. Rails is presented as a dynamic web framework that uses conventions over configuration and opinionated defaults. The document provides examples of common Rails features like scaffolding, models, controllers and views. It also outlines how to deploy Rails applications as WAR files or to cloud platforms using JRuby.
The next version of JavaScript, ES6, is starting to arrive. Many of its features are simple enhancements to the language we already have: things like arrow functions, class syntax, and destructuring. But other features will change the way we program JavaScript, fundamentally expanding the capabilities of the language and reshaping our future codebases. In this talk we'll focus on two of these, discovering the the myriad possibilities of generators and the many tricks you can pull of with template strings.
The next version of JavaScript, ES6, is starting to arrive. Many of its features are simple enhancements to the language we already have: things like arrow functions, class syntax, and destructuring. But other features will change the way we program JavaScript, fundamentally expanding the capabilities of the language and reshaping our future codebases. In this talk we'll focus on two of these, discovering the the myriad possibilities of generators and the many tricks you can pull of with template strings.
The fundamentals and advance application of Node will be covered. We will explore the design choices that make Node.js unique, how this changes the way applications are built and how systems of applications work most effectively in this model. You will learn how to create modular code that’s robust, expressive and clear. Understand when to use callbacks, event emitters and streams.
ORMs
Object Relational Mapping
Convert data between two different type systems
In memory representation of domain objects (better abstractions of reality)
Why??
Structure / Modularity(The M in MVC, Object Representation / Relational Mapping)
Agnostic Database Integration (configs)
Boilerplate Reduction (Spaghetti, Complex Queries, DRY)
Providing hooks Tx lifecycle (Before/After)
Easier data validation (Maintaining Data integrity)
Sensible Defaults (Better naming, Connascence/Cognizance etc)
RAW SQL strings have a high chance of compiling with semantic errors and @ runtime.
Go's Philosophy..
As it Affects ORMs
Duality (Class / Type)
Non existence of a type hierarchy
Struct embedding (Composition)
Plumbing not encouraged
they don't have to announce their relationships
Video Link: https://skillsmatter.com/skillscasts/6162-orms-with-golang
We start with why you should use task queues. Then we show a few straightforward examples with Python and Celery and Ruby and Resque.
Finally, we wrap up with a quick example of a task queue in PHP using Redis.
https://github.com/bryanhelmig/phqueue
An introduction into the use of Java inside ColdFusion. With CF being a J2EE application, we always have the ability to use Java if it's necessary. We look at how to get hold of Java objects, the difference between a class and an instance and how CF differentiates between them. Then we look at some examples...
This talk was given at JSSummit 2013. Entitled "Avoiding Callback Hell with Async.js", my talk focused on common pitfalls with asynchronous functions and callbacks in JavaScript, and using the async.js library and its advanced control flows to create cleaner, more manageable code.
An introductory presentation I'm doing at my workplace for other developers. This is geared toward programmers that are very new to javascript and covers some basics, but focuses on Functions, Objects and prototypal inheritance ideas.
The fundamentals and advance application of Node will be covered. We will explore the design choices that make Node.js unique, how this changes the way applications are built and how systems of applications work most effectively in this model. You will learn how to create modular code that’s robust, expressive and clear. Understand when to use callbacks, event emitters and streams.
ORMs
Object Relational Mapping
Convert data between two different type systems
In memory representation of domain objects (better abstractions of reality)
Why??
Structure / Modularity(The M in MVC, Object Representation / Relational Mapping)
Agnostic Database Integration (configs)
Boilerplate Reduction (Spaghetti, Complex Queries, DRY)
Providing hooks Tx lifecycle (Before/After)
Easier data validation (Maintaining Data integrity)
Sensible Defaults (Better naming, Connascence/Cognizance etc)
RAW SQL strings have a high chance of compiling with semantic errors and @ runtime.
Go's Philosophy..
As it Affects ORMs
Duality (Class / Type)
Non existence of a type hierarchy
Struct embedding (Composition)
Plumbing not encouraged
they don't have to announce their relationships
Video Link: https://skillsmatter.com/skillscasts/6162-orms-with-golang
We start with why you should use task queues. Then we show a few straightforward examples with Python and Celery and Ruby and Resque.
Finally, we wrap up with a quick example of a task queue in PHP using Redis.
https://github.com/bryanhelmig/phqueue
An introduction into the use of Java inside ColdFusion. With CF being a J2EE application, we always have the ability to use Java if it's necessary. We look at how to get hold of Java objects, the difference between a class and an instance and how CF differentiates between them. Then we look at some examples...
This talk was given at JSSummit 2013. Entitled "Avoiding Callback Hell with Async.js", my talk focused on common pitfalls with asynchronous functions and callbacks in JavaScript, and using the async.js library and its advanced control flows to create cleaner, more manageable code.
An introductory presentation I'm doing at my workplace for other developers. This is geared toward programmers that are very new to javascript and covers some basics, but focuses on Functions, Objects and prototypal inheritance ideas.
Crossing the Bridge: Connecting Rails and your Front-end FrameworkDaniel Spector
Presented at Railsconf 2015 by Daniel Spector, @danielspecs.
Crossing the Bridge explores tools, patterns and best practices to connect your Javascript MVC framework to Rails in the most seamless way possible. The talk progresses from demonstrating the standard API request cycle to preloading data to your client-side framework to rendering your javascript on the server. It explores Isomorphic Javascript and ways of implementing it with Rails.
Explains how to make use of ruby in java-based work environments. There are some hints at .NET equivalents along the way.
This is part 3 of a trilogy of Star Wars-themed ruby talks given at Protegra's SDEC 2011 in Winnipeg, Canada.
"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.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
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.
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.
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.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
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.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
9. Duck-Typing
def area(width = 10, height = 2 * width)
width * height
end
p area # => 200
p area 5 # => 50
p area 5, 20 # => 100
p area "10", 4 # => ?
10. Duck-Typing
p area "10", 4 # => "10101010"
# From Ruby API docs:
# String#*(num)
#
# Returns a new String containing num copies of
# the receiver.
#
# "Ho! " * 3 #=> "Ho! Ho! Ho! "
area true, false
# => NoMethodError: undefined method `*' for
# true:TrueClass
12. Blocks
list = [1, 2, 3, 4]
list.each {|n| puts n }
Ruby
list.each do |n|
puts n
end
List<Integer> list = Arrays.asList(1, 2, 3, 4);
Java for (Integer n : list) {
System.out.println(n);
}
13. Blocks
File.open(__FILE__) do |file|
file.each_line do |line|
Ruby puts line
end
end
BufferedReader file =
new BufferedReader(new FileReader("Blocks.java"));
try {
String line;
while ((line = buf.readLine()) != null) {
Java System.out.println(line);
}
} finally {
file.close();
}
14. Open Classes
msg = "Scramble this so you can't read it!"
msg.rot13!
# => NoMethodError: undefined method `rot13!' for
# "Scramble this so you can't read it!":String
15. Open Classes
class String
def rot13!
0.upto(length - 1) do |i|
case self[i]
when ?a..?z
self[i] = ?a + ((self[i] - ?a) + 13) % 26
when ?A..?Z
self[i] = ?A + ((self[i] - ?A) + 13) % 26
end
end
self
end
end
16. Open Classes
puts msg.rot13!
# => "Fpenzoyr guvf fb lbh pna'g ernq vg!"
puts msg.rot13!
# => "Scramble this so you can't read it!"
21. Convention over Configuration
URL GET /people
resources :people
Routing #=> people#index
# app/controllers/people_controller.rb
class PeopleController < ApplicationController
def index
Controller @people = Person.all
end
end
# app/models/person.rb
Model class Person < ActiveRecord::Base
end
View app/views/people/index.html.erb
22. Defaults with Choices
Default Alternatives
DataMapper, MongoMapper,
ORM ActiveRecord Sequel, Any object with
ActiveModel
HAML, XML Builder,
View Templates ERb Markaby, RedCloth (Textile),
BlueCloth (Markdown)
JavaScript
Prototype jQuery
Framework
MySQL, PostgreSQL,
Database SQLite3 Oracle, more via JRuby +
JDBC
Test Framework Test::Unit RSpec, Cucumber
26. New Application
$ rails new coolapp -m http://jruby.org
create
create README
create Rakefile
...
27. Dependencies with Bundler
$ cd coolapp
$ bundle install
Fetching source index for http://rubygems.org/
Using rake (0.8.7)
Using abstract (1.0.0)
...
Using rails (3.0.3)
Your bundle is complete!
30. Start Dev Server
$ rails server
=> Booting WEBrick
=> Rails 3.0.3 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2010-12-13 20:11:28] INFO WEBrick 1.3.1
[2010-12-13 20:11:28] INFO ruby 1.8.7 (2010-12-10) [java]
[2010-12-13 20:11:28] INFO WEBrick::HTTPServer#start: pid=21022 port=3000
32. Controller
class PeopleController < ApplicationController
# GET /people
# GET /people.xml
def index
@people = Person.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @people }
end
end
def show; end
def new; end
def edit; end
def create; end
def update; end
def destroy; end
end
54. Warbler
INSTALL gem install warbler
• Create a Java EE .war file from a Rails application
• “Looks like Java” to the ops staff
deploy
Rails
warble app.war to java
app
appserver
55. JRuby Deployment
Ruby servers WAR files Cloud
WEBrick GlassFish EY AppCloud
Trinidad Tomcat AppEngine
TorqueBox JBoss AWS EB
64. Metaphor Use Ruby, JRuby, and Rails to...
Sagrada • Build new facade faster
Familia • Scaffolding during refactoring
Ryugyong
• Revive a project with a new face
Hotel
Seismic • Reinforce business rules with a DSL
retrofit • Harden security
Szkieletor • Find novel uses for abandoned code