Sunday, July 29, 2007

Welcome to the blog!

As you can see, the new format is up, up, and away! I've brought my Noogler writings over here, of course, and you'll be seeing more new content as the muse strikes.

Let me start by giving you the executive summary for this post. If you don't care about technical details, or getting things just right for your tastes, then just go to, sign up if you need to, click "Add subscription", then in the box that pops up, type "". Then, add another subscription, this time for (and you'll need to copy/paste this)
(whew; got that all)? Add subscriptions for all the other sites you might go to frequently to read news (Slashdot, CNN, other blogs, etc). Then, instead of going to each of those sites each day, you can go to Google Reader to see them all together, easily read. There you go, now you don't have to read the rest of this post.

Whew. We've got the type A personalities out of here. Now the rest of us can relax and enjoy the new blog.

Now, if you've taken the time to look over the sidebar, you might think this website is the height of vanity. Besides my last ten posts, and monthly archives, you've also got my bookmarks, my news clippings, my music, my friends, my photos, my art, me, me, me! Yeah, okay. I guess the way I figure, it's my blog; it should have a lot of my personality in it. You've got links to loads of personality, right there in the sidebar. And naturally, you should come back every day to check it!

Okay, no, that's not true. Most of us already have websites we periodically look at; I have about 30 different websites I like to check every day already! (You can click on the "daily" tag in the sidebar under "My Bookmarks" to get a list.) Surely there's some great technology to help us keep up with all the articles from these different sites, and show us just the new ones that we, personally, haven't seen.

Why yes, there is! It's called RSS, and it's all over this website. I'll talk about some of the basics of using RSS now, so later on I can just say that some feature "has its own RSS feed", and you'll know what I mean, and how to use it.

First, I want you to look at the right hand side of the address bar. Yes, the bar at the top where you type in "". There may be an RSS logo there. Depending on what browser you're using, it might be the word "RSS", or might look like a silly orange logo instead. Chances are, it looks like the silly orange logo. (If you're using Internet Explorer 6, you won't even see the logo; we'll talk about that case in a little bit.)

Now, you could click on that, and I'll talk about how different browsers handle it.
  • Firefox: If you're using Firefox, you'll be shown the feed (a list of the recent articles) and given a chance to add it as a Live Bookmark, or subscribe (mark it as something you want to read) using one of a number of other possibilities (certain websites or programs). If you add it as a Live Bookmark, then you'll have a bookmark (by default, in your bar) that's actually a drop-down list of articles. When you feel like reading my articles, you can click on that bookmark, find a headline that looks interesting, and click it to go straight to the article. It's a quick way to scan headlines without having to visit the site!
  • Safari: When you click on the RSS icon, the web page will transform into a feed view. If you drag that to your bookmarks bar, it will turn into a bookmark that will always show how many new articles there are. If, for example, there's two articles since you last looked at the site, you'll see Piquan(2) for the bookmark. Clicking that bookmark will take you to back to the feed. Safari also has a lot of other RSS features, like the ability to show multiple feeds at once (put them in a bookmark folder), show just part of each article in the feed display (the control is on the right side), or turn your RSS feeds into a screensaver (it's in the Desktop & Screen Saver system preference panel, with all the other screensavers).
  • Opera: When you subscribe to the feed (use the Atom feed), it will be added to your Feeds menu. Within the feeds menu, you can click on an individual feed to read just that, or "Read Feeds" for all your feeds at once.
  • Internet Explorer 6: Doesn't support RSS. Use Firefox, or look at the section below for alternatives.
  • Internet Explorer 7: It supports RSS, but I don't really know anything about it. I'm afraid you'll have to play with it yourself, or use Firefox.
  • iPhone: The iPhone does support RSS, but its support is pretty primitive. The RSS icon isn't displayed, presumably because there's not much screen space. You'll need to click the Atom button at the bottom of the sidebar. You can view the feed that way, and it's easier to read and pick out articles that way, but it doesn't remember which articles are read, or let you aggregate articles. I recommend Google Reader instead; see below.
Lots of different websites have RSS. Pretty much, any website that has short, periodically added content will support RSS. Obviously, this includes blogs (both individual and corporate), but it also includes newspapers like the New York Times and San Jose Mercury-News (yes, even smaller local papers have RSS!), news channels like CNN and the BBC News, and even common social sites like personal photo galleries, music trackers, and even social bookmarking sites. If you have a personal site, such as a team high score list or baby diary, you may want to ask your administrator about enabling RSS, if he hasn't already.

Okay, everybody's using it, but why is RSS so great? It lets you keep up with a lot of different sites easily. Some feed readers (such as the one in Opera) let you read all your feeds at once, so you can read your day's news from a variety of different sites, all at the same time. Some (such as the one in Firefox) don't do that, but do let you quickly scan the article headlines without visiting the website, so you can quickly see if there are any articles you want to read.

There's also programs that let you see RSS news in other ways than your web browser. For example, the Mac ships with a screensaver that will read and display RSS feeds. Google Desktop for Windows has a widget that will display RSS feeds at the side of your screen.

Okay, you remember how I said that my website should have my personality? Apparently, that includes my tendency towards long-winded technical explanations. For just that reason, I'm going to recommend that you stand up, take a break, get a cuppa tea, and come back. But we're getting to my favorite part, so don't go too far!

Better? Okay, then, face front, true believer, 'cause here we go!

I mentioned before that there are third-party programs to view RSS feeds. I don't know what they are; you can search Google for them if you feel the need. (Firefox will automatically find several of these programs, and give you the option of using them to subscribe to RSS feeds.) But I have other ways I prefer to read my feeds.

My favored method is Google Reader. I hadn't really bothered with it before recently. The explanation they gave on the web page was far too vague for my taste, and I didn't really understand what it was. So now, I'm here to tell you.

Google Reader takes all of the RSS feeds you have from every different site and puts them all together. It keeps track of which ones you've read. It lets you mark some of them with a star so you remember to go back to them. It lets you share them with other people. It does all this in a very easy-to-use web interface. It also has a huge list of feeds available, so you can search for feeds on baby clothes, cowboy poetry, or whatever else tickles your fancy. Personally, I'll spend a few minutes each day scanning over my Google Reader inbox, and quickly pick out the articles that are worth reading.

If you use iGoogle, which is Google's customizable portal page, then you can also put a Google Reader widget there.

Okay, I probably sound like I work for Google or something. But seriously, I've really enjoyed using it. Now, maybe you go to Yahoo! every morning. Or perhaps you prefer, because it used to be named after an amusing character from Wodehouse books. Well, you're in luck! Yahoo! has a similar service; you can put your RSS feeds on your My Yahoo! homepage. (I don't know how, but it's something they've been promoting a lot lately.) There's also a service called Bloglines that's owned by; I don't know anything about that, though.

So maybe, just maybe, you're wondering what interesting stuff I'm finding while I'm looking over all my RSS feeds. Well, you're in luck! You see in the sidebar, where it says "Recent News I Found"? While I'm perusing my RSS feeds, I've got a button in Google Reader to share articles. That will put the article in the "Recent News I Found" sidebar. I've been doing this for several days now, and there's quite a few things I've found in that time.

Of course, the "Recent News I Found" section has an RSS feed. The articles I put in there aren't in the blog RSS feed, and vice versa. That way, you can choose to read just the articles I find interesting (but didn't write), without having to deal with my ramblings, or you can read all my wisdom without having to put up with the rush-a-day tidbits about killer badgers in the UK. The feed for the "Recent News I Found" section is a bit long, though... ready? Here goes:

Okay, that's it for today. That's plenty enough, don't you think?

Friday, July 27, 2007

If You Can Read This, Thank A Sysadmin

Today is Sysadmin Appreciation Day. Sysadmining, as most of you know, is a rough, thankless job. That's why the last Friday of July is designated Sysadmin Appreciation Day. Do something special for your system administrator, network administrator, sysop, support tech, or (ahem) son today!

If you have no idea what I'm talking about, then visit

Sunday, July 22, 2007

Noogler, Day 19: TGIF!

I HAD so hoped that I'd be able to get a few things done during work Friday. Well, to be fair, I did get a few things done... just not the things I had intended to.

I started off by going to the gym. I had class over my Thursday gym appointment, so had moved the appointment to Friday. This meant that I skipped a couple of minor meetings that I didn't have to go to anyway.

Normally, I don't like to start off a day at the gym. My knee is worst first thing in the morning, and I'm usually pretty tired... I'm just not a morning person. But if needs must!

My gym doesn't have a shower, so I went to Google still in my gym clothes. I'd heard there were showers in my building, in the first-floor bathrooms. On the way there, I passed by my Todd, my boss's boss, and stopped to tell him my idea.

In my day 18 entry, I talked about how I'd given Cheryl some advice on getting through the first bits of training. I figured it would be good to give some of the same advice to everybody coming in to the group: a kind of "new hire survival guide". For example, while there's an excellent internal glossary at Google, you can't look up every unknown word you see every time on the team mailing lists. It'd take a half hour to get through a five-line email!

There's a few terms you'll hear again and again when you first get started. In other words, the distribution of the usage of unknown terms you'll encounter follows the 80/20 rule. That means that a short, one-page, context-free glossary could give a Noogler a big head start on understanding what they're seeing... just something you could print out and put next to your monitor, so you're not constantly looking up words.

That sort of thing, I figure I could put together pretty easily. There's also some general advice I'd give. It's the same advice I always gave to new Juniperites: don't panic. In their first few months at Juniper, every new employee is certain they're about to be fired. There's so much coming at them from every direction, you get overwhelmed, and think you're not keeping up with expectations. The reality is, you're doing fine, people expect you to take time getting up to speed, and you're not expected to keep up with everything coming at you even after you're an established employee.

Besides, Juniper doesn't hire you unless they think you've got the chops. Once you're hired, you've got what it takes... they're not going to fire you a couple of weeks later!

I'd say the same "don't panic" advice applies to Google. That was the most important advice I gave Cheryl, and it's that sort of thing that I'd also like to put in the survival guide. I did, however, have to verify with Todd that he hadn't ever fired somebody a couple of weeks after hiring them! I figured that was a sure thing, but I wouldn't want to write it down without fact-checking. Todd, of course, said that he hadn't, and gave me some advice on the survival guide. He thought it was a great idea.

I also took the time to get the footrest that was recommended during my ergo eval. It will let me keep my knee extended, which helps with my knee problems, without giving me a bad posture. Fortunately, the footrest is a lot easier to get than the Kinesis... I just had to drop by the hardware depot and pick it up. (Regarding the Kinesis, I did drop by Fry's Sunday to get one for home. No luck; I didn't think about that Kinesis keyboard, while more common than Maltrons, are still pretty uncommon.)

After that, I had to catch up on my email. I've been talking to a couple of groups internally about their products. For example, just for my own convenience, I wrote a plugin to interface with one of our internal websites, and was talking with the responsible group about it. They had some responses, etc.

I also spent a few hours writing some code for some other Nooglers, to them with a question that had come up. Most programmers have code they've written just to customize and improve their development environment. You can often get a good indication of how far a programmer has progressed in their career by looking at how much they've customized their environment. This is partly because as you go through your career you tend to add on to the customizations you've made so far, so they accumulate. It's partly because more capable programmers can quickly write a customization without losing much time; a veteran programmer can write a customization in an hour what might take a new programmer all day or longer. It's also partly because old programmers tend to be more crotchety about the way they want their computers to do things! (I personally have about 3000-4000 lines of such code, 3/4 of which is for Emacs. It's been accumulating since 1993.)

