Wearable Requirements

Most people who know me know I’m absolutely in love with wearable computing. I’m in love with it to the point of wanting to go to grad school to work with them after I get my Electrical Engineering degree.

It recently came to my attention that I may have nearly everything needed for a good step in the right direction.

The ideal wearable is modular, as the equipment available changes all the time. When I’m sitting down at a trusted computer with my wearable, I don’t want to rely on a tiny display or auditory output. I want to be able to interact with my data on the dual 19 inch LCDs.

I need to be able to

  • send and receive email
  • browse the web
  • instant messaging
  • make and view appointments and other calendar-based information
  • make and view a contacts list
  • write and read basic text documents


Now, there are a lot of reasons why it’d be good to have a head-mounted display that lets me see some computer output as well as the real world. However, there are a lot of reasons why that isn’t going to happen in the next year or two for me. I don’t have over a thousand dollars to spend on a display. This limits my options a large amount. I also don’t have the knowledge of optics required to homebrew a solution based on a cheaper display.

Gargoyles represent the embarrassing side of the Central Intelligence Corporation. Instead of using laptops, they wear their computers on their bodies, broken up into separate modules that hang on the waist, on the back, on the headset. They serve as human surveillance devices, recording everything that happens around them. Nothing looks stupider; these getups are the modern-day equivalent of the slide-rule scabbard or the calculator pouch on the belt, marking the user as belonging to a class that is at once above and far below human society.

Neal Stephenson, “Snow Crash”
If I want these functions to be accessible on the go, I need both on-the-go input and on-the-go output. On-the-go input will be acheived with a homebrew bluetooth septambic keyer. This will be detailed in the future. On-the-go output is usually acheived with a head-mounted display. Now, there are a lot of reasons why it’d be good to have a head-mounted display that lets me see some computer output as well as the real world. However, there are a lot of reasons why that isn’t going to personally happen in the next year or two. I don’t have over a thousand dollars to spend on a display. This limits my options a large amount. I also don’t have the knowledge of optics required to homebrew a solution based on a cheaper display. The only head-mounted display options left to me are ones that would condemn me to the path of the gargoyle, something I’d really love to avoid.
An on-the-go output method that is often ignored is audio. Bluetooth headsets are not a rare sight these days. I could certainly find a fairly cheap, non-gargoyle bluetooth headset, and this would provide me with an auditory output.
Is this really possible? Could I actually interact with my computer in a usuable fashion without a DISPLAY? It looks like I can.
Enter BLINUX, a project in active development increasing the usability of Linux to the blind user.

HOWTO: emulate a TI-89 in Linux using Wine

I was able to get a TI-89 on my desktop fairly painlessly using Wine. Years ago, I owned an 89, but it was destroyed in a tragic high school chemistry lab.

  1. First, I downloaded and installed wine 0.9.4.
  2. I then used WineTools vt0.9jo to properly setup my wine environment, installing all the Windows pieces that makes wine so much easier to work with.
  3. I downloaded Virtual TI from http://www.ticalc.org/archives/files/fileinfo/84/8442.html
  4. I extracted the vti.zip, and moved it inside my ~/.wine/drive_c/Program Files/ so it would be easier to find, and along with all my other Windows apps.
  5. I then found the rom backup from before the chemistry disaster, and moved it into the vti folder as well.
  6. I ran Virtual TI with wine ~/.wine/drive_c/Program Files/vti/Vti.exe and told it where to find the rom.

Virtual TI on Linux

Now, I can do my homework with the same hardware I’ll borrow from my roommate to use during the test!

Solderless Breadboard Carrier Followup

On October 21, my breadboard carrier project hit the front page of Hack A Day.

Later that night, it hit the front page of MAKE: Blog.

Roaming through my statistics, I can see that Don Marti probably clicked through. That’s kinda cool.

Someone clicked through from an email message at Yahoo Mail. The article was del.icio.us’ed and sent through a web translator. Someone checked my site through their cellphone, and 74 people were using FreeBSD.

Numberwise, about 4000 unique visitors showed up, and I received approximately 26,000 hits. That averages out to about six hits a visit, which is nicer than one. I used 173 megs of bandwidth.

Anyone have any suggestions for my next project?

Make a Solderless Breadboard Carrier


  1. A DIP40 chip, specifically, my PIC18F452 microcontroller, takes up too much space on a single breadboard.
  2. It can be easy to mix up power and ground.
  3. I hate prying large ICs out of breadboards.
  4. Most importantly, carrying around a raw breadboard with a project on it is a pain.

