OK so back when I started learning React, I was facing an up hill battle. Despite having done front end work for neigh on 25 years or so now (almost 30 if you count doing it when the Web was still in its infancy) I had never relied much on Javascript. Crazy, I know! I had spent most of my time behind the curtain dealing with the processing and, to a lesser extent, the data, so while I was often able to make front ends work, I had always made excuses for why my projects didn’t need all that flashy crap that Javascript has come to symbolize. But time and tide waits for no man, no matter how steadfast he remains in his obstinance, so in the past few years I frowned my way through Javascript For Dummies, then graduated to Node 101, and about 9 months or so ago found myself staring at the pearly gates of Advanced Javascript with React — advanced because React is basically flavors of Javascript.

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.

Scopique

Owner and author.

Leave a Reply

Your email address will not be published. Required fields are marked *