Tuesday, September 30, 2008

Going Dowwwwwwnnn... Under: See you Next Year!

So, as a random percentage of people out there in the world have discovered, I will soon be embarking on a voyage across the sea. It starts off with a trip to Tokyo, Japan, where I'll be participating in various Geo Developer events and chatting with folks in that office (and most importantly, learning how to be a Harajuku girl). I then travel to China, where I'll be spreading the Developer Relations love in the Shanghai and China offices and helping kick off our "Google DevFest" tour for external developers. The tour continues on to Singapore, Bangkok, Ho Chi Minh City, and Manila, and will cover developer tools like App Engine, Maps APIs (of course), OpenSocial, and a sprinkle of others. For more info, check out our uber-colorful landing page.

Technical Tangent: The landing page includes a logo designed by our latest Developer Relations Photoshop Master (and Earth API Expert), Roman Nurrik, and a map designed by me. The map is pretty simple, but has a couple neat tricks:

  • It loads data from a "geo-tagged" calendar feed. Each event embeds the lat/long in the "where" field like this:
    Bangkok @ 13.753846, 100.501757
    I choose this format both because it can be fed into the Google Maps search box, and it can be easily broken down into coordinates with a Regular Expression. Here's a snippet from my CalendarLayer class that gets the value of the where field from the calendar JSON feed, and turns it into a GLatLng:
        var location = entry.gd$where[0].valueString;
        var pattern = new RegExp(/@\s*([\-0-9.]+)\s*,\s*([\-0-9.]+)\s*/);
        var matches = pattern.exec(location);
        if (matches != null) {
            var lat = parseFloat(matches[1]);
            var lng = parseFloat(matches[2]);
            var latlng = new GLatLng(lat, lng);
  • It produces a different random Google color upon mouseover of the sidebar elements, adding to the festive effect. I did this because there are only 4 Google colors, and 6 cities, and I didn't want to choose 2 of the colors to favor and duplicate (that's mean!). So I used our friend Math.rand():
       var colors = ["#ff0000", "#00ff00", "#0000ff", "#ffcc00"];
       var rand = Math.ceil(4*Math.random())-1;
       color = colors[rand];

Anyways, back to traveling. After the final DevFest, I'll be flying into Sydney, Australia, and staying there for 5 whole months. As some of you know, the Maps API team is entirely based in Sydney, so this means that I get to do Maps API support while actually sitting next to the team (which means constant nagging of the engineers about feature requests :). In addition, I'll be working on growing our developer outreach in Australia by helping to hire and train a permanently Aussie-homed Developer Advocate (apply here!), and possibly run some Google developer events down under, or just speak at other people's events. After 5 months, I'll return to America with a full Australian accent, and will deny any and all association with this country. :)

So, in conclusion: If you're from Asia/Southeast Asia, register and attend DevFest. If you're from Australia/New Zealand, email me about running/attending events or even just grabbing coffee (but not coffee, cuz I hate coffee, so croissants + hot cocoa, perhaps). If you're from America, try to keep this place in shape while I'm gone... or just give up and join me in Australia, I'll have a couch.

Cheers, Mates! I've got some learning to do.

Tuesday, September 23, 2008

Social Networks & Web2.0 Mapping Meetup: Abaqus, Planet9, FireEagle

Tonight I was once again the "Google Host" (=food+venue) for a meetup of the Web2.0 Mapping & Social Networks group. Catherine Burton organizes and runs the meetups, and adheres to a very strict but successful schedule:

  1. Everyone in the room introduces themselves, what they do, and answers a question of the night (tonight's was "if you had a buncha extra money, what would you do with it?"- i answered that i'd avoid filling out expense reports - others answered that they'd vote for obama :). There are actually a lot of people at these events (~80?) but as long as people are quick and snappy with their bios, it goes by quick and is a good way of knowing who'd be interesting to talk to later. The problem I see with a lot of developer events is that developers don't have an excuse to talk with eachother, and thus they don't. This way, I can say "So, you work on so&so?" and strike up a conversation. I know ice breakers are cliche and reminds folks of camp and school..but they work!
  2. Each of 3 presenters are given (something like) 10 minutes to present on their topic, and 5 minutes for questions. Catherine literally puts up colored placards to let them know that they're coming close to the end of their time, and she sticks to it. I admire that, as I've been put in that situation in the past and always found it awkward to try to slow presenters down and grab their attention while they're speaking. But she handles it in a non-obtrusive way. The small amount of time that they're given to present mean that they have to boil it down to the main points or demos that will be relevant for the mixed (tech/business/etc) audience. It also means they can hint at a lot of things that attendees will want to talk with them about later, individually or in small groups, so that also encourages future interaction.
  3. At the end of the meetup, freeform conversation is encouraged for 30 minutes to an hour, depending on how long the room is available (and how soon I have to kick people out). At the first meetup that I hosted, there was actually a group of people passionately involved in a conversation until midnight. This is the part of the night for attendees to meet eachother, ask additional questions of the presenters, discuss collaborations, etc. It's the part of the night where I've made a lot of good contacts: the guys from YourStreet, the guys from Eye-Fi, some startup folk, etc. Tonight I spent a few minutes pinging Tyler Bell's brain about FireEagle integration, and most of the time having everyone tell me that my 5months trip to Australia will be awesome. :)

The presenters tonight were Abaqus, Planet9, and FireEagle.

My quick take-aways from each of them were:

  • Abaqus: Cool way to upload GPS tracks, organizing those via tags, and sharing them on permalink pages or blog embeds. My favorite features were a nice marker-bounce-effect, and the ability to upload non-geotagged photos and have them geotagged to a track based on timestamp information in the photos + track. Oh yeah and they were using the Google Maps API, yay. :)
  • Planet9: I was really confused at first cuz I swapped Poly9 with Planet9 in my head (they both have spinny globes!), but once I figured out Planet9 was its own company, it was pretty cool. They're doing immersive worlds for navigation, entertainment, mobile, friend-finding, etc. They can even bring in dynamic ads to an environment based on location.
  • FireEagle: Well, everyone probably knows this, but FireEagle is Yahoo's service for tying together the various mechanisms (gps/cell tower/etc) for transmitting where-am-i data, storing them on a central account, and then providing a way for users to let other apps use that location data. It's a pretty cool idea, but for me, suffers from one main downfall: non-gmail login. I hate having so many damn logins and user profiles all over the web, and one of the reasons that I love Google is that I can log in once and have access to a gazillion apps. Anyway so the main solution to this problem would be either for Google to own everything, or for the internet to have a central user account system. But the short-term solution is for me to try to make an AppEngine app that lets me auth to FireEagle once and never again, and let me update my location data through that.

Anyway, it was good times once again. I encourage Bay Area folks to attend these meetups. And I need to stop saying "folks"..