Thursday, June 18, 2009

Solution to the Birthday Paradox

Sorry for the long time no post; I've been busy trying to make the internet a better place. Actually, no - that's a lie; I've been sitting here drinking segfaults and wading through Odwalla juice... err, other way around. Anyways, I promised you guys a solution to the birthday paradox, so without further ado, here it is:

Timezones.

That's right folks, I was born at 12:35 am EST on June 13, 2009 - which is equivalent to 9:35 pm PST on June 12, 2009. However, by no definition is June 12 my birthday - yet I clearly turned 20 years old (it was exactly 20 years from the moment of my birth, excepting error correction for planetary alignment things that I know nothing about) at that moment. Congratulations to those of you who guessed it correctly!

This whole situation got me thinking about the arbitrary nature of birthdays. For had I been born here in California at the exact moment that I was actually born in New York, my birthday would have been forever recorded as June 12, and I in turn would have gone through life celebrating my birthday one day earlier - writing down a 12 instead of 13 on the myriad papers I've filled out over the years, and more importantly, earning such privileges as the ability to drink or drive a car one day earlier than my east coast-born counterpart.

And its not just hypothetical - given the rate at which children are produced these days and the 2.5 hour window between 9:35 PM PST and midnight PST, there are probably several 20 year old Californians alive today who were born after me and get to celebrate their birthday first. And it gets worse... this works with every time zone!

Fortunately, I was able to easily resolve this problem by celebrating my birthday on both days. ^_^

Friday, June 12, 2009

It's Not My Birthday

Here's a paradox for you... true story, too: I turn 20 years old today, but it is not my birthday. How is this possible?

I'll update with the solution shortly.

Wednesday, June 10, 2009

1 Habit of a Highly Effective Noogler

So I'm working on this thing, see... doesn't really matter what it is, that's not the point of this story (though I will get into that a bit later - I believe I can tell you, as it's open source), and I was very stuck. And being stuck sucks, as I'm sure you know if you've ever worked on any type of project whatsoever - on one hand, I knew that I could just go to my manager and ask him for help and he could probably do in 3 minutes what I could do in never, because there were fundamental things about the project that I still did not understand. But it's no fun to just go to your manager and flail, "hey, I'm stuck, hellllp meeeeee!" - for one thing, if you do this too much, your manager won't have much confidence in you, plus every time I do it I lose an ounce of self respect from my metaphorical self-respect bucket. But if you sit there too long and don't ask for help, you'll never get anything done... so at some point you have to strike a balance. The problem is, I'd been attempting to strike that balance with little success - I'd called my manager over to my desk a few times over the past few days, scribbled down everything he said, and still had only a vague clue of how to proceed when he left.

I sat and contemplated this problem for a while as I stared at my code and fundamentally did not understand, and then it came to me. Clearly there were things I did not understand, that much I already knew... but what didn't I understand? Solving a problem is much easier when you know what that problem is, and with that in mind, I opened up KJots and made a list entitled Things I Don't Know.

Then I listed them. I started off with a general question, "now what?" (I didn't actually write that down, but I could have), and then expanded it... I knew generally which files I was supposed to be poking around in, so I added that as a question - "what is the relationship between the methods in such and such file?", "which of these methods do I want to edit?", "hey, what's that variable over there?", etc... in about 40 minutes, I had a comprehensive list of everything I knew I didn't know (maybe I should have called it Things I Know I Don't Know?) divided into two categories: things I needed to know now, and things that I needed to know eventually but would probably be better off not knowing now so my head didn't get too full. Then I called my manager over, and we had a nice long chat where he not only explained everything I had known I didn't know, but some things I never knew I never knew as well, for good measure. And now I know that there is still plenty I don't know, but I also know enough to get coding, so off I go!

Tuesday, June 9, 2009

A Noogler in a Nutshell

I've wanted to start this blog from Day 0. (what? I'm a computer scientist - of course I zero index.) That is, my first full day in Mountain View - the day before I started here at Google. I spent the day exploring on foot - buying groceries, getting a shiny new library card, calling friends from home, and composing blog posts in my head. And then the next day, Google happened. (Look, if it can be a noun and a verb, it can also be an event) And Google continued to happen all week, and at night I would come home to our internet-less apartment and do something I haven't done properly in a very long time: read books. Specifically, I'm reading Eat, Pray, Love - it's amazing. So you can blame my lack of blog posts on Elizabeth Gilbert. But now that I am finally getting around to blogging, I would like to welcome you to what is most definitely my nth blog (for some given value of n greater than 10) that will probably eventually become discarded for other pursuits, like more books. But this blog is different, because it's not just about my life, but about my adventures here as a Google intern - or, as they affectionately call us (interns and new full-timers alike), a "Noogler".

So what is a Noogler? Etymologically, it's rather obvious - a Noogler is a new Googler. (A Googler, more confusingly, however - is not "one who googles". That would make us all Googlers. Instead a Googler is someone who works for Google). On a personal level, some things are also obvious - almost all of us (key word almost) have backgrounds in computer science, on some level we're all nerds, and there is a definite culture here - a "Googley" culture, that t-shirts, food, and knowledge should all be free within the company. Google is, in general, a very open and a very happy place.

But there is also diversity here - not only ethnic and cultural diversity here, but also diversity of educational background, of age, and of personality... and it is a very good thing. But for that reason, I cannot really tell you what it means to be a Googler, or even a Noogler - I can only tell you what it means to be this Noogler: me. And so that is what I intend to do with this blog - I will relay my experiences as a Noogler, and my opinions and thoughts which are my own and do to reflect those of my company (had to get that disclaimer in there somewhere, sorry), and hopefully keep you informed and entertained enough to read on as my adventures continue throughout the summer.