RubyConf 2007

October 8th, 2007

So the big (to me) announcement: I’ve been invited to speak at RubyConf 2007 next month! My presentation is called “Controlling Electronics with Ruby”, and you can read the proposal here. It’s going to be fun; I’ll be bringing along some hardware to demonstrate with :)

Also, for my own benefit I put together a calendar of the RubyConf sessions. It’s available here, feel free to grab it. You can probably subscribe to it using iCal or whatever, and if there are changes in the agenda, I’ll update it. It should contain timezones for everything, but I might have missed one or two, so please let me know if it’s wacky for you.

That’s all. See you in Charlotte!

On behalf of the entire LAIKA Information Technology department, it is my great pleasure to announce the release of a number of projects developed by the Information Systems group:

  • Athenaeum — A “live” web view of the contents of a Delicious Library
  • Growl Notifier — A plugin for CruiseControl.rb that sends build notifications to one or more Growl daemons.
  • Linen — A framework for building command-line interfaces
  • TextMate Bundle — Some of us use TextMate. This bundle includes some helpful commands and snippets that we wrote.
  • ThingFish — A network-accessable datastore with extensible metadata
    Please note that the ThingFish release is alpha quality, and much has changed between the current download and trunk. Watch for a new release Real Soon™

These projects were all developed to fit needs within our organization, but designed to be useful outside LAIKA as well. They’re released under the BSD license, and are therefore free to use, in every sense of the word.

Where To Get It

The primary source for LAIKA Open Source software is opensource.laika.com. This is a Trac instance, and is the main point of contact for all LAIKA open source projects. Check here first. File bugs here. Read documentation here :)

Downloads will also be hosted at RubyForge, so any of our projects that are available as gems will be installable via the normal gem mechanism. You can view our project page at laika.rubyforge.org and download our files at here.

About LAIKA

LAIKA is an animation studio based in Portland, Oregon (USA). We are currently working on two feature films and a large number of commercial projects. More information is available at laika.com

About LAIKA IS

LAIKA’s Information Systems group is a team of programmers, database administrators, and tech writers inside the Information Technology department. We make the shiny tools that help the rest of LAIKA do their jobs more easily, ease the sharing of information between groups, and solve mission-critical problems (like picking a place to go to lunch).

We believe in open source software. Many of the tools we use in-house are open source, and we feel strongly that we should give back whenever possible.

LAIKA’s IS department is:

  • Ben Bleything
  • Jeff Davis
  • Michael Granger
  • Steven J. Hall
  • Jeremiah Jordan
  • Myra Lavenue
  • Mahlon E. Smith
  • Anthony Roberts
  • Kim Wallmark

How to Contact Us

If you’ve got problems with the code, please file appropriate bugs in our Trac instance. If you’ve got general questions or comments, please email opensource AT laika, dot com.

Astute readers will recall that during RubyConf last year, I posted about a little irb hack I’d written that allowed for shell-style history viewing and replay. There was a problem with it, however… replayed lines that made assignments didn’t work. So if you tried to replay

1
2
3
4
>> b = 5
=> 5
>> b + 10
=> 15

... you’d get …

