Monday, February 28, 2011

QuizCards: Learning While You Wait

As a computer user and programmer, I find myself with many "waiting" moments - seconds at a time where I am waiting for a page to load, waiting for code to compile, waiting for an app to deploy. I usually find myself using those waiting moments to read through the latest tweets in my Twitter app - but I thought to myself the other day that there must be a better use of that time. What can I do in a few seconds that might actually benefit me, instead of filling my head with mostly noise? (Not to hate on Twitter - but I think you know what I mean.) Well, I can learn something - I can learn something that only takes a few seconds - like a word or a fact.

That idea is what led me to create the QuizCards Chrome extensions - interactive flash cards that are only a click away in your browser. When you install the extension, it sticks an icon in your Chrome browser bar (next to the wrench), and when you click that icon, a flash card pops up.

Depending on your settings, you can answer it via multiple-choice (easiest), type-in with autocomplete, or type-in with no autocomplete (hardest).

Once you answer it, it tells you if you were right or wrong, and it keeps track of your statistics for that word. Behind the scenes, it uses the Leitner card learning system for figuring out which cards to show you next, so that it quizzes you more on the cards you know the least.

There are many flash cards websites out there, but what I like about my extensions is their convenience, and their omnipresence. I don't have to remember to type in a URL, I just have to click the icon when I have a few extra moments. I feel a lot better now using my time to increase my linguistic and geographic knowledge than to increase my knowledge of tweets. And now when I do read tweets, I can spend more time to find the gems and respond to the ones that interest me.

As for the flash cards topics: I started with World Capitals, since I'm frequently called out for not knowing world geography (despite having worked on Maps for 3 years), and then made German vocab, Spanish vocab, and U.S. Capitals versions. I now have an easy way of generating flash cards for any topic, provided I can easily get the question/answer data, so let me know if there's a particular topic that you'd like to learn, QuizCards-style. (If you're technical, you can also check out the code and read the README for instructions on making your own).

You can see all of them at, and install whichever interests you. Give it a go! :)

Tuesday, February 15, 2011

Translation Telephone: Having Fun with Language

When I was a kid, I remember we often played this game we called "Telephone" where you'd sit in a circle, whisper a sentence into someone's ear, and they would try to understand what you said and whisper it to the next person. At the end, the original person would reveal both the original sentence and the final sentence. It was funny because the sentence would often mutate and take on new meanings at different points in the circle, depending on the interpretation skills of the listeners.

Well, since that game was fun, but I am sadly no longer surrounded by willing circles of friends, I wrote an online variation called "Translation Telephone". Instead of using the interpretation skills of a circle friends, it uses the translation skills of Google Translate. After you give it a starting phrase, it translates that from one random language to another, and finally translates it back into the original language. The phrase often changes meaning into something that makes no sense or sometimes makes so much sense that it seems like a philosopher poet is underlying the system.

For example, here ae some of my favorite transformations by Translation Telephone:

As you can see, the funniest results are when you enter an inspirational phrase or quote that purports an opinion, as it has its way of inversing or changing the meaning in surprising ways.

Just like in our real-life game of Telephone, there are often certain mutation points in the chain where the meaning changes more, and those points tend to be where the languages are the most different from eachother, or where they introduce words with ambiguous meanings. To make it easier for people to see where those mutations happen, I added an option to view each step translated back to the original language.

For example, I was surprised to see "You are my love" transform into "I have children", but when I viewed the translations at each step, I realized it translated Portuguese "Tenho uma querida" (I have a darling) into "Ich habe ein Baby!" (I have a baby), and "baby" has the same ambiguous meaning in German as English. Be careful who you call your baby!

I'm not the only one to come up with this idea - there's a "Bad Translator" site which translates from 10 to 50 languages, and there's also someone who did something similar with the same name on their personal blog a few years ago. I have tried to add more to this idea, however, by making every translation shareable and by letting users browse the recent and popular translations. At the request of an eager user, I've also created a Chrome extension that gives you a right click menu for translating highlighted text.

To quote a review of the extension, "Translation Telephone was already a wonderful way to waste time. Now I can do it without thinking. You've destroyed any hope I ever had of being productive in my lifetime. Thank you!"

I hope you also find Translation Telephone to be a wonderful way to waste time - and maybe a little educational too. :)

Friday, February 11, 2011

Goodbye, Google; Hello, World!

Just over four years ago, I started working in one of the coolest departments at one of the best companies on the web: Google Developer Relations. My job was to help developers be successful with our APIs, whatever it took. Sometimes that meant "grunt work" like spending hours trying to figure out why our API was broken in IE6, and sometimes that meant more glamorous things like traveling to exotic countries to talk about our API. Either way, it was time well spent when I could see the end result: developers doing awesome things with Google APIs.

It was the first and only job I've ever had, and it was the perfect job for me. I got to do so many things that I love: make things (mashups), teach people (developers) and learn things (web technology). But, as you've probably figured out from the past tense, it is no longer my job.

I could come up with many explanations for why I decided to leave Google, but it boils down to this: I'm ready for the next adventure.

What About…?

I don't want you to worry that I've left anything at Google in an abandoned state, so here's a rundown of what I've worked on and who's on it now:

  • Maps API: Unbeknownst to the developers that still email me every day (even today!), I actually stopped working on the Maps API a year and a half ago. The Maps API team is now quite large and includes multiple support engineers that you'll see around the forums, like the very talented Chris and Luke.
  • Wave API: Since Google decided not to continue the Wave project, the Wave APIs are effectively deprecated. Most of Wave is now open-source and is moving into the skilful hands of the Apache community.
  • Shared Spaces: Along with several other former Wave team members, I helped launch this in Labs a few months ago. My colleagues will continue working on the ideas in that project and hopefully integrating the collaborative platform into other Google products.
  • Google Sydney Developer Relations: When I came to Google Sydney, I was the only person working in Developer Relations here, and we didn't have much of a connection to the local developer scene. I decided to fix that by running events and meeting the developers here (who, as it turns out, are incredibly smart and sincere). There's now a whole Developer Relations crew in the office - Andrew on Go, Brett on Blogger, Nick on App Engine, Chris & Luke on Maps - and I know they'll do a great job continuing to connect with the local developers.

What's Next…?

I'm going nowhere in particular, or put another way, I'm going everywhere. I want to pursue the ideas in my head, I want to travel to the places I've never been, I want to see the people I haven't seen in years, I want to learn new things, I want to see where life takes me.

I know, I know, that's vague - but on purpose. I want to make no plans, so that I can explore all the possibilities and see what makes me the happiest. Oh, and one of those possibilities includes becoming a hippie, which totally works into the "no plans" plan.

I do have to somewhat decide on my location, since it appears that governments aren't into the "live wherever the hell you want with no paperwork or employment" idea. So for now, I will move back to the states, and likely live in San Francisco for a bit. (Yes, I'm a geek and I mapped where my friends live - based on marker density, San Francisco is the optimal place to live for maximum friend visitation.)

Thank You

There were many things I loved about my job, but the thing I loved the best was the developers. I met so many different developers doing so many different things from so many different countries. To all the developers out there, thank you for constantly inspiring and impressing me, and thank you for making my four years on this job such a fulfilling experience.

And I'm Off!

To quote the greatest comic strip of all time, "It's a magical world, Hobbes, ol' buddy… Let's go exploring!"