These are the wires used to make my intergalactic spaceship

Ihave been becoming increasingly disheartened in recent years by how little the new generation of programmers know about how computers work. Their understanding of the relationship between what they tap into a computer and what the microprocessor actually ends up doing with it has degraded to effectively zero. Only a minority of dedicated explorers ever understand anything more a sprinkling of the basics. I have moaned before about this when holding out hope for the Raspberry Pi computer but ultimately, it is an entire computer with a complete modern operating system. You will have had to compile many tens of thousands of lines of code before you are even beginning to create your clone of Space Invaders.

Prof. Farnsworth: Let me show you around. That's my lab table and this is my work-stool. And over there is my intergalactic spaceship! And here's where I keep assorted lengths of wire.

Fry: Whoa! A real live spaceship!

Prof. Farnsworth: I designed it myself. Let me show you some of the different lengths of wire I used.

From little wires, great things are built: simple things in quantity - just like your computer

This knowledge gap was highlighted by Cliff, an independent developer, when he wrote a post recently about the advantages that he has had that allowed him to get to a position where he can make a good living doing something he absolutely loves. Other than the obvious “work hard” type observations he raised the point that he had grown up with a Sinclair ZX81. A commenter asked why this was an advantage and I offered a brief, badly structured reply along the lines of it providing a framework understanding of the lowest level components of hardware and software; an understanding that provides a firm set of foundations upon which to build incredible applications. I also grew up with such machines: I cut my teeth on an Oric 1. Back in those days, you plugged your computer into a telly, switched it on and were presented with a prompt. No windows, no icons, no mice. And this wasn’t a shell type prompt, this was an interactive interface to the computer’s programming language, usually BASIC.

With no cover-disks or Internet, most teenagers of the 80s ended up typing in program listings from magazines. By hand1. After a while, you couldn’t help but pick up the basics of BASIC and in no time at all you would be annoying Dixons sales staff by typing in programs to display the latest swear word you’d learnt all over the shop’s screens. Many of us went further: we learnt assembly language2. This is as close to the microprocessor’s actual binary instructions as you can possibly get: there was a one to one mapping between each instruction you typed and the binary code that was executed on the CPU. Even the simplest programs taught the programmer about memory, fetch-execute cycles and the inner details of how a CPU performed its magic… and then we learnt that it was not magic. It was incredibly simple, there was just a lot of it. Even more amazingly, that knowledge scaled. It scaled from 8 bit processors to 16 bit processors through 32 bit processors to today’s multi billion transistor state-of-the-art eight core mega processors. Even today, the biggest, baddest CPU Intel can deliver is still made from the same basic building blocks as the first CPU I ever programmed directly… there’s just a hell of a lot more of it.

This knowledge is an incredible tool for programmers to have. Understanding how a CPU does its work makes it easier to write faster, better code. It lets you achieve in 100 instructions what someone else may require a thousand to do. For low-level languages such as C, C++ and Objective C, old school assembly language programmers can still visualise what happens to their code. They still tend to use “old tricks” even though modern optimisers will almost certainly handle them automatically. Either way, when it comes to super-fast code, the advantage that they have is vast: they architect and create better structured and cooler code. One area where this advantage really renders your walls and skins your oranges is games.

The games that excite me for the future are worlds so real that I cannot tell the difference any more. I want a holodeck. I want the Matrix in my living room. I want to see what it feels like to stand on the top of the tallest mountain, what it feels like to fall to earth from space, what it is like to bounce around the moon. In the absence of the truckloads of cash that would allow me to actually do these things, virtual reality entertainment environments are probably as close as I am going to get with the added advantage of no risk of actual death. Creating software that does this kind of thing is going to take some serious innovations: the problem is waaaay to vast and complex to be solved from the top-down, one will have to create the code out of which the world can emerge. Biology, I am convinced, will be a vital source of inspiration. Innovating the solutions that will lead to this is firmly greased by an understanding of how the machine works. I humbly suggest that treating the computer as a machine for modelling machines is a valuable step towards creating the next generation of virtual worlds: the computer is simply a container of machines that can be combined to produce more machines – an Nth order computational device, if you like.

