SPACY
Open-source library for
industrial-strength Natural
Language Processing
100k USERS
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
PRODIGY
Annotation tool for creating
training data for machine
learning models
2.5k+ USERS
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
No content
Slide 8
Slide 8 text
EXPLOSION
Software company specializing
in developer tools for AI and
Natural Language Processing
6 DEVELOPERS
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
DEVELOPERS
GONNA DEVELOP.
Good tools help people do their work.
You don’t have to do their work for them.
*
Slide 11
Slide 11 text
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”.
*
Slide 12
Slide 12 text
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.
Slide 13
Slide 13 text
But aren’t all libraries
extensible? After all, people
write code with them.
Slide 14
Slide 14 text
But aren’t all libraries
extensible? After all, people
write code with them.
Some more than others.
Libraries don’t always provide
composable primitives.
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
are, going, swimming,
should, go
Slide 17
Slide 17 text
going, swimming, go
Slide 18
Slide 18 text
go, swim, go
Slide 19
Slide 19 text
go, swim
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
go, swim
Slide 22
Slide 22 text
Shouldn’t the library take care
of things like this so users don’t
have to repeat the same code?
Slide 23
Slide 23 text
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.
Slide 24
Slide 24 text
.json .CSV .TXT
Slide 25
Slide 25 text
.json .CSV .TXT
MYSQL SQLITE
Slide 26
Slide 26 text
.json .CSV .TXT
MYSQL SQLITE
Does it support
MongoDB?
Slide 27
Slide 27 text
.json .CSV .TXT
MYSQL SQLITE MONGO
Does it support
MongoDB?
Slide 28
Slide 28 text
.json .CSV .TXT
MYSQL SQLITE MONGO
Does it support
MongoDB?
Slide 29
Slide 29 text
.json .CSV .TXT
MYSQL SQLITE MONGO
Does it support
MongoDB?
Slide 30
Slide 30 text
No content
Slide 31
Slide 31 text
No content
Slide 32
Slide 32 text
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.
Slide 33
Slide 33 text
No content
Slide 34
Slide 34 text
CALLBACKS
PRACTICAL TIP #1
Slide 35
Slide 35 text
FUNCTION
REGISTRIES
PRACTICAL TIP #2
Slide 36
Slide 36 text
SINGLE-DISPATCH
GENERIC FUNCTIONS
PRACTICAL TIP #3
PEP 443
Slide 37
Slide 37 text
ENTRY POINTS
PRACTICAL TIP #4
Slide 38
Slide 38 text
AVOID I/O
PRACTICAL TIP #5
Slide 39
Slide 39 text
AVOID I/O
PRACTICAL TIP #5
Slide 40
Slide 40 text
AVOID I/O
PRACTICAL TIP #5
Slide 41
Slide 41 text
AVOID I/O
PRACTICAL TIP #5
Slide 42
Slide 42 text
No content
Slide 43
Slide 43 text
function registry
(and entry point)
Slide 44
Slide 44 text
function registry
(and entry point)
let user do I/O
Slide 45
Slide 45 text
function registry
(and entry point)
iterable of dicts
(list, generator)
let user do I/O
Slide 46
Slide 46 text
function registry
(and entry point)
callback function
iterable of dicts
(list, generator)
let user do I/O
Slide 47
Slide 47 text
No content
Slide 48
Slide 48 text
But this all looks way too
complicated! Easy systems are
much easier to demo!
Slide 49
Slide 49 text
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.
Slide 50
Slide 50 text
But we want to win over our
customers and give them as
many features as possible!
Slide 51
Slide 51 text
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”.
Slide 52
Slide 52 text
But we want our tool to be easy
to learn. Why should users know
all this other Python stuff?
Slide 53
Slide 53 text
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.
Slide 54
Slide 54 text
But isn’t this exclusive? What
about people who can’t
program?
Slide 55
Slide 55 text
But isn’t this exclusive? What
about people who can’t
program?
They can still benefit from an
ecosystem if the tools are
programmable.
Slide 56
Slide 56 text
No content
Slide 57
Slide 57 text
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
Slide 58
Slide 58 text
No content
Slide 59
Slide 59 text
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.
*
Slide 60
Slide 60 text
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”.
*
Slide 61
Slide 61 text
LESSONS FROM
OPEN-SOURCE
Open-source tools have crushed closed-
source software again and again (despite
tremendous disadvantages).
*
Slide 62
Slide 62 text
LESSONS FROM
OPEN-SOURCE
Open-source tools have crushed closed-
source software again and again (despite
tremendous disadvantages).
*
Why? Because they’re programmable.
*
Slide 63
Slide 63 text
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.
*