INDIE TECH DISPATCH TEXT CASE NOW SHIPS 50+ FORMATS BUILT IN SWIFT, RUST & LUA SENIOR ENGINEER BY DAY, APP MAKER BY NIGHT HE WORKS IN BURSTS, NOT BALANCE NOW IN YOUR TERMINAL INDIE TECH DISPATCH TEXT CASE NOW SHIPS 50+ FORMATS BUILT IN SWIFT, RUST & LUA SENIOR ENGINEER BY DAY, APP MAKER BY NIGHT HE WORKS IN BURSTS, NOT BALANCE NOW IN YOUR TERMINAL
Indie App Maker / Hertfordshire, UK

Chris
Hannah

He builds small, sharp tools for people who care about the difference between Title Case and title case.

iOS DeveloperSenior EngineerWriterText CaseNeovim
Chris Hannah
50+
Text Case Formats
3
Apps Shipped
3
Blogs Run
2018
Text Case Launch
The Dispatch

A developer who works in bursts

Open Text Case on an iPhone and you can turn a sentence into kebab-case, strip its whitespace, or reverse it letter by letter. There are more than fifty of these transformations now, and most of them exist because somebody asked. That is the whole design philosophy: add the formats that seem to make sense, then add the ones strangers request, one or two every few months, for years.

Chris Hannah makes that app. By day he is a senior software engineer at WorldFirst, the cross-border payments company now under Ant Group, working backend systems for the World Card product. The day job stretches across iOS, Spring Boot REST APIs, React web apps and single sign-on platforms - a stack wide enough that "iOS developer" stopped describing it a while ago. The night work is narrower and more personal: a text utility, a screenshot tool, a command-line port, and a steady stream of writing about all of it.

He is careful about labels. Ask whether he is an indie developer and he hesitates. "I wouldn't class myself as one anymore, since most of my time is spent at my day job," he has said. The apps keep shipping anyway. The honesty is the point - he would rather undersell the title than oversell the hours.

"I tend to just do everything in bursts, whether it's having fun with a hobby like photography, working on an update to Text Case, or spending time with friends." - Chris Hannah, Indie Dev Monday

Bursts, not balance. It is an unusually frank way to describe how the work actually gets done, and it explains the shape of his output: long quiet stretches punctuated by a flurry of releases, a run of blog posts, a new tool that did not exist last month. He does not pretend the projects advance at a constant hum. They advance when the energy is there, and he has built a life that lets him chase it.

The route to here was not straight. After secondary school in Hertfordshire he did an IT apprenticeship, worked a handful of jobs, and only then went to university for a Computer Science degree. The education came in the reverse of the expected order - hands first, theory second. Before any of that, the hobbies stacked up and fell away: photography, blogging, a phase making Flash games. App development was simply the one that stuck, sparked by the arrival of the iPhone and, in his words, "the thought of exploring a new platform."

His first apps, released around 2014, he now describes as poor quality. He says this plainly, the way you might mention the weather. There is no rehabilitation arc attached, no claim that the bad apps secretly taught him everything. They were bad; he kept going; eventually he made Text Case. That is the story, and he tells it without varnish.

The Catalogue

Three tools, one obsession

The thread running through everything Chris Hannah makes is text - reshaping it, capturing it, moving it from one place to another without friction. Each tool is a different answer to the same small frustration.

iOS · iPadOS · macOS

Text Case

The flagship. A transformation utility that started with 7 formats in July 2018 and now carries more than 50. Lives in Shortcuts, the Share Sheet, and the macOS Services menu, so the formatting happens wherever you already are.

iOS · macOS

Text Shot

Grab a snippet of text from a website and turn it into a clean, shareable image. The kind of tool that exists because the maker wanted it on a Tuesday and could not find a good one.

Command Line · Neovim

Text Case CLI

He ripped the core out of Text Case, rebuilt it in Swift for the terminal, then wired it into Neovim with textcase.nvim. The app finally escaped Apple's GUI and landed where he actually writes.

An argument about title case

Most people think title case is one thing. Chris Hannah has written about the fact that it is several. There is the version that capitalises every word, the version that follows AP style, the version that follows Chicago, the version that quietly leaves the small words alone. Text Case handles the distinctions because its maker noticed them and refused to pretend they did not exist.

