Dogfood, Nom Nom Nom

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:

  1. If you don’t personally test it, how will know if it’s any good?
  2. 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.

Advertisements

Day One

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!

s/@seebyte\.com/@google\.com/g

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.

Brave New Worlds

If you were writing a taxonomy of stories you might choose books as a good place to start. Flicking your way through the world’s libraries, time and the Dewey Decimal System would eventually bring you to the fantasy genre. There is a lot of fantasy writing out there, and you might choose to subdivide it further. A one potential way of cutting it neatly in twain is like so:

  1. Stories set in our world;
  2. Stories not set in our world.

Simple. Harry Potter, for instance is set in our world. That’s a big part of the appeal. Likewise so are Neverwhere, Kracken (if you like’d Neverwhere, you’ll want to read this), and most of Stephen King’s work. Lord of the Rings is not set in our world. Simple. There are other options, of course. What about the  Chronicles of Narnia, for example (which is set in a world beyond our own)? Or Magic Bites* (which is set in an alternate version of our world)? Clearly we’re looking at some shades of grey here as well, but I’m sticking the with the original idea while it still serves my purpose.

What is my purpose here, though? Why the ramblings on this most nerdy or genres? Well, I’m thinking about procedurally generated landscapes again, you see. Clearly, if you’re generating your landscape procedurally, it’s going to be entirely of this world. Existing fantasy landscapes are a good place to look for ideas, then, particularly because they were designed specifically for the purpose of telling stories in.

The quintessential fantasy landscape is, of course, Tolkien’s Middle Earth, which looks a lot like this:

Middle Earth

That should look vaguely familiar to anyone who’s read the films or seen the books (or words to that effect). There’s a definite feeling of size there. Clearly we’re looking at a chunk of a continent, split into something not unlike countries. It always bothers me on maps like this, though: what about the rest of it?

There are a couple of well known knock offs of Tolkien’s work out there, so why don’t we consider a few of those as well? One which used to be close to my heart in my adolescent years is Games Workshop’s Warhammer:

The Warhammer World

Now, it should be quite obvious that the good chaps at GW are knocking off more than just Tolkien here. The Big G / the anthropic principle (depending on your world view) could probably claim some royalties here, because the shape of some of those continents looks very familiar. Grand Cathay, indeed. Now we appear to be looking at close to an entire planet, though, unwrapped using something not unlike the good old Mercator projection (or possibly something more politically correct). I assume so, anyway. It’s entirely possible that the Warhammer world is flat.

Another world with more than a bit of Tolkien about it it the World of Warcraft:

The World of Warcraft

Blizzard have taken no chances, though. This is a world you can actually go wandering about on, virtually speaking. They’ve made sure there aren’t any inviting edges for you to go wandering off. If this isn’t the entire of the world, it is at least self contained. That doesn’t stop Blizzard causing new continents to pop to surface whenever they need to make new content, of course.

Okay, I’m only going to show one more, then I’ll get to the actual point. This is a big one, though, so take a deep breath:

Westeros

This is also one you might be less familiar with. If you haven’t already, I heartily suggest you take a look at George R R Martin’s “A Song of Fire and Ice” series, which starts with “A Game of Thrones,” which is not coincidentally the name of the TV adaption of the books which starts on HBO quite soon. This is probably the best of the four maps I’ve posted here, thanks to a fairly stupid amount of detail (click on it, I dare you). This detail is evident in the books themselves (which I have to confess are not for the faint of heart) as well. This giant map actually represents only a smallish portion of the world these books are set in. It makes a good illustration though. We have mountain ranges, plains, rivers, cities, castles and so on.

If I’m going to procedurally generate a landscapes to tell stories in, they need to have at least a percentage of this amount of detail. Take “The Neck,” the narrow portion of land around halfway up, for example. The fact that the land perceptively narrows here feeds heavily into the plot at several points in the books. This is a choke point which cuts the continent in half. Likewise, “The Eyrie” (*shudder*) is a fort sitting at the peak of a mountain range. Towns are in places that towns would be placed: bridging point on rivers, sheltered harbors, and so on.