Anyway, one of the Nooglers asked about a way to do one such customization. His question was actually a good one, and I thought of a solution that would be applicable to a wide range of similar problems. But it took me a while to write and the code— about 50 lines of shell script— and some time to write up the email.

Well, by the time that was all done, it was lunch time, followed by another class. This one was a more detailed class on our cluster infrastructure (see day 17). Exciting stuff, but I've still got more to learn on the topic. The rest of my learning about the cluster system will be self-directed, though.

I was barely after class when it was time to go to a TGIF. I ducked out of the TGIF halfway through, and that's when I heard from a friend who wanted to hang out. Since it was half past five, I figured it was okay to meet up, and so finished another day as a Noogler.

Thursday, July 19, 2007

Noogler, Day 18: The geekiest social scene

[Preface: I wrote all this last night, and promptly forgot to post it. D'oh!]

You may have noticed that my posts have been getting shorter. There's two reasons for this. The first reason is that you may well be getting quite tired of such long posts! A second reason is that now my days are not all completely different from one another.

Some of my posts are about the day's events, and some are about my philosophical musings on things like the campus atmosphere and 20% time. It looks like I've been moving from the former to the latter over time, as I'm doing less cool day-to-day stuff and more coming to understand the environment around me. That means that at some point, I'll probably stop doing the daily posts, and move to an as-I-think-about-things format.

Now that I've talked about that, I'll talk about the cool day-to-day stuff I did today. I was social today. Well, I always try to be pretty social, but moreso today. After classes, I spent some time hanging out in peoples' offices. This involved things like talking about the referral process, so I can refer my friends. Of course, a number of the people I'd want to refer work at Juniper, and my contract with Juniper says I can't refer people from there for a year... oh, well.

I also found out about schwag. The general shirt cabinets tend to empty out fast... I've been told that 10 minutes after they're stocked, they're emptied of everything but the small women's sizes, and those still don't last long either. Really, if it's schwag I'm after, my best bet is to go to and find what I'm after! I did manage to scrounge up a couple of shirts specific to the SRE team, though.

Today we had an Ads SRE party. This involved us going into a room with snacks and drinks and playing Wii. (The team has a Wii, with four controllers, and a number of party games.) I was fortunately able to help several people get going with the games, since I own most of the ones we have, and all the ones we played today. Nevertheless, I'm sad to say I was handed my hat in Wii Tennis and Monkey Battle, and we didn't finish the Mario Party game. Nevertheless, I think everybody had fun.

After that, I talked to Cheryl for a little while. She's the newest ads SRE; she just joined this week. See, there's a lot going on your first week, and while the SREs are all very supportive, they went through different training programs. I didn't really have anybody I could go to and say, "OhnoI'msofarbehindWLAAAUGH!". Well, I could, and might get sympathy, but no empathy, and there's no way they could have said "I went through the same thing, and felt the same way, and it turned out alright." So I figured I could do that for Cheryl.

After that, Matt came to visit. When I called him, he had just picked up food from Seto Deli, but they were closing, so he had to get it to-go. I invited him to come over here and we could relax and visit. I picked up some grub at Charlie's, and we sat around outside and ate our food. After that, we relaxed for a little while in some comfy sofas nearby, and then embarked on the self-directed one-hour tour that our guest center has designed. It's a tour that I'd been meaning to take anyway, just to explore the campus, but I was glad I could bring Matt along. I still think he shoulda tried one of the smoothies, though.

It looks like the entire campus is about socializing today. Earlier, there was a farmer's market. While I was showing Cheryl around, there was a dance class going on not far from our offices. There was a university that was having a mixer for current and past students here. There was some sort of event that involved firepits around the volleyball courts. On my way back from dropping off Matt, I saw that the firepits were lit, and there were people around talking cheerfully. Then the sprinklers came on.

Noogler, Day 17: The Light Dawns

This is going to be a short one, because I'm not getting started until pretty late.

I previously talked about the fact that I don't have a lot of experience with some programming architectures. One of these is something called cluster computing. This is when you have a lot of computers together all working on jobs.

Now, as you know, Google has a lot of data to process. We use cluster computing to deal with that. That means that there's a cluster infrastructure managing things. If you type a query into Google, the job of searching the web for what you typed (and correcting spelling, and looking for ads) gets spread out among many, many computers.

In a cluster system, there's some sort of cluster management infrastructure between the program and the machine. How thick this layer is depends a lot on your system. In an nCube system (which is more akin to a supercomputer than a cluster, but there's similarities), it's pretty obvious to the program that it's part of a cluster. In a Beowulf cluster, the entire cluster acts more like one computer than many. In a Cell cluster, the reality is somewhere in between.

Despite this range, in any cluster system, there's a layer between the program and the hardware. Now, as a programmer, I have to deal with abstractions all the time. It's a big part of my job. Nevertheless, on a typical system, I can talk about the computer at all levels. At the top level might be a user deciding to click on a hyperlink. What makes him want to do this? Why does he know what effect this will have? How did he decide that this was a useful action to take? All these are questions of user interface theory, which is an area that has gotten very little research until recently. At the lowest level, we have transistors. These are taking advantage of field effects to allow electrons to flow from one point to another, depending on the behavior of electrons at a third point. This is the fundamental component on which computers are generally built.

I've got a pretty good understanding of the layers between those two points. It's a bit sketchy near the extremes— my subatomic physics isn't really up to snuff— but in the middle, particularly in the lower level of the software, I've got it covered.

Now, a cluster system puts an entire abstraction layer between the software and the hardware. Instead of saying that program X is running on machine Y, you would say that program X is running on this cluster over there, that consists of a lot of machines. Depending on the cluster system, it might be running evenly spread across each machine, or parts of it are on some machine and parts on another, etc.

This has made me a bit uneasy. I've been having to learn about a lot of programs running, but I haven't really had a good feel for HOW they run. When we were talking about different programs, or subprograms communicating, I couldn't tell how they were communicating... whether it involved sharing some RAM, sending data over a network, or somewhere in between. All of these are possibilities in a cluster architecture, and I didn't know anything about ours.

