SlideShare a Scribd company logo
1 of 86
Download to read offline
Velocity 2012




                                        Down with the fancy pants!
                          How people have been optimizing the wrong things
                                                and increased complexity.


                                                     Jan Schaumann <jschauma@etsy.com>
                                          B60D A9F7 0D89 544A 7995   7D25 5A5B 4375 275F 0BB5




                                                                                @jschauma

Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                                                    On
                                                                       ion
                                                                           s!


                                            http://etsy.me/L1iiuo


Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                        i on s!
                              ra ct
                        D ist




                                            http://etsy.me/KQDDSU


Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                     The Art of Yak Shaving!




                                                             http://etsy.me/LlIZsf


                                                (Yak Wo
                                                       ol)
                http://etsy.me/nn3QDV

Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                           s!
                                         t
                                   lle
                                Bu
                        e     r
                  S i lv



                                            http://etsy.me/L6tJ40




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                           s!
                                         t
                                   lle
                                Bu
                        e     r
                  S i lv




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                         X
                                 y !
                               rr
                            S o




                                            http://etsy.me/L6tJ40




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                          How do we build websites?




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                            http://etsy.me/LieAZe




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                          How do we build websites?
                                                        ^
                                                   large scale




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




              Load Balancer

          HTTP Servers

         Message Broker


                  Database




         Storage System



                                                                     #dadops

Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                                                     Systems Architect
              Load Balancer

          HTTP Servers

         Message Broker


                  Database


                                                                     DNS
         Storage System



                                                                     #dadops

Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                        Exciting, right?




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                            http://etsy.me/zQMzBn




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



                    Remember how a web server used to work?




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



                    Remember how a web server used to work?

                    Client: "Hello, I'd like to get the contents of this file, please."
                      GET / HTTP/1.0nn




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



                    Remember how a web server used to work?

                    Client: "Hello, I'd like to get the contents of this file, please."
                      GET / HTTP/1.0nn

                    Server: "Why, certainly, here you go."
                      cat file > socket




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



                    Remember how a web server used to work?

                    Client: "Hello, I'd like to get the contents of this file, please."
                      GET / HTTP/1.0nn

                    Server: "Why, certainly, here you go."
                      cat file > socket




                                              http://etsy.me/L8TeSc

Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



                                                 HTTP today...

                        Client: "Hello, I'd like to get the contents of this file on this server, please."
                          GET / HTTP/1.1nn
                          Host: this-servernn




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



                                                 HTTP today...

                        Client: "Hello, I'd like to get the contents of this file on this server, please."
                          GET / HTTP/1.1nn
                          Host: this-servernn

                    Server: "I'm sorry, Node.js just crashed."
                     HTTP/1.1 500 Internal Server Error
                     Server: Apache-Coyote/1.1




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



                                                 HTTP today...

                        Client: "Hello, I'd like to get the contents of this file on this server, please."
                          GET / HTTP/1.1nn
                          Host: this-servernn

                    Server: "I'm sorry, Node.js just crashed."
                     HTTP/1.1 500 Internal Server Error
                     Server: Apache-Coyote/1.1




                                                  http://etsy.me/LlGtC5

Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



                                               HTTP today...

                        Client: "Uhm... Node.js? I thought you said you're an Apache server?"

                        Server: "Oh, sure, but I hand off LESS compilation to Node.js, which is
                                 faster than Rhino."




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



                                                HTTP today...

                        Client: "Uhm... Node.js? I thought you said you're an Apache server?"

                        Server: "Oh, sure, but I hand off LESS compilation to Node.js, which is
                                 faster than Rhino."

                        Client: "Uhm... Rhino? So you're... running Javascript inside Java?"

                        Server: "Oh, sure, I'm a Tomcat server!"




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



                                                HTTP today...

                        Client: "Uhm... Node.js? I thought you said you're an Apache server?"

                        Server: "Oh, sure, but I hand off LESS compilation to Node.js, which is
                                 faster than Rhino."

                        Client: "Uhm... Rhino? So you're... running Javascript inside Java?"

                        Server: "Oh, sure, I'm a Tomcat server!"

                        Client: "So I'm talking to... your Coyote 'HTTP connector', which hands my
                        requests off to your ‘Catalina servlet container’, which..."

                        Server: "...looks up stuff in various databases, triggers actions in a message
                        broker and hands the LESS compilation off to Node.js..."

Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



                                                HTTP today...

                        Client: "Uhm... LESS? 'Compilation'? Why don't you just serve the plain old
                                CSS?"

                        Server: "Don't be silly. 'All problems in computer science can be solved by
                                another level of indirection.' Now where was I?"

                        Server: "Oh, right: ...hands the LESS compilation off to Node.js, which
                                 just crashed."




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



                                               HTTP today...

                        Client: "My head hurts. How did we get here?"




                                              http://etsy.me/Lb57Y0


Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




          “Complex systems fail in complex ways.”
                                                                     Steven M. Bellovin




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




     <!-- web0013.ny4.etsy.com at Wed 20 06 12:24:24 2012 in 462 ms -->




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                               Optimize for human time.




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



                                      Is less really more?
                  // LESS                                /* Compiled CSS */

                  #header {                              #header h1 {
                    h1 {                                   font-size: 26px;
                      font-size: 26px;                     font-weight: bold;
                      font-weight: bold;                 }
                    }                                    #header p {
                    p { font-size: 12px;                   font-size: 12px;
                      a { text-decoration: none;         }
                         &:hover { border-width: 1px }   #header p a {
                      }                                    text-decoration: none;
                    }                                    }
                  }                                      #header p a:hover {
                                                           border-width: 1px;
                                                         }




                                                                              http://etsy.me/KU1wJr


Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                        <script src="less.js" type="text/javascript"></script>




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




