$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. View Slide

  2. View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. View Slide

  15. View Slide

  16. View Slide

  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


    View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. UberPool

    View Slide

  25. View Slide

  26. UberFreight?

    View Slide

  27. View Slide

  28. UberBike!

    View Slide

  29. View Slide

  30. UberEats.

    View Slide

  31. View Slide

  32. View Slide

  33. First Name Last Name

    View Slide

  34. People have exactly one canonical full name.

    View Slide

  35. People’s names do not change.

    View Slide

  36. People’s names are written in ASCII.

    View Slide

  37. People’s names do not contain numbers.

    View Slide

  38. Alright alright but surely people’s names
    are diverse enough such that no million
    people share the same name.

    View Slide

  39. My system will never have to deal with
    names from China.

    View Slide

  40. People’s names are assigned at birth.

    View Slide

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

    View Slide

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

    View Slide

  43. Five years?

    View Slide

  44. You’re kidding me, right?

    View Slide

  45. People have names.

    View Slide

  46. View Slide

  47. Geometry
    the branch of mathematics
    concerned with the properties
    and relations of points, lines,
    surfaces, solids, and higher
    dimensional analogues.

    View Slide

  48. View Slide

  49. Computer Science

    View Slide

  50. assumptions are unavoidable
    mental model of how the computer works
    interface with other code
    time pressure
    budget constraints

    View Slide

  51. mitigations
    accept that mental models are flawed
    accept that you will make mistakes
    start small
    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

    View Slide

  52. View Slide

  53. View Slide

  54. View Slide

  55. View Slide

  56. https://cacm.acm.org/magazines/2017/10/221326-a-large-scale-study-of-programming-languages-and-code-quality-in-github/fulltext

    View Slide

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

    View Slide

  58. Memory safety
    No undefined behavior
    Fearless concurrency
    HighXlevel language concepts
    Easily embeddable into existing
    Strong compiler checks

    View Slide

  59. View Slide

  60. View Slide

  61. https://cacm.acm.org/magazines/2017/10/221326-a-large-scale-study-of-programming-languages-and-code-quality-in-github/fulltext

    View Slide

  62. View Slide

  63. View Slide

  64. View Slide

  65. Open Standard
    Language independent
    Safe sandbox
    Works everywhere

    View Slide

  66. View Slide

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

    View Slide

  68. tool tips
    use safer languages (Rust, Ada, Coq,
    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!

    View Slide

  69. foster creativity

    View Slide

  70. View Slide

  71. View Slide

  72. View Slide

  73. View Slide

  74. View Slide

  75. View Slide

  76. View Slide

  77. accept failure
    beware of bias
    embrace change
    invest in tooling
    don't be a jerk

    View Slide

  78. A

    Broken web, broken ping.
    Broken arrays, broken strings.

    Broken cores, broken cache.
    Virus, shellshock, broken bash.

    No use rewritin’

    No use jokin’

    Everything is broken.

    View Slide

  79. A
    Broken mail, broken dates.
    Broken switches, glitchy games.

    Broken planes, broken cars.

    Broken rovers, left on mars.

    Broken backups, data stolen.
    Everything is broken.

    Seem like every time you stop and turn around

    Something else just hit the ground

    View Slide

  80. A

    Broken Facebook, broken Slack
    Broken Windows, broken mac

    Broken bytes, broken DOS

    Broken scripts of broken bots
    Display burnin,
    server smokin’

    Everything is broken.

    View Slide

  81. A
    Broken code on jailbroken phones.
    Broken crypto, broken consoles.

    Broken pipes, broken tools.

    Hackers bending broken rules;

    Lost wallet with your Bitcoin tokens
    Everything is broken.

    Everytime you leave and go off someplace

    Things fall to pieces in my face

    View Slide

  82. View Slide

  83. View Slide