SlideShare uma empresa Scribd logo
1 de 117
Baixar para ler offline
How do You Build
Big Apps?
@rjrodger
senecajs.org
Tuesday 13 August 2013
Technical
Debt
Tuesday 13 August 2013
"A good plan, violently executed now,
is better than a perfect plan next week."
Tuesday 13 August 2013
You Must take on
Technical Debt
or You Will Die
Tuesday 13 August 2013
Sometimes,
it Happens
Anyway
Tuesday 13 August 2013
Tuesday 13 August 2013
Tuesday 13 August 2013
Tuesday 13 August 2013
NTSC 1941 Standard:
Black+White only
Signal encodes Brightness
Each Channel gets 6Mhz
Happy Days!
Tuesday 13 August 2013
Color Television
Three Colors: Red, Green, Blue
Each Color needs 3Mhz
You only have 6Mhz
and you need 9Mhz!
Technical Debt FTW
Tuesday 13 August 2013
You can't Break the
old Black+White TVs
Tuesday 13 August 2013
We must send the old brightness signal
White Light =
30% Red
59% Green
11% Blue
Send White, Red and Blue
Tuesday 13 August 2013
You need to embed the
color signals inside
the brightness signal
Tuesday 13 August 2013
Color TV circuits are
more complicated
than they should be.
Tuesday 13 August 2013
How do you Reduce
Technical Debt?
Tuesday 13 August 2013
Longer and
more detailed
Specifications!
Tuesday 13 August 2013
Better Languages
Better Mental Models
Tuesday 13 August 2013
How did the
Romans do
Long Division?
Tuesday 13 August 2013
LXXII MMMDCXII
L rem XII
Tuesday 13 August 2013
How did the
Romans do
Addition?
Tuesday 13 August 2013
1. Normalize: IV → IIII
2. Concatenate: IIII + XI → IIIIXI
3. Sort, descending: IIIIXI → XIIIII
4. Reduce: XIIIII → XV
IV + XI = ?
Tuesday 13 August 2013
How did the
Romans do
Subtraction?
Tuesday 13 August 2013
1. Normalize: XXIV → XXIIII
2. Eliminate: XXIIII - XV → XIIII - V
3. Expand: XIIII - V → VIIIIIIIII - V
4. Repeat 2 and 3 until no moves left
5. Reduce: IIIIIIIII → IX
XXIV - XV = ?
Tuesday 13 August 2013
How did the
Romans do
Multiplication?
Tuesday 13 August 2013
III → 3
VI → 6 → 110
III × VI = ?
3 × 001 × 0 = 0
3 × 010 × 1 = 6
3 × 100 × 1 = 12
18
bit shifting
Tuesday 13 August 2013
How did the
Romans do
Division?
Tuesday 13 August 2013
they didn't
Tuesday 13 August 2013
Roman Numerals
have
Technical Debt
Tuesday 13 August 2013
Tuesday 13 August 2013
Positional Number
Systems make us
Smarter
Tuesday 13 August 2013
Mental Models
for Code
Tuesday 13 August 2013
Procedural
Functional
Object-Oriented
Logic
Tuesday 13 August 2013
Let's Experiment
Tuesday 13 August 2013
Stand up.
Everybody.
Tuesday 13 August 2013
Is this a car?
Tuesday 13 August 2013
YES NO
Stay standing Sit down
And stay down!
Tuesday 13 August 2013
Tuesday 13 August 2013
Tuesday 13 August 2013
Tuesday 13 August 2013
Tuesday 13 August 2013
Tuesday 13 August 2013
Tuesday 13 August 2013
Objects are
Roman Numerals
Tuesday 13 August 2013
Objects break as
system complexity
grows
Tuesday 13 August 2013
The need for design
"patterns" is telling
you something
Tuesday 13 August 2013
Procedural
Functional
Object-Oriented
Logic
Tuesday 13 August 2013
Procedural code
tends to
Spaghetti
Tuesday 13 August 2013
Procedural
Functional
Object-Oriented
Logic
Tuesday 13 August 2013
Functional and Logic
are
More Powerful
Tuesday 13 August 2013
What
Happened?
Why didn't they
Win?
Tuesday 13 August 2013
Technical Debt
Tuesday 13 August 2013
Procedural
Functional
Object-Oriented
Logic
Tuesday 13 August 2013
What do we
Need?
Tuesday 13 August 2013
A Better
Mental Model
Tuesday 13 August 2013
Easy to Learn
Easy to Scale (humans)
Easy to Scale (machines)
Easy to Implement
Easy to build a Mental Model
Does not have to achieve
Very Large Scale
Tuesday 13 August 2013
We need Models
that Work for
Human Brains
Tuesday 13 August 2013
Why is
Ruby on Rails
Popular?
Tuesday 13 August 2013
Opinionated
==
Shared Mental Model
Tuesday 13 August 2013
Ruby on Rails
Model is an
Accident of History
Tuesday 13 August 2013
Let's Design a
Model!
Tuesday 13 August 2013
What does a Programmer do?
Self-contained Algorithms
Procedural Business Logic
Fitting it all Together
Tuesday 13 August 2013
Fitting it all Together
is
the Hard Part
Tuesday 13 August 2013
What are Humans
Good At?
Tuesday 13 August 2013
If a card has a vowel on one side, it
must have an odd number on the
other.
Which cards should you turn over to
verify that the rule is followed?
Tuesday 13 August 2013
If you're drinking beer, you must be
21 or over.
Which patrons should you ask for
ID?
Tuesday 13 August 2013
You solved the
second version using
Pattern Matching
Tuesday 13 August 2013
Why is Pattern
Matching
Such a Win?
Tuesday 13 August 2013
We are Pattern Matchers
It scales for humans and machines
Works without needing context
Tuesday 13 August 2013
Why do I Care?
Tuesday 13 August 2013
We build Minimum Viable Products
for startups.
It's all about technical debt.
Tuesday 13 August 2013
Lucius Annaeus Seneca
Tuesday 13 August 2013
The Seneca
Strategy
Tuesday 13 August 2013
Embrace
Micro-Services
Tuesday 13 August 2013
Lots of Little Processes
Do one thing, and do it Well
Communicate with Messages
Tuesday 13 August 2013
Pattern Match on
Messages
Tuesday 13 August 2013
Messages are Asynchronous
Send them any way you like
Use JSON as the data model
Tuesday 13 August 2013
"Send Tweet"
Acted on by Tweet Service
Example
{
command:"tweet"
author:"@rjrodger"
status:"Distill Rocks!"
}
Tuesday 13 August 2013
Tweet Service
If I see a message with this property:
Match the Pattern!
command:"tweet"
It's Mine!
I don't care how you get it to me.
And I'll ignore anything else.
Tuesday 13 August 2013
The Tweet Service can
be written in
Any Language
Tuesday 13 August 2013
Keep it Small
Die and restart on Errors
Report your status
Tuesday 13 August 2013
Level Up The
Pattern Matching
Tuesday 13 August 2013
Patterns map to
Actions
Tuesday 13 August 2013
cmd:drive
start engine, and go!
cmd:drive, type:hover
turn on anti-gravity
start engine and go!
Example
Tuesday 13 August 2013
Two Rules to make this Unique
1. More properties always wins
2. Check properties alphabetically
Tuesday 13 August 2013
cmd:drive
cmd:drive,
type:hover
Mapping
cmd: drive
type: wheel
speed: 50
cmd: drive
type: hover
speed: 100
Tuesday 13 August 2013
One More Thing
Tuesday 13 August 2013
Layers
Tuesday 13 August 2013
When you add a pattern:
If the pattern Already Exists,
Keep the Old Action,
so you can use it
inside the New Action
Tuesday 13 August 2013
cmd:drive
start engine, and go!
cmd:drive
call prior action
set speed to speed
Example
Tuesday 13 August 2013
Implementation
senecajs.org
Tuesday 13 August 2013
Let's
build stuff!
Tuesday 13 August 2013
Blog
Data Layer
Platform-as-a-Service
Tuesday 13 August 2013
the actions are
Blog
cmd:draft, post:content
cmd:publish, post:id
cmd:redact, post:id
cmd:homepage
cmd:comment, post:id,
comment:comment
Tuesday 13 August 2013
action, not abstraction
easy to learn
easy to modify
easy to maintain
self-documenting
Win
Tuesday 13 August 2013
the actions are
Data Layer
cmd:save, name:entity
cmd:load, name:entity
cmd:list, name:entity
cmd:remove, name:entity
Tuesday 13 August 2013
save some data
cmd: save,
name: product,
data: { name: Apple,
price: 1.99 }
Tuesday 13 August 2013
load some data
cmd: load,
name: product,
query: { name:Apple }
Tuesday 13 August 2013
implement the actions
cmd:save
insert into table name values data
cmd:load
select * from name where query
Tuesday 13 August 2013
add caching
cmd:save
call prior action
write into cache data
cmd:load
read data from cache
if found, return data, else call prior action
Tuesday 13 August 2013
layers
cmd:save
call prior action
write into cache data
cmd:load
read data from cache
if found, return data, else call prior action
insert into table name values data
select * from name where query
Tuesday 13 August 2013
more data layers
validation
permissions
throttling
custom logic
multiple databases
...
Tuesday 13 August 2013
multiple databases
cmd:save, name:session
save data to redis
cmd:save
insert into table name values data
when entity is a session:
all other entities:
Tuesday 13 August 2013
fine-grained control
easy to extend
easy to customize
easy to debug - there's no magic
Win
Tuesday 13 August 2013
Micro-Services
deployer
dispatcher
controller
Platform-as-a-Service
Tuesday 13 August 2013
deployer
controller
dispatcher
app appapp
requests
start
stop
install
route
dashboard
Tuesday 13 August 2013
controller actions
dash:install, app:details
submit cmd:install, app:details
to message bus (deployer picks up)
dash:start, app:id
submit cmd:start, app:id
to message bus (dispatcher picks up)
dash:stop, app:id
submit cmd:stop, app:id
to message bus (dispatcher picks up)
Tuesday 13 August 2013
deployer actions
cmd:install, app:details
download app code to server
get route from app details
submit cmd:route, route:path, server:server
to message bus (dispatcher picks up)
Tuesday 13 August 2013
dispatcher actions
cmd:route
add route and server to local routing table
cmd:start, app:id
start routing requests to app
cmd:stop, app:id
stop routing requests to app
Tuesday 13 August 2013
controller, dispatcher, deployer
are all in one app
install apps to localhost
focus on what, not how
Prototype
Tuesday 13 August 2013
controller, dispatcher, deployer
are separate processes
communicate via direct HTTP
apps live on VMs
but ... no design changes!
Minimum Viable
Product
Tuesday 13 August 2013
controller, dispatcher, deployer
are many processes
communicate via a message bus
apps live anywhere
but ... no design changes!
Scale It
Tuesday 13 August 2013
build now, scale later!
easy refactoring
language independence
easily observe and manage
Win
Tuesday 13 August 2013
How do You Build
Big Apps?
Tuesday 13 August 2013
Design for Many
Languages
Tuesday 13 August 2013
Design for
Scale
(human + machine)
Tuesday 13 August 2013
Design for
Human Brains
Tuesday 13 August 2013
Thank You!
@rjrodger
senecajs.org
Tuesday 13 August 2013