Dreams of the future aside, your favourite super-cool modern 3D PC, 360 or PS3 game is not written in Java. It is not written in Flash. It is not written in C#. It is written in C++ and it is created by a team of programmers who understand how disastrous a cache miss is to the performance of software. The best of them know how to get each core of a parallel system burning at 100% all of the time. They have developed data structures that are super compact so that the maximum amount of data can be cached in RAM and the maximum amount of that fits in the CPU’s internal caches. They have innovated new ways of rapidly extracting critical data and new ways of preprocessing and storing that data to improve runtime performance. In short, they are using their knowledge of how computers work to write software that roars. This is non-trivial. Any computer games company will tell you how hard it is to find programmers who know this stuff. Unfortunately, modern computers and the complexity and size of their APIs are simply not helping to bring up a new generation of true software innovators: you can’t simply start without jumping through a daunting number of hoops — some of which are flaming.

To be fair, it is possibly not helped by whoppingly unrealistic expectations. When I was a teenager my expectations of what I could achieve on a computer were, well, pretty low – and I barely met those. I blame girls with their boobs and things along with the positively ungenerous twenty odd thousand bytes coupled with an eight-bit processor. This kind of stuff generally limits one to the simple stuff so it was pretty straightforward to keep your feet at least within sight of the ground. Now, many set off on projects of huge proportions such as MMOGs, for example, without the tiniest clue of how they are going to be executed. The inevitable crash and burn is hardly going to be a morale boost. Now, I’m not one whose conscience is entirely clear when it comes to the mountains from molehills issue, but I figured that it might be fun to do a series of posts over a month or six on how to write an old style adventure game: we’d start from nothing and then knock out an 80s style adventure game in C++. A sort of “hello, welcome to programming” type course. It might be worth a shot, yes?


1 Nothing is more heartbreaking than spending four hours typing in a program only to lean on the power cord. Regular saves to… tape… were required.
2 … and then used that knowledge to patch the restart vectors so that those annoying programs were really, really hard to get rid of without a power-cycle. The BBC Micro was a cracker for this!

Posted in Software development | Tagged , , , , | 8 Comments

From little acorns

Juuso, one of the chaps whose blog I really enjoy reading, says that he likes to describe emergent behaviour as “1 + 1 = 3”. I would describe that as a syntax error. Emergent behaviour isn’t about taking an obviously simple problem and then producing the wrong answer, it’s about allowing for many answers to potentially exist where the problem isn’t so clear cut.

  • Emergence is getting behaviour or results that you did not specifically design or code for – the colossal spectrum of grey area between black and white that is the difference between obviously artificial and possibly real
  • Emergence is when you build a tree and then grow an entire jungle from it – something that is made significantly more amazing if your trees can evolve so that the jungle contained trees and plants you couldn’t have possibly considered or imagined

These things are emergence. Something you didn’t specify emerging out of things that you did. I would respectfully suggest one of three alternative phrases to describe it: 1) something from nothing 2) functionality for free or 3) complexity for free.

Emergence: From little acorns...

From little acorns, we shall grow an entire universe. With snakes. LOTS of snakes. Nature slouched around taking billions of years to do this: we'll crack through it in a fraction of that time. Suck on that, mother nature!

In the early naughties, I created a working prototype of a system that grew an entire forest environment from just a collection of artificial seeds. This is the tight integration of metaphors from biology and nature into emergent systems: using natural selection, evolution and the pure dogged persistence of mother nature to create worlds that looked, felt and behaved real because they pretty much were real. It was great fun — seeding a world before leaving the office (late1, as usual) and then coming in the following morning to see what had grown. Had the opportunity existed to continue that work, I very much expected to be constructing entire planets by now complete with vegetation, animals, insects and their own unique climates and geology.

As well as growing worlds from nothing there is the deliberate misuse of an environment and its content by users to create new forms of entertainment; users’ emergent behaviour in a complex environment. A friend and I, for example, spent many happy evenings playing “land-and-base-jump” in Grand Theft Auto 3. The rules were simple: steal a plane, preferably a big one, land it in the most ridiculous place possible and then base jump from there. Additional points were awarded for 1) leaping out of the plane as it skidded across the top of a sky-scraper and not falling off yourself, 2) opening the parachute mere seconds from the ground 3) achieving the impossible and 4) forgetting to add the parachute to your inventory before leaping off a building. In the end, between that and “crime sprees” (commit as many crimes as possible and then survive for as long as possible) I don’t think we played the actual missions at all… voila, emergent gameplay.

Emergent gameplay is cool: you get more out of something than it was designed to give. I’m sure you’ve all got your own rules for Risk and Monopoly and that you’ve all invented card games, drinking games and bent the specifications of goodness knows what in order to wring each and every drop of entertainment from it. However, this isn’t, if he’ll permit me to continue to stuff words into his mouth, what Juuso was talking about and it’s also not where the real fun in the future lies.

