SlideShare a Scribd company logo
SimpleSoftwareisHard
TalesfromtheTrenches
BertrandDelacrétaz

@bdelacretaz, grep.codeconsult.ch
PrincipalScientist,CQ/AEMR&Dgroup,AdobeBasel

ApacheSoftwareFoundationMemberandDirector
November2014

slidesrevision2014-11-14
lookingforanswers?
wrongplace!
I’mmoreaboutquestionstoday…
picture: dhester on morguefile.com
couldwe
invent
this
today?
beautifulsimplicity
assimpleaspossible,butnotsimpler
(tobeprecise,it’saVictorinoxskipperknife)
a

storyof
simplicity
(twostories,actually)
s = UDP socket
While(s is open) {
Wait for packet
Packet matches our filter?
If not -> continue
If yes:
Compute storage path from T
Append packet to storage file
}
26linesofcode
3monthsof
work
(happilychuggingalongsince1999)
recorddigital
audio

continuously
cannotlosemore

than15seconds
(remember-1999)
options?
BigCo#1 BigCo#2
picture:RoganJoshonmorguefile.com
picture:MrMagiconmorguefile.com
picture:RoganJoshonmorguefile.com
N-dimensional
picture:pschubertonmorguefile.com
picture:RoganJoshonmorguefile.com
picture:andykonmorguefile.com
5127prototypes
overnight?no-8WIREDApril2011
picture:RoganJoshonmorguefile.com
N-dimensional
picture:pschubertonmorguefile.com
that’syouroptions…
BigCo#1 BigCo#2
picture:RoganJoshonmorguefile.com
picture:MrMagiconmorguefile.com
simpler?
picture:RoganJoshonmorguefile.com
picture:MrMagiconmorguefile.com
yes!
picture:RoganJoshonmorguefile.com
picture:MrMagiconmorguefile.com
RTP

packet

recorder
26linesofcode

3months
picture:RoganJoshonmorguefile.com
picture:MrMagiconmorguefile.com
RTP

packet

recorder
s = UDP socket
While(s is open) {
Wait for packet
Packet matches our filter?
If not -> continue
If yes:
Compute storage path from T
Append packet to storage file
}
ifit’snotsimpleenoughyet
donotgive
up
picture:RoganJoshonmorguefile.com
picture:MrMagiconmorguefile.com
RTP

packet

recorder
storage?
RTP

packet

recorder
storage?
continuousstorage
seekbytimestamp
variablespeedreplay
100%robust
enterpriseDB!
picture:jusbenonmorguefile.com
picture:RoganJoshonmorguefile.com
picture:pschubertonmorguefile.com
N-dimensional
RTP

packet

recorder
2014/06/25/1402.rtp
chronologicalhierarchyof

timestamp-addressedfiles

stores15secondsofRTPpackets
unbreakable
storage!
picture:RoganJoshonmorguefile.com
picture:MrMagiconmorguefile.com
RTP

packet

recorder
storage
2014/06/25/1402.rtp
continuousrecording
continuousstorage
seekbytimestamp
variablespeedreplay
s = UDP socket
While(s is open) {
Wait for packet
Packet matches our filter?
If not -> continue
If yes:
Compute storage path from T
Append packet to storage file
}
beautifulsimplicity
assimpleaspossible,butnotsimpler
Apowerfulmetaphor
cat sortgrep awk stdout
stderr
pipelinemetaphor
simplemodules
simpleassemblymodel
transparent,robust,powerful
Asimpleuniverse
“TherearejustthreeabstractionsinApacheStorm:
spouts,bolts,andtopologies.”
PicturefromApacheStorm:distributedstreamprocessing
Asimplemodel
picturefromhttp://de.wikipedia.org/wiki/MapReduce
SlingHealthChecks
donotreinvent
themetaphor!whatdoesmyproblemlooklike?
ok,but
high-end
CMS?
HTTPrequest
C
C
C
C
C
CC
C
C
processor
dispatcher
it’s

justa

Web

server…
HTTP0.9

(startsimple)
GET/hello.txt
<html>hello!</html>
client server
HTTPrequests
C
C
C
C
C
CC
C
C
dispatcher
evenifit

