---
title: When I Enter the Office, the Imperial March Plays
teaser:
tags: fun,ruby
author: Jon Yurek
published_on: 2009-07-07
---

A long time ago in an office far, far away... robot wars! I mean, budget
surplus! We had a bit extra in the budget a while back and so we did what any
responsible business owners would have done: ask the employees what they wanted
us to spend it on. Here's the list we got back:

* A fully glass floor so I can watch the people below me
* Currency valid only on Dean Kamen’s personal island
* A pony
* RFID door key that plays my ‘theme’ when I enter the office.
* 10 pounds of green M&amp;Ms
* Portal gun from Half-life Portal so we can use the gun to create hole between
  tb kitchen and my kitchen - It’ll be great we can have toast.

Right. Well, there was one thing on there that was actually possible ([besides
the M&Ms](http://www.mymms.com/25colors/?sc_cid=DR_LV3)), and it was the RFID
theme song system. That's not something you buy off the shelf, and since it was
a budget surplus and not a time surplus, we shelved that. Time comes for us to
move into our current office and, lo and behold, there's an RFID door-lock
system! But, you know, no theme songs. Well, since we were still busy it took a
while, but I finally contacted the [manufacturer of the
system](http://crosspoint.nl) and managed to get an <abbr title="Application
Programming Interface">API</abbr> and documentation (since it's not publicly
available, for whatever reason&#8212;if you want to get it, email their
support).

![''](http://images.thoughtbot.com/ui/2009-7-6-fanfare.jpg)

## Gentlemen, behold

Now, I tap my card to the reader: the door opens and my theme song plays! (Full
disclosure: I lied in the title. My theme isn't the Imperial March. It's part of
[TMBG's Space Suit](http://www.youtube.com/watch?v=BGSqvZ8QelI). But it _used_
to be the Imperial March, so I don't feel bad putting it in the title.)

[The important part here is that the source is available on GitHub.](http://github.com/jyurek/thememusic)

The original version was a bit of a spike, as it didn't have tests. This current
version is much better and has tests. We don't feel comfortable using other
people's code if they don't have tests; we also don't feel right giving you code
without tests.

It's got a bunch of features, like reconnecting itself if you pull the cord out
(theoretically) and only playing between certain hours, and, umm, working. Only
playing between certain hours makes a big difference, because if you play all
the time you'll quickly get tired of it (and what's the fun in that?). We have
it set to only play between 6am and 11am, so it generally only plays when you
first come in.

It only runs on Windows, because that's how Crosspoint supplied the <abbr
title="Application Programming Interface">API</abbr>. It accesses the COM
objects via the WIN32OLE library, which is thankfully standard with Ruby. After
a few media players I settled on Winamp 2.95 because it was the only one that
actually started playing as soon as you ran the command, go figure.

Because not everyone at thoughtbot is in Boston, not everyone has a song yet,
but here's the current standing:

* Jon: Space Suit
* Matt: What's My Name
* Chad: Audience Cheering Live Album Intro
* Mike: In the Air Tonight
* Jason: Stardust Fanfare
* Dan: I Don't Feel Like Dancin'
* Joe: Liberty Bell March
* Nick: Limelight
* Fred: Kernkraft 400

Note: If you happen to have an XM3 RFID door system and want to set this up,
keep your music below 10 seconds or so, otherwise it gets really tedious really
quickly.
