Category Archives: Software

Today’s Light Reading: WebKit BugTrack Entries!

Published / by gavin / Leave a Comment

For reasons too obscure to get into, my genius friend Michael Herf pointed me at this bug for Chrome WebKit. I suggest everybody read it; it’s like a mini-course in browser internals.

Now that a significant weight of browser code is open-source, I think it’s important for serious web developers to spend some time reading the bug tracking entries for the browsers they support. This isn’t so we can moan and beat our chests about the sorry state of open source browsers (’cause Gecko and WebKit, I luvs you guys), but so we can develop an intuition about what’s going on at the “next level down” from our HTML5/CSS/Javascript magnificence.

This is a pattern I see repeatedly in software: the best work in high level environments can be done only with understanding of the levels below. When I was working in Smalltalk, the company I worked for hired away the developers responsible for the garbage collector and compiler of the virtual machine we were using. I was productive as a junior developer, sure, but sometimes the Killer Bugs ended up with this guy and gal staring at a screenful of hex and walking through the VM stack frames manually.

Joel really nailed this one eight years ago: Leaky Abstractions.

Starting a User Group

Published / by gavin / Leave a Comment

At RubyConf I stood up and volunteered expertise I accumulated starting and running theLos Angeles Java Users’ Group for 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!