The point is this: my procedurally generated landscapes will need variety, but the right kind of variety. They will need “features.” That’s the first major problem I’m going to need to work on once the basic engine is in place, but first I need to make a decision: should this be done top down, or bottom up? Or some combination of the two?

First, though, I need some terrain simplification and some unit tests. The unit tests I’m actually quite looking forward to doing (oddly), since I’m going to try doing them in Groovy.

PS I wanted to include the world from Brandon Sanderson’s utterly spectacular “Mistborn” series here as well, but I couldn’t find a good map online. These books are truly awesome, though. As well as been part of a series, each actually stands alone and completes it’s own story, unlike the fast majority series in the fantasy genre. Seriously. Read them.

* Confession: I enjoyed this book, even if there is a gramatical error in the first sentence. The very first sentence.

Identity

Note: If you’re reading this on facebook, thanks for reading my blog! Please do leave comments, but I’d be very appreciative if you could leave them on WordPress (here) and not on facebook. Thanks!

As you may or may not know, I’m currently in Australia. In fact, I’ve now been here for a little over a month. I’ll blog about it sooner or later, but not yet. This is largely because I don’t know what I’m going to say. This trip has been an alarming combination of coolness and frustration so far, and I don’t want to let too much of the later slip out. That would be highly unprofessional of me, and possibly not great either for my employer or my career.

This post shall be about something else.

I have a side project that I’ve chomping at the bit to get started on, and while I’ve been here I’ve worked up a couple of fairly good ideas for it. I can’t start work on it, though, because I only have my work computer with me, and a studiously avoid doing any side projects or personal work on it, just to be on the safe side, intellectual property wise. Aside from reading up on things and doing some scribblings on paper, the other thing I can do is set up a bit of infrastructure. I’m going to make the project public, both in terms of open sourcing the code and blogging about the ideas behind it (at least to begin with). But where, though? Here’s my dilema: I’m HarveyNick on wordpress, Tumblr, Twitter* and now BitBucket (the place I’ll be hosting the code – side note: I’ll be going with Mercurial for revision control). Should I write the blog entries here (and have them trickle down to tumblr and twitter), and host the code directly under HarveyNick’s account on BitBucket? Let’s say I name the project after my old band, the repository would be

bitbucket.org/harveynick/hinge

Which stamps my ownership on it quite heavily. Likewise, if I put blog entries here: same situation. In some senses that’s a good thing. Right now, it’s my project. I might not always want it to be that way, though. Getting other people involved might also be good. I tend to work better (a lot better) when I have someone to bounce ideas off. So let’s consider option 2; I put the project under another umbrella, and give myself (ie the harveynick identity) access to it. Let’s say I go with one of the names my old band was thinking of switching to after some assholes in Chicago threatened to sue us. That would put it here:

bitbucket.org/deadcitywalking/hinge

I could then start a deadcitywalking.wordpress.com blog to talk about it, and perhaps link the entries here. Should other people start playing in this particular sandpit, then they could perhaps add their own entries to this blog.

You’re probably not interested in this. I’m mostly just thinking out loud. But if you have any thoughts, I’d love to hear them.

* Why do I have all three of these? I’m not entirely sure yet, other than because they’re there.

That iPad thing

Originally, right after I got around the watching the keynote presentation which launched the iPad, I was going to write a blog post about how disappointed I was. I thought they’d screwed the pooch and I, for one, was seriously underwhelmed.

Needless to say, I didn’t quite get around to writing it. Since then I’ve read all the criticism by the naysayers and Apple haters, all the gushing praise from the fanatics and all the stuff in between from the more sensible people*. Now, after some reflection, I find myself somewhere in the middle. I flip back and forwards between thoughts of “that could be awesome,” and “that’s far too much of a compromise.”

