Hello again internet. I decided not to wait the customary year to update this blog and decided to write this now. We’re more than halfway through the year and I’ve taken some time to take stock of where I am at professinally and where I’d like to go. I’ve even gone so far as to layout a roadmap of what I’m learning in my spare time.
What have I done so far
At the beginning of the year I mentioned how me and my team had started a project using Elixir. We were finally able to finish that project out and launch. It was a simple app that took some telemetry data we gathered from another application and simply displayed that information on a map. While we didn’t end up leveraging much of the Erlang ecosystem, we did manage to make some of the telemetry gathering process run farily smoothly utilizing some of the inherent async features of Elixir/Erlang.
The app currently runs in a single Docker container and is handling a fairly large amount of inbound webhooks that requires some decent processing. Being able to easily offload that into a background Task process was simply, and the best thing is we didn’t have to add any other dependencies.
I’ve overall been very pleased with the ecosystem as whole (and very pleased with my teams ability to deliver with it), but other teams at Spiceworks have struggled with some problems, but they seem to be working through them. I do feel that our cultural DNA of running standalone isloated applications has worked against us, as the I see the real power of Erlang/Elixir to be the ability to cluster your application nodes.
The code itself is relatively easy to understand but the syntax does lend itself to programmers falling into old “Ruby” habits and perhaps not solving something in a more functional manner. I’ve noticed a fair amount of if statements rather than relying on pattern matching. I will also say the Phoenix framework also lends itself into developers viewing it as more “Rails-y” than perhaps it is. I was pleased to see the release of Phoenix 1.3 start to diverge from some of those old MVC concepts. Unforuntately, after that project was released, I’ve had to go back to focusing on Rails and Ruby again. We might get the chance to integrate more Elixir in other parts of our stack, but for the time being, it’s back to Rails.
I’ll detail this a little further in another blog post, but I took it upon myself to start trying to learn Rust. After some quick CSV parsing scripts, I decided to dive a little further into the language by tackling ssloy’s tinyrender project but using Rust rather than C++. After getting halfway through, the concepts started to click and it rekindled my interest in game development again. I had learned a little of this using Cocos2d back in 2012 and while I was able to get some concepts in place, I wasn’t able to cohesively come up with a good game concept and wasn’t able to launch anything.
And this brings me to my goals…
Goals for the rest of the year
What’s my biggest goal? That’s a pretty easy one.
On May 11th of this year, my wife and I found out that we’re pregnant, and we would soon be a family of three. While I’ve traditionally kept this blog focused on my professional experiences, I can’t help mention where the majority of my effort is going to be focused on.
Outside of that, I’ve been reinvigorated by my learning on Rust and learning about the OpenGL rendering pipeline. I’ve decided that once I finish the tinyrender series, I’m going to dive into Unity and attempt to get an actual game out to public. Make no mistake, this will be a long arduous process, but I am beyond excited to get started. To that end, I intend to regularly blog about the concepts I learn, and how my learning is progressing.
So to recap:
- Be the best husband I can be for my pregnant wife
- Complete the tinyrender series in Rust
- Get started with game dev in Unity
- Blog about the above every week
That’s all I’ve got for now. Stay tuned for more!