I’ve spent the last few Saturdays coding a project that I thought would be small.
It started with a simple desire: make an Android app that would quietly and passively listen to location updates, log them, and occasionally send them back to my server for archival. I have a few uses for this, not the least of which is to be able to find my phone if lost or stolen.
The Android app, as always with Android apps, took more code than I was expecting. Scope crept, as it does, until I had a multithreaded daemon that booted with the phone, listened passively but could be instructed to get an active fix, logged to SQLite, fired off only as many server sync requests as necessary to ensure no ping went unreported for more than 15 minutes, but no more than one sync in that same window, etc, etc. Oh, and an optional debugging activity with Google Maps integration.
The following Saturday found me coding the API. I threw a few hours into Node, Restify, Sequelize, and even Passport before deciding that I really didn’t want to spin up a Node service for something so trivial. I rewrote it in PHP in an hour, mostly taken up trying to remember which array functions want the needle or the haystack first.
As of an hour ago, it’s done. My phone is a quiet and sneaky little snitch, while I also have a nice Web interface where I can look at a visual history of its whereabouts. And should I get flattened byby a car on a run or biking into work, my wife can pull up that same Web interface to find me. I consider this a win.
If I have one more free Saturday before NaNoWriMo this year, I think I will make screencasts for the whole thing. When you’re not fumbling around, I feel like the entire project wouldn’t even take an hour from start to finish with a minimum of skills.