Saturday, December 26, 2009

Yas hotel

Remember the Yas hotel from the F1 coverage?

Am I the only one who suspects the architect had this in mind?

(Nope, not alone - Googling for "Yas hotel penis" gives 38,000 hits)

But unfortunately rather than an enormous glowing penis what they've actually ended up with is a giant balls-up, because after only a couple of months hundreds of the LED panels have failed and it now looks like this:

Perhaps it should have worn a condom...

(For the record I was not involved in this project and those aren't our LED panels)

Sunday, December 06, 2009


I have occasionally wondered what it was that the fat slug had on Blair that made the slug effectively bullet-proof - oh, dammit, what was the fat bastard's name? Ah - John Prescott.

(Found that by Googling "fat labour slug", his name appears in the first entry)

I mean, he had to have something personal on Blair because as soon as Blair went the fat slug went too... He didn't even wait to be pushed. Or salted.

But that isn't quite what prompted this grump; what happened was that I was discussing my previous political grumbling blog entry, and what had happened to the slug, and the conversation meandered around to the way that the British are always jumping at the beck and call of the Americans - far more than you would expect from simple common interest. And it smells like the same thing - the yanks have got something on our political leaders, the only question is what?

Is it just coincidence that the country that spends most on signal intercepts seems to completely control our politicians? Is it paranoid to wonder if the yanks, who must know just about every one of their dirty little secrets, are busy blackmailing the miserable bastards?

If not, why not?

Bizarre hacking

Found something strange on my home fileserver a while back - a couple of directories and a few dozen files had appeared that have nothing to do with any of us... I guess someone has either hacked into the server from outside using broadband, though the firewall setup really ought to stop that, or someone local has hacked into it through the wireless network. We have a reasonable security setup but I imagine that just means it takes 'em a few minutes longer, gah.

The strange thing is that the files were just nonsense, I would have expected something constructive (in their terms at least) like an attempt to use the server to spam the world, or something destructive like planting a worm, virus, or embarrassing files... Why would you hack into something and then leave an obvious trail? Bizarre.

Perhaps the file-server is becoming sentient, and these are its birthing cries...

Invasion Of The Body Snatchers (2)

There were a couple of things about Body Snatchers (I always hated the spelling 'Snatchas', which Chris Clark insisted upon in order to avoid potential copyright claims) that made it unusual. Firstly it was frame-locked, not an easy thing to accomplish with the hardware available, and secondly all the objects existed independently of the display limitations, so an alien that was off-screen could shoot at you, and you could shoot at it. This was something that was generally true of Design Design games. Note that Body Snatchers was a Design-Design game that was marketed by Crystal Computing.

In order to achieve frame-rate there were some fairly aggressive programming strategies. The objects were drawn using code-fragments rather than having character drawing routines and graphical data, there was some hideous code to undraw objects that used the stack pointer to build a definition of what was displayed on-screen, since there was nowhere near enough time to just clear the whole frame-buffer.

To minimize colour flickering most objects were drawn on 8x8 pixel boundaries and moved in multiples of 8 pixels, this being the minimum size of cell that could be assigned different colours with that display technology, and so objects moved very quickly indeed at 50*8 pixels per second...

There is a cheat code (long forgotten) that puts the game into a mode where the players ship repeatedly explodes, and during some television coverage of a computer trade-fair they used our stand as the backdrop for the report, probably the first time a Design Design game appeared on national television (quite possibly the last time as well, now I come to think of it) and this was what was running on the computer that the reporter was sitting in front of. At the end of the report he turned to the computer and pretended to play the game for a few seconds, which looked pretty silly with the ship doing nothing but exploding... Various members of Crystal Computing were visible in the background during this coverage, vying to be seen on national television; all except the programmers, of course, who were off boozing in the bar. That being the only thing worth doing at trade-fairs...

The game was credited to Neil and I, but in practice Neil had very little to do with the game and provided support on the development tool side of things; I suspect Neil would have contributed far more if the game hadn't been so boring, from what I remember of the whole process he really wasn't interested in writing arcade clones. I don't blame him, I pretty well lost interest after I'd proved to my own satisfaction that it could be done at frame-rate, which shows in the game itself - there's very little to recommend it. (Many years later I wrote a follow-up for the PC more or less as an apology for making such a pigs-ear of Body Snatchers).

There are several jokes in the high-scores, some of which have been detailed elsewhere and some of which are sufficiently obscure that they are mercifully lost to time. One that I remember fondly and which I believe has escaped documentation until now is the way the lengths of the lines of text in the high-score table were chosen so that the outline of the right-hand side forms a profile view of Graham's head (Graham Stafford was a founder member of Crystal Computing). He, I think it is fair to say, had a prominent nose, to which the term beak-like could easily be applied. As well as caricaturing the outline I was particularly proud of working the word "eye" into the high-score table entries (song lyrics) about where his eye should be... I don't think I ever pointed this joke out to him, and but for the fact I'm twiddling my thumbs writing this while a huge file downloads it would certainly have been forgotten. Ho hum, as Martin Horsley used to say.

What else? Um... The 'men' that the aliens are abducting, and which you have to rescue, are clearly depicted wearing skirts. There is a reason for this - they're women. This was a joke, something along the lines of me not wanting to write a game were you fly round picking up men. Laugh? We nearly did... There was a follow-on joke about there being bonus extra people because of what the women you saved got up to between the sheets, but it's best forgotten. I was a callow and inexperienced youth, such was my sense of humour back then.

Friday, November 27, 2009

Suicide bombers

The other day a friend and I were discussing the way the press call suicide bombers cowards. Call 'em idiots, if you like, that's generally appropriate, but cowards? I wouldn't have the guts to do it...

Then that led to us pondering [gross simplification alert] the whole Muslim paradise concept that these idiots are sold - die with the name "Allah!" on your lips and you are guaranteed an eternity of virgins, endlessly renewed... Well, think about it - what sort of pathetic inadequates would want to spend eternity in the company of virgins? The whole idea stinks of primitive misogynistic stupidity - give me an experienced lover over a virgin (or under, I don't care... sorry...) every time.

It's all a bit worrying, really - "Allah" sounds enough like "Aaargh!" that it could happen by accident. One wrong syllable and I could find myself educating virgins for eternity; remind me - is this supposed to be heaven or hell?

Maybe that's why black-box flight recorders show that the last word of people who know they're about to die is almost invariably "shit!"... Far less ambiguous than "Aaargh!"...

Hmmm. After due consideration I've decided to opt for re-incarnation and come back as a lesbian, who in their right mind wouldn't? Though knowing my luck it'll be as a lesbian sheep with all the frustration that implies. Gah...

Oh, shit - thought of something worse than being a lesbian sheep - might come back as a lesbian in one of those backward countries where the women have to go round wearing tents lest the sight of naked female flesh (we're talking about arms, legs, faces, etc here, nothing risque) drives the so-called 'men' wild with lust - ever stopped to think about their revolting logic? The men make the women cover themselves up because the men say they can't trust themselves not to rape women who are uncovered? What does that say about them? Learn to control yourselves and leave women alone...

Those wondering what I've got against sheep might not know that a female sheep that wants sex basically signals this by standing still. That's fine if you're a heterosexual because eventually the ram will notice and spring into action, but if you're a gay female sheep it's a bit of a non-starter... You stand still. If you're lucky another female likes you and... stands still... Then you both stand about being embarrassed and fending off unwanted males. It's a bit like a student disco, now I come to think of it.

I'm going off this whole lesbian thing, it seems fraught with difficulty.

Thursday, November 26, 2009

Garden Partly

I was rummaging about in some old files and I came across this set of alternate lyrics to Marillion's Garden Party. May not mean anything to anyone else, who doesn't know Ste, Simon and Fiona, but it amused me to write and it amused me again when I came across it today...

Ste's been drinking things today
Fiona's home there's hell to pay
Social drinking, another bender
Wayward Ste's with another lager

"Hello can, hello can"

Edgy cats in mewing numbers, rudely wakened from their slumbers
Time has come again for slaughter, on the chair by drunken 'master'

Water pistols keep them on the run
Flying cushions chase them, every one
Straafed by Steve, they sulk in hidden corners, again
Oh God, not again

Vindaloos consumed en masse, betray their presence as a gas
Plazas loiter in the stomach, chemicals leech creating ulcers

"A lifetimes' drinking dims the light, the results of smirnov in the eyes"

Doctors son, her mothers daughter, will they make it to the altar ?
Please don't consume all the grass, unless accompanied by a fellow

May I be so bold as to perhaps suggest othello ?

Punting all the cats is jolly fun
They say
Going to the pub, oh please do come
They say
Drinking is the tops, a game for men
Oh they say
They say
Good God they say

I'm punting
I'm drinking
I'm snoring
So boring
I'm rocking
I'm fucking
" Who's is she ?"

Life's a party

Simon scores another few, Fiona smiles she got it too
Ste concedes a losing battle, cigarettes out - it's his flash

Phone calls polluted with false charm, Mother knows he means no harm
Future dinners now assured, he returns to drinking - unperturbed
Oh, unperturbed

Ohhh Punting all the cats, oh please do come they say
Drinking dry the town, oh please do come they say
He's sleeping with your wife again today
"Oh please do come"
"Oh please do come"
He say...

Incidentally, they all loved it. Ste was invited to retaliate, but sadly never did.

Psi (the Simon in the tale) also versified Ste, but the only line I can remember was :-

"It was big and brown and it wouldn't go down"

I seem to recall this related to the mother of all turds...


Wasn't paying much attention, but while I was I working with the radio on in the background I heard that Obama had pardoned a turkey.

Was it Bush or Blair?

Thursday, November 19, 2009


In order to justify his invasion of Poland Hitler hatched a plan to make it look like the Germans were provoked; this involved the Nazis faking a Polish raid on a German radio station near the border. To create credible 'evidence' for the raid some political prisoners were to be dressed in Polish uniforms, shot and their bodies left near the station; in the plans these unfortunates were referred too as "canned goods".

As a result of this invasion the English declared war on Germany, and the declaration of war was broadcast on radio immediately following a programme titled "Making the most of tinned food".

Someone or something has an ironic sense of humour...

Monday, November 16, 2009

Dairy products

Just turned the TV on and stumbled across an episode of something called Emmanuelle 2000 on the sci-fi channel. In an improbable sex scene set in a kitchen a couple were pouring dark chocolate sauce and milk over each other... Chocolate sauce, yes, cream, yes - been there, done that - but milk? cold milk straight out of a fridge? No.

Probably some insane american black/white equal opportunity thang...

Tuesday, November 10, 2009

Windows 7

So, in a rare - one might even say unprecedented - moment of enthusiastic optimism I ordered a copy of Windows 7 (ultimate edition) from Amazon. After all, it couldn't possibly be as awful as Vista.

After forking out £140 and waiting a couple of days, this arrived:

Gods, it comes to something when even Microsoft can't afford a decent box... Hang on - light dawns - this is a pirate! I suppose that's what you get when you order software from:

Gah... I spend minutes of my life writing invective and telling them that if I wanted pirated software I would get it myself, not spend £140 on it. I wax lyrical. I am prepared for a long drawn out fight with some faceless corporation. And then you know what they go and do? Refund me in full. What sort of nasty, evil, twisted company does that? After Sue has gone to the trouble of finding that nice picture an' all...

Sheesh. You just can't trust some people.

Monday, November 09, 2009

Yahoo toolbar

No! I do not want to install your bastard toolbar! Stop asking me! Just bugger off with your "A new Java update is available and by the way, would you like to install the Yahoo Toolbar?" or your "A new AVG update is available and by the way, would you like to install the Yahoo Toolbar?" or your [deleted] garbage [deleted] bastard [deleted] software that installs that miserable toolbar... [deleted]

I wish there was a way to tell those [deleted] [deleted] at Yahoo to stop spamming the [deleted] universe with their accursed toolbar. Wankers...

I may have been going on a bit about this at work, because after one grump a chorus of "They fuck you with the toolbar" was heard...

Monday, November 02, 2009

Religious education

"The thing you have to remember about religions is that they can't all be right... They could, however, very easily all be wrong"

Friday, October 23, 2009


So, after much rummaging about I have got this bastard long-running project to a state where it's worth taking it to the customer and plugging it into their mass spectrometer hardware, where it's basically going to be responsible for controlling the timing, driving various electrostatic lenses and acquiring data.

The design has an FPGA containing a reduced version of the R3220 (my custom 32-bit RISC processor) and about a dozen custom peripherals, it's running a fairly complicated embedded application (written entirely in assembler) consisting of 33 source files and the damned thing is responsible for some fairly hairy real-time data acquisition in a noisy environment.

As well as the device itself there are various development tools that have been written to support the design, all in all some tens of thousands of lines of code. All of which had to work and none of which had actually been tested on the machine.

And to cut to the chase, after we'd set some parameters (there are thirty-odd interface registers to play with up) and I'd restored a couple of lines that had been accidentally edited to death, it was controlling the hardware and we were looking at mass peaks... In other words, nearly everything worked first time, and the bit that didn't just required a few seconds of editing to fix.

The thing is, a programmer would regard writing so much code, and in assembler, and having it work virtually straight away as success beyond their wildest dreams, if not as being completely impossible. Me? I'm actually slightly pissed off - if I hadn't made a tired mistake tidying up a file (unnecessarily, at that) the bloody thing would have been right first time... As usual. Bugger!

Still, given that the processor was designed in only ten days and it's lovely to use, is kicking the shit out of a Nios2 performance wise and has behaved perfectly I suppose I'm allowed a small cackle of victory.

Mu-haha! MU-ha-ha-ha-oh... Sorry. Bit carried away there.

[Update on the "kicking the shit out of a Nios2" comment.

The R3220 (clocked at 30MHz) is handling more data in 5uS than the Nios2 (clocked at 70MHz) managed to handle in 80uS, so as far as the application goes the R3220 is a factor of 36 times faster, or so.

Much of this performance margin is down to the efficiency of the code they are running, of course, thought it should be noted that the Nios2 was running highly optimised C, code that was written and tweaked over a period of months. The R3220 is running hand assembler written over a period of hours and not optimised at all - there was no need.

The Nios2 system also had a lot of hardware support for functions that the R3220 system just does in software, because it can, so the performance factor is arguably higher even than that...]

Tuesday, October 20, 2009


Just watched an advert demonising CO2. Far too little and far too late.

Wonder if any of the stupid ignorant bastards who've been doing their best to doom us all by opposing nuclear power will finally wake up and admit their culpability?

No, don't be stupid crem. They're probably all gearing up to oppose nuclear fusion...

Thursday, October 08, 2009

Great Myths of the IT Industry

  • Abstraction is invariably a good thing
  • Efficiency doesn't matter
  • You can be a competent programmer without understanding hardware, low-level programming, logic, anything much
  • Bugs are inevitable

Wednesday, October 07, 2009


Alli is a new over-the-counter drug that binds to the fat in your diet and prevents the body from absorbing some of it, so that people can carry on stuffing themselves and still lose weight.

In a world where people starve to death it strikes me as almost obscene to market a drug that encourages the rich to eat too much and then shit fat...

Thursday, October 01, 2009

Even more gloom

You know, I wouldn't have thought it possible for today to be worse than yesterday, work-wise.

But it managed.

We have a reasonably large order for a new project, for which I have already designed the hardware, and so I just need to write enough of the software to be sure that the hardware works so we can safely order the PCB's, etc, for manufacture. Though actually I suspect that once started I'd actually write the whole thing so that we can provide an early sample for the customer to evaluate.

So, I duly set up the project and start to write code. Or at least I would, except that for some unknown reason the thrice-damned compiler for one of the processors involved (a Jennic RF device) has stopped working. Yes, the software has rotted. Or, to be more accurate, something I've installed (some other version of gcc, probably) since last time I used it (a few months ago) has messed with the path, or the environment, or whatever, and killed it.

Not that it gives a helpful message, you understand, no, the only indication is an essentially meaningless error from the make process, emitted from one or other of the (slightly incompatible) versions of the fucking make utility I have to have on this system. So once more, if I can work up the energy, I'm going to have to delve into makefile hell, find out what the bastard thing is moaning about, why it has changed, and what to do to fix it. And this, no doubt, will fuck with something else on the system and make that stop working with some obscure problem I will trip over later...

Oh, gods, how I detest relying on other people's development tools. I'd say most of 'em were designed by arseholes, but the truth is that most of 'em weren't designed at all and are just the product of generations of open-sore bodging.

So, what to do? There's something to be said for the idea of using virtual machines to isolate each and every piece of third party garbage out there, but that's a real pain in the arse for people like me who create systems which involve multiple pieces of hardware/software using different CPUs, languages and so on and so forth...

[sigh] I guess I'm going to have to spend some time studying the more arcane details of make utilities and makefiles so I can debug this mess. It's a study I've been putting this off for quite some time. Far too many makefiles are childishly overcomplicated and seemingly designed by immature programmers who admire complex solutions to simple problems - baroque stupidity for the terminally anally retarded.

Christ, I sometimes wonder what it is about so many programmers that makes them incapable of grasping the fact that simple solutions are to be prefererred to complex ones, but such wondering's clearly a waste of time. The answer is, as it so often is, merely stupidity.

Grump, snarl.


After a lot of farting about I sort of cured the makefile problem... What I don't understand is what brought it on. The cure was to replace a couple of absolute paths with relative paths.

Like this:

BASE_DIR = c:\foo\bah\sdk
BASE_DIR = ..\..\foo\bah\sdk

Now, the thing I don't understand is what changed on the machine to stop the first version working. The paths haven't changed, the relative paths just refer to the same directories as the static paths did. The static path makefiles still work on other machines, they used to work on this one, FFS, and without anything changing now they just don't. There are times when I hate computers...

Morose-looking sheep

"Research by scientists at the Free University in Berlin has shown a link between depressed farmers and vets and the infectious Borna virus which makes cows, sheep and horses behave weirdly. One good method of cheering yourself up during a depressive bout can now be to search your memory for contact with morose-looking sheep and blame it on them".

Try as I might I can't remember close contact with any sheep, morose or otherwise... Though I have shouted "mint sauce!" at them in the distance on occasion, so I suppose it could be delayed payback.


Wednesday, September 30, 2009

More gloom...

Today follows the recent miserable trend with a problem being reported in something I wrote a couple of years ago, so once more I'm dragged off what I'm supposed to be working on and have to screw about setting up a different project, because my old tools don't run well under Vista (thanks Bill) I have to port various old sources into my new development tools, which means I have to update the new assembler to add support for a long-forgotten pseudo-op I added to work around an Atmel fiasco where a batch of their damned AVR processors failed to read constants from memory reliably when operated at anything more than room-temperature, then I had to chase a problem uncovered while I was adding that, then having sorted out the original problem I had to update the product website, add a new version of the product to various configuration tools and programmers...

It was well after 8pm before I left work and all of the day spent dealing with some problem I didn't even know existed yesterday.

And tomorrow, guess what - I've got to stop everything and start working on a different design which also needs to be done right now.

You can probably tell from the shitty writing style that I'm so tired I can't really think straight. Not having fun here...

Monday, September 28, 2009


I use this (slightly modified) Roger Dean wallpaper as a desktop background, well, a reduced brightness version of it at any rate. Yesterday James, my five year old son wandered in and noticed it...

"Dad! Can we go there when I grow up? I want to go there!"

"Sorry, James, it's just a picture. Someone drew it."

His face feel. "Awww" he said and started sniffling. It was as if I'd cancelled christmas... There's something heart-breaking about the disappointments suffered by children.

Later it struck me that (barring disasters) there's a good chance he will get to go there, or at least to places every bit as imaginary, through virtual reality.

Saturday, September 26, 2009


Gah, he's driving like a pillock so I have acted to ensure Button wins this year drivers championship.

How? I hear you ask. Well, 'twas easy - I placed a bet on Barichello to win it... At the moment one of the web betting sites have a promotional deal where your first bet is essentially free, and the odds against him were something like 6 to 1, so taking a free punt on him seemed like a good deal to me. I'd like Button to win but if Barichello beats him I win £130 or so, which would go some way to moderating my indifference - disappointment, I meant.

Now, I just need someone to nobble Red Bull...

Friday, September 25, 2009


Scribblenauts is a game for the Nintendo DS and it's the first game in a long time that has impressed me. If you've got an NDS I strongly suggest you download the rom, play it and then buy the bloody thing, as I will be doing - they deserve it. It's superb.

What? Describe it? Well, basically it's a platform style game where you have to solve problems but the amazing feature is that you can write the name of just about any object you can think of into the game and have it appear.

The guys at work failed to fox it, they suggested "table" and it understands tables. They suggest "brick" and it understands bricks. I tried "osmium" expecting nothing, but it understands osmium. It knows it's dense. "Elephant" doesn't phase it, nor does "Bazooka"...

I was showing it to Sarah, on a level where there is a tree that needs to be cut down. "What would you suggest?" I asked her. "Axe" was the obvious response, so I write "axe" and one appears. I give it to the waiting lumberjack and lo, the tree was cut down. No great surprises there I hear you think.

"Suggest some other objects" I say - "Sunglasses" she replies. The game duly produced sunglasses, which the player's character then wears

"Go on, think of something awkward" I suggest. There is a pause.

"Ball gown" says Sarah. Ha! She's got it - it can't possibly... But it does. I write ball gown, and a ball gown appears. We give it to the lumberjack, who is definately not impressed and who then grumps mightily... clearly not a fan of Monty Python.

I then play about a bit. I write "atom bomb" and blow the entire level up. I write "time machine" and (glurk!) one appears and whisks me off into the past, where there are dinosaurs.

Ha! I think, and write "meteor"... One duly appears, and wipes out the dinosaurs...

At this point Psi phones and I wax lyrical at him. "Think of something!"

"Kumquat!" He says. Guess what? It knows about kumquats.

Later on I found there's a level where you have to shift a cow out of the road without harming it. I'd already found that "UFO" is recognised and gives you a flying saucer you can fly about in, so naturally... yes... you can hover over the cow and have the flying saucer pull it up. I like the way their minds work...

Thursday, September 24, 2009


I've been finding it harder and harder to motivate myself of late and the reason, well, one reason anyway, is that I'm working on an upgrade to someone else's design and the original is such complete and utter garbage that every time I have to refer to it I want to throw the whole project in the bin and walk away.

It has a large software component - far larger than it needs to be - which appears to have been written by a beginner as their first ever software project. Unfortunately he wasn't a beginner and it wasn't his first project. Be that as it may, this piece of crap is, without doubt, the worst piece of programming I've seen in over thirty years. It is shockingly poor, a combination of just about every bad practice known to programming merged together in an orgy of sustained idiocy. None of it, and I mean none of it, shows any sign of competence whatsoever... Programmers will get an idea of what I mean when I say that the C source, all in one file, is about seven and a half thousand lines long, and that six and a half thousand lines of it is all in the main() routine. It's not that it needs to be, it's just that the author doesn't appear to grasp the idea of abstracting out common code into subroutines (whatever they're called these days)... Oh, he does know about them - he even has a couple. I'd tell you what they do, but then you'd have to kill yourselves in despair...

Oh, to hell with it. I'm depressed :(

Later: And as much as I hate it, I'm sure the bastard thing hates me even more. Wasted a lot of hours tonight trying (and failing) to figure out why I couldn't readback some ADC values, which it now appears is some sort of obscure board fault and not a problem in my FPGA design... That's the story of this project, I take one step forward and then several steps backwards with every session. Not one single fucking part of it has worked without a struggle. Every deadline has come and gone while I struggle with some obscure piece of stupidity and I'm heartily sick of it now.


Monday, September 21, 2009


I must put on record that I was being unfair to Herve today.

I accused him of being the flying dutchman of the laptop world, forever doomed to spend his time running Windows 95 - but he quickly corrected me - he actually runs Windows 98 SE and is proud of it...

You know, I'm not entirely sure that using Windows 98, even the second editon, accurately portrays the dynamic, thrusting and forward-thinking aspects of Design Design as a high-technology design company. Bet he still uses lead in his solder...

[Furtively crem returns to the assembler source for an FPGA processor he's tweaking. It is clearly a variation on a Z80...]


I've been watching the original Swedish "Wallander" TV series recently, having been a fan of the books for a while, and I was depressed to find out that the actress who played Linda Wallander (and played her well) killed herself a couple of years ago. Strange that I felt so bereft at the loss of someone I'd never have met or had any contact with whatsoever...

Tuesday, September 01, 2009

Halls of the Things in HD

There are some talented people in the world, and some of them are mad. One such is a guy called Andy Stewart who (completely of his own volition) has written a version of Halls of the Things in C# and released it on an unsuspecting world... It's so faithful to the orignal that I took it upon myself to appoint him the fourth evil lord in honour of this evil deed; I'm sure Neil and Martin would approve.

He has created a web-page for this allowing it to be downloaded :

A thing of beauty is a joy forever; but those bastards are dynamite...

[For some bizarre reason the comment option doesn't always appear on this posting. If you want to comment, click on the title and then it does. Weird...]

Friday, August 28, 2009

Just google it

Google makes life far too easy. A friend is getting reasonably good at some of the facebook games, so naturally I decide to wind them up by quietly posting slightly better scores. In the good olde days this would take skill - I'd have to figure out how to play the game... Hang on, [shudder], that's not what I meant - I meant I'd have to figure out how the game worked, where the score was stored, what form it was stored in, if there were any security checks and so on before hacking it to score whatever I wanted [phew]. This could involve several minutes of amusement...

In the really olde days you'd have to figure out their tape encoding schemes and fight off some cunning anti-piracy checks, but the days when programmers were that skilled are long gone; anti-piracy these days just means spelling your variables so badly that nobody else can figure out what the illiterate sod of a programmer meant, and it all happens by accident, not design.

But that's all moot, because now you don't hack anything, just google "bejewelled blitz cheat" and find the answer. Gah - where's the fun in that?

Pity I can't get it to score "xxx and a half", mind you. I suppose I could fake an accomplishment message... hmmm...

[later: A few days ago I found out that the wind-up worked... ]

Tuesday, August 04, 2009


I've just put the finishing touches to some demo code for an ARM-based operator interface panel we've designed, and it's sitting in front of me as I type with a few windows bouncing about at frame-rate in the foreground and a Mandelbrot being rendered in the background. Every now and then another view of the Mandelbrot drifts past in a stately fashion (frame-locked, of course) and if I touch the screen it pops up another window that follows the touch about under my finger, with a ghostly lattice of lines being drawn overlayed on the background to show the outlines of the various regions of the screen that are being rendered as the window position changes... It looks beautiful, as graphics that change at frame-rate usually do.

I'd include a picture, but a static photo really doesn't do it justice and I can't be bothered to work out how to include video at my time of life.

The hardware is a Cirrus ARM processor that has a fair number of peripherals on chip, including the LCD display driver. That single chip and a couple of SDRAMs, a FLASH and some glue is all that's involved, hardware-wise. The software - a complete graphical windows system and enough of an OS to run operator interface style applications - (in total about 12,000 lines of C) was all written from scratch by yours truly in about five weeks...

Since all of this is written in C and compiled with GCC (unusually for me there's not a line of assembler in there, aside from the device boot code) and it still runs fast enough on a 200MHz ARM to look bloody impressive I find myself wondering how the hell programmers manage to take hardware like this and make it appear as slow and crappy as all the ARM-based personal organisers out there look.

What the hell are they doing to slow them down?

It's amazing how bloody awful the demonstration code that Cirrus supply for their own device is, it makes the thing look like a CP/M machine struggling to write to a terminal.

This particular chip has blitter and line-drawing hardware that I haven't used, since I wanted the graphics code to be pretty generic. The demo code from Cirrus uses the blitter and still manages to run like a slug that has overdosed on valium. Gah...

The incompetence that's endemic in this industry depresses me, it really does :(

Monday, August 03, 2009

"Hey, are your feet wet too?"

Saw this image on t'web ( ) and thought that there just has to be an amusing caption in there somewhere... Buggered if I can think of one, though for some reason I can't get the idea that one of the penguins is singing "I'm peeing in the river" to the tune of Peter Gabriel's "I'm feeding the rhythm" out of my head...

(Photo is by LichtenHansen

Sunday, August 02, 2009

Mid wife crisis

There is an evil in the world and it targets middle aged men. I feel I owe it to others to warn of this insidious peril... They're small, they're sexy, they're hard to resist. You see one and you have to have it, the urge is overpowering, after all - what's the harm? Your wife/lover needn't find out. She won't suspect - with luck you'll get away with it. So you have one, but it's not enough. The thrill doesn't last and you come crashing down. Then you have to have another, and another, and soon you're spending all your money trying to maintain your addiction. You think you can control it, but it's an illusion, they're far too complicated.

I'm talking about radio controlled helicopters. Avoid them... One is never enough...

Thursday, July 30, 2009

Crotchless chastity belt

I was aimlessly Googling about today when I came across... No, let me rephrase that - when I encountered the phrase "crotchless chastity belt"...

Now is it me, or is someone seriously missing the point there? Or is someone getting the point when they shouldn't? Either way the phrase "crotchless chastity belt" has replaced "chocolate teapot" in my vocabulary...

It's over, or should that be IT is over?

I was working with a chip today, doesn't really matter what it was, when I realised that we are well and truly into the aftermath of the n'th industrial revolution. It's over, bar the shouting.

What shows this is the number of designs I now see that are fundamentally flawed, and flawed in ways that show the designers really don't know what they are doing. They get the basics wrong. I think the problem is that the leaders of the silicon revolution, or whatever fancy phrase you want to use to describe it, are now dying off and their hard-earned knowledge is being lost - the problem is that the good guys were all too busy doing it, whatever their particular "it" was, to write about how they did it, and they are now being replaced by people who have not learned from the ground up but rather were taught complicated subjects by those who weren't all that competent in the first place...

Up to the biotechnology people to take up the baton now, I guess.

Tuesday, July 28, 2009


Stress is when you

[That was as far as I got before I gave up]

Monday, July 20, 2009


Someone asked me recently what aspect of my time in the games industry I remember most fondly. My knee-jerk answer to this sort of question is "Halls" but for a change I thought about it and there really is only one thing (aside from Halls) that still amuses me every time I come across it, and it is this couple of sentences that Psi and I wrote for the story line of Dr Strangefruit:

Strangefruit removed a dog-eared, loose-leaf notebook from an inside pocket and placed it reluctantly on the desk, as if parting with an art treasure of great value. Pratt reached over and picked it up, holding it by one corner, as one might retrieve a piece of used toilet-paper that had missed the bowl. It was not in keeping with Pratt's idea of documentation and did not appear to merit being on such an executive desk. "Might I ask what this is about ?" asked Pratt, who didn't want to have to read it to find out.

Well, there you go. More fun contained in a single paragraph than some of my complete games. We don't write 'em like that any more...

Tuesday, July 07, 2009


So, today I'm working on a new industrial input card for our logger family. Lots of 0..20mA inputs and some switched outputs, usual sort of stuff.

For added interest it has two AVR processors. A Mega128 sitting down near ground doing most of the work (handling the comms, multplexing inputs, driving the ADC and so on) and a Mega8 sitting up near the supply positive rail watching the current drawn on the outputs and turning them off if the current exceeds preset limits. These two talk to each other through a level shifting serial link.

Doing it with two processors is both the cheapest and neatest solution to the problem, the alternative would be to have lots of level shifting hardware for the various outputs and current sensing lines, which would involve much more hardware and be less accurate with it.

But - there had to be a but - it does mean that I have to simultaneously develop software for two processors that are running at different grounds, and also one of them needs a software emulated serial port because the hardware ones are busy doing other comms jobs, hence there is some slightly awkward software and the programming requires isolated AVR programming/debugging interfaces. Well, I have those, so no problem.

Hah. The gods don't like cunning designs.

I blow the first Mega8 up when the bloody ground clip of a 'scope probe unclips itself and wanders across the PCB, managing to touch one of the AVR I/O pins. Normally this wouldn't be a problem, but it picks the AVR that has its ground up at +20V or so. It doesn't like having one of its pins dragged down to -20V (as it sees things) so bye-bye and off to silicon heaven it goes.

Much gallic muttering ensues as Herve replaces it.

A few hours later I'm busy working on the serial comms between the two processors when the 'scope probe slips out of my hand. It misses the board and I have a moment of relief until I realise it's heading for the exposed PCB of the isolated AVR programmer... It lands on it and there is a very slight, but clearly audible, click as the earthed shield of the probe makes contact with some component or other on the programmer.

Of course, it doesn't do this with the programmer that's sitting at ground, it picked the programmer that was connected to the positive rail and which was sitting with its ground at +20V or so, and that click signifies the end of that particular programmer. And, of course, the end of the bloody AVR it was connected to as well.

This happened at 10:30 pm, and at about 11:30 pm there was even more gallic muttering as Herve (dragged back into work) replaced the Mega8 again. This was accompanied by a fair bit of my own muttering as I repaired the AVR programmer.

About an hour and a half later the other AVR, which had been sitting down at ground and minding its own business, stopped talking to the debugger. After a bit of investigation it turned out that one of its I/O pins was damaged at some point in the preceeding fiasco and had quietly rotted.

Think I'll wait 'till tomorrow before I tell Herve he's got to replace the Mega128 now.

I'm starting to think the gods really don't like this design...

Tuesday, June 30, 2009

"It's alive!"

Finished the complete SoC (system on chip) design for this 'ere project, which I think is quite impressive in only a couple of weeks given how complicated it all turned out to be.

I can see me using verilog in preference to VHDL in future, I've found it fairly nice to use. There was always something a little counter-intuitive about VHDL as far as I was concerned...

And now onward and downward - the application software for it.

Saturday, June 27, 2009

Standards? What are they, exactly?

I've got to design an SPI port; they have a clock line, a data in and a data out line. Oh, and a chip select line. Four lines, in all. Should be easy enough to knock one up.

Of course it's too much to expect that I'll have been given any documentation for the device that it needs to interface with so I'd better make the port flexible. How many variations can there be?

Turns out there are chips out there with every possible variation of those signals. The chip select can be active high or active low. The clock line can be active high or active low and the input data can be latched on the rising edge, or the falling edge... The output data can change before the leading or after the trailing edge of the clock. The clock may or may not run when the chip select isn't active. The number of bits in each transaction? You think it's a constant? Foolish twisted boy...

Standards? Simplicity? Who needs 'em...

[weeks later]

I didn't make it clear that the SPI port I was grumping about there was a slave port, designing the master end is easier (I'd designed a master port as well, both of the designs are published in the R3220 data so decide for youself)... The slave port's timing is at the mercy of the master port and I didn't have any documentation for their master port... Still, it all worked so I must have made a reasonable job of things...

Thursday, June 25, 2009

Monday, June 15, 2009

R3220 microprocessor

I've been busy designing some FPGA hardware recently, and part of it uses a lovely little 32-bit microprocessor I designed a while back. I've been meaning to publish the source for it for some time, but since the contract for this design means I have to provide the source to the customer and even [shudder] document the thing to some extent I may as well take the opportunity to publish it now.

I've called it the R3220, those of a technical nature can assume this name derives from the fact it's a 32-bit RISC with about 20 instructions (while being completely oblivious of the "saturday night special" connection, I suspect).

The performance is fairly respectable, I'm using it to replace an existing NIOS II based design because the NIOS based design wasn't anywhere near fast enough.

As a guide the R3220 CPU uses between 600 and 1700 LE's in a Cyclone II array, so a complete system with one CPU with several peripherals only takes up ~12% of a Cyclone II EP2C20.

For fun I put four of these processors in the array (quad-core, anyone?) and it took up about 30% of the available logic. Since they can share memory without losing any performance it's actually not a bad idea to think in terms of more than one CPU for some applications, though I don't think I need to do it for this one.

(To facilitate the use of dual-port memory, which is common in gate arrays, the reset vector is configurable, so you can have two processors using the same memory block but not executing the same part of it. This incurs no extra delay so both will run at full speed.)

The verilog source, an example SOC design including various peripherals, a simple SDRAM controller and the r32 assembler can be found here - - note that this is the first verilog I've written so the style across the sources is inconsistent, I'm still finding my feet with the language. I'm more used to using VHDL, though I have to say I'm finding it a lot easier to write in verilog than VHDL, there's something about the 'feel' of verilog that I prefer.

This isn't the first processor I've designed and hidden away inside a gate array, but most of them have been too dedicated to a specific task to be worth discussing. This one is a nice general-purpose device to programme (in assembler, that is. If you're stuck using C then pick one of the MIPS implementations) and given how little time it took to develop (about ten days) I have to say I'm very pleased with it - it's a shame that so many embedded designers are stuck in the whole turgid morass of the linux/gcc/c bloatware mindset and can't play about like this, they really don't know how much fun they're missing...

For those who care it's a fairly classic load/store risc with a couple of unusual features. I designed it to have lots of registers (128) so I can dedicate them to interrupt handlers, and it has a nice touch that allows for 7 or 14-bit immediate values in the single-cycle instructions but also a full 32-bit immediate value can be used for all operations with only a single cycle penalty - it achieves this by taking one of the 7-bit immediate values, (-64), and using it as a flag to request that the next instruction word be used as a 32-bit immediate instead.

It has a reasonable addressing mode set with all the usual pre and post inc/dec indexed operations. The address is formed by taking a pointer register, which can be any of the 128 registers (there is no distinction between them) and optionally adding a 7-bit signed offset value. This address can be written back to the index register if required (with no extra delay) which allows auto inc/dec modes. The fact that the memory address used can be the register address or the register+offset means that there is full support for auto inc and dec with pre inc/dec and post inc/dec addresses. So any sort of stack you like, basically.

Every instruction is conditional with an option to update the flags. Sounds like an ARM, I suppose, though I first designed a CPU that did this many years before the ARM appeared so saying I got the idea from ARM might just earn you a thick ear [grin]. In fact, the bit field layout in this instruction set is remarkably similar to one of my designs from the 70's, though I was trying to outdo the PDP-11 back then so the that design had a particularly gothic and slow addressing mode set. [shudder]

The condition codes operate by having a 4-bit field that selects individual flags in the status register and then determining if the instruction should be executed using the state of the selected flag.

Doing that uses 14 of the 16 possible condition codes to handle 7 status flag bits. Of the two remaining codes one is ALWAYS which means always execute, of course, and the last is interesting - I've called it 'LOCK' and it always executes the instruction, the same as ALWAYS, but it also prevents the instruction from being interrupted. Once the processor has been put into LOCK mode it remains in LOCK mode until it executes an instruction with the ALWAYS condition code. This allows sections of code to be made 'atomic' without any overhead, and those sections can include conditional code.

Lock mode also forces locked RMW bus cycles where the bus architecture supports them, which makes it beautiful for implementing semaphores, etc. It's all much nicer than having to either flip interrupt enable/disable flags around critical bits of code or use peculiar instructions.

Another use of LOCK is in function entry/exit code, to make the stacking/unstacking of link registers etc safe. This can be handled transparently by the development tools.

I designed it to be agile, so interrupts have to be entered and exited quickly, and to that end it supports multiple interrupt levels with priority encoding on each of those for multiple interrupt sources at each level. The CPU outputs acknowledge signals when taking an interrupt vector so there are no delays while the handler has to manage the interrupt controller.

For speed it uses dedicated link registers instead of stacking the return address/state during interrupt cycles, and cleverly uses the particular link register invoked by the 'return' instruction to signal the end of that interrupt level to the interrupt controller. This means interrupt handlers are exactly as fast as calls and yet don't require any special entry/exit instructions.

Something else that's nice, though obvious, is that because you can load/store values directly to the status register and the condition codes use single bit testing peripherals can to organise their status flags so it's meaningful for the device handler software to load the peripheral's status register directly into the CPU status register and then use conditional instruction execution to determine how the flow should proceed. ie:

ld status,uart_status[peripherals]

call s0t RxByteHandler ; The s0t means execute this if status register bit 0 is true.
call s1t TxByteHandler ; The s1t means execute this if status register bit 1 is true.

The s0t, s1t (etc) are aliases for the conditions C, Z, etc.

This process is helped by the fact that the handers can preserve the status flags (they're saved in the link register and can be loaded back or not as required when returning).

The assembler is pretty powerful, as well as all the usual stuff you'd expect it handles allocating link registers automatically so the user doesn't have to know or care what they are. Thanks are due to a certain Ste for making me do this with his damned "It can't be that difficult" and "I can't see the problem" attitude.

In summary it's a nice processor, amazingly nice considering how little time it took to design. I absolutely love being in a position where I can design stuff like this and get paid for doing it...

Sunday, June 14, 2009

Interesting times

"May you live with interesting timings" I remarked, innocently enough.


"May you live with interesting timings... You know, like the olde curse - may you live in interesting times - but updated for poor sods like me stuck trying to get their bloody logic running fast enough in a sluggish array... "

"What old curse?"

"May you live in interesting times - it's Chinese or Celtic or summat. Quite clever really, it implies that interesting times are not ones you'd want to live in"


"Not much of a curse, is it?"


"I just think it's a bit mild for a curse... It wouldn't spring naturally to mind when I wanted to tell someone to fuck right off is what I'm saying... It lacks something. Live in interesting times? Pah..."

"You have no subtlety, if it was you no doubt it'd be something along the lines of 'may you have diarrhea and piles and live in the bathroom!' Oh, just fuck off!"

"See? Much more satisfying..."

"You know, thinking about it, you're right..."

Friday, April 17, 2009


In the background while I'm writing this Sky are showing a film called "Doomsday", it's a sort of post-apocalypse mad-max rip-off set in scotland. Loonies on motorbikes, thunderdome type scenes.

I can't really imagine why they didn't just call it "Mad Mac's" and have done with it.

'snot really funny

Red and yellow and pink and green, orange and purple of hue
I can sneeze a rainbow, sneeze a rainbow, sneeze a... OK, you get the idea.


Friday, April 10, 2009

Another interesting problem at work today.

We make electronically controlled beds for hospitals, they have achieved a certain notoriety hereabouts for occasionally exploding (I say occasionally because they rarely do it twice. That would indeed be excessive. Once is hardly worth mentioning, I feel).

A recent batch of 25 turned out to have four failures, when moved up and down they would not remain flat, basically the actuator at the foot end of the bed was not being controlled correctly - it was not moving as far as the actuator at the head end, only about 60% of the distance. The four were so consistent (all showing nearly the same degree of tilt) that we decided it pretty well had to be a software issue, hard as that was to explain.

But it wasn't - let me digress back a few years to the start of the project:

When the first bed hardware (frame and actuators) arrived for us to design the control electronics it came with a example mattress. These medical mattresses are not as you might expect - designed with disease control in mind they are waterproof and made of materials that can survive being steam cleaned. Basically they're dense and covered with some polymer that resembles rubber. And they are supplied, as most things are, in a plastic cover.

I must stress that in the eternal war of man against mattress these may be regarded as special forces, highly trained and motivated opponents. If you are asking yourself "what war?" then you are either damned lucky or have not yet made love in an uncooperative bed. But that's another saga.

So, picture the scene - we have a dirty-great mattress standing up on end against a wall with a polythene cover that needs to be removed. Along comes an unsuspecting Leon, I guess he winds up doing this because he just happened to be tall enough to reach the top of the mattress. As the only other person involved who is tall enough to have done this I must now give thanks to the gods of laziness who were smiling upon me on this occasion, because Leon walked over to the mattress as I was getting to my feet, grabbed the polythene bag near the top of the mattress and tugged it off with a manly flourish.

It was probably the last manly flourish or tugging off he managed for some time, because as he did this the friction between the polythene and the mattress built up a massive static charge which then discharged between the centre of the mattress and the part of Leon that happened to be closest to it as he lent backwards... The flash was visible in a brightly lit room, and the crack, while not exactly thunder, certainly wasn't a tiny little "click!" either... Leon clutched at his groin, managed a strangled squeak and collapsed. The mattress then celebrated its victory over humanity by slowly collapsing on top of him, which was followed by a general collapse of everyone who'd witnessed this event...

"You... Bastards..." Leon managed to say, after some considerable time had elapsed. "Get this... this... THING... off me"

Well, actually he probably said it a few times before we noticed, we were far too busy trying to breathe. Excessive laughter can be dangerous...

Anyway, the upshot of this is that removing the bags from these bloody mattresses is deadly. You don't do it fast. Given the chance you don't do it at all, you give the mattress in its bag to some poor unsuspecting suckers and let them find out for themselves, as we did.

"Do you know what happens if you remove the bag quickly?" I asked the supplier.
"Don't" they said.

"You don't know?"
"No - don't remove the bag quickly"


"Thanks. I'll tell Leon that."

Knowing this at the start I designed the electronics with more of an eye to static protection than is normal, and it was successful because we have built a fair number of these beds without further problems (though other equipment the beds take a dislike to has been destroyed by it, they don't always choose the kinetic energy weapon option).

So, what about these four failing beds? Well, yep - static damage. They'd been built, calibrated (to define the range of movement allowed, etc), and then the mattresses had been fitted, only this time they'd done four of them differently - someone had put the mattress on the bed before pulling the bag off and also done this in such a way (yet to be determined) that the discharge was through the same actuator of all four beds. This then overpowered and destroyed a filter component (ironically something that was only there to protect the rest of the electronics from this very static) and did so in almost the same way on all four beds. It went from looking like a ~10nF capacitance to resembling a ~25K resistance, with all four having more or less the same resistance when dead... This added resistance then loaded the actuator's position sense pot, destroying the linearity, so the bed control loop thought the beds were flat when they weren't.

This input protection laughs at human-body model static discharges, you understand. Eats them for breakfast, so gods alone know how much energy is involved with these combat mattresses.

I now suspect this is the real reason why nurses are forever warning people not to sit on the beds during hospital visits. They're trying to do us all a favour, they know the evil forces that lurk beneath that innocent looking exterior. Be afraid. Be very afraid...

Interesting, eh? What? Well I didn't say it was very interesting... Oh, well, suit yourselves...

PC audio hardware

The idea has occasionally wandered across my mind (leaving a messy trail) that the audio outputs of a modern PC should be capable of generating fairly high quality audio test signals, and further that if the PC audio inputs are up to scratch they could be used to digitise the results of stuffing these test signals through external equipment-under-test, so that with a bit of signal processing jiggery-pokery the PC should be capable of quickly providing THD readings, frequency response curves (for RIAA networks and the like) and so on and so forth, basically the sort of things I used to do (albeit crudely) in the seventies with test gear that cost monopoly money (to build, that is, couldn't just buy it. Or would have cost the earth if I'd had any money. I was making it up as I went along with bits and pieces I managed to beg, borrow or, um, liberate).

This is hardly original, I hear you think. "Well, it was when I first did it" I respond grumpily, "analysing audio output stages using boxcar sampling thirty years ago. All my own ideas, too. Were you even born? Huh?" And other suchlike grumping sounds that an olde dinosaur makes when challenged. Where was I? Oh, yes...

In fact, aside from electrical noise (hard to avoid inside a PC) I'd have thought that a modern audio DAC/ADC combination from even the cheap end of the PC market would comprehensively outperform the hardware I was using back then. Hah! Foolish crem...

So, tonight while I'm feeling a little under the weather (man flu setting off an opportunistic dental abscess) I decide to have a play with this idea rather than doing anything particularly demanding. A few minutes in Delphi generating an accurate sinewave (no - I'm not slowing down - you can generate an inaccurate sinewave in seconds, but doing it properly requires it to be generated with correct dithering (TPDF) applied to the fractional bits that would otherwise be truncated, and that needs a little thought) and lo - I'm sat here listening to a 1KHz sinewave. Sounds nice enough and everything's looking good for a quick and dirty THD test set until I look at the waveform on t'scope.

(A special hell is reserved for anyone even thinking about questioning the triangular dither. If you think it could be better using a shaped function then you need to brush up on dithering - shaped functions are only suitable for final output - you really don't want to skew the noise frequency distribution going in to the gear under test. Running error accumulation instead of dither? Just don't. Tie the dither generation into the ADC with synchronous correction in the readback? Good thinking but not with unknown systems inbetween... Besides, it's not always a sinewave and I'd hardly tell you what I'm intending to do with this eventually, would I? triangular it is then. Good...)

Now, I admit I was expecting a reasonably clean looking sinewave. Dumb, but I admit it. Oh, crem-the-eternal-pessimist was expecting noise, and hum, and mush of various kinds, but with a smooth sinewave hiding underneath it all none the less. A sinewave lurking behind the sort of noise and mush that will average out give enough signal processing, is the point. Hah! Idiot. I'm not feeling well, that's my excuse.

Here it is:

Magnified (x2.5 post sampling):

Well, it's a sinewave, I suppose, but at first sight it looks like a sinewave generated using a raw 8-bit DAC. Very reminiscent of the stepped waveforms I'd expect from a cheap embedded design that didn't care much, not a supposed high quality (hah) DAC system.

So, does this motherboard, which claimed good audio qualities, use short DACs? A moment of experimentation and it becomes clear - it's not a short DAC but the cheapskate designers of the motherboard haven't applied any analogue reconstruction filter to the output... Nada. Zip. Not even a token RC filter...

Same again, but at 10KHz:

I suppose we should be thankful that they've at least upsampled the digital data to 96KHz, so at least most of the shit they're throwing out is well outside the audio band. Mind you, I bet they did that so they can cut back on the DAC length/ADC input filters and then just didn't bother to fit either. Gah...

Oh, I know, I could always use off-board audio hardware but that's not the point; if this is the normal sort of performance the idea's useless. Gah.

My laptop does rather better, clean looking sinewaves at 1KHz and 10KHz, so filtered at least, though that might be just the headphone driver not keeping up with the edges ;)

[that lot was edited into some degree of coherence after some sleep]

Maybe I was being too picky anyway. Even for simple tests I'd probably use the stereo outputs to generate antiphase signals and then use a differential amplifier to get rid of as much common mode noise as possible, so it's no great bother to put a quick and dirty reconstruction filter in/in front of that stage... I wonder if it's worth doing the same sort of thing going back in; turn the signal into a differential pair for the stereo inputs and subtract them in software? Have to think about that, doubt it'd do that much good. Hmm...

Thursday, April 02, 2009


This is a packet of coffee, such as we use at work...

This is a packet of instant porridge.

And this is both of them carelessly placed on the same shelf at work.

'nuff said, I think...

Wednesday, March 11, 2009

More culls from cix

[23/01/2001 06:18:07]

Scientists warn of increasing global warming. . .

In a surprise move, the UK government doesn't blame the internet.

[13/10/2002 14:50:39]


Sell the idea? Sell one of my children? One of my babies? Sell? Like for money? [pause]

Coo, can you do that?

[crem furtively eyes the room. It's full of ideas he's been nurturing for ages. He reaches out and grabs one as it scampers past; it is the idea for writing "The Story Of No" a tale of one man's complete failure to find submissive women. It looks adoringly into its father's eyes as he coldly weighs up the chances of selling the little bugger. He lets it go and reaches for another, then another. . .]

He reaches a decision: "Muhaha! It's time they paid for themselves! Sell zem! Sell zem all!"

[17/10/2002 02:40:01]

> We like you in grumpy bastard mode

Just as well since it seems to be happening more and more often ;)

Gah. Grump. Too much work. I need to change my life-style. Well, actually, I was thinking of getting a life to start with, then work on points for style later on. . . Hah. I should be so lucky. Oh, well, back to work.

[crem makes sure everyone else in the house is asleep. He furtively closes and locks the door to his room, switches on the computers and lowers the lighting. He settles down in a chair with a box of tissues. Aghast we watch as he opens up the secret directory containing files that decent people are afraid to discuss. Pornography? No, much, much worse, agh! unspeakable horror! My god - it's full of compilers! He cleans his glasses with a tissue and starts typing. . .]


Speaking of the goings on at Des Des there was the time JCL found the hose from an old vacuum cleaner in the back yard and started wandering around using it like an elephant's trunk, holding one end of it between his teeth.

JCL: "Hey, look at this! Nuff, nuff, give us a bun!

(Don't ask me for details now but that was the punch line of a joke involving elephants)

Crem: "Ah, do you know why that tube is out here?"

JCL: "No... Should I?"

Crem: "Maybe... It was thrown through the toilet window after Graham had used it to unblock the toilet..."

JCL removes tube from mouth. JCL looks at brown stains on tube... JCL goes an interesting green colour...

The gunpowder plot...

[clip from cix]

Apropos of this, back in the early Design-Design days there used to be a long-running project to fire a felt-tip pen across the road, over a stream and into a nearby park. This project, you understand, would get invoked after our all-night drink and drugs sessions.

We never had all that much success with the felt-tip pen projectile project, though on one memorable occasion we stuffed rather too much shotgun-80 gunpowder into a steel tube cannon, aimed it out of Graham's bedroom window and managed to make the felt-tip pen disappear altogether, which was counted by some of us as a successful launch. It certainly crossed the road, bits of it might have landed in the park. I suspect the bulk of it is still in orbit.

Made a fantastic noise, anyway. A sort of cross between a bang and a long-drawn out "woosh-fooooommmmm!", probably because a lot of the gunpowder was thrown out of the cannon and ignited in the air. Just as bloody well, I expect; that project proved on more than one occasion that the gods protect the stoned.

I miss those days. Life is too serious now :(

Wednesday, January 21, 2009

Intelligent design


This made me think; these religious types with their god created the universe in 6 days and all that bollocks, where did their god get his development gear from? Who calibrated it?

In the beginning was the word? Like hell. In the beginning was the RS order, or in the beginning was the AVO meter.

And God looked on the face of the meter and said "Fuck me, this isn't even a model 8..."

Ruminations : Invasion of the Body Snatchers

[copy of a recent email]

Many years ago, back in the dark ages of 8-bit games machines, there was a game called Invasion of the Body Snatchers

Here are my ruminations on all the high score changes in Invasion. When I can work up the energy I'll do the same for the other games.

First there was a list of various friends, etc.

"andym" is changed to "A.Machin"
Andrew Machin was a friend, and also author of the LERM tape copier. Met him through my brother, who was a teacher at the same school as Andrew. I wandered in there one day and was stuffed in front of a class and had to give an impromptu lecture in games design... Petty much my idea of hell ;)

"chewrubba" is changed to "The Thing"
I was occasionally called chewrubba. Reference to a hairy character from Star Wars and the Spectrum keyboard, as if anyone couldn't work that out.

"motty" is changed to "N.Pottingshed".
Reference to Neil Mottershead. I doubt he ever bothered to play it to find this...

"krdt" is changed to "K.R.D.Terry".
Keith Terry is one of my oldest friends, who probably hated the game ;)

"alanw" is changed to "A.Walker"
One of my earliest friends.

"rozzer" is changed to "R.Walker"
Rosalind Walker... Sigh. Alan's beautiful sister, the first girl I kissed seriously. God, I wanted her... Hell, I still want her ;)

"johnl" is changed to "J.Lawrence"
And another very old friend, who I have completely lost touch with...

"meb" is changed to "Hello Maria !"
MEB were the initials of Maria, Martin Horsley's girlfriend. Neil and I lusted after her as well... (Martin, Neil and I had previously written Halls of the Things).

"maria" is changed to "Programmers in general eh ?"
Maria again - I once asked her at a party if she was interested in Martin or just programmers in general. She said programmers in general, but she was only trying to fend off my drunken advances. Hang on... Sounds like she was encouraging them... Blast! Where's my bloody time-machine? [later-earlier-later again] Nope, fending off it was...

"mash" is changed to "Smart arse"
Mash was Martin Horsley's nom-de-high-score table. I suspect this entry has something to do with his relationship with Maria, the lucky bastard. Might also be a reference to "Rommel's Revenge", which he was developing at the time. I can't be sure now...

"dave" is changed to "The cardboard box !"
This is (a) a reference to comic sketches in one of Jasper Carrot's series. Googling will tell you more.But it's really intended as (b) a way to take the piss out of a friend of Neil's who was called Dave, surprisingly enough. Any other Daves are collateral damage and I apologise profusely...

"jdg" is changed to "Hi Jim !"
JDG were the initials of James Garside, another old friend. Jim and I had been sharing a flat while we were at university. It was where most of Halls was written.

"c.c.c" is changed to "Chrisipoos"
C.C.C. -> Christopher Charles Clark, I think. Chris was one of the founders of Crystal Computing. I'm not sure if we were getting on well at this point, a bunch of us were about to stage a revolution and set up our own software house (Design Design).

Then there are a few HHGTTG-ish references.

"whatisthe" is changed to "42 of course !"
"marvin" is changed to "Life don't ...."
"zaphod" is changed to "It's easier with three arms I suppose"

Then there are a few general references.

"kickaha" is changed to "P.J.Finnegan"
Kickaha is the name used by the character "P.J.Finnegan" in Philip Jose Farmer's World of Tiers series of fantasy books. But it's a reference to a reference, because "P.J.Finnegan" has the initials "PJF", the same as "Philip Jose Farmer", so Kickaha is a reference to Farmer as he'd like to be, as indeed would I. That series were and still are some of my favourite books... Kickaha was also the default name we used for the initial high-score in Halls of the Things, and I suspect there are other references to The World of Tiers series in the other games.

(Kickaha is a native american name for a trickster, to put it very loosely. A role I'd relish if I were only cunning enough ).

"cheesecake" is changed to "Greens Original"
Neil was officially the catering manager - this is true, we had one for some arcane reason or other - glomming free food, I'd imagine, and in this role he often made chicken curries to a recipe that his mother had given him. They were excellent. Afterwards, well frankly after any possible excuse, we would have a Greens Original cheesecake. In fact, I'm tempted to go and have one now... There were other references to these scattered about.

"6502" is changed to "Crappy processor"
Need I say any more? I have designed better processors in an afternoon. So have random CAD system crashes...

"darthvader" is changed to "Boring tit !"
God knows. I can only surmise that someone I've forgotten used to enter "darth vader" in high scores...

"xyzzy" is changed to "Wrong game !"
xyzzy was a magic word in one of the first text adventure games (Colossal Cave).

"blach" is changed to "Bells ring etc ."
I suspect this is a reference to a bug in the spectrum game "The Hobbit", but I couldn't swear to it now. I'd try entering it into The Hobbit and see if bells ring, etc...

"sex" is changed to "Yes please !"
"fuck" is changed to "Like too !"
Ah, the depressed innocence of youth. If only we'd known then what we know now. But don't get me started on sex ;)

"cheese" is changed to "Cheese ?"
This is obscure. The first version of the high-score table code, which few people ever saw, didn't recognise all these text entries and change them individually, it just recognised the word "cheese" followed by a number and then it outputted different messages. This is a reference to that early phase of the code. And to our, well, frankly our obsession with cheese. Ok, ok - my obsession with cheese. Cheese and sex, sex and cheese, how could this combination be improved upon? Very easily.

"lavinia" is changed to "She's moved to 061-205-6603"
In Halls there's a reference buried in the code (for hackers to find) to "Lavernia's Massage Parlour" which gave the telephone number of the flat I was living in (sharing with JDG) at the time it was written. There was no actual lavinia, but there were a couple of sisters living upstairs that we used to dream about. One was called Sylvia and I'm sorry but I forget the name of the other. For some reason Sylvia lent me her copy of "More Joy of Sex", which was an evil thing to do to a desperate virgin; almost, but not quite as evil as having her bloody bedroom right over mine and having a bed that squeaked. Gah... Somehow their flat became known as "Lavinia's Massage Parlour"... Ah, but they were far too sophisticated for the likes of us, penniless students as we were...Sylvia's boyfriend had a BMW, for gawd's sake. What chance did we have? Sob...
On one memorable drunken evening I'd rigged up my development machine so it would record audio and play it back backwards. (This was advanced stuff for 1982, or at least it seemed like it then) and Martin, Neil, Jim and I sat in my room thinking of things to say and trying to learn how to say them backwards. Don't ask me why but Martin came up with "Sylvia has big nipples" and then spent a good half an hour learning how to say it so that when it was reversed it was perfectly legible. What with this and the coke-bottle fights (the flat was full of 1.5-litre plastic coke bottles) where everyone took turns to throw coke bottles at everyone else let it not be said that we didn't know how to have a good time...

Where was I? Ah. Yes. Sorry.

"speakertoanimals" is changed to "Chmee"
A reference to a character from Larry Niven's Ringworld series. Some more of my/our favourite books.

"spectrum" is changed to "Ghastly rubber thing"
We didn't much like the Spectrum, in fact I probably like it more now than I did then - twenty more years of the computing industry have significantly lowered my expectations.

"crystal" is changed to "Design Design Software"
And very soon after this was published, it did..

"hott" is changed to "Halls"
I didn't particularly like "hott" as a name for "halls", it has grown on me, I suppose.

"tony" is changed to "A blaze of trumpets & singing angels"
This is a reference to the first published review of "Halls" which was probably the most accurate and interesting review we ever received for any of our games. Tony is Tony Hawks - the reviewer, if I remember correctly. He used the phrase in the review...

There are more jokes in there and it would be interesting (for vanishingly small values of interesting) to discuss the initial entries in the high-score tables, but that excitement will have to wait for another time. As you might be able to tell from the lousy text I'm not feeling particularly alert today...