natevw proudly presents:

a glob of nerd­ish­ness

powered by work over time.

FAT in a fortnight

My GitHub account has been busy lately, thanks to not just one but two great open source–supporting clients!

Storage drivers for cutting-edge hardware

Top prize goes to Technical Machine, whose ambitious Tessel hardware platform is about to be released! Thanks to their sponsorship, the following modules have been published:

Tessel with SD Card module installed

The Tessel platform is a big deal, and has an incredible team behind it. Due to my early work porting node-nrf to their platform, I've gotten to watch their hardware, software, tools and documentation get steadily more refined. I'm not sure people realize just how much the Technical Machine team has accomplished in the last year. This isn't a cheaper Arduino, or a smaller Arduino, or an Arduino-with-some-extra-shield-built-in. It's not an Arduino at all, but I don't think it will suffer from being "too different" or too vendor tied either — it builds on, participates in, and contributes to the most interesting and valuable things people are doing with node.js. I'm grateful I could help out with a relatively small (seriously!) piece of their platform…

Mobile demos for cutting-edge storage

A hearty honorable mention to Couchbase as well! I had the privilege to make a cameo appearance at HTML5 DevConf — remotely, using a demo app I wrote for both iOS and Android! CouchTalk shows how you might enable "local islands of connectivity" that still share data with each other in near-realtime through a remote server. It was a treat to take their team's "push-to-talk web chat room" demo and run with it, updating the browser logic to work with Couchbase Lite and filling out the mobile interfaces to make the Sync Gateway features a bit more visible.

CouchTalk "mobile server" on an old iPhone

We kept the demo simple, but it's clear that Couchbase has solved a lot of the problems I'd been having with actually deploying related databases in an offline-friendly multiuser architecture. [That's quite another blog post…] I hope the demo inspires others to try out Sync Gateway and Couchbase Lite (née TouchDB) for their mobile apps — I know it's gotten me interested in that space again. It was not only a fun project, but I'm glad they found a way to get me to finally try out their storage stack in earnest ;-)

One more thing…

In the midst of all this, I also deployed a major update to the eReader/workbook webapp that's been going through classroom trials (closed source, but lovingly handcrafted with HTML5/D3/CouchDB/node.js etc.) and somehow managed to sneak in a last-minute trip to the Bay Area so as not to miss Edward Tufte, Bret Victor, Mike Bostock and Jonathan Corum all in the same room! It's been kind of frantic, and as a result I've been about a week later getting to each of the projects' "wrap up" stage than I had hoped to on my side.

Because meanwhile, my wife has been working on an even more significant deliverable, which I might add, is also running about a week behind schedule…

comments spreadsheet template for 2013 IRS Form 1040

Taxes…like a week from now.

You know the drill.

Boring screenshot of one part of the form or another

f1040-2013 Numbers template

DISCLAIM: such taxes. concern.

p.s. this is for the new/latest/something version of that broke all the stuff and things. meh?


CouchConf slides

By graciously patient reminder from the organizers, I'm posting my slides from CouchConf in Vancouver last year.

Screencap of presentation video

My talk was called Building Webapps with CouchDB [pdf] and was basically a wonderful privilege to show off some of the variously handy/silly/ambitious Couchapps I've built through the years. The video of my talk was posted in a much more timely fashion and already has an encouraging (or disturbing? ;-) number of views. There were a lot of great talks you can watch all the videos for; Joan Touzet had a great "FAQ"-style talk that should probably have a prominent place in the docs and Jason Johnson had a really fun talk about storage hardware, just to name two.

And, while I'm posting under this title, a few years ago I also gave a talk at two Couchbase "World Tour" events (in Portland and Seattle) called Scaling Geodata with MapReduce [pdf] which gives more details on how I pulled off some even crazier location handling stuff with LocLog than mentioned in my Vancouver talk. (I don't think videos were posted from that, though IIRC someone had a camera rolling…will update if I find out otherwise.)


Me on D3

"Brain on drugs" pun intended, perhaps. I like D3.

A lot.

And use it for juuuust about everything.

Video of my CascadiaJS presentation on building D3 webapps

In that vein, I gave a talk late last year on "Building apps with D3.js" at CascadiaJS 2013. Personally, I um can't uuuuuuh stand um uhh to watch um, myself uh talk. But I did have several people tell me the presentation was nonetheless encouraging/inspiring (thanks!) so I guess I should promote it a bit…. You can find the video here and I've also posted my slides (pdf).

