If you go to the Google I/O 2013 homepage and punch in IIIOOIII on your keyboard, the I/O logo changes into an new logo formed by cats. There are 12 of these easter eggs in all, and Zak El Fassi figured them all out. Here they are, plus an explanation of how he solved a puzzle written in code.
The following are the 12 codes that will turn the Google I/O page into a world of wonders:
- Cat : IIIOOIII
- Space: OOIOIOIO
- Pong : IOOOOOOI
- Bacon : IOOIOOOO
- Simone : IIOIOOII
- Eightbit : OIOIOOII
- Synth : IOOOIOOO
- Song : IIOIIOII
- ASCII : OIIIIIII
- Bowling : OIIIOIOI
- Rocket : OIOOOIOI
- Burger : OOIIIOOI
Here's how I got them.
So, the main codebase is located in the /js/app.min.js of the site. But it's compiled and pretty much unreadable if you just pull up the code. Luckily, I have Sight, a Chrome extension that indents/prettifies the code. But still, it's still not readable.
I had to browse through the code to find some tell-tale signs of an easter egg, and what do you know, I find this:
It doesn't say much, but at least there is some chance I could decipher this mess.
Then I searched for the ww.mode.register function, which is :
Now we have to figure out "Klass," "Pattern," and "len". I looked for klass because the word is distinguishable and easy to search for in the code, and I found this snippet, which unlocks pretty much everything :
Here we're interested in three things: ww.util.pad, d.pattern, and d.len.
ww.util.pad pretty much does a d.len-bit binary conversion (code below), in our case, always 8-bit, and d.pattern is the c param in the ww.mode.register function:
Now everything is crystal clear – All I had to do is to rewrite the ww.util.pad as a standalone function :
Now go give it a shot on the Google I/O site.
Zak is a Xoogler, passionate about code (JS/HTML5/Ruby/Python). An accidental entrepreneur, he built Zaigood and just launched LiberTweet.com. Follow him on Twitter @zakelfassi.