Ironically, the thing that’s bringing me around to the idea is the very thing which people seem to be complaining about the most. Specifically: “It’s just an iPod Touch with a bigger screen,” which, in fairness, is exactly what I was thinking. It’s not a bad thing, though. The iPod Touch (and iPhone) have a spectacular interface. The touch controls work well enough and the device is responsive enough to make you feel is though you’re interacting with your music or the internet or your emails in a very direct manor. As a matter of fact, the main limitation of the interface is the small size of the screen. Ah hah…

I think what actually happened is that Apple made a mess of the keynote. Yes, the first person shooter was very pretty, but not really ideal for the interface. A real time strategy game, something like command and conquer, could really sing on this thing. The iWork apps look pretty cool, but a multi-touch version of iMovie or GarageBand could have been seriously impressive. They really didn’t make me believe that I could comfortably read a book on this thing… but if they’d announced text books for the iBooks store and placed an iPad next to the pile of books you usually need each year… well, then we’d have been talking. If they’d have shown how you could search the contents of a text book, spot light style, I might have been sold. Instead they left me to have to think of these things by myself.

I still not 100% certain I know what it’s for, though. Does it replace my laptop? Does it go alongside my laptop? Would I use on the sofa? Probably. On a short journey? Can’t see me getting it out on the bus. A long journey? Yes, I think so. Sitting in a coffee shop? Maybe. It would take up less room on the table. Sitting in the park? A tad more risky. But still, I don’t know. I’m disinclined to spend £500+ on something which is just a toy. I think I can live without multi-tasking, but there needs to be a better system to allows different apps to work together. What use are great OmniGraffle and Pages apps if I can’t insert a diagram from the former into the latter?

Bottom line: I’ll go and have a play with one after they come out. Then we’ll see.

PS For my parents, though, the damn thing is almost perfect.

*Well… I say “all”… what I actually mean is “some.”

The Goldilocks Dilema

Preamble: If you’re reading this on Facebook, what you’re looking at is actually from my blog on WordPress.com. If you want to comment (please comment!) please do so on the actual entry, which can be found here: https://harveynick.wordpress.com/2009/12/09/the-goldilocks-dilema/ , rather than on Facebook. Cheers!

Daddy Bear’s porridge is too expensive.

Baby Bear’s porridge is underpowered.

Mummy Bear’s porridge is just right… but has a monitor in it.

Hhhmmm… perhaps I should explain…

It’s reached that time. My computer is starting to show it’s age. In small ways, mostly. It stalls occasionally, but with gradually increasing frequency. Every now and then it’s slow down noticeably, and the fans are spending more and more time going full blast. If it actually died on me that would a disaster right now, but I’m not too worried about that just yet. Even so, I think it’s time that it had a worthy heir.

At present I have a first generation black MacBook, but I think I’m going to go for a desktop for my next system. I like working at a desk, and with a desktop I’ll get more bang (and screen) for my buck. I’ll keeps the laptop around for taking to coffee shops and trips (and the times when I really feel I need to work on the sofa), and synchronise my data between machines using the fantastic DropBox. While I’m on the subject, I can’t recommend DropBox enough. It seamlessly synchronises your files to and from the web, and works on all operating systems. Even Windows. Also: it’s free for the first 2GB. If you’re interesting in DropBox, please go via the link I posted above, we’ll both get a bonus 250MB of space!

When, or indeed if, my laptop dies, assuming I’ve had a pay rise and/or won the lottery, I might replace it with something a bit sleeker. By which I mean a MacBook Air. You might be saying: “Wait a minute, don’t you have one of the those funky and cheap little netbook things?” and the answer would be yes, but I don’t really use it. The simple fact is: you get what you pay for. It’s way underpowered and the keyboard is a serious pain to use. Don’t even get me started on the trackpad. I do have a use for it, though, and I might come back to that at a later date.

But what desktop to get? Which brings us about back to where we came in. The question is: which desktop should I get. I’m getting a Mac, so my options are:

Mac Pro. Ludicrously powerful, and very expensive. Almost certainly more than I need, and a bigger physical footprint than I’d prefer. Also uses a LOT of power.

iMac. Gorgeous. Just about the exact specification I’m looking for. Not exactly cheap, but within the budget. Uses a reasonable amount of power. Is about as eco friendly as a machine with this sort of spec can be. Has an absolutely gorgeous built in 27″ (or 21.5″, but I would probably go for the 27″) monitor. That last point is both a pro and a con, while it is spectacular monitor which would probably cost about the same amount as a stand alone unit as the iMac itself costs, I’d ideally like to be able to use the same monitor for my XBox 360. That’s how I’ll be playing games, you see. If I got the iMac I’d either have to put my old, smaller monitor next to it for the XBox, or move the XBox back into the lounge where I tended not to use it, as I felt like I was imposing and I like to sit quite close to the screen when playing.

Mac Mini. Slightly underpowered. You can get decent processor in it, but the graphics card is quite low spec and I have plans to do some quite graphics-ey things. It is quite cheap, though, and I could buy an decent external monitor to go with it (XBox 360 ahoy!)  and still spend less than I would on an iMac. It’s also very low power. The most eco friendly desktop on the market, in fact. Going flat out it would still be using less power than the iMac would idle (even taking the monitor into account) and uses only 14 Watts when idle. 14!

So those are my options. You might now be thinking “Fool! Those are not your options! Get a PC! Then you’ll have hundreds of options! PCs are better anyway! Macs are for idiots who don’t know how to use a real computer!” and you would be a little bit right. That would solve this problem. It would also create about a bazilion new problems, though. Like the distinct possibility that I might throw my computer out of the window. Maybe you use Windows. Maybe you think it’s just fine. Maybe you find those Mac adverts really annoying (so do I, most of the time) and you’re fed up of being told that you should “get a Mac” by slightly pompous and patronising people. I’m not going to do that. If Windows works great for you, keep using it. It is shit though. Maybe not on the surface, but as a piece of software engineering it’s a chrome plated turd, and Microsoft spends most of the their time doing extra chrome plating. That one of the many reasons that I’ll be sticking with the Macs until something changes drastically… and I do mean drastically.

In lieu of a nearby Apple Store I think I might go to John Lewis at the weekend and stare at my options. Maybe push a couple of buttons and try and find a way to stress out the graphics chip on the mini. Anyone got any opinions?

Street Fighter Tutu

So I like computer games. This isn’t news, really. Not in a hardcore live-to-game type way, more in a general fondness type way. That said, I did, as a youngster in an age before mobile phones, catch a bus to the next town so I could play a particular arcade game in what was (on reflection) a seriously dodgy little shop. That game was Street Fighter 2. It was a pretty great game, and it pretty much changed everything as far as the gaming industry was concerned. It spawned a bunch of sort of sequels which were mostly very popular, a couple of prequels, which were also very popular, and an actual sequel… which ditched most of the characters people loved and wasn’t as popular.

Coming out a couple of months is Street Fighter 4, a sequel to Street Fighter 2, but a prequel to Street Fighter 3. More about that later, but to complicate things further, there’s also a new version of Street Fighter 2, Super Street Fighter 2 Turbo HD Remix, or as I’d like to call it: “Street Fighter 2: Really Fricking Pretty Edition”. What it is is a revamped edition of the “original” Super Street Fighter 2 Turbo with redrawn graphics, new music and rebalanced game-play (all the characters are about equal now). So now (refering to the images below), instead of looking like the image on the left, the character Ken now looks like the image on the right.

Pretty cool, huh? What’s really weird, though, is that they didn’t change any of the game mechanics, so it still plays like it always did, thus:

Which is a little jarring, but apparently necessary. Why? Because there are still large touraments with this game and some people actually count the frames in order to get their combos right. Weird.

But what of Street Fighter 4? Well it’s still the same style of 2D fighting game, but it uses what I think is the most beautiful graphics engine I’ve ever seen:

This gives it a gorgeous cell shaded / traditional Japanese art type look which I really like. Also, even though the game-play is 2D, the engine is 3D; meaning it’s not limited to pre-programmed graphics, and so Ryu can actually react to the fact that he’s probably about to get dropped on his head, in real time. What’s more, when you pull off a more spectacular move, the game can get a bit more cinematic on your ass:

Credit where credit’s due: I stole all the images from wikipedia and Games Radar. Click any of them to jump to the relevant article.

Objects of Desire

I haven’t blogged in some, so it seemed only natural that I should do the churlish thing and write about items I would like, but do not have, post Christmas.

First of all is a pod based coffee maker. When walking through House of Fraiser pre Christmas my beautiful and wonderful girlfriend had cause to exclaim “These are so cool*!” What she was talking about was a Nespresso machine (or more precisely a table full of them). Basically you pop a little pod of coffee in the top, push a button and really quite good espresso (or something a lot like it) comes out of the spout. Boom. Simple and fast, without any fuss or the need to do much in the way of cleaning. This appeals to me. A lot.

There is of course a problem. The clue is in the name, and being the intelligent general reader you may have already spotted it. The whole shebang is made (or at least owned) by Nestle, who are are (by my own personal set of benchmarks) evil. Like, actually killing babies evil. They make all the coffee which can be used with the machines, meaning there is a limited selection, and have patented the design thoroughly enough that this will be the case for ever-more. So, refillable pods are not an option and the pre-filled ones are aluminium and only recycle-able in Switzerland. Unacceptable. Bugger.

So I did a bit of reading about the other pod based systems out there, and discounted almost all of them for one reason or another. It generally comes down to either evil companies or an unacceptable degree of waste. The one I didn’t discount is the Senseo, which doesn’t produce such good coffee (it has a 2 bar pump versus the nespresso’s 19 bar), but you can buy refillable pods for it. Also, it’s cheaper. A lot cheaper since Sainsbury has it on sale at half price. Problem solved. I’ll probably pick one up tomorrow.

What I won’t b picking up tomorrow is one of Sony’s eBook readers. While I think they’re completely awesome (eInk rules, I though it was actual paper when I first saw it and didn’t even believe it was a screen until I saw it change) £350 is just too high an asking price. That’s a lot of books. Check them out if you get the chance, though. One day, when its price goes down and mine goes up, I’ll get myself one.

Lastly come the controversial one. Women carry bags. This is accepted. The size varies, though. I’ve seen at least one girl with a bag which, though clearly a handbag in terms of design, was about a metre long. Men on the other hand, are expected not to. If they do it is derisively referred to as a “Man Bag.” Frankly, though, it’s bloody useful. I tend to carry a messenger bag around a lot of the time as a result. It holds my tiny laptop, a notebook, some pens (duh), a reusable shopping bag and generally a book and some uni related things. The one I originally bought doesn’t really measure up, though, in either form or function. What I’m looking for is something stylish on the outside, but nerd-tastically well organised on the inside. Stylish that is, again, by my own personal set of benchmarks. I kinda like this one: http://www.caselogic.com/15_4_canvas_messenger_bag/product_detail/index.cfm?modelid=113539 . Now, if I could only find somewhere that actually sells it…

 

* Even though she, in fact, does not drink coffee. No one, it seems, is perfect.

Serendipity

Some things are too perfect for even me to not blog about them.

A little while ago I posted a fantastic song called “Still Alive”, which was from the soundtrack to a computer game.

Some time before that I talked about a Swedish singer called Lisa Miskovsky whom I quite like.

Sometimes the universe gives you lemons… other times it gives you awesome…

So, without further ado, I give a song called “Still Alive”, from a computer game… sung by Lisa Miskovsky:

I quite like the song… but I think the game looks pretty awesome. This might be a game I’ll actually buy and enjoy (making it the first since The Orange Box).