Friday, February 27, 2009

Advertising Developer Events in Australia

One of the really fun parts of my role is getting to organize events for developers. For the past few weeks, I've been doing a series of talks/workshops on various APIs/tools, and I've been pleased with the turnout - about 20-30 people from different startups and companies, including Google. For other people who are organizing developer events in Australia (particularly Sydney), here are some tips about advertising:

To give you an idea of the effect of various types of advertising, here's a graph from the AppEngine talk registration that shows how people found out about the event.

Most reported that a friend told them about the event, and presumably their friends were one of the people that found out from one of the original sources. Of the original sources, the biggest referrer was "Google Calendar" - the calendar embedded on the Startup Australia website mentioned above. But basically, as you can see from the chart, every little advertising source counts - so be thorough. (Note: I didn't email any startups or user groups for this talk, but when I have, they've also contributed to the turnout).

Saturday, February 21, 2009

Coding in a Big Place

Usually, I give talks about our developer tools and how to use them. But recently, I was asked to give a very different talk - about how we enforce good coding practices at Google. The talk was for another large company that finds themself in the position of growing larger and larger, but with increasingly disparate and ghetto* coding standards across the company. I put together a presentation about how the Google codebase is organized and managed, based on my own experiences working on Google Maps and Google Code, 2 fairly different servers that are subject to the same cross-Google standards.

You can check out the slides below, and try to imagine what I said while talking over them :)

One of the slides talks about coding conventions. For people wondering about coding conventions for their own projects, check out our published style guides for C++, Objective C, Python, Java (kind of), and JavaScript (super-mini-version). We have style guides for a few other languages internally; I'll try to bribe my colleagues into publishing those.

Another slide talks about versioning. For people who need to teach colleagues how to use version control, this SVN lesson may be helpful.

By the way - all the screenshots are from public sites that simply look like internal tools, like Google Code Search and Google Code Project Hosting.

*"ghetto" is a technical term. Attend college in downtown LA, and you'll figure out what it means.

Friday, February 20, 2009

Encouraging Interaction at Conferences

As Stephen says whenever he welcomes everyone to Ignite Sydney, people often say that the best part of a conference is the networking (and unfortunately sometimes say the worst part is the talks). It's true -- if we simply wanted to learn a new topic or be inspired, we could read a book or torrent some TED talks. The reason we go to conferences (or developer events, generally) is so that we can learn together with a group of people, and make connections that are either social, business, or both. We don't know exactly what we're hoping will happen when we form these links, but oftentime a random connection at a conference will lead to some amazing collaboration a year after the conference.

But, there's a problem. We're all ridiculously shy. Okay, well, atleast I am, and I assume everybody else is atleast a bit intimidated by the thought of striking up conversations with relative strangers. So, how do we get people interacting at conferences, and leaving satisfied with the networking aspect of the event? Here are some tips, based on events I've been to recently (mostly Webstock, which rocked!):


Avoid rows of chairs at all costs. It is the least interaction-inducing option for seating, as it enforces the idea that the audience is there only to watch and interact with the speaker - not with everyone else in the room. Yes, you might strike up a conversation with the person sitting next to you, but it's unlikely. First of all, people don't sit next to eachother unless the room is packed - that's a violation of personal space (think of the urinal-picking game). Second, there's just something awkward about turning your head completely to explicitly start a conversation with your stranger-neighbor. And even if you do get chatting (perhaps through some forced interaction by the speaker, like a meet-your-neighbor thing), there's a max of 2 people (one on each side) that you'll interact with. The best seating I've seen was in the Webstock main room, which was filled with oval tables. Round, but not too round - perfect. It felt natural to chat with the people around these tables in between speakers, and to heckle together :). The only enhancement I'd make is to add some sort of centerpiece or objects at the table that people can treat as conversation pieces. It could be little toys, a box full of relevant facts/quizzes, etc.