A “MEGA Multi Tackle Carrier Bait Box” can be used to carry a pair of solderless breadboards, spaced such that there is an airgap terminal strip spaced at .600 inches, the sizing for the larger DIPs, like the DIP40s. A binding post pair can be prewired to allow the use of banana plugs to power the board as well.


  1. 1 “MEGA Multi Tackle Carrier Bait Box” from Walmart
  2. img_1693

  3. 2 solderless breadboard bus strips and 2 solderless breadboard terminal strips
  4. I used Jameco P/N 20722 and Jameco P/N 20669. If you go this route, make sure the power bus strips are removable.

  5. Double banana binding posts
  6. img_1676
    I used something from Radio Shack, identical to Jameco P/N 125196

  7. Some 20 AWG wire, black and red
  8. A Dremel or other cutting tool
  9. Epoxy
  10. Optional: 40 pin ZIF socket
  11. I used Jameco P/N 104029. If you go this route, you will need a DIP40 socket for the ZIF as well.


The removable container inside of the MEGA Multi Tackle Carrier Bait Box has permanent horizontal dividers, and removable vertical dividers. The benefit of this is that I can store related components right with my breadboard. The downside is that a double-sized breadboard won’t fit with the fixed horizontal dividers.

This is easily solved with a Dremel.




After the Dremel job is finished, it looks like this:


At this point, I separated the power rails from the breadboard, put a power rail on one side of each of the two terminal strips, and separated the two breadboards using DIP40 sockets between the two breadboards. This spaces them correctly so the middle is a terminal strip for DIP40 spacing. The next picture may explain better. I then positioned them on the inside cover of the box, so that they would fit in the space I dremeled out. I made sure to account for the binding posts by giving the breadboard room on the top and bottom.

I pushed the ZIF socket into the DIP socket, and pushed that into the breadboard. After the sticky backing from the breadboard was removed, the breadboards were attached to the inside cover.

Open, it looks like this:


Closed, it looks like this:


It is obvious at this point it has a generous amount of room for prototyping while allowing the top to close.

The next step is attaching the binding posts to the inside cover. I did not want to drill through the cover. When the cover is removed, and it isn’t being used as a carrier, but instead a prototyping board, I wanted the plastic to lay flat. This meant I needed to modify the binding post piece.

I did this with a Dremel. Cut down two of the plastic holes so the nuts will end up flush with the bottom plastic piece. I only used one nut for each hole, and I only need to cut down one side.

The next picture shows how both holes should appear. The black holes should look like the left side, and the red holes should look like the right side. The right side was not modified, but the left side was.


The next step is to cut down both of the pegs so they will end up flush with the plastic.

Take plenty of precautions with your Dremel. Do not get metal shards in your eye, or anywhere where they will cause damage. I do not advocate cutting metal with your Dremel ever, especially late at night in the middle of a residence hall (read: dormitory).

This picture shows a comparison between an unmodified peg and a cut peg.

The next step is to etch the bottom of the black piece, so that it will adhere better after the epoxy. Then I assembled the binding post pair.


Mixing up some epoxy, I smeared some on the bottom of the binding post, and also the side. This allows the epoxy to both bind to the plastic on the bottom, as well as the plastic on the breadboard. The first time I attached it, I only put epoxy on the bottom, and after a few days, it snapped off.

At this point it looks like this:


I then attached appropriate colored wires to each bus line from the binding post pegs.

The end result looks like this:



Another benefit of the carrier is that it fits directly in the box with the rest of the electrical engineering stuff, being both transportable to lab, and also directly usable in my dorm.

An annotated set of these pictures is available as a Flickr set at http://flickr.com/photos/adamwolf/sets/1167654/.

Possible extensions to this project include power protection. A zener diode across the power terminals or a tantalum capacitor in series with the power could provide cheap protection against inverted polarity.

Send me your questions or comments!

Technical HOWTO and Image of Compaq IA-1 Digital Picture Frame

I made a digital picture frame out of a Compaq IA-1.

In order to make a digital picture frame with an IA-1 and Damn Small Linux, there is one major constraint. No matter how big your CF card is, there is only 64 megs of ram in the device. This means, if you put a complete image of Damn Small Linux, and add something small, like feh, weighing in at less than 500k IIRC, the device will crash on boot, complaining about lack of ram.

