Broadening Horizons

Daniel Gallagher
2 min readJan 28, 2018

--

I am a professional software developer. My entire career thus far has been built on building “desktop” applications and services to support them. If I had to break it down by language, I’d say 90% C++, 5% C, 2% Scheme, a smattering of other languages (including build scripts), such as bash, awk, one decent-sized Go program, and makefiles, lots of makefiles. I wrote a Perl script once, when one of my bash scripts grew unwieldy. By OS, I’d say 85% POSIX (almost all of which was Linux), 15% Windows.

What’s missing here? Oh, yes! Mobile, web (front and back-end), and (going the other way) embedded. The backbones of modern technology.

So I’m embarking on a learning experience. I’ve decided to add to the panoply of ridiculous IoT devices by creating my own device and writing the entire stack of supporting services and user interfaces (mobile and web). I don’t expect to be done any time soon, and, if I’m being honest with myself, I don’t really expect to be done. Not because the problem is too large, but because I’ll have other things to do before this gets “done”.

With that in mind, I’ve chosen a toy problem domain, though it is a device that I would use. My $10 solution to a $1 problem is… a pair of thermometers. Specifically, a pair of thermometers that alert you when the temperature inside is warmer than the temperature outside (and the temperature outside is warm enough to be comfortable). In the summer in the Bay Area, days are hot, but nights are cool. My house doesn’t have central air conditioning, so it’s a nightly routine to run around turning off window units and opening windows to cool the house down. So it’s not a product I could make a business out of. You won’t hear about my startup netting $80 million in VC funding.

The purpose of this endeavor is not really even to make the device. It’s for me to expand my horizons, and document the effort, so that other relative newbies might find something useful. I am also going to pick the languages and tools specifically so that I am learning something new every step of the way (which, considering the solution space, shouldn’t be too much of a stretch).

--

--