Let Them Write Code (Keynote, PyCon India 2019)

C005d9d90f1b1b1c2a0a478d67f1fee9?s=47 Ines Montani
October 13, 2019

Let Them Write Code (Keynote, PyCon India 2019)

C005d9d90f1b1b1c2a0a478d67f1fee9?s=128

Ines Montani

October 13, 2019
Tweet

Transcript

  1. Ines Montani @_inesmontani Explosion

  2. One not so weird trick for

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

  4. None
  5. PRODIGY Annotation tool for creating training data for machine learning

    models 2.5k+ USERS
  6. None
  7. None
  8. EXPLOSION Software company specializing in developer tools for AI and

    Natural Language Processing 6 DEVELOPERS
  9. None
  10. DEVELOPERS GONNA DEVELOP. Good tools help people do their work.

    You don’t have to do their work for them. *
  11. 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”. *
  12. 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.
  13. But aren’t all libraries extensible? After all, people write code

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

    with them. Some more than others. Libraries don’t always provide composable primitives.
  15. None
  16. are, going, swimming, should, go

  17. going, swimming, go

  18. go, swim, go

  19. go, swim

  20. None
  21. go, swim

  22. Shouldn’t the library take care of things like this so

    users don’t have to repeat the same code?
  23. 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.
  24. .json .CSV .TXT

  25. .json .CSV .TXT MYSQL SQLITE

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

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

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

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

  30. None
  31. None
  32. 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.
  33. None
  34. CALLBACKS PRACTICAL TIP #1

  35. FUNCTION REGISTRIES PRACTICAL TIP #2

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

  37. ENTRY POINTS PRACTICAL TIP #4

  38. AVOID I/O PRACTICAL TIP #5

  39. AVOID I/O PRACTICAL TIP #5

  40. AVOID I/O PRACTICAL TIP #5

  41. AVOID I/O PRACTICAL TIP #5

  42. None
  43. function registry (and entry point)

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

  45. function registry (and entry point) iterable of dicts (list, generator)

    let user do I/O
  46. function registry (and entry point) callback function iterable of dicts

    (list, generator) let user do I/O
  47. None
  48. But this all looks way too complicated! Easy systems are

    much easier to demo!
  49. 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.
  50. But we want to win over our customers and give

    them as many features as possible!
  51. 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”.
  52. But we want our tool to be easy to learn.

    Why should users know all this other Python stuff?
  53. 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.
  54. But isn’t this exclusive? What about people who can’t program?

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

    They can still benefit from an ecosystem if the tools are programmable.
  56. None
  57. 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
  58. None
  59. 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. *
  60. 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”. *
  61. LESSONS FROM OPEN-SOURCE Open-source tools have crushed closed- source software

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

    again and again (despite tremendous disadvantages). * Why? Because they’re programmable. *
  63. 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. *
  64. Explosion explosion.ai Twitter @_inesmontani