Stopwords

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.

Labels: , ,

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 http://www.googlestore.com/ 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.

Labels: , ,

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.

Labels: , ,

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!

Labels: , ,

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.

Labels: , ,

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 http://www.gokartracer.com/track_maps.html 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.

Labels: , ,

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:

GOOGLE CULINARY TEAM KITCHEN FOOD STANDARDS

  • 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 (http://www.mbayaq.org/cr/seafoodwatch.asp)
  • 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

OUR STATEMENT OF VALUES

  • 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.

ABOUT OUR NEW "GREEN" FOOD CONTAINERS, TAKE-OUT BOXES, PLATES, AND CUTLERY

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.

Labels: , ,

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?

http://maps.google.com/maps?f=d&hl=en&geocode=9430998064533961443,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.

Labels: , ,

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.

Labels: , ,

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.

Labels: , ,

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!

Labels: , ,

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.

Labels: , ,

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.

Labels: , ,

Saturday, June 30, 2007

Noogler, Day 5: A Cuppa, a Computer, and a Modicum of Sillyness

I really wish that I had written this earlier. The days have been blending together, but they're so full of activity that it's hard to remember what's happening from one day to the next! For example, as I was starting this entry I was going to write about the cholesterol test I took on Day 3.

I've been carefully chronicling my time for a few reasons. One is because I miss being able to talk to my friends and family all the time! There's different aspects to that, of course... Alfhild, for instance, was good enough to send me a LIME all the way from the Sage Ocean! So while it's been great hearing your responses, of course email only goes so far. So some time when you're around, you'll have to stop by for a tour of the campus, and possibly a bite to eat!

Now, you may recall that I wrote my day 4 log when I was in a coffee shop. I'll first say that I'd never seen tea like this: it was pretty much loose-leaf tea in a thin cloth mesh bag.

Now, about the coffee shop itself. It's called The Hub, because it's in the building that houses most of the Google transportation department. There's a display that shows the barrista on duty, along with the current schedules of all the shuttles.

A little ways back from the coffee bar are some couches, easy chairs, and chair-balls. The chair-balls are pretty common around Google: they're just round, air-filled rubber balls, fairly soft. It's kinda like the balls some gyms (including mine) use for exercises, but softer, so you can sit on them comfortably.

All of these are in an area with three screens, each about 10-13 feet diagonally. One shows the National Geographic channel with captions, one shows some mundane channel with audio, and the third has a slideshow with PSAs about the transportation options at Google and different philanthropic programs that Google has.

The transportation options are one of the big benefits at Google— in one interview I saw, an employee said, forget the food, the shuttle's her biggest benefit! But it's not just about the employees. Google is involved with a lot of environmental initiatives, and their transportation program is part of that. They provide a $5,000 rebate to buy hybrid vehicles. They built a 1.6MW solar panel installation in the form of rooftop solar panels and solar-panel carports; there's a neat video at http://www.eispv.com/google_video.html of a virtual fly-over of the installation.

About their philanthropic program initiatives, the founders said: "We hope that someday this institution will eclipse Google itself in overall world impact by ambitiously applying innovation and significant resources to the largest of the world's problems."

Class was interesting. One thing that we did was to play a game in which we were broken up into groups of five, only allowed to communicate by "email" (post-its) along specific channels. Most of us didn't know the goal, either. While I was telling Scott and Mili about this, she brought up Nomic. I've wanted to get a Nomic game going for a while.

But I digress.

When I did get to my desk, I found that my laptop had finally been delivered. Yay! I went to pick it up, and that was good. In fact, it was a better laptop than I had been expecting; I was expecting a PowerBook, but instead was presented with a MacBook Pro!

Then we went to set up the wireless access, and it was being persnickety (a word that I'm surprised is in my spell checker's dictionary). They worked on it some, but I had to go to a meeting.

Well, I say, "meeting". Among other things, this is when they introduce new employees and interns. There I was, with all my peers, wearing a Noogler beanie being introduced. And there was much rejoicing.

I took my time on the way back, and did note that Stan, our resident fossil, had apparently tangled with a viper. I'm not sure how clear it comes out in the photos. I'm pretty sure that the flamingos were relieved to have the distraction.

I went back to the Tech Stop to get my laptop, and they were still working on it: this was pretty tough problem (apparently, some arcane group membership coupled with prop time). But while I was there, they finished and gave me the Mac. The power supply wasn't delivered with it, so they also gave me one that they had around. By that time, they were closing, so I went away to set up the VPN access.

That didn't work. Sigh. So I left the laptop at work. Which is probably for the best, 'cause I didn't really need an excuse to keep working over the weekend. I'll have all next week to work aimlessly.

Obviously, I've taken my time over the weekend writing this. I hope I'm not starting to slip on my schedule too much, though; I'll try to get each day's post written before the next work day starts. Just as a quick note of one of the places I went this weekend, I've included a picture of one of the isles at Weird Stuff. Like always, I didn't find what I came there for, but I found stuff I needed.

Labels: , ,

Thursday, June 28, 2007

Noogler, Day 4: Exhausted!

By now, you may have noticed that my Day 4 log is rather later than the previous days' have been. You may have also noticed that the picture of my Noogler balloons has been replaced by a different one.

Thursday was fun, if a bit routine. In the morning, I attended an all-hands strategy announcement. After that, I attended classes.

Partway through my last class— about 14:00— a sudden wave of exhaustion fell over me. I mean, I was just barely able to sit upright (although I still was able to get some questions in). I had a little bit of time to talk to my officemates (who showed me how to check my calendar remotely, huzzah!), but soon went on to the gym.

I was a little bit disappointed about the timing... there was a BBQ cookoff right when I was supposed to go to the gym. So I missed that. Ah, well.

After my workout, I decided to go home, take a nap, and then get back to work. Well, that was the plan. Custer had a plan, too.

I did get home, and take a nap at about 18:30. When I woke up, about 03:45 the next morning, I decided that was a stupid plan, and went back to sleep.

I'm making this a pretty short entry, since I have class soon. But the night's sleep was good for me, and I'm now sitting in a coffee shop with a cup of Jasmine tea, alert and ready to go.

But that'll be for tonight's entry.

Labels: , ,

Wednesday, June 27, 2007

Noogler, Day 3: Juggling Eggs, Technical Talks, and a Method and Apparatus For Remembering What's Going On

On the wall of my office is written in grease pen: "Juggling priceless eggs in variable gravity." This is a phrase used by programmers to talk about the state we're in when we're at our best. We hold a lot of information in our heads while we're coding: the structure of the program, the information it's holding, what parts have been written and what hasn't, and lots of other detail about the program. It's far, far too much to hold in our heads throughout the day. Instead, we remember the basic structure, and pick up the rest every time we sit down at our editors. I'm simplifying things a bit here, but that's the basics of it.

The thing is, keeping all this information in our heads is a delicate thing. Any distraction, and it all comes crashing down, and the programmer is robbed of precious time to get it all back in our heads again. (I'm slow in this regard; it takes me up to an hour or so. Fifteen minutes to a half hour is more common.) We borrowed the phrase about juggling eggs from the novel The Mote in God's Eye to describe this.

I read a book about managing programmers (or as some call it, "herding cats") recently, called Peopleware. It refers to this concept as "flow". If the flow is broken, then the company is then paying for a programmer to spend time just regaining that flow. (This isn't exclusive to programmers, of course. I see the same phenomenon in chess players, and other disciplines probably have similar situations.)

It's therefore quite important to build an environment that maintains flow. This is one of the reasons that kitchenettes are everywhere. If a programmer starts getting distracted because he's hungry, then the company starts paying for an unproductive programmer. Keeping a bowl of apples conveniently around, so the programmer could grab a bite when he went into his office in the first place (presumably, he was feeling peckish on his way in), is much cheaper than paying some percentage of your programmers to be unproductive because they're too distracted to maintain flow, but not so hungry that they feel the need to leave. This works well, because 100% of programmers have to eat.

Another thing that programmers do is talk shop. They talk about their projects, ideas, possible directions, cool technical tricks. When they're talking to other programmers, they'll bounce ideas off of each other and get lots of good ideas. But even if they're just talking to a rubber duck, the programmer doing the talking will often get ideas just by the simple act of talking about the problem. (I keep a number of rubber ducks around for this reason.) In my experience, a chat between a couple of co-workers in the halls is infinitely more productive than a formal meeting, not to mention more fun. Programmers will talk shop whenever there's an opportunity... particularly when they're with other programmers.

Programmers, like all people, need recreation. A programmer who isn't taking time for recreation burns out, and a burnt-out programmer is worth much, much less than a happy programmer. (This is a big problem I have with EA: they burn out their programmers, who are usually fresh out of college and don't know better. They're effectively strip-mining our young minds.)

These two activities are not mutually exclusive. Talking shop while playing is not a problem, as long as it's friendly and playful talk instead of a directed activity. This sort of friendly talk can be highly productive, though. Now, this is just my thinking, but I think that Google recognizes this. They want to encourage programmers to talk to other programmers. They also recognize the need for recreation. They provide recreation because, they figure, the programmers are going to take time to play ping-pong. They may as well do it with another programmer, and it's quite likely they'll get new ideas talking to their opponent between volleys.

Now, this sounds borderline exploitative, but personally I think it's a win-win. Everybody talks about all the perks around campus, and how it's fun to work there because of them. The fact that it's also helpful to Google's productivity is, for the programmers, just a convenient side effect.

Okay, enough rambling. I didn't sleep well at all last night, I'm afraid, and was pretty sluggish getting ready. I ended up cutting the time pretty close, so I grabbed a croissant from Jack-in-the-Box to eat on the way in. It may not be great food, or healthy, but it's faster than trying to find and eat something before my class, at least until I'm more familiar with the food options at the Googleplex.

Today's classes were the first technical talks they gave, when they presented an overview of some of the Google architectures. While interesting, these ran over— until about 13:00, so that's the first time I was able to check my email. My office-mate Karl was there, and he talked to me about some of the work he was doing. As part of this, he went over the architecture of the systems our team deals with. It was the same area that one of my classes went over, but more in-depth, and one-on-one.

After that, I went to find some lunch. They were having a benefits fair at the time, and on my way to lunch I passed through a cholesterol testing station. I haven't checked my cholesterol since I lost the weight, so I figured it was a good idea. My total count was a little higher than I'd like, and my HDLs were a fair bit lower than I'd like. Without a fasting test, I didn't get LDLs or triglycerides, and I also wanted an ALT and metabolic test, so I intend to get these at my regular doctor's lab next week when I have time to go in for a fasting test before work.

While I was getting the cholesterol test, though, the cafeteria closed. Another sandwich; some food I've had these weeks, for the place with such legendary food. Mind you, the sandwiches are quite good... the ingredients are high-quality and fresh, like they were made at home. There's a variety of breads and sauces (such as the grain mustard I had), and the vegetables are fresh and crisp. I like that there's red-leaf lettuce on the sandwich bar; it makes for a good nutrient mix. There's also panini grills, although I haven't used them yet.

After supper, I went to work on my to-do list. I've been feeling pretty annoyed; I've been putting in 10-12 hours / day at the office, but still feel like I haven't been getting anything done. Then again, what I want to get done is to learn, and when I think about how much I've learned so far about the system structure, I'm happy. I guess I'm a little frustrated that, while I've been learning quite a lot, I haven't been getting a lot of more practical things done, like setting up the source control system. Still, that'll come.

I use a program called Life Balance to help me organize my to-dos. It's great... I can feed it a hierarchy of things to do, along with deadlines, importance, and where I can do things. For example, I can write a task of building a shelf. Within that, I can give it a few more subtasks: (1) buying lumber: minimal effort, essential, can be done while running errands; (2) staining the shelf: moderate effort, not as important, must be done at home; and (3) assembling the shelf: considerable effort, essential, must be done at home. I can also tell Life Balance that these subtasks must be done in order, that I want the shelf done by Sunday, and to give me three days' lead time.

Then, at any given time, I can ask the computer what my pending tasks are, based on my current location and time of day (since I can't run errands in the middle of the night). It will give me a list of outstanding tasks, automatically filtered and ordered.

Right now, my task list contains 350 items. Of these, 237 are work tasks, which are spread out over the next few months. The remaining 113 are personal tasks, including things like getting groceries (which repeats every week), books I want to read, programs to write, furniture to assemble, bills to pay, etc. This is also synced with my Palm Pilot, and I can do everything from it that I can from my computer (although it's much easier to enter tasks from the keyboard than using Graffiti).

It's a great program, and I highly recommend it. Really, if I didn't have the list, I'd be lost in all the things I have to set up and learn about, from my 401(k) to my team's computing infrastructure. I still feel like I haven't gotten anything done, but at least I know what I need to do.

I also joined a general brainstorming meeting with my team. It's not common for me to be in a meeting where computer theory that I don't know comes into play, but that's exactly what happened. I stayed pretty quiet, but threw out a few ideas, and have some notes on items I want to follow up with people on one-on-one.

After the meeting, I went to get some supper. Finally, I get a meal when Charlie's is open! Lamb tandoori, jasmine rice, and a green salad made for a nice meal. Before I ate, I had called Scott and Matt, and we decided to move the compiler discussion from Wednesdays to Sundays. That gave me a bit more time to enjoy my meal and get back to the computer.

Overall, I'm glad to be getting into the technical details, but I can't shake the feeling that I'm behind where I should be. Juniper has always had a similar feeling to new hires. People would come to me, and say that they felt so far behind, and were SURE they were about to be fired that week! I've had a fair number of times reassuring people that no, it's okay, everybody feels like that for their first several months at Juniper, and they're certainly not about to get fired.

I don't feel like I'm a burden (or at least, no more than is expected at this point), and certainly don't feel that I'm going to get fired, but I do feel like I'm behind where I should be in my training.

Well, it's only been three days. We'll see how the next couple of days treat me. At least I did get out relatively early today: just about half past nine.

Labels: , ,

Tuesday, June 26, 2007

Noogler, Day 2: The Life of Another Engineer, A Gym, and the Manner In Which Gravity Is Superior To A Machine

After being up so late last night, I didn't have time to do laundry. Fortunately, this morning (after a bit of searching) I found a clean shirt, one that Erin had given me for my birthday. Curiously enough, nobody asked about the fact that I was sporting a Texas Women's University tee-shirt.

Also fortunately, I didn't have to be at a meeting at 8:45 in the morning this time. No, this time my class wasn't until 10. I left with plenty of time to spare— which was good, since today I decided to see how 101 fares. Answer: not well. Even at 9:30, it's still about 25 mph the whole way. I hadn't budgeted enough time, which means that by the time I got to campus, I didn't have time for breakfast. Well, a meeting from 10-11 isn't too long... I'll just eat after it.

I stopped off at my computer to find where the meeting is. While I was there, I saw an email from Gwynne. You may recall that she invited me to lunch today. Or so I thought. The email said Tuesday, July 17; I assumed that was a mistake, but sent her an email to confirm. Nope, she really did mean the 17th!

Okay, back to the meeting at hand. It was in a different building. I'm terrible at first-person shooters, because I can never memorize the maps. At the hospital I worked at in Abilene, I visited the architect to get a map of the place. The Google campus is a maze. The building I'm in (building 42) is connected to four other buildings by catwalks on my floor (second), so it's easy to go from one building to the next without realizing it. There is no semblance of traditional hallway structure, symmetry, or anything else that might help people learn their way around. In this case, though, it wasn't just a matter of finding the right room... the meeting in question was in a building that's two blocks away. Armed with this data, I grabbed a banana and a bottle of orange juice from a conveniently nearby kitchenette.

There's never trouble getting food at Google. There are kitchenettes everywhere; you never have to walk far at all to get something to eat. The kitchenette near me, for example, has fruit, chips, soup, salads, tea, sodas, cereal, and about five teas (loose-leaf and refrigerated ready-made; not bags) and six coffees. And that's just the snack bar near me. But more about the food later.

The building is on a corner, and I wasn't sure which street was which. On the way out the door, I asked the receptionist for the best way to get to the building I was after. He was extremely courteous and helpful. not only showed me a map and marked out the route, but he left his desk and walked over to the glass door to visually indicate which street is which, and where I could pick up a bike.

Because the campus is so large, there's bikes that anybody can use to get from building to building. You just get on a bike in front of one building, ride it to the other, and leave it in front of that building. The public-use bikes all have orange pendants on them, so you can tell the difference between these and peoples' personal bikes— which are extremely plentiful around campus as well!

Unfortunately, there were no public bikes around— and none of the motor scooters either— so I walked. It was a short distance, anyway. The talk I went to was entitled "The Life of an Engineer". The person giving the talk used to lecture on English at a university. I really enjoyed the talk; I hope to find others by the same guy. He doesn't like to use a set agenda; instead, the bulk of the talk is given in by question and answer. His answers would generally discuss what he needed to talk about, but it still had the easy informality of a completely unstructured Q&A.

At the end of the talk, he gave away books. They weren't related to the talk, or even specific to Google; they were computer books that you could get at any bookstore in the Silicon Valley. He just said for each of us to choose a few that we wanted. A few of them were books that I'd thought about buying in the past, so I picked them up.

However, contrary to the calendar entry, the talk wasn't 10 until 11... it lasted until about 12:30. It was the only business meeting I had that day, but I had a gym appointment at 14:00 in Cupertino, and I like to show up early to do my cardio and stretching. Okay, I figured... I can drop off the books in my office, grab some lunch, and still get there in time.

Yes, I did say in my office. I'm having a hard time not referring to my cube; I'm just not used to having an office. With a door. Glass walls (presumably I won't be holding a stone-throwing practice). Okay, sure there's three other guys there, but it's WORLDS better than a cube in an area with fifty other people— and their phones— all making noise and being distracting. I'll talk more about distractions tomorrow.

As I was checking my email, one of my office-mates came in. I hadn't met him before. He started to squeeze between me and the huge (six-foot diameter) beanbag that dominates the room, decided that it would be better to get the beanbag out of the room, and asked me to grab one end and help him move it. On our way back, we introduced ourselves, and started talking. Then another one of my office-mates walked in and joined in the conversation, then my mentor. We were talking about a lot of the technical details that I'd need to know.

I was able to follow the conversation pretty well, but a lot of that was because they were careful to keep me included. If two of them started talking about something that I wouldn't understand (stuff specific to Google), the third would explain to me the part of the operation that they were talking about, enough for me to follow the conversation.

There's something they refer to as "Google scale". Everything that happens at Google is immense. Everything they do is on a massive scale. The numbers they were throwing around in the conversation were so big, I didn't know the words. I had to ask to make sure that the words for big numbers mean what I think they mean. It wasn't that I was surprised at how big they were... I just honestly don't use the words for numbers that big, at least not often enough to remember what they mean!

I think they were really trying to get a reaction out of me when they were talking about some of these scales. They were, unfortunately, disappointed to not get one. I had walked into Google with the idea that, now I'm in Oz, and I may as well forget what I know about the rest of the world. It's quite difficult to impress somebody who doesn't have any expectations to begin with. Most of the discussion in my office (at this point in the narrative) was much more technical, and was stuff that I had known I should get some basic grasp of. I also needed to talk to my mentor and see if he knew anything about my laptop. (He didn't; it's still outstanding. My manager raised an issue on it today. I'm surprised, but not disturbed.) So I stuck around to talk. Unfortunately, now it was eating into my lunch time.

So, another banana and I'm off to the gym. It was a great workout. The client after me didn't show up, so my trainer spent some extra time with me doing some new exercises I'd never done before.

I also asked my trainer about stretches for the shoulders. I carry a lot of my stress in my shoulders. That's why, at the improv class yesterday, when we each were leading the group in warmups, I led a shoulder stretch. She showed me a few different stretches for the shoulders and upper back.

Done with the workout, back to work. By now, it was 16:00, I'd had a busy day, and I still hadn't eaten more than two bananas. This is not a good thing; the body starts hoarding fat and burning muscle. I figured I'd stop by Charlie's Cafe, the main cafeteria at Google.

Unsurprisingly, they were in-between meals. I looked around, hoping to find a boxed salad or something. There was a chef dicing peppers, and he saw that I was looking like I didn't know what I was doing. He told me that supper wasn't for another hour and a half, but that there's always food around Charlie's... "apparently, we're 24x7", he told me. He showed me where there was a sandwich bar, a salad bar, a soup bar, and also said that if I were sneaky, I could get some of the sushi that they were setting out for supper.

I thanked the chef, and went over to the sushi. I started looking at it, and the lady who was unloading it didn't speak much English. She made it very clear, though, that it was fine for me to take some. I tried to explain that I was just looking (sushi wasn't going to be filling enough for the situation), but although she didn't explain my words, she very nicely communicated that I could have the sushi. I thanked her and left to look around.

The chef saw me leaving the sushi empty-handed, and checked to make sure that everything was okay. I told him it was, and went over and made myself a turkey and roast beef with swiss on rye, and on the way out stopped by the Mexican area and added some tortilla chips and chipotle salsa to my plate, then went back.

For the second time today, I was quite impressed with how courteous and helpful everybody is!

The rest of the day involved me reading over the orientation lists. There's one list of things to do in your first few weeks from HR, another from engineering, a third from my division, and a fourth from my team. Some of this stuff is trivial, like "Set up your voicemail", "Check your email", or "Explore the Mountain View campus" (with links to instructions for voicemail, email, and suggested sights to see, respectively). Others are more involved, like learning about the source control system.

As you know, I don't do well with a lot of to-dos, particularly when they're coming from multiple sources. I spent a good while setting up a master to-do list for myself, with timelines so I wouldn't get overwhelmed. We'll see how it works.

Afterwards, I went by the kitchenette and helped myself to a couple of strawberries. This was a nice treat, but I decided to sit down and relax.

The campus is very accommodating. You really don't lack for anything. When I wanted to relax, I went just a little ways from my office and sat down in a massage chair that had a complex system of pneumatics and mechanics, with a program to give me a fifteen-minute course of massages. A few feet in front of me, another Googler relaxed by playing a piano. A lot of bikes were in the lobby, and at this late hour, I figure their owners aren't planning on riding them home. I'm guessing that Googlers leave those bikes there so they can go riding during the day. Of course there was a kitchenette not 50 feet away, and the sounds of people playing pool filtered in from nearby.

I had intended to write this during the massage, but decided I deserved some relaxation instead. The massage was great, but it still didn't hit my shoulders right... a chair just can't access the upper trapezius, which is what was pretty sore.

Fortunately, the stretches my trainer had taught me earlier worked perfectly. They involved a few different ways to position the head and neck, and letting the weight of the head stretch out the muscle. So between these stretches and the chair, I was in pretty good shape by the end of the day.

I brought home a printout of the directions to the nearest shuttle stop, but I'm ambivalent on the issue. On the one hand, I want to try it out, and also it'll force me to leave work at a reasonable hour! On the other hand, I want the flexibility to get to the compiler class— and I haven't yet decided where it'll be this week— straight after I leave work. Besides, one thing that was made clear to me today is that there's no rush... the shuttle will still be there Friday.

Okay, that's enough for tonight. A couple of pictures, and I'm off to bed.

Labels: , ,

Monday, June 25, 2007

Noogler, Day 1: Drinking From a Firehose, a Missing Laptop, and a Bundle of Balloons

My first day at Google was certainly a mind-blowing experience. I had been up later than I wanted last night, finishing some stuff on my home computer, but I still had plenty of time to get enough sleep and be ready to go in time to get to the 9:30 training. I'm glad I checked for the building number before I went to bed. I had only THOUGHT it was 9:30... it was actually at 8:45!

Bleary-eyed, I got up to my alarm clock's wail, showered, shaved, grabbed a Diet Dr. Pepper (which has caffeine in it), and hit the road. I was scared to take 101N at that hour, so told my GPS to take me by way of Central Expressway instead. Google has shuttles, and there's a stop not too far from me, but since I didn't have a badge yet, I had to drive in myself. Since I have a gym appointment tomorrow, I won't be taking the shuttle tomorrow either.

But that's tomorrow. For today, I was showing up for orientation; I felt like a freshman! The excitement, the strange newness of everything, the campus-like atmosphere... it's been a long time since I've been in a completely foreign job. Really, I was walking into this place quite blind... at my other jobs, I've had a better feel for the company and my role in it. Not this time! Google was— and still is— quite mysterious to me. I felt like I had walked into Oz, or maybe Willy Wonka's chocolate factory.

One of the first things I did today was to get my picture taken for my badge; I think it turned out well. Most of the day involved Google shoving lots of new-hire information into my brain. You may have questions about the benefits they offer. Fortunately, you can read http://www.google.com/support/jobs/bin/static.py?page=benefits.html for that sort of thing.

I also learned about vital things like how to contact the internal tech support (they seem to provide an INCREDIBLE quality of service), who to call if there's a security issue (and a funny video on the topic), and lots of other new-hire stuff. So far, no technical information about my area, but they were kind enough to preschedule me for relevant training classes for a few weeks. All this showed up on my Google calendar; it looks like I've got about 50% of my time in classes for next week.

When I went for lunch, I ran into Gwynne, who had been my boss's boss at Juniper until about two months ago. It was great to see her; it was the first bit of grounding I'd had all day. Yes, Toto, Kansas is still on the map!

After lunch came more classes, and paperwork like W-4 and I-9s. (I didn't have my W-4 calculations with me, so I just made a conservative estimate.) Finally, I was greeted by my assigned mentor. He took me to pick up my laptop. We went into the area where they give laptops to Nooglers, and there were several around with people's names on them. Not one for me, though. So at the moment, I have only my desktop computer. That's okay for now... I have enough to think about at work, without taking it home with me. They took down my name, and said they'd contact me tomorrow.

Finally, we walked to my desk. There was a bundle of balloons there, greeting me. My mentor also introduced me to my manager. That's right, I have a manager! I've been assigned to a team! I'll have plenty of time to go into more detail another time, but briefly, I'm on the team that makes sure ads are displayed. Since that's a revenue stream, it's a visible role!

About 18:45, my mentor left— he had a prior engagement— and I sat down to collect my thoughts. I really felt like I'd been drinking from a firehose all day, and was really rather dizzy. But no! I had hardly started to get my bearings when my iPod popped up an alarm... I had nearly forgotten my 19:30 improv class in San Jose!

I quickly packed my stuff, and hit the road. It occurred to me that (1) there's no way I'd get to San Jose in time, and (2) there'd been a plan to move to a different location. I called Danielle— a friend who's in the same class— and got the info from her. It was in Mountain View, just a few exits away! Huzzah!

After the improv class— sometime around 10:30 or so— I came back to campus, since I wanted to keep a photo log of my Noogler balloons. Tradition has it that you're considered a Noogler until they loose enough buoyancy to hit the desk.

I still haven't gotten my bearings mentally, but was able to successfully find my desk. This place is like a maze inside... I was seriously worried about that! During the improv class, one of the things we did was pair off, and one of us would close our eyes and the other led them around the room. That's how I felt navigating this complex most of the day.

But now it's late, and tomorrow is another day... one for which I should be well-rested.

Labels: , , , , ,


Google