That makes this process about eleventeen times more complex, but still within the realm of possibity. Even easier if you have a guide, you know, something like this.

My first step was to make a feh extension for Damn Small Linux. This is unbelievably easy. I did this on my main workstation, booted into Damn Small Linux. First, I enabled apt through the fluxbox menu with Apps > Tools > Enable Apt. Then I started a root console and installed feh with apt-get install feh. I closed my root console, and opened a user console, and converted the feh debian package to a feh dsl package with /usr/bin/deb2dsl. I named the package feh.dsl, made the MyDSL menu name feh, and entered /usr/bin/feh as the location path. I then had a feh.dsl extension in my home directory. I copied it to a thumbdrive, and booted my IA-1 with it. As you know, this crashed on boot. I booted my computer with it. It loaded fine. This meant the error that meant “Out of RAM” really meant it.

So my next step was to lighten up Damn Small Linux, and make it Damn Smaller Linux. This means you have to enter the world of remastering. This has to be done on a computer with more ram than your IA-1.

Following the basic idea inside of ReMastering HOWTO for DSL, also newbies and other enthusiasts we burn a copy of Damn Small Linux on to CD, and reboot our computer.

Mount an open directory off your hard drive.
mount /mnt/hda3/

Make needed directories.

mkdir /mnt/hda3/home/wolf/dsl/source
mkdir /mnt/hda3/home/wolf/dsl/newcd
mkdir /mnt/hda3/home/wolf/dsl/newcd/KNOPPIX

Copy needed files to the remastering directories

cp -Rp /cdrom/boot /mnt/hda3/newcd
cp -Rp /cdrom/lost+found /mnt/hda3/newcd
cp -Rp /cdrom/index.html /mnt/hda3/newcd
cp -p /mnt/hda3/home/wolf/feh.dsl /mnt/hda3/newcd

Copy the sources to the right directory.

cp -Rp /KNOPPIX/* /mnt/hda3/home/wolf/dsl/source
cp -Rp /KNOPPIX/.bash_profile /mnt/hda3/home/wolf/dsl/source

At this point, remove firefox from /mnt/hda3/home/wolf/dsl/source/. This will free up over 17 megs of space. I did this with some nasty bash. I believe it was find /mnt/hda3/home/wolf/dsl/source | grep firefox and then judiciously removing the firefox directories and executable. To be pretty, you have to then remove the desktop link and menu entry.

Create the compressed image.

mkisofs -R /mnt/hda3/home/wolf/dsl/source | create_compressed_fs - 65536 > /mnt/hda3/home/wolf/dsl/newcd/KNOPPIX/KNOPPIX

Create the iso:

cd /mnt/hda3/home/wolf/dsl/
mkisofs -no-pad -l -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -hide-rr-moved -o mydsl.iso newcd

Compaq IA-1 Digital Picture Frame

Amanda’s birthday was July 27th, and she turned 19. I spent a lot of time thinking of a gift, and I finally decided on hacking one of my old gadgets into a digital picture frame.

This is the IA-1 before modding:


This is the IA-1 after the uberleet casemod:


These pictures both came from my Compaq IA-1 Digital Picture Frame set on Flickr.

Anyway, I took a Compaq IA-1, and attached a picture frame to the display. I didn’t remove any plastic, I just hunted hard and long for a decent sized picture frame that would snap on the existing plastic bezel. I found a matte that would cover up the plastic. Then I had to work on the software.

The IA-1 only has 64 megs of ram, and no hard drive. It has a 16 meg internal CF, and an external CF slot. I could conceivably smash a digital picture frame running linux and nfs and such into 16 megs. I know I could do it, but the time-effort tradeoff pushed me to find a spare 64 meg CF and put a slightly modified DamnSmallLinux distro on it. DSL is so unbelievably nice that I could have just put feh and unclutter on it as extensions, and then smashed them on the CF. However, when doing that, I ran out of ram on the device and it wouldn’t boot. So I remastered DSL without Firefox, and put feh on it natively.

Now it can show pictures, but I need to let it see pictures. So I took Amanda’s flash drive, and put a bunch of pictures of us, and also a blank cursor to erase the default X cursor, and set it to automount on boot. Then modifying the .xinitrc, I had it start feh at boot. The result?

Amanda plugs her thumbdrive in the IA-1’s back, and plugs it into the wall. The picture frame displays a picture of us every 5 seconds until you unplug it.

Yay! Functional, nerdy, me.

Pssst.  I wrote more on how I did this on the next post!