Spending tens of millions producing the worlds for games is not sustainable so increasingly large numbers of developers are dipping their toes in the modelling and emergence waters to see just how chilly they are. Progress is being made through 1) procedurally generated content, 2) packaging behaviours with the objects they apply to (autonomous agents) and 3) introducing increasingly large quantities of modelled components and environmental properties. We’re all benefitting from the introduction of physics and dynamics models in computer games. Cars, planes, bikes and the individual bits and pieces that make up an environment are becoming increasingly more real. As models, they behave like their real-world counterparts so long as one’s level of abstraction isn’t too ridiculous. It is one additional step to get to the point where the worlds containing these objects is an emergent property of… well, virtually nothing.

Don’t underestimate the ability of emergent systems to create. They’re also the ultimate compression system: Elite, in the early 80s, had a gaming environment that consisted of hundreds of thousands of stars and planets across many galaxies. From one number. In less than 20,000 bytes of memory. To put that in perspective: the draft of this document on my hard-drive consists of 184,000 bytes. David Braben and Ian Bell used emergence to fit an entire game and a virtual world of almost unbelievable size in an amount of memory about a tenth of the size of the file storing the words for this blog post. Neat, eh? It turns out that Fibonacci sequences and smart minds create clever systems.

One day soon we will be growing virtual countries complete with inhabitants.

Entire worlds.

Complete galaxies.

We won’t be in control of what’s in them or how they evolve but that’s cool. That’s the whole point: emergence behaves best when it is allowed to grow from little acorns through trees, forests, worlds into an entire virtual universe.

It won’t take seven days, it will take seven milliseconds and we will have time to spare.


1 Top development tip: don’t work seven days a week month in, month out. Nobody will ever thank you for it — trust me on this one.

Posted in Cool stuff, Software development | Tagged , , , , , , | 2 Comments

Fire sale: everything must go!

“Ignorance is the soil in which belief in miracles grows.”
— Robert G. Ingersoll

Politics is a very difficult subject to have an opinion on: if we all agreed, we would all live in peace and harmony. Regrettably, it has been turned into something about as exciting, interesting and attractive as being chopped continuously in the bollocks with a rusty axe. It is this general “good grief, not more of this crap” attitude that our glorious leaders have instilled upon us that creates the precise warm cozy environment for terrible, terrible things to happen. It is generally foolish, especially without alcohol, to talk about politics in detail – one risks alienating one’s friends, damaging one’s career or just looking like a complete nincompoop. I suspect I will manage the latter with ease; the others? Meh, I am too old to cause too much damage to either – any friends left at this point won’t be surprised and no one hires me for my political views, that’s for sure.

Python Churchsnake

Python Churchsnake gives a rousing speech to the Houses of Snaklement

I have had some thoroughly interesting conversations recently about politics with people who’s opinion I greatly value. What has been staggeringly interesting is that regardless of where we stand or where we start, we always end up at the same conclusion: education has the power to lift us into a better future. Then, we realise that the benefits of such investment would not be obvious for perhaps a decade and as a result are about as attractive to politicians as admitting three affairs before breakfast and then claiming the condoms, vibrators and anal beads on expenses. The price we pay for a regularly elected democracy would appear to be a dangerous tendency towards short-termism.

I don’t know what is happening in your country right now, but in the UK, we are having a fire sale in the name of cost cutting and avoiding bankruptcy. Of course, the actual savings from these cuts are microscopic in comparison to the overall problem and are thus a drop in the ocean. Even the most generous spin cannot claim that this is a case of pow, zoom, problems solved! When you are losing a grand a month, saving two cents is not worth the effort. Spin it right, get the press on side and wax lyrical long enough about the need for us to all make huge sacrifices for petty amounts and people actually start believing it. In the meanwhile, everything must go! Remember this and remember it well: destruction is far, far easier than construction. In ten or twenty years time, people will look back on the wholesale disassembly of the network of support and services for the people of this country and will say “well, that was a shit idea.” It will, beyond a shadow of a doubt, cost ten times as much to put it all back than it cost to take it apart.

Click here to read more of this poorly researched article!

Posted in Miscellaneous rubbish, Rants | Tagged , , , , , , | 2 Comments

Why stop at the pub? Let’s eat on the MOON!

Making mountains from snail-hills

