Budgeting with irregular income: a system that doesn't assume a steady paycheck
Most budgeting advice assumes the same amount lands every month. Here's a system built for freelance, commission, or seasonal income that actually holds up.
No Accounts, No Passwords: Why My Apps Don't Have a Login Screen
Six apps, zero sign-up forms. Here's the actual reasoning behind skipping accounts entirely — what it costs, what it removes, and where the line is.
Encrypting a Room database in 2026: SQLCipher, the Keystore, and migrating without losing data
A practical guide to encrypting a Room/SQLite database at rest on Android with SQLCipher — key management via the Keystore, the one-time migration, and the real performance cost.
Backing up local-first data on Android in 2026: SAF export, Auto Backup, and a restore flow you can trust
How local-first Android apps back up user data without a server: SAF export/import, Auto Backup for App Data, and a restore that verifies before overwriting.
Biometric authentication on Android in 2026: BiometricPrompt, the Keystore, and locking a local-first app
A practical guide to androidx.biometric on Android — BiometricPrompt, CryptoObject-backed keys, device credential fallback, and the mistakes that let a fingerprint check protect nothing.
Health Connect on Android in 2026: reading and writing data without giving up local-first
A practical guide to Android's Health Connect API in 2026 — permissions, background reads, and why local-first apps should treat it as optional, not truth.
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.
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.
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.
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.
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.
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.