Introducing CatBrains
An independent studio for Apple platforms, and why we've finally started writing things down
We build small, sharp apps for people who care about how their tools feel. This is the blog where we say what we're shipping, why we shipped it, and what we noticed along the way.

Hi. We're CatBrains — a very small iOS studio that has, up until now, let our apps do all the talking. That's about to change, a little.
Why now
Making apps and writing about making apps are two different jobs, and for a long time we've only had hours for one of them. But there's a recurring frustration with the first job: the most interesting parts of building a tool — the trade-off we agonized over, the mode we tried and threw out, the tiny redesign nobody will notice — never make it into the App Store update note. They live in Slack threads and commit messages and then they're gone.
So, a blog. A slower place, with more room.
What CatBrains is
We're an independent studio focused on iOS. We like small teams, small apps, and the particular satisfaction of shipping something that does one thing well. We're less interested in platforms and ecosystems than we are in individual tools that feel good in the hand.
Everything we've released so far is something we use ourselves, most days. We're not just the studio — we're the first users, the daily drivers, and the first to be annoyed when something feels off.
- Catsle — Cashflow Insights & Expense Tracker.
- Workshot — Workout Data Overlay Editor.
- Exifmark — EXIF Metadata Overlay Editor.
- Stmpd — Workout Visualization Stamp Camera.
- ClockMode — A Distraction-Free Digital Clock.
More are in progress than we probably have time for. That's the tension of being a studio with too many ideas and not enough weekends.
What we believe
Every studio has its rules. Here are ours, roughly:
- Every tap is a promise. If we put a button somewhere, it has to earn its place on the screen.
- No dark patterns. Not even the clever ones. Not even the ones that "just work."
- The best feature is the one we had the courage not to add. Each app dies a little with every menu.
- If you have to think about us, we've lost. Good tools are transparent. You use them, you finish your thing, you forget them. That's the compliment.
- Ship modestly, often. We'd rather release something small on time than something ambitious never.
None of this is original. We just try to actually mean it.
What this blog is for
Two flavors of post are going to live here, and we've given each a home in the navigation:
- Release Notes — what shipped, why we shipped it, and what got left on the cutting-room floor. Changelog-adjacent, but with context.
- Reviews — what shows up when our apps meet daily life. Small bugs, small wins, an unexpected moment, a milestone worth marking. From the team, from our users, and from anyone who felt like sharing what they noticed.
Less marketing. More notebook. We'll post when we have something real to say, not on a cadence.
A snippet we actually ship
There are two engineers on staff. Ong writes the protocols. Mong writes the implementations. The arrangement works better than it has any right to.
//
// Release.swift
// CatBrains
//
// Designed by Ong.
// Implemented by Mong.
//
import Foundation
// MARK: - Contract (written by Ong)
protocol Reviewer {
func review(_ work: Work) async -> Verdict
}
enum Verdict {
case purr // ship it
case yawn // revise and resubmit
case knockedOffDesk // feature did not make the cut
case zzz // reviewer unreachable
}
// MARK: - Implementation (written by Mong)
struct Mong {
let ong: any Reviewer
func ship(_ release: Release) async -> Release {
var draft = prepare(release)
while case .yawn = await ong.review(draft) {
draft = revise(draft)
}
switch await ong.review(draft) {
case .purr: return draft
case .knockedOffDesk: return draft.dropRejectedFeatures(by: ong)
case .zzz: return await ship(release) // try when awake
case .yawn: fatalError("unreachable — handled above")
}
}
}Ong and Mong are not on the payroll. We've been told this is non-standard practice. We have not been persuaded to change it.
What's next
We're going to keep building. That part isn't changing. The apps you already use will keep getting updates, and there are at least two new ones in the pipeline that we're not quite ready to name yet.
If you've enjoyed any of our apps, or if you think they could be better, this is the time to stay close. Subscribe to the RSS, say hi on the contact page, or just check back when you have a minute.
We're small. We're going to stay small. But we plan to be doing this for a long time — and having people along for the ride makes the difference between a hobby and a studio.
Thanks for being here. Now let's get back to shipping.
— The CatBrains team