Today, we went over the cluster architecture in general, so I'm quite happy about that. Now I have a basic groundwork for the computing infrastructure, and yesterday I got the basic groundwork about the data flow I'm supporting. Tomorrow, I've got training on a number of other job-specific aspects, such as what's expected when you're on call, and more detail about our specific systems and how they work.

I've also been talking to some people around here about some ideas I have. One involves using some AI techniques to make our lives easier. These are ideas I'd been thinking about at Juniper, but wasn't able to get the buy-in to start the project. Here, people seem enthusiastic about the idea, so I think I'm going to start looking in that direction pretty soon.

I've also got some ideas about ways to organize the communication between parts of our computers, but I'm less likely to be able to see that out; it may be too radical to be implemented with today's state of the art, even here. Nevertheless, I'm going to throw the idea around some and see if it sparks some good, more practical ideas.

As a brief note on another topic, I've been playing with a lot of the Google products I hadn't looked at closely before. I've got a couple of ads accounts now to play with, for example; that only makes sense, since I'm in the ads team! I'm also exploring some of the other properties, such as Google Reader, Co-Op, etc. Expect to hear more about that later, but for now, it's time for bed.

Oh, I almost forgot. I got my ergonomic evaluation today. They're backordered on the Kinesis keyboards, but I'm going to go by Fry's at some point and get one for home so I can learn the layout while I wait. Anybody care to play two-player typing speed games while I'm learning it?

One final note: in the picture, you can't tell clearly, but that balloon between the desk and the door is maintaining its position unsupported. It doesn't have much buoyancy, but it's still got a little.

Tuesday, July 17, 2007

Noogler, Day 16: Second wave of classes, Kinesis, and 20% time

I hope you weren't eagerly looking for a day 15 post. I think that some of my daily posts have gotten a bit thin anyway, so one missing day isn't going to be a killer.

I'm going to talk about a few things here. First off, let me tell you a bit about work. Crusher asked me today if I was enjoying my new job. I said that I'd give him an answer once I knew what my new job is.

There's certainly truth to that. I've been learning a lot about the company, the infrastructure, the languages, the libraries, the problems, the solutions, etc, etc. I still don't know what I'm going to be doing day to day. I've been reading the team mailing lists, but only understanding 5% of what I read.

Fortunately, last night, my boss started setting up the training classes that are specific to our job. I've been through all the stuff that every engineer goes through already, but I really have no idea what I have to do day to day. For the few weeks, I've got New Ads SRE training. The first session was today, taught by Alex. It was a more in-depth discussion of some of the stuff we'd gone over in previous classes, and it looks like a number of the upcoming classes will go into more depth on individual parts.

I'm quite excited about these classes. While I'm certainly learning a lot in my self-directed studies, I do still feel a bit ungrounded. I was hoping to get my sea legs with the starter project, but it looks like these classes will give me a lot of orientation.

I'm also looking forward to my ergonomic review tomorrow. I know, that sounds dull, but you may recall from day 10's entry that it's part of the process for me to get my new keyboard. The usual bowl-keyboard that Google issues is a Kinesis, but I'm used to a Maltron.

I had first started using the Maltron on the recommendation of some of my friends from GNU and red-bean. If it gives you any idea of the obscurity of the Maltron, though, mine has a serial number in the 4900s.

Still, I'd been thinking about switching to the Kinesis. The Maltron uses a proprietary key layout, whereas the Kinesis uses the Dvorak layout, which is built in to most OSs. This means that I could sit at any keyboard and switch it to using a key layout that I'm comfortable; with the Maltron, I'd have to bring my keyboard if I wanted to do that.

The Kinesis is also much more popular than the Maltron, and easier to get. Many hard-core geeks are at least passingly familiar with the Kinesis, whereas the Maltron is almost unheard of. The story is that Kinesis first tried to license the Maltron for the US, but Maltron turned them down. Kinesis then developed a similar keyboard, but with the Dvorak layout instead of the proprietary Maltron layout.

So I started wondering, has anybody switched from the Maltron to the Kinesis? What were their experiences like? I spent a bit of time scouring the web for comparisons.

I couldn't find any real comparisons, but I did find a blog entry from a guy who was in the process of switching from the Maltron to the Kinesis. This guy, Fitz, is one of my red-bean friends, but we hadn't talked in quite a while. I looked over his blog to see what he's doing these days, and found out that he's working at Google too! (Not at my complex, though; like many red-beaners, he lives in Chicago.)

I shot him an email, and we talked a bit. He has been moving to the Kinesis over the past few weeks, and is quite happy about it. Based on his recommendation, and the reasons I went into above, I think I'm going to get a Kinesis at work, and another here to replace the Maltron, so I can learn the Dvorak layout.

Now I'm going to talk a bit about 20% time. One of the most famous things about working for Google is that you can spend 20% of your time working on whatever you want. Some released products, such as GMail, started as 20% projects.

Some people will take part of their 20% time to fix a bug that's annoying them, or add a feature they want, to some other Google product. For example, there's a story on the official Google blog from a guy who writes internal tools to manage partner relationships, who used some of his 20% time to add a new key shortcut to Google Reader.

Other people will use their 20% time working in groups that interest them. It's not uncommon for people to spend their 20% time in a different group, in order to size them up for maybe moving to that group. It makes for a pretty smooth transition. I had wondered about that; people move around a lot within Google, so I was wondering how the internal turnover didn't eat them alive in retraining. Part of it is that people have been spending 20% of their time doing the job before they move!

Some areas are resourced mostly with 20% time. I know a number of my teachers generally taught in their 20% time, and had an 80% job doing engineering.

In fact, there's a lot of groups that are composed of people spending their 20% time on something they feel strongly about. In any development organization, there's a number of areas that people feel are important, but don't get well-resourced: training, code readability, testing, etc. For instance, there's one group of people that, in their 20% time, write flyers about code test techniques, and puts these in the bathroom stalls. "Testing on the Toilet", the series is called. Through this and other means, they're actually doing a lot to improve the quality of testing at Google.

That's what I find the second best about 20% time, as a concept. You get people who are passionate about what they're working on. They really do want to work on testing, or really do want to teach, etc. This means that they do good work: they are thinking about this area all the time! Now, this isn't to say that people aren't passionate about their 80% work. They certainly are! But I think that the 20% time has a fluidity and openness that your 80% projects just don't have.

So what do I find the best about 20% time? Morale. Engineers work best when they're finding outlets for what they really want to do. Traditionally, management theory has focused on handling this by improving morale either by encouraging developers to be engaged in their projects (see the books "Quality is Free", and most especially "Peopleware"), or by collateral means (such as free food and offsites). I don't know of anywhere that's ever decided to channel engineers' ideas into productive areas directly, to improve both production and morale.

And before you ask, no, I don't have a 20% project yet. Of course, I don't even have a grasp of the other 80% of my time yet!

Friday, July 13, 2007

Noogler, Day 14: Picture Extravaganza!

I'm still in the office as I start this, since I'm hoping to hang out with Scott later on. [It ended up being finished Sunday, 1:30 AM. So much for that plan. -Piq]

Today was a pretty typical day, whatever that means. I overslept, which is a typical start to the day. I was quite panicked when I woke up, and hoped to get ready in time to make it to my class this morning. I ended up about 10 minutes too late. It's a class I should attend, but it's okay to put it off a little while. I'll take it next week instead.

On the upside, I've been sleeping MUCH better. The pharmacist's advice seems to have been helping, and now I'm pretty much caught up to normal sleep levels.

