Saturday, December 29, 2007

Don't Involve Yourself

I loathe and detest DIY. And owning a new house which needs work has help me pinpoint some reasons why: it's primarily the differences between DIY and software development that make it so frustrating for me.


1. Inaccuracy

When writing a piece of code, I can make it unfailingly correct and absolutely precise. When complete it's a thing of beauty which perfectly fits the task for which it was intended, smoothly sliding into the software without touching any sides.

When I try to mark a straight, horizontal line on a wall, measure and mark off some screw points and drill them out, it just seems impossible to achieve anything close to precision.

For one thing, in our house, the walls aren't even perfectly straight (it's an old house). Then there's the process of marking things with a pencil (whose lead has a thickness and which must run alongside a rule - both sources of inaccuracy). Then there's the drilling itself - trying to hold a heavy vibrating machine completely still while it both hammers and twists itself around isn't easy, especially working off a ladder. And then there's the structural integrity of the wall - being composed of a combination of soft and hard material at unpredictable points so that the drill will move very rapidly through the soft before striking something hard which causes it to jolt off course.

All of these factors conspire to result in drilling holes which:
a) don't go straight into the wall, which makes putting the screws in difficult.
b) aren't in the right place, which makes putting the screws in impossible.



2. Lack of Undo or Source Control

When coding, if I do something wrong, I hit Ctrl-Z to undo. And because I always set my undo buffer size to something enormous, I can successively undo changes a long way back. If I want to retrieve an earlier version of some code, I can usually go and find it in Source Control.

When I drill a hole (or worse, a series of them!) in the wrong place, there's no recourse to any such convenience. Moving a curtain pole means unscrewing it from the wall and starting over. And hopefully it's being moved up and not down, because otherwise the result is unsightly rawlplug holes who staring at you accusingly from above the pole. The only thing to do then is pray that you're planning on decorating soon (my advice for new homeowners: drill and screw and install every single thing you're every going to need, and only then decorate the entire place).



3. How long everything takes

Now I've been doing it for a while, I can make software happen pretty fast. Modern IDEs and SDKs are well-streamlined, and knowledge of where to find your tools allows solutions to come together with relative ease.

Doing even simple DIY tasks seems to take me ages. And I'm not even talking about the extra time to minimise the inaccuracy (which in my case is considerable). I just mean locating the right tools, putting them in the right place, and swapping between them as required.

In fairness, what I have in software development is the equivalent of a work-shop, with all my tools arranged tidily where I can find them and with plenty of space to do things. But (also in fairness) a real-life work-shop wouldn't be a lot of use in a number of the DIY tasks around the house, where tools need to be brought into the field. The worst is drilling and screwing up a ladder on your own, where you have to come up and down the ladder to exchange tools.

I was thinking that perhaps a decent tool-belt might be a solution, but to take the example of switching between electric hammer drill and electric screwdriver, this just isn't feasible, so I guess what I'm really waiting for is some kind of hand held multi-tool from Star Trek.



4. Lack of a Community

I'm working on some code, and I'm stuck. Maybe I don't have any idea how to achieve what I want, or I'm aware of a range of solutions and don't know which to choose, or else I've chosen a solution and it doesn't seem to be working for me. Either way, I switch to a browser window, do a search, and can usually turn up some useful advice in minutes. Failing that there are email lists full of wise people who always seem happy to help their fellow developer.

In contrast, when working on a DIY project, I feel as alone as Samus in an alien cave. I've searched, and the internet isn't so full of helpful DIY advice as it is for programming. I think one reason is that the medium isn't text-based like code, so it's harder both to give advice in that form and to search for it. But mainly I think it's because the people with all the wisdom - the DIY mavens - aren't on the internet doling it out like they should be.



5. Bad Tools

Where DIY is concerned I'm happy to describe myself as a bad workman - in fact I'm rubbish. But that doesn't disprove the existence of bad tools.

In software there are bad tools too, but this is mitigated considerably by the existence of a strong community who are constantly refining their tools and and sharing them on the internet. Not happy with the standard c++ String clases? So head over to CodeProject and consider one of the many alternatives.

Actually the reusable tools of DIY like hammers and screwdrivers aren't the focus of my ire here - oh sure, the hammer drill isn't the most accurate of beasts, but at least it fundamentally works.

No I'm talking more about things like curtain rails or plumbing components, which seem to be suffering from underdesign. Plumbing in particular doesn't seem to have moved forward much since the Romans - it's 2007 and we're still having to hacksaw up bits of plastic to make them fit together before employing a combination of various sticky sealant solutions and blind faith in order to tame the water. By the 21st century, I'd have expected plumbing to be no more complex than Lego by now, but apparently not. I think there are two reasons why this is the case:

1) The key stakeholders (like plumbers) have little to gain from making their trade accessible to the wider public.

2) Whereas the internet serves as the mechanism for software tools to be constantly improved upon and then fed back into the development community, no such mechanism (or indeed community) exists for trades like plumbing.


6. Lack of Reusability

This point is perhaps a bit flippant, but apart from keeping out of the cold and the rain, one of the nice things about being a software developer is that the requirement to repeat the same tasks over and over again is fairly limited. Once you have a piece of code in your toolshed you can wheel it out over and over whenever it's needed, repurposing as required.

Unfortunately, when you need to drill holes in walls, or sand floorboards, or repair toilet cisterns, you actually have to do it each time. Bah!



7. Underwhelming End Result

