Get Conversations about InsaneCats    
Feb 01st, 2009 - The importance of being Catspaw
June 25th, 1995 was the first time that I used the name Catspaw. I know the date because I have a printout from when I created the account with the name. It wasn't my first online handle, but I've carried it with me the longest.

As of today, I have now officially spent exactly half of my life with that nickname. Think about that: beyond today, I'll have been Catspaw for longer than not.

There's a false assumption that the name comes from a love of cats. Now don't get me wrong, I'm very much a cat person, but that's a false etymology. It comes from the actual word catspaw: "n. 1. A person used by another as a dupe or tool". I was creating my Catspaw account as a secondary secret account that people wouldn't know about so that I could spy or whatever nefarious plans my childhood brain was scheming at the time. I was using Catspaw as a catspaw.

A few months later I spotted a book called Catspaw on the shelves of my local library. A decade later, I got a signed copy. I didn't get the name from the book, but I still sorta feel attached to it.

Catspaw is no longer a catspaw. It's spawned off a whole slew of other nicknames (Catsy, Spaw, Paw, Kazpah, Kaz, Pah, ...) and probably better known on the net than my actual name. But I couldn't let its (my? our?) halflife birthday pass by unannounced. Happy birthday Catspaw.
 

Feb 18th, 2009 - Teaching kids about engineering
Thursday and Friday there are hundreds of kids coming to Google for National Engineering Week and somehow I got roped into giving the big tech talk to all of them. (I have to learn to stop doing that whole "volunteering" thing.) So how do you keep 100+ middle school children entertained for an hour while you talk about the ultra-snore topic of What It's Like to Be An Engineer?

