// Writing
Notes from the journey
Thoughts on building calm, private software as a team of one.
RSS feed
Building OldSchool's adherence calendar: turning dose taps into a day you can trust
A monthly adherence calendar looks like a single colored dot per day. Here's the event model, the day-status rules, and the on-time math behind it, on-device.
Building Subly: the calendar math behind subscription renewal dates
Predicting a subscription's next charge date sounds trivial until you hit month-end billing, leap years, and trial conversions. Here's how Subly gets it right, on-device.
Building Mintly: keeping a focus timer accurate when Android kills the process
A running Pomodoro timer has a harder reliability problem than a one-shot reminder. Here's how Mintly survives Doze, process death, and screen-off drift with a foreground service and a wall-clock end time.
A hydration routine that doesn't rely on willpower
Most hydration advice boils down to 'drink more water' and hopes willpower fills the gap. Here's a routine built around cues and gentle nudges instead.
Building Granyn: a budget tracker with no bank login, in three tables
How Granyn tracks spending across currencies and catches recurring bills without linking a single bank account — the Room schema and the trade-offs behind it.
Android notification actions done right: marking a dose taken without opening the app
A practical guide to Android notification action buttons — PendingIntents, the trampoline restriction, goAsync(), and updating Room state safely.
The Pomodoro Technique that survives a bad day
The 25/5 timer is easy to start and easy to abandon. Here's a version of the Pomodoro Technique built around rituals, not streaks, so a rough day doesn't end the habit.
A budgeting system for people who've never stuck with one
Most budgets die in the first two weeks. A three-category system and a five-minute weekly check-in that survives a messy month, not just a perfect one.
Building Stocky: predicting what your kitchen runs out of — on the device
How Stocky turns a barcode scan and a bit of usage history into a shopping list that shows up before you run out — with all the math, and all the data, staying on your phone.
Building a medication routine you'll actually stick to
A practical guide to medication adherence — why people miss doses, how reminder timing actually works, and how to build a routine that survives a bad week.
The site now speaks seven languages
MFKAPPS is now available in English, Turkish, French, Spanish, Japanese, Hindi, and Russian. A short note on why a one-person studio bothered, and how it stays fast.
Privacy-first OCR on Android: how Subly reads bills without the cloud
A practical 2026 guide to on-device OCR on Android with ML Kit Text Recognition — the setup, the code, and the field extraction tricks that keep user data off your servers.
Building Hydrame: smart reminders without the nag
A reminder app lives or dies by its notifications. Here's how I designed Hydrame's to nudge you gently — and adapt to your day instead of fighting it.
Subscription overload: why I'm done linking my bank to apps
Subscription-tracker apps usually solve the problem by asking for your bank login. In 2026 there's a calmer way — on-device bill scanning, no Plaid, no aggregator.
Reliable Android reminders in 2026: WorkManager, exact alarms, and the new battery rules
How to ship reminders on Android in 2026 that actually fire — WorkManager vs AlarmManager, SCHEDULE_EXACT_ALARM, POST_NOTIFICATIONS, and the OEM quirks that still bite.
Local-first Android in 2026: SQLite, Room, and keeping user data on the device
A 2026 guide to building local-first Android apps with Room and SQLite — schema design, migrations, WAL, exports, and when (and when not) to add sync.
How I ship Android apps as a solo developer in 2026
An actual end-to-end launch playbook for shipping a Kotlin + Compose Android app alone in 2026 — scope, build, Play Store listing, and the boring bits that decide whether you ever launch.
The privacy advantage of local-first apps
The most private data is the data you never collect. Local-first isn't just an architecture choice — it's the simplest privacy policy there is.
Why I left to build calm tools
Most apps are designed to keep you hooked. I wanted to build the opposite — software that does its job and then gets out of your way.