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

I am bad at my job.

Matt Robenolt
September 28, 2017

I am bad at my job.

App Academy - September 28th 2017

Matt Robenolt

September 28, 2017
Tweet

More Decks by Matt Robenolt

Other Decks in Technology

Transcript

  1. I am bad at my job.
    App Academy
    September 28th 2017
    Matt Robenolt
    Matt

    View Slide

  2. hello @mattrobenolt

    View Slide

  3. Principal Software Engineer

    View Slide

  4. This computer stuff is
    really hard.

    View Slide

  5. View Slide

  6. #include
    int main() {
    int i = 0;
    int things[] = {10, 20};
    for (; i < 3; i++) {
    printf("%d\n", things[i]);
    }
    return 0;
    }

    View Slide

  7. #include
    int main() {
    int i = 0;
    int things[] = {10, 20};
    for (; i < 3; i++) {
    printf("%d\n", things[i]);
    }
    return 0;
    }
    $ ./program

    View Slide

  8. #include
    int main() {
    int i = 0;
    int things[] = {10, 20};
    for (; i < 3; i++) {
    printf("%d\n", things[i]);
    }
    return 0;
    }
    $ ./program
    10
    20
    619512036

    View Slide

  9. #include
    int main() {
    int i = 0;
    int things[] = {10, 20};
    for (; i < 3; i++) {
    printf("%d\n", things[i]);
    }
    return 0;
    }
    $ ./program
    10
    20
    619512036
    $ ./program
    10
    20
    369033241

    View Slide

  10. #include
    int main() {
    int i = 0;
    int things[] = {10, 20};
    for (; i < 3; i++) {
    printf("%d\n", things[i]);
    }
    return 0;
    }
    Physical Memory Chip
    0x0000
    0x0004
    4 bytes
    0x0008
    0x000C
    0xFFFF

    View Slide

  11. #include
    int main() {
    int i = 0;
    int things[] = {10, 20};
    for (; i < 3; i++) {
    printf("%d\n", things[i]);
    }
    return 0;
    }
    Physical Memory Chip
    0x0000
    0x0004
    4 bytes
    0x0008
    0x000C
    0xFFFF
    0x0000 (0)

    View Slide

  12. #include
    int main() {
    int i = 0;
    int things[] = {10, 20};
    for (; i < 3; i++) {
    printf("%d\n", things[i]);
    }
    return 0;
    }
    Physical Memory Chip
    0x0000
    0x0004
    4 bytes
    0x0008
    0x000C
    0xFFFF
    0x000A (10)
    0x0014 (20)
    0x0000 (0)

    View Slide

  13. #include
    int main() {
    int i = 0;
    int things[] = {10, 20};
    for (; i < 3; i++) {
    printf("%d\n", things[i]);
    }
    return 0;
    }
    Physical Memory Chip
    0x0000
    4 bytes
    0x0008
    0x000C
    0xFFFF
    0x000A (10)
    0x0014 (20)
    0x0000 (0)
    0x0004

    View Slide

  14. #include
    int main() {
    int i = 0;
    int things[] = {10, 20};
    for (; i < 3; i++) {
    printf("%d\n", things[i]);
    }
    return 0;
    }
    Physical Memory Chip
    0x0000
    4 bytes
    0x0008
    0x000C
    0xFFFF
    0x000A (10)
    0x0014 (20)
    0x0000 (0)
    0x0004
    “address of things” + (i * sizeof(int))

    View Slide

  15. #include
    int main() {
    int i = 0;
    int things[] = {10, 20};
    for (; i < 3; i++) {
    printf("%d\n", things[i]);
    }
    return 0;
    }
    Physical Memory Chip
    0x0000
    4 bytes
    0x0008
    0x000C
    0xFFFF
    0x000A (10)
    0x0014 (20)
    0x0000 (0)
    0x0004
    0x0004 + (0 * 4) == 0x0004
    &0x0004 == 0x000A (10)

    View Slide

  16. #include
    int main() {
    int i = 0;
    int things[] = {10, 20};
    for (; i < 3; i++) {
    printf("%d\n", things[i]);
    }
    return 0;
    }
    Physical Memory Chip
    0x0000
    4 bytes
    0x0008
    0x000C
    0xFFFF
    0x000A (10)
    0x0014 (20)
    0x0001 (1)
    0x0004

    View Slide

  17. #include
    int main() {
    int i = 0;
    int things[] = {10, 20};
    for (; i < 3; i++) {
    printf("%d\n", things[i]);
    }
    return 0;
    }
    Physical Memory Chip
    0x0000
    4 bytes
    0x0008
    0x000C
    0xFFFF
    0x000A (10)
    0x0014 (20)
    0x0001 (1)
    0x0004
    0x0004 + (1 * 4) == 0x0008
    &0x0008 == 0x0014 (20)

    View Slide

  18. #include
    int main() {
    int i = 0;
    int things[] = {10, 20};
    for (; i < 3; i++) {
    printf("%d\n", things[i]);
    }
    return 0;
    }
    Physical Memory Chip
    0x0000
    4 bytes
    0x0008
    0x000C
    0xFFFF
    0x000A (10)
    0x0014 (20)
    0x0002 (2)
    0x0004

    View Slide

  19. #include
    int main() {
    int i = 0;
    int things[] = {10, 20};
    for (; i < 3; i++) {
    printf("%d\n", things[i]);
    }
    return 0;
    }
    Physical Memory Chip
    0x0000
    4 bytes
    0x0008
    0x000C
    0xFFFF
    0x000A (10)
    0x0014 (20)
    0x0002 (2)
    0x0004
    0x0004 + (2 * 4) == 0x000C
    &0x000C == ????
    ????

    View Slide

  20. JavaScript is
    especially hard.

    View Slide

  21. sentry $ find node_modules -type f | wc -l
    36882
    sentry $ du -hs node_modules
    308M node_modules

    View Slide

  22. function multiply() {
    var rv = 1;
    for (var i = 0; i < arguments.length; i++)
    rv += arguments[i];
    return rv;
    }
    > multiply(2, 2)

    View Slide

  23. test('multiply 2 * 2 to equal 4', () => {
    expect(multiply(2, 2)).toBe(4);
    });
    100% test coverage btw

    View Slide

  24. > multiply(2, 2)

    View Slide

  25. > multiply(2, 2)
    > multiply()

    View Slide

  26. > multiply(2, 2)
    > multiply()
    > multiply(1, 1)

    View Slide

  27. > multiply(2, 2)
    > multiply()
    > multiply(1, 1)
    > multiply(1, {})

    View Slide

  28. Shipping code is
    the worst.

    View Slide

  29. window.Notification.requestPermission().then(function() {
    new Notification("I see you.");
    });

    View Slide

  30. Yas, I did it!

    View Slide

  31. I think my
    computer is broken.

    View Slide

  32. Step 1:

    View Slide

  33. Step 1: Acceptance

    View Slide

  34. This is hard.
    But that’s ok.

    View Slide

  35. Step 2:

    View Slide

  36. Step 2: Self-awareness

    View Slide

  37. You won’t know everything.
    You will make mistakes.
    But that’s OK.

    View Slide

  38. Step 3:

    View Slide

  39. Step 3: Do your best

    View Slide

  40. Learn from mistakes.
    assume the worst.

    View Slide

  41. How to deal with
    production.

    View Slide

  42. Bug-free code is
    very rare.

    View Slide

  43. Respond quickly when
    things are broken.

    View Slide

  44. Monitoring is good.

    View Slide

  45. Meet Sentry.

    View Slide

  46. Error reporting

    View Slide

  47. window.Notification.requestPermission().then(function() {
    new Notification("I see you.");
    });

    View Slide

  48. View Slide

  49. View Slide

  50. Context is good.

    View Slide

  51. Questions?
    I may or may not have answers.
    @mattrobenolt
    github.com/mattrobenolt
    sentry.io
    github.com/getsentry/sentry

    View Slide