I haven't posted anything to this blog in almost 10 years . In fact, for a while there I've considered it defunct, because I didn't have anything to say. Or rather, I lacked the emotional and intellectual wherewithal to write about technology. But I hope to get back into the groove of things, and I'd also like to look back at these ten years, for a lot has happened. Let's take a whirlwind tour.
I started this blog at around the same time I began my professional career, right out of college, doing some PHP consulting for a local school at the same time that a former professor, a few friends and I started building a project in Django to help teachers and students collaborate, while also teaching programming at my alma mater part-time (I didn't sleep much.) Every new challenge in any of those arenas was an exciting new adventure: the world extended far beyond the Java and .NET I was taught, the workforce transcended the stiff banks and massive telecom companies in my hometown: there were people out there starting new ventures from their garages. There were nerds out there writing cool, profitable web applications in Python and Ruby!
That very last entry almost ten years ago, me gushing about the fairly obscure confluence of Ruby and Scheme that is
callcc, happened during the preparatory stages of a trip that, no hyperbole, would change my life: the startup I was working at in my hometown (Tegucigalpa, Honduras) was invited to participate in the Dreamit accelerator in New York, for summer 2011. We would be given networking and financial resources to build out our product,
class.io (I'd link to the website, but I think it's long dead.)
I had never left the country at that point, so I had to scramble to get my passport, pray to have my American visitor visa approved, and brush up on my English. As a 20-year old, I was very excited. You can see from my few posts here up until that point that (a) my English was not very good, but I tried (and still try) very hard, and (b) I was proud of my many small discoveries I made while working on our Python project, or doing side projects in Node or Ruby. It was an exciting summer, too, not only in terms of even more technical discoveries—I got to work on a pretty sizable Ruby on Rails project when we pivoted our education platform to a geo-based photo sharing app (I know, I know)—but in personal discoveries too: in the melting pot that is New York, I discovered that people were scary sometimes, but mostly fascinating; that all these cultures thrived and shared and befriended each other, and everyone made delicious food available all over the city; me and other wide-eyed young professionals like me were eager to connect to this body electric. I'd like to write at length about this momentous summer some other time, but suffice to say that even though my startup, and its pivot, tanked, I was determined to figure out a way to come back to New York.
The shadow of all this is that the bad moments were pretty disheartening: a few sponsors, throughout these years, wanted to help me move to New York through a work visa, but every attempt we made fell through not due to anything wrong with the paperwork, but due to sheer bad luck: work visas had a quota, so a few thousand were selected randomly each year for processing; despite trying to not dwell on this, and burning out a bit on doing the same "get this project off the ground" or "fix these legacy bugs you have no reason to care about" contract work from my childhood bedroom in Honduras, I encountered burnout and depression, and a disillusion on technology: why bother learning more exciting languages or practices, when an average workmanship in PHP, Ruby and Java did the trick? For a while, my many forays into the land of Lisp, by way of Scheme, Racket and Clojure, and my muddy explorations of the deep waters of functional programming and other approaches to maintainability fizzled out: my mandate was to keep things working, leave things better than I found them but not so much better that it perturbed the JIRA boards, and be a good communicator in meetings so the full-time engineers soaked it all in. I did it, it was great, I met some fantastic engineers in my tangential capacity, some of whom I call dear friends. On the creative side, however, I do believe, from looking at my Github and cloud archives, I didn't get much done in the midst of all my moving targets.
Then, in 2016, the company I was doing contract work for at the time (and for whom I'd done quite a few projects, we liked each other very much!) managed to finally make that immigration dream a reality, and come late summer that year, I was living in Bushwick. The immigration process, as anyone not from America will tell you, is a scary limbo, so even though I was here, paperwork could still reverse course and I'd have to vamoose. Later that year, with the political event that I, a mere guest in this country, shouldn't discuss but of which I was very afraid, the anxiety increased tenfold (and it hasn't quite abated). Fortunately, things worked out for the most part. I sought refuge in penning some poetry, and a little bit of exploratory coding in my beloved Clojure.
Working as a full-time employee was a welcome change: I got to be part of ideating things, had stewardship of my fellow engineers and our codebase at heart, and even though we were working on a relatively run-of-the-mill e-commerce outfit, we had plenty of new and legacy challenges to keep us engaged. It was also very nice to work in an office and see people in a professional setting, instead of an interminable stream of teleconferences with my dog in the background and my internet service in Tegucigalpa failing every so often. After a year, I was an engineering lead, and a year after that, I was offered the position of director, leading our backend team. Management was a humbling experience, and I'm grateful to have been part of the hiring process and the mentorship of my fellow engineers, but it was quite tough to bear the weight of eight years of legacy software, negotiate with the high pressure that e-commerce and subscription services are under, and carry the emotional burden of dealing with problematic actors in and around the engineering team (a minuscule subset, thankfully.) Working here, I had the chance to write a few small projects to alleviate my team's legacy travails, or at least explore solutions: a Clojure solr reindexer (which I later shipped in closed-source Ruby, for easier deployment within the existing infra,) a little Common Lisp proxy server that I deployed sneakily in production for a week to unblock development, and a Clojure API that mimicked a sluggish vendor's web service, again to unblock devs
I quit that job a bit over three years and several therapy sessions later, missing coding very much. As my agita over quitting and becoming rusty increased, my creative pining did too, and I devoured books on Clojure, Racket, Lisp and Haskell -- I had grand designs to build text editors for poetry, and tinker with Haskell's Euterpea, and get back into making music. On that front, for a couple of years, I didn't achieve much, but I learned a lot: I explored logic programming as an approach to music theory, also tried a typed approach to scales and chords and briefly tried to use Clojure's Overtone. I think the only think I "shipped" in this code-and-music period was this little presentation on Haskell, Euterpea and Bach, inspired by the marvelous book The Haskell School of Music
In 2019, I got married and we moved into our own apartment in Queens; and the summer of that year, an former colleague and esteemed friend offered me a position in the tiny startup he had just joined, in which he planned to build most of the software in Clojure. 2019 was a fantastic year personally, and as I look over my repos, I see a lot of Haskell repos, too raw and meandering to open source (they were private, I just opened but archived them:) personal finance planners, an OCR Haskell app to try and automate scanning my handwritten poetry, and a couple of Elm projects: one, a rather messy Elm app is the precursor to freenatalchart.xyz; the other one is yet another foray into music theory. It seems that in 2019 I sought a way to typify order and predictability, after many years of loosely defined, inscrutable life events?
2020 is, well. Let's just say that the correlation between anxiety and creative refuge has been such that I finally managed to start and actually ship (but by no means finish, not yet!) a side project: a little server-side-rendered Haskell app that draws astrological birth charts and gives hints for interpretation (my own personal standpoint is that Astrology isn't and can't be scientific, but a mere avenue for Jungian insights on recurring time-symbols, just like the Tarot helps with archetypal imagery.) Working on this side project has helped me level up quite a bit in Haskell, forcing me to write two libraries to interact with planetary ephemeris and timezone detection (this one's a funny one: while working on it I realized I had already tried to tackle this problem in Ruby in a fork eight years prior and didn't get too far.)
Both recreationally and professionally, I find myself back in the midst of that old fascination, that itch so patent in my clumsy posts from ten years ago: to explore every corner of making better software, in a better, kinder manner: more expressive, more maintainable, more performant without deferring to the pablum of machines; my rucksack of hard-won gems, long empty, feels full again, and this little blog that bears witness to a previous time of plenty in my life seems a good enough place to share them. There were many years of uncertainty but also growth in between, so let's try again.