I’m thirty years old. Three decades! Thirty orbits around the Sun on this big ol’ beautiful ball of dirt, rocks, and water. And you know what? It feels great.
Thirty’s a good age. A lot of the struggle to understand oneself and to find a niche to nestle comfortably in is over at this point; I’ll remember my late teens and early twenties as filled with stress and fun in equal measure, finding myself with so many new responsibilities and ideas and meeting interesting and wonderful people. All this while also finding myself under pressure to find the right career, to build the right skills, to pay the bills on time, and so on. A lot of struggle and fuss about what it means to be a person, what it means to be your own self and the nagging feeling that everything is at once too slow and too fast and- well, it’s altogether a messy and difficult time.
But thirty? Thirty I can handle. I’m more grounded in who I am than I’ve ever been, my career is trundling along nicely, I have wonderful friends and a wonderful partner, and I’m happy. Sure, I still have my fair share of life’s worries and complications - who doesn’t - but so much of the cruft is cleared away, it’s all so much more in focus now. At thirty, I can really just get on with enjoying my life, shouldering my burdens more capably, more confidently, knowing that I can just keep building on my life experiences and absorbing new ones. I have even more interests, hobbies, and appreciation for things. I’m stronger than I’ve ever been.
I’ve learned so much over my approach towards thirty. Too much to really write about in full, so much about myself and other people and living and the shape of my life and the world I live in, about foods and drinks and smells and sounds, and of landscapes and cultures and peoples. So, maybe I should just talk about what I learned about game development and programming, since that’s my main area of expertise and one that I’m pretty sure I can write competently about. But even then it’s a pretty extensive list and I don’t think anyone really wants to see a giant bullet-point list of Things Wot I Learnt. But I can pick out a few choice ones that I’m personally proud of!
- C# - My daily driver, I know this language like the back of my hand. Even now it gets new additions which make it more interesting and ergonomic, and it runs on most devices that I care about. It’s not the fastest or the cleanest little language that ever was, and god knows its history as Microsoft’s attempt to kill Java leaves it in a weird place in many people’s memory, but it’s home to me.
- Rust - Rust, a beautiful language with so many interesting and clever systems programming oriented decisions in its design. Safety first! One day, I’ll write something great in Rust; for now, I only really have OfficeRL and bmpdisk to show for it - which while fun, are hardly what could be considered idiomatic Rust by most standards. I am just beginning some work on a riichi mahjong library in Rust though, so… maybe that’ll be my opportunity.
- Assembly (6502, m68k) - A big achievement for me. The first times I tangled with assembly I considered it a terrifying and ancient beast, a dark spirit with which I could not hope to grapple lest I find myself lost forever. I shelved any dreams I had of disassembling old games and modifying them, never to return… but wait! First, I played TIS-100, a puzzle game with a tiny assembly language, which got me hooked. And, well, the rest is history. Keep your eyes peeled for more assembly-based projects from me!
- Git - I’ve (regrettably?) become something of a Git expert over the years, partially through necessity of my day job, but also just because I use it for all of my projects. I’ve used SVN, Perforce, and PlasticSCM, but nothing quite works for me like Git. I know that might be shocking to a lot of people who despise it with a passion, but for better or ill it’s the right shape for my brain and it just clicks. I definitely got a lot better at using it when I resolved to learn the terminal interface. If you’re comfortable with a terminal, I suggest using it via terminal as much as possible, and if not, then that is a very reasonable stance indeed and Git GUIs could probably do more to support people with explanatory interfaces rather than by hiding everything! I don’t know what I’d do without it, and certain tools like
git bisecthave saved me otherwise giant headaches. I’ve had my fair share of messed up repos with weird state, while I was learning - but these days, it’s rare for me to run into trouble, and I’m always happy to resolve those problems for other folks if they need help with it. I totally understand the people who dislike it though - since that’s how I feel about SVN and Perforce, ahaha!
- GLSL - Shaders fun. Shiny. Sparkly graphics card magic. What else is there to say? Well, shader languages in general are always evolving; it’s probably more accurate to say my knowledge of GLSL peaked with
#version 330, and since then I’ve had brushes with Vulkan’s GLSL variant (which is a little more verbose). But every now and then, I shuffle over to Shadertoy and make something silly, like little cellular automata.
- Vim - This is a more recent development, and more specifically it’s neovim that I’ve been getting the most familiar with. For a very long time I was a stalwart user of vscode from some of its earliest iterations, but more recently I’ve been finding that the desktop Linux experience is becoming very usable as an everyday OS and that gaming on Linux is now easier than ever, thanks to the advent of Proton and similar technologies. As such, I find myself in an environment with robust and well-loved terminal interfaces, amongst which vim sits comfortably beside emacs. I used to be of the opinion that everything it could do was better and faster done by just navigating with a mouse in vscode; this is probably still at least partially true for me and almost certainly true for many others, but I’ve found that some of vim’s little bits and pieces allow me to save myself inordinate amounts of time (coupled with that fact that yes, with a modern terminal emulator you can do a lot of browsing in vim with your mouse anyway). For example, I can pipe the output of terminal commands directly into the text buffer; this is really helpful when I’m writing assembly, and I want to take some binary data and insert it in-line into my code. I can just write
:r! xxd -p <file>and wow, bytes in hexadecimal, straight into the buffer! Wait, they’re in a block with no commas between each byte - but I can just record a tiny macro and run it and bam, commas inserted between each byte. I also used a vim macro for one of the sections later on in this blogpost. You’ll know it when you see it.
Anyway, that’s just a smattering of things I’m pleased with myself about. This section ended up kind of rambling, but listen. It’s my blog post, my birthday, and I’ll be as self-indulgent as I like.
Memento mori. That’s what thirty means to some people. And I’m cognizant of it; I’m aware of how short the average lifespan could be in the past, and how painfully short it was at times amongst people in the LGBT community even thirty years ago. We are all of us, like it or not, forced to reflect on the topic. But I am comfortable; I am grateful. Thirty, forty, fifty, sixty; some have more, some have less, but all of us at the very least share one thing in common - that we existed. That no matter how you shake it, each of us leave an indelible mark on the fabric of spacetime, a dent in the patterns of entropy that describe the known universe. Every molecule we’ve ever touched, breathed, has spun off in new directions and changed the shape of the world, in uncountable ways. We are all of us eternally woven into a single great tapestry that spans all of time - and so, let us dye it in our most vibrant hues, our most beautiful patterns, our most perfect textures.
This section is just going to contain facts about thirty.
- Do you know what the word thirty, thirty times looks like? Here:
thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty thirty.
- Did you know that cats have exactly thirty teeth?
- Did you know that there are thirty upright stones at Stonehenge?
- Did you know that thirty is the second number in the classic FizzBuzz test that produces the phrase “FizzBuzz”?
- Did you know that the period of time known as the Oligocene took place roughly thirty million years ago and that it is so named because there weren’t very many molluscs at this time?
- Sonic the Hedgehog 2 for Sega Megadrive will be 30 years old on 21 November, 2022? That’s almost as old as I am. Play SNOLF, the most perfect version of this game ever created.
- Did you know that the word “thirty” appears thirty times in this article, not counting the fact at the start of this section that shows what thirty looks like written thirty times?
- And did you know that I definitely didn’t have to rewrite a couple of sentences to ensure that thirty showed up the requisite number of times?
- If you happen to count a different number of “thirty” instances, then maybe you can simply imagine one more or one less thirty as required.
- And did you know that the NES has thirty rows of tiles in each of its tiled background layers (known as nametables)?
Turns out, there’s not many facts about thirty that are very interesting. But kudos to you for reading this far.
TLDR (Thirty+ Lines? Didn’t Read!)
So, it’s probably about time for me to wrap up this blog post. I’m thirty years old! And I feel great!! I hope to be around for at least another thirty; there’s gonna be so many interesting things to discover, learn, and experience!