Yey for Gary the sea-snail! Ssslllllllshhshshshshsh...

Good food is not measured by quantity. Having a stack of beans, coleslaw and “meat” left over at the end of a meal does not mean that it was a good one. At the other end of the spectrum some restaurants believe that a sprig of parsley arranged on three molecules of potato is worth fifty quid so long as it is drizzled in a “jus de angel’s tears”. Good food, like the three bears’ porridge, is an exercise in being jussssst right. Not too much that you leave it and not too little that you are still a skeleton covered in skin when you have finished. Sometimes, less is more and other times it is simply less. Like climbing a mountain in a clown costume, getting this balance bang-on is really hard.

Software is no different. It is easy to get carried away. One moment you have a specification that can be written on a single sheet of toilet paper and the next you are sitting on a thirty page document and a room wallpapered in post-it notes. Without proper project management, keeping one’s feet nailed to the floor rather than hopping aimlessly towards la-la-land is a challenge that often requires outside input. My iPhone game is a bit like this: I figured that it would need thirty levels, three themes, three turtle doves and a partridge in a pear tree in order to be released. Indeed, I had turned my molehill into such an extraordinarily large range of mountains that clouds formed above them. I then managed to convince myself that a larger, MUCH more complex project (Space Snakes!) could be finished faster. This is a little like saying that I would arrive a lot quicker if I walked to London rather than taking the train (oddly, this morning, walking might have actually been faster1, but that is another story). A couple of recent updates on the subject offer some insight into the confusion and general lack of progress so far and will ensure that you’re appraised on my various excuses.

A few weeks ago, there I was, with at least one bottle of wine circulating around me explaining to a good friend of mine why I had abandoned my first idea for Space Snakes. As the cork popped on a castle-nine-popes, he said “well, show me how far you got.” So, after several months of been too busy and disheartened to touch it, I fired up the simulator (my provisioning profile had expired on the actual phone) and prepared to make a fool of myself (this doesn’t usually require much preparation, to be fair).

Well, colour me surprised and shake my rattlesnakes: it is actually a game. Playable. Ok, so it has only one level, but we sat there for a good quarter of an hour playing it and I suddenly realised that it was actually quite a lot of fun.

My friend said to me, “you know, you have got this all wrong. You don’t need thirty levels, you need ten. You don’t need three themes, you need one. It has enormous playability and replayability, so why not just do that and release it? If it works and people enjoy it then you can justify adding new theme and level packs. Make those free and you’ll reward those that have already bought in and make the product a more attractive proposition for those that have not. If it doesn’t work and you sell one copy, well, move on.”

He is right.

So I have engaged an artist to do my one theme and I will tart up my level editor with my new-found knowledge of Mac Cocoa programming and all being well, I can have my first iPhone game finished by, oh, let’s say Christmas. BUT WHICH YEAR?


1 “First Capital Connect: transforming trains into busses!”

Posted in My iPhone game | Tagged , , , , , | 1 Comment

Imbuing a certain niceness on one’s formatting

Oh my, std::locale(“”) is gorgeous when slapped on a std::stringstream. So long as you’re not writing super-duper-performance-sensitive code, you can do wonderful things like this:

#include <string>
#include <sstream>
#include <locale>
#include <iostream>
#include <iomanip>

int main()
{
	std::stringstream ss;
	ss.imbue(std::locale(""));
	ss << std::setiosflags(std::ios::fixed) << std::setprecision(2) << 12345678.123;
	std::cout << ss.str();
	return (0);
}

Compile and run the above little C++ program with the latest GCC under Linux or with Microsoft’s Visual Studio and the output you’ll get from this firm, rounded and nicely tanned piece of code is this:

12,345,678.12

Isn’t that splendiferous? Well, I think it is. All the hard work of inserting commas for thousand separators has been taken care of because we said “hey, you, yes, you, stringstream. I’m wanting you to format us up using the user’s locale setting!”. Then, if you’re in France then you’ll get dots, onions and croissants rather than commas. Et voila, instant human readable numbers.

So, basically, the crowd goes wild. Or at least they did under Windows using Microsoft’s C++ compiler. Under GCC on OSX (gcc version 4.2.1 (Apple Inc. build 5666)), though, something really rather odd happens. It doesn’t work. Not at all. Not even the smallest sausage. It turns out that the only locale that this GCC seems to support is “C” – which means “programmer bollocks” rather than “human friendly”. Thus, no matter how you tweak, twiddle and fondle the above code, it would output:

