my baby nephew
my baby nephew, originally uploaded by tiki.robot.
Here’s my cutie pie nephew who was born last week and who I just met. Favorite activities include eating, napping, peeing, pooping, and sticking things in his mouth. Advanced skills include smiling and thumb-sucking! -may
Filed under: Uncategorized |
0 Comments
Happy Funny Caption….
I used the email gateway to upload the photo below but my email text didn’t end up on the blog :-( …. the smilely face is built out of my anti-depressants and I think that’s hilarious. I’m packing for Tokyo, leaving tomorrow AM, super super psyched!! :-)
Filed under: Uncategorized |
0 Comments
uDuino: low-cost Arduino
Tymm has developed a low-cost, breadboard-based Arduino. His Diecimila-compatible design separates the programming adapter (which you only need one of) from the Arduino board to keep costs down.
So after an initial investment of under $25, you can put together cores for breadboard-based Arduino prototypes for $8-10… the Diecimila auto-reset works… and you actually get 2 I/O pins out of the deal
Cool project, Tymm!

Filed under: code code, tronix |
0 Comments
Tagged: Arduino , avr , breadboard , Diecimila , Tymm , uDuino
Alice Waters at Red Hill Books
May, Jess, and I went to hear Alice Waters speak at Red Hill Books. It was packed! Here is the view from the very back:
Here is a strange thing with feathers, in a window display next door to Red Hill:

It was cold night! Even Zara needed a scarf!

Filed under: books, san francisco, zara |
0 Comments
Tagged: AliceWaters , bernal , RedHillBooks
How To Quickly Find the Size of an Image
To find the size of an image, I usually use ImageMagick’s identify command. Unfortuantely, identify is horribly slow, especially for JPEG 2000 images (thanks to a very slow libjasper).
So instead of using identify:
identify -format "%wx%h" image.jp2
Use exiftool instead:
exiftool -s -s -s -ImageSize image.jp2
exiftool is 62.5 times faster(!!!) than identify for finding image size on my dual 2.0Ghz Athlon.
Filed under: code code |
0 Comments
Tagged: commandline , exiftool , howto , identify , ImageMagick
Test: Posting via Email
If this shows up, this means we can now email our posts (and include photos) to the blog, thanks to flickr!
-may
Bluetooth HotSync your Palm with Linux
Here is a script, pilot-xfer-bt, that will HotSync your Palm over Bluetooth on Linux. I use a Treo 700p here, but this will probably work with other Palms with Bluetooth.
First, make sure your host computer and Palm are paired. Then make sure your copy of rfcomm is at least version 3.23 or later by running ‘rfcomm –help’. As of the writing of this post, very few machines are using this rev, since it is recent. If yours is older, either try updating your bluez-utils package, or download, compile, and install the latest bluez-utils source. All you need is the ‘rfcomm’ binary.
Then edit that pilot-xfer-bt script and make sure that its internal path to rfcomm points to the install directory. /usr/local/bin/rfcomm is probably what you want if you installed from source.
Anyway, to use: pilot-xfer-bt passes its args to pilot-xfer. So in other words, to sync your Palm to a repository located in /home/username/palm, run ’sudo ./pilot-xfer-bt -s /home/username/palm’.
Getting this thing working a few months ago was a bear. There was this nasty timing-dependent bug in rfcomm vs. udev. That took days to puzzle through. At least it’s been fixed upstream. Anyway, I now know why they call these tools “bluez”
Filed under: code code |
0 Comments
Tagged: bluetooth , hotsync , linux , palm , treo
Creative Commons launches new CC Zero License

