Adworse Codes Here

Programmer's travelogue
by Dima Ermilov

A bit of context

I first started programming at the age of 12, with a dialect of Sinclair BASIC on a DIY Z80-based clone.

That failed spectacularly, so naturally, I switched to Humanities for the next 30 years.

My next attempt at programming was at 43, first with R, and then some Python. I would probably have failed again (though perhaps not quite as monumentally), had writer and programmer Victor Shepelev not come to my rescue and taken me under mentorship. Victor is currently serving in the Ukrainian Armed Forces, yet still manages to update his blog on the Ruby language. Check it out, it’s well worth the read!

Unsurprisingly, my first big love in programming happened to be Ruby.

Victor had an interesting concept of narrative programming, which he imparted to me. Writing code is not unlike writing a novel: your code tells a story. At least, it should. The more clearly you envision it, the better you can transcribe it, the cleaner it works, and the more clarity you can achieve in communicating your intentions.

When I first took a crack at Elixir, it fascinated me how neatly its data piping lined up with this metaphor. I even applied the principles of “The Hero’s Journey” to a multi-tenant data distribution pipeline — and it worked! It wasn’t the life-changing experience I anticipated, but nevertheless, it fit.

I also think of Joe Armstrong’s famous quote as having a lot to do with composing written works:

Make it work, then make it beautiful, then if you really, really have to, make it fast. Ninety percent of the time, if you make it beautiful, it will already be fast. So, really, just make it beautiful!

For the past five years, I have enjoyed the good fortune of working alongside some unbelievably brilliant engineers as their mentee, colleague, and occasional architect. For data integrations, my main field right now, Elixir is a match made in heaven. And its welcoming community has made my life even more beautiful, to put it in Joe Armstrong terms, and encouraged me to share some of my journey.

Since I never received a “proper” CS education, many of my insights or discoveries may seem a bit naïve to those with more substantive foundations. On the other hand, some may be unorthodox, or even interesting. I have no idea how to tell one from the other, that’s for you to decide. Whichever half of my notes you consider better, try just reading those!

Yours,

Dima Ermilov

P.S. A huge thank you to Oskar Wickström, for The Monospace Web design concept; and to my brother Max, who helped with all the scary CSS stuff.