Mais conteúdo relacionado

Destaque

NodeJS Microservices, Built it Now, Scale it Later!
NodeJS Microservices, Built it Now, Scale it Later!NodeJS Microservices, Built it Now, Scale it Later!
NodeJS Microservices, Built it Now, Scale it Later!Lalit Shandilya
 
NodeJS security - still unsafe at most speeds - v1.0
NodeJS security - still unsafe at most speeds - v1.0NodeJS security - still unsafe at most speeds - v1.0
NodeJS security - still unsafe at most speeds - v1.0Dinis Cruz
 
Asynchronous I/O in NodeJS - new standard or challenges?
Asynchronous I/O in NodeJS - new standard or challenges?Asynchronous I/O in NodeJS - new standard or challenges?
Asynchronous I/O in NodeJS - new standard or challenges?Dinh Pham
 
Why Reactive Architecture Will Take Over The World (and why we should be wary...
Why Reactive Architecture Will Take Over The World (and why we should be wary...Why Reactive Architecture Will Take Over The World (and why we should be wary...
Why Reactive Architecture Will Take Over The World (and why we should be wary...Steve Pember
 
Microservices Past, Present, Future
Microservices Past, Present, FutureMicroservices Past, Present, Future
Microservices Past, Present, FutureDavid Dawson
 

Destaque (9)

NodeJS Microservices, Built it Now, Scale it Later!
NodeJS Microservices, Built it Now, Scale it Later!NodeJS Microservices, Built it Now, Scale it Later!
NodeJS Microservices, Built it Now, Scale it Later!
 
Nodejs in Production
Nodejs in ProductionNodejs in Production
Nodejs in Production
 
Building Web Apps & APIs With Node JS
Building Web Apps & APIs With Node JSBuilding Web Apps & APIs With Node JS
Building Web Apps & APIs With Node JS
 
NodeJS security - still unsafe at most speeds - v1.0
NodeJS security - still unsafe at most speeds - v1.0NodeJS security - still unsafe at most speeds - v1.0
NodeJS security - still unsafe at most speeds - v1.0
 
Asynchronous I/O in NodeJS - new standard or challenges?
Asynchronous I/O in NodeJS - new standard or challenges?Asynchronous I/O in NodeJS - new standard or challenges?
Asynchronous I/O in NodeJS - new standard or challenges?
 
Testing NodeJS Security
Testing NodeJS SecurityTesting NodeJS Security
Testing NodeJS Security
 
Why Reactive Architecture Will Take Over The World (and why we should be wary...
Why Reactive Architecture Will Take Over The World (and why we should be wary...Why Reactive Architecture Will Take Over The World (and why we should be wary...
Why Reactive Architecture Will Take Over The World (and why we should be wary...
 
Microservices Past, Present, Future
Microservices Past, Present, FutureMicroservices Past, Present, Future
Microservices Past, Present, Future
 
All about NodeJS
All about NodeJSAll about NodeJS
All about NodeJS
 

Semelhante a The Seneca Pattern at EngineYard Distill 2013 Conference

Matt training-html-halfday
Matt training-html-halfdayMatt training-html-halfday
Matt training-html-halfdayMatthew Dobson
 
Building Scalable, Resilient Infrastructure on CloudStack by Sebastian Stadil
Building Scalable, Resilient Infrastructure on CloudStack by Sebastian StadilBuilding Scalable, Resilient Infrastructure on CloudStack by Sebastian Stadil
Building Scalable, Resilient Infrastructure on CloudStack by Sebastian Stadilbuildacloud
 
How to Stop Reinventing the Auth Wheel
How to Stop Reinventing the Auth WheelHow to Stop Reinventing the Auth Wheel
How to Stop Reinventing the Auth WheelRené Cacheaux
 
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating DrupalMaking the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating DrupalAcquia
 
Responsive Web Design
Responsive Web DesignResponsive Web Design
Responsive Web DesignVu Tran Lam
 
ONA 2013 Design That Works session by Hong Qu
ONA 2013 Design That Works session by Hong QuONA 2013 Design That Works session by Hong Qu
ONA 2013 Design That Works session by Hong QuHong Qu
 
Where the Rubber Hits the Road: Real-World Stories of Force Ranking Stuff
Where the Rubber Hits the Road: Real-World Stories of Force Ranking StuffWhere the Rubber Hits the Road: Real-World Stories of Force Ranking Stuff
Where the Rubber Hits the Road: Real-World Stories of Force Ranking StuffTodd Olson
 
Cassandra Community Webinar | Practice Makes Perfect: Extreme Cassandra Optim...
Cassandra Community Webinar | Practice Makes Perfect: Extreme Cassandra Optim...Cassandra Community Webinar | Practice Makes Perfect: Extreme Cassandra Optim...
Cassandra Community Webinar | Practice Makes Perfect: Extreme Cassandra Optim...DataStax
 
Bring the Noise
Bring the NoiseBring the Noise
Bring the NoiseJon Cowie
 
Practical pairing of generative programming with functional programming.
Practical pairing of generative programming with functional programming.Practical pairing of generative programming with functional programming.
Practical pairing of generative programming with functional programming.Eugene Lazutkin
 
Vital.AI Creating Intelligent Apps
Vital.AI Creating Intelligent AppsVital.AI Creating Intelligent Apps
Vital.AI Creating Intelligent AppsVital.AI
 
Green Shoots in the Brownest Field: Being a Startup in Government
Green Shoots in the Brownest Field: Being a Startup in GovernmentGreen Shoots in the Brownest Field: Being a Startup in Government
Green Shoots in the Brownest Field: Being a Startup in GovernmentC4Media
 
Agile 2013 Talk: How DevOps Changes Everything
Agile 2013 Talk: How DevOps Changes EverythingAgile 2013 Talk: How DevOps Changes Everything
Agile 2013 Talk: How DevOps Changes EverythingKarthik Gaekwad
 
실시간 웹 협업도구 만들기 V0.3
실시간 웹 협업도구 만들기 V0.3실시간 웹 협업도구 만들기 V0.3
실시간 웹 협업도구 만들기 V0.3NAVER D2
 
OSMC 2013 | Flapjack - monitoring notification system by Birger Schmidt
OSMC 2013 | Flapjack - monitoring notification system by Birger SchmidtOSMC 2013 | Flapjack - monitoring notification system by Birger Schmidt
OSMC 2013 | Flapjack - monitoring notification system by Birger SchmidtNETWAYS
 

Semelhante a The Seneca Pattern at EngineYard Distill 2013 Conference (20)

Matt training-html-halfday
Matt training-html-halfdayMatt training-html-halfday
Matt training-html-halfday
 
Building Scalable, Resilient Infrastructure on CloudStack by Sebastian Stadil
Building Scalable, Resilient Infrastructure on CloudStack by Sebastian StadilBuilding Scalable, Resilient Infrastructure on CloudStack by Sebastian Stadil
Building Scalable, Resilient Infrastructure on CloudStack by Sebastian Stadil
 
How to Stop Reinventing the Auth Wheel
How to Stop Reinventing the Auth WheelHow to Stop Reinventing the Auth Wheel
How to Stop Reinventing the Auth Wheel
 
Matt training-obj-v2
Matt training-obj-v2Matt training-obj-v2
Matt training-obj-v2
 
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating DrupalMaking the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
Making the Switch, Part 1: Top 5 Things to Consider When Evaluating Drupal
 
Responsive Web Design
Responsive Web DesignResponsive Web Design
Responsive Web Design
 
ONA 2013 Design That Works session by Hong Qu
ONA 2013 Design That Works session by Hong QuONA 2013 Design That Works session by Hong Qu
ONA 2013 Design That Works session by Hong Qu
 
A false digital alibi on mac os x
A false digital alibi on mac os xA false digital alibi on mac os x
A false digital alibi on mac os x
 
Where the Rubber Hits the Road: Real-World Stories of Force Ranking Stuff
Where the Rubber Hits the Road: Real-World Stories of Force Ranking StuffWhere the Rubber Hits the Road: Real-World Stories of Force Ranking Stuff
Where the Rubber Hits the Road: Real-World Stories of Force Ranking Stuff
 
Cassandra Community Webinar | Practice Makes Perfect: Extreme Cassandra Optim...
Cassandra Community Webinar | Practice Makes Perfect: Extreme Cassandra Optim...Cassandra Community Webinar | Practice Makes Perfect: Extreme Cassandra Optim...
Cassandra Community Webinar | Practice Makes Perfect: Extreme Cassandra Optim...
 
Bring the Noise
Bring the NoiseBring the Noise
Bring the Noise
 
Designing responsively
Designing responsivelyDesigning responsively
Designing responsively
 
Graph everything
Graph everythingGraph everything
Graph everything
 
Practical pairing of generative programming with functional programming.
Practical pairing of generative programming with functional programming.Practical pairing of generative programming with functional programming.
Practical pairing of generative programming with functional programming.
 
HTML5 Slides
HTML5 SlidesHTML5 Slides
HTML5 Slides
 
Vital.AI Creating Intelligent Apps
Vital.AI Creating Intelligent AppsVital.AI Creating Intelligent Apps
Vital.AI Creating Intelligent Apps
 
Green Shoots in the Brownest Field: Being a Startup in Government
Green Shoots in the Brownest Field: Being a Startup in GovernmentGreen Shoots in the Brownest Field: Being a Startup in Government
Green Shoots in the Brownest Field: Being a Startup in Government
 
Agile 2013 Talk: How DevOps Changes Everything
Agile 2013 Talk: How DevOps Changes EverythingAgile 2013 Talk: How DevOps Changes Everything
Agile 2013 Talk: How DevOps Changes Everything
 
실시간 웹 협업도구 만들기 V0.3
실시간 웹 협업도구 만들기 V0.3실시간 웹 협업도구 만들기 V0.3
실시간 웹 협업도구 만들기 V0.3
 
OSMC 2013 | Flapjack - monitoring notification system by Birger Schmidt
OSMC 2013 | Flapjack - monitoring notification system by Birger SchmidtOSMC 2013 | Flapjack - monitoring notification system by Birger Schmidt
OSMC 2013 | Flapjack - monitoring notification system by Birger Schmidt
 

Mais de Richard Rodger

Using RAG to create your own Podcast conversations.pdf
Using RAG to create your own Podcast conversations.pdfUsing RAG to create your own Podcast conversations.pdf
Using RAG to create your own Podcast conversations.pdfRichard Rodger
 
Richard_TheDev2023_pattern.pptx.pdf
Richard_TheDev2023_pattern.pptx.pdfRichard_TheDev2023_pattern.pptx.pdf
Richard_TheDev2023_pattern.pptx.pdfRichard Rodger
 
richard-rodger-awssofia-microservices-2019.pdf
richard-rodger-awssofia-microservices-2019.pdfrichard-rodger-awssofia-microservices-2019.pdf
richard-rodger-awssofia-microservices-2019.pdfRichard Rodger
 
richardrodger-microservice-algebra-cluj-apr.pdf
richardrodger-microservice-algebra-cluj-apr.pdfrichardrodger-microservice-algebra-cluj-apr.pdf
richardrodger-microservice-algebra-cluj-apr.pdfRichard Rodger
 
richardrodger-designing-microservices-london-may.pdf
richardrodger-designing-microservices-london-may.pdfrichardrodger-designing-microservices-london-may.pdf
richardrodger-designing-microservices-london-may.pdfRichard Rodger
 
richardrodger-designing-microservices-london-may.pdf
richardrodger-designing-microservices-london-may.pdfrichardrodger-designing-microservices-london-may.pdf
richardrodger-designing-microservices-london-may.pdfRichard Rodger
 
richardrodger-microservice-risk-dublin-mar.pdf
richardrodger-microservice-risk-dublin-mar.pdfrichardrodger-microservice-risk-dublin-mar.pdf
richardrodger-microservice-risk-dublin-mar.pdfRichard Rodger
 
richardrodger-service-discovery-waterford-feb.pdf
richardrodger-service-discovery-waterford-feb.pdfrichardrodger-service-discovery-waterford-feb.pdf
richardrodger-service-discovery-waterford-feb.pdfRichard Rodger
 
richardrodger-vespa-waterford-oct.pdf
richardrodger-vespa-waterford-oct.pdfrichardrodger-vespa-waterford-oct.pdf
richardrodger-vespa-waterford-oct.pdfRichard Rodger
 
Richardrodger designing-microservices-uxdx-dublin-oct
Richardrodger designing-microservices-uxdx-dublin-octRichardrodger designing-microservices-uxdx-dublin-oct
Richardrodger designing-microservices-uxdx-dublin-octRichard Rodger
 
How microservices fail, and what to do about it
How microservices fail, and what to do about itHow microservices fail, and what to do about it
How microservices fail, and what to do about itRichard Rodger
 
Rapid Digital Innovation: How Node.js Delivers
Rapid Digital Innovation: How Node.js DeliversRapid Digital Innovation: How Node.js Delivers
Rapid Digital Innovation: How Node.js DeliversRichard Rodger
 
Richardrodger nodeconfeu-2014-final
Richardrodger nodeconfeu-2014-finalRichardrodger nodeconfeu-2014-final
Richardrodger nodeconfeu-2014-finalRichard Rodger
 
Richardrodger nodeday-2014-final
Richardrodger nodeday-2014-finalRichardrodger nodeday-2014-final
Richardrodger nodeday-2014-finalRichard Rodger
 
Richardrodger nodeday-2014-final
Richardrodger nodeday-2014-finalRichardrodger nodeday-2014-final
Richardrodger nodeday-2014-finalRichard Rodger
 
Richardrodger microxchgio-feb-2015-final
Richardrodger microxchgio-feb-2015-finalRichardrodger microxchgio-feb-2015-final
Richardrodger microxchgio-feb-2015-finalRichard Rodger
 
Micro-services Battle Scars
Micro-services Battle ScarsMicro-services Battle Scars
Micro-services Battle ScarsRichard Rodger
 
Building businesspost.ie using Node.js
Building businesspost.ie using Node.jsBuilding businesspost.ie using Node.js
Building businesspost.ie using Node.jsRichard Rodger
 
How to Write Big Apps (Richard Rodger NodeDublin 2012)
How to Write Big Apps (Richard Rodger NodeDublin 2012)How to Write Big Apps (Richard Rodger NodeDublin 2012)
How to Write Big Apps (Richard Rodger NodeDublin 2012)Richard Rodger
 
Richard rodger-appgen-2012-lxjs-lisbon
Richard rodger-appgen-2012-lxjs-lisbonRichard rodger-appgen-2012-lxjs-lisbon
Richard rodger-appgen-2012-lxjs-lisbonRichard Rodger
 

Mais de Richard Rodger (20)

Using RAG to create your own Podcast conversations.pdf
Using RAG to create your own Podcast conversations.pdfUsing RAG to create your own Podcast conversations.pdf
Using RAG to create your own Podcast conversations.pdf
 
Richard_TheDev2023_pattern.pptx.pdf
Richard_TheDev2023_pattern.pptx.pdfRichard_TheDev2023_pattern.pptx.pdf
Richard_TheDev2023_pattern.pptx.pdf
 
richard-rodger-awssofia-microservices-2019.pdf
richard-rodger-awssofia-microservices-2019.pdfrichard-rodger-awssofia-microservices-2019.pdf
richard-rodger-awssofia-microservices-2019.pdf
 
richardrodger-microservice-algebra-cluj-apr.pdf
richardrodger-microservice-algebra-cluj-apr.pdfrichardrodger-microservice-algebra-cluj-apr.pdf
richardrodger-microservice-algebra-cluj-apr.pdf
 
richardrodger-designing-microservices-london-may.pdf
richardrodger-designing-microservices-london-may.pdfrichardrodger-designing-microservices-london-may.pdf
richardrodger-designing-microservices-london-may.pdf
 
richardrodger-designing-microservices-london-may.pdf
richardrodger-designing-microservices-london-may.pdfrichardrodger-designing-microservices-london-may.pdf
richardrodger-designing-microservices-london-may.pdf
 
richardrodger-microservice-risk-dublin-mar.pdf
richardrodger-microservice-risk-dublin-mar.pdfrichardrodger-microservice-risk-dublin-mar.pdf
richardrodger-microservice-risk-dublin-mar.pdf
 
richardrodger-service-discovery-waterford-feb.pdf
richardrodger-service-discovery-waterford-feb.pdfrichardrodger-service-discovery-waterford-feb.pdf
richardrodger-service-discovery-waterford-feb.pdf
 
richardrodger-vespa-waterford-oct.pdf
richardrodger-vespa-waterford-oct.pdfrichardrodger-vespa-waterford-oct.pdf
richardrodger-vespa-waterford-oct.pdf
 
Richardrodger designing-microservices-uxdx-dublin-oct
Richardrodger designing-microservices-uxdx-dublin-octRichardrodger designing-microservices-uxdx-dublin-oct
Richardrodger designing-microservices-uxdx-dublin-oct
 
How microservices fail, and what to do about it
How microservices fail, and what to do about itHow microservices fail, and what to do about it
How microservices fail, and what to do about it
 
Rapid Digital Innovation: How Node.js Delivers
Rapid Digital Innovation: How Node.js DeliversRapid Digital Innovation: How Node.js Delivers
Rapid Digital Innovation: How Node.js Delivers
 
Richardrodger nodeconfeu-2014-final
Richardrodger nodeconfeu-2014-finalRichardrodger nodeconfeu-2014-final
Richardrodger nodeconfeu-2014-final
 
Richardrodger nodeday-2014-final
Richardrodger nodeday-2014-finalRichardrodger nodeday-2014-final
Richardrodger nodeday-2014-final
 
Richardrodger nodeday-2014-final
Richardrodger nodeday-2014-finalRichardrodger nodeday-2014-final
Richardrodger nodeday-2014-final
 
Richardrodger microxchgio-feb-2015-final
Richardrodger microxchgio-feb-2015-finalRichardrodger microxchgio-feb-2015-final
Richardrodger microxchgio-feb-2015-final
 
Micro-services Battle Scars
Micro-services Battle ScarsMicro-services Battle Scars
Micro-services Battle Scars
 
Building businesspost.ie using Node.js
Building businesspost.ie using Node.jsBuilding businesspost.ie using Node.js
Building businesspost.ie using Node.js
 
How to Write Big Apps (Richard Rodger NodeDublin 2012)
How to Write Big Apps (Richard Rodger NodeDublin 2012)How to Write Big Apps (Richard Rodger NodeDublin 2012)
How to Write Big Apps (Richard Rodger NodeDublin 2012)
 
Richard rodger-appgen-2012-lxjs-lisbon
Richard rodger-appgen-2012-lxjs-lisbonRichard rodger-appgen-2012-lxjs-lisbon
Richard rodger-appgen-2012-lxjs-lisbon
 

Último

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 

Último (20)

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 

The Seneca Pattern at EngineYard Distill 2013 Conference