Programming
Published 2021-07-29 Last updated 2023-02-03

I am a software developer.

This is not just my job, it is also my hobby. It's my art, my recreation, my livelyhood and my passion.

Some of my hobby projects are on GitHub, but before clicking that, be warned that there is a picture of my face right on my profile.

Major languages

I've used a lot of languages over the years, and I enjoy learning new ones. For the sake of brevity, I'll only list the ones I feel like I have something to say about.

perl

While not the first language I learned, perl was the first language I loved.

Back in the 90s I was trying to get into website building, and got frustrated with the very static nature of "pure HTML." perl was the biggest game in town at the time, with CGI.pm being the go-to for a lot of people. While I wouldn't start a new web project in perl now, I certainly reach for it whenever I need some sort of glue to stick two things together, like having certbot talk to my hosting provider's DNS API.

I've written game RCON clients, character display software, system maintenance snippets, logistics overview software, inventory management systems, POS backends, personal and professional websites, and all manner of other little bits and bobs.

SLOC estimate is in the millions.

Lua

Holy crap, Lua. I have a very complicated relationship with Lua as I've used it for a lot of fun things, but I'm not overly fond of the language itself. It is hard to organize for large projects, the metatable "objects" are messy, arrays are indexed from 1, and it is very dependent on a lot of framework code to be expressive.

That said, I've done a lot of fun things with it. Most notably, I've made a bunch of FiveM resources using Lua, and the lack of a compile phase makes quick development and resource reloading very comfortable in that environment.

SLOC estimate is in the hundreds of thousands.

Java

I originally wrote a lenthy, scathing paragraph about Java, but then I decided against putting such vitreol on my website. I'm sure Java has done a lot of good for a lot of people, and I'm glad Google gets to keep using it for Android, but I won't be taking part.

I've wasted way too much time with this language, and I just don't like it. I don't care that Minecraft was written in Java. That does not make it a viable language for me, and I'm all done making Minecraft mods anyway. That is the only thing I ever enjoyed doing in Java.

The only unmitigatedly positive thing Java ever did for me was to force me to use a good IDE. Java without it is unbearable, and making the jump from "just vim" to a proper IDE was very good for my skillset as a developer.

SLOC is way too high, and I won't disclose it here out of fear that someone might want to hire me as a Java developer.

C#

Oh boy. This language is everything I like about Java, and none of what makes me cry.

I've worked with C# and .Net for a while on an Azure Functions project, and it was a great experience. Very well put together, very well supported, but most notably, very well thought out. The more I work with it, the more it seems to me that .Net has had a lot of time put into just figuring things out before patching it in.

Well, obviously, with any major anything, some cruft will accumulate, but there seems to be very good justification behind all of it. This carries over into the culture of C#, so it is prevalent in the community as well.

SLOC estimate, including the massive pile of tests I've written, passes 100k at this point.

PHP

I firmly blieve that a skilled developer can a programming task with any language.

Does that mean we have to embrace all languages equally, and love them as if they're all as good as each other? No.

Having worked for years at a company that mainly did WordPress/WooCommerce plugins, I can tell you that I am not a member of the PHP fan club. Yes, it has made strides to improve over the last decade or so, but no, it's not there yet.

I'd rather code in PHP than starve, but that's not very high praise.

At this point I must have written 25-30k SLOC in PHP, and while I've gotten used to some of the flaws, I can't say I want to write more.

JavaScript

ECMAScript 6 and I are pretty good friends, but my history with JavaScript as an ecosystem is long and violent. For the longes time I ran my web browser in luddite mode (JavaScript disabled), and I tend to fight JS being requirement for any web project I do.

That said, it is a useful tool, and with the advent of Node.Js it has gotten a lot more milage out of me. Nothing very serious yet, but I've done a couple of Discord bots and the like.

A SLOC estimate is hard, but maybe 15-20k with everything counted?

Assembly

I'll confess right off the bat that I'm not very good at assembly. I mean, I can make the little light blink almost regularly, but I would not hire me to program industrial robots.

I mention it here because I have a deep love for how close to the metal it is possible to get and how absurdly versitile that can get. It amuses me to no end that my love for gaming and my love for programming are merging more and more, with a lot of games offering Assembly-like languages, or sometimes outright MIPS dialects, to make in-game machines.

It is a Main Quest for me to get good at Assembly so I can make real machines do what I want rather than pretend ones.

SLOC estimate? Uh... 12? I mean, I've written a bunch of game-specific code for things like Stationeers and SHENZEN I/O, but actual, real ASM for actual, real devices? Not a single relevant line since the mid 90s, and even then it never worked right.

Go

My newest love is Go. I've only just begun my journey into this magical land of goroutines and channels, but I'm loving every moment of it.

It feels like it did in the beginning, when I was discarding Pascal for perl and started to truly love programming. Go just does the thing, you know?

This very page was churned out by a static page generator I cobbled together in Go in a couple of days. It's horrible, but it could be the beginning of a long and fruitful relationship.

SLOC estimate is puny at the moment. Ask again in a year.

Notably absent

You might have noticed that there is no C/C++ in this list.

This is because the interpreted languages and high level "toys" got to me first, and every time I've sat down to try and get into C/C++ I've come a few hours into the project and realized that if I had implemented in a different language I would have been done already. Most of the time I haven't needed the performance.

SLOC estimate is just slightly beyond helloworld.c, and while I hope to remedy this, I think it's more likely that I'll just continue on the Go path or pick up Rust.