NameError: undefined local variable or method `b' for main:Object
        from (irb):1

... which sucks. This has now been fixed! Witness:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
>> b = 5
=> 5
>> b + 10
=> 15
>>  exit

superx ~...personal/toys/irbhistory > irb
>> h
[0937] b = 5
[0938] b + 10
[0939] h
=> nil
>> h! 937,938
=> 15

So that’s pretty cool, yeah? You can get the updated code here. It’s also in subversion, here.

Thanks to Giles Bowkett for pointing out a mis-feature that resulted in all evals returning nil, when you’d probably want them to return in the usual way. This is fixed now :)

Once again, PDX.rb will be hosting an evening of wide-ranging talks about Ruby. This year the focus is on people doing strange things with Ruby. Strange, of course, is anything that’s just a little bit outside the usual. If you’ve created a new Ruby-based interface for hacking on your brand-new internet-enabled phone (rPhone anyone?) or composed your latest bit of metaprogramming magic, we’d love to hear about it.

We’ll be keeping the event open-ended and freeform. We’ll use the lightning-talk-inspired approach and give each presenter the opportunity to cram whatever they can into 10 minutes. Make it interesting and you might even get an extra minute or two. We’ve already selected 7 speakers, but there will be a few slots left open until the actual event.

Our speakers are:

  • Greg Borenstein — programming Arduino boards with Ruby
  • Lennon Day-Reynolds — Speaker’s Discretion
  • Giles Bowkett — Creating programmatic MIDI music with Ruby
  • John Lam — Running Ruby on the CLR
  • Ola Bini — JRuby!
  • Ian Dees — Radical Test Portability
  • Luke Kanies — Using Racc to write a real Domain Specific Language
  • You
  • ... or possibly… YOU

This is all taking place Tuesday, July 24th (hey, that’s today!) at 7:30 pm. The location is Holocene (map), here in beautiful Portland, Oregon.

There will be plenty of Ruby fun going on and lots of socializing with fellow Rubyists. Last year, FOSCON II was overflowing. We’ve found a new venue to fit you all in, so why miss it? Oh yeah, did I mention the free pizza?

Fun with Greasemonkey

July 18th, 2007

For the past few months, I’ve been learning Javascript. One of the fun things about learning Javascript is when you get to start playing with Greasemonkey. If you’re not familiar, Greasemonkey is a Firefox extension that allows you to write Javascript that executes inside the context of a page once it’s been loaded… effectively allowing you to manipulate pages before you see them. If you’ve never played with Greasemonkey, I highly recommend it. It’s great fun!

The real purpose of this post, though, is to share with you a couple of userscripts I’ve written:

I’ll very likely be writing more scripts as time goes on. I’ll keep posting them on this page. You can also get them from userscripts.org.

DorkbotPDX 0x00

June 16th, 2007

Since I primarily talk about Ruby here, you may not know that I’m also a hardware hacker… a beginner, in the scheme of things, but a hardware hacker nonetheless. Cool hardware hackers the world over have a group called Dorkbot:”http://dorkbot.org. Here in Portland we’ve got our own chapter: Dorkbot PDX, organized primarily by fellow Rubyist Thomas Lockney.

Dorkbot PDX is about to hold its first official event. Included below is the announcement. As it says, if you’re a hacker, painter, engineer or sculptor, musician or maker, you’ll fit right in. Come join us!

Dorkbot PDX 0×00

Come join DorkbotPDX, people doing strange things with electricity, for our inaugural event at Vendetta on June 24th at 5pm. If you’re a hacker, painter, engineer or sculpture, musician or maker you’ll fit right in. We bring together the tech and art worlds and enjoy it all over a pint of beer. We’ll have presentations and performances by these fine folks:

  • Jason Plumb is a software engineer by day…hardware hacker, reverse engineer, and experimental sound geek by night. He will provide an overview of the Essential Reality P5 glove controller and explain how it can be used with free and open-source software to create and manipulate sound.
  • Jesse Fox studied music composition and physics at Bates College before getting a Master’s Degree from the Center for Computer Research in Music and Acoustics at Stanford University. He will discuss his involvement with the League of Electronic Musical Urban Robots (LEMUR) and describe the detailed techincal recreation of George Antheil’s “Ballet Mecanique”, which includes xylophones, bass drums, tam-tam, pianists, electric bells, a siren, airplane propellers, and a volley of player pianos.
  • Donald Delmar Davis, principal research anarchist at D3 Laboratories, will overview the deconstruction of Arduino and Wiring platforms to create artistic robot platforms with AVR microcontrollers. “AI Begins With Self Destruction”
  • paint & copter create multi-media experiences of regurgitated and improvised media. By synthesizing live and pre-manipulated video feeds, field recordings and live instrumentation, Paint and Copter filter cultural noise and reprocess it into a new, mesmerizing thread.

We will also have a brief open-mic of sorts referred to as Open Dork. This is a show and tell where you can have the mic for a few minutes to discuss your latest project, vent about frustrations trying to get your art grant or tell us about the intricacies of the color blue. It’s your time to tell us what you think we need to hear.

Festivities will begin at 5pm and you can expect them to last until they kick us out. Please bring yourself, your friends and any thing you’d like to share.

http://dorkbotpdx.org/wiki/dorkbotpdx_0×00

........................................................................ .........dorkbot: people doing strange things with electricity.......... ......................... http://dorkbot.org ........................... ........................................................................

By this point, I would suspect that most Firefox readers who are reading this know about Greasemonkey. If not, go forth and read. I additionally suspect the same is true for Twitter. If not, you know what to do.

One thing that annoys me about Twitter is the avatar display on a user’s page. If I’m looking at (for instance) Geoff’s page, I see a lot of little tiny icons that I don’t recognize. I find myself hovering over each to see if they’re someone I know so I can click and friend them. I got sick of the hover delay, so I decided to fix it. I wrote a userscript that puts each users’ name next to their avatar image, and puts each on its own line.

I’d never worked with Greasemonkey, and only recently started playing with Javascript, so it was an experience. I was able to find a cool little XPath helper on the Greasemonkey wiki, which helped immensely. The code to actually do the manipulation is only about 10 lines long.

If you’re interested, you can grab the latest and greatest version of the script by clicking here. I should also plug my toys repository… it’s got all manner of fun junk laying about. Check it out with svn co http://svn.bleything.net/toys.

Not that I expect this to impact a lot of people or anything, but I wanted to let the intertubes know that I’m in the process of migrating services to a new machine. This may mean some downtime for bleything.net webservices (including this blog, the george demo, etc) as well as subversion and trac.

Also, I cut over my email services Friday morning, but hosed the config on the new box. If you emailed me and it bounced between about 7 and 10 PST Friday, it’s because I’m a biig idiot. Plz to re-send.

Rails Cookbook

January 23rd, 2007

Hello intertubes. Long time, no type!!!

I know that back in December I’d have some news to post soon. This is not that news, but it’s news of a different type! The Rails Cookbook* is shipping, a fact that no doubt everyone reading this already knew.

What you might not know is that it contains three recipes written by yours truly. If you pick up a copy, look for these recipes:

  • Deploying with Capistrano When You Cannot Access Your SCM
  • Deploying Your Application To Multiple Environments with Capistrano
  • Increasing Performance by Caching Post-Processed Content

I should point out that the “can’t access SCM” uses code that’s based on Jim Morris’s work here. I thought I had mentioned that in the recipe itself, but it’s not in my review copy. Jim, if you’re reading this, I apologize for not giving you the credit due.

My experience with the topics covered in all three recipes came from real problems that I dealt with during my time at EDGE Design. If there is interest, I can talk in more detail about the problems and solutions.

I reviewed the book as well, and there’s some really cool stuff in there. It’s up through Rails 1.2, so if (like me) you like to learn from a cookbook-style thing, it’d be a good option to get caught up with the new stuff going on in Rails. Check it out!

* yes, that’s an affiliate link