--
`$=`;$_=%!;($_)=/(.)/;$==++$|;($.,$/,$,,$,$",$;,$^,$#,$~,$*,$:,@%)=(
$!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++;
$_++;$_++;($_,$,$,)=($~.$"."$;$/$%[$?]$_$$,$:$%[$?]",$"&$~,$#,);$,++
;$,++;$^|=$";`$_$$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$$"$^$~$*.>&$=`




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                            http://etsy.me/LrIexP


Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                    “Premature optimization is the root of all evil.”
                                                                     Donald Knuth




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                               Optimize for human time.




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                          How do we build websites?




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                            http://etsy.me/w2pZPN



Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                               /bin/sh




                                            http://etsy.me/L6Gb5O



Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                  stdin        stdout         stderr


                                              /bin/sh

                  <<                  <              |           >     >>




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                  stdin        stdout         stderr

             awk(1)
                                              /bin/sh

                  <<                  <              |           >     >>




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                  stdin        stdout         stderr

             awk(1)                                                    sed(1)
                                              /bin/sh

                  <<                  <              |           >        >>




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



                                                                          sort(1)

                                  stdin        stdout         stderr

             awk(1)                                                       sed(1)
                                              /bin/sh
                                                                     uniq(1)

                  <<                  <              |           >             >>


                                       wc(1)


Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



                         lam(1)                   comm(1)                 sort(1)

                                  stdin        stdout         stderr

             awk(1)                                                       sed(1)
                                              /bin/sh
                          *roff(1)                                   uniq(1)

                  <<                  <              |           >             >>

                 col(1)                                                  fmt(1)
                                       wc(1)             paste(1)


Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                                   |




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                              text stream | text stream




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



                                                                ...it is
                                                                                  on!
                                                                     http://etsy.me/LoKFRA




                           http://etsy.me/LoKw0B




                                    rse y vs . MIT
             Ne w Je
Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                              text stream | text stream




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                                                     XML makes me YAML.
Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                        XSLT is a language with an XML-based syntax
                          that is used to transform XML documents
                                 into other XML documents...




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                                                     XML makes me YAML.
Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                             The Dunning-Kruger effect applies to
                               Domain-Specific Languages, too.




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




   http://www.jsonml.org/
   “The purpose of JsonML is to provide a compact
   format for transporting XML-based markup as
   JSON which allows it to be losslessly converted
   back to its original form.”




    On the internet, nobody knows if you’re trolling.
                                                              http://etsy.me/Lbsj8k

Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                       object | object




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                        Public:                                      Public:

                        color: orange                                color: orange
                        shape: rect                                  shape: rect


                        Private:                                     Private:
                         corners: round                               corners:angular

                                          tool1 | tool2




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!


                    Complexity simplified:

                 •“essential complexity” is inherent to the
                    problem and cannot be reduced




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!


                    Complexity simplified:

                 •“essential complexity” is inherent to the
                    problem and cannot be reduced

                 •“accidental complexity” is inadvertent and
                    frequently introduced indirectly




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                   Public:                                           Public:

                    color: orange                                    color: orange
                    shape: rect                                      shape: rect


                   Private:                                          Private:
                    corners: round                                    corners:angular

                                     tool1| filter | tool2




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                       object | object




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                         http://stackoverflow.com/questions/6260420/choices-of-message-queue




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                         http://stackoverflow.com/questions/6260420/choices-of-message-queue




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                            http://etsy.me/eZxOwz



Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



                                    Total Cost of Ownership


                  purchase price                    time to evaluate solution

                  support contract                     time to deploy solution

                  savings in $resource                   time to on-ramp staff

                                       time to integrate with existing tools


                                            time to debug/update/maintain

Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                            http://etsy.me/LkuGI5



Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



                                    Total Cost of Ownership




                $$
                                                              s
                  purchase price                    time to evaluate solution




                                                       our
                  support contract                     time to deploy solution

                  savings in $resource                   time to on-ramp staff


                                                    n-h
                                       time to integrate with existing tools
                                                 ma
                                            time to debug/update/maintain

Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                            Software maintenance is ~75% of TCO.




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                            Software maintenance is ~75% of TCO.


                             Operational costs are the other 75%.




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                               http://etsy.me/Lj89aR




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                               http://etsy.me/Lj8hqI



Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




              minor PHP upgrade                             various ruby gems added / updated




                           libmemcached, sqlite, zlib, and openssl updated


                                                     http://etsy.me/Lj8hqI



Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!
                                      http://etsy.me/HT7BJm




                                                  runs linux

              minor PHP upgrade                             various ruby gems added / updated




                           libmemcached, sqlite, zlib, and openssl updated


                                                     http://etsy.me/Lj8hqI



Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                            http://etsy.me/LtSSrp



Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                             “Adding manpower to a late software
                                   project makes it later.”
                                                                     Brooks’s Law




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                        Brooks’s Law also holds for software endpoints.




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                    Group Intercommunication Formula:
                       #of channels of communication =
                                  n(n − 1) / 2

                    5 developers:
                                          5(5-1)/2 = 10
                    10 developers:
                                  10(10-1)/2 = 45
                    50 developers:
                                50(50-1)/2 = 1225


Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                        Brooks’s Law also holds for software endpoints.

    Adding independent components to a software architecture
               increases complexity exponentially.




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                    “Optimization is the process of taking something
                    that works and replacing it with something that
                            almost works, but costs less.”
                                                                     Roger Needham




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                         Identify accidental and essential complexity.
                        Eliminate the former, then optimize the latter.




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!



            •“Complex systems fail in complex ways.” (Bellovin)
            •“Premature optimization is the root of all evil.” (Knuth)
            •“Worse is better (is worse is still better).” (Gabriel)
            •“Complexity increases non-linearly.” (Brooks)
            •“Complexity is the enemy of security.” (Schneier)
            •echo “import this” | python




            http://etsy.me/Ly59Ly           http://etsy.me/LlIZsf    http://etsy.me/LnMCv7
Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                               Optimize for human time.




Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                                          http://etsy.me/L8WcGD

Thursday, June 28, 12
Velocity 2012 - Down with the fancy pants!




                 Related talks, presentations and articles in no particular order:

                 •   http://concur.rspace.googlecode.com/hg/talk/concur.html
                 •   http://radar.oreilly.com/2012/04/complexity-vs-simplicity.html
                 •   http://www.confreaks.com/videos/860-railsconf2012-keynote-simplicity-matters
                 •   http://dreamsongs.com/WorseIsBetter.html
                 •   http://michaelochurch.wordpress.com/2012/04/13/java-shop-politics/
                 •   http://codebetter.com/markneedham/2010/03/18/essential-and-accidental-complexity/
                 •   http://html9responsiveboilerstrapjs.com/
                 •   http://jamesgolick.com/2010/10/27/we-are-experiencing-too-much-load-lets-add-a-new-
                     server..html

                 • http://is.gd/uCnnMg




Thursday, June 28, 12

More Related Content

Viewers also liked

Scaling Etsy: What Went Wrong, What Went Right
Scaling Etsy: What Went Wrong, What Went RightScaling Etsy: What Went Wrong, What Went Right
Scaling Etsy: What Went Wrong, What Went RightRoss Snyder
 
From Obvious to Ingenius: Incrementally Scaling Web Apps on PostgreSQL
From Obvious to Ingenius: Incrementally Scaling Web Apps on PostgreSQLFrom Obvious to Ingenius: Incrementally Scaling Web Apps on PostgreSQL
From Obvious to Ingenius: Incrementally Scaling Web Apps on PostgreSQLKonstantin Gredeskoul
 
Etsy Case Study
Etsy Case StudyEtsy Case Study
Etsy Case StudySlideShare
 
Design for Continuous Experimentation
Design for Continuous ExperimentationDesign for Continuous Experimentation
Design for Continuous ExperimentationDan McKinley
 

Viewers also liked (6)

Ipv6 basics
Ipv6 basicsIpv6 basics
Ipv6 basics
 
Scaling postgres
Scaling postgresScaling postgres
Scaling postgres
 
Scaling Etsy: What Went Wrong, What Went Right
Scaling Etsy: What Went Wrong, What Went RightScaling Etsy: What Went Wrong, What Went Right
Scaling Etsy: What Went Wrong, What Went Right
 
From Obvious to Ingenius: Incrementally Scaling Web Apps on PostgreSQL
From Obvious to Ingenius: Incrementally Scaling Web Apps on PostgreSQLFrom Obvious to Ingenius: Incrementally Scaling Web Apps on PostgreSQL
From Obvious to Ingenius: Incrementally Scaling Web Apps on PostgreSQL
 
Etsy Case Study
Etsy Case StudyEtsy Case Study
Etsy Case Study
 
Design for Continuous Experimentation
Design for Continuous ExperimentationDesign for Continuous Experimentation
Design for Continuous Experimentation
 

More from Jan Schaumann

The Razors Edge - Cutting your TLS Baggage
The Razors Edge - Cutting your TLS BaggageThe Razors Edge - Cutting your TLS Baggage
The Razors Edge - Cutting your TLS BaggageJan Schaumann
 
Know Your Enemy - An Introduction to Threat Modeling
Know Your Enemy - An Introduction to Threat ModelingKnow Your Enemy - An Introduction to Threat Modeling
Know Your Enemy - An Introduction to Threat ModelingJan Schaumann
 
Crazy Like A Fox - #Infosec Ideas That Just Might Work
Crazy Like A Fox - #Infosec Ideas That Just Might WorkCrazy Like A Fox - #Infosec Ideas That Just Might Work
Crazy Like A Fox - #Infosec Ideas That Just Might WorkJan Schaumann
 
It's the people, stupid.
It's the people, stupid.It's the people, stupid.
It's the people, stupid.Jan Schaumann
 
Semper Ubi Sub Ubi - Things They Don't Teach You In School
Semper Ubi Sub Ubi - Things They Don't Teach You In SchoolSemper Ubi Sub Ubi - Things They Don't Teach You In School
Semper Ubi Sub Ubi - Things They Don't Teach You In SchoolJan Schaumann
 
Everything is Awful (And You're Not Helping)
Everything is Awful (And You're Not Helping)Everything is Awful (And You're Not Helping)
Everything is Awful (And You're Not Helping)Jan Schaumann
 
Primum non nocere - Ethical Obligations in Internet Operations
Primum non nocere - Ethical Obligations in Internet OperationsPrimum non nocere - Ethical Obligations in Internet Operations
Primum non nocere - Ethical Obligations in Internet OperationsJan Schaumann
 
Protecting Data in Untrusted Locations
Protecting Data in Untrusted LocationsProtecting Data in Untrusted Locations
Protecting Data in Untrusted LocationsJan Schaumann
 
Headless Host Scanning
Headless Host ScanningHeadless Host Scanning
Headless Host ScanningJan Schaumann
 
L3DSR - Overcoming Layer 2 Limitations of Direct Server Return Load Balancing
L3DSR - Overcoming Layer 2 Limitations of Direct Server Return Load BalancingL3DSR - Overcoming Layer 2 Limitations of Direct Server Return Load Balancing
L3DSR - Overcoming Layer 2 Limitations of Direct Server Return Load BalancingJan Schaumann
 
Building better tools
Building better toolsBuilding better tools
Building better toolsJan Schaumann
 

More from Jan Schaumann (15)

The Razors Edge - Cutting your TLS Baggage
The Razors Edge - Cutting your TLS BaggageThe Razors Edge - Cutting your TLS Baggage
The Razors Edge - Cutting your TLS Baggage
 
OpSec101
OpSec101OpSec101
OpSec101
 
Know Your Enemy - An Introduction to Threat Modeling
Know Your Enemy - An Introduction to Threat ModelingKnow Your Enemy - An Introduction to Threat Modeling
Know Your Enemy - An Introduction to Threat Modeling
 
Crazy Like A Fox - #Infosec Ideas That Just Might Work
Crazy Like A Fox - #Infosec Ideas That Just Might WorkCrazy Like A Fox - #Infosec Ideas That Just Might Work
Crazy Like A Fox - #Infosec Ideas That Just Might Work
 
It's the people, stupid.
It's the people, stupid.It's the people, stupid.
It's the people, stupid.
 
Semper Ubi Sub Ubi - Things They Don't Teach You In School
Semper Ubi Sub Ubi - Things They Don't Teach You In SchoolSemper Ubi Sub Ubi - Things They Don't Teach You In School
Semper Ubi Sub Ubi - Things They Don't Teach You In School
 
Everything is Awful (And You're Not Helping)
Everything is Awful (And You're Not Helping)Everything is Awful (And You're Not Helping)
Everything is Awful (And You're Not Helping)
 
Defense at Scale
Defense at ScaleDefense at Scale
Defense at Scale
 
Primum non nocere - Ethical Obligations in Internet Operations
Primum non nocere - Ethical Obligations in Internet OperationsPrimum non nocere - Ethical Obligations in Internet Operations
Primum non nocere - Ethical Obligations in Internet Operations
 
Protecting Data in Untrusted Locations
Protecting Data in Untrusted LocationsProtecting Data in Untrusted Locations
Protecting Data in Untrusted Locations
 
Headless Host Scanning
Headless Host ScanningHeadless Host Scanning
Headless Host Scanning
 
L3DSR - Overcoming Layer 2 Limitations of Direct Server Return Load Balancing
L3DSR - Overcoming Layer 2 Limitations of Direct Server Return Load BalancingL3DSR - Overcoming Layer 2 Limitations of Direct Server Return Load Balancing
L3DSR - Overcoming Layer 2 Limitations of Direct Server Return Load Balancing
 
Building better tools
Building better toolsBuilding better tools
Building better tools
 
Useless use of *
Useless use of *Useless use of *
Useless use of *
 
DST @ Yahoo!
DST @ Yahoo!DST @ Yahoo!
DST @ Yahoo!
 

Recently uploaded

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 

Recently uploaded (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 

Fancy pants

  • 1. Velocity 2012 Down with the fancy pants! How people have been optimizing the wrong things and increased complexity. Jan Schaumann <jschauma@etsy.com> B60D A9F7 0D89 544A 7995 7D25 5A5B 4375 275F 0BB5 @jschauma Thursday, June 28, 12
  • 2. Velocity 2012 - Down with the fancy pants! On ion s! http://etsy.me/L1iiuo Thursday, June 28, 12
  • 3. Velocity 2012 - Down with the fancy pants! i on s! ra ct D ist http://etsy.me/KQDDSU Thursday, June 28, 12
  • 4. Velocity 2012 - Down with the fancy pants! The Art of Yak Shaving! http://etsy.me/LlIZsf (Yak Wo ol) http://etsy.me/nn3QDV Thursday, June 28, 12
  • 5. Velocity 2012 - Down with the fancy pants! s! t lle Bu e r S i lv http://etsy.me/L6tJ40 Thursday, June 28, 12
  • 6. Velocity 2012 - Down with the fancy pants! s! t lle Bu e r S i lv Thursday, June 28, 12
  • 7. Velocity 2012 - Down with the fancy pants! X y ! rr S o http://etsy.me/L6tJ40 Thursday, June 28, 12
  • 8. Velocity 2012 - Down with the fancy pants! How do we build websites? Thursday, June 28, 12
  • 9. Velocity 2012 - Down with the fancy pants! http://etsy.me/LieAZe Thursday, June 28, 12
  • 10. Velocity 2012 - Down with the fancy pants! How do we build websites? ^ large scale Thursday, June 28, 12
  • 11. Velocity 2012 - Down with the fancy pants! Load Balancer HTTP Servers Message Broker Database Storage System #dadops Thursday, June 28, 12
  • 12. Velocity 2012 - Down with the fancy pants! Systems Architect Load Balancer HTTP Servers Message Broker Database DNS Storage System #dadops Thursday, June 28, 12
  • 13. Velocity 2012 - Down with the fancy pants! Exciting, right? Thursday, June 28, 12
  • 14. Velocity 2012 - Down with the fancy pants! http://etsy.me/zQMzBn Thursday, June 28, 12
  • 15. Velocity 2012 - Down with the fancy pants! Remember how a web server used to work? Thursday, June 28, 12
  • 16. Velocity 2012 - Down with the fancy pants! Remember how a web server used to work? Client: "Hello, I'd like to get the contents of this file, please." GET / HTTP/1.0nn Thursday, June 28, 12
  • 17. Velocity 2012 - Down with the fancy pants! Remember how a web server used to work? Client: "Hello, I'd like to get the contents of this file, please." GET / HTTP/1.0nn Server: "Why, certainly, here you go." cat file > socket Thursday, June 28, 12
  • 18. Velocity 2012 - Down with the fancy pants! Remember how a web server used to work? Client: "Hello, I'd like to get the contents of this file, please." GET / HTTP/1.0nn Server: "Why, certainly, here you go." cat file > socket http://etsy.me/L8TeSc Thursday, June 28, 12
  • 19. Velocity 2012 - Down with the fancy pants! HTTP today... Client: "Hello, I'd like to get the contents of this file on this server, please." GET / HTTP/1.1nn Host: this-servernn Thursday, June 28, 12
  • 20. Velocity 2012 - Down with the fancy pants! HTTP today... Client: "Hello, I'd like to get the contents of this file on this server, please." GET / HTTP/1.1nn Host: this-servernn Server: "I'm sorry, Node.js just crashed."    HTTP/1.1 500 Internal Server Error Server: Apache-Coyote/1.1 Thursday, June 28, 12
  • 21. Velocity 2012 - Down with the fancy pants! HTTP today... Client: "Hello, I'd like to get the contents of this file on this server, please." GET / HTTP/1.1nn Host: this-servernn Server: "I'm sorry, Node.js just crashed."    HTTP/1.1 500 Internal Server Error Server: Apache-Coyote/1.1 http://etsy.me/LlGtC5 Thursday, June 28, 12
  • 22. Velocity 2012 - Down with the fancy pants! HTTP today... Client: "Uhm... Node.js? I thought you said you're an Apache server?" Server: "Oh, sure, but I hand off LESS compilation to Node.js, which is faster than Rhino." Thursday, June 28, 12
  • 23. Velocity 2012 - Down with the fancy pants! HTTP today... Client: "Uhm... Node.js? I thought you said you're an Apache server?" Server: "Oh, sure, but I hand off LESS compilation to Node.js, which is faster than Rhino." Client: "Uhm... Rhino? So you're... running Javascript inside Java?" Server: "Oh, sure, I'm a Tomcat server!" Thursday, June 28, 12
  • 24. Velocity 2012 - Down with the fancy pants! HTTP today... Client: "Uhm... Node.js? I thought you said you're an Apache server?" Server: "Oh, sure, but I hand off LESS compilation to Node.js, which is faster than Rhino." Client: "Uhm... Rhino? So you're... running Javascript inside Java?" Server: "Oh, sure, I'm a Tomcat server!" Client: "So I'm talking to... your Coyote 'HTTP connector', which hands my requests off to your ‘Catalina servlet container’, which..." Server: "...looks up stuff in various databases, triggers actions in a message broker and hands the LESS compilation off to Node.js..." Thursday, June 28, 12
  • 25. Velocity 2012 - Down with the fancy pants! HTTP today... Client: "Uhm... LESS? 'Compilation'? Why don't you just serve the plain old CSS?" Server: "Don't be silly. 'All problems in computer science can be solved by another level of indirection.' Now where was I?" Server: "Oh, right: ...hands the LESS compilation off to Node.js, which just crashed." Thursday, June 28, 12
  • 26. Velocity 2012 - Down with the fancy pants! HTTP today... Client: "My head hurts. How did we get here?" http://etsy.me/Lb57Y0 Thursday, June 28, 12
  • 27. Velocity 2012 - Down with the fancy pants! “Complex systems fail in complex ways.” Steven M. Bellovin Thursday, June 28, 12
  • 28. Velocity 2012 - Down with the fancy pants! <!-- web0013.ny4.etsy.com at Wed 20 06 12:24:24 2012 in 462 ms --> Thursday, June 28, 12
  • 29. Velocity 2012 - Down with the fancy pants! Optimize for human time. Thursday, June 28, 12
  • 30. Velocity 2012 - Down with the fancy pants! Is less really more? // LESS /* Compiled CSS */ #header { #header h1 { h1 { font-size: 26px; font-size: 26px; font-weight: bold; font-weight: bold; } } #header p { p { font-size: 12px; font-size: 12px; a { text-decoration: none; } &:hover { border-width: 1px } #header p a { } text-decoration: none; } } } #header p a:hover { border-width: 1px; } http://etsy.me/KU1wJr Thursday, June 28, 12
  • 31. Velocity 2012 - Down with the fancy pants! <script src="less.js" type="text/javascript"></script> Thursday, June 28, 12
  • 32. Velocity 2012 - Down with the fancy pants! Thursday, June 28, 12
  • 33. Velocity 2012 - Down with the fancy pants! -- `$=`;$_=%!;($_)=/(.)/;$==++$|;($.,$/,$,,$,$",$;,$^,$#,$~,$*,$:,@%)=( $!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++; $_++;$_++;($_,$,$,)=($~.$"."$;$/$%[$?]$_$$,$:$%[$?]",$"&$~,$#,);$,++ ;$,++;$^|=$";`$_$$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$$"$^$~$*.>&$=` Thursday, June 28, 12
  • 34. Velocity 2012 - Down with the fancy pants! Thursday, June 28, 12
  • 35. Velocity 2012 - Down with the fancy pants! Thursday, June 28, 12
  • 36. Velocity 2012 - Down with the fancy pants! Thursday, June 28, 12
  • 37. Velocity 2012 - Down with the fancy pants! http://etsy.me/LrIexP Thursday, June 28, 12
  • 38. Velocity 2012 - Down with the fancy pants! Thursday, June 28, 12
  • 39. Velocity 2012 - Down with the fancy pants! “Premature optimization is the root of all evil.” Donald Knuth Thursday, June 28, 12
  • 40. Velocity 2012 - Down with the fancy pants! Optimize for human time. Thursday, June 28, 12
  • 41. Velocity 2012 - Down with the fancy pants! How do we build websites? Thursday, June 28, 12
  • 42. Velocity 2012 - Down with the fancy pants! http://etsy.me/w2pZPN Thursday, June 28, 12
  • 43. Velocity 2012 - Down with the fancy pants! /bin/sh http://etsy.me/L6Gb5O Thursday, June 28, 12
  • 44. Velocity 2012 - Down with the fancy pants! stdin stdout stderr /bin/sh << < | > >> Thursday, June 28, 12
  • 45. Velocity 2012 - Down with the fancy pants! stdin stdout stderr awk(1) /bin/sh << < | > >> Thursday, June 28, 12
  • 46. Velocity 2012 - Down with the fancy pants! stdin stdout stderr awk(1) sed(1) /bin/sh << < | > >> Thursday, June 28, 12
  • 47. Velocity 2012 - Down with the fancy pants! sort(1) stdin stdout stderr awk(1) sed(1) /bin/sh uniq(1) << < | > >> wc(1) Thursday, June 28, 12
  • 48. Velocity 2012 - Down with the fancy pants! lam(1) comm(1) sort(1) stdin stdout stderr awk(1) sed(1) /bin/sh *roff(1) uniq(1) << < | > >> col(1) fmt(1) wc(1) paste(1) Thursday, June 28, 12
  • 49. Velocity 2012 - Down with the fancy pants! | Thursday, June 28, 12
  • 50. Velocity 2012 - Down with the fancy pants! text stream | text stream Thursday, June 28, 12
  • 51. Velocity 2012 - Down with the fancy pants! ...it is on! http://etsy.me/LoKFRA http://etsy.me/LoKw0B rse y vs . MIT Ne w Je Thursday, June 28, 12
  • 52. Velocity 2012 - Down with the fancy pants! text stream | text stream Thursday, June 28, 12
  • 53. Velocity 2012 - Down with the fancy pants! XML makes me YAML. Thursday, June 28, 12
  • 54. Velocity 2012 - Down with the fancy pants! XSLT is a language with an XML-based syntax that is used to transform XML documents into other XML documents... Thursday, June 28, 12
  • 55. Velocity 2012 - Down with the fancy pants! XML makes me YAML. Thursday, June 28, 12
  • 56. Velocity 2012 - Down with the fancy pants! The Dunning-Kruger effect applies to Domain-Specific Languages, too. Thursday, June 28, 12
  • 57. Velocity 2012 - Down with the fancy pants! http://www.jsonml.org/ “The purpose of JsonML is to provide a compact format for transporting XML-based markup as JSON which allows it to be losslessly converted back to its original form.” On the internet, nobody knows if you’re trolling. http://etsy.me/Lbsj8k Thursday, June 28, 12
  • 58. Velocity 2012 - Down with the fancy pants! object | object Thursday, June 28, 12
  • 59. Velocity 2012 - Down with the fancy pants! Public: Public: color: orange color: orange shape: rect shape: rect Private: Private: corners: round corners:angular tool1 | tool2 Thursday, June 28, 12
  • 60. Velocity 2012 - Down with the fancy pants! Complexity simplified: •“essential complexity” is inherent to the problem and cannot be reduced Thursday, June 28, 12
  • 61. Velocity 2012 - Down with the fancy pants! Complexity simplified: •“essential complexity” is inherent to the problem and cannot be reduced •“accidental complexity” is inadvertent and frequently introduced indirectly Thursday, June 28, 12
  • 62. Velocity 2012 - Down with the fancy pants! Public: Public: color: orange color: orange shape: rect shape: rect Private: Private: corners: round corners:angular tool1| filter | tool2 Thursday, June 28, 12
  • 63. Velocity 2012 - Down with the fancy pants! object | object Thursday, June 28, 12
  • 64. Velocity 2012 - Down with the fancy pants! http://stackoverflow.com/questions/6260420/choices-of-message-queue Thursday, June 28, 12
  • 65. Velocity 2012 - Down with the fancy pants! http://stackoverflow.com/questions/6260420/choices-of-message-queue Thursday, June 28, 12
  • 66. Velocity 2012 - Down with the fancy pants! http://etsy.me/eZxOwz Thursday, June 28, 12
  • 67. Velocity 2012 - Down with the fancy pants! Total Cost of Ownership purchase price time to evaluate solution support contract time to deploy solution savings in $resource time to on-ramp staff time to integrate with existing tools time to debug/update/maintain Thursday, June 28, 12
  • 68. Velocity 2012 - Down with the fancy pants! http://etsy.me/LkuGI5 Thursday, June 28, 12
  • 69. Velocity 2012 - Down with the fancy pants! Total Cost of Ownership $$ s purchase price time to evaluate solution our support contract time to deploy solution savings in $resource time to on-ramp staff n-h time to integrate with existing tools ma time to debug/update/maintain Thursday, June 28, 12
  • 70. Velocity 2012 - Down with the fancy pants! Software maintenance is ~75% of TCO. Thursday, June 28, 12
  • 71. Velocity 2012 - Down with the fancy pants! Software maintenance is ~75% of TCO. Operational costs are the other 75%. Thursday, June 28, 12
  • 72. Velocity 2012 - Down with the fancy pants! http://etsy.me/Lj89aR Thursday, June 28, 12
  • 73. Velocity 2012 - Down with the fancy pants! http://etsy.me/Lj8hqI Thursday, June 28, 12
  • 74. Velocity 2012 - Down with the fancy pants! minor PHP upgrade various ruby gems added / updated libmemcached, sqlite, zlib, and openssl updated http://etsy.me/Lj8hqI Thursday, June 28, 12
  • 75. Velocity 2012 - Down with the fancy pants! http://etsy.me/HT7BJm runs linux minor PHP upgrade various ruby gems added / updated libmemcached, sqlite, zlib, and openssl updated http://etsy.me/Lj8hqI Thursday, June 28, 12
  • 76. Velocity 2012 - Down with the fancy pants! http://etsy.me/LtSSrp Thursday, June 28, 12
  • 77. Velocity 2012 - Down with the fancy pants! “Adding manpower to a late software project makes it later.” Brooks’s Law Thursday, June 28, 12
  • 78. Velocity 2012 - Down with the fancy pants! Brooks’s Law also holds for software endpoints. Thursday, June 28, 12
  • 79. Velocity 2012 - Down with the fancy pants! Group Intercommunication Formula: #of channels of communication = n(n − 1) / 2 5 developers: 5(5-1)/2 = 10 10 developers: 10(10-1)/2 = 45 50 developers: 50(50-1)/2 = 1225 Thursday, June 28, 12
  • 80. Velocity 2012 - Down with the fancy pants! Brooks’s Law also holds for software endpoints. Adding independent components to a software architecture increases complexity exponentially. Thursday, June 28, 12
  • 81. Velocity 2012 - Down with the fancy pants! “Optimization is the process of taking something that works and replacing it with something that almost works, but costs less.” Roger Needham Thursday, June 28, 12
  • 82. Velocity 2012 - Down with the fancy pants! Identify accidental and essential complexity. Eliminate the former, then optimize the latter. Thursday, June 28, 12
  • 83. Velocity 2012 - Down with the fancy pants! •“Complex systems fail in complex ways.” (Bellovin) •“Premature optimization is the root of all evil.” (Knuth) •“Worse is better (is worse is still better).” (Gabriel) •“Complexity increases non-linearly.” (Brooks) •“Complexity is the enemy of security.” (Schneier) •echo “import this” | python http://etsy.me/Ly59Ly http://etsy.me/LlIZsf http://etsy.me/LnMCv7 Thursday, June 28, 12
  • 84. Velocity 2012 - Down with the fancy pants! Optimize for human time. Thursday, June 28, 12
  • 85. Velocity 2012 - Down with the fancy pants! http://etsy.me/L8WcGD Thursday, June 28, 12
  • 86. Velocity 2012 - Down with the fancy pants! Related talks, presentations and articles in no particular order: • http://concur.rspace.googlecode.com/hg/talk/concur.html • http://radar.oreilly.com/2012/04/complexity-vs-simplicity.html • http://www.confreaks.com/videos/860-railsconf2012-keynote-simplicity-matters • http://dreamsongs.com/WorseIsBetter.html • http://michaelochurch.wordpress.com/2012/04/13/java-shop-politics/ • http://codebetter.com/markneedham/2010/03/18/essential-and-accidental-complexity/ • http://html9responsiveboilerstrapjs.com/ • http://jamesgolick.com/2010/10/27/we-are-experiencing-too-much-load-lets-add-a-new- server..html • http://is.gd/uCnnMg Thursday, June 28, 12