Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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. 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
  2. Alright alright but surely people’s names are diverse enough such

    that no million people share the same name.
  3. Geometry the branch of mathematics concerned with the properties and

    relations of points, lines, surfaces, solids, and higher dimensional analogues.
  4. assumptions are unavoidable mental model of how the computer works

    interface with other code ui/ux time pressure budget constraints KKL
  5. 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
  6. Memory safety No undefined behavior Fearless concurrency HighXlevel language concepts

    Easily embeddable into existing projects Strong compiler checks
  7. 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!
  8. 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.
  9. 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
  10. 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.
  11. 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