Over six years ago I wrote a post on my old Blogger blog about what I believed the exact middle of the year was. When I had written it, I remember feeling that the computations that I did were faulty since there was just something odd about the numbers I was getting.
So today I wanted to take a quick detour from my normal software engineering posts and talk a little bit about a problem that I finally re-solved for my other hobby: photography. As many hobbyist photographers know, MagicLantern is an awesome open-source alternative firmware for many Canon cameras. I myself own a T3i/600D and have been using MagicLantern on it for a while now. I also own an old Eye-Fi GeoX2 card to make it easier for me to geotag and sync my pictures.
A few weeks ago I was given the opportunity to give a presentation to the dev team at work on Docker and how it could help us from a development perspective. It was a timely presentation as our team recently began transitioning from one version of our flagship product to another, where a lot of the underlying technologies have changed drastically. However, because we will still need to support the currently-released version of the product, it means that our developers would need to reset their development environments in order to diagnose customer issues frequently. The prospect of having to pivot our development environments presented a serious challenge for us, since setup for each environment is non-trivial.
Over the last few years, I’ve amassed a pretty large repository of knowledge of technologies, tools and techniques within my profession. A lot of people have often wondered how I came to know so much, but the truth is, it was actually really simple: mostly I follow and keep up on certain Twitter users, follow a few subreddits on Reddit, and keep an ear out for any mention of cool things in news articles. Obviously, it definitely helps to maintain a natural curiosity in all things related to technology, since inspiration for techniques and solutions can come from a variety of sources, but also trying to apply those techniques in imagined - but likely - scenarios. This point is important, as it helps you answer the questions “What situations is this technology/solution well-suited for?” or “Is this technology appropriate for this kind of problem?”
A few weeks ago, I revisited the thought of how I set up my blog and the rationale about why I chose to run it all from a VM on DigitalOcean running a couple Docker containers, one with Ghost and the other running Nginx. At the time, I wanted to have a powerful, yet flexible solution, and hosting my own site through Docker containers gave me the ability to easily set up and connect together various services. It also gave me the ability to have some “useful” reason for using Docker. For the past few months, this solution worked well and I was able to claim a victory for 100% uptime, though this victory was likely only given to me due to my low site traffic. And so, given all the flexibility & power I had, I asked myself whether I really needed such a complex setup for just a low-traffic, personal blog that I rarely have the time to update?