Petrospective

Musing on life and techology

Nov 13

Is Google the best dog food eater in the world?

Background for this post: After finally getting an invite, I was playing with the preview of Google Wave yesterday, trying to understand what the hype is all about. I personally find the “wave” concept intriguing, even though it can be difficult to grasp at first (hopefully it will improve as the thing matures and gets developed further). You have most likely heard people calling this product anything from “very cool” to “revolutionary”, but what really strikes me is the extent to which Google is able to reuse technologies from their own toolbox in order to make something like Google Wave happen.

Waves of dog food

Let’s quickly go over some of the building blocks that went into Google Wave: the whole thing is built on top of XMPP (which wasn’t developed by Google, but they already use it to power Google IM) with a bunch of secret sauce mixed in (and since “openness” is in the air, you can have a taste of it over at waveprotocol.org). The so-called Wave Gadgets is nothing more than an extension of iGoogle Gadgets (HTML/JavaScript/CSS/AJAX wrapped into a library). And in order to quickly get up to speed, they used their own App Engine to host Wave Robots. The UI over at wave.google.com is built using the Google Web Toolkit, if I understand it correctly. And let me guess, the whole thing is most likely running on the same server clusters as all of their other products. In order to build a simple Google Wave robot by following their tutorial, you download a Google extension for the Eclipse IDE, along with a bunch of Google libraries (I was using Java). After you are done coding and building it, you upload it to Google App Engine, and voila, you just created an automated Google Wave participant with less then 100 lines of code in under 30 minutes. Now, THAT is what I call “eating your own dog food”. (For those unfamiliar with this term, it usually means that a company is widely using its own products).
And if you keep connecting the dots, you quickly discover that most of Google’s technologies are related to their core products, in one way or another:

This picture shows only a small part of their toolbox and relationships between products and technologies, of course. And some tools, like Bigtable, are not directly available to 3rd-party developers. As usual, there is a lot more under the hood.(On a side note, it would be interesting to see a more complete map, which I tried searching for, in vain. Somebody must have surely produced one by now. Let me know if you see it.)

The Google World

Nowadays, if you so desire, you can perform most of the typical computer user activities using only Google products: Search, Gmail, Google Apps, Maps, Picasa, Blogger etc etc. Twitter and Facebook are notable exceptions here, with Google seemingly not putting up any significant competition in those fields. Orkut might be very popular in Brazil, but that’s about it. And Dodgeball is dead.

Now, if you think about each of those needs as “towns” on a hypothetical “daily activities” planet, then each product that Google releases is like a new line of the ever-expanding Google Railroad that connects these towns together. You get yourself a ticket (a free Google account), hop on the train (open browser on your computer) and ride the railroad back and forth, visiting destination after destination. Oh, and did you notice how this “railroad” is owned and operated by Google, but the “trains” are not? Not to worry, Google Chrome is here to replace your browser, soon to be followed by Google OS (supposed replacement for Windows or OS X) - this will greatly advance their carefully orchestrated “business development” (or, as some conspiracy theorists call it, “taking over the world”) effort. And if you want a mobile version of this “train”, there’s an Android for that!

Majority of new products that Google creates pave the way, or, to be consistent with our analogy, lay the rails for the ones that will come later. A lot of code is reused, and little effort is wasted. Of course, every once in a while, they have to build something more or less from scratch to enhance the foundation and make new kinds of technologies and products possible (like the recently announced new computer language called Go, maybe?). As more and more such technologies get developed, it takes less and less time to prototype and innovate new products (i.e. lay new tracks and connect even more destinations).

Google, big!

Here is another way to think about it: Google seems to be very good at utilizing “economies of scale”. This traditional microeconomic term describes a situation where a big factory can leverage its size to minimize the cost of each unit that it produces. Google is able to apply that concept on several levels at once: due to their investments into infrastructure, it’s relatively cheap for them to support millions of users; because they have spent so much time extending their toolbox, it’s cheap for them to create new products in the industries that they have a presence in (especially if it has anything to do with web); and as a side-effect of all these efforts, they have built up a massive reserve of brainpower in the form of software engineers and product managers, which means that they are able to move into new industries with relative ease.

This is exactly what makes Google such a fearsome competitor in the information technology sector: ability and eagerness to build cool stuff very rapidly. The “20% of each engineer’s time can be spent on unrelated projects” rule can be very potent exactly because each one of those engineers has access to a whole array of existing technologies (and people that implemented them, probably, to some extent) that play well together, enabling them to prototype to their heart’s content, focusing on “what to do” rather than “how to do it”. Take just one example: MapReduce, the thing that originally enabled Google to massively parallelize their web search indexing routines, which was described in a whitepaper back in 2004. This one quote says it all, and keep in mind that this was more than 5 years ago: “Our implementation of MapReduce runs on a large cluster of commodity machines and is highly scalable: a typical MapReduce computation processes many terabytes of data on thousands of machines. Programmers find the system easy to use: hundreds of MapReduce programs have been implemented and upwards of one thousand MapReduce jobs are executed on Google’s clusters every day”.

