Being a Resident at the Recurse Center

I spent one week being a resident at the Recurse Center in New York
this November. The Recurse Center is a somewhat unusual institution.
They call themselves a ���programmers retreat���. That more or less means
they are a space where people who want to improve their programming
skills (whether beginners or experienced programmers) hang around for
a few months, doing self-directed learning, collaborating with each
other, and getting inspired by the work, talks, and discussion of the
people around them.


If that still doesn't make a lot of sense, see their
website or read Martin Kleppmann's
excellent description.


Being a resident there meant that I was simply present in the space
for a week, gave a talk, and worked with people on their projects.
Working with experienced programmers is a way to diffuse some of the
knowledge of those programmers, as well as a good way to make people
realize that those who are considered good programmers still have to
constantly google for stuff and make stupid mistakes.


People

The environment you'll find in the Recurse Center office is an
atypical one, for the tech world.




People are working on whatever interests them, not necessarily on
useful stuff. Which means mostly fun projects that are easy to
relate to.




The group is amazingly diverse, in a number of ways (more on this
below).




There are
social rules
in place to actively combat alpha-techy behavior and competitive
bullshit. Not having to worry about proving how great you are makes
it a lot easier to learn.




Events like ���check-ins��� (a group of people telling each other what
they are working on) and lightning talks make it easy to find out
what other people are working on, and facilitate the flow of
information between people.




The result I can only describe as magic. People are getting things
done, profiting from each other's expertise, doing stuff they never
did before, and being immersed in (mostly the good parts of) tech
culture.


Projects

In my week, I pair-programmed with about ten different people. Some of
these sessions didn't really go anywhere, but a lot of them did. These
are some of the things we did:




Tweaked the structure of a functional-style space invaders game to
be cleaner and more actually functional. Major insight: moving
triggers for sound effects from deep inside the game logic to a
separate piece of code that compared the state before and after the
frame, and played the appropriate sounds based on that.




Worked on a small Lisp interpreter in Python. Moved it from a
Norvig-style split-on-spaces
parser to a more classical tokenizer and parser.




Laid the groundworks for a tower defense game in JavaScript,
experimenting with Electron and
explaining the basics of npm in the process.




Worked on another small Lisp interpreter in C++. Implemented a
pointer-tagging data representation, a parser, pretty-printer, and
rudimentary evaluator. (I hadn't touched C++ in years, and it took
us a bunch of segfaults to get a reverse iterator right.)




Wrote a simple virtual machine (the
���little man computer���)
first in Haskell and then in Python. Both ran example programs by
the time we were done with them. The Haskell version included an
assembler that went from textual programs to machine instructions.
Reminded me how amazing Haskell programming can be.




Had a study/discussion group on the
Raft consensus algorithm. Which was a
good reason to actually read the paper. I came away with a better
understanding of distributed consensus, and I hope others also
picked something up.




Wasted an afternoon attacking a particularly horrid bug in the
interaction between a particular node
version and the Nock library. It
was caused by irresponsible
monkeypatching on the
part of Nock. This was probably the session that most resembled
normal programming���lots of debugging, not much progress.




Looked at an implementation
of the WOOT
algorithm for collaborative text editing on top of CodeMirror. Most
of the session was spent getting me to understand how WOOT works,
but we did make some progress.




So that's definitely more cool programming stuff than I get to do in
an average week.


Diversity

I mentioned that the crowd at Recurse Center is amazingly diverse.
This is part of the center's
focus, and they are doing a great
job on it. The participants there, as well as the organizers, are more
representative of society as a whole than any other tech group I've
been around.


And that diversity works. It, along with the healthy social framing
provided by the organization, creates a social atmosphere very
different from your typical young-white-guy tech environment. There
was no emotional vacuum. I didn't have to cringe at terrible or
insensitive jokes. People weren't one-upping each other. There was no
assumption of cultural homogeneity.


I do understand that diversity alone doesn't necessarily produce such
an effect. I've worked in offices that were diverse by the numbers,
but where the culture was still poison. You also need a healthy dose
of political awareness. And you need to make sure power isn't
concentrated in a specific group. And so on. Healthy culture is hard
work. Thank you, Recurse Center organizers, for doing this work.

 •  0 comments  •  flag
Share on Twitter
Published on December 02, 2015 15:00
No comments have been added yet.


Marijn Haverbeke's Blog

Marijn Haverbeke
Marijn Haverbeke isn't a Goodreads Author (yet), but they do have a blog, so here are some recent posts imported from their feed.
Follow Marijn Haverbeke's blog with rss.