November 14th, 2005


Geeky Fun

I'm having an exceptionally geeky day.

I had a testing form that would allow me to call any of the business services I'm working with, to make sure that the setup was right, and they were working (nothing worse than spending an hour trying to find an error when it turns out that the business service server has gone down).

So I'd written code for each one, when it suddenly occurred to me that what I actually wanted to do was get a list of all the classes in my DataLayer DLL, find the ones that were business calls, and then add them to a combobox, and then create new instances of whichever one was chosen.

This is stuff I've _never_ been able to do before. I assume that some languages allow you to extract this kind of information, but I've never encountered it before. I assume that it was going to be extremely difficult. It turned out to be:

Assembly a = Assembly.LoadWithPartialName("DataControlLayer");

Type geneSISBusinessCallType = typeof(DataControlLayer.GeneSISBusinessCall);

foreach (Type t in a.GetTypes())
if (t.IsSubclassOf(geneSISBusinessCallType))

to get the list out.

I'm somewhat stunned by how easy it is.

Creating the necessary class, when chosen from the comboBox is as easy as:

Assembly a = Assembly.LoadWithPartialName("DataControlLayer");
string callerName = "DataControlLayer."+(string)comboBox1.Items[comboBox1.SelectedIndex];
DataControlLayer.GeneSISBusinessCall c = (DataControlLayer.GeneSISBusinessCall)a.CreateInstance(callerName);

I'm also somewhat stunned by how easy that is.

Also, incredibly gratified that someone has made something remarkably difficult into something extremely easy. Heck, if you can do this kind of thing, you're almost back at having the power of an interpreted language (but with strong typing).


DC comics are currently going through one of their occasional reboots.  The first of these was "Crisis on Infinite Earths" and occurred because the writers had got themselves into a terrible mess with huge spaghetti trees of conflicting continuity, multiple universes, Superman being given new powers on an almost daily basis by whichever writer couldn't think of a decent plot, and the whole universe was generally thought to only be comprehensible to the kind of geek who has all 7 issues of Captain Carrot and the Zoo Crew (including the one that was never actually published, but escaped in photcopy form).

Anyway, they blew up the universe, started over, and promised to make it work this time.

It didn't.

So they blew it up again,

It still didn't,

A few reboots later we end up with _yet another_ Crisis, where they promise that afterwards it will all make sense.

It won't.

It's impossible to keep that many stories, with that many editors and that many writers, all working together in a coherent whole.  Not _and_ tell decent stories.  For goodness' sake, Star Trek couldn't keep its own consistency straight across any given season, and that was one show.

I actually suspect that what they ought to do is make an official announcement of 10-yearly reboots.  Take something that everyone knows happens every few years and make it an explicit part of the way you tell them.

"In order to keep things fresh we will blow up the universe and restart it every ten years.  If writers want to bring in old continuity they're always welcome to, but just because they bring in villain X it doesn't mean that they're forced to acknowledge every detail of history with that character."

Give the writers a chance to tell the final stories of their characters.  Allow them to change, to grow, and to die.  And then start all over again, keeping the good, and throwing out the bad, and trying a completely different way of approaching the stories.  Let them tell stories that never fitted into the old continuity, but can do so when they don't have to bend around vast amounts of embedded crustiness.

Marvel have done something similar to this, only in a case of having their cake and eating it, they've split off a whole new universe (the Ultimate Universe) where new versions of their most bankable characters exist, telling new stories (or versions of old ones) in interesting and exciting ways, where the writers don't have to worry about who's alive, who's dead and who said what to who on page 17 of a comic published in 1967.

It's the same as when you watch the JLU cartoon, or watch the Batman movie - you don't expect those to fall in precisely with established continuity, so you don't worry about it.  Of course, you'd want things to follow continuity within any particular cycle, but explicitly stopping every so often would give writers more freedom to do new interpretations of things and not have to worry about glitches.

Continuity is good - you want to feel connected to the characters and you want to feel like the world they live in grows and changes over time.  But the problem with characters that can't change over time is that they grow stale.  And the problem with characters that _do_ change over time is that they eventually either die or grow too complex to deal with.

So kill them off every so often, and start again.  Give them their final stories and heroic deaths.  And then start the story over, and let someone else tell the story of how Robin Hood met Little John.

Death to Continuity!

Long Live the New Continuity!