Irregular Pigeon

Irregular Pigeon is here to point out just how bloody irregular this is.

12345678.12

… if you are lucky, like, inside a debugger, for example. You’re much more likely to see this:

cobrascobras: ~/Desktop $./a.out
terminate called after throwing an instance of 'std::runtime_error'
what(): locale::facet::_S_create_c_locale name not valid
Abort trap

Now, as we know, when something that should work under the C++ standard doesn’t, a kitten gets punched in the face. Having “invested” an hour or so in research on this, I’ve found a lot of angry OSX programmers and many confused GCC users (they were discussing this in 2003). I’ve decided that life is to short to figure out why1 the only locale supported by the standard library that comes with Apple’s GCC is “C” so I knocked out a simple function that does this for the case I need, long unsigned integers:

std::string GetCommaSeparatedUINT64String(uint64_t number)
{
	static const unsigned long UINT64_CONV_BUFFER_SIZE = 32;
	static char thousandsSep = ',';
	static bool bInitialised = false;
	//
	// If this is the first time in, grab default locale's
	// thousands separator if we can:
	if (false == bInitialised)
	{
		setlocale(LC_ALL, ""); // <- Do not forget this bit
		struct lconv* lc = localeconv();
		if (lc && lc->thousands_sep && *lc->thousands_sep)
		{
			thousandsSep = *lc->thousands_sep;
		}	// if (separator specified)
		bInitialised = true;
	}	// if (first use)
	//
	// Declare a working buffer, set cursor to end and zero-terminate:
	char workBuffer[UINT64_CONV_BUFFER_SIZE];
	char* cursor = &workBuffer[UINT64_CONV_BUFFER_SIZE - 1];
	*cursor = '\0';
	unsigned int index = 0;
	do
	{
		// If we've done three and we're not at the start,
		// insert thousands separator:
		if ((0 == (index % 3)) && (index))
		{
			--cursor;
			*cursor = thousandsSep;
		}
		//
		// Insert this digit and keep on going:
		--cursor;
		*cursor = '0' + (number % 10);
		number /= 10;
		++index;
	} while (number);
	//
	// Return an STL string built from this result:
	return (std::string(cursor));
}

This code wins no awards, but, frankly, after spending so much time figuring out why something that should work did not work, this is the best that “mildly annoyed” programming can achieve. It won’t behave with an Indian locale properly, for example, because they use some spooky weird thousands separator that, well, isn’t. It also won’t do floating point numbers, negative numbers, imaginary numbers or count giraffes but if Europe is “your thing” then it at least compiles and runs.

Now I’ll sit here quietly until someone I know points me at some compiler option I missed along the lines of "--do_locale_right_please". I’ll dust off my screaming hat just in case.

Honestly, eh?


1 Well, actually, I do know why. Here’s the lib-c++ source code for creating locales:

void locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, __c_locale) 
{ 
	// Currently, the generic model only supports the "C" locale. 
	// See http://gcc.gnu.org/ml/libstdc++/2003-02/msg00345.html
	__cloc = NULL; 
	if (strcmp(__s, "C")) 
		__throw_runtime_error(__N("locale::facet::_S_create_c_locale name not valid")); 
}


… basically, it’s “scene missing” on the code. Insert tears to continue…

Posted in Rants, Software development | Tagged , , , , , , | Comments Off on Imbuing a certain niceness on one’s formatting

I’ll moon you if you’re not careful

To be honest, I probably won’t, unless it is by accident: I appear to have lost a small amount of weight recently and my trousers keep falling down. Between that and a belt that is held on by one wafer thin thread, there’s a reasonable chance that I will show off my three piece suite to commuters at least once this week so I’d better be sure to check my underwear for holes each morning. Mrs Cobras has reminded me on several occasions that I need to a) go into the loft and fetch my old “slim Cobra” clothing and b) buy a new belt. I have ignored both these suggestions and prefer to live dangerously.

EmOhOhEn Spells Snake!

Yes, yes, let's all ignore the snake's footprints TOGETHER

On the subject of moons, this article of mine gets more spam than any other article on this blog. And not by a small margin, either, by a vast margin. In fact, before I started adding all the IP addresses to the block list, I was pressing the spam button on 30 or 40 a day. All to the same post. What is it about moons? There does not appear to be anything odd about that post that makes it more attractive to spammers, but clearly, the artificial “intelligence” that drives the spambots are attracted to it like The Cobras to red wine. You know what they say, Em-Oh-Oh-En, that spells artificial intelligence1!

