Keeping Software Soft

D3e3f4ac37c02289f5dfed115949fc88?s=47 John Kary
January 17, 2015

Keeping Software Soft

Software provides continual value when it can evolve with the business. But without proper care it's easy for software to become rigid and difficult to change--it stops being soft. In this talk John introduces ways to think of software as independent, replaceable components.

D3e3f4ac37c02289f5dfed115949fc88?s=128

John Kary

January 17, 2015
Tweet

Transcript

  1. Keeping Software Soft John Kary @johnkary Lawrence Coders, January 2015

  2. Hardware

  3. Software

  4. Program

  5. Program Data In

  6. Program Data In Data Out

  7. Program Program Program

  8. $ ls -l | grep "b" fabien.txt rabid-bear.rb sunk-cost.bl zabbazabba.do

    ! ! $ tail -f logs/prod.log | grep "error" [2015-01-16 21:15:45] app.error — Uncaught Exception [2015-01-16 23:22:42] app.error — Invalid argument "1" expected "2" [2015-01-17 00:01:52] app.error — SQL parse error "); DROP TABLE St
  9. $ ls -l | grep "b" fabien.txt rabid-bear.rb sunk-cost.bl zabbazabba.do

    ! ! $ tail -f logs/prod.log | grep "error" [2015-01-16 21:15:45] app.error — Uncaught Exception [2015-01-16 23:22:42] app.error — Invalid argument "1" expected "2" [2015-01-17 00:01:52] app.error — SQL parse error "); DROP TABLE St Unix Pipes
  10. https://www.flickr.com/photos/billybrown00/4982722491

  11. http://www.xcalak.info/images/misc/voip_network_l.gif

  12. http://www.xcalak.info/images/misc/voip_network_l.gif +1 785-979-8176

  13. None
  14. GET /index.html HTTP/1.1 Host: www.lmgtfy.com

  15. GET /index.html HTTP/1.1 Host: www.lmgtfy.com www.lmgtfy.com

  16. GET /index.html HTTP/1.1 Host: www.lmgtfy.com www.lmgtfy.com HTTP/1.1 200 OK Date:

    Mon, 23 May 2005 22:38:34 GMT Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT ETag: "3f80f-1b6-3e1cb03b" Content-Type: text/html; charset=UTF-8 ! <html><head><title>An Example Page</title></head> <body>Hello World</body></html>
  17. RFC2616

  18. RFC2616 http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4 4. HTTP Message

  19. Program Message Protocol

  20. Program Message Protocol Interface

  21. Interface "[Prohibits] access to all resources by default, allowing access

    only through well-defined entry points" http://en.wikipedia.org/wiki/Interface_(computing) "[A] shared boundary across which two separate components of a computer system exchange information."
  22. None
  23. None
  24. None
  25. https://www.flickr.com/photos/dominicotine/7187354723

  26. https://www.flickr.com/photos/toasty/330752049

  27. https://www.flickr.com/photos/brilliantmichael/4172218074

  28. http://www.flickr.com/photos/amcgore/5518551326/

  29. https://www.flickr.com/photos/charlesonflickr/362975740

  30. Program Processing Program Program Program Your Thing Message Boundary Their

    Thing You Don't Know
  31. Server

  32. Server Processes

  33. Server Processes

  34. Server Processes Packages

  35. Server Processes Packages Classes

  36. Server Processes Packages Classes Functions

  37. Server Processes Packages Classes Functions

  38. Server Processes Packages Classes Functions

  39. Server Processes Packages Classes Functions

  40. Server Processes Packages Classes Functions

  41. Server Processes Packages Classes Functions

  42. Server Processes Packages Classes Functions Network IO

  43. None
  44. None
  45. Your Package Not Your Package

  46. Your Package Not Your Package

  47. Program Message Protocol

  48. Program Message Protocol Interface

  49. Program Message Protocol Interface Adapter

  50. Message Passing Between Processes ls grep Keyboard STDIN Terminal STDOUT

    C C
  51. Message Passing Between Processes ls grep Keyboard STDIN Terminal STDOUT

    C C
  52. Message Passing Between Processes ls grep Keyboard STDIN Terminal STDOUT

    C C
  53. Further Study Basic of the Unix Philosophy! http://www.catb.org/esr/writings/taoup/html/ch01s06.html The Art

    of Unix Programming (2003) ! The Art of Destroying Software! Talk by Greg Young (Unsure location/date) http://vimeo.com/108441214 ! Stop Writing Classes! Jack Diederich @ PyCon 2012 https://www.youtube.com/watch?v=o9pEzgHorH0 ! Architecture the Lost Years Robert C Martin (Uncle Bob) @ Ruby Midwest 2011 http://confreaks.com/videos/759-rubymidwest2011-keynote-architecture-the-lost-years ! Seven Languages in Seven Weeks (Erlang chapter)! https://pragprog.com/book/btlang/seven-languages-in-seven-weeks
  54. Homework • Build small things • Build simple things and

    compose them together • Connect things by generic messages • Isolate complexity into more small things • Build things that can be thrown away
  55. fin http://johnkary.net/talks @johnkary