My final issue with DIY is that the requirement for the work is usually in order to achieve something utterly mundane. If all the misery of sawing, drilling, glueing and screwing was aimed at creating some kind of adventure-playground funhouse-wonderland for some children, well! I still wouldn't enjoy doing it, but at least it would give me a sense of gritty determination knowing that the end result would be worth it.

I just don't get that from towel rails.


Saturday, December 22, 2007

Highlights

This will be my final post before I disappear off to rural Ireland for Christmas, so I'm going to take the opportunity to look back on some of the good stuff that happened in 2007:


Moving into a new house of our very own, in Finsbury Park. Hurrah!

Playing guitar in Satan's Cock

Some games I particularly enjoyed included:

Praise for the game I designed, Prism:Light the Way:

Working on Hohokum with Hoggo:

Thursday, December 20, 2007

Not Fun

I'll tell you what kind of game wouldn't be fun: A game where you have to lay out and cut rolls of loft insulation and then lay out and cut sheets of chipboard, in order to insulate and board a loft - that's what kind.

Monday, December 17, 2007

Gamma 256

Last night I had a blast through some of the entries to Gamma 256 - an indie game dev competition whose event closes the Montreal Games Summet.

You can find the games here.

So far, stand-outs include:





Bloody Zombies, where you mow down the dead with a lawnmower, Braindeadstyle, then surf around on their blood like that old forgotten Molyneux platformer, Flood.






Mr Heart Loves You Very Much, which is an interesting take on the space-navigation, block-sliding puzzler.


And Stdbits, which is like a nu-rave take on the old Atari VCS game Adventure.



You'll be wanting an Xbox 360 controller for Windows, which (happily) is becoming a standard requirement in the indie-games scene. Enjoy!

Saturday, December 15, 2007

Fez

In a two-for-one-weekend-special, here's a game I found linked from Jason Rohrer's Arthouse Games Blog.

It's called Fez, and it looks very much like a cross between Cave Story, and the PSP game Crush (which I've not played yet). It's being made by a group called Kokoromi.


Passage

Here's an interesting piece of interactive art (I would hesitate to describe it as a game exactly, although it shares many elements with simple games.


It's called Passage. Download it (PC, mac, unix) and play through at least twice. The visual effects are interesting as is the procedural music, but it's also strangely affecting, considering its limitations. Get it here

Once you've played it a few times, there's a statement by the artist, Jason Rohrer about the work here.

Tuesday, December 11, 2007

Self-Assessment and Mario

Phew! Something about the end of year does something funny to me. I think a combination of both the year and my age changing in such a short space of time makes me take a long hard think about what I've achieved in the year, usually resulting in a coding frenzy that starts in mid-November, and continues into the new year. The regime of doing a full day's work before heading home in the dark and cold for another few hours bathed in the glow of a screen is both gruelling and exhilarating in equal measures, but I definitely wouldn't do it if I didn't have a project I was proper excited about.

Work on Hohokum has been progressing pretty well, albeit not quite as quickly as I'd naively hoped. The thing about programming is that you can go really fast and throw skyscrapers up in no time, but if you do their internal layouts tend to work out a bit sub-optimal, and you find yourself walking out of lifts straight into toilets and all kinds of weird stuff. It's generally better to spend ages on the lobby and make sure you've got it just right before you start heading for the stars. Anyway, excuses aside, I should be able to post something here before the end of the year, assuming I can work out how to link it into the blog.

I've also finished the Flash version of CowBandits, which is a game I last made in 2002 for mobile, and involves the player piloting a little Thrust craft through a subterranean cave system looking for cows to abduct and drop into a giant space mincer. I'm really happy with the way it turned it - it's much closer to my original vision of the game, which was somewhat sullied by the format at the time - chiefly that mouse controls are much better than mobile phone keypads for controlling fiddly little spaceships being pulled by gravity.

And finally, I'm still playing Mario Galaxy. I have over 60 stars now and have 'completed' the game, so now it's the hunt for every last one. I still look forward to playing it every time I turn on the Wii, but I think there are a few glaring faults:

Dear Nintendo,
  • Guys, it's 2007 - it's now officially okay to not have a lives system. It patently doesn't add anything to the game - I've yet to run out of lives once so far, and even if I wasn't diligently hoovering up all the star bits for regular 1-Ups I get plenty from the hub world (primarily from Peach and her stupid letters, which keep arriving even now she's safe in her Mushroom Castle). When I'm on a particularly difficult level, the distant possibility of running out of lives and being rudely booted back to the hub isn't a good thing- it's just unnecessary stress that marrs an otherwise wonderful experience.
  • Please put in ALL of the sensible restart points in future. Oh sure, Galaxy is still hundreds of times better in this area than most of the main offenders (many other Nintendo games among them), but it's still not perfect. The rule is really simple - doing a difficult bit successfully, then failing at the next difficult bit and being forced to repeat the first one is just NEVER FUN. You've almost put restart points in all the right places - now just go and add that final 10%, and we have a deal.
  • Springy Mario and flying Mario aren't added bonus features. They're irritating and half-baked - don't acknowledge this by barely using them; just remove them instead - Galaxy has plenty else that works brilliantly, so we won't mind, honest.
Thanks.

love Ricky

Wednesday, December 05, 2007

Thoughts from the Toilet Bowl

Flicking through the back of Edge magazine, I wondered what the games industry would be like if nearly all the advertisments for jobs or degree courses didn't employ a picture of a  giant fucking barbarian on horseback, or a scantily clad manga babe.

More exposition coming real soon folks!