Tuesday, November 13, 2007

One Laptop Per Photographer

Jon Trowbridge gave me a B4 OLPC XO the other day, and I'm absolutely loving it. It is so much faster than my old B2, and with the latest softare it is rocking. Harper and I were chatting and collaboratively editing a document from across Chicago with zero setup. There is a relatively new activity called Pippy that includes many Python scripts that are simple (hello world, etc), fun (random pitch/sound generator), and educational. Coupled with a Run button it is a simple interactive console. It doesn't have anything for using the XO's built in camera, so I dove in to figure out what I could do. I looked at the Record activity but found its gstreamer/picture taking code very tied to how it did stuff, dependent on Gtk, etc. So using it as an example I wrote a simple Camera class that returns the raw RGB buffer, and a PixbufCamera subclass that has the exact same interface but returns a Gdk.Pixbuf. With these two classes we can write awesome, Pippy-ish scripts, like a time-lapse photography program:
from pixbuf_camera import PixbufCamera

time_lapse = 60 * 60 * 4 # Take pictures over a 4 hour period
freq = 120 # Take them every 2 minutes
camera = PixbufCamera ()

for i in range(0, time_lapse/freq):
  pixbuf = camera.takePicture ()
  pixbuf.save ("series/test_%04i.jpg" % i, 'jpeg')
  time.sleep (freq)
Using this program on the XO I captured this outside my window today (and scp'd it to my computer): I'd like to add video support and expose a bunch of gstreamer properties so you could create a time-lapse Ogg Theora video instead of JPGs. Perhaps eventually this camera API could be used by the Record activity itself. I really need to buy some mirror fragments and build a clip-on device for XOs so you can photograph things in front of it (meaning you can film something and use the computer simultaneously).

Working on Banshee

Not long ago Novell offered me the opportunity to do my hobby full-time, an offer I couldn't refuse. I loved working with Ruby and Rails and my Chicago-based team for IBM, but making Free Software multimedia apps and making the success of the Free Desktop my professional goal as well as personal, not to mention working from home, made the decision to move on less difficult. Aaron and I are working on two branches of Banshee, the stable branch, from which we will have one more release, and trunk, where we are wreaking havoc (+28268/-32325 lines in the last few weeks) and reorganizing, refactoring, and rewriting Banshee. Not all the excitement these days is from the huge changes in trunk. Over the last couple weeks I've created a Last.fm radio plugin for Banshee that is now working quite well and will ship (disabled by default) in the next release.
Playing Last.fm radio in Banshee
With Banshee's mini-mode plugin on
Unfortunately it will only run on the latest from the stable branch, so either check that out or wait for the next release. Feel free to join us on #banshee on irc.gnome.org, our mailing list, or our forums. Update: Wanted to thanked Iain and the rest of the Last Exit team for inspiring me and giving me an example to work from.

Thursday, November 8, 2007

Funky Green Chicago

Erica and I went to the Funky Buddha Lounge tonight for a party in connection with Green Build, happening this week in Chicago. The place is indeed funky - especially because we arrived before the party started, the venue appeared abandoned, and it was sub 40F outside. Once the party began, however, the place came alive with great ambiance, music, organic beer, and people. I had a wonderful discussion about many topics including Free Software computer aided design with a partner at a leading green architecture firm. Need to look at Open Architecture Network and FOSS CAD efforts and see where we can take the idea. In related news, the book Erica helped author, produce, and finish, Sustainable Urbanism: Urban Design With Nature, is now out and selling well (already #48 in Urban Planning on Amazon).