Archive for the 'Software' Category

Geek Beacon
Greg Abbas

One of the things that I learned during my time at the MIT Media Lab is that computers are more interesting if you make them interact with us in our world, instead of demanding that humans do things that are convenient for computers, like using mice and keyboards. That's what I like about the idea of so-called "eXtreme Feedback" (XF)... if your team is developing software and there's a metric that the team should pay attention to (like whether the build is broken, whether unit tests are passing, etc) then make a device that reports that metric in some way that's more "real" than a web page on a computer monitor. Instead of just sending out an automated email that says "the build is broken!", put a device in the real world that shows whether the build is currently in good shape or not. Such a device is called an "Extreme Feedback Device" (or "XFD" for short) and people have thought of some creative ones, including lava lamps, bears, and orbs.

200907292301.jpg

If the software your team is building is compiling correctly, then the green lava lamp turns on. If there's an error, then the red one turns on instead. I wanted to give an XFD to my team, but like so many engineers, I had the strong desire to build it myself instead of buying one off-the-shelf. I decided to try a more "steam punk" aesthetic, to see if I could give a device a less modern look. The result is the Geek Beacon.

IMG_0480.jpg

The base is made from an antique wooden coffee grinder, and the shade is a vintage ceiling light from a 1939 Sears & Roebuck catalog. But despite the old-fashioned appearance, it has a microcontroller with an embedded TCP/IP server that can make the lamp shine any color of the rainbow, including animations. If you look carefully at the photo, you'll see two cables coming out the back: one is for power, and the other one is ethernet. Here's what it looks like when it's turned on (showing blue):


IMG_0481.jpg

I'm not as good with hardware as I am with software, so a few years ago this would've been an extremely challenging project for me. But around the time I learned about XFDs, I also discovered the Arduino Project. Arduino is an "open-source electronics prototyping platform", which basically means they've already done the hard work developing a well-designed microcontroller that has excellent input/output support. You can combine several circuit boards together by stacking them on top of each other, so that's what I did and it was great fun. I started with an Arduino Diecimila that I got for my birthday (thanks Mom & Dad!), added an "Ethernet Shield" to handle the network interface, and finally a "Proto Shield" to hold the LED driver circuits that I wanted to build. Here's what the boards look like (ethernet on the left, LED driver in the middle, and Diecimila on the right):

IMG_0492.JPG

They fit together using the headers on the sides of each board. When stacked up, they fit inside the drawer in the coffee grinder.

IMG_0489.jpg

For output, on top I hooked up four "Super Flux" RGB LEDs:

IMG_0496.jpg

Getting all sixteen LED leads soldered just right was probably the most challenging part of the whole project, so if I had to do it over again I think I would probably use something that required a little less assembly, like maybe the BlinkM RGB Blaster.

For the enclosure (all the non-electronic stuff) I scoured several local antique shops trying to find stuff that struck the right chord. But I didn't find anything I loved, so I ended turning to the internet. Got the coffee grinder on Craigslist in Louisville Kentucky, and the lamp shade on Ebay. And then I needed a few bits of obscure lamp hardware that I bought from a company in Connecticut (through a series of tubes).

I can sketch the circuit if anyone's really interested, but it's pretty simple... just a transistor per LED to give the PWM output lines a little more kick.

Right now this gizmo is still in my home office, but stay tuned for part 2, "Geek Beacon goes to Apple!"


Screen Saver Function Key
Greg Abbas

I like to start the Mac OS X screen saver by typing a key on the keyboard, using a utility like One Key. I used to do that by just launching ScreenSaverEngine.app, but that seems to have an unpleasant side effect where sometimes two or more screen saver process will try to run at the same time. So instead, I followed seb2's advice and compiled a short program to use the ScreenSaver framework. It doesn't even have a UI, it just activates the screen saver and quits. If you use Leopard (which I recommend! :-) and want to start the screen saver using the keyboard, try this:

  1. Download and install One Key (or Logitech Control Center or some other utility that lets you assign applications to keys on your keyboard)
  2. Download my tiny application, SleepNow, and put it in your /Applications/Utilities folder.
  3. Configure one of your keys to run SleepNow.

Enjoy! SleepNow is free and released to the public domain, and (#include <std_disclaimer.h>) I assume no liability for its use.


Google-worthy Cartography
Greg Abbas

I'm glad that Google is in the world, and I imagine that most people would agree. Sure they're practically taking over the Internet, but so far they seem to mostly benevolent about it. Sure they have a few lapses in judgement like China and (more recently) Dell, but mostly they're good guys. I think of them as the BDFL's of the Internet... if they hired Guido they can't be all bad. :-) They set a very high bar for software quality, just like (if I may say so) my employer, Apple. They have an office here in Santa Monica just a few blocks from mine, so I feel a certain connection with them.

That's why I feel obliged to make a suggestion: I've noticed that on Google Maps, the little green arrow is often not quite accurate. It's usually on the right block, but it's often not on the right building... often three or four doors away from the right location. I think it'd make a good project for the "one day a week" that Google engineers are supposed to spend thinking about new, cool stuff. I mean, it's no MentalPlex, but I bet there's some way to analyze a set of data comparing where Google Maps thinks an address is to where it actually is (as manually indicated by human data entry), correlate the errors to some other variable(s), and construct an algorithm that could be used to correct whatever approximations are inherent in the geolocation data sets that they're using. I mean, how cool would that be, if you could type an address into Google Earth and it showed you where the front door was, with an error margin of 3 feet instead of 300 feet?

So that's my idea. I don't have any illusions that Google researchers haven't already thought about this problem, but maybe with a little gentle prodding they'll look at it from a fresh angle. Consider this post a friendly "open letter" to my esteemed neighbors. :-)


Hotel Gadget
Greg Abbas

Everyone knows that "content is king": that perhaps the most important thing a web site can do is provide fresh information that you didn't know before. But art isn't like that. Good art resonates with your forgotten experiences and awakens patterns inside you. That's what I like about Futurismo Zugakousaku's screen saver, "Hotel Gadget". It's a beautiful composition that has a way of finding long-lost neurons in the dusty corners of your mental attic and brushing the cob-webs off of them.