My name is Brad Root and I'm a software engineer, music aficionado, video game junkie, and occasional unicyclist.

In my spare time, I build open source software, and write about my experiences as a programmer here on this blog.

You can also find me on Twitter, GitHub, and LinkedIn.

What I'm Up To - Week 33, 2019

Hello! This is my weekly post where I talk about what I did over the past week. You might notice there's been a large gap between week 27 and week 33 without any WIUT posts. No, I didn't die in a fiery motorcycle crash, I just took a bit of a break from programming like I said I was going to, so I didn't end up with very much to write about.

Life Saver

I released Life Saver TV on the app store as a paid product on the App Store about five weeks ago now. All of nobody bought it in that time, except for myself and a close friend. So about two weeks ago I set it to free, just to see if it became a little more discoverable. Two people downloaded it in about two weeks. Okay, well, guess I'll have to do some promotion...

I posted it up on the AppleTV Reddit, and around 40 people ended up downloading it. Not one of them ended up rating it, but Apple doesn't make that particularly easy for users, and I can't "harass" them about rating it because the functionality for that doesn't exist in tvOS. All in all... this is probably expected for AppleTV apps. I can't honestly remember the last time I went "browsing" the App Store on the Apple TV. The consensus seems to be that people don't need or want AppleTV apps, which is too bad.

The app will go back to costing $2.99 in about a week, at which point I'm sure no one will ever download it ever again. I'll probably just make it permanently free at some point.

Procrastination? Failure to Launch?

I have several in-progress projects that I basically just won't finish. There's the new version of Numu Tracker, which has an entirely rebuilt API just kinda sitting around, spinning its wheels, sucking money out of my wallet. There's also Aeon Garden, my cross-platform abstract fish tank thing, which really just needs some save & load functionality grafted into it and it's nearly finished. But neither is inspiring me, blowing a little wind beneath my wings, so they sit semi-dormant.

To be fair, neither of these projects are going to directly make me any money, and it's not like I own anyone a goddamned thing, so it's pretty navel-gazey of me to beat myself up over my lack of a desire to complete them. I'll get there some day... maybe Aeon Garden, which has already been, oh jesus, two years in the making, will be done in another two years! And Numu? I'm sure it'll take the current API completely taking a fat shit and dying to get me to really finish it. (There's even a really nice looking redesign of this site that I'm just not working on... boo!)

And that's okay. I mean, what am I trying to prove? If I want to work at a leisurely pace and get distracted by my inspiration, so be it!

Gamebook Engine

So with that in mind, I started a new project. I've been wanting to create a Choose Your Own Adventure style game for a long time now; I think it's been kicking around in my head for years. I decided it would be cool if I first create an open source engine for creating and reading/playing gamebooks (as I've since learned they are called without trampling on CYOA trademarks) on iOS.

I'm sure that, like with many other projects, I think this is "a small project" and it'll eventually balloon to something so all-encompassing that it blots out the sun. But I think it's pretty simple, I mean, all you have to do is create "pages" and each page has "decisions" that point to another page, ad infinitum.

I am going to spice it up by adding one thing that I think should be a virtual requirement for any digital gamebooks: the ability to track and change arbitrary attributes and use those to determine which "choices" are available per page. For example, you could use this to track the quality of a relationship the player has with another character, or maybe you just have some sort of arcane system for judging a player's morality and that effects their available choices.

I also realized it would be good if the engine could analyze your game for you, to determine if you have any unresolved dead ends. This is probably the most complicated part of the project and will wait until all other functionality is in place, but we'll see. I figure if you've got conditional choices thrown into the mix, it'll get pretty complicated to keep track of everything that's going on and having a helper would be nice.

I can also see a vast and expanding scope for it, should it prove an interesting project that people like. For instance, if you can create gamebooks in the app, why not be able to share them with other people? Maybe a web-based backend where games can be uploaded and downloaded to play and rate...? I have a generalized hatred of the internet and especially other people on it, they really can't be trusted not to find the shortest path to being completely awful, so maybe not the best idea. But you never know!

I'm waiting until the project really starts to get off the ground before I make the repo public, so there's nothing to see here just yet.


I just recently passed 500 miles on my motorcycle, getting past the break-in period and taking it in for its first oil change. I've been commuting to work every day on it--which makes a short commute feel even shorter--and going on rides usually every Saturday and Sunday morning. At first my rides were around 40 miles each, now they've ballooned to about 80 miles. Still a far cry, in feeling, from some other people who say they were taking 150 mile rides every day. I don't think my butt could take that! Not without frequent breaks anyway.

Motorcycling is an amazing feeling. Yes, it's kind of scary, especially when you're riding in traffic and you have no idea what the idiots around you are going to do with their massive death machines... but it's not really that bad. I did have one official "close call" on my ride to work the other day, where a car turned left in front of me (and another car that was on my right). They saw the car on my right, slammed to a stop, and I had to "perform a quick stop" to keep from ramming right into their passenger rear door. They were mighty shocked, which is weird, because there was absolutely no reason they should have thought the intersection was clear. Either way, "no harm, no foul" right? ... right? What an asshole.

I'm lucky that I have miles upon miles of twisty mountain and canyon roads around me that are basically empty in the early and mid-morning hours, because that's where riding a motorcycle really turns into something vaguely relaxing, but also a ton of fun. I stick by what I said in another post about how motorcycling is so all-encompassing that it kind of crowds out your ability to think about other stuff. When I'm out there riding, all I can think about is what's directly around my sides and back, and what's out in front of me for the next several hundred feet. How I feel, the things that worry me or that I think I should be working on, all that stuff drops away... or at least it mostly drops away, giving me some respite from the horrors of the world.

Basically, when I'm on my bike, I forget that Donald Trump exists. What more could you ask for?

That's it for me this week. See you (maybe?) next week!