Dog food, the common noun, is reasonably self explanatory (pro tip: it’s food for dogs). Dogfood the verb or dogfooding the verbal noun, though, might require a little bit of explanation.
At the root of it is this: if you make dog food, you should feed it to your own dogs. There are essentially two reasons for this:
If you don’t personally test it, how will know if it’s any good?
If your dogs don’t eat it, why the hell should anyone else’s?
The same principle applies to software. Even more so in fact, as it’s something you’re more able to test directly. As a simple example: in Google, we use Google docs for most documentation purposes (design docs, presentations, etc.). I’m willing to bet that folks at Apple use iWork for much the same purpose. I’m absolutely certain that Microsoft employes use Office, excepting those times when it’s necessary to write a document in the blood of a green eyed virgin upon the pressed skin of an albino goat.
This process is called dogfooding. You use the software internally before it’s released to users, ensuring that it gets a lot more test usage. As an added bonus, developers who actually use the software they create are more likely to create software that’s actually worth using. That’s not always the case, of course, since most developers don’t really fall into the “average users” category. Case in point: upgrading my computer to Lion broke my installation of Steam. I fixed it with a quick command line incantation, then performed a couple more in order to make The Stanley Parable functional under OSX. Most computer users would not be comfortable doing something like this, nor should they have to.
As well as using your company’s products at work, it’s generally a good idea to use them at home. It’s always good to have a feel for what your company actually does and get more experience with it. I’ve used Google search more or less exclusively for at least ten years. That’s not really a hard choice. It gives the best results. Likewise, I started using Google Chrome is my main web browser pretty much as soon as it was available for the platforms I used (in my last job that was actually Windows, OSX and Linux). I use iPhone in preference to Android, however, though I do have an upgrade due me towards the end of the year and it’s not completely inconceivable that I might switch. For the time being at least, I’m definitely sticking with WordPress, so I won’t get to play with Blogger, Google Analytics or AdSense, either.
As well as dogfooding Google products at work, we also dogfood technologies and platforms. This sounds fairly obvious, but it’s not always the case with companies who create platform technology. Microsoft, for instance, used to be famous for not using the technologies they provided to developers internally, though they are getting better now. Some of Google’s technologies are open source, and thus available for everyone to use. Guice and Protocol Buffers are pretty good examples of this. Guice is amazing, by the way. This being the case, there’s nothing to stop me using them on personal projects, should that be appropriate. Personal projects such as Clockwork Aphid, for example.
I’ll talk about which particular Google technologies I think might be useful in later blog posts, but since I brought it up, I suppose I should probably say something about Clockwork Aphid. I’ve blown the dust off the code, tweaked a couple of things and got a feature I’d left half finished back on track. I tried switching my current implementation from jMonkeyEngine version 2 to version 3, only to find that while it does appear a lot faster and improved in several other ways, the documentation is pretty crappy, and it’s less… functional.
I’ll talk about that more later, but for now just know that things are once again happening.
You’re going to have to wait a little while longer for the Computer History Museum, Silicon Valley Wandering and San Francisco based updates I had in mind, since I still haven’t found a good way of adding the images I wanted to. In the meantime, I thought I’d tell you about my morning, in a similar (if significantly smaller in scope) fashion to Tim Bray’s semi-famous post.
Now, Google is very transparent internally, but also has fairly strict rules about what you can and can’t talk to people about, regardless of whether you’re talking to your friends, your family, random people on the street, or potentially random people on the information super highway (that’s you). I haven’t entirely gotten my head around them yet, so I’m limiting myself to things you could find out by yourself, either via the internet, by wandering around in the general vicinity of a Google office, or being invited in as a lunch guest. This latter option is not too uncommon; it’s actually something we’re encouraged to do (up to a point).
Be that as it may, this morning I drove in to the campus*, and parked in a nice easy space a reasonable distance from the building. I’m not entirely used to driving on the right wrong side of the road and I’m not going to take any chances, so I was looking for a space with no other cars around. Someone had left one of the Google bikes next to where I parked, so I jumped on, rode straight past the the building my class was due to be in (I’m here for training) and headed over to one I knew had a cafe which served a decent breakfast.
Side note: the Google bikes are distinctive in many fashions, one of which is that they lack brakes. This is good knowledge to have, and personally I would have liked to have found out when I was a little further away from the speed bump. Now you know. You’re welcome.
I stood the bike up near the door, next to a pack of its siblings, and badged my way into the building. The breakfast did not dispoint, and I actually broke down and grabbed a smallish portion of the french toast /crispy bacon / maple syrup combo which always tests my willpower (but thankfully doesn’t seem to be an option at the London office). It was, on the whole, a very good breakfast. It does, however, leave me with a bit of a dilema: do I return to this cafe tomorrow, or try a different one?
As I was leaving, a girl walked her bike into the cafe and propped it up while she filled a takeaway container with yummy, yummy breakfast food. Then, as I was gabbing a coffee before my class, a guy wandered past with his St. Bernard. Google is a very different kind of a workplace, that’s for sure. Did I mention the building my classes were in yesterday has a four lane bowling allay and a dance studio?
After that, I…
…all of which was very interesting. In all seriousness, though: I’m getting a lot out of this trip.
I can see the mountains, but I suppose that’s only to be expected. I am in Mountain View, after all.
As of today, I’m in Silicon Valley for my “noogler training,” something which most companies would just refer to as an induction. At Google, though, there’s a bit more too it than that. There are a lot of tools and technologies to to learn, because so much of what we use is built in house, and there is a lot of culture to adapt to, because most companies don’t function the way google functions. Hence, all new hires get shipped over to the mothership, partly to centralise all of this learning, and partly (I suspect) because the Googleplex is really, really cool. I’ve been told I must try all of the cafes and slides.
The flight over was truly awful. It felt like crossing the Atlantic in the jet plane equivalent of a council tower block. My entertainment system was broken, so I had to relay on what I had with me. Fortunately, I had prepared for this eventuality and loaded my iPad up with some films and TV shows, and the iPad has a much nicer screen, anyway. What I wasn’t prepared for, though, was how shit the cabin crew were going to be. I must have pushed the call button thirty times during the flight and they did not respond once. I always had to flag someone down or walk to the galley. Before you ask: it did occur to me that maybe my call button was malfunctioning, but no the crew confirmed that it was working. Perhaps, then, they were busy? Some of the time yes, I’m sure, but I also watched them standing around chatting as I pushed the button. Not cool, British Airways, not cool.
Speaking of happier things, I arrived in San Francisco and proceeded to the hire car stan to be greeted with a huge queue. I don’t want to oversell how long the queue was, but some of these people had tents. A moment realisation dawned, though: since I work for Google I automatically have Hertz #1 Gold status, so I walked straight passed that queue to the garage… and proceeded to wait in a shorter queue. Still, I call that a win.
As of right now I’m sitting in my very pleasant hotel room trying to decide what to do for a couple of hours before I can legitimately go to sleep. Aside from getting dinner, of course. That’s the next problem. I’m probably a little strung out right now, so if this post reads a little incoherent, let’s just go ahead and assume that’s the reason why, m’kay?
Tomorrow I’m going to go for a bit of an explore. I’ll let you know if I find anything exciting. Stay classy.
As part of my pretty sweet relocation package from Google, I have the help of a “flat search consultant”. If you’ve ever watched Location Location Location or A Place in the Sun, you’ll more or less know what this is. If not: why not?
I have a couple of friends in the Kingston area (and several others in South London as a whole), and now work in Victoria, so my plan was quite scientific: throw darts at a map.
Not really. I basically drew a line between between these two areas and declared that I wanted to live somewhere along it. Furthermore, this place should neither be shit, not overlay expensive. In particular I thought Richmond looked like a very cool place to live, and seemed to be in reach of many of the places I wanted to go. That said, it has the potential to be a bit of a slog into the centre, and unfortunately it’s quite expensive. Thus, my flat search consultant wanted me to look at a couple of other places.
We started in Richmond and straight away viewed a really nice flat, which set the bar a little high. It already had offers, and thus I would have make a decision fast if I was interested. This is generally the case with rentals in London at the moment, though this one had a particularly short fuse. I came very close to putting in an offer, but n the end came to the conclusion that it was too small.
Next we went and had a look at the outside of a flat the agent wasn’t able to show us, to get an idea of the area. I’ll come back to this one. We also viewed a flat in a quite cool art deco development, which was a bit crap on the inside. Single glazing and on a main road? I think not…
After this we checked out a slightly dingy flat which was essentially in the landlord’s basement. I don’t, quite frankly, want to feel quite that much like a tenant. This was the last spot in Richmond, so it was on to Clapham, via a fairly spectacular drive through Richmond Park.
The first flat in Clapham was amazing. Really big, nicely finished and in a decent area, if a little ways off the main drag. This was probably my favourite from the entire day. I’m not sure how I feel about the location. Transport wise it’s very cool, and you can get just about anywhere from it, but… I don’t know. You know?
Next we viewed a couple of really nice new builds in an utterly unspectacular area of Battersea. Nice price (for London!), nice size, nice big garden (in one case), nice finish (aside from the one wonky switch in one of the kitchens, so that flat was out). But… right on a busy main road, in part of Battersea which seems to mostly be a place people pass through when going to other places? No. Well… probably not.
Lastly was had a look at a mansion flat in a gorgeous building… but that’s about all it had going for it. If you gutted it, it could become something spectacular, but work would be required.
On the whole, non of the flats I saw were utterly terrible, and all of them will get rented. This is definitely a seller’s market. We’re going to go back to the Richmond flat we couldn’t see today, because the pictures look great, then it’ll be a straight choice between it and the Clapham flat. Perhaps there’ll also be a couple more viewings. We’ll see. Tomorrow, a choice must be made, otherwise I have nowhere to live after I get back from Mountain View. No pressure!
In other news, I stopped by the office to finish of a last bit of admin, and then attend my first ever Google meeting, which also included participants from Mountain View and Dublin. I’m starting to understanding things more, which is good, because I have an absolute ton of stuff to learn. I also briefly petted a very cute West Island terrier, which either belongs to one of my colleagues, or IS one of my colleagues.
This is going to be short. Suffice to say: almost everything you’ve heard about working for Google is true. That being the case, there is no slide in my office. I’m told they have them in Mountain View and Zurich, however, and I’ll apparently be visiting both this year (Mountain View next week!).
The food / restaurants / kitchens are awesome in a “we’ve thought of everything you need” kind of way. The people are really nice, but also intimidatingly smart. For a tech firm, a lot of them are girls as well, which makes for a more balanced working environment.
On the whole it was a good first day, though mostly consisting of administration. I’m itching to get into the code!
Yes. That’s right. I did it. I used a sed expression as post title.
I’ve been very quiet as of late, though in my defence I’ve been very busy for a few months. In the middle of that I had a potentially life changing decision to make, and then I was dealing with the ramifications of the choice I made.
As you may have gathered from the post title (even if it mostly looks like crazy speak to you), the choice was whether I should accept a job at Google or not. Believe it or not, it was a choice, and a fairly hard one. There are various reasons for this. I’m not going to go into all of them, though I will go into some, but let’s start with a little bit of background.
It started with the receipt of a LinkedIn message with the subject “Hello from Google.” and ended with me standing in a car park being offered a very good job. Regarding what happened in between: the Google interview process is lengthy and pretty hardcore. Reputedly the most hardcore in the entire of the tech industry. But having a gruelling four and a half hour viva a little over a week before your main interview can make it seem like a walk in the park, albeit a mentally tiring one.
So then I was left with a choice. I could stay at my good job at a small but growing company with a lot of potential, at which I knew I had some prospects. I’d still be working in an industry which I know, and which to some extent knows me. I’d stay in a city I love (and have loved since the moment I set eyes upon it ten years ago), surrounded by a wonderful group of friends.
Alternatively I could accept an incredible opportunity to work at one of the most exciting companies in the world, which is famous for treating it’s employees incredibly well, and has projects which excite me more than I can adequately express in words. But I’d be changing industries and I good portion of my existing knowledge might be useless (or more useless, as the case may be). I’d have to move to London, a city I like but don’t know that well, and feel slightly intimidated by. As luck would have it, though, I do have a group of close friends living in London, who are also awesome.
It was a very hard choice, and it came down to a couple of things:
A former colleague put it to me that if I turned this offer down I’d hate myself for it every time I had a bad day (or spent a year putting my life on hold for a field trip which was consistently two weeks away from happening);
Another colleague suggested that I would be swallowed up by Google. A tiny cog in a huge machine. Which is potentially true… and a little scary. But… the other analogy people use here is “small fish in a big pond.” There’s a distinction to be made: fish grow, cogs don’t. Unless you put yourself in a bigger pond, you’ll never find out if you have the potential to get any bigger.
It would be nice to not work for the oil companies and the military. Not necessarily because either party is evil, but because of the shear amount of red tape involved.
I’d been feeling as though I’d been stuck in a rut for a while, and really wanted to shake things up somehow.
It’s frickin’ GOOGLE!
So. Here I am. In London. Staying in wicked temporary accommodation. Tomorrow is my first day at my shiny new Google job, and right now I should really go to bed!
PS More updates coming soon I swear, though it may be a month before I can get back to my Clockwork Aphid project, for logistical reasons.
If you know when I started my PhD you’ll be aware that it took quite some time for me to finish it. There are various reasons for this. One is that I spent quite a bit of time working and getting industrial experience during it. The other is that it took me something in the region of 18 months to figure out what it was I was actually going to do. This happens quite a bit at the Ocean Systems Laboratory, you don’t actually start working on a particular project or problem, you just sort of find something which seems to need doing. It also didn’t help that it talk me 9 months to get any feedback on the first draft of my thesis. One of the major things which took up my time, though, was the Student Autonomous Underwater Challenge – Europe, or SAUC-E for short.
This post is going to focus on my own part in the proceedings, but you should assume that everyone else on the teams worked at least as hard as I did, and their contribution was at least as important as my own. This is my blog, though, so I’ll mainly be talking about me.
Basically, teams of students build an underwater robot which then has to complete an obstacle course. Let me stress: it is not in any way like Robot Wars, so you can abandon that notion right now. The crucial word here is autonomous, as in you have no contact with the vehicle after you push go; it all has to run on autopilot. The first competition was just ramping up when I joined the OSL and I offered to go along to the site and help out. The fact that it was held at Pinewood Studios (which is a movie studio, not a furniture store) was no small bonus (I’ve wandered about on the sets for Casino Royale and Stardust), but the competition itself was also very cool indeed. I leapt at the chance to be part of the team for the second year of the competition, and then stared in disbelief as a technical issue nuked our chances right before the final. Up until that point we’d been leading the field by quite a margin, so finishing second to last was no fun at all.
The next year myself and one of my colleagues decided this wasn’t going to happen again, so we damn near killed ourselves working sixteen hour days for a couple of months, and then we took the robot to France for SAUC-E 2008. Each year there are a number of supplementary tasks which must be completed. One is to write a paper (or “report” if you’re not down with the academic lingo) about your entry, another is to produce a video diary. Our video diary for the 2008 competition does a pretty good job of showing our frustration at the previous year’s result and the amount of preparation we put into it this time round:
It was a hell of a lot of work, but we got there and we damn well kicked everyones’ asses. In the final we cleared the entire course on our first try. Everyone else used their entire twenty minutes of time. We used about seven. It was a good feeling. This isn’t a hugely fascinating video to watch and, but here’s the official video of out final run:
What you don’t say in that video is me standing on a table with a microphone in my hand narrating what I think the robot is doing, then the entire team practically leaping into the air when it completed the course. Still, here’s a picture of us (minus one team member who had to leave a day early) from an article in an industry journal:
The next year we reworked a lot of the electronics and moved to a much more hydrodynamic external design. This was a good thing, because previously Nessie had been slow, and now the competition area was a lot bigger. The 2009 video diary sums it up:
Most of the tasks were adaptations of those from previous years, but a fairly intense new one was also introduce: dock inside an elongated box placed on the floor of the pool. None of the other teams even attempted this last task, but I’d arrived a little late to the on site practice time thanks to other commitments. Everyone had their jobs and things were running pretty well. My responsibility was the mission controller (the captain, if you want to use a ship’s crew as a metaphor) and we weren’t quite ready to start doing any serious tests with this yet. So I started working on a strategy to do the docking. There was plenty of grunt work for me to help out with; I did some code review and put together some mission plans, but at this point I was essentially surplus to requirements. So I messed about with the docking thing.
First of all, I built a detector which could find the box from above. I’m not really a computer vision guy, but after a lot of experimentation and playing I managed to put something quite stable together. There was no space in the practice pool to actually attempt the docking itself, though. I put a behaviour together which I was pretty sure would get the vehicle into the box, but I had no reliable way of testing it. I put it to one side and got on with the serious business of the competition itself. This was held at a different location, so needless to say every algorithm needed to be re-tuned to the new environment.
One of the other teams did very well in the qualifying stages and went into the final in second place by a very narrow margin. We new what we could do, and we know what they could do. They had a much better sonar, but no cameras, so some tasks were just plain out of their reach. Even so, it was going to be close. The day of the final we got a bit of extra practice time in the morning. At this point the docking had received about ten minutes worth of practice time, and it’s performance had not been what you would call “successful,” exactly. I was fairly sure the last night’s late night coding session had found all the bugs, though. “Fine,” said the team. Give it a shot, but we don’t want to waste too much of the practice time on it.
It worked first time.
“Did anyone see that?” There was a judge at other side of the pool, but no one was looking at us. We wouldn’t get any points, but still, we wanted the judges to SEE it. Someone from one of the other teams saw some of it though, it seems, because they took this video:
Out supervisor came running over. “Was that autonomous?!” He demanded. Apparently one of the other judges was standing at the monitors and there was a camera inside the box. There was a little bit of a buzz.
We tried it again. It worked again. This time someone had actually put a tape in the VCR, which is nice, but I don’t have that video.
The organisers were smiling, but not in a 100% friendly way. No one was actually supposed to pull off the docking this time around. But we had. There was no time to add this behaviour into the plan for our main run in the final, but this year there was a new rule: you could demonstrate the tasks individually to pick up extra points. The final, as it turned out, was not quite as close as we were worried it might be, and Team Nessie picked up another first prize.
As well as the industry journal from which the above picture has been taken, the BBC paid some attention to the competition this time around, as well (which you can find here). Yep, that’s me at the end of the video. They interviewed me for the article they wrote on the competition and used a lot of my quotes. I learned an important lesson from this: assume anything you say to a journalist will be taken literally, and don’t assume that they’ll check their facts, even if you specifically tell them to because you’re not certain of your numbers. For example, the figure of £10,000 mentioned in the article is actually closer to £100,000.
If you’re reading this blog and don’t actually know me in the real world then you might be wondering “who actually is this guy?” and possibly even “what is it that he actually does, aside from starting to talk about procedural landscape generation, and then falling suddenly silent?” Well, clearly I’m a person who is currently coming to the end of a PhD, and I have a full time job. But doing what, exactly?
If in fact you do know me in the real world, you still might be wondering about that.
For the most part, what I do is work with Autonomous Underwater Vehicles (AUVs), either at the Ocean Systems Laboratory or SeeByte Ltd, depending on which hat I’m wearing. Let’s talk a little about that now, in general terms. Or rather, let’s watch an educational video about it.
First, a bit of preamble: this video was made around three and a half years ago (according to my reckoning) in order to present a potential example of the capabilities of AUVs and related technologies. At the time it was very much “looking forward,” rather than presenting results. In particular: most of what you’re seeing is “mocked up,” rather than part of a real operation, and features several technologies which hadn’t progressed beyond early prototypes at the time. It’s now quite out of date, but it still gets shown at conferences by some of my colleges, since it makes a fairly good introduction.
The video was also aimed primarily at the defense industry, which is why the presented scenario has that sort of slant. Rest assured that not all uses of AUVs are militaristic in nature, but yes: they can be used to help save soldiers lives.
Furthermore, I did all of the camera work and direction (except for in any stock footage), as well as the editing and titles. Writing was a joint effort between myself and several of my colleges. As such I consider the video itself to be part of my “portfolio of work.” That’s not my voice, though.
So, here’s the video (you can click for a bigger version):
If you know what you’re looking for, you can see a very early version of my PhD work in amongst all of that. Perhaps I’ll come back later and talk a little more about how what I do specifically fits into all this.
Slight digression: I’m using Vimeo rather than YouTube because it seems like a better fit. Also the website appeals more to my aesthetic sensibilities.
That important thing I was talking about before? It was my PhD viva, and it happened last Friday. Remember, remember, the fifth of November, indeed. It’s possibile that given time I’ll look back upon it as a positive experience (as many others do), but right now I’m still reeling a little. The closest thing I can compare it to is a really intense job interview. A job interview which lasted four and a half hours. One which is comparable in intensity to… say… one of the boardroom sessions at the end of each episode of The Apprentice. Okay, it’s possible that I’m overstating things a little here, but you weren’t there, man!
Know this, though: It was very difficult and it lasted a long time… which felt a lot longer than it actually was. The viva is also sometimes referred to as “defending your thesis” and that is a very apt term, because that’s definitely what it felt like. It’s not just your thesis which is in the dock, though, you’re in there with it. Not only do you have to be able to defend any criticism which can be leveled at your work, you also have to be able to show that you understand it completely. When you get a PhD in particular subject, what this essentially means that you are (at that moment) the world’s expert in your particular specialisation. You should expect to have to prove that.
So, if you’re reading this wondering “should I do a PhD?” you should know that it is not my intention to scare you. I only wish to prepare you. A PhD may or may not be the right thing for you. You might be better suited to any number of other things, but you have to figure that out for yourself. You do need to be able to devote yourself to a single, extremely narrow, subject for at least three years. You also need to be prepared to write a whopping great document at the end of it (mine is 338 pages) and then be ready for both it, and yourself, to be placed under the microscope. It can be extremely rewarding, but it can also be utterly soul destroying. Sometimes in the space of a single day.
After all that, you might be wondering how I actually did. In short: frustratingly. First the good news: I successfully defended my thesis. I passed. This takes a large weight of my shoulders. The bad news, though, is that I have to do “significant corrections.” This puts another, albeit smaller, weight straight back on. Based on the final assessment, I’m given to understand that the majority of my thesis is very good. Heart warming adjectives such as “exciting,” “heroic in scope” and even “ingenious” were used. Unfortunately, it seems that I need to add a few clarifications and citations, and my results chapter doesn’t live up to the standard set by the rest of my thesis. This was a worry I had, and it is good to get some solid feedback on it, even if it does mean more work. As result, I need to rewrite some of it, add some statistic tests and do some further analysis of my data. I also have an embarrassing number of typographical errors to fix.
In summary: It’s good to know that the light isn’t a train, even if I am still in the tunnel. I’m not calling myself “Dr. Nick” just yet. By God there’ll be a party when I do, though.
So now you know. That’s what’s been taking up my time as of late. I’ll get back to Clockwork Aphid just as soon as I can.