Posts
by n splendorr
August 12, 2020

Alexander Stepanov on "Elements of Programming" and what the fuck I'm doing as a programmer

I still think of myself as a programming beginner. I don't have any formal education on it; but I've learned piecemeal from hundreds of better-educated and more-experienced people than me over the years, mostly indirectly through their writing. I've been (barely) making my living writing code since... 2015?

This hasn't been an easy path. I learned basic HTML around 1999, only using it intermittently on forums and band sites. I branched out into CSS in 2006 because I had a dream about a site called "I Love Sitting On Chairs," told my friend Erik about it — he said I had to make it, but I had to do all the styling in CSS, so I learned and did. I used those techniques to make a web booklet for my album Plate, which I put SO much time into and hardly anyone ever saw that I know of, and doesn't really work in modern browsers. I studied Why's Guide to Ruby in the summer of 2007, sitting on the couch every afternoon at Blackbird with my first mocha forays into coffee. I had a hard time wrapping my mind around more than the basics of code, but that taught me about a lot more than syntax and logic, things like text editors, the command line, and introduced me to some voices online that I would follow for many years, even when I wasn't actively coding. I sat nearby, listening to people talk into microphones about new developments in code, things I mostly didn't understand but which grew slowly more familiar.

Every 6 months or so, someone would ask me to make them a website. Each of these attempts, usually after successfully creating something useful, was punctuated by a collapse into depressive failure-feeling, but slowly I built up my knowledge and experience. I made one for a property management company after moving to Athens in 2009; that led to me, jobless and sweltering, being asked to fill in when the property manager left abruptly. I did that job for 3 years, mostly not doing web stuff, but still learning periodically, and eventually revamping the company's site to be more useful along the way. In my last year there, I read every word published to action button dot net, sent a small fix to Tim for action button entertainment's site, and he asked me to make them another site. So I did, desperate for something interesting and validating, and that led to my tentative forays into real Javascript code. Making the videoball.net site in... 2013??? led to me getting more paid gigs; people reached out to me, asking if I'd make them a site. Wow! What an idea. After a few decent small gigs, I got a job making a dynamic site, that wound up with me making a final version in Vue.js, writing an honest-to-god Web Application.

That whole time, I felt like I was holding on to a bucking bronco mounted to a roller coaster; almost everything I've ever coded has felt like, "I dunno!!! MAYBE I can do this???" And, usually, I've figured something out. But it wasn't until I took a job working on Wordpress sites (fuck wordpress) in an office that I realized just writing HTML, CSS, PHP, and basic Javascript had become deeply boring. I think I'm honestly probably among the top 10% of CSS programmers in the world? I can make CSS do weird stuff. I can answer esoteric questions, and find some way to make just about anything someone's asked me to do work. Especially with a little JS mixed in. I mean, hell; I've been making web sites for literally twenty years now. But, unfortunately, I haven't been able to parlay that extensive knowledge into a lucrative job; and as has been the case with so many skills in my life, I get really good at something, can't find a way to get paid consistently for it, and so I begin to resent the skill and look for something else to do. I've been making between $14k and $22k a year for most of the last decade; the latter two years as a property manager I made closer to $30k, but that required every ounce of available energy and attention and burned me out so badly. Same with the 6 months I spent at the ad agency; I made almost $30k in 6 months, but due to my own fucked up body chemistry, my health tanked, I quit, and then didn't really work for most of the next year. So. All of this has been excruciatingly-difficult, and I did almost all of it with untreated depression that would crater me for weeks at a time! Good for me, I guess!!!!!

The thing I realized while at the ad agency was, I had finally gotten more than just a decent grasp on logical programming. I had become good at it, and more surprisingly, really missed doing it. The few times I got to write a small JS behavior in those months, my whole mind lit up, and I realized I needed to find a way to do that. Now, of course, if I lived in a big city and could stand being cooped up in an office, I could take a job at a startup or something. I've been told by people who have seen my code that I could easily have a mid-level to senior JS programmer position, if I applied to a few. I interviewed for and was offered a couple of jobs in Europe over the last few years; I declined them because I valued my friends and social situation here. OOPS! Guess that might have turned out to be a mistake, because everything is fucked now and I could maybe have had my own apartment in a strange city and actually felt like an adult rather than a fucked-up perpetual-adolescent failure, but that's another conversation.