getsbusy…
processor
processor
processor
processor
processor
processor
processor
processor
processor
inspiredbynature…
multipleworkerswith
specificroles
picture:kakiskyonmorguefile.com
so,
how?
putthebar
high
donotacceptextracomplexity
investinsimplicity
canbeexpensive…andworthit
chasetheright
metapho
r
“anetworkpacketsrecorderandplayer”
simplicityisa
process
youusuallyknowwhenyou’rethere
beautifulsimplicity
assimpleaspossible,butnotsimpler
whatarethe
enablers?
modularitenablers
open

developmenenablers
JCR’sbigtreewithlowcoupling

promotes“local”simplictyenablers
ApacheSlingenablers
notsimpleenough?
don’tgiveup!
BTW...wearehiring!


More Related Content

Similar to Simple software is hard...don't give up!

DockerCon14 The Road Ahead by Solomon
DockerCon14 The Road Ahead by SolomonDockerCon14 The Road Ahead by Solomon
DockerCon14 The Road Ahead by Solomon
Docker, Inc.
 
Python @ PiTech - March 2009
Python @ PiTech - March 2009Python @ PiTech - March 2009
Python @ PiTech - March 2009
tudorprodan
 

Similar to Simple software is hard...don't give up! (13)

Luigi Presentation at OSCON 2013
Luigi Presentation at OSCON 2013Luigi Presentation at OSCON 2013
Luigi Presentation at OSCON 2013
 
Schizophrenic files v2
Schizophrenic files v2Schizophrenic files v2
Schizophrenic files v2
 
DockerCon14 The Road Ahead by Solomon
DockerCon14 The Road Ahead by SolomonDockerCon14 The Road Ahead by Solomon
DockerCon14 The Road Ahead by Solomon
 
Grandpas Dream
Grandpas Dream Grandpas Dream
Grandpas Dream
 
Killer Bugs From Outer Space
Killer Bugs From Outer SpaceKiller Bugs From Outer Space
Killer Bugs From Outer Space
 
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
 
What is Python?
What is Python?What is Python?
What is Python?
 
Python @ PiTech - March 2009
Python @ PiTech - March 2009Python @ PiTech - March 2009
Python @ PiTech - March 2009
 
The challenges of file formats
The challenges of file formatsThe challenges of file formats
The challenges of file formats
 
#OSSPARIS19 - Computer Vision framework for GeoSpatial Imagery: RoboSat.pink ...
#OSSPARIS19 - Computer Vision framework for GeoSpatial Imagery: RoboSat.pink ...#OSSPARIS19 - Computer Vision framework for GeoSpatial Imagery: RoboSat.pink ...
#OSSPARIS19 - Computer Vision framework for GeoSpatial Imagery: RoboSat.pink ...
 
Language Sleuthing HOWTO with NLTK
Language Sleuthing HOWTO with NLTKLanguage Sleuthing HOWTO with NLTK
Language Sleuthing HOWTO with NLTK
 
Internazionalizza le tue applicazioni
Internazionalizza le tue applicazioniInternazionalizza le tue applicazioni
Internazionalizza le tue applicazioni
 
Rust: Reach Further (from QCon Sao Paolo 2018)
Rust: Reach Further (from QCon Sao Paolo 2018)Rust: Reach Further (from QCon Sao Paolo 2018)
Rust: Reach Further (from QCon Sao Paolo 2018)
 

More from Bertrand Delacretaz

More from Bertrand Delacretaz (20)

VanillaJS & the Web Platform, a match made in heaven?
VanillaJS & the Web Platform, a match made in heaven?VanillaJS & the Web Platform, a match made in heaven?
VanillaJS & the Web Platform, a match made in heaven?
 
Surviving large online communities with conciseness and clarity
Surviving large online communities with conciseness and clarity Surviving large online communities with conciseness and clarity
Surviving large online communities with conciseness and clarity
 
Repoinit: a mini-language for content repository initialization
Repoinit: a mini-language for content repository initializationRepoinit: a mini-language for content repository initialization
Repoinit: a mini-language for content repository initialization
 
