Jay Little - Software Obsessionist
The Rubber Hits the Road: Principles versus Pragmatism

07/21/2018 13:16:47

Late last year I reiterated some principles which I intended to keep in mind for the year of 2018. More than six months into the year, I thought it would be good to publicly reflect on how all of that has been going. If you'll recall, there were three principles. I'm going to go through each of them one by one and enumerate my progress and setbacks. If you haven't read it yet, you might want to take the time to read my original post "Notable Principles for 2018" before continuing.

  1. Games should be fun.

    Overall I would say that I've done pretty well trying to live this principle. However there has been at least one notable failure that I get to own. Earlier this year I played through the Shadow of the Colossus remaster on the PS4 Pro and by the time I beat the last boss, I was pretty enraged. That was easily one of the most frustrating boss battles I've ever had to stomach and I really did not enjoy it. I consider that to be a failure as I probably should have stopped playing instead of pushing through.

    Beyond that, I've been pretty good at trying to apply this principle. As I guessed, I've spent a huge amount of time playing Rogue-likes and despite the relative brutality of the genre, I have been enjoying myself. If I was to guess the reason why, I would guess that the idea the game is more about the journey than the destination really resonates with me. That having been said, while I'm primarily playing a lot of Rogue-likes, I'm still playing the occasional AAA game such as "No Mans Sky" and the like.

    There are other games that I simply stopped playing because I didn't find them to be fun. The most notable example is Final Fantasy V. I spent about 20 hours playing through parts of the game only to realize that I really wasn't enjoying it. To my credit I actually walked away. That's a pretty big step as I have generally found it to be very difficult to walk away from RPGs that I have sunk that much time into in the past.

  2. Code should enhance productivity.

    It is safe to say that this is the principle that I have taken most seriously. So much so that I changed jobs because of it. While I won't go into any specifics as doing so wouldn't be professional, I changed jobs because I felt that the code I was writing was not enhancing the productivity of the appropriate target audience.

    As of right now, I'm working on rewriting an application for my employer that I wrote ten years ago as an ASP.NET Core application. This app has a refreshed and streamlined user interface and it is also far more performant than the original version. So in addition to enhancing the productivity of the appropriate audience, I'm also geting a chance to really reevaluate technical decisions I made a decade ago. Most people in this field don't get that chance and I'm grateful to have it. Combining that experience with the opportunity to get a professional .NET Core application under my belt has been nothing short of amazing.

  3. Computing should be efficient.

    Out of all the principles, it's safe to say that this one is my favorite. That probably has something to do with the fact that it flies in the face of the so-called mainstream. We live in a world where people are building PCs with kilowatt power supplies and buying more than one power hungry GPU all for the purposes of gaming and mining crypto-currency among other things.

    In my original article I stated that my goal was to switch my personal server over to a cluster of Raspberry Pi units. Well that plan is proceeding on schedule but it has been adjusted accordingly. For starters, a Raspberry Pi embodies one too many compromises to be particularly useful to me. So after doing a lot of research I started buying and setting up units with the oDroid XU4Q SBC.

    Why? Basically between the flaky storage mechanism, low processing power, the low network bandwidth and the lack of USB3 ports, the Raspberry Pi boards just weren't going to cut it. The XU4Q unit solves all of those problems as they each have eMMC support, 8 powerful CPU cores, gigabit ethernet and two USB3 ports a piece. However they suck down between 3 watts and 5 watts of power a piece (roughly comparable to a Pi) which is a couple orders of magnitude better than the desktop they are replacing. That having been said, I've just finished implementing the second XU4Q unit out of a total of three (media, communications, file/print server) that I plan on using to replace my desktop/server and things are going great.

    The only downside of the XU4Q is that it has a 32 bit ARM processor and there is some debate in certain Linux distributions around how long such hardware should be supported. However both units currently have an LTS build of Ubuntu 18.04 Bionic Beaver (courtesy of Armbian) installed so I've got at least five years of supported updates ahead of me, so I should be fine. In terms of cost, this has also been far cheaper than building another desktop machine. Even with a high capacity eMMC addon, the oDroid hardware is priced pretty aggressively given all that you get as each unit sets me back around $150 all costs considered. Nevertheless, each oDroid unit costs double what an Raspberry Pi board costs so it costs more than I anticipated.

    I currently plan on finishing this project in October as I'll be purchasing the final oDroid unit as my birthday present for the year. After that I fully expect to decommission the current desktop/server and enjoy the power savings. Ironically it is still running alongside the two oDroids that I have so I'm actually using more power for the time being.

Overall I'm pretty pleased with my progress on living out these principles thus far. While I've had to adjust my approach a little bit, overall I feel like I've managed to embody the essence of what I was trying to accomplish here. Hopefully when I revisit this again at the end of the year, I'll have more good news to share with you.

[Top] [Rss] [Email]