After two years of service my outdoor air temperature sensor blinked out last week. Moisture was the culprit as shown here:
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.
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.)
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.
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.
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.
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:
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.
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.
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.
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.
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.
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.
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.
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:
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.
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:
I'll be dragging some hardware to the conference for live demos. That got me thinking, what else could I throw together? So ...
I'm traveling this week but I wanted to let my friends at Dorkbot know that I'm still blinking lights with Txtzyme.
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.