May, Shag, and I went to the Creative Commons 5-Year Birthday Party and got to hear Lawrence Lessig announce a new CC License, CC Zero. Licensing a work under CC0 is similar to placing it in the Public Domain, but CC0 is meant to work better internationally. Did you know Germany (and maybe other EU countries) don’t allow authors to dedicate their own works into the public domain? I’m glad smart people are working on this problem!
The CC 5-Year party was cool, but the sound system was turned down so low that it was hard to hear Lessig and Gilberto Gil. Fortunately, DJ Spooky turned up the sound for his set, but that caused others to complain that they could no longer talk over the music.
Here’s the press release and wiki page for CC0 (where I got the CC0 image above). The tool to generate the CC0 machine-readable license should be available on Jan 15.
Lawrence Lessig’s blog has a list of the amazing number of announcements at the CC 5-Year party.
Filed under: archive, san francisco |
0 Comments
Tagged: CC0 , CCZero , CreativeCommons , lessig
How to put a Miele Dishwasher into Service Mode
Our newly-purchased Miele dishwasher was DOA. We had to call the service department, who sent out someone to repair it the same day. When we called, they had us put the dishwasher into service mode, which will tell you which error (”technical fault”) is causing your dishwasher to fail.
These instructions are for a G2140* model Miele Dishwasher
- turn off dishwasher
- hold start
- turn on dishwasher with start button still pressed
- release start button
- press start button 3 times, quickly, holding it in the last time, until the Start/Stop light flashes (no other lights should be flashing)
- Start/Stop should flash for four seconds
- press program button.
- This should cause the rinse LED to flash in a series of long and short blinks. Count the long blinks. Those are the tens digit of the fault. The short blink are the ones digit. For example, ours flashed one long blink and four short blinks, which meant we had a F14 fault.
- You’ll have to figure out what the faults mean. We only know that F14 means “Water intake fault with heater or circulation pump”, or something like that. Our circulation pump was clogged.
- Now, to delete the fault, press and hold the start/stop button for five seconds.
Filed under: support |
1 Comment
Tagged: debugging , dishwasher , howto , Miele , ServiceMode
Bluetooth Networking with Treo 700p and Linux
Perhaps you are the owner of a Treo phone (or really just any Bluetooth phone) and wish to use it as a Bluetooth “modem” with your Linux box with EVDO or EDGE or HSDPA or whatever.
Maybe you have spent hours trying to get the devices to connect, only to see a weird “Bluetooth connection starting…” message on your Treo, but nothing else happens. (Caused by connecting to the OBEX RFCOMM channel, not the DUN RFCOMM channel.)
Or maybe you have spent hours trying to figure out why your Treo complains “ERROR” “ERROR” “ERROR” to your Linux box when you send it an AT command. (Caused by connecting to the headset audio RFCOMM channel, not the DUN RFCOMM channel.)
Or maybe you haven’t yet wasted any moments of your rapidly dwindling life on this crap at all and Just Want Things To Work and Don’t Understand Why They Don’t.
If any of this sounds familar, maybe this script, start-bt-modem, may help.
You will need to save it to your local disk, and edit it to replace the “aa:bb:cc:dd:ee:ff” with your phone’s Bluetooth address. To find this, go to your Treo’s Bluetooth application, and change the “Visible” dropdown to “Temporary.” Then on your Linux box, run “hcitool -i hci0 scan” - your phone’s Bluetooth address should appear.
You also need to already have paired your phone with your computer before running the script. To do this, I suggest making your computer discoverable and doing the scan from your Treo, rather than the other way around. Probably the easiest way on your Linux box is to use the GUI tools for this. Look for a weird-looking B in a dark blue oval on your menu bar (aka panel). If it isn’t there, you can try running ‘bluetooth-applet’ from a terminal. (This is part of the bluez-gnome 0.8 package on my machine). Right-click on the panel Bluetooth icon, choose “Preferences”, select “Visible and connectable for other devices”, and click “Close.” Then you will need to go to the Bluetooth application on your Treo, click “Setup Devices”, click “Trusted Devices”, click “Add Device”, click on your computer’s name, and click “Okay”. You’ll go through the pairing process - your Treo will display a number - make sure you enter the same number on your Linux box when the dialog box pops up. Then you should be set.
Finally, you will need to run the script as root - for example, ’sudo sh ./start-bt-modem’. If all goes well, you should see some IP addresses appear after about 30 seconds.
I guess if you don’t use Verizon, you might also have to edit that “#777″ that appears at the bottom of the script.
Filed under: code code, gadgets |
0 Comments
Tagged: bluetooth , dun , linux , pppd , treo
Miele: Absolutely the best customer service I’ve ever had in my life.
We finally got a dishwasher! It took some time and work to get it installed, but fortunately we had a lot of help! A couple weeks ago Ken helped remove the old cabinet and Steve wired a new electric outlet. This weekend Paul helped do all the plumbing and install the new cabinet + dishwasher. But when we finally hooked everything up Sunday evening and tried to test it out, the dishwasher flashed a ‘technical fault’ error code. Blah!
Paul called Miele this morning at about 8:45. They did some tests over the phone and said they would have to send a technician out to look at it. After lunch, I got a call Miele saying that they could send someone by in and hour. At 2pm or so, a Miele technician named Glenn shows up, hooks up some debugging equipment, carefully pulls out the dishwasher, unclogs the circulation pump, puts it back together, and it works! Elapsed time from frustrated customer support call to happy customer: about 6 hours! Yay! I think I got lucky because someone had canceled their appointment so they fit me in right way, but still.. yay! So much better than dealing with AppleCare or Blue DoubleCross.
To top it off, Glenn explained a lot about how the Miele worked (I had no idea), and tweeked the software to increase the fill level and water temperature so we can run it on economy mode and still get super-clean dishes. This is like taking your computer to a Linux hacker who hooks you up with a custom distro to get more reliable network connections. Or like taking your car to a gearhead who reprograms the ECU to give you an extra 50HP. Our dishwasher now runs GlennOS. Awesome.
If you care, the clogged circulation pump (error code F14) was suspected to be caused by water drying in the the machine after testing at the factory in Germany. Apparently German water is very hard, and it hadn’t drained completely before shipping (it arrived at our house still full of water), so it left residue in the circ pump.
Here is Zara inspecting the dishwasher (the cabinet work is not done yet):

