$30 off During Our Annual Pro Sale. View Details »

Everything is Broken (And That's Okay!)

Everything is Broken (And That's Okay!)

Our world is controlled by software. As with everything that is created by humans, software is error-prone. Everyone got annoyed by bugs and UI/UX issues before, but what exactly does "broken" really mean and are there different kinds of brokenness? Let's explore the fun, enthralling, and quirky state of our (digital) world and see what we can do to make it better.

Matthias is a programming dinosaur from Düsseldorf, feeling right at home in the lower levels of the computing stack. In his day job he's working on Web Performance at trivago - but at night, he's vanishing into his Batcave to write emulators and WebAssembly modules for fun and profit. He used to have a YouTube channel called "Hello, Rust!" which he is planning to revive since one year. "It will be back one day", he promises. In the meantime check out his blog at endler.dev or his Twitter @matthiasendler.

Matthias Endler

October 12, 2019

More Decks by Matthias Endler

Other Decks in Technology


  1. None
  2. None
  3. None
  4. None
  5. None
  6. None
  7. None
  8. None
  9. None
  10. None
  11. None
  12. None
  13. None
  14. None
  15. None
  16. None
  17. Seal up cracks and openings = Clean up the kitchen

    = Create a barrier to keep bugs out =
 Keep reviewing your own code
 Keep a focus on development 
 Keep writing unit tests
  18. None
  19. None
  20. None
  21. None
  22. None
  23. None
  24. UberPool

  25. None
  26. UberFreight?

  27. None
  28. UberBike!

  29. None
  30. UberEats.

  31. None
  32. None
  33. First Name Last Name

  34. People have exactly one canonical full name.

  35. People’s names do not change.

  36. People’s names are written in ASCII.

  37. People’s names do not contain numbers.

  38. Alright alright but surely people’s names are diverse enough such

    that no million people share the same name.
  39. My system will never have to deal with names from

  40. People’s names are assigned at birth.

  41. OK, maybe not at birth, but at least pretty close

    to birth.
  42. Alright, alright, within a year or so of birth.

  43. Five years?

  44. You’re kidding me, right?

  45. People have names.

  46. None
  47. Geometry the branch of mathematics concerned with the properties and

    relations of points, lines, surfaces, solids, and higher dimensional analogues.
  48. None
  49. Computer Science

  50. assumptions are unavoidable mental model of how the computer works

    interface with other code ui/ux time pressure budget constraints KKL
  51. mitigations accept that mental models are flawed accept that you

    will make mistakes start small iterate keep it simple let external people test embrace change build a culture around sharing knowledge build a common understanding code reviews learn to communicate drop your ego build a diverse team
  52. None
  53. None
  54. None
  55. None
  56. https://cacm.acm.org/magazines/2017/10/221326-a-large-scale-study-of-programming-languages-and-code-quality-in-github/fulltext

  57. Funded by Mozilla First version: 2010 Version 1.0S May 2015

    Current stable version: 1.38
  58. Memory safety No undefined behavior Fearless concurrency HighXlevel language concepts

    Easily embeddable into existing projects Strong compiler checks
  59. None
  60. None
  61. https://cacm.acm.org/magazines/2017/10/221326-a-large-scale-study-of-programming-languages-and-code-quality-in-github/fulltext

  62. None
  63. None
  64. None
  65. Open Standard Language independent Safe sandbox Superfast Works everywhere

  66. None
  67. https://github.com/mre/awesome-static-analysis/

  68. tool tips use safer languages (Rust, Ada, Coq, Idris) use

    sandboxes (Docker, WASM,KKL) Write tests Type systems it's 2019, get yourself an IDE use common libraries use linters (awesome static analysis) don't roll your own crypto!
  69. foster creativity

  70. None
  71. None
  72. None
  73. None
  74. None
  75. None
  76. None
  77. accept failure beware of bias embrace change invest in tooling

    don't be a jerk
  78. A
 Broken web, broken ping. Broken arrays, broken strings. D

    Broken cores, broken cache. A Virus, shellshock, broken bash. E
 No use rewritin’
 No use jokin’ 
 D Everything is broken.
  79. A Broken mail, broken dates. Broken switches, glitchy games.

    Broken planes, broken cars.
 A Broken rovers, left on mars.
 E Broken backups, data stolen. Everything is broken. 
 E Seem like every time you stop and turn around D
 Something else just hit the ground
  80. A
 Broken Facebook, broken Slack Broken Windows, broken mac D

    Broken bytes, broken DOS A
 Broken scripts of broken bots E Display burnin, server smokin’ 
 D Everything is broken.
  81. A Broken code on jailbroken phones. Broken crypto, broken consoles.

    D Broken pipes, broken tools.
 A Hackers bending broken rules;
 E Lost wallet with your Bitcoin tokens Everything is broken. 
 E Everytime you leave and go off someplace D
 Things fall to pieces in my face
  82. None
  83. None