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

PyConZA 2014: "How I Became A Cookie Monster" by Michael Joseph

Pycon ZA
October 03, 2014

PyConZA 2014: "How I Became A Cookie Monster" by Michael Joseph

My journey from a user of the awesome cookiecutter, to a core member of an awesome += 1 community.

I've learned a lot from the modest and multi-talented @audreyr about leading a community, writing clean cross-platform Python code and putting the B in BFDL.

My talk aims to introduce cookiecutter to a wider audience (if you're at a PyCon and you create new projects, you need to use it) and to chart my progress from the outside to the inside of an open source project.

Pycon ZA

October 03, 2014
Tweet

More Decks by Pycon ZA

Other Decks in Programming

Transcript

  1. how
    me became
    cookiemonster
    http://michaeljoseph.github.io/cookiemonster 1 / 74

    View full-size slide

  2. User to Complainer to Helper to Core
    2 / 74

    View full-size slide

  3. an evolution of contributing
    to the development
    of an
    open source software development
    3 / 74

    View full-size slide

  4. me talk about me
    4 / 74

    View full-size slide

  5. polyglot
    VB
    5 / 74

    View full-size slide

  6. polyglot
    VB
    Java
    6 / 74

    View full-size slide

  7. polyglot
    VB
    Java
    PHP
    7 / 74

    View full-size slide

  8. polyglot
    VB
    Java
    PHP
    C Sharp (thanks Markdown) 8 / 74

    View full-size slide

  9. polyglot
    Python
    9 / 74

    View full-size slide

  10. polyglot
    Python
    Ruby (shush)
    10 / 74

    View full-size slide

  11. me live in terminal
    so...
    11 / 74

    View full-size slide

  12. me CLIs
    because
    me automation
    12 / 74

    View full-size slide

  13. lightning talk ?
    How me Learned To Stop Worrying And Love The CLI
    17 / 74

    View full-size slide

  14. https://github.com/audreyr/cookiecutter 18 / 74

    View full-size slide

  15. why me cookiecutter as
    a programming user
    Starting a new project should be as easy as
    g
    i
    t c
    h
    e
    c
    k
    o
    u
    t -
    b n
    e
    w
    -
    f
    e
    a
    t
    u
    r
    e
    22 / 74

    View full-size slide

  16. why me hacking on
    cookiecutter
    Python (obvs)
    23 / 74

    View full-size slide

  17. why me hacking on
    cookiecutter
    Python (obvs)
    Command line I/O
    24 / 74

    View full-size slide

  18. why me cookiecutter as
    a developer
    well documented (http://cookiecutter.rtfd.org)
    25 / 74

    View full-size slide

  19. we gots you covered
    27 / 74

    View full-size slide

  20. why me cookiecutter as
    a programmer
    enthusiastic and inclusive community
    29 / 74

    View full-size slide

  21. Philosophy
    33 / 74

    View full-size slide

  22. Philosophy
    The Unix Way
    Doing One Thing Well
    34 / 74

    View full-size slide

  23. Philosophy
    The Unix Way
    Doing One Thing Well
    Onion Programming
    Adding One More Layer Of Abstraction 35 / 74

    View full-size slide

  24. why me cookiecutter as
    a programmer
    36 / 74

    View full-size slide

  25. use case: microservice
    architectures
    libraries, services, ui components
    38 / 74

    View full-size slide

  26. use case: web app
    installations
    39 / 74

    View full-size slide

  27. my cookiecutter template
    40 / 74

    View full-size slide

  28. cookiecutter demo
    41 / 74

    View full-size slide

  29. my itches
    43 / 74

    View full-size slide

  30. User to Complainer to Helper to Core
    44 / 74

    View full-size slide

  31. origin story
    45 / 74

    View full-size slide

  32. changes demo
    46 / 74

    View full-size slide

  33. changes::start
    48 / 74

    View full-size slide

  34. from cookiecutter.main
    import cookiecutter
    50 / 74

    View full-size slide

  35. changes:flow
    51 / 74

    View full-size slide

  36. back to the story
    52 / 74

    View full-size slide

  37. Review
    54 / 74

    View full-size slide

  38. Code
    small changeset, many pulls
    55 / 74

    View full-size slide

  39. AUTHORS.md
    a
    s
    s
    e
    r
    t '
    @
    m
    i
    c
    h
    a
    e
    l
    j
    o
    s
    e
    p
    h
    ' i
    n o
    p
    e
    n
    (
    A
    U
    T
    H
    O
    R
    S
    .
    m
    d
    )
    .
    r
    e
    a
    d
    (
    )
    56 / 74

    View full-size slide

  40. extra context overview
    58 / 74

    View full-size slide

  41. API + CLI (context
    overrides)
    59 / 74

    View full-size slide

  42. cookiecutter.json
    (template defaults)
    60 / 74

    View full-size slide

  43. user context
    (~/.cookiecutterrc)
    61 / 74

    View full-size slide

  44. we need project context
    (overrides)
    62 / 74

    View full-size slide

  45. extra context PR tour
    https://github.com/audreyr/cookiecutter/pull/260
    63 / 74

    View full-size slide

  46. lessons
    don't get carried away
    64 / 74

    View full-size slide

  47. lessons
    don't get carried away
    small changes are gentler on reviewers (open source
    context is expensive)
    65 / 74

    View full-size slide

  48. lessons
    documentation is a first class citizen
    66 / 74

    View full-size slide

  49. lessons
    documentation is a first class citizen
    keep focused
    67 / 74

    View full-size slide

  50. result
    compromise, pragmatism and followup
    cherry picking is as fun and easy as it sounds
    68 / 74

    View full-size slide

  51. summary
    use cookiecutter, because everyone loves cookies
    69 / 74

    View full-size slide

  52. summary
    be open source
    70 / 74

    View full-size slide

  53. summary
    automate
    71 / 74

    View full-size slide

  54. me out
    74 / 74

    View full-size slide