Delaying the 0.4.0 Firmware for PETI

Last Updated: 2023-12-03 05:00:00 -0600

Our major project, PETI, was supposed to recieve a major firmware update “around christmastime” that was going to add in two new major features: the ability for the pet to sleep (including a battery-saving mode to shut off the screen after a while while it’s sleeping) and the ability for the pet to evolve from one form to another. I started creating that update two months ago, back around mid-october, hot on the heals of the 0.3.0 firmware update, and I’m bundling in a large number of bugfixes to go with it, such as issues that were silently introduced with the previous firmware updates that had to do with handling higher-address fonts and stuff like that. The release of 0.4.0 was going to be a major feather in my cap, done on time - it would have marked the first time since the start of the project I’d actually managed a quarterly feature update, and sleep and evolution were the last two major features that were considered part of the magic version 1.0 milestone set; everything else after this is window dressing, tweaks, and refinements, with the only major feature to release after this being the expansion header standards, which are a stretch goal onto the project anyway.

Unfortunately, I don’t really think that timeframe is achievable anymore, though there should still be a release in the next couple of months. Let’s walk you through why.

I Need More Rest Than Usual Lately

Earlier this year I talked about my experiences with mental health, specifically as it applied to my own need to occasionally kick back and relax. Shockingly, simply posting once about this on a blog didn’t remove this need, nor did it make it any easier for me to accept. I’m a productivity-oriented guy. My heroes growing up were always folks like Adam Savage or Grant Imahara, who could pull miracles out of the scrap bin seemingly overnight, seemingly inexhaustably. I hold myself up to that sort of always-on standard and then take really aggressive positions with myself when I fall short of that measure.

This is of course rediculous. I have a day job, on top of the lab, which has been weighing on me more than usual. I also have less support than usual in my day to day life lately, and the confluence of these two influences mean I’m basically tired all the time. In the evenings, when I’d normally settle into the lab with a nice cup of tea, lately the very last thing I want to do is anything that requires anything serious out of my brain in terms of computation. For the last three to four weeks I’ve barely touched the PETI firmware, in part because of the slog I’ve picked out for myself (see below). I’m hoping this changes soon, but to a real extent I’m forced to admit there’s only so much gass in the tank.

The Lab Itself Was Fundamentally Broken

From about late-october through until literally this afternoon, my relationship with both the physical lab space that is my half of my office and the paraphysical lab space that is the PETI development environment, and the computer it runs on, has been a poor one. Even with nobody to share it with, this office has to be really, really well organized not to feel claustrophobic, and to be honest I’m not sure it’s ever been that organized in the time I’ve called it my lab. Working on PETI doesn’t require an enormous physical space, but it just about pushes the boundary of what can comfortably be done at my desk, and that assumes the desk is otherwise clean.

Worse, limitless, the machine I do my lab work on, has been showing its age, which is a really sorry statement for a computer that’s not even four years old. The primary OS install has been becoming really flaky lately, causing everything from random performance losses during automated backup runs to a complete loss of my OBS profile data for seemingly no reason (seriously. I have no idea where it went. I had to restore it from a backup). Just last week I lost audio for three days until I finally worked out that a zero-byte configuration file was missing from one of the pulseaudio configuration directories.

While none of these things directly impede on PETI development, they exist in that space of “horrible bugbear problems” that make working on this unpleasant. This is meant to be a hobby for me. It certainly doesn’t bring a return.

Anyway, until I was able to nail down most of these infrastructural concerns and reorganize the shop this afternoon, it was just a little to painful to be in here for 12 hours a day when just eight would have done the trick.

There Are Yaks! OH, the Yaks!

Initially, 0.4.0’s development was going extremely well. In just a few short weeks I’d implemented the sleep functionality, the ability to sleep the display, a handfull of small display bugs, and even re-engineer the sharp-mlcd-capture helper utility that I use to capture live SPI “video” of the display for the livestreams.

Then I hit a small snag: while the evolution logic is really easy, the roster of available pet forms (I believe around 16, currently) is so small that making good use of the three-way-branching-evolution system really just wasn’t that easy or fun, without duplicating paths along the way (such as having two different ways to raise the Cthulhorse, for example). I wasn’t really that wild about that scale. That said, I was locked into that roster of pets, wasn’t I? The 16x16 font is basically full!

Several firmware versions ago, however, I foresaw this problem being an issue when it came to adding new minigames or foods, and implemented support for multiple fonts. I took a step back and drew up a total of 10 new pet forms I wanted to add to the lineup. Now all I have to do is draw them!

There’s just one problem: remaking an entire font on the fly in fontedit is painful. More painful than I remember it being. So I set that down, intent on getting to it another time, and just sort of… never returned to it.

It turns out, it was more painful than I remember it being! There’s currently a bug in fontedit that’s making whatever old method the original designer used to add support for drag-to-draw editing not work correctly! Hooray!

I thought that would have to be my own yak to shave, but it really isn’t. I’ve created an issue ticket against their repository, and while they have time to digest that I can run off and use what energy I have to nail down a few more infrastructure tasks. Lower friction means easier work for everyone, right?

Development Blackouts

Unlike a proper engineering firm, I don’t normally bother with blackout periods. I’m one person making changes to my own dang code, and if I want to push code to prod on Christmas Eve that breaks prod, that’s my prerogative and my own time to waste. However, given the time of year it is and that I’m going to have to travel a little more than I usually would this year (given that my partner is currently in another city for family reasons), I don’t anticipate making much more than casual headway on this or any other technical project until after Christmas.

That’s just how it is, and sooner or later I’m going to have to get okay with the idea that hobby work is still work, and that you still have to rest from all work sometimes, regardless of how fun the work may sometimes seem.

If you wanted to show your support financially for Arcana Labs projects like the Model II or PETI, but don’t need a virtual pet development kit, your best avenue is via my Github Sponsors account or by making a one-time donation to Arcana Labs via or through other avenues detailed here. Supporters also get access to a special patrons-only section of the Arcana Labs Discord Server as well, and new bonuses are soon to be introduced on the github side!


Using your Fediverse account, you can respond to this article's Mastodon Post. Embracing the spirit of decentralization inherent to the Fediverse, you can use your account on any compatible platform to post. Clicking the "load comments" button below will make your browser request all of the non-private comments and display them below.

This was built based on this reference implementation.