Never having been one to let incompetence stand in my way, I immediately plowed headlong into some pretty involved projects. First was a Discord bot which aimed to solve the problem of a lack of server security surrounding new users on a server. Then came the “adventure outliner”, a tool that intends to allow TTRPG GMs to write and organize their campaigns before they get to the game table. Then came the scheduled resurrection of my space-based trading game. None of these projects have been completed, of course, because I have a reputation to maintain, but as each of them progressed, I learned more and more about various platforms and approaches. My development style can best be described as “Google-chic”, a trait I believe most developers share and any of them who claim otherwise is lying. While I have tried my best to learn the whys and wherefores that would lead me to complete a specific task, sometimes a single missing bit of knowledge can set a whole understanding off kilter.
Consider my attempt to leverage Google’s Firebase ecosystem. This provides me two tools I desperately need: authentication and data storage. I have spent a lot of time looking over the Firebase documentation, watching Google’s own “too cute by half” instructional videos, and plumbing the depths of various one-off blogs and panicked posts on Stack Overflow in order to perform one simple task: persist login information across a React website using Firebase. I then tried a very complex yet seemingly complete solution which caused me much confusion the more I worked on it. Then I tried a much simpler solution which worked, but couldn’t be stood-up in a test harness where and when I needed it. I made several implementations of my own to varying degrees of success (and several more degrees of failure).
I then ventured into the world of Node-based multiplayer game servers using the Colyseus framework. On paper it seemed pretty straightforward, as most technical documentation does, at least until you realize that tech writers tend to leave out the key parts that they assume everyone knows. Once again, I studied and mimicked some very well designed examples in an attempt to create the perfect execution right out of the box, figuring that since this example worked so well then there might be a pattern that I could follow buried in the thousands of lines of code spread across several different files. In the end, madness. I confused myself with my own implementation.
My problem is that I don’t think I’ve been this engaged with development in decades. I have Covid to thank, because I doubt I’d have A) had the time otherwise, or B) had the inclination to spend time in the evenings trying to make heads or tails of this stuff after having had to deal with work issues all day. I have often been unable to fall asleep at night because I am thinking about how to solve an issue, or have been angry that I have mentally solved a roadblock but am unable to get back to a project because of other obligations.
Just yesterday I watched a single video on developing with Colyseus (which actually was not the focus of the video, but only a minor part) and afterwards I had an epiphany that lead me to clean house in my server code. Today I remembered that the site useHooks.com had a code block that encapsulated Firebase authentication and authorization for use as a single line of code. Working through some minor issues with each, I feel that projects are in much better places now than they were before.
So this is the moral of the story. I have gotten excited about many projects in the past. Several times, in fact, and each time I return to them it seems that there’s greater clarity regarding what came before. When new roadblocks arise, putting the project aside seems to almost guarantee that when I eventually return, everything will have been made clear. Sometimes I think about how cool it would be go to back to school, because a lot of the things I might not have understood back then might make a lot more sense now with the benefit of hindsight, experience, and distance. This is no different. Progress is progress, and while I’m not getting any younger, a win is a win no matter how many setbacks it takes to get one.