Life is starting to look a little calmer, and I thought I'd try a return to my weeknotes.

This week has involved lots of software (Symbolic. Folders, and Builds), a little bit of hardware (Little Luggable), and some retro operating system fun (Haiku). There are also a few honorable mentions.

Symbolic

I've spent the past couple of weeks trying to get Symbolic–my Apple developer-focused icon designer–ready for release. Things stagnated last year when I realized I couldn't legally sell the app through my UK company thanks to various US tax liabilities but, now I've finally got my US work authorization back again, I'd like to get it in the App Store.

After much thought, I've decided to make Symbolic subscription-based: $0.99 a month, or $9.99 a year (at least to start with). This will be the first app I've ever sold, so it's quite an adventure for me; asking for money really doesn't come naturally. My goals with this are three-fold:

  1. encourage me to take my own projects more seriously

    While I aspire to making a living from my own creations, it's all too easy for me to trivialize my projects. I'd like to test the theory that it'll be a lot easier to take them seriously if proves that people are willing to pay money for them.

  2. start to cover some of my infrastructure costs

    Building software is an expensive business, both in terms of software and hardware infrastructure costs. Mine are currently unsustainable, so something's got to give.

  3. learn what others want from my software

    I'd really like to get input on what people like (and don't like) about Symbolic and my other apps. I've got some ideas about where to take things, but ultimately I'd like that to be guided by my users, and my gut feeling is that I'll get a different quality of engagement from paying users.

Of course, part of my reticence in actually selling my software is the distinct possibility that no one's interested. I suspect Symbolic has a small target audience at best, but I'm hopeful I'll get a few users. If I don't, I've at least learned something. 🤞🏻

Having decided to go with a subscription-based approach, this week has been focused on integrating StoreKit and testing all the edge-cases1. I'm currently planning on only requiring a subscription for exports, which should mean users can get a really good sense of what they're getting into before subscribing.

Folders

Folders is an app I've been tinkering with for a few months now–it's one step in what feels like a long journey of experimentation around producing a better device-local experience for managing my files. With Folders, I'm inching ever closer to a Photos-like experience; one that's already working better for me for the many multimedia files I've collected over the years.

So far, my focus has been on building a live-updating file browser app that performs well regardless of the number of files I throw at it. That means SwiftUI is out for all but the most structural elements of the UI, and AppKit is in.

Last week my work was primarily around the correctness of those live updates–Folders uses FSEventStream under the hood to watch for changes, and turning those events back into high-level file operations is nuanced. My goal is that Folders responds to on-disk changes as quickly as Finder and, after quite a bit of work, I think I'm finally there:

It's been challenging to stay focused on the more fundamental aspects of Folders–now the app's taking shape, I'm starting to get excited about all the extra features I can add. I plan to take a little more time to sure up the foundations after which I'll start building some search indexes and really having fun!

Builds

Builds is a status board for GitHub Actions. Like Symbolic, it's an app I originally wrote to serve my own needs that has rapidly become a core part of my workflow, and is increasingly looking like something others might find useful. The premise is pretty simple–it shows tiles with the statuses of each of your GitHub Actions workflows.

There's clearly a lot of room for feature creep with Builds, but right now I'm focused on reporting current build statuses concisely, and offering a consistent experience across iOS, macOS and iPadOS. With that in mind, this week's work has been on CloudKit sync which gave me a nice excuse to try out SwiftData for the first time.

I've got grand plans to add some little desktop toys for reporting overall build status (maybe I can resurrect the integration cats), but I imagine it'll take a while before I can get to them.

Little Luggable

I finally managed to snag an 8GB Raspberry Pi 5 so I took a cursory look at updating the Little Luggable. The increased power demands of the Pi 5 make for a great excuse to rethink the battery situation–I'm planning to try out the Geekworm X1202 UPS HAT which I think I can squeeze into the Pelican Case with a little care, and which I hope will prove significantly more reliable than the PiJuice I've been using so far.

Sadly I've not yet managed to test the Pi with the Little Luggable's touchscreen as the display cable pitch has changed. I've got one on order so hopefully I can do that next week.

Inspired by progress updates on the MNT Pocket Reform, I've also been wondering about laser etching legends onto the Rama Works GRID keycaps–they look wonderfully minimal without legends, but aren't entirely practical.

Haiku

Spurred on by Action Retro's enthusiasm for all things Haiku, I revisited my goal of daily-driving Haiku on my ThinkPad T460. Things are, unfortunately, still a little shaky on actual hardware–I had to pick up a TP-Link USB WiFi adapter as the built-in Intel chipset didn't work–but it's getting there slowly and I managed to do research for the Little Luggable using just Haiku last night.

Haiku is a charming operating system and after many years of macOS it's a pleasure to play around with different windowing and architectural approaches, even if they do come out of the 90s.

Honorable Mentions

Since I've not written many updates lately, there are a few things that have slipped through the cracks:

  • Tom and I shipped a minor update to OpoLua that adds better game controller support and a few runtime fixes.
  • Overview is now available in the Mac App Store.
  • I've been making good progress getting InContext to compile on Linux–I managed to build my Markdown-only Recipes website under Fedora which feels like a great start.

  1. Renewals are my current nemesis.