Every now and then, when I post about simulations, someone asks me if they can see the code I wrote. Thus far I’ve done a terrible job of sharing it despite the fact that the world now has things like Github in it. There are several reasons for this: one is that my code is sometimes dependent on a library of visualization classes I’ve built up over the years that’s hard to pick apart. But there are other reasons that are way less impressive. And so, dear reader, I’d like to share with you a confession of sorts as well as amending this lamentable state of affairs.
The first reason I’ve not posted my sims on Github is that I’ve never liked Git. My first exposure to it was via a botched project in which the resident ‘lead developer’, who would have struggled to lead his way out of a paper bag, had made a disastrous mess of the company’s branches. It took me days from a cold start to get things back to a usable state. At the time, Git looked very much like a version of Perforce that had been written by dropping angry cats out of a bag onto a keyboard. From that point onward, I have been reluctant to engage with the tool.
It doesn’t help that Git smells badly of ‘command-line-chic’, that particular brand of hapless techno-hipsterism that would like us all to go back to using Vi as our editor of choice and thinks a day spent trying to fix a five-line Perl program full of regular expressions is well spent. (Whatever a twenty-three-year-old with a beard large enough to hide finches in, and a cup of artisanal light roast coffee in his trembling right hand may tell you, the command line is not powerful or cool. It is a hideous relic of the 1970s that should have been replaced by something faster and better designed twenty years ago. Even the desktop has a search bar now for Christ’s sake. Is it beyond us to build a command environment that features decent search and visual feedback?)
Then there is just my lazy unwillingness to take code that I wrote on the fly and tidy it up for public consumption. I’m aware that this is ridiculous. I comment my code as I go and it’s seldom messy. But whenever I start getting ready to put software in the public domain, I find myself iterating over it like a broken household robot, trying to find ways to make things ever more tidy and readable.
Besides, I have also always felt that the correct way to share simulations with the public is via Javascript that can be run directly in a blog post. While this isn’t always the right approach, for lightweight sims that don’t require an army of GPU processors, it has to be the most transparent.
This belief has sat at odds with another quiet curmudgeonly loathing I have, this time for the Javascript language itself. Never have I worked in a language so ill-designed. Even if we put aside the spineless type system, the broken scope, and the blasted syntactic minefield the language supports, the sheer fact that to do anything remotely complex requires that you wrap functions within functions within functions within functions is just horrible. Once again, ignore the young man with the quivering hands and the beard full of finches. This is not a cool, fast, or powerful language. It is a digital train-wreck of global proportions. And no, a transpiler toolchain five hundred packages long that changes every three months does not magically make it awesome. The fact that said packages all have quirky fun names like ‘lumpify’, ‘reflux’, and ‘loldump’ doesn’t help either. Douglas Crockford has a lot to answer for.
However, all rants aside, several things have happened recently. First, I got to the end of my novel contract. Second, I ran out of money, due to taking time out to enjoy said contract. During the frantic scramble to secure an income stream that followed, I discovered that a great many tech jobs now really are heavily dependent several of the technologies mentioned lovingly above. And so I have decided to embrace them.
The new blog I’ve written specifically to host what are hopefully fun, interactive simulations of various physical and social phenomena is hosted on Github. I have written it in Jekyll, bathing and rolling around in the moist shallow pools of command line ooze to get everything installed just right (rm -rf ftw). The simulations are all written in Javascript. Lovely gooey Javascript – so sticky and pungent. So why not head over there and take a look?
And if the next time you see me, I have a beard the size of a modest New York apartment, jeans that cling to my legs like tar and a steaming mug of single-origin Ecuadorian stimulant in each hand, you will know that it is because I am not afraid of the future. I have embraced it, warts and all.