So, If I wanted to build something crazy, like a system that recognized and categorized faces in images found on millions of websites across the world and then cross-reference them when I do a search for my name, would I want to work for Google (and use their MapReduce clusters)? You betcha. Why? Because they have all of the necessary components to create something like that: the data, the infrastructure, the technologies and the brainpower. (And yes, they are moving in that direction, albeit in a less Big Brother-esque fashion, with Picasa). And that’s just one crazy idea - who knows what Google engineers are thinking up during that one day out of the week.

Round and round it goes…

This is where we drive the last nail into the coffin of our earlier analogy: in the process of building the “railroad” that now covers a large portion of this particular “planet”, they are creating components necessary to produce a “space ship” that will allow them to spread their colonization effort to the “solar system” and, eventually, the whole “universe”. And they are doing all of that while chowing down on an endless stream of Google-branded cans of dog food… *burp*


Nov 12

Project Unclutter Home 2009: The Pondering

I’d love to live in a clutter-free home. Ever since moving into a smaller apartment slightly more than a year ago and dragging a bunch of useless stuff along with us, we haven’t actually gone through and cleaned a lot of those old things out. It’s very friggin’ frustrating. Let me list some of the items that are kicking around our home, just to give you a taste: unassembled DVD stand; bar chairs, still wrapped from the move last August; a couple of boxes of old electronics that I haven’t used in more than 4 years; scattered magazines that nobody cared to read in months. Don’t ask me why this hasn’t been thrown out - if I knew, I wouldn’t be writing this ;-)

Well, enough is enough. All of this crap needs to go before 2009 is out.

But as soon as you make that kind of a mental commitment, doubt starts creeping in. Below is the list of issues that I’m grappling with when it comes to removing clutter from our house:

Issue 1: It’s an Everest

My biggest issue with this project is that it seems monumental, akin to climbing a really large mountain. If you stop to comprehend the perceived enormity of the task ahead, your resolve shrinks back and starts whimpering. If we’ve been living with this situation for the last year, it can surely wait for another couple of months, can’t it? Please?

So far, the best advice I found is “do it in 15 minute intervals, don’t try to do it all at once” (Good read here: http://www.wikihow.com/Remove-Clutter-From-Your-Home). Stretching out the process seems like a good idea, as long as it’s not for too long. Another important point here is to have some kind of a temporary staging area where items that require further action (donating, selling, special disposal methods) could be placed in the meantime. (Akin to “inboxes” and various other folders in a GTD system).

Additional benefit is that you can feel accomplished every time you clean out just one closet or room, without having to deprive yourself of positive feelings until the whole thing is done. The might just be the key to tackling this psychological barrier.

Issue 2: Lack of system

Crap will undoubtedly come back. The saddest thing that can happen is that you spend all of that effort cleaning out old stuff  just to see the house start filling with junk in a couple of months.

The basic idea here seems to be that “Everything needs a place”. That’s easy to find for things like books, for example. But there are a lot of items that don’t seem to fall into clearly-defined categories, and they end up roaming around, taking up various horizontal spaces and unclaimed cabinets around the house.

I’m thinking of a two-pronged attack here: 1. Categorize things better as we go through them; and 2. Do a better job of dedicating space for various things, including having one “misc” storage space for things that defy labeling.

The other important point here, brought up in a couple different articles (http://www.ehow.com/how_116784_unclutter-home.html) that I’ve glanced through: keeping things in order should become a habit. Again, that looks like another Everest, which is immediately off-putting. I’d say that “making it easy to keep a habit of staying organized” is the key there. We’ll see how that works out.

Issue 3: Reluctance to part with crap

You know it, I know it: we grow attached to things, which really gets in the way when you need to throw something out. Here is one solution that I’ve been trying out recently: When you are digging through old stuff, looking for potential disposal victims, suppress your memories, try to be indifferent to things that you encounter. Something like “that’s just a piece of plastic”, or “look how ugly and broken this is” might work for you. One article (http://bottomlinesecrets.com/article.html?sid=E031002S6A&article_id=22345) suggested taking pictures of stuff that you cherish and throwing out the physical objects, because most of the time you really only care about the memory (this means that you might need to find a way to file your pictures efficiently in order to not clutter your photo collection. It never ends. Sigh.) And you know what, if taking pictures makes it easy to get rid of old useless junk, I’m all for it - after all, storage space on digital cameras and hard drives is cheap and abundant ;-)

My personal bottom line here is this: “I’m fed up with crap”. And that feeling is now much stronger than feelings of attachment to most physical objects that I haven’t touched in a year or more. Good riddance.

Issue 4: What’s the best way to get rid of things?

This one has stumped me for a while. For example: Should we carelessly dump old electronics into garbage? That doesn’t feel right, but I have yet to find a good way around it. Enlisting help from one of the junk-hauling services might be in order. This part will need to be investigated further, and I’ll try to report on my findings.

I’m also considering selling or giving away our it-might-still-be-useful-to-somebody items. I’ve started by asking friends and family, but might have to resort to craigslist, ebay or Twitter and Facebook. We’ll see.

Bottom line

The biggest thing for me was to overcome the psychological “this is Everest” barrier. Once the task ceases to seem insurmountable, the rest should be relatively easily manageable. That’s the hope, at least.


Page 2 of 2