CascadiaJS (and CouchConf the day before) was great, by the way. As I nervously suspected, I had to give my talk to an audience that included the very people who are busy making frameworks actually intended for building entire web apps. But once that was over I could sit back and enjoy a fantastic time with friends old and new.

Sample of book intro

You might remember that last year I also started writing a book on D3.js, but couldn't afford to finish it. Well, I recently got official notice from the publisher that they have voided the contract! So that work is now mine to do with as I please. Since I still don't have enough time to make a proper job of it, I'm simply sharing what I had started when I stopped.

Ironically [or perhaps unsurprisingly?] enough, I've recently been asked to do a technical review on someone else's D3.js book. It is indeed a lot easier to critique than to create!

Anyway, last year was a big year for D3.js adoption. It will be interesting to see what comes in 2014 out of Mike, et al's great little library.


Damage report

Lately I have fried:

Several nRF24L01+ modules

I've been getting the second iteration of my greenhouse electronics going as well as developing a mostly-finished pure-JavaScript nRF24L01+ driver library. In the process I've managed to downgrade the radio hardware on a few of these little transceiver breakouts:

nRF24L01+ in prototyping environment

It's hard to casually explain what I'm doing with these to family and friends, but the short of it is they're a fairly ideal and very affordable way to wirelessly connect a variety of tiny computers — Arduino, Teensy, Raspberry Pi, Tessel, etc.

My patience with CouchDB

Don't get me wrong, I still use it and love it but I am also getting more shy of always recommending it by default. It's not that CouchDB broken, it's just that it is incomplete in the areas that would truly set it apart.

It's not my only concern, but the biggest struggle has been with document-level read permissions. Turns out this is critical for anything resembling a "Couch App". Filtered replication simply isn't the solution. Cloudant has done some work in this regard, but given the functionality hasn't even made it to their public product's roadmap it seems unreasonable to plan for it in an Apache CouchDB release for a very long time.

In the meantime, I'm just slathering middleware over everything "database" in my production work, where I've had to salvage my original CouchDB-in-theory architectures. There's certainly still plenty Couch improves about these projects, but it can be frustrating to re-implement so much of what it should provide while still constrained by its remaining baggage.

My winter-incompatible tilapia

Cold weather and tropical fish don't mix well. Many of my tilapia are about harvest size but I'd been hoping to keep the full batch until I had conjured a second generation out of them. This plan was decimated as a two week long extra-cold snap left all but the three smallest fish comatose on the bottom of the tank. They may have pulled through, but with travel approaching I didn't want to chance it.

Ben with fish breakfast

The first to succumb got ate for breakfast with a visiting friend; the next four got stored in the freezer. With a second aquarium heater and a closer-to-average climate, the temperatures seem to be in a better range — up from 40–50ºF to the 60–70º range without having to wastefully heat the greenhouse air directly.

A winter-compatible rabbit watering system

We recently added some meat rabbits to our menagerie. Given the cold snap I was eager to install a freeze-proof automatic watering system before it was the neighbors' turn to take care of things.

Rabbits in hutch

Excited by a successful afternoon of assembly, and eager for the glue to cure, I plugged in the heat cable "for just a bit, to test it" — without any water in the system. An hour or two later I realized this was in progress in the hutch right next to our house…

Burnt bucket, molten pipe from rabbit watering system

Yeah that was dumb. Really, really, dangerously, dumb.

Some snails

A dozen of these were hurriedly harvested and snacked upon amidst the final holiday packing. Toby managed the butter sauce mostly by himself, but only Malachi was willing to try the end product with me.

Snails in the jar

I forgot to snag a picture of the actual snack. To be honest, not only were we eating in a hurry but I was also trying not to focus on their entrailish appearance…I hope to keep raising and sampling them, though, as they haven't required too much attention.

Brain cells?

Keeping up with so many outdoor-ish and unbillable-ish projects has been a bit of a challenge while also trying to share brief daylight hours with consulting/development work, but has been incredibly educational. When things "just work" it's only a little empowering. Doing things the wrong way (or the long way) can be tough to swallow, but with persistence feels rewarding in a more satisfying way.


All posts