Obligatory I'm Back Post
So its been awhile.
I haven’t been working on my personal programming projects nearly as much as I would like. This is due in part to being extremely busy at my capital-J Job and in part to some fairly serious mental health and personal issues. The combination of those things made it really hard for me to want to code outside of work. Thankfully, I think I am coming out of the worst of things. I’ve mostly spending the last couple of months trying to take care of myself. You know, playing Dungeons and Dragons, catching up on games I’ve missed (Final Fantasy XV…hello), and discovering how amazing audiobooks are (extremely).
Lately I’ve slowly started to creep back into programming for fun. Very slowly and carefully. I don’t want to react to quickly and scare away whatever motivation I manage to attract. It started with finding a couple of interesting looking job listings that I wanted to make sure I applied to, so I wanted to put back up this blog (after rage deleting most of my digital life) so it could be a part of my application. And then I got an idea that I actually wanted to work on. Then I found some tech I wanted to play around with. So all these things combined to lead me here, writing a post about something that has me excited.
I follow some people on twitter who seem to care a lot about Containers and Kubernetes, so containerization has been on my radar for awhile. I’ve even tried containerizing an example app or two to see if I could get the hang of it, but it never really caught on. There were a lot of complicated and unfamiliar commands and terminology and it seemed like a lot of complexity for little benefit. I imagine this is mostly because I never really had a good reason to use Kubernetes (K8) or Docker as most of my projects at work are either Ruby on Rails, or that CRM software which shall not be named. But it kept striking my interest whenever I came across people talking about it.
I’ve also been having this problem. In the last six months I have started playing Dungeons & Dragons fairly regularly and while I primarily use paper Character sheets, I want to be able to also have them saved on a website or mobile app for easier reference and backup. The issue is the perfect solution for web-based character sheets doesn’t really exist. D&D Beyond is very slick and basically exactly what I want, but you have to buy all the rule books all over again to use them on the site. And I use Fight Club 5 on my phone, but that is neither cross-platform nor does it have a cloud sync. So I thought, oh wait you can program things, why don’t you just make this yourself? And so I am.
So I just needed to figure out how. I could have done it pretty quickly and easily with Rails, but I always like to use my personal projects to learn something new. I couldn’t really land on something that was exactly 1) something new and 2) suited itself to the needs of the project. I really only needed a web application framework that could connect to a database and also serve as an API for a possible mobile app.
I was thinking I could write it in Go, because I am still always looking for an excuse to use Go for anything, but I was also considering Rocket, a web framework written in Rust. I also thought I might want to finally figure out K8 for this project, I just needed a way to bring it all together.
Today it came to me, I’d write a Go backend service, and host it on Google’s Kubernetes Engine, write a front-end interface in React or Vue.js or something (I still haven’t decided that part) and put that in its own container. Then I could make a mobile app in React native or something and both the front-end and the mobile app can interface with that Go backend, which reads and writes to the database. Boom. Two or three birds with one stone.
I might go into this in more detail in another post, but I decided to do some experiments with Google Cloud Platform (like hosting this website and bringing my commonplace book back and hosted on GCP) and I found it very much to my liking. I followed some of the documentation and example projects and in a couple hours I had a hello world app up on GCP Kubernetes Engine. One Go web server all containerized and ready to start development. Give a nerd a door, and uninterrupted time, and they can figure out anything.
I will also try and write more. Maybe keep a better log of project progress. It might help keep me accountable. No promises though.