Life (June 2020)
June seems to have been a long month. Maybe it was the big decision I’ve been building up to (more on that next month). Maybe it was the change in lockdown restrictions which allowed more to actually happen. Maybe it was the wild variety of weather, from 32C heat to torrential rain and thunderstorms. I don’t know. But it’s been an excellent month in very many ways, and I’m feeling more happy and optimistic than I have since I returned to work from paternity leave. Life is good.
I love most aspects of lockdown. From the way I talk about the idyllic routine we have, you’d be forgiven for thinking I don’t care about restrictions being lifted. In most ways, I don’t. But this month we’ve finally been allowed to see people from another household in an outdoor space, and it’s been amazing to do that.
Actually hanging out with nearby friends in the park was great, but best of all was finally having the opportunity to see my parents and my sister-in-law’s family. Chatting to those people face-to-face is great, and seeing my daughter play with her cousin is awesome.
We were also able to enjoy more family activities. I took 9 days off at the end of the month and it felt like a really wonderful break.
We went to a Pick Your Own farm to pick strawberries and raspberries with our daughter. She absolutely loved eating strawberries straight from the plant, and the produce was delicious. We’ll definitely be doing it again.
We visited my parents at their house at the sea, and went to the beach for the first time in 9 months. The weather was glorious, we ate our first not-home-cooked meal in 3 months (vegan fish and chips).
We also hung out with our friend Sam in the local park, saw my sister-in-law’s family and played in the woods, went for several family walks, baked another batch of chocolate brownies (of which 80% went into the freezer), and I baked my best attempt yet at no-knead bread.
It was bliss.
Surprise, surprise: I still haven’t found a consistent time slot in my routine to work on my side business, Caster Level. But again I made a solid month of progress! In part this was due to my 9 day vacation, and in part it was down to a few too many late nights.
All of my effort this month went into Spell Tracker for Pathfinder 1e, again split fairly evenly between development and marketing.
Development was focussed on a few long-term bets which will eventually help me monetize the app more effectively. First I added better analytics and logging so I can understand how my users actually use the app, which app platforms they’re using, which features they actually tried, etc. Next, I added a web checkout so users of the newly launched browser version can upgrade to Pro directly without relying on Patreon. That effort was greatly reduced because I could reuse so much of my recent App Store integration and webhook code.
On the marketing side, I tried a mix of new and old channels. I sent out an email update to my list and picked up my first web checkout subscribers as a result. I invested in a batch of Facebook Ads. And I kept the existing Reddit and Apple Search ads running. Next month I plan to really focus on tweaking and optimizing those ads, experimenting more with tag lines and images to improve conversion, and pointing ads to the app landing page rather than direct to the app stores.
Revenue is pretty much unchanged since last month, which is disappointing. But I have laid the groundwork to improve conversion and retention rates in the coming months, and I’m now well placed to begin the push for a new cohort of users in the browser. I’m bullish for the future.
This month I learnt more about Docker.
For the Spell Tracker backend, I used a Dart framework called Aqueduct. One of my major frustrations with the framework (mostly down to the Dart language itself) is the very slow startup time and the large amount of RAM required to facilitate all the neat JIT optimizations once it’s running. Dart does offer AOT compilation, which reduces memory and startup time at the expense of peak performance, but for a very long time Aqueduct didn’t support it. It’s a real shame, because AOT compilation would be a good tradeoff for someone running too many processes on a small Linode instance.
This month Aqueduct finally got an AOT option after a ton of amazing work from Joe Conway. It’s still in beta, so the documentation is incomplete and I had to figure out how to build and run the servers in Docker myself. As a complete Docker newbie, it was a great opportunity to learn about multi-stage builds, write my own Dockerfile from scratch, try out base images like
alpine, learn which dynamically linked libraries Dart AOT binaries require, etc.
The end result: I reduced memory consumption on my servers by 65%, reduced average load a little, improved startup time from ~30s to <1s, and all it cost me was a little peak performance. My servers were never limited by CPU (except during JIT startup), so this is a great outcome for me.
Video calls were scheduled more days than not. We spoke with both of our parents via video call every week, and most weeks we also spent an evening chatting aimlessly with one group of friends or another. Plus we’re still playing a weekly session of 50 Fathoms with our long-standing tabletop RPG crew.
After my amazing run of Discworld books, I started Thud! by Terry Pratchett. I didn’t really get into it. I’m not sure if I burned out of Discworld or if this book is just past the peak.
On the non-fiction side, I started reading Atomic Habits. It really reinforces and explains a lot of tactics that have already been working well for me over the last five years. I’m hoping that I’ll also pick up more insights on breaking habits — I find it harder to break bad habits (like snacking or staying up late) than to implement good ones (like leaving my phone upstairs when it’s playtime).
In the world of gaming, my pals and I continued our New Game+ run on Torchlight 2 (TL2) and I bought and started Diablo 3 (D3) on the Switch. After so much TL2 in the last few months, here are my thoughts on D3:
- It’s a solid port with good controls, graphics and frame rate.
- The open fields between dungeons are less varied and interesting than TL2.
- The aesthetics are worse. The game is still good looking — it’s just less unique and charming than TL2.
- The constant stream of power ups, combos, etc. in D3 makes it feel more driven - you just want to move, kill, smash, and loot with way more intensity than TL2.
- Difficulty is very easy unless you ramp it up, just like TL2.
- The story actually makes sense and is okay, unlike the TL2 incomprehensible nonsense.
- It’s much easier to see which items are immediately better than those you have equipped, so you waste less time evaluating things.
- Rarer items aren’t always better than common, so you don’t just have to sell everything that isn’t rare or unique.
- The skill system is way better. You can experiment and try the whole skill tree as you unlock it without fear of being stuck with your suboptimal choices. This is just so much more fun.
- From memory, the crafting system is way better and the endgame content is way better.
- The season system is excellent — you can start a new character every season (a few months) with none of your stash but all the endgame stuff unlocked and get lots of bonuses and seasonal content. It keeps things always fresh.
Overall, D3 is better than TL2 (or will be when I finish unlocking everything). It just feels more satisfying and rewarding somehow, and that’s what ARPGs are all about. I’m glad to have it on the Switch!
No real change to report. I’m running 40km per week, my weight is stable at 74kg, I still don’t do strength or flexibility training, my eating habits are still suboptimal (but not enough to negatively impact my weight), and I’m still almost completely teetotal aside from maybe one drink per week.
My sleep took a bit of dive this month, with more late nights than is healthy. I struggle to balancing the enjoyment I get from having time to myself against the negative impact that lack of sleep has on my day-to-day happiness.
On the upside, I managed to prioritize a 10km run. It’s the first run longer than 6km I’ve had in over 3 months, which feels insane as someone who used to run at least one half marathon every week. I’m hoping to ramp back up to weekly 10kms and beyond next month.