Blog
-
The Date That Lost Its Seconds
Same API, same field, two formats. The parser was right and the data was not, and only one of those can be fixed from the app.
-
Decrypting Fields You Did Not Ask For
Personal data started arriving encrypted, field by field. The cleanest place to handle it turned out to be inside the JSON parser.
-
The Optional Step That Blocked Login
Signing in fetched a push notification token first. When that fetch failed, nobody could get into the app at all.
-
The File That Was There a Minute Ago
A bug reporter kept failing to attach its screenshot. The file was written successfully — and gone by the time we needed it.
-
Half a Converter
Saving your profile silently wiped the fields that mattered most. The cause was a translator that only worked in one direction.
-
The Photo Picker That Kept Moving
Letting users attach a photo took four rewrites — not because the code was wrong, but because the ground it stood on kept shifting.
-
How Accurate Is Accurate Enough?
An attendance feature has to know where you are. Picking the number that decides "close enough" took three attempts and a lesson about who owns the rule.
-
The Language That Only Broke in Production
The language switcher worked on every device I tested, and broke for everyone who installed from the Play Store. The cause was not in the code.
-
When null Becomes the Word "null"
A Kotlin trap that surfaces while migrating an old Android app off Java — and why null-safety stops helping at the network boundary.