(An important note on terminology: When I say "engineer" I mean "software engineer" as in my title at Google, and not "engineer" as in "UofT engineer who thinks it's hilarious to march outside of my dorm room at 7 am every Sunday morning for all of first year, and play in their engineering band, and laugh so hard at themselves that they can't even play their instrument properly". Just so we're clear.)


I start out by talking about how there's two types of problems. There are problems like "3 + 2x = 9, solve for x" which clearly have a right answer. (I make a joke about "if you know what the answer is, I know some of my colleagues who'd like to hire you when you're a little older". The smart kids chuckle.)

Then there are problems like "Aliyah doesn't like Brian but has to work with him on their group assignment" which doesn't have a single clear solution.

Engineers work on problems in the middle. Sometimes there's a right answer, sometimes there's no right answer, and often there are just good answers, better answers, and "the best answer we can think of right now" answers, and that's okay.

Another important point is that engineers are lazy. Engineers don't like to work hard and like to come up with ways to make their lives easier. This is how innovation happens.

One day an engineer caveman got tired of having to wait for the sun to rise whenever he wanted it to be light out, so he invented torches. But torches go out quickly so you always had to light a new one, so lazy medieval engineers invented lanterns and lamps that used oil which lasted longer. But it was dangerous and still had a very limited life and had to be replaced all the time, so modern lazy engineers invented lightbulbs. And one day engineers will invent even better ways to bring light to us.

Laziness breeds innovation. Tell that to your parents the next time they tell you to mow the lawn. (Not-really-funny chuckles.)

Software engineers program computers, which is kinda like a recipe. I take them through this recipe, each step. Then we talk about all the waiting that happens.

I divide them into groups and they have to brainstorm ways to make this faster. Some will go in the direction I'm hoping, others will come up with crazyass shit that's okay too.

We go through their ideas and when parallelization comes up (without them knowing that that's what it is), we switch to this slide and talk about how you can reorder things and do things at the same time in order to have less waiting.

We discuss that this is like talking to a friend while you do dishes, or watching TV while you wait for a phone call -- it's doing multiple things at the same time whenever you can -- and how planning these things is an important software engineering skill.

We talk about how every day you spend 3 minutes making your bed and how long that is, but 100 hours for building a robot is soooo much longer. Except if you'd spent that 3 minutes every day building a robot 5.5 years from now, you'd be done by today and would never have to make your bed again. So sometimes a huge investment is worth it for something that's going to be done over and over again.

What's that? Did I just teach them that O(1) is better than O(n)?! OH NO YOU DIDN'!! OH YEA I DID!!! BAM! My middle school kids just got an intro to algorithmic complexity and didn't even know what hit them. Take that, CSC148. Ahem, moving on.

Okay so if you do the same thing over and over again enough times its worth optimizing. A great example of this is Google. We get hundreds of millions of people searching on Google every day. So if the search page becomes 1 second slower, each of those hundreds of millions of people have to wait an extra second which equals thousands of hours of time spent just waiting. Crazy, right?

(Trivia for the folks at home: when I increase the google.com results page by a single milisecond, I cause over a day of time waiting across all the visitors that day. So in a lifetime, my 1ms increase causes over a lifetime of waiting. In other words, I basically killed an entire lifetime with my change. Mindblowing. No pressure.)

I ask what's wrong with this kettle. Nod when the audience tells me that someone who pours it is going to burn their hands. We discuss the concept of engineering also being about designing things that work.

We talk about how bigger wheels on bikes makes them go faster, but if the wheels are too big, you can't get on the bike, or the wheels are too close together.

I ask them to take their piece of paper and draw a bike that can seat 3 people. Then we talk about how if they're in front of each other, turning corners is hard; if they're beside each other, balance is hard; if they're on top of each other, not being decapitated by tunnels is hard. Then I ask them to design a bike for a million people on an infinitely wide field. They draw for 5 minutes. (Mad props to the dude sitting next to me on the shuttle this evening for suggesting this activity.)

For extra coolness, during their tour later in the day they'll see the Google bike that seats 8 people.

We talk about what types of people are good for designing security. I tell a story about the uniform rules at my high school and how people used to break them without actually breaking the rules, and how this is exactly the kind of mindset that makes a good security engineer.

Who doesn't like a good rule-breaking story?

(Thx to fLufFy for the idea, and for the name for my biography, "How To Be Slightly Evil")

Here's all the people that security engineers have to worry about.

Your mom who can look at your computer while you're in the bathroom, your ex-best friend who you told your password to, a disgruntled employee who works at your phone company, an evil hacker who wants to break into your system, someone who wrote a virus that infects your friend's computer, and the person who you accidentally sent an email to because you typo'd your friend's email address.

We talk about which of these you can guard against and which you can't, and why.

End on a positive note about responsible engineering. The solar panels on our Google roofs (10,000 solar panels that can power 1,000 average californian homes), the bikes, plug-in cars and shuttles that Google provides to its employees, and then if we have some time I talk about how computers run really hot and you have to cool it off and some of the things we're doing at our data centers to be environment-friendly.

And there you go. Bam. They just learned about queueing theory, big-O complexity, design, security, and morality-in-engineering and didn't even know it.

We end with an inspirational message and then they run off and grab their delicious Google lunch.

And that, ladies and gentlemen, is how you entertain and educate 100+ middle school students for an hour.
 

Feb 25th, 2009 - Hanging, coast to coast
Ever since I was a kid, I've chatted with friends online around the world. That's nothing new, nor exciting. But recently I've been hanging out with Toronto friends online in a new way: not in a "hey, let's chat and have a conversation" kind of way (that even a telephone could deliver), but hanging. The act of really doing nothing. Just sorta being in each others space.

A good example of this is a few weeks ago, Deelia and I watched TV together. We timed hitting "play" on an episode of The Office and both just kinda watched, every so often laughing, but otherwise not really actively communicating. We were hanging.

Ever since fLufFy got a fancy new laptop, we've been able to videochat with each other, and this has become sort of the ultimate of hanging, coast to coast.

This morning she VC'd me while I was eating an apple at work and she was eating breakfast at a cafe. Two weeks ago she watched me make cookies while she and Mr. N ate dinner. It's like being able to have a window in the background that leads to a friend's house. It's not about actively having something to communicate, it's just hanging.

This is clearly what technology was made for. So I can glance over and watch fLufFy's facial expressions while she chews.

PS: This whole episode reminded me of this old post. Reading through the comment stream down to the bottom made me laugh.
 

insanecats.com



CC License
Creative Commons License
Shameless hypocrisy
This is my personal blog. The views expressed on these pages are mine alone and not those of my employer.


Archives
2009:
[Jan] [Feb] [Mar] [Apr] [May] [Jun] [Jul] [Aug] [Sep]

2008:
[Jan] [Feb] [Mar] [Apr] [May] [Jun] [Jul] [Aug] [Sep] [Oct] [Nov] [Dec]

2007:
[Jan] [Feb] [Mar] [Apr] [May] [Jun] [Jul] [Aug] [Sep] [Oct] [Nov] [Dec]

2006:
[Jan] [Feb] [Mar] [Apr] [May] [Jun] [Jul] [Aug] [Sep] [Oct] [Nov] [Dec]

2005:
[Jan] [Feb] [Mar] [Apr] [May] [Jun] [Jul] [Aug] [Sep] [Oct] [Nov] [Dec]

2004:
[Jan] [Feb] [Mar] [Apr] [May] [Jun] [Jul] [Aug] [Sep] [Oct] [Nov] [Dec]

2003:
[Jan] [Feb] [Mar] [Apr] [May] [Jun] [Jul] [Aug] [Sep] [Oct] [Nov] [Dec]

2002:
[Jan] [Feb] [Mar] [Apr] [May] [Jun] [Jul] [Aug] [Sep] [Oct] [Nov] [Dec]

2001:
[Aug] [Sep] [Oct] [Nov] [Dec]