Webstock had a couple established games - a trading card game where people tried to collect speaker trading cards to get the best hand (for awesome prizes like a Weta ray gun), and an online game where people submitted ideas about space. The trading card game was a cool idea because the cards themself were awesome, and because it gave people an excuse to approach speakers for both cards and autographs. However, I'm not sure everyone was aware of this game from the beginning - I was rarely asked for a card, I just offered them out after my talk. I think they could spend more time at the beginning of the conference talking about the game and how it worked, and maybe include the card's cartoon avatar in the conference brochure next to the speaker's actual photo. Anyway, atleast a portion of people got super into-it, and even made a collaborative Google Spreadsheet to cheat the rules system. So that kind of game has huge potential, it just needs a bit more in terms of publicity and ease-of-play.

Besides the trading card game and the online game (which I didn't participate in), Jane spontaneously decided to hold a "scavenger hunt" at the after party. In the hunt, the leader would declare what object we needed to find, we'd have 5 minutes to do so, and then meet back in a location and compare our results. We were only allowed to ask for the object from people we'd never met before, so this gave us all a legitimate excuse to meet anyone that we hadn't yet (and to ask them absurd questions). We played a few rounds: "most bizarre object", "most purple object", "best dancer" - the last was the best as it turned into a dance-off with spectators joining in. After that, we were still in the games mood, so we invited our newfound friends to play a game of duck-and-goose on the bar floor. I feel bad for the bartenders who put up with us nearly running into their wineglasses half the time, but thankfully, there were no serious injuries and the game was a lot of fun. So, have a few established games, have a few on-the-spot games. Not everyone will get into them, but those who do will absolutely love it.

Mailing Lists

OSDC had a mailing list for all the attendees, and Webstock had a mailing list for just the speakers. At OSDC, people used the attendees mailing list to do things like arrange post-parties or meetups, or find out info about the local area. Here at Webstock, we've been using the speakers mailing list for arranging speakers-only events (mostly the dinner), and just hanging out together. Most of us are from out of town and we're all staying in the same hotel, so we're an obvious group of people to hang out together. I do wish there was also a Webstock-wide mailing list so that we could potentially meet up with non-speaker attendees. There's a giant carnival outside today, and if we had a Webstock-wide mailing list, people might email it and decide to meet at the various concerts. So, set up both an attendees and speakers mailing lists for an event - people will find uses for both.


It's probably somewhat obvious that you should use Twitter, but there are a couple things you should do to maximize the twitter conference experience:

  1. Establish a twitter hashtag before the event starts - preferably something not too long, so that people don't have to sacrifice precious characters (#webstock09 was a bit long)
  2. Create an official twitter account for the event (e.g. @webstock) and start using this long before the event
  3. Embed the live tweets on the event webpage, or if you're pimp like Webstock, project them as the screensaver in-between speakers.


For me, the questions portion can be a really enlightening part of a talk. They reveal the audience's immediate reaction, and help you realize what big ideas you might have forgotten in your talk. At Webstock, they pretty much discouraged us from leaving time for questions, since time was at a premium. Of course, people could approach the speakers after, but there's something different about the questions that people ask you individually and the ones they pose in front of the audience, and I wonder if we would have gained from having a few live questions. If you do want to encourage live questions and you have the time for it, here are a few tips:

  1. Setup microphones throughout the venue that people can approach
  2. Don't dim the lighting after the talk ends - speakers should be able to see the people asking questions
  3. Use Google moderator or a similar app to let people submit questions during the talk, and then have the speaker answer them at the end - this eliminates the anxiety of question-asking, and lets you see what questions are the most popular in an audience (particularly important if you're time-limited).

At DevFest, we even set up a live chat so that people could ask questions while the talk was going on, and the non-speaking Googlers would moderate it. This was particularly important when we were talking to non-native-English speakers, as they often wanted clarification on what the speaker was saying (particularly the ones with thick French accents!), but it was also just a way to let people ask more minor questions, links for topics mentioned, etc. So, let people ask questions, and give them multiple ways to do so.


The mo' speakers, the betta'. A speaker is the one person at a conference that everyone has an excuse to approach, as they can say stuff like "What will your talk be on?", "I see you're talking on X. I also work on X.", "Great talk! I just had one question.." This is why I'd recommend that most events try to have lightning talk or Ignite sessions (5 minutes each), as you can fit about 10 speakers in an hour - and thus encourage the # of people that attendees have an excuse to talk with. It also helps to either introduce speakers at the beginning, or identify them via special badges or clothing in a very obvious way. I always get sad if I'm one of the last to present at a conference, because then I'll suddenly have all these people who'd like to chat with me for a few minutes when they realize my areas overlap with theirs - but there'll be no time left in the conference to do so. So, have more speakers, and make them identifiable.


Don't do a continuous stream of talks all day. After every hour or two, have a 15-30 minute break, ideally with snacks. It gives people a chance to discuss what they just saw, and possibly meet new people - my usual strategy during a break was to approach a group of people where I knew one person, and then got introduced to the others there. Networking is all about the network effect.

Alcohol + After-parties:

You can't go too wrong with this combination. A few tips:

  1. Have an after-after-party that's not too far from the original venue - you'll often have to kick people out of the fancy venue around midnight, and they'll still be buzzed and want to continue socializing
  2. Have some non-beer alcohol like wine, champagne, or Smirnoff ice (this is purely for my benefit, I hate beer)
  3. Hold the after-party in a venue where people can see eachother's faces - it's awkward to approach people if you can't see what they look like
  4. Have some entertainment during the party - a band (Webstock had a robot band), a game, a magician, etc. People like to watch things together, and comment on them.


At our first DevFest in Singapore, we were in desperate need of a stall tactic as we waited for the first speaker to arrive. So, I put on my MC-hat and surveyed the audience for a good 15 minutes, cracking a few jokes and telling childhood stories along the way. I asked them questions like favorite programming language, favorite browser, favorite music genre, student/professional, etc. It was both a great way to get to know our audience so that we could target our talks accordingly, and a great way to start off the event with an interaction vibe, instead of just starting with some person talking at an audience of strangers. So, even if you don't need to stall - take a few minutes to get to know your audience better.

What other recommendations do people have? If we can accumulate our experiences together and learn from them, we'll leave every conference feeling that we got what we actually came for.

Update: I added "Ask-the-Audience", as JR's Wifi comment reminded me of more DevFest experiences.

Wednesday, February 4, 2009

GeoWeb 2009 Proposal: "GeoWeb Standards: How far they've come, How far they need to go"

Ok, I've never been to GeoWeb, but it's in Vancouver and I've been told Vancouver is a nice city with great boba (milk tea). So I've proposed a technical session about the current GeoWeb standards (KML, GeoRSS, GeoJSON), and about what I think their future together should entail. I've played around a lot with both these formats over the past few years, written parsers and generators, and now I've got a fairly good sense of what I still need from these formats, both as a developer and a consumer. If this talk is selected, it will give me an excuse to further articulate those needs, and my personal vision. I'd be interested to hear other's opinions about the state of the GeoWeb standards.

Here's the abstract:

GeoWeb Standards: How far they've come, How far they need to go

The GeoWeb is growing up rapidly. KML, or Keyhole Markup Language, was invented by Google five years ago and became an OGC standard last year. GeoRSS, an extension of RSS, was invented by Harvard around the same time, and is now a defacto standard. There are now tens of thousands of KML files out there, popular sites like Blogger outputting GeoRSS files, and there are numerous parsers, generators, and validators for both of these formats.

But we're still really in the infancy of being able to truly share and track geo data on the web. We can't subscribe to updates for a KML file with a GeoRSS feed, we can't do CRUD operations on a KML file, we can't settle on a "flavor" of GeoRSS, and more importantly, we can't figure out how these two formats should co-exist in perfect harmony. In this talk, we'll examine the progress the current standards have made and discuss how they could work better with eachother and with the rest of the web - covering topics like syndication, collaboration, searchability, and unification. We'll conclude with suggestions about how the attendees can help.