Here is Paul, who did a weekend’s worth of install work, and the inside of the dishwasher:

This dishwasher connects to the cold water supply, and heats the water depending on what the selected cycle requires. Connecting to the cold instead of hot water supply adds an extra 10-15 minutes to the roughly 2 hour normal cycle, but increases efficiency.
To add a second line to our cold water supply, we replaced the shut-off valve under the sink with a dual 1/2″ to 2 x 3/8″ shut-off valve made by BrassCraft:

If you have 1/2″ unthreaded copper pipe coming into your house, and you need to attach a 1/2″ threaded fitting, you need one of these 5/8″ compression to 1/2″ pipe thread unions. The 5/8″ fits over the unthreaded 1/2″ copper with a compression fitting, and then you can just screw the shut-off valve onto the other side of the union. The fine folk at Cole Hardware helped us find this elusive adapter, shown here covered in teflon tape.

We hope the dish robot likes its new home in our kitchen! Thanks to Ken, Steve, and Paul from helping get it installed, and thanks to Glenn for Miele for making it work!
Filed under: gadgets, support |
2 Comments
Tagged: dishwasher , how to install a dishwasher , howto , Miele , recommended , shag
How To Style a DIV to look like an iChat speech balloon using CSS
This technique works in standards compliant browsers, such as FireFox 3 and Safari 3. You can make it work in non-standards compliant browsers if you want to, but it requires some tweaking.
These instructions are simplified. When posting a chat transcript, you will want to have speech balloons originating from the left alternating with balloons alternating on the right. In this example, we will only discuss the case of the balloons originating from the right. We will generalize ‘CBmsgR’ and ‘CBmsgL’ as just ‘CBmsg’.
1. Start with a container div with its css display property set to ‘table’. We will set the css class of this div to be CBmsg.
2. Add two table-cells to the CBmsg div. The CBmsg will contain a CBtxt and a CBicon. This will create the following layout:
![]()
The CSS for this will look like this:
-
<style type=“text/css”>
-
-
div.CBmsg {
-
display: table;
-
margin-bottom: 0.5em;
-
float: right;
-
text-align: right;
-
}
-
-
div.CBtxt {
-
display: table-cell;
-
position: relative;
-
margin: 0px auto;
-
min-width: 8em;
-
max-width: 760px;
-
z-index: 1;
-
margin-left: 12px;
-
}
-
-
div.CBicon {
-
display: table-cell;
-
vertical-align: bottom;
-
padding-left: 10px;
-
}
-
</style>
And the HTML will look this this:
3. Add the user’s chat icon. It looks like this:

This is what the CSS looks like. The padding property is only necessary if your blog template sets padding for all images, like ours does.
-
div.CBicon> img {
-
padding: 0px;
-
width: 32px;
-
height: 32px;
-
}
And this is the HTML:
4. OK, now comes the complicated part. We use the Even More Rounded Corners technique to draw a bubble. We use a 800×1600 png that looks like an empty iChat bubble. Here is what it looks like:
![]()
We copy the ‘content’, ‘t’, and ‘b’ CSS classes from Even More Rounded Corners verbatim:
-
.CBtxt .CBcontent,
-
.CBtxt .CBt,
-
.CBtxt .CBb,
-
.CBtxt .CBb div {
-
background:transparent url(BubbleBlueR800×1600.png) no-repeat top right;
-
}
-
-
.CBtxt .CBcontent {
-
position:relative;
-
zoom:1;
-
_overflow-y:hidden;
-
padding:0px 12px 0px 0px;
-
}
-
-
.CBtxt .CBt {
-
/* top+left vertical slice */
-
position:absolute;
-
left:0px;
-
top:0px;
-
width:12px; /* top slice width */
-
margin-left:-12px;
-
height:100%;
-
_height:1600px; /* arbitrary long height, IE 6 */
-
background-position:top left;
-
}
-
-
.CBtxt .CBb {
-
/* bottom */
-
position:relative;
-
width:100%;
-
}
-
-
.CBtxt .CBb,
-
.CBtxt .CBb div {
-
height:10px; /* height of bottom cap/shade */
-
font-size:1px;
-
}
-
-
.CBtxt .CBb {
-
background-position:bottom right;
-
}
-
-
.CBtxt .CBb div {
-
position:relative;
-
width:12px; /* bottom corner width */
-
margin-left:-12px;
-
background-position:bottom left;
-
}
And the HTML now looks like this:
Filed under: code code |
2 Comments
Tagged: ChatBubble , css , html , iChat
Page-Turner Coffee
Peliom sends in this observation about Philz:
I got the “fire alarm” coffee from philz this AM
sooooo good!
certain coffees I call “page turners” becaues I take a sip and then I have to take another sip, and on and on
just like a book I can’t put down
CC by-nc Photo by Scott Beale/Laughing Squid
Filed under: all talk, no code |
0 Comments
Tagged: ChatBubble , coffee , Philz
WiiMe