Fortunately for me, I moderate everything by hand and I’m one of those human being things so I can tell that this:

I like the valuable dirt you prepare for in your articles. I force bookmark your weblog and control again here frequently. I am unequivocally certain I will learn varied up to date shit right here! Righteousness fluke in place of the next!”

… is about as likely to be a real person as the delicious home-made biscuits I’m enjoying with coffee. Although, let’s be fair, it deserves at least one gold star for “varied up-to-date-shit” and “righteousness fluke”.

The worst thing is that this is a good one and yet it is still utterly appalling. The spammers only have to get past the automated filters of most blogs and judging by what I see on the Internet those filters are hardly reinforced concrete doors, they’re more like bead curtains. Some automated filters are not bad, but they work off fuzzy recognition based on a database of examples and thus tend to play catch-up rather than being pro-active: when the spammers find some genius new sentence structure that evades them, they’re cooking for a few days. It’s an arms race with no sign of finish in sight. Manual filtering, of course, catches ‘em all, because automated software is utterly crap at context. Furthermore the english is, at best, questionable so it’s dead easy for a real person to recognise them. Even bad english spoken by real humans is recognisable as human by humans.

Whilst these things may be rubbish at context and believability now, they won’t always be. There are some substantial developments taking place in the field of AI right now and it is inevitable that one day, machine intelligence will equal or surpass our own. Then spamming will become really interesting: most of the content of the Internet will become artificial agents all trying to have relevant, sensible conversations with each other in the vague hope that they’ll get a chance to slap their link somewhere where it’ll get clicked on. I am sure it’ll make for cracking content, but what will be real? What won’t be? What is real at that point?

Meh, it’s Monday. This is all too complicated. I drew a moon. With a snake on it. It’s great.

1 One gold star if you can get the reference 🙂

Posted in Miscellaneous rubbish | Tagged , , , , | 6 Comments

I am going to go to space

N-Prize Snakes Away!

Go little snake! Go!

But probably not in person, if I am perfectly honest. However, starting my own space program and launching the odd satellite or two, well, that is a different matter. A while back, I learnt about the N-Prize. This is a rather cool version of the X-Prize. Launch a satellite into orbit that with a mass between 9 and 19 grams, complete at least 9 orbits and perform the entire launch for £999.99. If I do it, I could win £9999.99. In fact, if I do it again re-using parts, I could win another £9999.99! It is pretty obvious that the prize won’t cover the development costs: I reckon it would cost me a good 75 grand1 to get to launch status, after which, I reckon my fiendishly clever scheme could launch satellites for less than a grand a pop. Nice! So I had a rummage around in my wallet to see if I could stretch to that: I found 20 euros, 8 yuan, a fiver, two Paris metro tickets, several receipts for shopping trips, some post it notes, a USB key, a sweet wrapper and a cheque for 20 pounds that I failed to bank from 2009 or so. Let’s just add that up… tappity tappity tappity on the old calculator, carry the one, divide by π, ah, yes, ok, so I am about 75 grand under.

But still, when it comes to launching something into orbit, I reckon 75 smackers represents good value for money. Granted, success would result in launching things that weighed 20 grams or so (although my calculations show I could launch up to 200 grams, so that’s a medium size glass of wine without the glass, or, better still, I’ll drink the wine and send the glass). I won’t be setting up a GPS system or building a space station that way, but one can do an amazing amount with 200 grams. An HD camera, for example, mini gyroscope stabilisation, small solar panel, mini battery and transmitter. Now, anyone, anywhere can access a web site and see the earth live. Watch moon rises. See the stars like never before.

Extend the launch system a small amount and that payload goes up to a kilogram. Once you can launch a kilogram for a grand or two, you can go to the moon. You can go to Venus. You can go to Mars (although to be fair, that’ll be a long, long haul as you won’t be able to go direct). You can fly into the sun. Hundreds of millions of kilometres of space – yours for the viewing, exploration and touching. It is just possible that you could actually land on the moon, but ironically, despite being further way, Venus’s atmosphere makes a death plunge far more attractive and there might be some substantial science to be gained from the exercise as a bonus.

