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

Let Them Write Code (Keynote, PyCon India 2019)

Let Them Write Code (Keynote, PyCon India 2019)

Ines Montani

October 13, 2019
Tweet

More Decks by Ines Montani

Other Decks in Technology

Transcript

  1. Ines Montani
    @_inesmontani
    Explosion

    View full-size slide

  2. One not so weird trick for

    View full-size slide

  3. SPACY
    Open-source library for
    industrial-strength Natural
    Language Processing
    100k USERS

    View full-size slide

  4. PRODIGY
    Annotation tool for creating
    training data for machine
    learning models
    2.5k+ USERS

    View full-size slide

  5. EXPLOSION
    Software company specializing
    in developer tools for AI and
    Natural Language Processing
    6 DEVELOPERS

    View full-size slide

  6. DEVELOPERS
    GONNA DEVELOP.
    Good tools help people do their work.
    You don’t have to do their work for them.
    *

    View full-size slide

  7. DEVELOPERS
    GONNA DEVELOP.
    Good tools help people do their work.
    You don’t have to do their work for them.
    *
    Worst developer experiences: tools that
    want to be “fully integrated solution”.
    *

    View full-size slide

  8. DEVELOPERS
    GONNA DEVELOP.
    Good tools help people do their work.
    You don’t have to do their work for them.
    *
    Worst developer experiences: tools that
    want to be “fully integrated solution”.
    *
    BETTEr, CHEAPER, EASIER.

    View full-size slide

  9. But aren’t all libraries
    extensible? After all, people
    write code with them.

    View full-size slide

  10. But aren’t all libraries
    extensible? After all, people
    write code with them.
    Some more than others.
    Libraries don’t always provide
    composable primitives.

    View full-size slide

  11. are, going, swimming,
    should, go

    View full-size slide

  12. going, swimming, go

    View full-size slide

  13. go, swim, go

    View full-size slide

  14. Shouldn’t the library take care
    of things like this so users don’t
    have to repeat the same code?

    View full-size slide

  15. Shouldn’t the library take care
    of things like this so users don’t
    have to repeat the same code?
    The set of “things like this” is
    probably bigger than you think,
    and it keeps growing.

    View full-size slide

  16. .json .CSV .TXT

    View full-size slide

  17. .json .CSV .TXT
    MYSQL SQLITE

    View full-size slide

  18. .json .CSV .TXT
    MYSQL SQLITE
    Does it support
    MongoDB?

    View full-size slide

  19. .json .CSV .TXT
    MYSQL SQLITE MONGO
    Does it support
    MongoDB?

    View full-size slide

  20. .json .CSV .TXT
    MYSQL SQLITE MONGO
    Does it support
    MongoDB?

    View full-size slide

  21. .json .CSV .TXT
    MYSQL SQLITE MONGO
    Does it support
    MongoDB?

    View full-size slide

  22. THINK OUTSIDE
    THE FRAMEWORK
    Does your tool
    integrate with X? Can you integrate
    with X in Python?
    If developers can help themselves,
    they’re much happier.

    View full-size slide

  23. CALLBACKS
    PRACTICAL TIP #1

    View full-size slide

  24. FUNCTION
    REGISTRIES
    PRACTICAL TIP #2

    View full-size slide

  25. SINGLE-DISPATCH
    GENERIC FUNCTIONS
    PRACTICAL TIP #3
    PEP 443

    View full-size slide

  26. ENTRY POINTS
    PRACTICAL TIP #4

    View full-size slide

  27. AVOID I/O
    PRACTICAL TIP #5

    View full-size slide

  28. AVOID I/O
    PRACTICAL TIP #5

    View full-size slide

  29. AVOID I/O
    PRACTICAL TIP #5

    View full-size slide

  30. AVOID I/O
    PRACTICAL TIP #5

    View full-size slide

  31. function registry
    (and entry point)

    View full-size slide

  32. function registry
    (and entry point)
    let user do I/O

    View full-size slide

  33. function registry
    (and entry point)
    iterable of dicts
    (list, generator)
    let user do I/O

    View full-size slide

  34. function registry
    (and entry point)
    callback function
    iterable of dicts
    (list, generator)
    let user do I/O

    View full-size slide

  35. But this all looks way too
    complicated! Easy systems are
    much easier to demo!

    View full-size slide

  36. But this all looks way too
    complicated! Easy systems are
    much easier to demo!
    Try to invite their engineers to
    the demos. It’s a win-win for
    both sides.

    View full-size slide

  37. But we want to win over our
    customers and give them as
    many features as possible!

    View full-size slide

  38. But we want to win over our
    customers and give them as
    many features as possible!
    If you sell “all or nothing”,
    users have to go for “nothing”
    if they don’t want “all”.

    View full-size slide

  39. But we want our tool to be easy
    to learn. Why should users know
    all this other Python stuff?

    View full-size slide

  40. But we want our tool to be easy
    to learn. Why should users know
    all this other Python stuff?
    Background knowledge is easy to
    learn, it generalizes and there’s great
    resources. It’s tool-specific knowledge
    that’s hard.

    View full-size slide

  41. But isn’t this exclusive? What
    about people who can’t
    program?

    View full-size slide

  42. But isn’t this exclusive? What
    about people who can’t
    program?
    They can still benefit from an
    ecosystem if the tools are
    programmable.

    View full-size slide

  43. Machine Learning model builder
    Embedding layer Encoding layer Attention layer
    Output layer Training data BROWSE Evaluation data BROWSE
    Dropout 0.2
    Early stopping
    Update embeddings
    Save model to BROWSE
    CREATE & TRAIN

    View full-size slide

  44. CODERS VS.
    NON-CODERS?
    Making technology accessible to people
    who aren’t like you ≠ thinking of
    everything they might want and giving it
    to them.
    *

    View full-size slide

  45. CODERS VS.
    NON-CODERS?
    Making technology accessible to people
    who aren’t like you ≠ thinking of
    everything they might want and giving it
    to them.
    *
    Don’t divide the world into “coders” and
    “non-coders”.
    *

    View full-size slide

  46. LESSONS FROM
    OPEN-SOURCE
    Open-source tools have crushed closed-
    source software again and again (despite
    tremendous disadvantages).
    *

    View full-size slide

  47. LESSONS FROM
    OPEN-SOURCE
    Open-source tools have crushed closed-
    source software again and again (despite
    tremendous disadvantages).
    *
    Why? Because they’re programmable.
    *

    View full-size slide

  48. LESSONS FROM
    OPEN-SOURCE
    Open-source tools have crushed closed-
    source software again and again (despite
    tremendous disadvantages).
    *
    Why? Because they’re programmable.
    *
    It’s fine to make money and build closed-
    source systems. But learn this lesson.
    *

    View full-size slide

  49. Explosion
    explosion.ai
    Twitter
    @_inesmontani

    View full-size slide