That is the texture of the whole catalogue. The formats are not flashy. Camel case, snake case, kebab case, slug, reversed, trimmed - the everyday plumbing of anyone who works with strings. The craft is in the seams: where the transformation shows up, how few taps it takes, whether it slots into a Shortcut without complaint. He built the app to disappear into the places you already work rather than demand you open it.

The growth model matches. He adds "formats that seemed to make sense," then folds in what users suggest, at a deliberate pace of roughly one or two every few months. There is no feature roadmap dressed up as strategy. There is a person paying attention to how other people actually use his tool, and adjusting.

Code he gives away

Plenty of what he makes is public. textcase-cli is the Swift core of the app, free to run from a terminal. textcase.nvim and blogutils.nvim are Lua plugins that pull his tooling into Neovim, the editor he writes in. pst is a small Rust program for pushing posts to Micro.blog without leaving the keyboard.

None of these are products in the commercial sense. They are the residue of a person solving his own problems in the open, then leaving the solution where others can find it. The through-line from the apps is obvious: friction appears, friction annoys him, friction gets automated away, and the result gets shared. He has said for years that developers should build in public, and the repositories are him keeping his own advice.

It also explains the three-language spread. Swift for Apple's platforms, Rust for fast command-line work, Lua for the editor. He is not loyal to a stack. He is loyal to the task, and reaches for whatever fits it.

"I can do what I want... so what do I actually want to do?"
"I wouldn't class myself as an indie developer anymore, since most of my time is spent at my day job."
"I tend to just do everything in bursts."

Hands first, theory second

2014
First apps released. He calls them poor quality and means it. The start of the experiment.
Early 2018
Begins building Text Case.
July 2018
Text Case launches with 7 transformation formats.
2018-2022
Joins WorldFirst as an iOS developer, then widens into backend and full-stack work.
2020-2021
Text Case crosses 50 formats with deep Shortcuts integration.
2023
Ships Text Shot.
2024
Releases Text Case CLI and Neovim plugins. Also builds pst, a Rust tool for publishing to Micro.blog.

He writes the way he ships

There are three sites. chrishannah.me is the main blog, where the technology and the half-formed ideas go. dev.chrishannah.me tracks the development projects. micro.chrishannah.me catches the smaller, faster thoughts. On top of all that sits a free monthly newsletter built around a single long-form piece on whatever idea has its hooks in him that month.

It is a lot of surface area for one person, and it reflects a belief he has held for years: developers should share their progress in public. The blogging is not marketing bolted onto the apps. It is the same instinct as the apps, pointed at words instead of code.

That instinct even shows up in his tooling. blogutils.nvim and a Rust CLI called pst exist so he can write and publish from inside his editor, no browser required. He automated his own publishing pipeline because the friction annoyed him - the exact logic that produced Text Case in the first place.

Text Case started with seven formats. It now has more than fifty. The roadmap was mostly just users asking nicely.
The Margins

Things that don't fit in a CV

01His Bluesky bio cheerfully admits he spends his spare time drinking "copious amounts of Guinness."
02He did his education backwards: IT apprenticeship first, Computer Science degree second.
03Before apps came Flash games, photography, and blogging. Apps were just the hobby that stuck.
04His side projects span three languages - Swift, Rust, and Lua - and several of them are Neovim plugins.
The Takeaway

The quiet case for small tools

There is a version of the software career that runs on scale - millions of users, funding rounds, a logo everyone recognises. Chris Hannah is running a different experiment. His apps are small on purpose. His blog audience is a real number, not a vanity one. The newsletter goes out when there is something worth saying.

What he is proving, quietly, is that you can hold down a demanding engineering job and still make things that are entirely your own, as long as you are honest about the rhythm. Bursts, not balance. A new format here, a CLI port there, a long blog post when the idea finally clicks. No grand plan, no pretending the side projects get more hours than they do.

The best evidence is the format count itself. Fifty-plus transformations, accumulated one or two at a time over years, mostly because people asked and he listened. It is not a sprint. It is the steady output of someone who genuinely enjoys the craft and keeps coming back to it. Catch him mid-stride and that is exactly what you see: a developer adding one more useful thing, then writing about it.