At any rate, I was all free and clear to study. I worked on a few different things, and after a while, I got a call from Matt. There are several 7-11s that have, in preparation for the Simpson's Movie, renamed themselves to Kwik-E-Mart, and started selling items from the Simpsons show. You may have noticed the KrustyO cereal in my day 10 post. They're also selling things like Squishee frozen drink, Buzz cola (which smells somewhere between Jolt and generic store cola, and if you've played Simpsons Road Rage, you may have some more thoughts on the matter) and the pink-glazed donuts with sprinkles that are ubiquitous in the Simpsons.

Now, the only one in this area is in Mountain View, about half a mile from the Googleplex. Dennis (a friend of mine from Juniper, one of the ones I try to keep in touch with) is a die-hard Simpsons fan. He, Matt, and another guy at Juniper who had been hired after I left were all going to the Kwik-E-Mart to check it out. Matt was called me to see if I wanted to join them. Of course I did, so I went down to grab a bike.

As I was getting on the bike, three Koreans asked me a few questions about the bikes: if they're just open for anybody to use, what the flag is for, etc. As I spoke with them, I learned that they were visiting. One is a reporter, another is her translator, and the third hung back with no apparent involvement in what was going on. (Despite the translator's assertion that the reporter wasn't on the job, I did see her taking some notes.)

They told me that they were in the area and decided to visit the Googleplex, to see if they could arrange a tour. They had intended to go to the visitor's lobby and see what could be arranged. I escorted them to the visitor's lobby in building 42, talking to them as we walked, and then went back to the bike.

When I got to the Kwik-E-Mart, the Juniperites were waiting out front, with Dennis sipping on a Buzz cola. They got a kick out of the little blue Google bike with the oversized basket and orange flag. After checking out the Kwik-E-Mart (and taking pictures; note the faux cartoon walls on the exterior), we decided to eat. And what better place for this than at Google!

Now, I didn't tell them that it was a somewhat special day. There was a whole Viva la France thing going at Charlie's, with special menus, special cheeses, oysters, etc, etc. We ended up all three going to Bistro G, where they were serving ratatouille, roast chicken, etc. I went over and got some (non-alcoholic) chardonnay, and we sat down outside to eat and talk.

After we had eaten, I took them on a brief tour of campus. Google does actually have a number of prepared campus tour plans, for just such an occasion. I hadn't memorized any of those, but had fun ad-libbing. Unfortunately, Dennis had to go soon, so we wrapped up quickly and they headed off.

After they left, I went back to work. I talked to Jason about my starter project. He explained the project to me, and we worked out more or less what parts of it he knows, and what parts I know, and what parts neither of us know. I've got a pretty good idea of what I need to do on this score now.

I was setting up a plan for what else I was going to learn, but it occurred to me that I don't know how much I don't know! Fortunately, there's some internal self-assessment quizzes. I sat down to go through the C++ quiz, since that's one area that I have no idea whether I'm a dunce or a whiz. I took exception to a few questions on this quiz... some are a bit vague, and they're vague in ways that mean that they clearly mean one thing to a novice, but clearly mean something different to an expert. (I'm not an expert in C++ by any stretch of the imagination, but I'm talking about some general language concepts.)

I worked through the first 2/3 or so of the quiz, but by then it was getting rather late indeed, and my brain was starting to deteriorate. I decided to put the quiz away and do something more productive— like start on this post!

Fortunately, we got the pics from the offsite today. Unfortunately, I can't post them on the Intarweb for obvious privacy reasons. To make it up, I've posted several other pictures from around the Google campus. There's some of a microkitchen; I'll point out that those are all from a single microkitchen. There's a number of doodles from one of the nearby markerboards. There's a few signs that started from the fact that one of our products is called AdSense. There's a mockup of SpaceShip One. There's fun stuff around Google.

Thursday, July 12, 2007

Noogler, Day 13: A Day At the Races

I'm starting on this one before I leave the office. I figure I'd be better able to write these when they're fresh in my mind.

I'm not sure if you recognize the title. It's a Marx Brothers film. I'm aware of the fact that I make a lot of references that people don't get, but sometimes that takes me off guard. Like today; I told a guy, "Welcome to the jungle. We've got fun and games." He had never heard the song I was quoting; when I said that it was a mid-80s song, he said he was about so (1'6") tall at the time. Every now and then, I'm reminded that I'm the old one around here.

This was as we were getting on the bus. "What bus," you ask? Why, the Google bus to take my team to the go-kart track.

You see, today was an off-site team (Ads SRE) event. We first went for lunch (Cafe Moma, which serves "multi-cultural comfort food"). I had just shown up; I slept late this morning.

After lunch, we all piled onto the bus, which is one of the usual Google buses. It's pretty much like a nice charter bus with TVs, wireless Internet access, etc. And a bunch of geeks having conversations about various geeky things. For example, I was talking to the guy next to me about how much I'd like to see a recreational mathematics course; it turned out that he used to teach such a course (by a different name) at a university. Others were talking about things like switching fabrics, new gadgets, and influential people in the computer community.

At the track, we all signed in, and changed into jumpsuits. After that, we were given a briefing about the rules of the track. We divided into two groups, and each group was given 10 minutes on the track to get used to it.

Now we're ready to race. Here's the rules. We were divided into teams of 3s and 4s. Each team had a kart, and we'd decide who the first driver would be. The race was for 45 minutes, and everybody on the team had to drive. When we'd want to switch drivers, we'd write the car number, the driver's name, and a note on a markerboard, and hold it up. The driver would then drive into the pit stop after the lap, and swap out with a different driver.

But, because this is SRE, we had to make things difficult. The boss brought puzzles. Once your driver pitted, while your replacement driver was getting ready, the others on your team would have to put together a puzzle. Only once that was done could your driver leave the pit.

My team consisted of myself, Yao (an officemate), Eric (my mentor), and Basab (an older Indian man whom I didn't know). Yao was the best driver, followed by me, Eric, and then Basab.

We used Yao for the qualifying round (10 minutes), which was a mistake. We didn't know it, but the qualifying driver would also be the first driver for the race. That meant that he was already getting tired when the real race began. Meanwhile, we looked at what the puzzles were.

They were maps of the US with the 50 states cut out. On the board, under each piece, was the state's capital marked with a dot and the name. As Yao raced, the rest of my team made a strategy. We'd avoid putting me and Eric back-to-back, since that would mean that Yao and Basab would have to solve the puzzle. Seeing as how that involved US geography, Eric and I were probably marginally more qualified to solve it. We decided to split the driving time with Yao for about 13 minutes, me for 12, and Eric and Basab for about 10 each. This was to give our better drivers more time on the track, while still giving everybody a chance to drive. The rotation we picked was Yao, Eric, Basab, and me.

This plan saw its first weakness when Yao got tired and pitted. We hadn't considered that our plan would lead to him starting with 23 minutes in the car, which is a LONG time! While Basab and I started on the puzzle, Eric put on his helmet and got in the car. Basab and I started on the puzzle, and Yao joined us a minute later once Eric was in the car. We finished the puzzle and Eric took off.

We considered another problem: the puzzle takes about 2 minutes to solve, so we subtracted that from each person's time-on-track preparations. We worked out about when to bring Eric in, and gave him a "last lap" note. Unfortunately, between when we gave him the note and when he pitted, lots of other cars were pitting. Since there were only three puzzles, we had to wait for one of those to come free before we could start.

Yao and I waited for a puzzle to come free, and Basab went to relieve Eric. Once the puzzle was free, I called to Yao and we jumped on it. Eric joined us, we finished, and sent Basab on his way.

Now, Basab was rather self-conscious about his speed. When I had talked with him earlier, I wanted to be both encouraging for him to go out and do his best, but also making it clear that the point was to have fun, not to win. It came off as a rather schizophrenic talk. In the end, in order to not hold the team back, he pitted after just about five minutes.

That left me, our last driver, with 15 minutes to go! I suited up and hopped into the car. Once I got the signal, I headed up to the line and floored the gas.

You can look at the maps at if you like; we were on the Monza track. Unfortunately, the start line isn't marked on that map. If you're going along the bottom (left to right), you can either take the track, or go straight into the pits. The ramp out from the pits is just above it, so the pits are kind of an extension of that bottom-left turn. The start line is just after that, near the bottom left. So the first turn is a little bit down from the center of the map.

I'd figured that the hard spot would be turn 7, the U-turn in the right center of the map. I asked one of the workers there about that, and he said that no, the toughy is the chicane at turns 3-5. The thing to do is to try to take a tight line on it, and you can pretty much floor it; the bridge right after the chicane is going to help you recover traction going into the straightaway.

Generally, things went pretty well. I got pretty frustrated with one car on the track, who had about four cars stuck behind him, despite being told by the track marshals to let us pass. There's a blue and yellow flag that's used to signal this; he ignored that flag for about two full laps while I was behind him. (I later heard one of our more vocal employees griping about his behavior; we never did find out who the driver was.)

My biggest problem was at turn 9, the U-turn a little bit above the center of the map, just to the right of the chicane. You take that turn pretty much blind to what's on the other side. Well, there had been a spinout there, and RIGHT on the other side were three karts stopped. I slammed on my brakes as soon as I came around that turn, and although I had lost a lot of speed going into it, I still wasn't able to brake fast enough to avoid a small collision. Not enough to be a problem, though.

After the race, they gave out medals to the top three teams. The go-kart facility provided medals, and our boss provided another set of medals. I liked our set better: gold, silver, and bronze pagers. (I later examined one: they were real pagers, just obsolete, from Weird Stuff, spray painted, with "Google SRE '07" written over their screens.)

We went to a classy looking place where we ate and drank and played pool. There, they gave out prizes to the top few teams, the top individual lap, and the slowest individual lap. They also gave everybody a pretty nice socket set. The handle was stuck in the foam in mine; I had to use my Leatherman to pry it out.

After that, I came back to the office, caught up on my email and a few other menial tasks, and sat down to write this. Despite my protests in Monday's entry, today WAS an all-play-and-no-work day.

Wednesday, July 11, 2007

Noogler, Day 12: Back to classes

Today I had to get up extra-early to go to the gym. I won't be able to make my normal Thursday timeslot because I have class then, so I had moved it to this morning. Which made for a tired, but quite vigorous, workout. I think the pharmacist's advice helped, too. I slept well last night, and was doing much better today.

After my workout, though, I did have to shake a leg to make sure I could get to class on time, with a banana as a quick snack. I did actually end up getting there early, though, and sat in The Hub until it was time to go to class.

The instructor was an engineer whom I'd briefly spoken with before; I needed to talk to her about data I'll be needing for my starter project. More about this class another time; for now, I'm hoping to get done writing this by midnight.

I should probably explain one of my photos from yesterday. In case you couldn't read it, it reads:


  • We will source fresh, seasonal, local & organic produce as a first choice & preference
  • All prepared meets are nitrite & nitrate free
  • Our chicken is always antibiotic & hormone free
  • Our beef, lamb & pork are premium, natural products
  • We follow the seafood standards as outlined by the Monterey Bay Aquarium Seafood Watch Program (
  • We will engage local artisan vendors that can provide the quantity and quality of culinary products expected by Googlers
  • All stocks, sauces and dressings are made from scratch
  • We do not use products that contain MSG


  • We encourage openness, creativity and the sharing of thoughts, ideas and new concepts
  • Our menus are produced with sustainable, local and organic products using healthy cooking methods
  • Our goal is to educate our staff, customers, vendors and ourselves about the food experience and the effect it has on our global community
  • We commit to live our values by participating as a team in at least one charitable event each quarter in our community
  • We commit to continually evolve our business model to improve service, quality and efficiencies

— Google Culinary Team

Okay, that was one sign. I read another today. I'll preface this by saying that we normally use ceramic plates and metal flatware, which can be taken elsewhere and left in a microkitchen to be bussed if so desired. There are also disposable "to-go" boxes and flatware. The other sign was about that.


We are now using non-oil based disposable "take-out" packaging made from renewable, tree-free, resources that are sustainable, compostable and biodegradable.

Our paper plates, take out boxes and soup cups are made from "sugar cane bagasse," the fibrous residue remaining after juice is extracted from the crushed stalks of sugar cane. The use of this agricultural waste product to make food containers prevents it form being burned in the sugar cane fields, reducing air pollution and the production of greenhouse gasses.

Our new 100% corn-plastic cutlery, clear take-out and deli containers are made from NatureWorks(TM) PLA, a corn based plastic. Naturally derived from corn, the basic raw materials for PLA are carbon dioxide and water. Growing plants, like corn, take these building blocks from the atmosphere and soil. They are combined in the plant to make carbohydrates (sucrose and starch) through photosynthesis. Dextrose, a natural sugar derived from the starch in kernels of corn (or maize) is used as the primary raw material for PLA. NatureWorks(TM) PLA uses up to 50% fewer fossil resources than conventional plastics in its manufacture. It can compost completely back to carbon, water, and organic matter, keeping a balance in nature.

Now, lunch is done, and back to classes. They were over interested topics, but by the end of the day I was still a bit glazed over.

The classes took up most of my day, and as I write this, it's now just a bit past midnight. (Part of this is because I got distracted watching "House".) I guess that means it's time for me to send this off.

I remembered to take a picture of my balloons today. It looks like they're almost done with their job. I suppose the MTBF for mylar balloons is about 2 weeks; I've only got a short time left of being a Noogler.

Tuesday, July 10, 2007

Noogler, Day 11: Work and Play at Google

I know, it's earlier than I normally send this out, but I really hope to get to bed early. When I got up this morning, I was exhausted. I ended up getting in too late to make it to my first class, and the other two classes today depend on it. It's not something vital to me at the moment, so I'm okay with making it up next week.

That also meant that I had all day to work on some of my other studies. Today, I was studying Sawzall, a log analysis tool we have around Google. After what I said yesterday about how I don't talk about work, I figured I should talk about work a little, in case you're curious about what I'm looking at. (And lest anybody wonder about all the company secrets I'm divulging, I'll note that the following is all in a published paper.)

Sawzall is a programming language developed by Google specifically for analyzing logs and extracting relevant data. There's a LOT of log data, and so they developed a system to distribute the analysis over hundreds or even thousands of computers. Although this could be done using a general-purpose language like Python, using a purpose-built language has a few important advantages. Sawzall is designed around the idea of processing logs. It has a lot of functionality that is useful in this context, such as date-handling functions, easy-to-use regexes, etc.

Now, Perl is also built around the idea of processing text files, but Sawzall has one big advantage over Perl: it's designed for distributed computing. When a Sawzall program is run, it automatically is given to many, many computers. Each computer processes a portion of the logs, and then they work together to combine their results appropriately. However, all of this coordination is done by Sawzall. It doesn't require any special code by the programmer; it's done automatically.

These traits allow you to write efficient programs for log analysis quite easily. For example, a program to compute a frequency distribution of number of queries vs. minute within the week only takes 7 lines. In a few simple benchmarks (Mandelbrot and Fibonacci), run in a non-distributed manner, Sawzall is quite fast: 3.5 times faster than Python, 5 times faster than Ruby, and 4 times faster than Perl.

It also scales incredibly well. Ideally, putting five times as many machines on a job should make the job five times faster. In practice, this isn't ever achieved, since there's some overhead. The overhead is only 2% in Sawzall: putting five times as many machines on a job makes it 4.9 times faster.

Now, most languages are built around an idea of execution similar to Algol's. They don't work too well when a different execution style is needed. (This is why I figure that the current state of the art in multithreaded programming is so lousy.) Generally, languages that are designed to work in an unusual evaluation model are fairly different from most traditional programming languages. For example, programs in Haskell, ML, or Prolog are quite different from those in C, Perl, or Python, and require a different way of thinking about programs.

Now, I've worked with unusual evaluation models; for example, Params, my magnum opus at Juniper, is based around reverse-chaining evaluation. I haven't done much work on distributed computing, though. I did a small research project at SWT, and designed Params v1 and v2 so they each could later be migrated to a distributed model (e.g., Beowulf) without completely redesigning the core algorithm.

Sawzall is, as alternative model languages go, pretty straightforward. But it's still a bit more work to think about. As I've been working to understand how the language works, I've had to think carefully about what the implications of the distributed model are. This is the area where I had the questions I mentioned on day 9, when I got referred from one person to the next. I'm a little bit surprised that the others I spoke with hadn't looked into these issues themselves. On the other hand, I'm a bit more of a programming language geek than most programmers. I enjoy thinking about the ins and outs of programming languages.

Now that I've gone through all that, you might understand why I don't talk about what I'm working on much. So let's talk about some more fun stuff, and more of my narratives.

As I said, I was pretty tired today. After just a couple of hours of working, I was having trouble concentrating on anything of significant complexity. I decided to take a little walk, see if that would help wake me up.

After a little bit of walking around, I decided it wasn't helping, and a nap was in order. But where? I walked into the nearest building and wandered until I found a couch. I put Pachelbel's Canon on the iPod, and relaxed.

It wasn't much of a rest. The couch had a pretty hard frame. It would be fine to sit on and talk, but it wasn't much of a bed. Fortunately, a friend I'd seen around campus happened by, and gave me another suggestion. Just upstairs, there were some small conference rooms; little more than phone booths. (My understanding is that they're usually used either for phone calls or interviews.) Two of them have the huge 6' beanbags I mentioned on day 2. Both of those were occupied, but there was another such beanbag (this one 8') nearby. We moved it into an empty room (have you ever tried to get an 8' beanbag into a phone booth-sized room?), where I was able to rest to the strains of Schubert's Piano Sonata No. 20 in A, D. 959: IV. Rondo (Allegretto). Despite the overly complex name, this simple song is possibly the most relaxing music I know. (A portion of this was used as the credits music for the 80's sitcom, Wings.) (The enclosed photo is of a 6' bag, taken later when the room was unoccupied.)

After that, I went on to lunch, and enjoyed some orange chicken with jasmine rice and a small green onion cake. I will say, despite the wonderful food at Google, the chopsticks are pretty lousy. If I find myself eating Asian often, I might keep my own set at work. While I ate, I considered that although I'm a pretty finicky eater, I don't ever have problems finding food that I like at Google. I'm a bit surprised by this.

Back to the desk, back to work for a little while. Still sleepy, and my knee hurt. After some time at this, I went to the pharmacy nearby. Now, if you have time, you might look at the route Google Maps gives to get from Google to the Walgreens. I ask you, how could I have taken a wrong turn?,37.403936,-122.096970&saddr=1600+Amphitheatre+Parkway,+Mountain+View,+CA+94043+(Google)&daddr=112+N+Rengstorff+Ave,+Mountain+View,+CA+94043+(Walgreens)&sll=37.41393,-122.090945&sspn=0.03395,0.058365&ie=UTF8&z=14&om=1

Nevertheless, I did, but it was easily rectified. I spent a little bit of time talking with the pharmacist about my sleeping problems, and got what I think is pretty good advice. (I'll still need to order a PSG, but this should help deal with the issue temporarily.) I also picked up another reusable icepack with a knee strap, so I can have one at work and another at home. Finally, I got a couple of chemical (instant) icepacks and an Ace bandage, so I can apply an icepack if I need to when I don't have one frozen.

As I went to Google (about 16:00), I saw that the sky had suddenly gotten overcast. When I got back, Karl pointed it out, saying, "Is this still California?"

The overcast skies didn't keep people from enjoying themselves outdoors, though. Volleyballers played volleyball, jugglers juggled, dancers danced. The dancers were what originally caught my eye— or rather, the music caught my ear. Bongos and guitar can do that.

Noogler, Day 10: What am I doing here?

I had no idea what to do today. Last week, I had no classes, so I was able to do my own work. This week, I have classes, but none today. I didn't want to embark on a long course of study, since I had only today to work on it, but then again, I didn't want to waste the day either.

My morning, however, didn't give me much of a problem deciding. I slept late. I got up around 9:30 or 10:00. While I was in the shower, it occurred to me that I have an 11:30 workout scheduled. If I left here at 10:30, I could get to campus, be there for half an hour, and then have to leave. What was the point of that?

I did a little reading from my living room, and then went to my workout.

Straight from there to Charlie's to get some lunch, or (if you remember my day 8 post), "breakfast". As I ate my chicken enchiladas, I had a brief chat with a security guard I had met but hadn't mentioned on day 3, and listened to a podcast of Gabe and Tycho ranting about how disappointed they were in the Zune. (I didn't bother to finish listening to it.)

Filled with energy, I promptly dodged going to my desk by walking by the techs instead. It may have been a vain hope, but I asked if they knew anything about the stocking situation on the Macs. Fortunately, they informed me that they now are distributing Macs, and I might get mine any day now! I stood there and contemplated what life would be like if I had the ability to carry around my own personal computer. But that's just silly fantasy.

Then I went to my desk, where I still didn't know what to do to be productive. So I worked on my HR checklist instead. I went to add my pager to the pager database, but there were some technical problems with that.

I had previously asked— on my first day— about getting a Maltron keyboard, since it's much easier on my wrists. They told me that the Kinesis is the one they usually give out, but I could get a Maltron if that was more appropriate. They recommended that I get an ergonomic evaluation. (I've had one early on at every company I've worked at out here.) I had put that off so far, but it's something I should attend to. So I did.

The ergonomics group has a web page with some steps to take to adjust your chair and monitor properly, as well as some information on stretches and other work habits. They also had a link to where you can request an evaluation. I went down their list, and then requested the eval.

I soon decided that I should do something more directly related to my job, so I sat down to study some of the material I'd been working on.

At this point, I should probably point something out. There's large stretches of time that I don't chronicle. Of course, I'm talking about the technical study I do; I don't write about it, because it doesn't make for very interesting storytelling. Douglas Adams, in the early chapters of "So Long and Thanks For All the Fish", poked fun at himself for doing that.

It's just not terribly exciting to wade through a lot of my day. "I tried to check out the ops repository, but was told that my client wasn't created. However, it was trying to check out a different client than I was using. So I went back over the steps from a previous lesson, and realized that the client name needs to be set in an environment variable. I hadn't remembered that, so I checked my environment, and sure enough, it wasn't set. I took a little bit of time to clean up the phantom clients I had inadvertently created..." and so on.

It's fluff. You've got your own life to live once you're done reading this post (and possibly commenting); I won't bore you with the duller parts of mine. I'll leave the vast filler material to the works of bestselling fiction, so they'll have something to abridge for the audiobook version. It's not my place to do so here.

I bring this up because you might otherwise get the idea, based on a reading of these emails alone, that I never actually do any work. You might think I flit from cafeteria to gym to pool to arcade, never doing anything that might improve shareholder value. While I will readily acknowledge that I spend a degree of time in such activities, I also do spend unlisted hours at my computer working.

If I hadn't told you that, then you might wonder about if I worked at all today when my narrative went from asking for an ergo evaluation to riding a bike around the north end of campus, with only a sentence between.

I had intended to explore the park at the north end since I got there, but never had gotten around to it. The park turned out to be not at all what I expected, but nevertheless quite a nice place to relax and clear my head. I took a picture to include here, but I couldn't get the sun to move to the right angle to avoid the picture being backlit. I figure the best lighting for that photograph is to be had at about 8:30am, so you therefore should learn to live with disappointment. I did, however, manage to post a picture from a more unusual angle.

I took the bike back towards Charlie's, made myself a salad and turkey panini, and went back to work.

The rest of the day was the sort of dull work-stuff that I previously said I'd skip over, and besides, my laundry's done, and I need to sleep and be up early tomorrow. Oh sleep! it is a gentle thing, beloved from pole to pole.

Yeah, if I'm quoting Coleridge— and not even the best parts— it's definitely too late for me to be writing. So I'll just leave you with the pictures. I'm sorry I forgot to include the balloon picture again; one of them is now purely in the force of gravity, no longer buoyant. You'll have to either use your imagination (which should be quite easy for you), or wait until tomorrow to see it.

Monday, July 09, 2007

Noogler, Day 9: Freedom!

I showed up at work at about 10:30 or so, and most of the desks in my part of the building— where my team all is— were unmanned. I made a mental note to ask about what the team's typical hours were.

Since I now have my starter project, I figured I should start learning about the systems I'd be working on. I'll be working with a guy named Jason on this project, so I looked over at the desk where he sits. (Our offices have mostly glass walls. There's furniture, markerboards, etc. in the way, but I could still barely see Jason's desk from mine.) He wasn't there, so I sat down to study the systems I'd be working on for this project. It's not on my existing to-do list, but it seems important, and a good way to be going. There's several hours of material for me to work through to learn it.

My knee was bugging me that day, so I pulled my icepack out of the microkitchen's freezer where I left it Thursday. (My trainer and PT both tell me I need to be icing it daily anyway.) Unfortunately, some sort of syrupy substance had dripped on it. It was quite icky, so I carefully put it on my desk and went back to wash my hands. By the time I got back, my officemates were present. No ice today, sigh.

At lunchtime, I went off to lunch. There's a lot of options on campus, and I hadn't really been doing a lot of exploring in that vein. Although Charlie's has four to six different stations— depending on how you count— there's still plenty of variety around. I looked over the menus online, and picked out a place called American... er, something.

I hopped on one of the bikes and started going over to the building where it was located. I took off my headphones as Dirk's advice regarding them echoed through my head. (Dirk was the one who helped me when I first started biking.) I wish I'd remembered another part of his advice... the part involving shoelaces.

The shoes I was wearing that day have long, floppy laces. I double-knot them, but they're still too long. As you've no doubt figured out by now, one of them got tangled in the pedal. Being long, it was able to twist around the pedal several times before I felt the tangle— i.e., when my foot suddenly was stopped by my own shoe.

Naturally, my first instinct was to pedal backwards to untwist my shoelace. Bad idea. These bikes don't have the handbrakes I'm used to. They've got coaster brakes, i.e. the kind where you pedal backwards to stop. Instead of untwisting my shoelace, I came to an abrupt stop at the corner of the intersection I had been crossing.

I couldn't pedal forwards because of the shoelace being tangled, and couldn't pedal backwards with the coaster brakes. The pedal was at a rather inconvenient angle, and I couldn't dismount the bike. All I could do is hobble along awkwardly until I was well away from the corner, and then work out how to lower the bike to the ground without falling myself. I hope you're getting an amusing Charlie Chaplin-esque picture of this in your head, because I'd hate to have gone through all that silliness without getting some entertainment out of it.

Eventually, I did manage to disentangle myself from my bike, tucked my shoelace into my shoe, and rode on. I took a bit of a scenic route to get to the building I was going to, since I hadn't really explored campus much.

The cafeteria in question had a long line— unusually long, from what I overheard one of the chefs saying. There were also a high percentage of guests that day. I'd heard that a number of people had family visiting for Independence Day. Talking to somebody near me in line, I theorized that this could be the cause for the long line. She pointed out that many of the employees were taking vacations for the holiday.

I acquired and ate my lunch, and considered going to the next room over, where there were a number of classic arcade games like Defender and Robotron. But I had my work cut out for me, and I had taken a relaxing lunch, so I went back to work without playing. I considered taking the bike trail, but decided to do that sometime when I'd have proper time to check it out.

I considered these things. What I should have considered was tucking my shoelaces in this time. Feel free to incorporate by reference the relevant paragraphs here, because it all happened again.

Are you done laughing yet? Take your time; I'm not offended.

I went back to my desk, again checking to see if Jason was available. Not around again, so I sat down to continue on with my studies. I went through these for a few hours, and came across some questions. Karl, my officemate, was the first one I'd go to, since he knows that system, but he wasn't in the office today. Eric, my mentor, wasn't around at the time, so I went to Alex, my boss. He gave me the names of a few people, one of whom I knew: Chip, who had interviewed me. I asked Chip, and he referred me to somebody who knew more than him. I went to that guy, asked him my questions, and he referred me to somebody who knew yet more. In an intellectual environment like Google, it's quite flattering when you've got questions that nobody can answer. (One writer on the culture (esr) once wrote that "Good question" is a high compliment indeed.)

Finally, I did meet somebody who could answer my questions, and a few others that I thought of while I was talking to him. There's a number of programming styles that Google uses regularly to deal with the scale they work on, and these are styles that I just haven't ever had to think about much. In some ways, it's like I'm starting over with programming... just with enough experience to get up the learning curve quicker this time.

After I got back, my mentor stopped by to talk to me about how things were going. We chatted a bit, and I asked him about the time that most people start their day; he said about 10:00 or so.

I also asked about a few things regarding communication. First, I asked if I would be expected to have my pager around when I'm not on-call; he said it wasn't necessary. He did say that I should put my cell phone number in the internal directory. That's something I haven't done, because at Juniper I knew that there were people who wouldn't respect my personal time. Eric, however, told me that in the years he's had his cell in the directory, he's only had a very few calls— and all of them were very appropriate. Okay, that makes me feel better.

It also doesn't hurt that if Google wants me to put my cell number in the directory, then I can get reimbursed for my cell plan.

Speaking of such things, I had heard back from Speakeasy on Thursday. They were calling to ask whether I wanted the reimbursement put as a credit forward on my account, or returned to my credit card.

After the conversation with Eric, I spent a little more time working, then took off to start my weekend. Unfortunately, I forgot to take the balloon picture. All I got was a picture of my shoelaces wrapped in my bike pedals, and it wasn't really that interesting.

Next week, I have more classes, so I'm off to bed.

Friday, July 06, 2007

Noogler, Day 8: Fragmented Day For Fragmented Minds

It was a pretty short day today. I had one goal: get through the series of exercises to learn the version control system.

This would have been easier if I had known the difference between the "Snooze" button and the "Off" button. As it stood, I apparently shut off my alarm clock, and promptly slept until sometime after 10:00. No big deal; I don't have classes this week, so I'm not worried about the clock too much. I just don't want to slack off, but after last week, I'm a bit ahead of the curve.

Anyway, after doing all the usual morning things, and driving in, I got there about 11:20. I figured I'd have an early lunch (or, as I would be calling it, "breakfast"), and then hit the office for some uninterrupted study.

There seemed to be some sort of activity on the patio in front of Charlie's today. Well, I didn't notice that as much as the smell. All sorts of food-smells, but the most prominent one from my angle of approach was that of rosemary.

After a bit of investigation, I found that there was a July 5th celebratory dinner. I picked myself out a bit of grilled chicken (which was the dish with the rosemary marinade) and made a sandwich out of it, and pulled as sides some red potatoes with garlic and parmesian, corn grilled in the husk (which was INCREDIBLY fresh, which makes corn taste much different; much sweeter), and a smoothie made from lots of different berries. After that, I found a table near the stage where the band was setting up, picked out a seat under the shade of the umbrella (I'm peeling a tiny bit from getting sunburned in the interviews), and sat down to eat.

A young man whom I didn't recognize asked if he could join me. I said sure, and he put down his plate then went to get a drink. When he came back, he pointed out that our team (apparently he's on my team?) was seated as a group elsewhere, so we picked up our food and went to join them.

This was the first meal I'd had with my team-mates. The new table was far enough from the stage that we could talk while we ate, and so we did, about all sorts of topics except our jobs. The closest we got to talking about work was when somebody asked what the colors on the name badges mean (red for contractors, green for interns).

After lunch, I went upstairs to start on the exercises. This was what I was after today, after all, right?

I took a few minutes to catch up on email first. The most notable thing in there is that my boss has given me a starter project. This is an actual project, but a simple, short one; it's supposed to help me get acclimated to the development environment and process. I'll be working with a guy named Jason on that one. I haven't really talked to Jason much, if at all; I think I've just said "hi" once when I was meeting everybody, and that's it. He didn't talk about a schedule there, and I haven't talked to Jason yet.

A few more emails... catch up on some technical discussions I was following... okay, done. Now it's time for those exercises!

I got a little ways along them, but it was soon time for me to go to the gym. I made a special effort to get there early. I've lately been showing up later than I want to; I like to have time to change, warm up, and stretch before my time slot. There's usually no-one after me, and my trainer is good about running long, which makes up for lost time. Today I even had to cut her off at 70 minutes into a 60 minute workout, because I needed to get back to work!

After my workout, there was a missed call on my caller ID, but no voicemail. When I called it back, I didn't recognize the business name, and the recording simply told me to call a different number for their main line. I couldn't keep the number in my head (I wasn't near paper, since I wasn't expecting this), and anyway, I figured it was an unsolicited sales call, so I left it alone and went back to work.

About an hour later, I got a call from that same number. I picked it up, and it was a delivery company. I had completely forgotten that I was having a chair delivered today! (It's for my downstairs computer desk; it was rather hard to find one that would be comfortable for using a computer, but still fits into the decoration. They had been at my house, and were on their way away now. (The first call was probably supposed to be a reminder call, since it came before the designated delivery window.) I told them I could meet them there in 15 minutes, told Karl I'd be back in half an hour, and took off.

I made it in my promised 15 minutes— exactly— thanked the delivery men, put the chair inside, and went back to work to study some more.

About 6:20 or so, I was supposed to meet Scott for supper, but he texted me that he couldn't make it. I said we'd do it another time, finished the exercise I was on, and went to get the next one in the series. Yay, I had now learned what I had set out to do!

This is something that had been weighing on me for a while, since it's where I was most visibly behind schedule. It's kind of just a personal milestone I had set, since it's really necessary to know the VC system— at least the basics— before you can start programming, or even looking at other peoples' programs. So, quite happy was the Piquan who left work today!

Thursday, July 05, 2007

Noogler, Day 7: Hard Drives, Books, and an Encouraging Meeting With Managment

I hope you weren't eagerly awaiting a post over the Independence Day holiday. Naturally, I expect you instead were instead doing things that might celebrate the holiday. Some people set off fireworks, some people set up grills; as for me, the last part of my celebration of our nation's independence was watching British sci-fi with Scott.

But that was today. I'm here to talk to you about Tuesday, a day when I was actually at work. Mostly, anyway.

Since I didn't leave here until about 10:00, I decided to take a chance on 101 instead of Central. Since I worked from home so much when I was at Juniper, I never really got the hang of the rush-hour schedules around here, so just hoped that the carpool lane's hours were close enough.

Naturally, they weren't. If my chosen (well, happened-upon) start time was ameliorating rush hour, I could find no sign of it. Instead, I found myself sitting on the highway, thinking about better ways to organize my music playlists.

When I got to work, I didn't even bother going to my office. (I still type "cube" every time. I'll get over that someday, I expect. Maybe I'll put the right year on checks, too.) I just sat down on a couch and turned on the company-issued laptop.

As you might recall, Monday concluded with me hearing the dreaded Click Of Death that signals impending hard drive failure. I wanted to make sure I heard it right, and that it wasn't just some sonic artifact... say, somebody walking by wearing tap shoes. I had chosen this particular couch this morning, not because it had a lower chance of somebody passing with a shim sham shimmy, but rather because it was strategically close to the techs. Since I was fairly certain the drive was faulty, I figured why go all the way to my office then back to the techs?

One of them passed by on his way in, asking how the new computer was doing. I told him that I believed I'd heard the Click Of Death, and he instantly knew what I was talking about. (I told you it was a well-known failure mode.) He went in while I waited for the drive to start failing.

Unfortunately, sure enough, the computer dutifully started clicking after about ten minutes. (Usually, a drive needs to heat up a little before it starts clicking; this can take anywhere from five minutes to two hours.) I walked over to the tech who had greeted me this morning and announced the symptom. I left my laptop with him; he has no idea when the backorders will be filled.

Back to my office, back to work. I spent most of the morning working on HR details. After I decided I had enough of comparing benefits plans, I went outside to clear my head. Lo and behold, there's a truck full of books sitting just outside the door!

The Mountain View Public Library bookmobile visits Google every Wednesday usually, but since Wednesday is a holiday, they decided that Tuesday would be better. I spoke with the librarians a bit about the selection, got a library card (I don't have one from Mountain View; just three cities in West Texas and two others in the South Bay), and looked over what they had.

The media section seemed most heavily stocked; looks like DVDs and videos are pretty popular. Among books, I'd estimate about 3/8 children's, 1/4 non-fiction, 1/4 escapism (sci-fi, fantasy, mystery), and 1/8 general fiction. But that's just a quick estimate.

I picked out Metamagical Themas, by Douglas Hofstadter. It's a collection of articles he wrote for Scientific American. They deal with logic, language, cognition, and the like. It was in one of these articles where Nomic (which I mentioned in Day 5) was first published. If you're bored and you have a set of Scrabble tiles handy, you can work out for yourself an anagram for the title. It's the name of the column that preceded Hofstadter's.

Back to the office, I left the book on the table and got back to work. Before I knew it, my gym hour was fast approaching. Now, my office-mate Karl is a guy that I really enjoy talking to, but he seems to have a preternatural knack for engaging me in conversation when I'm almost at the point of leaving to go somewhere. It's before I start packing to go. It's just when I'm thinking, "Hmmm, I should wrap things up soon." That's when he will bring up some interesting aspect of our job that, of course, I want to talk about.

Naturally, I lingered as long as I could to talk, but this meant that I was very nearly late to the gym. Fortunately, the person after me was late (as she frequently is), so I had some extra time with my trainer to make up for a bit. (Just as an aside: my knee is now doing much better these days!)

Back to the office, and just in time for a meeting with Todd, who is my boss's boss. Todd and I mostly spoke in higher-level, big-picture concepts instead of in details. This can be a good sign or a bad sign. On one hand, some technical managers tend to be so high in the sky that they can't see what the guys in the trenches are doing. On the other hand, sometimes it's a sign that the manager can see both the forest and the trees, and not get too distracted by either. I get the feeling that Todd is in the latter category.

Some of the more significant points I took away from that meeting are:

  1. Engineers are expected to manage themselves. Google puts a lot of smart people in the vicinity of interesting problems, and expects them to sort out the way for them to work on it. Google has a flat structure; when managers generally have 40 or 50 direct reports, there's no room for micromanagement.
  2. As a corollary to 1, you are expected to figure out a style of work that suits you personally. This includes time management, documentation, work/life balance, etc. (This last issue— work/life balance— was a concern of mine when I was deciding whether or not to take the job at Google. Todd said that we shouldn't let it become a problem; defend my life-space.)
  3. Code talks. It's easy to make guesses in the dark and come up with ideas about ways to do things, but until there's some ones and zeros, it's not going to catch a lot of attention. Come up with ideas, and then prototype them. That's when you can start getting some eyeballs.
  4. Combining 1 and 3 leads us to realize that the general way things happen is, if you see a problem, solve it. Initiative is highly valued. You have the extensive Google codebase at your disposal, so many problems can be solved by the engineer who sees them.

We talked a little more on the way back to my office. When we arrived, he noticed Metamagical Themas sitting on my desk, and Karl, Todd and I talked a little bit about Hofstadter. Not only was Todd able to recognize the book on sight, but it turns out that Karl knows considerably more about his work than I do.

I worked a little more, trying to get a few more items off of my checklist. I was going to a They Might Be Giants concert that evening, and wanted to get a bit of technical training in before then. Naturally (or rather preternaturally), as time to leave drew near, Karl started talking to me about some ideas he'd had. I talked with him as long as I could, but had to leave as soon as the conversation looked like it was at as much of a stopping point as it would find. (How's THAT for some 2am grammar? I eat prepositions for breakfast, buddy!) He seemed a bit disappointed, but I'm sure we'll have lots of conversations in the future.

Meanwhile, it's time for me to get to bed if I'm gonna be bright-eyed tomorrow, so I'll go ahead and post this.

Tuesday, July 03, 2007

Noogler, Day 6: Relief From Classes

Yay, I get a day without any classes! Actually, I get a whole WEEK without any classes. That's because they have the same classes at the same times each week. This week, though, we get Independence Day off, so instead of trying to find times juggle all the teachers into, they just postponed them until next week.

This is good. I still have lots of learning to do. My co-workers aren't pressuring me at all on time; indeed, they're encouraging me to take my time as I scale the learning curve, and are clearly quite patient for me to take as much time as I need. Nevertheless, I still have lots that I want to learn, and I still haven't figured out the source control system, let alone any of the technical details of the environment I'll be maintaining. I've got a long list of things that I want to learn, and would like to see it shrink a bit more. So how did I start my week? By showing up late!

Well, not exactly. They don't have a particular time they expect me to arrive. I just had a couple of errands to run before I came into work today. Mind you, it turns out that there was a team meeting a little bit before I arrived, but I wasn't really expected to be there. Later, I asked Karl— one of my office-mates— and Sara— his girlfriend (apparently they do exist) what meetings I should attend. The consensus we came to was more or less to not think about that until my boss said something like, "Maybe you should show up at such-and-such meeting."

One thing that did come up during this conversation was in how I'm learning. I've attended dozens of hours of orientation, and I've also sat in listening a little bit as some of my co-workers talked to each other about work stuff (although they do seem to stray from discussing work issues pretty readily). The little bit of sitting around listening has felt more educational than the hours of orientation and training. If I think about what I've learned each way, I can see it's not quite accurate, but it feels that way.

After I talked to Karl and Sara about meetings, I went off to the tech guys to ask them about my laptop. As you may recall, when we last left our hero, he had a laptop with the corporate WiFi finally working, but no VPN.

So I sat around for a while as he worked on my laptop, and decided I'd best go do my job instead. Back in the office, I pulled out my to-do list and my iPod. At this point, I realized a few things. First, my backpack weighed a ton. (I've carried heavy backpacks since high school. Indeed, in high school, I didn't even use my locker. There might be a causative relationship between my heavy backpack and my tight upper trapezius.) Second, I have a new, better backpack from Google! This is a Kensington backpack with a lumbar support, widescreen laptop pouch, headphone hole, etc.

Naturally, if one backpack is good, then two is better, so I divided my stuff into the two backpacks. Really, I figured that I'd still need to keep my personal laptop with me— at least until the techs get the company laptop working— and there's just not room for two laptops in one backpack. So I put my personal stuff in my Juniper backpack, and my company stuff in the Google backpack.

Finally, I took out some CDs that I'd gotten from Fry's last weekend and started loading them onto my iPod. Earbuds on, I went to work, meaning to tackle some of the technical study I wanted to do. About the time I got started, my co-workers were inviting me to lunch. I declined, having had a late breakfast, and took in an extra couple of hours of working down my to-do list.

For lunch, I decided to try the health food place, called the No Name Cafe. There's something they call the "Google 15", which is the 15 pounds that people gain when they first start working at Google. Seeing as how I'd gone to all that trouble to lose weight, I didn't see any sense in gaining it back, so I thought I should start looking at what the healthier options were.

No Name is the first place on Google campus I ate, and I was impressed with their selection. They have meals for vegetarians and carnivores alike (myself being firmly in the latter category), and their food is no less expertly planned and prepared than elsewhere in Google— as if you'd expect different! A fairly simple chicken and rice dish with a non-alcoholic Chardonnay, and for desert a grilled peach with vanilla bean topping, and I was ready to head back to work.

After lunch, I found an email asking me to pick up my laptop from the tech. At some point, they had decided that it wasn't worth the downtime to keep troubleshooting the problem, and instead wiped the drive clean and put a fresh install on it. (Of course, they confirmed that I didn't have any critical data on the drive first!) That had been done while I was working and eating, so they were ready for me to come in to supply the necessary passwords to set up the WiFi and VPN.

I happily came in to do so, and now the VPN would work fine, but the WiFi wouldn't. I sat down on a couch there in the Tech Stop and read web comics and chatted while he worked on this newest problem. After a little while of this, I commented, "Tech Stop: the best way to avoid work."

One of the techs turned to me and exclaimed, "Thank you! Now somebody's verbalized what I had suspected all along!"

Well, they did get the WiFi working, and the VPN. Both at the same time. Happily, I took my laptop and went back to my desk to configure it to my own bizarre tastes.

The first step of this was to do an OS update. (The tech had— at my suggestion— skipped the update in the interests of time, since I was waiting there and it would have taken an hour to download all the pending patches over the WiFi we had been connected to at the time.) I started the update and went back to learning about Google's version control system.

At some point in this process, I heard a sound coming from the laptop's hard drive. Anybody who's done computer repair knows this sound: the Click Of Death. Once the hard drive starts clicking in a particular, very distinct manner, then it's on its last legs. The last time I had a hard drive like that, I didn't bother waiting for it to completely fail before ordering a new one. I knew it was inevitable. (There's certain tricks you can play with a freezer to prolong the life slightly, but that's just borrowing some time.) But by then, it was too late for me to bring it back to the tech. I'll deal with that tomorrow.

Soon, the day came to an end, since I had improv class. And so too does this post.