The Moving House Model, adhocracy and remote collaboration
The Moving House Model, adhocracy and remote collaborationThe Moving House Model, adhocracy and remote collaboration
The Moving House Model, adhocracy and remote collaboration
 
GraphQL in Apache Sling - but isn't it the opposite of REST?
GraphQL in Apache Sling - but isn't it the opposite of REST?GraphQL in Apache Sling - but isn't it the opposite of REST?
GraphQL in Apache Sling - but isn't it the opposite of REST?
 
Open Source Changes the World!
Open Source Changes the World!Open Source Changes the World!
Open Source Changes the World!
 
How to convince your left brain (or manager) to follow the Open Source path t...
How to convince your left brain (or manager) to follow the Open Source path t...How to convince your left brain (or manager) to follow the Open Source path t...
How to convince your left brain (or manager) to follow the Open Source path t...
 
L'Open Source change le Monde - BlendWebMix 2019
L'Open Source change le Monde - BlendWebMix 2019L'Open Source change le Monde - BlendWebMix 2019
L'Open Source change le Monde - BlendWebMix 2019
 
Shared Neurons - the Secret Sauce of Open Source communities?
Shared Neurons - the Secret Sauce of Open Source communities?Shared Neurons - the Secret Sauce of Open Source communities?
Shared Neurons - the Secret Sauce of Open Source communities?
 
Sling and Serverless, Best Friends Forever?
Sling and Serverless, Best Friends Forever?Sling and Serverless, Best Friends Forever?
Sling and Serverless, Best Friends Forever?
 
Serverless - introduction et perspectives concrètes
Serverless - introduction et perspectives concrètesServerless - introduction et perspectives concrètes
Serverless - introduction et perspectives concrètes
 
State of the Feather - ApacheCon North America 2018
State of the Feather - ApacheCon North America 2018State of the Feather - ApacheCon North America 2018
State of the Feather - ApacheCon North America 2018
 
Karate, the black belt of HTTP API testing?
Karate, the black belt of HTTP API testing?Karate, the black belt of HTTP API testing?
Karate, the black belt of HTTP API testing?
 
Open Source at Scale: the Apache Software Foundation (2018)
Open Source at Scale: the Apache Software Foundation (2018)Open Source at Scale: the Apache Software Foundation (2018)
Open Source at Scale: the Apache Software Foundation (2018)
 
They don't understand me! Tales from the multi-cultural trenches
They don't understand me! Tales from the multi-cultural trenchesThey don't understand me! Tales from the multi-cultural trenches
They don't understand me! Tales from the multi-cultural trenches
 
Prise de Décisions Asynchrone, Devoxx France 2018 (avec vidéo)
Prise de Décisions Asynchrone, Devoxx France 2018 (avec vidéo)Prise de Décisions Asynchrone, Devoxx France 2018 (avec vidéo)
Prise de Décisions Asynchrone, Devoxx France 2018 (avec vidéo)
 
Project and Community Services the Apache Way
Project and Community Services the Apache WayProject and Community Services the Apache Way
Project and Community Services the Apache Way
 
La Fondation Apache - keynote au Paris Open Source Summit 2017
La Fondation Apache - keynote au Paris Open Source Summit 2017La Fondation Apache - keynote au Paris Open Source Summit 2017
La Fondation Apache - keynote au Paris Open Source Summit 2017
 
Asynchronous Decision Making - FOSS Backstage 2017
Asynchronous Decision Making - FOSS Backstage 2017Asynchronous Decision Making - FOSS Backstage 2017
Asynchronous Decision Making - FOSS Backstage 2017
 
Building an Apache Sling Rendering Farm
Building an Apache Sling Rendering FarmBuilding an Apache Sling Rendering Farm
Building an Apache Sling Rendering Farm
 

Recently uploaded

Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfMastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
mbmh111980
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
Alluxio, Inc.
 

Recently uploaded (20)

Breaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdfBreaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdf
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Crafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationCrafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM Integration
 
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfMastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
 
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdfA Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Top Mobile App Development Companies 2024
Top Mobile App Development Companies 2024Top Mobile App Development Companies 2024
Top Mobile App Development Companies 2024
 
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
 
AI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in MichelangeloAI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in Michelangelo
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
 

Simple software is hard...don't give up!