Do it small, do it compact, do it cheap and do it in quantity. If I were landing on Mars, I would drop a metric stack-load of low-cost mini-landers. The very thought of spending enough money to eat diamonds for the rest of my life and GET ONE SHOT at it is alien to me. I would figure out a small wheeled vehicle, mass produce the buggers and get a swarm of them onto the surface doing their thing. We know enough about Mars now to know that little things with nice comforting airbags are highly likely to make it in one piece. Add rockets, wires to lower things, floating platforms, landing pads and a heap more complex stuff and you create a whole host of things that can go wrong and raise the risk substantially. Given that so much of the cost is in the launch, why send just one?

I am sure there is a good reason for all the decisions that are made, and making space about as interesting as watching grass grow probably doesn’t help. I wrote an article on European Space Agency’s recent PR successes that would have fitted three times in one tweet. Still, none of that takes away anything from my awesome N-Prize plan. Space Snakes in Space! Rattle-rattle-rattle!

I’ll just leave the donation tin right here.

1Caution: estimate may go up as well as up a lot. This estimate provided by “wild stabs in the dark” estimation services.

Posted in Space | Tagged , , , | 2 Comments

Durdum… Durdum… Durdum…

Sharks have got a lot of bad press recently so you can imagine our TERROR the other day when we saw this vicious beast leap from the calm ocean and lumber up the beach towards us shuffling on his fearsome belly.

Shark Attack

NoooOOOOooooOOoOOOOoooOOOOOOOOOOO!


He went for the Baby Cobra, but she fought back. She grabbed him, waved him around like a flag and then started chewing on his fins… which is no bad thing because it distracted her from sucking on pebbles and miscellaneous suspicious beach detritus. In the meanwhile, whilst Mr Shark considered his deep regret for such an ill-conceived attack and we finished our delicious beach-BBQ which included some rather delicious home-made burgers. I’d love to take credit for them, but that goes to another member of the Cobra family. Honestly, I really can’t believe the crap I used to eat. Why? WHY?

Still, no complaints – this could well have been the only day of summer that we’ve had this year after what was a promising start and it would have been criminal not to take full advantage of it.

Posted in Miscellaneous rubbish | Tagged , , | 3 Comments

Bad news trading

For nearly a decade I owned owned some Premium Bonds. They’re a savings type thing but instead of receiving interest, you get a chance to win a large, juicy chunk of tax free money every month. In theory, when times are good, they can outperform traditional savings on average. You get one chance per squid you have “invested” up to a limit of thirty thousand squids. I have nowhere near that number but, even so, by the laws of probability I should be making enough for a bottle or three of wine a year with the secondary luxury of having a little bit stashed away that I often forget about. It turns out I had completely forgotten about them because I have never, ever won a single dime. Not a sausage. Not even a smell of sausage. Indeed, I actually phoned them to check a couple of years back because it seemed outrageous that after shaking the dice that many times I had not come up with a single six.

Worf's sage financial advice observes the low points in the market


So I thought, bugger this, I can do better in shares. After all, it’s a crap time in the stock market so the only way is up! Obviously, I would not recommend taking investment advice from a bunch of cobras like me, but I used some simple rules:

  • No namby pamby ‘Business model? Yeah, web five point oh’ type gubbins. The Market seems to be nicely set up for another .com bubble pop and I didn’t want to take part in that
  • Absolutely no bricks and mortar retail operations. Traditional retail is on the way out and it is too challenging for me to predict those that will adapt successfully and those that will not
  • Companies that have been around for a while and show a general tendency for growth over a number of decades and trade in things that are unlikely to vanish overnight
  • Pick on companies that have actual assets that are actually worth something and are currently undervalued for whatever reason

I call this approach “Bad News Trading” and the worse the news, the better. Unless I accidentally pick an Enron, some shares are trading seriously below their real value right now and have done on several occasions since greed-motivated economic melt-down a few years back (oh, and this is worth a read, by the way).

So, fancying some greed of my own, I started looking at some shares. I read books, newspapers and magazines, did some research on the Internet and started to get familiar with a few organisations. I began with an imaginary portfolio and did so well that I just HAD to try it with real money. And so, last summer, I took the small amount of money I had in Premium Bonds and started slapping it into some companies. I picked four in the end: one bank, one oil company, a mining company and a food company that own a good stack of brands that I knew and loved.

Several roller coasters later, my “portfolio”, if one can call it that, has been as high as 50% up and as low as 15% up (that was earlier is week, you won’t be surprised to hear). The best bit, though was when I received my first dividend cheque. It might only have been a tenner but it is by far the most satisfying tenner I have earned in years. On top of that, their shares continue to climb at a healthy rate and look like returning to levels last seen before the global economic difficulties… and that is even after the past week of grimness! Ok, fair’s fair, my bank investments have not gone so well, but there’s still hope!

