Author Archives: gavin

Running your Bootcamp Partition Inside Snow Leopard VirtualBox

Published / by gavin / Leave a Comment

This is adapted from:

First, install bootcamp and windows as instructed by apple.

Then, open a terminal window and enter:

sudo chmod 777 /dev/disk0s3

sudo VBoxManage internalcommands
createrawvmdk -rawdisk /dev/disk0
-filename win7raw.vmdk -partitions 3

Start VirtualBox (download it from

Navigate to your home directory and open win7raw.vmdk.

In your Settings tab in VirtualBox, go to the Storage tab and set the IDE Controller to “ICH6”.

Launch the virtual machine, install the VirtualBox guest additions, and you should be good to go.


Published / by gavin / Leave a Comment

At a successful wine bar visit (Noir) after a failed attempt at seeing a Bollywood film in Pasadena, our friend Joel, a math professor, began to explain optimal grid packing in terms of how a grocer stacks oranges. If you have an infinite number of oranges, stacking them as a grocer would is, apparently, optimal.

Jill: “But nobody has an infinite number of oranges!”
Joel: “Nobody except a mathematician!”

Coder for the People

Published / by gavin / Leave a Comment

I write software for a living, these days at Google, but in the past at DreamWorks Animation, Idealab and ArsDigita among others. I think rich internet applications are The Way, and I like to make them richer.
I like people. I like meeting new folks, and talking to them, and meeting their friends, and walking up to strangers in public places and striking up conversations. I actually hand out a lot of business cards, just because it seems like the polite thing to do after somebody has done me the courtesy of getting to know me.

At work you can pick your own title for your business cards. Well, you can’t put “CEO” or “Vice President” unless you really are one, but the internal designations are pretty useless outside Google.

I thought for a while about what I do, and why I do it. What I do, ultimately, is try to make peoples’ lives more pleasurable, especially when they touch technology. That’s one of the reasons I like movies, and user interface, and open source, and the web. I’m here for the people.

Coder for the People

Coder for the People

Starting a User Group

Published / by gavin / Leave a Comment

At RubyConf I stood up and volunteered expertise I accumulated starting and running the Los Angeles Java Users’ Groupfor the first seven or so years of its existence. If you’re thinking of starting a group in your area, here are a few tips:

Why a User Group?

It’s really easy to mistake the fluid and personal-feeling communication tools available these days for real face-to-face time. Brains are amazing things, with machinery that has evolved specifically to help us communicate with each other in person. Don’t miss out on it!

Get a bunch of people interested in the same thing together in a room, stir the pot with an interesting speaker or shared project, and then give folks a chance to talk informally with each other afterwards.

The rewards are immediate AND long term.

The Basics — What Do I Need to Have a Users Group?

  • UsersSounds obvious, but these groups form around people using something, usually a technology. You’ll need to go out and find people who are interested. For the LAJUG, I started out with co-workers and friends and my first meeting had… three people present, including me.I spent the next month attending other meetings in the area — multimedia design meetings, other programming groups — and promoting the next LAJUG meeting. The second meeting had about twenty people, and afterwards there were usually at least that many, sometimes quite a few more.
  • A Regular Time and PlaceLAJUG benefitted immensely from being held with great regularity on “The First Tuesday of the Month from 7:00 to 9:00 PM.” The venue changed every couple of years (it met at Enfish, ISI, Hughes, Caltech, UCLA, Goto/Overture and now Sun), but it was pretty easy for attendees to mark their calendars with a recurring “LAJUG” event.Settling into a regular time and place also helps make the group feel “stable” and attract assistance long-term

What Facilities Do I Need?

  • FreeWhat became a running theme with LAJUG was a certain “open source” quality. Unknown to me, Michael Merle had attempted to create a Java users’ group a few months before I did. However, he chose to have his first meeting at the venerable Electronic Cafe in Santa Monica. This required him to charge admission to pay for the facility. Paying, even a token amount to a worthy venue, added enough friction to that initial attempt that there was no ongoing group when I started the organization that still meets regularly today.
  • Large enough for the group to be comfortable.
  • Close enough to the middle of things that most members don’t have to go terribly out of their way to get there.
  • Provides an LCD projector so presenters only have to bring their laptops (not strictly necessary, but always helpful).

Getting Sponsored

No! In the seven years I ran LAJUG, I never spent or took in money. People volunteered space, an email list and a web server, and that was all it really took. These days, the web space and email lists could be handled through any one of several advertising-sponsored web sites. (Feel free to link to your favorites in your comments to this post.) During the boom sometimes vendors would spring for pizza and soda, and I sometimes brought coffee and cookies myself. Later on, I got members to volunteer for cookie duty.

Getting Speakers

The best speakers come from within the local community. If you’re active on the ruby lists and IRC you can probably find them there, and it wouldn’t hurt to email the people you’d like to present *now* for possible engagements “whenever they’re in your area”. I’ve never needed to pay anybody — the non-vendors want to give back to the community and promote themsleves, and the vendors, of course, want to sell you something.

Preparing Speakers

Over any stretch of time you can count on a the following:

  • Your speaker has trouble moving through his material
    Solution: help him along. Often people just need a leading question, but if somebody is too deeply involved with a subject, particularly a technical subject, it may be necessary to bring out the big guns — “We’ve only got about X minutes left and I want to make sure we’ve got time for questions.” If you don’t feel comfortable saying this a few times in your career of operating a users’ group, you’re going to have a tough time
  • A speaker will cancel at the last minute.
    Solution: have a backup speaker ready to go at all times
  • Your backup speaker will be caught in such horrible traffic that he won’t show up until the last ten minutes of your scheduled meeting
    Solution: have a presentation (or two) that you can give at a moment’s notice
  • Your speaker gets lost, or forgets entirely about your meeting.
    Solution: The only solution here is proactivity. Make sure you get your speaker’s cell phone number and call both the day before and the day of the meeting. Also, forward him both a link to the “directions” page on your group web site (you do have one, right?) as well as sending the directions in the body of an email. The email can be sent a week or so before the actual meeting so the speaker has a graceful chance to say “THIS month!? I’m in Bangalore this month!”Personal experience: A presenter from a Very Large Pacific Northwest Software Company once wandered around the group’s previous meeting location while the rest of us waited disdainfully for him clear on the other side of town. A phone call or email beforehand would have solved this problem easily.
  • A speaker will flake completely and never show up or be heard from ever again.
    Solution: Same as above, but it’s often a good idea to make sure you know somebody personally before counting on them to do a public speaking gig


There are as many topics that will be interesting to a good users’ group as there are people who attend. Over the years, the Java users’ group took on subjects as widely varied as Extreme Programming, VRML, and the local job market.

If you take on the responsibility of organizing a group, one of the perks is picking the occasional tangent topic that is of particularly interesting to you (so long as there’s a connection back to your main subject area, of course!)

Keeping it Fun

For the Ruby crowd, it’s less of a problem at the moment, but I can see ISPs and development software vendors offering to speak often enough that you could book late 2007 and 2008 with just sales pitches. Vendor presentations are often great, but it’s good to mix it up with technical presentations.

I think workshops are a great idea right now — a Rails install fest, for example. Hmm, that might only take the first ten minutes…

And, of course, Your Comments

I hope this post will live for quite a while, so please add any ideas you’ve found helpful in the comments section. If they remind me of specific advice, I’ll revise the list above.

See you at the next group meeting!

Yes And

Published / by gavin / Leave a Comment

This morning on NPR I heard a piece about Chicago’s famed Second City improv comedy group teaching their techniques to Fortune 500 groups.

They mentioned the principle of “Yes, and” as opposed to “No, but.”

Macolm Gladwell talks about this in Blink. When improvising, if another player offers you a situation (“It seems as if your head is on fire.”) you must accept the situation and build on it (“Yes, can you put another log on it?” rather than “My head isn’t on fire, it’s your eyes that are burning.”)

I think the current entrepreneurial boom is a movement of “Yes, and” rather than, “No, but.”

Yes, we can make that happen. AND we can do it quickly and cheaply. AND we can build upon software that is freely available.

Funny how things can work out.