Rather than follow that more obvious path, I started to study game programming. An infinite frontier of difficult mental labor where I could express my creative ideas. Moreover, my brother Ryan was developing his art skills; we worked on a few things small things together and really liked it. We'd worked together with our friend Tony on Bugspeed Collider for a couple years of free time effort, when I was still too scared of complex code, and too hung up on my own anxiety to do more than a couple hours of challenging creative work. What if we made our own things? I had a handful of strong-feeling game design concepts, and set out to learn how to make some simple things in late 2018. I studied Pico-8 and Lua, and more importantly "the game loop," which was another thing it took many attempts and experiments to really wrap my mind around, which now feels second nature. I made a few small prototypes and experiments, and then we hacked Celeste to make Ingeste. I moved onto Love2D for more power, working with Ryan for several months in 2019 on a little game we called Party Monsters, which was a playful riff on Pokémon. We never really released anything about that, not wanting to promise anything we couldn't deliver, and I studied and struggled and figured out how to make a lot of things work, ultimately hampered by Love2D's deliberate technical limitations and my own inexperience. But I was learning, and showed it to a few people, and that got me the gig I have now, that I'm not allowed to talk about yet. It's cool, it's satisfying, but it's also been massively challenging, and has served as a real game-making boot camp.

All of that in the midst of adapting to antidepressants since November, which has been a real up and down experience, thankfully mostly up. In the midst of covid. In the midst of the end of my longest partnership, and a marked increase in my own social anxiety, and a period of political turmoil in which the bastards may still be getting the upper hand, but we're collectively pushing back against harder than ever, in which I have not been able to participate as directly as I want. I'm broke again because the project is taking longer than anticipated, and debt I accrued over the last couple years of worsening depression has to be paid, and money is harder than its ever been, and we're entering an economic depression because dipshits run everything and haven't been roasted alive yet. I have to move to a new place somehow, despite having no money, because my housemate is going back to work in a preschool in a week, and I'm not gonna get fucking covid if I can help it. I'm grateful to have been seeing an amazing woman since the end of last year, who is going to let me stay with her temporarily. And another friend has offered a guest room, but again, covid worries, just generally, because fuck everything.

But basically, everything is massively fucked, my own stuff is massively fucked and difficult, and yet I'm still trudging forward, doing code work every day, and learning new things in anticipation of future challenges. I fully credit my antidepressants for keeping me going this year; the person I was 12 months ago wouldn't have been able to handle half of this shit. But here I am, and I'm going, and maybe I'll go to debtor's prison, and maybe I'll die in the street, but I'm gonna do my best not to!

... I just wanted to contextualize this video, but wound up typing all of that. I've started studying C++ and Unreal Engine just a little at a time, because assuming I get to work on some more game ideas, I'm going to try in UE. I've also been broadening my base of general computer science knowledge; reading snippets of Knuth, Dijkstra, Game Programming Gems, and others. This far-ranging path crossed with Alexander Stepanov, co-creator of the C++ Standard Template Library, and several recommendations to learn from him. I downloaded the now-free PDF of his Elements of Programming, and the first few pages were a baffling discussion of what programming even is, from a conceptual perspective.

I needed to know what his voice sounded like; who wrote this book, and did I really need it? Hence the above video. The audio sucks; he's talking directly into a blown-out lav mic the hold time. But I loved it; he's talking about the book and its big ideas in a way that definitely convinced me to spend more time with it, however long it takes me, to learn more about the foundation of what's going on at the root of programming. Stepanov is funny, deeply knowledgeable, and I love his contrarian presentation of the book.

A lot of what he's talking about makes my head spin. But a good portion of it is within my grasp. And the thing I've learned over all these miserable years scraping a living from the butt of this prolonged era of American collapse, which I understand how has been happening since before I was born and has just gotten steadily worse... the thing I've learned is that if I point my attention at something for long enough, no matter how obtuse, I will make sense of it. C++ was terrifying a few years ago; now I'm nodding through the opening sections of a video course, waiting for something surprising to happen. I'm deeply knowledgeable about Javascript, Lua, and a bunch of other stuff. And for now, because it's the only thing I can get anybody to pay me to do, as long as there's money available for it, I'm going to keep making websites and hopefully more games, and getting better and better at programming as a discipline, leaning into the torrential wind of our uncertain future, fucking up just about everything along the way but refusing to give in to despair.

If anybody has money or a programming job for me, hmu. Sorry if I haven't been able to do something for you in the last few months. I'm trying to finish this game over the next few weeks and move on to something else, which, at the moment, does not yet exist.

love too not starve in the stupidest country in history

August 12, 2020

"you couldn't be there if you tried"

