The missing screenshot

November 28th, 2007



"The Enrichment Center reminds you that the weighted companion cube cannot speak. In the event that the weighted companion cube does speak, the Enrichment Center urges you to disregard its advice."

The full cost of Portal

November 27th, 2007

Portal, via Steam: £10

The Orange Box package looks rather tempting though. Make that the full £25

Steam claims I need to upgrade various drivers. The drivers require a Windows update. Windows Update discovers my licence isn't valid. Purchase Windows: £95

But Steam still won't get online properly. Lets all scream together: Please can I play the games that I own? Banged my head against the wall for a few days until I finally discovered the obscure software conflict that's stopping it. Call that another £100 in time and effort.

Steam (the world's least reliable method of getting single-player games delivered to your desktop) now works, at least sometimes. The game crashes a few seconds into play. With a large desk fan pointing into the open case it crashes after about a minute or so, so its a heat issue on the graphics card. Buy a replacement copper-based cooler with a more efficient (and wonderfully quiet) fan: £15



Graphics card now crashes all the time in 3D mode. Extensive net searches reveal its probably an issue with the card's voltage generator overheating. The new cooler doesn't address this area as well as the old one. Buy some ramsinks and bodge them in place: £5



The voltage generator chip releases the magic blue smoke with a fzzt and a horrible smell. One of the ramsinks jumps right out of the case and the graphics card is toast. Buy new card: £65



Finally the new card works, and I get to play Portal. Total cost: £315

Today's xkcd seems unnervingly appropriate. With hindsight, I consider myself lucky to have escaped alive from this misadventure:


As mad as it sounds, it was worth it for Portal. A finer judged narrative in a computer game simply doesn't exist. Wonderfully tuned gameplay never left me frustrated or struggling, but still presented fun challenges throughout. Pitch black humour almost had me in tears in places, and the novel portal gun forced me to think about space, time and physics in a whole new way. Find a way to play Portal if you haven't already. You won't regret it, no matter what!

I was going to close with a screenshot of my ever-faithful Weighted Companion Cube, perhaps the most memorable character in a computer game in years. Of course, Steam won't actually let me run Portal at the moment citing random internet failure as today's reason. Have a DIY effort instead (I didn't make this, I just like it)

Tax needn't be taxing

October 29th, 2007

That's what Adam Hart Davis says in his advert, trying to persuade you to get your tax return in on time.



Smug git. I used to respect him as the very best mad bloke on a bike trying to teach kids science by blowing stuff up. I've even seen him lecture live at the Royal Institution (and he was excellent). He's just plain old wrong about tax though.

It is very taxing.

My mission for today was to get myself signed up for self-assessment. I downloaded and filled out the pleasantly simple form, and took it to the tax enquiry office. I know I could send the form by post or phone the details through on the helpline, but its my first time at this stuff and I wanted to be sure it was done right.

The demoralised looking assistant greeted me and heard my goal. I showed him my completed form, and he directed me to a bank of phones with absurdly oversized buttons. He told me to phone a special number, and the advisor would help me. I was confused that he couldn't look at my form himself, but I guess he's like a triage nurse - directing people to the most appropriate help area.

I phone the magic number and a demoralised sounding girl answers. She gets me to read all the information from my pre-filled-out form and I hear her tapping it into a computer. Towards the end she hits a hitch with my address and says she'll need a physical form with my signature on it. She'll get it in the post immediately.

I ask her what this form is, and it turns out its the exact one I've just been reading out to her. I remind her I have a fully completed version of this form already, and she says to post it to the tax office. I remind her I'm standing in a tax office, using a tax office phone and she tells me to hand the form into the nearest advisor.

Now, my advanced computer-science trained programmer's brain sniffs out an infinite loop here. I tried to give this form in earlier and ended up in a pointless circular phone call. Should I attempt to hand the form in again? Should I chuck it at someone important looking and leg it? Should I give up and keep all my earned money myself?

Cunningly, I skipped back into the queue such that I'd get the alternative triage helper this time. He looked even more demoralised than the others, but he was actually pretty helpful and checked my form over with me before filing it to be processed. He did express concern that part of the form had been filled in with red ink rather than black. I may be confusing the computer OCR (my handwriting will be a bigger obstacle than any strange ink colours). He looked at me accusingly, as if I were trying deliberately to make his life harder. I didn't have the heart to tell him that the red ink part was the bit I filled in at the tax office - with their pens. The only pens available for public use were red.

My highly developed wetware infinite loop detector kicked in again. I'm thinking he may have to use his red ink scowl a few more times before the day is out!

PC Cooling mods, Deeperbeige style

October 28th, 2007

PC cooling solutions seem to get more and more elaborate as time goes by. Heatsinks grow larger. Fans grow quieter. Liquid pipes flush heat through external radiators made of exotic materials. Copper heatpipes are added to everything except the the little blue light on the front of the case.

Not so for Deeperbeige.

My sister was complaining that her computer (previously known as Deeperbeige and my main PC) was getting crashy. Eventually it wouldn't start up at all and I'm called in to fix things. Opening up the case I spot that the graphics card fan isn't spinning. On closer inspection, it isn't even sat in its housing straight.

Looking closer still, it appears the fan hasn't just failed, but failed catastrophically, splitting in two with the brushless magnet falling off the central hub.



I don't have an appropriate replacement fan. The chances of buying one to fit are slim. This situation clearly calls for grade-A bodgery!

I remove the tattered remains of the old fan and take one of the chassis fans from its housing on the side of the case. The PC doesn't get a hard life with my sister at the reins and the side fan isn't all that necessary these days. A bit of creative bending of the original heatsink cover and the new fan is held securely in place, if not neatly. One bit of anti-vibration blu-tac on the bottom and voila! A massively overspecced cooling solution is installed.

Expect to see mods like this at all the best lan-parties soon. Remember, the trend started here!



Phear my l33t case-mod madskillz.

Can't be done

October 27th, 2007

If you develop software professionally, this sort of phrase will probably sound somewhat familiar coming from your boss;

"Bob, I need your module finished by Friday"

If it was planned to be done for Friday, and you're on schedule now, and the original estimates were plausible, and no new work is piled onto you, you stand a good chance of satisfying the request.

If any of the above isn't true however, you will probably miss the deadline. If for example the deadline has been moved to get you on the next module sooner, the chances are the request isn't achievable.

It just can't be done.

And that's the appropriate response to your boss, "No. It can't be done, there's not enough time". All too often I see developers cave to boss-pressure and take on an impossible task. Are they thinking "If I just try really hard I can do it", or "maybe if I skip lunch and stay really late each night I'll get it done on time"? I'm not quite sure why this is such an easy trap to fall into, but the reality of how long something takes is not related to the task's deadline. I think there must be a sort of subtle illusion that makes software developers think they can achieve the impossible if they just apply themselves really well. Maybe its an illusion formed from the sense of power you get from being a competent programmer. You can often achieve so much with so few lines of code, and non-programmers generally have no idea how perform your magic.

Here is the news: Software developers are human. They are constrained by reality. Just because the deadline is in three days, doesn't mean the task will only take three days to complete.

It can be hard to realise this fundamental truth when looking at software development. Like I said, there's some kind of tricky illusion in place there. Think instead of a task physical in nature, rather than intellectual:

Boss: "I need this package delivered to the London office by 4:30pm"
Bob: "But its 4pm now and we're in Edinburgh. That's well over 300 miles. We don't have any 600mph+ transport available so it can't be done."
Boss: "Um. Try working harder? Smarter? Harder and smarter... and er, more"

It should be abundantly clear that you can't deliver a package 300 miles in half an hour. The flaw in the request is the deadline, not the worker. Doesn't matter if he's a lazy bum or an olympic sprinter. He could have a racing car or a jet plane. It still just can't be done. The deadline may be real or arbitrary - doesn't matter. In the same way, if you have a reasonable estimate that your module will take 2 weeks to write, you probably can't write it in three days. You're just not going to be able to do it. You aren't being lazy or defeatist or awkward. Just realistic. The only honest way of dealing with the request is to make sure your boss understands why its impossible and that you aren't going to achieve it.

The repeated horror of Steam

October 19th, 2007

Steam is Valve's system of managing the games they produce on your computer. Quite why they can't have traditional games where you install from a CD and enjoy them immediately is anyone's guess, but they're determined to wreck the PC gaming experience so lets let them get on with it.

A few years back the most eagerly awaited game was Half-Life 2. It was also the first major item available on Steam. It wasn't just available - it forced you to use Steam. This meant everyone got updates to their game as required, and piracy was lower than it would have been otherwise due to the online registration stuff.

Great! Except it wasn't. Predictably enough the number of people trying to play the hottest release ever overwhelmed the Steam server and nobody got to play. The extreme load lasted over a week for me. When it finally connected to the server it proceeded to download several hundred megabytes of updates before finally letting me play the game I'd owned for well over a week.

I vowed to avoid Steam for a very long time.

Unfortunately Half-Life Episodes 1 and 2 are now out. I've avoided them so far, but just recently they're being bundled with Portal. For those who don't know, Portal is a puzzle game where your only weapon is a gun capable of firing holes in reality through which you can leap. It's nearly impossible to describe, so play this handy 2D online Flash version someone made (damn, I was going to do a version just like this myself):

Play Flash Portal online

Anyway, to play the oh-so-tempting Orange Box release of games, I needed to install Steam again. Here's the modern Steam experience:

  • Download Steam installer from the website. Its under 2mb and comes down fast. So far so good.
  • Run the installer. Pick a location, click next. Fine...
  • The installer finishes and a few seconds later an update box appears. What is it updating? I've just downloaded exactly the latest release from the official website. It can't need updating yet, surely!
  • The updater hangs for a few minutes. During this time I can't move its non-standard window around the desktop, and it maxes out one of my CPU's cores.
  • Eventually a dialog appears



You'd think that over the years Steam has been available, they'd maybe have had a small chance to try installing it on a computer somewhere. The most basic level of testing would have found this fault. Little wonder the program icon for Steam looks like a broken crank from an engine.

I tried it again. It did the same. It simply doesn't work. This is a totally fresh install of Steam. It is even on a relatively recently built PC scoring just 2 on the Cruft Force Scale.

When I went to uninstall Steam, I found there's a "support centre" link in the Steam menu group. Worth a shot I thought. It led to a slow website with no easy help to my problem.

I'm guessing what is supposed to happen is the installer goes and downloads the rest of Steam, builds it up, then probably downloads some more updates for the hell of it. Then after downloading some more unnecessary stuff it starts up and downloads updates for your games. If you're lucky enough to get through all this, you may be privileged enough to be spat out at the user-authentication stage.

Frankly, the process is never going to work. There are too many points of failure. I can only conclude that Episode 1, 2 and Portal don't actually exist. Maybe Steam is Valve's way of hiding the fact that they haven't produced anything in years.

Its all a big conspiracy I tells ya!

Choosing an appropriate level of design

October 17th, 2007

When writing software, it is common practice to make things generic. As a trivial example, imagine you need some way to add up the integers from 1 to 5. You might write:

$result = 1 + 2 + 3 + 4 + 5;

Most programmers would agree that isn't a very clever thing to do. Predictably enough the client will probably require you to add up 5000 numbers in their first change order. Clients are tricky like that. So we should probably have written a loop and given it a configurable end point.

We could anticipate other changes too. Maybe we should add numbers from an array in case the client wants to supply their own data to include. Maybe we should make the combination function (currently 'addition') configurable so we could multiply numbers, or subtract or whatever with just a small change. Maybe we should get the list of numbers from an XML database living behind a SOAP web service in case of...

Maybe we've gone too far.

You can add more generic-ness to a piece of code as much as you like. Eventually, you just give the client the programming environment and call it 'the most generic solution you can think of'. All they have to do is 'configure' the language with the code that does what they need. This probably isn't what they had in mind when asking for a fully generic solution though.

You might think this sounds silly, but I've worked in real environments where changing the configuration of a system was considerably harder than just programming the effect I wanted from scratch. These systems were too generic.

So what should we do as programmers? We shouldn't be automatically asking 'how can this be more generic'. We should be questioning 'what parts of this are likely to be changed'. This means we need to understand the context of our code. It is not sufficient to simply read a specification and code it up precisely. We need to understand why each requirement has been written and in what way those requirements may be updated when the first change-order comes along.

We should also be asking ourselves if the extra complexity added to the code is worth it? If its just a few lines achieving a simple task, the chances are it would be quicker to rewrite that section if the requirements change. Don't think of configurable options as free in development time to change. Someone has to figure out where the option is, what changing it affects and if it has broken any tests.

Judging this stuff isn't easy! It goes smoother with experience, as long as you admit you'll never stop learning. Chances are you'll make mistakes that require costly code restructuring from time to time. The important thing is to add those mistakes into your experience to doing the same thing next time.

Open Office: The Free Alternative to Microsoft Office

October 14th, 2007

MS Office - you can find it on almost any Windows anywhere. That's because its useful. Probably not the best software for spreadsheets and rich text documentation that exists, but everybody else has it so if you want to be able to see their stuff, you'd better have it too. Right?

Wrong.

Because there's some lovely kind generous people who have built an alternative that you can download off the internet and install for free. Legally. It boasts very similar features to MS Office with a spreadsheet program, a document writing program, a presentation program, a chart drawing program and a database program. The best bit is that each of these can open MS Office formatted files and edit them, and even save them in MS Office format so your buddies can still read them. So, we should all be using this right?

Kinda.

There are downsides. But first the good bits:

  • Free - As in 'zero money'. You don't have to pay for it. Great!
  • Free - As in 'open and honest'. If you want, you can grab the source code and modify it to your needs. You probably won't, but its better this way, trust me.
  • Familiar - it really is quite a lot like MS Office. It looks a little different, but anyone with half a brain will feel quite at home if they've used MS Office a bit.
  • Easy to use - Even if you haven't used MS Office before, you won't struggle here.
  • Makes PDFs - Each application has a nifty 'export to PDF' option. Something MS Office has been lacking for way too long.


So what's wrong with it?

  • Slow - It runs pretty badly even on my new monster PC. That means that on a typical machine, you'll need to exercise patience. It isn't a case of going and making a cuppa whilst it opens or anything. Just that nothing is quite as responsive as it should be.
  • Crashy - It seems to freeze up or suddenly vanish rather more often than you'd expect. Granted, MS Office does this sort of thing too, but this really is considerably more frequently bad.
  • Behaves just a little bit differently to MS Office in places. Press delete to clear some cells and it'll pop up a dialog asking what to clear. No big deal, but if you're used to using Excel then your fingers are probably 10 edits ahead by the time you've noticed it isn't doing anything. Irritating!


You might think it the crashyness is the big showstopper, but exercise a bit of backup caution and it isn't much of a problem. It is the marginally different behavior that is the big problem. Mainly when it wastes your time or leads you to accidentally destroy all your data.

Another example: Navigating filesystems is a brain-effort I want to reduce normally. It isn't that filesystems are hard, just that my head is usually full of other stuff. I don't tend to use file->open inside an application, then browse to the right place. Chances are I've already got a file explorer looking at the right place and double clicking a file will send it to the right program. A nice extension of this is that most applications will happily launch with a new empty document if you hand it an empty file with the right name.

So, right click in an explorer. New->text document. Rename it to myProject.doc, and double-click it to open in Word. Write text, format text, save text. Everything works.

Do the same with Open Office Writer (the equivalent of Word), and you get your text outputted into the file, but in plain text. Not in MS Word format. Not in Open Office Writer format, but with absolutely no formatting data. Worse, you get no hint or suggestion that something is amis. Each time you save, it whirrs and clicks like its working. The formatting you've added on screen stays there. No dialogs pop up. It is only the next time you open the document from fresh that you discover it has thrown away hours of your work.

Now, I know that's not a very common way of working, but it still shouldn't fail that badly. It should never fail that badly. Ever! At the very least it needs to warn the user that they're doing something that won't work very well.

The equivalent situation exists in MS Excel, for comparison purposes. If you open a CSV file you can add formatting, colour things, add new worksheets etc. Formatting cannot be encoded into a CSV file. CSV is just a simple text format. When you go to save in Excel it will warn you that you're about to lose some of your work. The warning is annoying if you know what you're doing, but I've never lost data to Excel through something like that.

I suppose that's the difference between £350 of commercial software developed and tested by paid professionals, and £0.00 of free software developed by enthusiastic hackers in their spare time.

DIY Spectroscope

October 14th, 2007

A spectroscope splits light up into its component parts. You probably used one once in a science class, in a dark room trying endlessly to adjust the thing to find something out about light. The demonstration was pretty ineffective on me at the time and I didn't take much away from it.

I happened across this page recently, with instructions to build yourself a spectroscope from some dark card and an old CD-Rom. I didn't expect it to work, but it wasn't a big project so worth a shot.



Peering into the device for the first time amazed me. Not only did it work, it worked remarkably well! So well that with a little modification my camera could take photos of the results through the device.

Bright sunlight.


Incandescent (normal) indoor light bulb.


Energy-saving bulb.

Four strange games

October 13th, 2007

I've been busy recently at work producing this lot, amongst other sites. These are all a bit of a mystery if you ask me. Some very odd concepts, but hey, who am I to argue. I just bolt 'em together.

Sonic Rush Adventure.

A simple pairs game. The twist here is that you can turn tiles over as fast as you like to try to match them up quicker. If you can beat 15 seconds you're doing well. The record is a near savant 10.45 seconds!

Play now

Dareway

Derived from the original Fantastic Four missile dodge (see immediately below for a reskin of that game). You're driving through space on a kiddie's toy that's a bit like a Segway but not as posh, and even more likely to spit you off into the nearest thorny bush. Aliens hovering just out of sight are firing great big green space lasers at you, presumably consumed by their jealousy-fueled rage. You dodge for as long as you can, whilst trying to work out why a wheel-driven vehicle works in space anyway.

This has a little bit of interesting tech in it. The multi-layer starfield is randomly generated and scrolls in any direction. It uses the newish BitmapData.scroll and BitmapData.setPixel methods to slide everything around at very low CPU cost. A simple movieclip with thousands of tiny objects would take considerably more resources. It would likely have further costs associated with the overscan nature of the looping causing the redraw regions to grow excessively.

Personally I think it has an interesting visual element to it as well. When it ramps up a bit and there's five or so lasers coming at you at once, it forms interesting boxes of safety that you're constantly trying to manoeuvre into.

Play now

Fantastic 4

A quick reskin of the previous Fantastic 4 game. Why would a client want the exact same game as before? I don't know. They just pay me to make them. It was a fairly playable game before. It hasn't really changed, so its still a fairly playable game now.

Play now

Dark Is Rising

This one doesn't actually qualify as a game. Pick up the tiles. Chuck them. Seven times. You win. Again, I can't quite see why a client would want this, but it has some interesting collision stuff in it so I was happy enough to build it.

The tile that lands face up most becomes your 'tile of destiny'. If thrown at random, on average there will likely be a draw between the tiles, meaning no winner. We can't have that, so the whole thing is rigged in advance. It carefully ensures there's no chance of a draw, and that it doesn't actually look rigged. These things take more thought than you realise, y'know!

Play now