Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Loading in …3
×
1 of 86

Fancy pants

6

Share

Download to read offline

Down With the Fancy Pants! -- How People Have Been Optimizing the Wrong Things and Increased Complexity

Originally given at Velocity 2012.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Fancy pants

  1. 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. 2. Velocity 2012 - Down with the fancy pants! On ion s! http://etsy.me/L1iiuo Thursday, June 28, 12
  3. 3. Velocity 2012 - Down with the fancy pants! i on s! ra ct D ist http://etsy.me/KQDDSU Thursday, June 28, 12
  4. 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. 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. 6. Velocity 2012 - Down with the fancy pants! s! t lle Bu e r S i lv Thursday, June 28, 12
  7. 7. Velocity 2012 - Down with the fancy pants! X y ! rr S o http://etsy.me/L6tJ40 Thursday, June 28, 12
  8. 8. Velocity 2012 - Down with the fancy pants! How do we build websites? Thursday, June 28, 12
  9. 9. Velocity 2012 - Down with the fancy pants! http://etsy.me/LieAZe Thursday, June 28, 12
  10. 10. Velocity 2012 - Down with the fancy pants! How do we build websites? ^ large scale Thursday, June 28, 12
  11. 11. Velocity 2012 - Down with the fancy pants! Load Balancer HTTP Servers Message Broker Database Storage System #dadops Thursday, June 28, 12
  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. 13. Velocity 2012 - Down with the fancy pants! Exciting, right? Thursday, June 28, 12
  14. 14. Velocity 2012 - Down with the fancy pants! http://etsy.me/zQMzBn Thursday, June 28, 12
  15. 15. Velocity 2012 - Down with the fancy pants! Remember how a web server used to work? Thursday, June 28, 12
  16. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 27. Velocity 2012 - Down with the fancy pants! “Complex systems fail in complex ways.” Steven M. Bellovin Thursday, June 28, 12
  28. 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. 29. Velocity 2012 - Down with the fancy pants! Optimize for human time. Thursday, June 28, 12
  30. 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. 31. Velocity 2012 - Down with the fancy pants! <script src="less.js" type="text/javascript"></script> Thursday, June 28, 12
  32. 32. Velocity 2012 - Down with the fancy pants! Thursday, June 28, 12
  33. 33. Velocity 2012 - Down with the fancy pants! -- `$=`;$_=%!;($_)=/(.)/;$==++$|;($.,$/,$,,$,$",$;,$^,$#,$~,$*,$:,@%)=( $!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++; $_++;$_++;($_,$,$,)=($~.$"."$;$/$%[$?]$_$$,$:$%[$?]",$"&$~,$#,);$,++ ;$,++;$^|=$";`$_$$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$$"$^$~$*.>&$=` Thursday, June 28, 12
  34. 34. Velocity 2012 - Down with the fancy pants! Thursday, June 28, 12
  35. 35. Velocity 2012 - Down with the fancy pants! Thursday, June 28, 12
  36. 36. Velocity 2012 - Down with the fancy pants! Thursday, June 28, 12
  37. 37. Velocity 2012 - Down with the fancy pants! http://etsy.me/LrIexP Thursday, June 28, 12
  38. 38. Velocity 2012 - Down with the fancy pants! Thursday, June 28, 12
  39. 39. Velocity 2012 - Down with the fancy pants! “Premature optimization is the root of all evil.” Donald Knuth Thursday, June 28, 12
  40. 40. Velocity 2012 - Down with the fancy pants! Optimize for human time. Thursday, June 28, 12
  41. 41. Velocity 2012 - Down with the fancy pants! How do we build websites? Thursday, June 28, 12
  42. 42. Velocity 2012 - Down with the fancy pants! http://etsy.me/w2pZPN Thursday, June 28, 12
  43. 43. Velocity 2012 - Down with the fancy pants! /bin/sh http://etsy.me/L6Gb5O Thursday, June 28, 12
  44. 44. Velocity 2012 - Down with the fancy pants! stdin stdout stderr /bin/sh << < | > >> Thursday, June 28, 12
  45. 45. Velocity 2012 - Down with the fancy pants! stdin stdout stderr awk(1) /bin/sh << < | > >> Thursday, June 28, 12
  46. 46. Velocity 2012 - Down with the fancy pants! stdin stdout stderr awk(1) sed(1) /bin/sh << < | > >> Thursday, June 28, 12
  47. 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. 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. 49. Velocity 2012 - Down with the fancy pants! | Thursday, June 28, 12
  50. 50. Velocity 2012 - Down with the fancy pants! text stream | text stream Thursday, June 28, 12
  51. 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. 52. Velocity 2012 - Down with the fancy pants! text stream | text stream Thursday, June 28, 12
  53. 53. Velocity 2012 - Down with the fancy pants! XML makes me YAML. Thursday, June 28, 12
  54. 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. 55. Velocity 2012 - Down with the fancy pants! XML makes me YAML. Thursday, June 28, 12
  56. 56. Velocity 2012 - Down with the fancy pants! The Dunning-Kruger effect applies to Domain-Specific Languages, too. Thursday, June 28, 12
  57. 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. 58. Velocity 2012 - Down with the fancy pants! object | object Thursday, June 28, 12
  59. 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. 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. 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. 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. 63. Velocity 2012 - Down with the fancy pants! object | object Thursday, June 28, 12
  64. 64. Velocity 2012 - Down with the fancy pants! http://stackoverflow.com/questions/6260420/choices-of-message-queue Thursday, June 28, 12
  65. 65. Velocity 2012 - Down with the fancy pants! http://stackoverflow.com/questions/6260420/choices-of-message-queue Thursday, June 28, 12
  66. 66. Velocity 2012 - Down with the fancy pants! http://etsy.me/eZxOwz Thursday, June 28, 12
  67. 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. 68. Velocity 2012 - Down with the fancy pants! http://etsy.me/LkuGI5 Thursday, June 28, 12
  69. 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. 70. Velocity 2012 - Down with the fancy pants! Software maintenance is ~75% of TCO. Thursday, June 28, 12
  71. 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. 72. Velocity 2012 - Down with the fancy pants! http://etsy.me/Lj89aR Thursday, June 28, 12
  73. 73. Velocity 2012 - Down with the fancy pants! http://etsy.me/Lj8hqI Thursday, June 28, 12
  74. 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. 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. 76. Velocity 2012 - Down with the fancy pants! http://etsy.me/LtSSrp Thursday, June 28, 12
  77. 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. 78. Velocity 2012 - Down with the fancy pants! Brooks’s Law also holds for software endpoints. Thursday, June 28, 12
  79. 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. 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. 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. 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. 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. 84. Velocity 2012 - Down with the fancy pants! Optimize for human time. Thursday, June 28, 12
  85. 85. Velocity 2012 - Down with the fancy pants! http://etsy.me/L8WcGD Thursday, June 28, 12
  86. 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

×