In this pairing session from DailyDrip, Josh
Adams and Corey
Haines work through building a parser (driven
by tests) for RLE-encoded Game of Life files, using
elm-combine. A tiny stack machine is
introduced for handling repeats as well, though in reality it could likely have
been solved without that.
The code we ended up with is available on the
repo on GitHub.
It's a very lengthy pairing session - 2 hours and 11 minutes. With that in
mind, here's a rough outline of various timings in the video:
- 00:00:13 - A rapid introduction to elm-combine. I worked with it for an hour
or so before we got started, and I just kind of speed through what I've
learned so far.
- 00:03:58 - We burn a few minutes figuring out what these files are even called
and where they're located and what the format's called :) Hint: Run-Length
Encoded, and the format's described here.
- 00:29:25 - This is where I decided, for better or for worse, that I'd solve
the 'repeat' instruction by making a single-instruction stack machine, though
we don't actually get to that for another 20 minutes or so.
- 01:19:23 - We could parse lines but here we started figuring out how to turn
the list of lines into a list of another type that we could use for the rest
of the program, and it took us quite a while. What's worse, Bogdan has
confirmed that we did this kind of dumb (we had an inkling). But we got it
- 01:52:24 - We integrate it into my existing game of life engine and try a
couple of patterns on for size.
NOTE: I love doing these. It's also kind of my job (best job ever) as a
co-founder of DailyDrip. If you enjoy this maybe consider signing up for
DailyDrip, as that's what helps me have the time and
obligation to put this stuff out there. If you don't enjoy it, I'm sorry you
have bad taste! :) :) :)
Do you have ideas for another pairing session I should do? Interested in
setting one up with me? That's what the comments are for!
I've been building web-based software for businesses for over 18 years. In the last four years I realized that functional programming was in fact amazing, and have been pretty eager since then to help people build software better.