They sent me 9 consecutive text messages this morning, alternating between “Wiis are in stock at Amazon! Grab one!” and “No Wiis available :-( they were up for 8 seconds.”
I’d pretty much given up until the 9th msg came through and I got one! yay! I can’t believe that it’s been a year already and it’s *STILL* so hard to get a Wii on Amazon. Yes, I know it’s possible to get one at a store if you live in Missouri (or just not in the Bay Area)…or if you wait in line at Best Buy at the crack of dawn, but I really didn’t want to do that (cause I’m lazy). I just wanted to get one online for the office and WiiMe came through!
Filed under: no code |
5 Comments
Tagged: amazon , twitter , wii
Announcing TikiChart!
I hacked up a front end to google charts api using jquery. You can play with it at TikiChart.com. It’s GPLed, so please help make it better!
Filed under: code code, science |
2 Comments
Tagged: GoogleCharts , GPL , javascript , jquery , opensource , TikiChart
Behind the scenes at the Internet Archive
When you are building a digital library to provide Universal Access to Human Knowledge, how to you hold all the data?
You start with a few racks of machines to hold the data using redundant storage:

The red boxes are built by Capricorn. Each one is a 1U half-depth low-power server that can hold four 1TB hard drives:

Add a bunch of homemade routers:

And some BigIron: (this thing pushed 6Gb/s today!)

For some reason, you need a 1980’s-era Connection Machine:

Finally, no Archive is complete without a world-class Linux kernel hacker:

Filed under: archive, photos, tronix |
0 Comments
Tagged: InternetArchive , shag
TransLink coming to Muni
In a bid to bring the Bay Area up-to-date with last century’s technology, Muni, Bart, and CalTrain will start accepting TransLink in the spring. The TransLink readers have already been installed on Muni lines for testing, and interestingly, they are installed on all doors, not just in the front. This should help loading times for crowded buses. Here is a pic of a TransLink reader in the back of the 9 San Bruno:

I’m glad I don’t have to commute on CalTrain anymore, but CalTrain riders will probably appreciate TransLink the most. CalTrain currently uses ancient technology to timestamp 10-ride tickets, similar to old-school time cards found in 1950’s office buildings. The timestamp machines are frequently broken, and the CalTrain conductors are assholes. Hopefully with TransLink, caltrain riders will never have to talk to a conductor again.
Filed under: bay area, san francisco, transportation |
2 Comments
Tagged: bart , CalTrain , muni , TransLink
All new feelings worth their salt eventually mess up your hair

That’s a line from this article of sage advice called How to Road Trip by Leslie Harpold. Leslie passed away last year in December and her site’s been taken down, but I’m glad bits and pieces of her writing still live elsewhere online.
Filed under: why are we here? |
0 Comments
Tagged: leslieharpold , roadtrip
Photos from Electroma
After we went to The Missing Peace opening party, we went to see Daft Punk’s Electroma at the Clay Theater. Nate, Mario, Shag, Richard, Sonya met us there, but somehow we missed Aryana.
The DJ set before the movie was awesome. All movies need DJs, robots, and lasers.
Filed under: beats, photos, san francisco |
0 Comments
Tagged: DaftPunk , Electroma , film
Photos from The Missing Peace
May, Peliom, Barbara, Sasha, Mang, Greta, Furry, Lisa, Mr. Foo, Dodger, Herve, Jess, and I went to opening party for The Missing Peace: Artists Consider the Dalai Lama at YBCA. Paba Phree and Catweasel worked on this 32-channel sound/video installation:
The installation was wonderful, but it was too loud to fully hear the soundscape. We’ll have to go back when it’s less crowded. The other pieces were great as well!
Here are a few more pics I took before a security guard came and told me there was absolutely no photography allowed at YBCA.
Filed under: photos, san francisco, tronix |
1 Comment
Tagged: Catweasel , DalaiLama , PabaPhree , soundart , TheMissingPeace , videoart , YBCA
The Liberation of Wikipedia
I love this video. Jimmy Wales announces at the iCommons party that Wikipedia will become licensed under a Creative Commons ShareAlike license. The crowd, who has not been paying attention until now, goes nuts. Lawrence Lessig gets on the mic and and announces the third greatest thing to ever happen in his life.
(via)
Filed under: inspiration, video |
0 Comments
Tagged: CreativeCommons , iCommons , JimmyWales , lessig , ShareAlike , wikipedia














