WardCunningham's blog

Diagnosis in a Complex World

After two years of service my outdoor air temperature sensor blinked out last week. Moisture was the culprit as shown here:

moisture leads to failure of ds18b20 sensor

Various readouts in my SensorServer system lead me straight to the problem through a half-dozen layers of software. How cool is that?

Honestly, I'm more interested in how we know and trust complex measurements than knowing the temperature outside.


ByteBeat in the Background

Bytebeats radically reduce the already austere chiptune music to one-line formulas. When wrapped with a dozen more characters of C code these formulas will feed your sound card endlessly. Musicians speak of discovering bytebeats, not composing them. I've used a bytebeat dubbed Crowd as the background score for a one-day film shot yesterday. Note that I include the entire discovery in the film's credits (disrespectfully broken into two lines.)

ByteBeat in the Credits

Kragen has written a good summary of the short history of bytebeat with links to catalogs, videos, analysis and especially interactive tools for exploring them.


Wikiduino Deployed

Sunday has been a hot day in Portland. I know for a fact that it is even hotter in the community garden shed where Russell and I installed Wikiduino today.

shed temperature


Remote Sensing with Federated Wiki

A good architectural test for any protocol is to squeeze it into an under powered computer like an Arduino. For this and a few more reasons I've latched on to a project to publish field data from the Nike Community Garden as part of my work on the "Smallest Federated Wiki" (project videos).

Russell Senior helped by rummaging together enough radio gear to provide WiFi. Here's his install on the roof of a friendly neighbor with the garden in the distance.

Russell Senior installs WiFi for Ward Cunningham's Smallest Wiki

Coding the server proved extra challenging due to limited literal text space. I solved that by including several custom DSL's, one for HTML and another for JSON. With them I can assemble full pages from short text fragments that are reused in numerous places (See code). Here is the loop that reports discovered one-wire thermometers:


Smallest Federated Wiki

A month or so I suggested what I thought would be a one-day project. I asked my colleagues at the Indie Web Camp to create the Smallest Federated Wiki. The idea was that wiki would be simpler if I kept my pages and you kept yours. Somehow we'd share pages through some sort of "refactoring" browser. Well, the prototype is working and showing well. I invite you to watch the 2-4 minute screencasts I've posted on my new Wiki Channel on vimeo. Here is the introduction.

story-and-journal-for-federation from Ward Cunningham on Vimeo.

Air Motion Detector

While neatening up my shop I got to thinking how nice it is to just measure something on a whim. Next thing you know I'm logging the temperature of my soldering iron. It's Currie controlled. But how fast and regular are it's cycles? I didn't know.

Initial Soldering Iron Temperature Measurement

Fifteen minutes later I'm looking at the waveforms in a spreadsheet chart that just happened to have three lines, one for each of the DS18B20s that I happened to have in the setup. Each response was noticeably different even with them that close together. I also saw large variations that might be due to air movements. Hmm. Let's improve the apparatus.

Directional Temperature Gradient Detector

Now this thing responds. I can blow gently on it and see a response within seconds. Gently fanning it with a file folder from a foot away works too. So then I leave the room to see what the air does while I'm gone.


Teensy Reports Build Failure

My colleagues tell the story of continuous integration at AboutUs with a post to their new developer blog. They describe the centrally located alarm that warns whenever unit-tests fail after pushing updates to the staging server.

Build Failure Warning Triggered Through Teensy

The Mac Mini polls the integration server. Should anything have gone wrong it alerts the whole company. Paul's serial demo offered the register manipulation commands needed to signal a solid-state relay that controls power to the flasher.


Photobot Takes and Shares Photos

As promised, I brought my tricked out robot to Monday's meeting with my digital SLR attached and a 365-degree scan of me looking through the viewfinder.

Scan of Ward Topps Photobot

I hooked a Teensy up through the camera's remote control jack. It's pull-to-ground signals are shared with the push-to-focus-shoot button on the camera. Here is the Txtzyme I included in the click.cgi script:

1b0o 500m 0b0o 1500m 0bi 1bi

This says, focus, wait 1/2 second, shoot, wait 1-1/2 seconds, then tri-state to let the control lines go. Here is a typical result:

Dorkbot Attendees Mug for Photobot

An instance of Apache runs on Photobot to offer anyone on the LAN a dozen similar control scripts and a directory full of photos taken through the evening.


Txtzyme Accepted for Open Source Bridge

The nice thing about blogging is that you can remember what you've done. I'm doing exactly that for my other friends at Portland's own open-source conference. Here's how I describe my talk:

Txtzyme Talk at Open Source Bridge

I'll be dragging some hardware to the conference for live demos. That got me thinking, what else could I throw together? So ...


Txtzyme Sparkles on LED Matrix

I'm traveling this week but I wanted to let my friends at Dorkbot know that I'm still blinking lights with Txtzyme.

Txtzyme Sparkles View this Movie on Vimeo

I use a subroutine, blink, to flash one LED for 50 microseconds. My perl program selects the row and column using random numbers. I sum a few random numbers to get an interesting distribution. I then use sine and cosine functions to move the distribution around the LED matrix. This traces out a Lissajous curve.


Syndicate content