natevw proudly presents:

a glob of nerd­ish­ness

powered by work over time.

Flight tracking and realtime sharing with CouchDB

I've been avidly collecting a record of my whereabouts almost as long as I've been using a digital camera, and always on the lookout for more ways to collect this data. One fun way I've found when traveling by air, is to take advantage of the free flight tracking maps often found on in-flight WiFi portals. Even before you've activated full internet service, you can get access to a web map that shows your location/airspeed/ETA live — similar to the old monitors in the bulkhead, but on your own device.

I've written a couple scripts to politely poll this data and record it into my CouchDB instance. This works even if I don't buy WiFi, since the fetch request is always available and the store request goes to my laptop's local database server.

We can take things a step further, though, once fully connected to the Internet: continuously replicate the local database to a publicly-available one, then use its _changes feed directly to share a map of where I am with everyone — updating live.

Screenshot of live map showing me somewhere over Idaho

It's a simple matter of shuffling some JSON around to the right places. I'm using my Fermata library to poll from node.js and fetch in the browser, and Polymaps for a lightweight map display engine, and both the data and the web app are simply handled by CouchDB. The end result is that with hardly a dozen lines of custom code on either the frontend or the backend, we have a reasonably robust realtime personal location tracking system – built and deployed while still above the clouds!

comments

Extrovert day

Toby and I took the train to Portland last week.

Nate and Toby in front of Portland's Union Station, photo by Ward Cunningham

Just a day trip to catch up with some friends, but it was jam packed with both intentional and unexpected conversations.

Single pixels

Charlie Lloyd has been working to remove clouds from satellite imagery:

"Melded Arctic" by Charlie Lloyd source

A few lines of code, a simple algorithm that considers each pixel in isolation.

Beautiful results.

Nested interactions

Jason and Erik of He Can Jog were on tour, couldn't ignore my vintage computing carry-ons, and let me commit some patches on their synth:

Glitchy animation of analog synthesizer

A suitcase plugged into 110vac rocking up the Columbia River at 59mph.

Beautiful times.

slice

I had the privilege to interact with half a dozen other old/new friends — thanks Ward, Justin, Charlie, Jacob, Ben, Tim, Tuano, Erik and Jason! Toby got to drink hot chocolate and play in the park and eat awful microwaved lounge car pizza, and we both spent the next few days taking it all in.

comments

Arduino work and play

Had the privilege last month of adding LCD support to duino, a friendly library for controlling an Arduino from node.js — should be pretty easy to port to the node.js firmata library too. Thanks to &yet for sponsoring that development!

"Hello, Andy!" on LCD display connected to an Arduino connected to a laptop

The work came up while I was on holiday, so with some help from Sparkfun I got outfitted with a good little mobile setup. (Embroidered tablecloth sold separately.)

Now that I'm home, with a "real" Arduino left over, I'm hoping to continue prototyping a few useful projects. These should also help me explore some "Internet of Things" problems that have been bothering me for a while:

Since I'm mostly focusing on software (wiring together off-the-shelf components instead of designing custom circuits) the main trick seems to be getting the interface right. Which is the fun part!

comments

Metakaolin Mobile v1.0

It took more time away from client work than I had planned, but it did "ship" in time to enter Mozilla's Dev Derby.

Picture of an exhibition

Try the demo entry

Still waiting to see how the judges liked it and nervous that its unique editing interface was a big strike against it as a casual demo. Still needs some visual and touch size improvements to the vector editing. No feature sketch mode. Needs a better solution for caching the map tile set(s) separate from the app. Doesn't yet show your current location. CouchDB sync code commented out. Etc. Etc.

However, a number of features that weren't in the original early editing platform are now there: you can name each shape (or actually enter custom JSON), pick colors, choose from a handful of basemap options, delete unwanted documents, etc. And of course, the first pass at an offline mobile-friendlier interface.

comments

Numbers.app spreadsheet template for 2012 IRS Form 1040

This year I'm trying to get a head start on taxes, so I've already updated my traditional Numbers template. This is an unofficial, potentially incorrect, use-at-your-own-risk spreadsheet for unofficial, potentially incorrect etc. tax preparation number crunching. I use it so that I can gradually prepare my return as I collect all the correct numbers, as well as to get some quick estimates to answer questions as I prepare (e.g. is this deduction form worth the time it will take to fill out?).

Title/header of first spreadsheet page

This spreadsheet is only optimized for basic personal/sole proprietor/small business taxes, but within the basic 1040 form it's rigged up to automate just about as much as I could. It was fun many years ago to turn the form's IRS instruction tables/logic into its raw algorithmic form, and now it's fun to not need to sign up for some spammy scammy "file your taxes online for free(asterisk asterisk asterisk)" e-File thing. When I've got everything figured out in the spreadsheet, I then copy it to a the IRS's PDF forms and print on a stack of good old paper for mailing.

You can try it out by downloading my f1040-2012 Numbers template file — it should open as an "Untitled" doc you can save to a new spreadsheet. Would love to hear if you find it useful!

Update: posted a revision which adds a small Schedule A table, half of self-employment tax deduction, and slight update to the mileage rate.

comments


All posts

Subscribe