Every year or so I write about how my programming journey goes. There has been a lot of progress, many déjà-vus, but also some negatives. When I started, I did so to wire my own games with the Unity engine. This initially gave me a good outlook, as it had a clear and defined goal/techstack, plus, I also happen to be friends with a few devs, which was a nice backup to ask for advice. Looking back though - and I don’t do this to toot my own horn - this has probably been one of the most difficult undertakings I ever did in terms of learning something new. Learning how to code, or how C# works, is a task that isn’t to be taken lightly for someone who never tried, but at the same time, you’ll learn the Engine, which are 17 desktop applications cobbled together. Additionally, stuff that is second nature to me now, like Git versioning, certain packages that are unique to my game (some games have multiplayer, some don’t, making the requirements for the programmer vastly different) are also just as important. If I ponder about this retroactively, it seems like a surreal mountain of intertwined software that I somehow stomached.

This has then motivated me to do an intermediate C# course on codecademy. With AI tools and code to copy paste readily available, I was still unhappy to not have a fluent understanding of the language. I especially remember it as exceptioinally frustrating, when I set out to do X, well aware that it won’t work first try and friction is therefore to be expected, however, if then VSCode breaks or the coding halts because I didn’t know how to initialize things cleanly, my moral dropped very quickly. So, this gave me a cool certificate. I did it entirely without AI or an IDE, so I really had to understand the problem in its barebones format and also develop a skill to read and understand what the compiler wants from me (meaning when things break), which sounds easier than it was to me. The only exception, and this is also the main thing I disliked about the course, was that you could build certain things with architecture A or B, both working very comparable if not identical, but perhaps different in syntax. However, the module flags these as wrong, if they expect A over B sometimes, sending you on a hunt for a bug that doesn’t exist.

A crane

Nowadays, I’m learning more and more about architecture and software that surrounds my goals, such as Docker, Kubernetes, all things CI/CD, but I’ve also grown an interest in SQL. These struck me as comedically easy. They aren’t at all and can grow very complex, very quickly, still, if you’ve climbed the mountain I described before first, you’ll find that the slope of indivual solutions, is rather easy going, even enjoyable. Intrinsically, this makes me feel like an idiot though, and I expect this feeling to last. This is because programming - for me - consists out of thousands of little tasks that I do for the first time. Yesterday I cobbled together a modular user interface that displays tooltips on hover for another modular system in a multiplayer game. So I had to look into events and RPC calls and whatnot. What I’m trying to say is, that you always have to read up tutorials and documentation. This gives you the feeling that you never really progressed at all; you’re still doing tutorials because you don’t know how to solve stuff on your own. This is a déjà-vu that rhimes with my professional career, which lies rather in visual design. Here, I also always feel insufficient, the image can always be a bit better. Whatsoever, if this feeling hasn’t gone after over a decade, I expect it to last even longer, hence I don’t really pay any attention to it. And if you think about it a bit more distantly, what I’m writing is basically:” I am cooking a completely new dish that I’m unfamilar with. I know my way around the kitchen, but I still need a recipe.” Wow, right? What a tremendous intellectual feat.

I poke a bit fun at this now - rightfully so I think -, but this is a feeling that keeps looming over me and has to be mindfully adressed every once in a while, especially if you aren’t in exchange with colleagues constantly and working on your own. This gets even more so amplified if you dabble in other programming languages, especially if they are very similar to your main skill, but not quite. This seems like a helpful thing at first, but forces you to look up the most minute stuff, in case a for loop is defined only a bit different. I’m very well aware that this problem happens to be perfectly AI shaped and admittedly, I enjoy using it, especially for debugging and indexing. To avoid growing completely dependent and circumventing my own progress, I made it a habit to code certain things 100% from hand. AI can later give me some tips or act as a sparring partner to discuss if the architecture I plan makes sense, but that’s about it. The only exception is stuff like editing HTML or CSS. I’ve done that so often that it really is only a chore that I enjoy forwarding to someone else.

The inside of a tram in black and white

So where does that lead us to? Am I happy with the progress and where would be a good way to go? Overall I feel rather restless and that I still have a lot of work to do. Also quite incompetent, because of the reasons mentioned above, but thats something I chose to ignore. All my endavours have lead me to quite some interesting places though. Earlier this year I took a week off to try my hand at building an own Scanning Tunneling Microscope (STM), which I had the honor of presenting during the Free and Open Source Convention in Sankt Augustin (FrOSCon). It was pretty neat and they have the coolest stickers of any convention I’ve ever been to. Some maintainers, such as the peeps from Libre Office or Open Street Map were there. Before that, it was just some free software floating on the web, but it was nice to see the friendly faces behind this cause. This really amplified my motivation to do more open source and learn about decentralisation. I’m a big advocate of freedom of information and education and it was so nice to see likeminded devs. Speaking about déjà-vus, the STM has led me to a project called Space-Eye. When you’re looking for an exact location with a microscope that powerful, it can feel like looking for a needle in a haystack. They face a similar problem and train an AI to spot boats in distress on the sea. We’re talking about 12-15m on a diameter of 1200km. It’s almost impossible for a human, because sometimes it’s a bit cloudy, sometimes the system might ping a whale instead, and sometimes it’s a random vessel that still has a little wake (it’s a super small wave surrounding its tip). We, however, seek explicity for the absence of this tiny stupid wave, which again, is a needle in the haystack. So that is what I’ve been up to lately. I mainly break their Front End but also manipulated some image preprocessing. This is also where the motivation stems from to learn more SQL and TypeScript or Python.

The inside of a tram in black and white

Comparing the Gamescom (went there a few days ago too) and FrOSCon, makes the latter feel like some kind of small, secret circle. I enjoyed seeing friends, new and old, but you couldn’t ignore how highly commercialized everything was. I’m aware that the staff of the exhibits are nice to you, because it is their very job, but it doesn’t hold a candle to all the genuine exchanges I had at FrOSCon. Perhaps I still perceive it as surreal that you’d attend a convention, without having something to sell? The only downside I can think of is that I really wanted to see some pannels, but given that I was an exhibitor, I had to keep an eye on my stand all the time. So it won’t be much of a surprise that I’m eyeing the CCC event in Hamburg and am already looking forward to the next FrOSCon (this time only as a guest though).

As for programming and my learnings, I noticed that I drew increasingly disinterested to draw a conclusion about that in this post. Yes, there has been some progress and it was nice to clarify - be it only for myself - that I’ll always have to face confusion and new things unfamiliar with me, as it is the very sign of progress. Still, I’d rather think about where I will be in a year or two, rather than where I was in the past. Perhaps the next years update will be about something in early alpha?