Crash Kings — 1985

Really good percussive piano-driven album. This isn't even my favorite from it, but it might be the one that gets in my head most often. I like to listen to Crash Kings when I need to bang out some code!

August 11, 2020

“Protect the children and the beautiful Earth”

August 07, 2020

I'm very excited for Michael "The Musician, Not The General" Flynn's upcoming album!

The instrumentation on this first single is pretty silly, but I think it works once his voice comes in. His last album, Pretend Like, is one I listen to again every month or two. And his entire catalogue as part of Slow Runner comes highly recommended... by me! Okay, thanks!

August 07, 2020

I like these products that I have discovered recently

Rogue Amoeba released a new version of SoundSource last week, and very nicely sent me a free upgrade license, since I had just purchased the previous version a month ago. Wow! I emailed them a thank you, and the owner of the company wrote back to thank me for the kind words. Then he said if I liked it, they'd appreciate me recommending it to others. So here! And then I thought of a few other things I've used in recent months that I only just learned about, and might be useful to you. So, without deriving any personal benefit from these unsponsored links, here they are:

SoundSource

I use this because it makes my laptop speakers louder in a good, clean way! If you watch stuff on your computer and are like, "dang why can't this just be a LITTLE louder," then you should try SoundSource! I used to use Boom3D, but looked for other options because it seemed to be messing up my inputs and outputs sometimes. SoundSource has been great so far!

It also includes options to redirect audio from one source to another; but if you want better tools for that, their app Loopback is great, too. Heck, I've used half of Rogue Amoeba's apps off and on for a decade. Thanks!

Fork.app

The best git UI, for me, hands down. Just discovered it late last year, and have been super happy with it. Its built-in conflict diff tool (which syncs the scroll position of the two conflicting files, lets you choose which side to keep in each conflict, AND lets you make further changes in the bottom window just by typing) is worth the price of entry. But I've been managing a git repo with multiple contributors since January, and Fork has given me the best experience of any of the many others I've tried. Fuck SourceTree, GitHub's app is too simple, GitKraken is fine but weird to me, and Tower.app seems good but I never gelled enough to purchase it.

Fork's got a generous trial period to really make sure it works for you. And, heck, if you need help understanding Git stuff, apparently I'm pretty decent at managing a Git repo. hmu sometime. Thanks!

Nieves Cloud of Protection

If you, like me, are a human being who has to take a shit, Cloud of Protection is the best product I've found for neutralizing your shame before others. Its scent-smashing ability is also good against other unpleasant smells, like when you take out the trash, or have a Republican in your house for some reason(?). Thanks!

August 07, 2020

I like Liza Anne's new "Bad Vacation" album!

“I was writing what I needed to hear,” Liza explains. “I was writing what I needed to feel. I was quite literally writing a stronger, more empowered version of myself into existence.”

It's good!

August 05, 2020

Brent Simmons on “The Overdog Lovers”

I really love the gently acidic way Brent Simmons has been phrasing problems of power lately. Here’s the entirety of this great post:

You run into those fellas in life and online who will always explain, for any situation, why the big company is right.

If asked, they will discuss their political and economic ideology. That ideology, they’ll explain, is about reality and logic — it isn’t some blanket defense of big companies. No way. It could just as easily defend small businesses and working people.

Except… every single time, without fail, they side with the big company. And then you realize that they’re the overdog lovers. They cling to the big wealthy power and hate the underdogs. It would be nice if they’d just say so.

“It would be nice if they’d just say so” is SUCH a polite way to destroy the kind of “I’m just being realistic here” bullshit underlord who paves the way for oppression everywhere, whether corporate, national, or personal.

People who support power because they identify with the powerful, even when they have little of their own. Household patriarchs the world over who spit on the downtrodden and vote for idiot fascists because they like the appearance of power. Fascist fanboys whose vision of “realism” is that consolidated power isn’t an unjust accident of history, but simply the way things ought to be. Ignorant cowards who bluster loudest about how tough they are, usually to a limited audience of their own disgusted families. The lapdogs of history, tiny men who must be handled with care while seeing themselves as wolves, who think their yipping is a powerful roar.

Anyway, that’s the sort of thing that comes out when I try to address these people. I wish I were more readily capable of Brent’s calm; I think it’s more effective for reaching the people whose minds might be changed.

August 04, 2020

*massive guitars*

god damn

August 03, 2020

f u c k

August 02, 2020

"And I know the same crossed your mind"

Catfish and the Bottlemen — Coincide