Open Sourcing of 3rd Space

Thirdspace.JPGRather than trying to deal with any licensing issues with those who wanted to use or play with the work I’ve done under the umbrella of the 3rd Space project, I’ve decided to open source the system.  The source is hosted on my SVN repository, which is:

    http://svn.tensegrity.hellblazer.com/3Space

I have bugzilla and Trac enabled, but I haven’t done much of the necessary work to make those usable yet.

Right now, the system isn’t all that impressive from a full featured simulation environment perspective.  I do have a lot of the basics covered and have a good idea of where I’m headed, but there still an enormous amount of work to do, obviously.

Still, the system is quite different from any of the other virtual worlds  or simulation environments in that the underlying framework is an innovative system which provides an event driven simulation framework using Java as the language you write the simulations in.  Naturally, you can also use any of the scripting languages supported by the JVM (not to mention, languages which use the JVM, such as Scala, etc), so it’s actually pretty interesting from that perspective as well.

I’ve also fully implemented the 2 dimensional Voronoi based Area of Interest management which I think is actually quite innovative.  Currently, the state of the art in this arena is message based pub/sub systems which simply don’t scale at all, or some Frankenstein’s monster based on what amounts to a QuadTree structure.  Not optimal.  Naturally, the AOI management is all event driven, being implemented as part of the aforementioned simulation framework. I have the 3 dimensional Voronoi Sphere of Interest management in the works.  Once that is in place, things will really start rocking.

You’ll find some interesting things in the source tree, such as a pretty darn sophisticated Data Flow Analysis framework that I found.  I don’t actually use it in the simulation framework’s transformation logic, but it’s something that will likely have to be pulled out to solve some of the more nastier analysis issues that will inevitably have to be solved in that arena.

You’ll also find a Composite Object framework that I put together, which I call Janus.  The composite patter is an important pattern in the simulation / virtual worlds area and I couldn’t find anything out there remotely useful.  Yes, I’ve looked at the available frameworks, but they were either too simple to do anything useful, or literally tried to boil the ocean in the attempt to solve all problems with their framework (I’m looking at you, Qi4J).    It’s small and extremely tight, leveraging ASM for the bytecode transformations to implement the composite, rather than creating a maze of twisty proxies, all alike.  Again, I haven’t used it in anger yet, so who knows if it’s really useful.  But it seems promising.

In any event, be aware that the code is licensed under the Affero GPL V3.  I am fully aware that this is the “yes, I’m a complete asshole” license.  Oh well.  Please note that I’m a rapacious capitalist at heart and believe in making money off of stuff.  But I also believe in the open source model.  I figure if you want to contribute back your mods, then that’s a decent enough payment.  The Affero GPL does a pretty good job of modeling the balance I want to strike with the release of the source.

As always, this is all “as is” and without warranty.  I don’t exist to fix any bugs you might find and I may not even respond to your emails.  But if you’re interested in working on some stuff that I think is pretty darn interesting, then this might be something you find useful.  Let me know.

I’ll definitely start putting in the work to fill out the Trac WIKI with some more useful information and start detailing what the sub projects are, documenting the various frameworks and start laying out the road map I have in my mind.

In any event, I hope you find the code useful and interesting.

Third Space postings on Tensegrity

When you shake your ass, they notice fast – and some mistakes were built to last

captain-walmart.jpgOne of the more interesting books I’ve read in the past couple of years is No One Makes You Shop At Wal-Mart.  One of the take-aways from the book is the unmistakable conclusion that the idea of “revealed preferences” is simply wrong.  You see this kind of short cut thinking all the time in that people basically believe that the choices that someone has made reveals their preferences.  So, if you see that USA Today is the best selling newspaper, the theory of revealed preferences tells us that what this means is that news consumers really, really do prefer USA Today.

What you learn from the work of Tom Slee is that this thinking is simply bullshit.  As anyone with a pulse can tell you, life is filled situations that amount to versions of the Prisoner’s Dilemma where in your best strategy is often counter to your best interests.  The long and short of the argument is that, inevitably, you’re choices suck and interpretations based on the results of your decisions hardly reflect the trade offs that are involved in the process of making that decision.

A good book and not all that long.  Definitely recommended, if you’re interested in that sort of thing.

One of the reasons that Slee’s book interests me is its application to my chosen domain of software.  One way to look at the Slee’s thesis is through the lens of the Innovator’s Dilemma.  In the software industry, one sees this reflected in the idea that what a customer wants is more of what they’ve been buying in the past, only “better” – e.g. cheaper, faster, whatever…  A decent way to understand this is the transition that took place in the transportation when the automobile came into fore.  If you were had asked the customers of the horse drawn transportation (i.e. the “legacy” industry) what they wanted, the customers would have stated “faster horses”.

And so it goes in this industry we love so much.  What do customers want?  More Of The Same!  Faster Horses™!

Given that I work in the legacy industry, I’m certainly understand that there’s a lot of stuff out there that is way over hyped and fizzles faster than it became fashionable.  But this notion of basing your strategy on the revealed preferences of your customers, rather than understanding what their actual problems are, is something that definitely keeps me up at night.  The idea that someone’s current investment reveals their preferences for the “way things are done” seems to be one that’s based on manifestly shaky ground.

And unlike – say – the auto industry, where the dinosaurs of the automotive industry were caught flat footed after years of ignoring all the warning signs, it’s fairly clear that changes in the more ephemeral industries such as ours – industries where changes can happen far more rapidly than the buying cycle of durable goods – can happen in a moment’s notice and fundamental changes in technology – such as the rise of the internet, for example – can completely catch dominate players flat footed and they find themselves in the “me, too” category of innovation.  Playing catch up in the also ran category.

Or selling Horse Drawn Carriages in the age of Henry Ford.

Deep thought

It’s the definition of passive-aggression and really quite unseemly, to set out to provoke people, and then when they react passionately and defensively, to criticise them for not holding to your standards of a calm and rational debate.

Just sayin’