Aller au contenu
  1. The Foundry/

Software

This page is the code side. The nine shipped apps each have their own page under Apps; what’s here is what they look like as a body of work — and how one person keeps 52 projects without losing track of them.

The nine on the App Store
#

Fig 1 · Icons of the nine shipped apps
Nine iOS app icons in a grid: Afterglow, Atomic Presence, AuditoryCompanion, English N+1, Gantt Planet, Kana Juku, Python Dimensions, Sown Echoes, StoneStory
Note: All nine ship multilingual, and all nine run their AI inference on device — no server, no account, no subscription.
AppIn one line
Gantt Planet3D habit tracking with an on-device AI confidant
Kana JukuKana learning, with a keyboard extension and handwriting recognition
English N+1Offline AI English tutor with automatic CEFR levelling
Python DimensionsThree-dimensional Python teaching with a bundled Python 3.13 runtime
Atomic PresenceDeepfake-resistant audio evidence: hash chain plus digital signature
AuditoryCompanionReal-time DSP noise synthesis plus 108 ambiences
Sown EchoesRecord your thinking as a digital legacy to train future AI
StoneStoryAI narrative engine: 120 chapters, three endings compared
AfterglowSwipe-to-sort photos; the ones you let go become an abandoned park

But shipped is only a ninth of it
#

CategoryCountContents
Shipped iOS apps9See above
Unshipped prototypes28AR games, an input method, on-device TTS, mahjong teaching, pixel art…
Sites / services6Including this website
Shared libraries5Cross-promo cards, shared fonts, an ad-integration template…
Developer tools4Screenshot generator, Xcode MCP, config sync…
Total52

Those 28 prototypes aren’t failures. They’re things with no reason to ship yet. A feasibility check on on-device Stable Diffusion, an NPU performance test for offline Whisper transcription, a Swift port of Qwen3-TTS — each one answers a question once it’s run, and the answer is worth more than a shipped app would have been.

Some of the method
#

1. Fifty-two projects need a catalogue, and the catalogue can’t be code. Each project has a YAML card in its own repository: what it’s called, which folder it lives in, whether it shipped, its version, its bundle ID, its marketing copy. The catalogue holds no source — only pointers. A validator checks that every path still resolves, that no slug is duplicated, and that nothing is orphaned.

Why bother? Because “what’s this app’s privacy policy URL” gets asked twenty times a year — during App Store review, while writing the website, while adding a link inside the app. The answer needs exactly one home, and everywhere else reads from it.

2. Cross-promotion is data, not code. The nine apps recommend each other. Not by hard-coding a list of the other eight into each app — that would mean editing nine projects every time one ships — but by fetching a JSON file from this website at launch. Adding an app is a JSON edit.

3. Shared things have to actually be extracted. Fonts, the SwiftUI cross-promo card, and the ad-integration template are separate packages. The test is simple: when the same code is about to be copy-pasted into a third project, that’s when it gets extracted. The second time you can live with. The third you can’t.

4. Store assets are generated, not made. Nine apps × six locales × several screenshots each — done by hand, that number kills you. Screenshot layout, copy, and device frames are a config file; one script emits the lot. That’s also why the 52 above doesn’t crush me: the genuinely manual portion has been squeezed very small.

What’s not here
#

  • The catalogue’s field design, and what the validator actually checks
  • The on-device AI track: choosing models, quantising them, and fitting them inside App Store size limits
  • Which of the 28 prototypes could actually ship, and why they haven’t
  • The 11-locale translation flow, and how translations are kept from silently rotting

This page is about turning “do the same thing nine times” into “do it once, run it nine times.” If your work has that kind of nine in it: commissions.