I am well chuffed. I’ve outpaced the best that a savings account could have paid by an order of magnitude. I plan on keeping these babies for at least another year, maybe more and needless to say I couldn’t let an economic catastrophe like this week’s pass without making another small investment. Clearly, the quality of my advice can go down as well as up and I am regulated only by red wine and home-made schnapps so I seriously don’t recommend that you accidentally treat this as investment advice but it does seem like a more educated gamble than, say, the lottery, horses or a casino. We’ll see. In the meanwhile, I have another dividend cheque to deposit! Woohooo!

Posted in Miscellaneous rubbish | Tagged , , , | 3 Comments

Google+: It’s not Facebook!

Mystery Germ

What sort of germ is this?

Never before in the history of mankind has one privately owned company with such little accountability been in possession of so much personal data about so many people. It always seemed odd to me that the population of this country fought so valiantly to protect their personal privacy when it came to national ID cards where the government would have collected a tiny, minuscule fraction of the data that Facebook collects every day. For this, and a bunch of other illogical reasons, I’ve managed to avoid Facebook so far in an “electricity? That’ll never catch on” kind of way. My only foray into social networking to date has been the whopping failure that was Twitter. In the months since I created my Twitter account I have accumulated a pride-busting zero followers and have made eight tedious tweets. Eight. Basically, I suck at social networking in the virtual world. Fortunately I’m better at it in Real LifeTM or I’d be really screwed.

Still, that didn’t stop me getting all enthusiastic when a friend sent me an invite for Google+. Google+’s tagline ought to be “It’s not Facebook!”. I kinda hope that it has a degree of success: the monopoly that Facebook has is not good for innovation and it is hard for them to be incentivised to make even the slightest effort on the privacy front when they have absolutely no competition whatsoever.

It is possible, though, that this is an exercise in pushing water uphill for Google. Part of the genius that initially helped the growth of Facebook was the total domination of the Ivy League colleges in the states one at a time. Arrive, assimilate, move on. This alone had two mammoth benefits for Facebook: 1) it created an irresistible target for advertising because everyone in one place could be hit at one go and 2) it made it impossible not to be on Facebook otherwise your social life would be shot. Then, of course, there are those silly apps. I may look down my nose at them, but they are enormously profitable and they provide rich, social entertainment for hundreds of millions of people. They also add a valuable double meaning to the word social in social network: it is a network of those in your social life and a network upon which you socialise.

Google has a lot of work to do to establish a foothold because their growth is not nearly as smartly and as sneakily presented as Facebook’s and they are going to have to have some outstanding special features to tempt people to move to them (circles, incidentally, which allows you to organise your contacts according to who you want to expose what to may well be their killer feature so far – comprehendible, easy to use, multi-layered privacy). There is a risk that Google+ will be like many of the nerd parties I either organised or attended when I was a teenager: four blokes holding a beer can waiting for the girls to turn up and THEY NEVER DID. It may be easier for Facebook to just observe the cool things that Google+ does and then copy them into their social network promptly, as, of course, they are already doing, albeit on a smaller, less refined scale. It’s going to be tough to keep tempting people to give their time to grow it to critical mass: many people on Facebook are there because everyone else is. It is not necessarily an attractive proposition to try and create another social network somewhere else. Those that are also on Twitter or LinkedIn may sigh at Google+ and say to themselves “when your service prints money, pours wine and itches my balls, then and only then will I go through the kerfuffle of setting up yet another way of piddling my time down the drain.” Being “Not Facebook” may just not be enough. It is pretty safe to say that The Zuckerborg is not wearing the brown trousers of concern JUST yet, but time will tell.

Anyhoo, to cut a long story short, I showed appropriate hypocrisy and joined Google+. And so far, I’ve had considerably more success than my efforts with Twitter. I have one friend1! But these are early days. I’m planning on building on this one friend to see if I can whip together a few, so I’ve cheated by sending invites out to a few people I know in the hope that I can construct one of these googley circle thingies. In the meanwhile, I’m sure I’ll have a blast. I picked The Germs to use as my profile picture. Yey for the germs!


1Now three friends in the time it took to write this. Of course, I’ll keep quite about what length that time was so that it looks impressive.

Posted in Miscellaneous rubbish | Tagged , , , , , | 1 Comment