Tech Used and Learned

Truly a short year to review, given I really only started developing “for real” in late September. Though I think it still has been a great wealth of experience earned!

  • Linux: Just generally playing with a different distro like Arch.
  • Go: A great programming language to work with and just an absolute pleasure to use! I am endorsing this 100%.
  • Postgres: Its nuances compared to SQL Server isn’t too much different; it was easily adopted.
  • Neovim: An excellent text editor once intimate with using.
  • Hugo: Static site generator; just fun to use. Though I am aware it is more than capable of generating more than just a blog.
  • Markdown: Never thought I’d be using so much markdown, but even using associated tech like mermaid and LaTeX.
  • Radio: While not development related in itself, I have finally gotten my hands on my ham license. I am looking forward to developing some radio related software/embedded one of these days.
  • And many others I’m sure I missed…

Software Development Using Go

In the realm of software development, I have been extremely happy with learning Go in the past couple of months. Learning on the go (no pun intended) is certainly one way to do it. I must attribute the seemingly natural flow of the language to be not only easy to learn, but also incredibly productive. Maybe I’m just more comfortable with a procedural language? Given I had not had any experience building a backend (nearly) from scratch, I have still outdone my own expectations.

In these few short months the backend is nearly completed. I’m so excited about Go itself, as it has just given me great results! I’ve learned to implement a database, create handlers with the http library, as well as create and manage tokens for authentication and sessions using jwt. I know the work won’t end just here, as I already have some vision for how things will build out as time goes.

Challenges

Documentation and Examples Finding

The difficulties of learning some of the less popular tech stacks become quickly evident sometimes. Unlike something like Python, Go has nowhere nearly the same amount of documentation and number of user examples (such as on stackoverflow) that are easily found. Library documentation is also nowhere near as detailed as many Python libraries are. That said, it is my opinion there are huge advantages to be had by having a strong background or education in software development.

Thankfully AI has also been a reasonably helpful tool in generating answers to gaps left in published examples. My goal is to learn, as well as to produce an end product. It would be stupid to simply try to cut and past AI code examples. Therefore I would still rely on standard Google and package documentation to find the answers I need. In cases where there were lack of examples, the use of AI was an excellent tool to help bridge the gap. Especially when needing to interpret package documentation. AI code definitely is not perfect, so I just cannot trust it. Everything must be written by myself still in a traditional approach, where I need to actually understand what is running.

Project Planning, Organization, and Execution

My last challenge faced is how much planning was needed. I began my simply writing an outline and going from there. As the project progressed, I understood I needed more organization - And so the document began to rapidly grow. Perhaps this may be personal preference, but I like having a strong foundation on what I want to build, versus a deploy first and then fix whatever. Yes it is taking time to complete, but I know I will eventually end up with a project having a very maintainable code base.

I found myself going back over my work again and again to clean up, restructure, refactor, and so on. I attribute this to my lack of experience in this area. It definitely took more time than someone more experienced would require. I’ll get there though; as time goes on, I am finding myself more comfortable with how I want to structure my projects.

Into 2025

As I am near completing work on the backend, I am already looking forward to work on the user side of things. I am looking towards something like Svelte or NextJS. This is all very scary and exciting, as expectations have already been set that frontend work is going to be a large endeavour in itself. There’s still so very much to learn. I even have my Go book (https://www.manning.com/books/100-go-mistakes-and-how-to-avoid-them) that I would like to finish reading - maybe this holiday break I’ll get that chance!

See you in 2025!