Engine warning light on: what to do, and when to stop
What the engine warning light means, why a flashing light means stop, what to check first, how to read the code and why clearing it is not a repair.
Guides for drivers, and how OdoKeep is built: the decisions, the problems behind them and what I learned along the way.
What the engine warning light means, why a flashing light means stop, what to check first, how to read the code and why clearing it is not a repair.
What a useful car service history holds, which jobs matter most, whether to use paper, a spreadsheet or an app, and a routine that lasts.
How an MMKV-backed sync queue handles in-flight deletes, lost insert responses and stale edits in a React Native app using Supabase.
Parsing fuel receipts on the phone with Expo, Vision and ML Kit: ranked readings, arithmetic checks, explicit units and a draft the user reviews.
A shared geographic grid, static JSON on Cloudflare R2 and a cache that distinguishes missing data from an empty map.
A versioned JSON snapshot lets WidgetKit reuse TypeScript calculations, advance deadlines and respect the app’s privacy settings.
Detecting CSV conventions without silently changing dates, units or full-tank flags. A TypeScript importer with a review step before writing.
What changes on the iPhone Duo and how to handle it in React Native and Expo: the side rail, safe areas, the fold, split layouts, sheets and a test list for every pose.