Whelp the first month of 2017 is over and it is time for me to look back on what I did well and what my lazy ass could improve on.
I am supposed to be exercising every day by doing a combination of cardio, weight training and core exercises. In addition to eating healthy the goal for 2017 is to get to 15% body fat. I did one of those things...
I managed to exercise every day but unfortunately I only did cardio. For some reason I just could not get over the mental block of starting weight training or yoga because I had absolutely no idea where to begin. This is not a valid excuse and is something I really need to change in February. I am going to make a goal of taking up yoga and doing at least 20 minutes of it twice a week in February. I am considering using something like YogaGlo but I think I will just try to start with a routine like this and maintain it for a week or two. My apartment does offer yoga classes so maybe once I have the foundations down, paying for scheduled classes will be an excellent motivator.
I also have continued eating like shit and as a result my body fat percentage has not changed at all. During the weekend of January 21st I decided to create a weekly dinner schedule for myself so that I would be less tempted to eat unhealthy. The current plan is spaghetti on Mondays. Chicken breasts and greens Tuesday through Friday. The weekends will be a bit unique in either my girlfriend and I will go out somewhere Saturday night and cook on Sunday or we will slow cook something like chili or stew to get us through the weekend. I hope this along with eating no carbs or sugars at work will help kickstart my weight loss.
Read a book
I read Abaddon's Gate and got a little over a third of the way through Cibola Burn, books 3 and 4 in The Expanse series. While this writing is by no means Tolkien in space I throughly enjoyed it. The plot can be quite tropey at times with characters that appear to be wearing plot armor but on the whole the sci-fi setting is really enthralling. Each book in the series always adds new point of view characters and, for the most part, they have all been engaging. I haven't had a character who would make me let out a groan when one of their chapters came up. If you are into science fiction and space travel you could do a lot worse than The Expanse books so I highly recommend you give them a read.
I will definitely finish Cibola Burn in February and I haven't yet decided if I will move onto the fifth book, Nemesis Games, or try something different like The Sparrow.
Play a video game
Since there are no games being released in January 2017 that I want to play I decided to look back at my Steam library for indie games that I haven't played and give them a shot.
The first tower defense game I have played in VR and it was fucking incredible. You stand like a giant or god above the battlefield and build towers while moving a single unit around to help engage the enemy. There are only five levels right now that will take you about an hour or two to beat but the concept of this game has me super excited. Tower Defense is one of my favourite video game genres (with Kingdom Rush being my favourite game) and seeing this made me realize how much potential strategy games with this god-like view have. I am super excited to see what levels come out next for Castle Must Be Mine as well as what other tower defense games come out for the HTC Vive.
A flipping amazing VR game that takes full advantage of the room scale controls of the HTC Vive. The music gets your blood pumping and the games are fast and simple enough that the second one ends you want to play another. The one problem I have found is that after you get to level 15, which took me about an hour, things started to get a little repetitive. That wouldn't be so much of an issue if the game was structured in a way such that you could try to break your high scores but because the game has a lot of random elements to it you sometimes feel that you drew the short straw and it would be easier to die and start again. This started to kill the replayability of it for me but Space Pirate Trainer is still a perfect game to showcase VR to anyone.
Played it for ten minutes and the controls for the HTC Vive made me so angry that I shut the game down in frustration. The developer really should not have added support for VR controllers and instead forced you to use a gamepad or the keyboard while staying seated. I have seen other people play Thumper outside of VR and they looked like they were having a blast. It is unfortunate that such a poor VR port was made. Maybe I'll go back and give this a second chance with an Xbox controller but there are a lot of other games to play.
I backed this game on Kickstarter because it was designed by Julian Gollop, the designer of my favourite game of all-time X-COM: UFO Defense. I was expecting a similarly engaging single player game but what I got was a multiplayer focused turn based strategy game with almost no tutorial.
I spent about two hours doing the so called "tutorials" and challenges. After I felt confident enough I dove into the single player mode and encountered screen after screen of things I had never seen before. The onboarding process for Chaos Reborn was just abysmal. I thought I understood the game after the tutorials but I was just inundated with new mechanic after new mechanic through massive blocks of text.
I didn't come away thinking that Chaos Reborn was a bad game per se. I just had no patience to read their tome to understand arcane game mechanics that, in my opinion, were poorly explained. I wasn't looking for some ludicrously deep multiplayer strategy game. I was hoping for a engaging single player game ala XCOM so it feels like I simply entered with the wrong expectations.
I also kickstarted Banner Saga back in the day but just never got around to playing it. Since I read that it was a 8-12 hour single player turn-based strategy game I figured it would fit me to a tee.
The story and art style were great and really drew me into the Viking inspired world. The writing got me attached to the characters and I probably played the game for 4+ hours straight when I beat it because I was so enthralled. The strategy layer of the game was solid. I loved the concept of having to choose between attacking an enemy's armor or strength. Do you damage their armor and set yourself up for more damage with following attacks while leaving yourself vulnerable or do small amounts of damage to their strength so they can't hurt you? It is a simple enough mechanic that makes it so you are very rarely on complete autopilot when playing because the best decision is not always clear. Each class also has abilities they can activate using a "willpower" resource which offered some spice but unfortunately the descriptions for some abilities are very poor so there was a lot of trial and error.
Unfortunately, traveling the overworld and the decisions you were presented with with got frustrating very fast. Some decisions felt completely pointless while others suddenly lead to the death of a character. I felt cheated on more than one occasion. I wasted a lot resources on supplies for my caravan because I thought that it was important but really I should have spent those resources on leveling my characters. There were a lot of little mechanics outside of the strategy layer that felt very half-baked which honestly is something that I expected from a first time developer.
The story and strategy gameplay were enough that I immediately wanted to continue on with Banner Saga 2. I haven't beaten it yet (probably 60% of the way through) but so far it feels more like an expansion to Banner Saga than a numbered sequel. Everything feels identical with the exception of the addition of a few new classes which does spice up the combat a little but not dramatically. The story is still solid though so I am very much looking forward to finishing it and kickstarting Banner Saga 3.
Become conversational in another language
Yeah I just plumb forgot about this. I'll use the excuse that I was busy with other things but I easily could have carved out a couple hours a week. Let's see if I can change things up in February.
Release an app
I also did not work on my app at all in January. I couldn't even start a blog post about it. I'm not sure what it is that is blocking me. I know I would use the shit out of this app if I had it but the daunting task of actually shipping it just keeps gnawing at the back of my brain.
Baby steps need to be taken so this month I am going to try to blog about what I think the foundational components needed for any mobile app are and try to open source a couple of those. Maybe that will kickstart the creative juices and get me engaged again.
Do not indulge in time killing activities
I failed horribly at this which probably didn't help learning a language or shipping an app. I have seriously considered blocking reddit.com on my router. I also put a considerable amount of Modern Family on in the background while working.
I am one month into 2017 and I basically fucked up every resolution except for play video games and read books. I guess things could be worse but I really need to take a step in the right direction in February. Eating right, yoga and a couple of blog posts about foundational components of mobile apps along with some source code are my goals for February 2016!
Every year since 2010 I've kept a text file on my computer of my list of resolutions for the year. Since I finally got my blog up and running this year I decided that I should start publicizing these resolutions.
Launch my blog
Exercise every day
I know this is cop out resolution but it is something I really need to do. As a programmer I am sitting on my ass in front of a computer for at least nine hours a day (usually much more). If I sleep for seven hours that leaves eight other hours of the day for myself. I should be able to find 30-60 minutes every day to move my lazy ass.
To end 2016 I was sticking mostly to cardio. If I was running outside I would use Strava to track my progress. Otherwise I would run on the treadmill in the gym in my building or use the elliptical if I wanted to give my knees a break. Another great cardio exercise was doing the stairs in my building. 30 minutes running up and down gets a nice sweat going and works your legs and core at the same time.
I'm sure I could continue this cardio for all of 2017 but I need to expand my horizons. Building some muscles and increasing my flexibility are my main goals. I plan to get back into bouldering at the various gyms around San Francisco as well as finally starting to life some weights. My friends Nick and Peter have pointed out some goodresources for learning how to life weights and see progress so we'll see how well I do.
I have also been told by my doctor after my yearly physical that my flexibility is far below average. I can barely reach towards the center of my back for example. He recommended taking up yoga to increase my flexibility and so that is what I am going to do. I've seen the effects that weekly or even daily yoga has had on some of my other programming friends and am very much looking forward to seeing if I can replicate their success.
15% body fat
While exercising every day should undoubtedly make me healthier and just generally feel better I want some empirical measurement of my success. So I've picked body fat percentage for that metric because I honestly don't care what I weigh. As long as I can look in the mirror, be happy with what I see and have below a certain percentage of body fat, I consider that a win. According to the American Council on Exercise an average man has between 18-24% body fat. While I am currently in that range (20%) I want to move down into the fit category which is between 14-17%.
Getting down to 15% body fat is mostly going to consist of fixing my diet. Eating healthy and decreasing the amount calories I intake will be key. I am not planning on going so far as to track every meal but if I don't see any progress in the first couple of months I may bust out MyFitnessPal again. Self discipline will undoubtedly by the biggest factor. Not ordering out from UberEats or Try Caviar and cooking healthy home cooked meals that are low in sugar and carbs and high in protein will be the big wins.
Become conversational in another language
After my vacation in Japan last year the wanderlust is at an all-time high. Currently the two places outside of Canada and America that I would like to live are Japan and Germany. If I am going to move to a country I should make the effort to become conversational in the language beforehand. I am not deceiving myself and realize that it will take years for me to be able to read/write in another language but I should be able to become conversational in under a year if I really apply myself.
For German I have been using Duolingo. It does a good job of combining speaking, reading and writing exercises so I am going to try to get to the highest level of it before looking into a similar service like italki but for German.
Play a new video game every month
It would be very easy for me to pick a single game and play it over a couple of months. While I am sure that some games I am going to play this year are going to take 50+ hours (I am looking at you Persona 5) I like to put this constraint on myself to ensure I expand my horizon. I want my game of the year list to have some variety and not just be the standard AAA games that the publishers shove down our throats. Every year hundreds of great indie games are released and I hope that this resolution helps me give a few of them some much deserved playtime.
Read at least one book every month
It is time to live up to my name and start reading books again. I read the first two books of The Expanse series last year so it is time to continue with Abaddon's Gate.
I have been working on side projects for the last five years and never launched a single one. I managed to get one project into the beta stage and even had TestFlight builds going out but when I realized how much work was needed to make it to a shippable v1.0 I lost all motivation.
This year it is going to change. The goal is to release my iOS app and all the open sourceable components that I will need for it. I also hope to write articles on my blog as I build out this app so I can share my thought process as I go along instead of trying to make it a retrospective.
Do not indulge in time killing activities
Reading Reddit, putting on TV or movies for background noise, randomly scrolling through Twitter of Facebook. These are activities that are basically the equivalent of empty calories and I need to do my best to remove them from my daily routine. It is just too easy after a long day at work to order some food and sit on my iPhone gobbling up tweets or Reddit posts and suddenly my evening is gone. From the time I finish cooking and eating dinner until bed I should have at best 4 hours of free time and it should be possible for me to fill each one of those hours attempting to fulfill one of the resolutions detailed above.
In this regard I have purchased a Hobonichi Techo journal to help better plan out my days. Every morning I will make a list of three to five things I want to complete by the end of the day so there is never a question about what I should spend my time with next.
It is time to hold myself accountable
Most people sit down at the end of December, come up with their list of resolutions, mention them once at the start of January and then don't look at them again until the following December when they realized they forgot half of them. To stop this from happening to me I am going to use this blog to post a summary of how every one of my months goes. Point out the things I have done well and made progress on and also highlight the things I failed to do. Hopefully this monthly introspection will allow me to make greater progress than I have ever made with any of my resolutions in the past.
I bet the first question I will get when I tell someone that I built my own blogging engine will be "Why did you waste your time doing that? There are dozens of blogging engines already out there." It seems apropos that one of my first articles should answer that question.
Why not? Is learning bad?
When I first thought of making my own blog I had one requirement in my mind that I knew I was not going to stray from. The blog had to be static. I did not want to have to worry about setting up a complex and/or expensive hosting solution for my blog. I knew that if I had static HTML files with minimal CSS I could serve up hundreds of thousands of page views from the most spartan of virtual private servers (VPS). I could also migrate between VPS with ease if I had to scale up for any reason.
With this requirement set in stone I set about looking at possible blogging engines I could use. Having first heard about static blogging engines from Marco Arment I took a look at his open source engine SecondCrack. After a bit more research Jekyll and Middleman jumped out as the go to open source blogging engines. After prodding around their documentation I realized that I had absolutely no idea how one of these blogging engines worked under the hood. Rather than spending hours reading documentation, deploying my blog and then finding a shortcoming that I would have to work around I decided to build everything from scratch so the only thing blocking myself could be me.
There seems to be a fear nowadays of building anything from scratch. To most programmers it is easier to stitch together random packages packages from RubyGems or npm and call it a day instead of trying to understand how they are implemented. While we are standing on the shoulders of giants for a number of things in computer science, most of the problems we encounter on a daily basis are not so complex that we can't build the solution ourselves.
I am not trying to make the defacto blogging engine for anyone. Hell I don't think anyone other than myself will ever use this engine and that is the point. When I started typing my first lines of Object-Oriented Turing in high school 17 years ago, I was not trying to build some amazing program to change people's lives. I literally had no idea what I was doing but enjoyed every second of trying to figure out why something worked. I had that exact same feeling again while trying to create this blog.
As an iOS developer I am very keen on Apple's Swift programming language. I use Swift on a daily basis for all of the iOS apps I build and love the idea of using Swift as a scripting language for my blogging engine. Because there is not as much open source Swift code as say Ruby, Python or Node.js it would also force me to learn even more because I wouldn't be able to fall back to any RubyGems if the going got tough.
While I did use Ruby to get this blog up and running as quickly as possible the engine has been built in a very modular way so that I can slowly replace pieces of it with Swift until I have migrated the entire engine over.
I am a huge video game fan. I have owned basically every console since the Nintendo 64 and I always wished I had written down what I had thought about all the games that I have played over the years. One of the main reasons I wanted my own blog was for that exact reason. I wanted to write detailed accounts for games as I was playing them so a decade from now I could go back and see if I really did think that game was the greatest of all time or if was simply rose-colored glasses.
If I built my own blogging engine that I could easily add metadata that would allow me to track about how I felt about these games and allow myself to review them empirically. With all that data I could create custom pages to show my favourite games of the year, my favourite genres, the greatest of all time. Who knows but the possibilities are endless and all because I have complete control of how the information is stored and consumed.
A journey of a thousand miles begins with a single step
While I am sure I could have gotten my blog operational in half the time with a ton more features if I used an existing blogging engine (I still don't have an RSS feed for example) I already have a dozen features planned out and couldn't be more excited about implementing them. I barely have an idea of the exact implementation details and honestly that is half the fun right there. It's not the destination I am focused on but the journey and I got a long and winding one ahead of me.
Hello and welcome to the first article of my blog.
After about a month of work I finally managed to get my homemade blogging engine into a shippable state. A ruby script consuming some Markdown files, converting them into HTML files and what you are reading is the result.
I hope to use this blog to give my thoughts on a number of topics such as software architecture, video game reviews, game mechanics, books I am reading, vacations I've taken, my exercise regime, whatever. I want this blog to be a way for me to look back and get into the mind of my past self. If someone else finds something I have written interesting then that is just a win-win.
I intend for my first articles to be about how/why I built this blog and my "New Year's resolutions", if you can call them that. I figure it will be a good way to get my feet wet on both the technical and not types of articles and really force myself to think about what do I want this blog to look like over the next year.
So if you have read this far you have my thanks and I hope that I am able to come up with lots more content that is worth reading.