and how to design your
language for it
• Get an error? Copy and paste the error
into Google. In milliseconds you often have
the answer to what you did wrong
• SDP is very fast and ﬂow-friendly
• Everyone these days knows programming is
a pretty social and even collective activity
• Surrender to the hive-mind!
But actually are many
• One hive per language / tool.
• (To the extent that there is crossover
across languages and tools that’s mostly
called the standard CS curriculum.)
• The old way: μ (average knowledge)
• Whoever was nearest to you to talk
about your problem
• The SDP way: Σ (aggregate knowledge)
• Google search sums the intelligence of a
A very big deal
• In my opinion this is the biggest thing in
human knowledge of the past 1000 years
• But language designers haven’t noticed yet
• A community has some programmers’
mistakes documented in Google-searchable
space, often with solutions
• No matter what you dumb thing you did
with Ruby on Rails, there is someone on a
blog or StackOverﬂow who already did it
and posted a decent answer about how to
• Solved problems in Googledspace are part
of what your language has to offer
• Arguably the most heavily used ‘feature’
• More important than having a good
Emacs mode or whatnot
• Sadly this helps the incumbent languages
• When you start your community will be
• You need a community multiplier.
• Attract prolix programmers. Exhibitionist
• Your model here is mid 2000s Ruby
community. So many presentations, so
• (Non-SDP beneﬁt: the best lib wins
much faster in a prolix community.)
• How? Set a culture that attracts them.
Write! Blog sloppily so that everyone feels
like dashing off a quick, underedited post is
'what we do here’.
What’s your dog whistle?
• Get your naming unique - both the language's
name and its libs
• Maybe dream up a lib naming convention
that makes this very likely
• Python is your model. Numpy, SciPy,
web.py, cherrypy, etc. Very Googeable.
• Maybe have some misspelled preﬁx or
sufﬁx that implies your language
• ex.“Hypreactive” “Escarpmeant”
Design community boosting
into the language
• Or at least its tools
• ex. when in ‘dev mode’, any error message /
stack trace includes a URL that creates a
blog post with that stack trace + context.
Paste in the code you changed to provide
• Or write something that can turn any git
commit in your language into a blog post
• Post-commit hook?
• The iPython Notebook nbviewer is an early
example of such a tool.
• ex. http://nbviewer.ipython.org/gist/
• It might work to establish a culture where
the error message due to some bug that
you are getting should go into git commit
messages or pull request description.
GitHub hides long messages but they are in
the HTML :)
• Here you are ﬁghting the standards and
culture of git and GitHub
The 1000X community
• The goal: EVERY time someone ﬁxes their
bug, leave a trail in Googleable space that
others can follow
• Whatever new language makes this happen
ﬁrst is the new dominant language
Questions worth asking
• Why is there so much less sysadmin-ish
stuff blogged and StackOverﬂow-ed,
compared to programming-ish stuff?
• (I think it’s cultural)
• Could you make community tools ﬁrst
class citizens in your language?
• If your editor is within a browser, you
probably could and should do this