<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>Tensegrity</title>
      <link>http://www.tensegrity.hellblazer.com/</link>
      <description>The tech blog of Hal Hildebrand</description>
      <language>en</language>
      <copyright>Copyright 2008</copyright>
      <lastBuildDate>Mon, 16 Jun 2008 16:13:10 -0800</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>Distributed OSGi - On The Scent Of Red Herrings</title>
         <description><![CDATA[<img alt="red-herring_color.jpg" src="http://www.tensegrity.hellblazer.com/media/red-herring_color.jpg" width="200" height="179" align="right" />So, this morning my alarm clock was inexplicably set to the central time zone and consequently I arose 2 hours before my regularly scheduled time.  Unable or unwilling to go back to bed after my morning "get ready for work" rituals, I settled down to read a few articles from my RSS feeds.  The first one I read was a rather odd post on <a href="http://java.dzone.com/articles/distributed-osgi-—-tilting-win">Distributed OSGi - Tilting at Windmills</a> by Roger Voss.  Laughing a bit as I read the opening paragraph, I didn't think much more about the post as it really had nothing to do with what the OSGi RFP 119 "Distributed OSGi" really is about.  Fortunately or unfortunately, several people started peppering me with tweets, IMs and emails asking if I had read the post in question and what were my thoughts about it.  So, here they are.

Basically, I'm not really going to defend the OSGi EEG RFC 119, "Distributed OSGi" as my own interest in the matter rested largely with the acquisition of the so called "registry hooks" which allow infrastructure developers such as myself to hook into the queries of the OSGi service registry and do cool things like manifest services on demand.  Once this capability was present and decoupled from the 119 RFC, I felt I had all the tools I needed to do any damn thing I wanted to, regardless of what the 119 RFC was doing.  <em>(for background as to how I fell in love with the idea of the registry hooks, see my posts on remote OSGi, which predated the RFC 119 <a href="http://www.tensegrity.hellblazer.com/2007/03/distrubuting_osgi.html">here</a> and <a href="http://www.tensegrity.hellblazer.com/2007/03/distributing_osgi_differences_1.html">here</a> and a post during the formulation of the RFP which led to RFC 119 <a href="http://www.tensegrity.hellblazer.com/2007/08/super_complex_pan_dimensional.html">here</a>)</em>
]]></description>
         <link>http://www.tensegrity.hellblazer.com/2008/06/distributed_osgi_on_the_scent.html</link>
         <guid>http://www.tensegrity.hellblazer.com/2008/06/distributed_osgi_on_the_scent.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Distributed Systems</category>
                  <category domain="http://www.sixapart.com/ns/types#category">OSGi</category>
        
        
         <pubDate>Mon, 16 Jun 2008 16:13:10 -0800</pubDate>
      </item>
            <item>
         <title>My Dinner With Andre</title>
         <description><![CDATA[<img alt="Our Glorious Leader" src="http://www.tensegrity.hellblazer.com/media/mao_tse_tung.jpg" width="374" height="372" align="right"/>Well, after my last blog entry regarding Sun and JSR 277, I received a visit from the enforcers of that fine establishment.  Wearing heavy overcoats on a nice sunny day, the elevator door opened and they came rushing out.  Like a scene from the <em>Matrix</em>, it seemingly took them forever to pull out their impossibly huge automatic weapons they had hidden under the black leather trench coats.  In only several hundred milliseconds, Sun's professional enforcers unloaded 20 or 30 pounds of lead in the form of hundreds upon hundreds of rounds of high powered ammunition into what used to be my body, splattering my physical essence across the interior of the reception area of building 200 on the Geidi Prime campus.

Or not.  Rather, what did happen was Alex and Stanley showed up at my office escorted by a fellow member of House Harkonnen and after a slightly awkward moment with Stanley (I had, after all, just blasted across the internet - with the awesome power of my blog - stating that he was an idiot), Stanley and my compatriot excused themselves to work on JSR 277 related specification business leaving Alex Buckley and I in my office, as I watched him finger a menacing looking lead pipe that he pulled from his brief case.

Or not.  Rather, we sat down and talked comfortably for quite some time about about everything but the issues surrounding JSR 277 and the reason why Alex even knew of my existence.  Eventually, however, we directed the conversation towards the actual issues we really needed to discuss and left the safe domain of my Dr. Who toy collection and the pleasantries of traveling through Heathrow in the U.K.
]]></description>
         <link>http://www.tensegrity.hellblazer.com/2008/06/my_dinner_with_andre_1.html</link>
         <guid>http://www.tensegrity.hellblazer.com/2008/06/my_dinner_with_andre_1.html</guid>
        
        
         <pubDate>Wed, 04 Jun 2008 06:42:19 -0800</pubDate>
      </item>
            <item>
         <title>Stanley Ho is Insane</title>
         <description><![CDATA[<table class="image" align="right">
<caption align="bottom">Stanley Ho shows up for another meeting of the JSR 277 Java Modules Specification with a brand new versioning scheme</caption>
<tr><td><img alt="Stanley Ho shows up for another meeting of the JSR 277 Java Modules Specification" title="Stanley Ho shows up for another meeting of the JSR 277 Java Modules Specification" src="http://www.tensegrity.hellblazer.com/media/third-stage-guild-navigator.jpg" width="200" height="179" /></td></tr>
</table>Dear god, <a href="http://weblogs.java.net/blog/stanleyh/archive/2008/05/versioning_in_t_1.html">why are we subjected to such hubris?</a>  

Stanley Ho, working on the Java Module System (formerly known as JSR 277) has decided that Sun is so smart that <em>they need to invent yet another versioning system</em>.  Now, maybe Stanley Ho really is a super smart dude who makes me look like I was a fifth rate, multiple generation inbred dufus from the white trash mountains of Virginny (many, many people have actually pointed that <em>I actually am</em> a fifth rate, multiple generation inbred dufus from the white trash mountains of Virginny, but I digress), but it seems to me that it is <em>self evident</em> that versioning is what we in the business know as a <em>HARD PROBLEM<sup>tm</sup></em>.  And to think that someone even as super intelligent as those people at Sun are known to be will come up with a scheme that doesn't have any unintended consequences that were not foreseen by even their <em>Spice<sup>tm</sup></em> enhanced brains is simply something that I think you'll find many in this industry simply can't conceive.

There <em>will</em> be bugs in what Stanley has designed.  There <em>will</em> be unintended consequences.  It will only be after years of serious use and abuse by many hundreds of thousands of developers in <em>real world</em> situations that even the <em>Spice<sup>tm</sup></em> enhanced mind of Stanley Ho hasn't dreamed of will the full extent of his hubris become clear.

One might ask the question: "Why, Stanley, didn't you use the OSGi versioning scheme?".  

&lt;crickets chirping&gt;

This shit is hard.  This path is fraught with peril.  In the 21st century, we simply don't go around inventing shit for the hell of it simply because we can.  We <em>reuse</em> existing things even though they might not be the correct shade of purple we were dying to have.  Simply because the corners are a bit worn.

The absolute last thing we need from Sun in the Java Modules is Yet Another Brilliant Sun Shiny Invention that we'll have to suffer though for years until all the bullshit is extracted from the hubris that went into creating.

Geebus.  Please.  Dear God.  Please. 

Stop the madness.  Someone please hold an intervention with these people.  The industry simply cannot stand to have this crap thrown at them, especially in something as fundamental and as far reaching as the <em>frickin' base Java module system.</em>

See <a href="http://www.osgi.org/blog/2008/05/is-9903520300447984150353281023-too.html">Peter Krien's rant on the hubris that is Stanley Ho</a>.

<em>Sometimes a turd is just a turd</em>]]></description>
         <link>http://www.tensegrity.hellblazer.com/2008/05/stanley_ho_is_insane_1.html</link>
         <guid>http://www.tensegrity.hellblazer.com/2008/05/stanley_ho_is_insane_1.html</guid>
        
        
         <pubDate>Fri, 30 May 2008 07:43:04 -0800</pubDate>
      </item>
            <item>
         <title>Event Driven Cage Match: Predator/Prey</title>
         <description><![CDATA[So I finally have what I consider to be the minimum - bare minimum, mind you - bar of the 3rd Space gaming framework finally passed.  What I have working is a Predator/Prey simulation using the <a href="http://www.red3d.com/cwr/boids/">Boid rules for modeling flocking behavior</a>.  Boids were invented by Craig Reynolds to model the flocking behavior we see in birds, fish and other herd animals.  The rules in Boid are actually butt simple and all local - i.e. simulating the flocking behavior only relies on the emergent behavior of the individual's action, not some "higher authority" guiding the individuals, keeping them in formation.

In any event, what you find if you look for any Java code which implements Boids, the seeming universal implementation is to actually keep a global list of the boid positions - i.e. an implicit "global" which really shouldn't be present.  The reason why this is so is, of course, because <em>Area Of Interest</em> management (AOI, for short) is a tough thing to do, even if you are simply running the simulation in a single process.

<center><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/vExZb0TkP9k&hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/vExZb0TkP9k&hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object>></center>
<center><em>Predator/Prey Boids, using Voronoi based AOI management in an event driven simulation</em></center>

I really needed a non trivial simulation to use as the driver test case for the 3rd Space gaming framework I've been working on.  Flocking behavior is, as one expects, quite common in games and is something that the human players do quite frequently as well - they don't call humans sheep for nothing.  As it turns out, managing the area of interest for simulated entities and human's avatars is rather difficult precisely because of this tendency to flock.  Moving, flocking simulated entities is therefore the de facto test case that one should be using as a model when developing the basics of a large scale, distributed simulation and gaming infrastructure - i.e. if you can't handle this, then you have no hope of handling anything more complicated.

<center><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/sPs0aV21pf8"></param><embed src="http://www.youtube.com/v/sPs0aV21pf8" type="application/x-shockwave-flash" width="425" height="350"></embed></object></center>
<center><em>Same as above, revealing the voronoi overlay used to maintain AOI.</em></center>

So, it's kind of cool.  I now have a non trivial simulation which runs under both the event driven framework and makes use of the voronoi based AOI management.  Next step is to now distribute the simulation using Coherence so I can see how well my theories of how to massively scale this framework will work.]]></description>
         <link>http://www.tensegrity.hellblazer.com/2008/05/event_driven_cage_match_predat_1.html</link>
         <guid>http://www.tensegrity.hellblazer.com/2008/05/event_driven_cage_match_predat_1.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">3rd Space</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Event Driven Simulation</category>
        
        
         <pubDate>Mon, 26 May 2008 12:19:03 -0800</pubDate>
      </item>
            <item>
         <title>Event Driven Autonomic Management - The First Cut Is the Deepest</title>
         <description><![CDATA[<em>(<a href="http://www.tensegrity.hellblazer.com/2008/04/event_driven_autonomic_managme_1.html">Part I - Preliminaries</a>, <a href="http://www.tensegrity.hellblazer.com/2008/04/event_driven_autonomic_managem.html">Part II - The Long Kiss Goodnight</a>)</em>

<img alt="first-cut.jpeg" src="http://www.tensegrity.hellblazer.com/media/first-cut.jpeg" width="128" height="130" align="right"/>&lt;sigh&gt;  Sorry.  I tend to talk more about the surrounding atmosphere than the thing itself.  In this post I hope to remain focussed and actually discuss the actual meat of the architecture and the skeleton upon which it is based.  Apologies for not providing the color and fluff of life that actually surrounded the process ;)

<strong>Point 1</strong> <em>Humans are good at making declarative statements and woefully incompetent at micromanagement.</em>

This is one of those points that one shouldn't have to make, but the simple fact that bears repeating is that Humans are really good at figuring out what <em>should</em> be done, but really shitty at actually - you know - <u>doing</u> what they think should be done.  In keeping with the spirit of the theme of this post, I leave it to the reader to reflect upon the profound reality that it is far easier to see the goal than the path to it.  The profound insight I have (not singular, as I'm sure you're aware) is that a management system which caters to the micro-manger who actually is competent at orchestrating a complex series of transformations under chaotic conditions are few and far between - so rare as to be non-existent to several orders of approximation (or so expensive, which amounts to the same thing).

The take away is simply that any system which depends on a human to do the actual work is simply not going to work - by definition.  Seeing as how this is one of my premises, it's not something I can really argue.  It's a premise derived by years of observations of not just other humans but also myself.  Again, I'm not making the claim that there are not humans who are absolutely brilliant at micro-managing large scale distributed systems - let's be <em>crystal</em> clear on that point.  No.  My point is simply that these people are incredibly rare and you - the actual person paying the price - will have to pay through the nose if you find such a person.  And, quite frankly, the chances of you actually finding such a person is so miniscule as to be almost unmeasurable.  Most likely, what you'll do is find someone who claims to be such a person or someone whom someone you trust claims to be such a person.  And the odds are overwhelmingly that you are just a complete maroon and have been hoodwinked into paying a lot of money for a cheap imitation of such a being.  Get used to it.  It's just a simple fact of reality.]]></description>
         <link>http://www.tensegrity.hellblazer.com/2008/05/event_driven_autonomic_managem_2.html</link>
         <guid>http://www.tensegrity.hellblazer.com/2008/05/event_driven_autonomic_managem_2.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Distributed Systems</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Event driven autonomic management</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Management</category>
        
        
         <pubDate>Wed, 14 May 2008 21:09:12 -0800</pubDate>
      </item>
            <item>
         <title>Integration of Thoth and Prime Mover</title>
         <description><![CDATA[Over the weekend, I worked on getting the Thoth voronoi based area of interest management integrated into the Prime Mover event driven simulation framework.  This integration required me to actually come up with how the Thoth perceptrons (i.e. the entity responsible for the AOI management) interacted with the simulation entity the perceptron was working for.  Not really a big deal by any measure, but it was on my to do list.  The actual integration into Prime Mover was simply the adding of the @Entity annotation which indicates that instances of the class are simulation entities and viola, it's a simulation.  I had purposefully designed the Node interface protocol to conform to the event constraints, so no changes were required.  However, the simulation did require that there be a disconnect between the nodes, themselves, and the representation of the neighboring nodes that each node has.


<center><object width="425" height="350"> <param name="movie" value="http://www.youtube.com/v/i6pwFjG7qdk"> </param> <embed src="http://www.youtube.com/v/i6pwFjG7qdk" type="application/x-shockwave-flash" width="425" height="350"> </embed> </object></center>
<center><em>Not sure why this is so choppy, as the video seems to move in 1 second increments.  My first time with YouTube, so who knows...  Rest assured, the actual animation is smooth as silk...</em></center>

In the original VAST model, this was done by the P2P network emulation which essentially serialized the nodes and reconstituted them when the P2P messages were received.  I really, really hated the whole P2P emulation framework that was there and completely eliminated it in the integration.   The message processing was problematic and caused me unnecessary pain and suffering in the actual simulation of the protocol anyway.  Seeing as how I'm going to be using Coherence under the covers to make this puppy work, that means I'm going to have a different mechanism for communication anyway - the network model in VAST was way off base for what I had in mind.]]></description>
         <link>http://www.tensegrity.hellblazer.com/2008/05/integration_of_thoth_and_prime.html</link>
         <guid>http://www.tensegrity.hellblazer.com/2008/05/integration_of_thoth_and_prime.html</guid>
        
        
         <pubDate>Tue, 13 May 2008 09:50:47 -0800</pubDate>
      </item>
            <item>
         <title>Scalable Interest Management and Load Balancing for MMOG</title>
         <description><![CDATA[<img alt="voronoi-network.gif" src="http://www.tensegrity.hellblazer.com/voronoi-network.gif" width="285" height="291" align="right"/><p>
When you're trying to build a massively multiplayer online gaming platform (MMOG), probably the most important part of the system is scalability.  After all, if it doesn't scale, it's simply a multiplayer online gaming platform - without the "massive".  While it almost seems embarrassing to point this out, it's extremely interesting to note that there have recently been a lot of discussion about scalability of online systems - in particular, the Web 2.0 applications.  I won't point to these discussions, but suffice it to say that I find it terribly amusing to hear the various forms of the argument that you can worry about scalability later - i.e. it's not something that has to be designed in from the start.  <em>(Arguments of the form "don't worry about scalability because no one is going to use your application anyway" are perfectly fine, however)</em>.  As the history of MMOG has shown, the application's architecture has a <em>huge</em> impact on the ability to scale.  As many gaming platforms have discovered, scalability isn't something you can simply "add on" after you "get things right".  Anyone who thinks that this doesn't apply to other network application architectures amuse me to no end, given as if they actually produce something of value, it will fall over when it hits the natural scalability limit of their crappy architecture.</p>
<p>
In any event, there's a couple of basic problems with MMOG that limit scalability.  The first has to do with what is known as <em>"Area Of Interest"</em>.  The idea here is familiar enough to anyone who has done any distributed communication in that the gaming platform doesn't want to find itself in an N<sup>2</sup> connection topology.  In MMOG, the entities (gamer avatars, NPC, etc) have to communicate with other entities in the game.  If you can't find a way to limit the communication to the entities in the area of interest - i.e. the other entities that the entity in question is limited to communicating with - then you have a huge scalability issue due to sending messages to entities that simply don't care about the communication because it can't possibly affect them.  This not only wastes bandwidth and precious OS network resources but causes a host of other issues having to do with the time ordering of distributed events and filtering our events that aren't relevant.  It's a mess.</p>
]]></description>
         <link>http://www.tensegrity.hellblazer.com/2008/05/scalable_interest_management_a_1.html</link>
         <guid>http://www.tensegrity.hellblazer.com/2008/05/scalable_interest_management_a_1.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">3rd Space</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Distributed Systems</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Event Driven Simulation</category>
        
        
         <pubDate>Sun, 04 May 2008 13:15:05 -0800</pubDate>
      </item>
            <item>
         <title>JPIE - To Infinity and Beyond!</title>
         <description><![CDATA[<img alt="pie.gif" src="http://www.tensegrity.hellblazer.com/media/pie.gif" width="273" height="163" align="right"/>Okay, I have to confess that I didn't think I was taking Bob to the woodshed in my <a href="http://www.tensegrity.hellblazer.com/2008/04/the_french_have_no_word_for_en_1.html">response</a> to his <a href="http://theabstracttruth.wordpress.com/2008/04/17/java-platform-infrastructure-edition-part-2/">response</a> to my <a href="http://www.tensegrity.hellblazer.com/2008/04/going_against_the_flow_crossin_1.html">interminable screed.</a>  But he's a good sport (haven't spotted any wolf packs nipping at my heels, yet) and follows up the initial serve with some good points worth thinking about.

One of things that Bob throws out in his post is a rather interesting product called <a href="http://www.zeroturnaround.com/javarebel/">Java Rebel</a> that bears watching.  It seems like very interesting technology and I'm quite curious as to what it looks like under the covers.

But going to the meta point that Dr. Pasker seems to be pointing at, I just happened to read a rather interesting article who's topic seems quite germane to the discussion at hand: <a href="http://erikengbrecht.blogspot.com/2008/04/multiprocess-versus-multithreaded.html">Multiprocess versus Multithreaded...or why Java infects Unix with the Windows mindset</a>.  I highly recommend anyone interested in this kind of stuff read that post as I think it does speak to the heart of the issue.

One of the eternispecs has been the <a href="http://www.bitser.net/isolate-interest/papers/bryce-05.04.pdf">Java Isolate spec</a> - JSR <a href="http://jcp.org/aboutJava/communityprocess/final/jsr121/index.html">121</a>.  It's always garnered a lot of interest and at one time, some sound and fury was directed towards it.  But it's something that has yet to find its way into the outside world.

Between the two topics above - Java as a Windows mindset and Isolates - I think that one can get a pretty clear picture of what's going on and where the essential issues lay.  The problem is simply that we've effectively eliminated the process out of the Java model without providing the required support within the model for the work that we'd like to do which is desperately seeking a process model.]]></description>
         <link>http://www.tensegrity.hellblazer.com/2008/04/jpie_to_infinity_and_beyond_1.html</link>
         <guid>http://www.tensegrity.hellblazer.com/2008/04/jpie_to_infinity_and_beyond_1.html</guid>
        
        
         <pubDate>Thu, 17 Apr 2008 11:47:27 -0800</pubDate>
      </item>
            <item>
         <title>Nice little gem - JNA</title>
         <description><![CDATA[Just found the<a href="https://jna.dev.java.net/"> Java Native Access library</a> for dynamic access to native libraries without JNI.  Sweet.  Had been using the JNI wrapper, which provided similar functionality, (but cost money and had licensing encrustations) previously.  Glad to see this available as it makes it far easier for me to start integrating with C based physics engines (<a href="http://www.ode.org/">ODE</a>) and 3D gaming engines (<a href="http://www.ogre3d.org/">OGRE</a>) in the 3rd Space project.]]></description>
         <link>http://www.tensegrity.hellblazer.com/2008/04/nice_little_gem_jna.html</link>
         <guid>http://www.tensegrity.hellblazer.com/2008/04/nice_little_gem_jna.html</guid>
        
        
         <pubDate>Wed, 16 Apr 2008 06:28:35 -0800</pubDate>
      </item>
            <item>
         <title>JSR 277 - Mostly Harmless or a Good Thing For OSGi?</title>
         <description><![CDATA[<img alt="newClash-730586.jpg" src="http://www.tensegrity.hellblazer.com/media/newClash-730586.jpg" width="250" height="253" align="right"/>Bryan Atsatt, who is House Harkonnen's representative on the JSR 277 expert group, has been doing a lot of work trying to bring the two warring parties together and not simply salvage the relationship but to turn the momentum around and spark a new found friendship between the two.

His first post on his new blog is dedicated to this premise, <a href="http://atsatt.blogspot.com/2008/04/jsr-277-could-be-great-for-osgi.html">JSR 277 Could Be Great for OSGi</a><blockquote><em>The initial spec actually has two separate parts: an api/framework, and an implementation with a new distribution format. Unfortunately, these are presented in a way that seriously blurs the distinction. Worse, the new distribution format (".jam" files) often takes center stage.

The emPHAsis is on the wrong syLLAble.

The api/framework layer must be the primary focus of the JSR 277 specification, providing a coherent compile/runtime model that enables multiple implementations. Specific implementations, while required to surface framework/api issues, should be documented in appendices or even separate specs.

If the EDR spec had been written from this perspective, we probably would have avoided most of the current animosity. We can and should fix this in the next draft release. Implementations can then be seen on equal footing. More importantly, they can be left to compete on their own merits.

Not everyone wants or needs OSGi, and the new .jam implementation may be right for them.

But we know that there will be LOTS of bundles around when SE 7 ships, vastly outnumbering .jam files, so we need an OSGi implementation. ASAP. Built by OSGi insiders. Without it, we cannot have confidence that the api/framework abstractions are right or complete. With it, we not only gain spec validation but have a ready-made solution for using bundles on SE 7.</em></blockquote>Give it a read.]]></description>
         <link>http://www.tensegrity.hellblazer.com/2008/04/jsr_277_mostly_harmless_or_a_g.html</link>
         <guid>http://www.tensegrity.hellblazer.com/2008/04/jsr_277_mostly_harmless_or_a_g.html</guid>
        
        
         <pubDate>Tue, 15 Apr 2008 11:17:56 -0800</pubDate>
      </item>
            <item>
         <title>The French Have No Word For Entrepreneur</title>
         <description><![CDATA[So Bob Pasker has a typically thoughtful response to my post regarding the changes I've made to the infrastructure of the Prime Mover simulation framework.  The regaling of my adventures reminds him of his conclusion that <em><a href="http://theabstracttruth.wordpress.com/2008/04/14/a-system-programming-language-variant-of-java/">Java is a lousy language for building infrastructure</a></em>.

It's something that I never really thought about, personally.  It's not that I haven't cursed Java for some reason or another on a continual basis since I started programming in it.  But that's always the way it is when you're pushing the limits of what a language is capable of and what a system is designed to do.  You love to hate it and the very fact that it fights against you as you bend, fold and mutilate it, in the process of violating the warranty is just our way of saying that we really love it - really, we do.  Sure, it's not a healthy relationship, but then again, specializing in these kinds of things has never really been healthy.

Now, I must say that, in defense of proposition that Java as a <em>fantastic</em> language for building infrastructure, that the "pain and suffering" I experienced (not really, but I know it looks that way from the outside) in the refactoring of the guts of the Prime Mover infrastructure really didn't have anything to do with the shortcomings of Java as an infrastructure programming language <em>per se</em>.  Indeed, the primary library that I've made use of in this project, the <a href="http://asm.objectweb.org/">ASM byte code engineering framework</a>, has proven to be a superlative tool for doing precisely the kind of stuff that Bob reminisces about WRT the days of the wild, wild west - back when we had to wrangle byte codes with our bare hands and force them to our will using nothing more than our teeth and a screwdriver.

Rather, all the issues I documented wrt Prime Mover have been problems of my own making - in the end, I'm always the worst enemy I have.  Far outstripping any puny terror and punishment that Guy Steel or the hordes of Orc programmers over at JavaSoft can dish out.]]></description>
         <link>http://www.tensegrity.hellblazer.com/2008/04/the_french_have_no_word_for_en_1.html</link>
         <guid>http://www.tensegrity.hellblazer.com/2008/04/the_french_have_no_word_for_en_1.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Programming Tools</category>
        
        
         <pubDate>Mon, 14 Apr 2008 19:46:26 -0800</pubDate>
      </item>
            <item>
         <title>Going Against The Flow - Crossing the Streams in Prime Mover</title>
         <description><![CDATA[<center><img alt="The 3rd Space fine tunes the event driven simulation framework."  title="The 3rd Space fine tunes the event driven simulation framework." src="http://www.tensegrity.hellblazer.com/media/cross-the-streams.jpg" width="418" height="319" /></center>

Well, that was fun.  I just spent a decent chunk of my weekend swapping out the fundamental mechanism in the <em>Prime Mover</em> event driven simulation framework.  Between taking care of the little one and the massive allergy attack I was suffering (thanks, Mom Nature!), I think I should get an award or something.  Wait!  Here's a gold star I can put on my laptop case.  

In any event, the changes to the underlying framework are actually quite cool.  What had happened was that Prime Mover was finally getting used in anger - well, gently played with, really - and this exposed some serious short comings in the data flow analysis I was using to perform the byte code rewriting which made the magic happen under the hood.  Over a few beers at Bucks on Friday afternoon, we mulled over a few different strategies for fixing the issue - none of which were particularly appetizing.

So, let me step back a bit and lay out what happened to the framework and why.]]></description>
         <link>http://www.tensegrity.hellblazer.com/2008/04/going_against_the_flow_crossin_1.html</link>
         <guid>http://www.tensegrity.hellblazer.com/2008/04/going_against_the_flow_crossin_1.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">3rd Space</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Event Driven Simulation</category>
        
        
         <pubDate>Mon, 14 Apr 2008 09:05:21 -0800</pubDate>
      </item>
            <item>
         <title>Event Driven Autonomic Management - The Long Kiss Goodnight</title>
         <description><![CDATA[<em>(<a href="http://www.tensegrity.hellblazer.com/2008/04/event_driven_autonomic_managme_1.html">Part I - Preliminaries</a>
<a href="http://www.tensegrity.hellblazer.com/2008/05/event_driven_autonomic_managem_2.html">Part III - The First Cut is the Deepest</a>)</em>

From my perspective, one of the major pitfalls in any project which starts out to produce a management infrastructure is that the project almost immediately starts focussing on the API layer rather than the defining the large scale system behavior.  In many ways, this is completely understandable, given that the API has the most immediate impact on the first users of the system - i.e. those hapless fools that form the brigade of developers who have to integrate their systems into your management infrastructure.  Given that in most large organizations, APIs become the mechanism that groups use to mediate their interaction - not just at the Java level, but in a visceral sense that governs the actual political interaction between the groups.  Somewhat because APIs are something concrete and form a nucleus around which people can argue concretely about.  But mostly it's because most people are rather ignorant of how systems actually interact, but one thing they do know is that there are APIs and consequently these concrete manifestations of handles that can be universally understood become the battleground upon which system integration takes place.  Or, put another way, APIs are the lowest common denominator that even managers can understand, consequently they are the only focus of pretty much every large scale project.

But the problem with this focus is that an API doesn't define a system, rather it's the other way around.  The way I think about it is that the APIs of a system are like the inner core of a sphere.  Defining the surface of the system - i.e. what the system "looks" like - will provide enormous leverage on the internals of that system.  And this leverage will simply force things into place - meaning that the reason the API exists is because it is literally the inevitable result of the forces that keep the system together.

But I digress.]]></description>
         <link>http://www.tensegrity.hellblazer.com/2008/04/event_driven_autonomic_managem.html</link>
         <guid>http://www.tensegrity.hellblazer.com/2008/04/event_driven_autonomic_managem.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Distributed Systems</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Event driven autonomic management</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Management</category>
        
        
         <pubDate>Wed, 09 Apr 2008 09:40:48 -0800</pubDate>
      </item>
            <item>
         <title>Event Driven Autonomic Management - Preliminaries</title>
         <description><![CDATA[<strong>Update: </strong><a href="http://www.tensegrity.hellblazer.com/2008/04/event_driven_autonomic_managem.html">Part II - the long kiss goodnight</a>, <a href="http://www.tensegrity.hellblazer.com/2008/05/event_driven_autonomic_managem_2.html">Part III - The First Cut is the Deepest</a>

This is the first in a series of posts documenting the research I've been doing into a different way of thinking about system management infrastructure.  For quite some time, I've been obsessed with the idea of how to simply and effectively manage large scale systems.  Throughout this obsession, I've travelled down various roads and found myself in several box canyons along the way.  I've tried out a lot of different strategies and have finally settled into something which provides the kind of framework I've been looking for which I haven't found replicated anywhere.

Note that I'm certainly not making the claim that it is "Teh Best" management infrastructure.  Rather, what I'm making the claim is that it's the most interesting management architecture <em>to me</em>.  As anyone who knows me can testify, I have rather peculiar tastes and I am a strange bird at times.  So fair warning, eh?

In any event, what I plan to do is to provide a fairly deep dive into the architecture that I've come up with.  In the standard tradition of all literature scientific and technical, it will be presented in precisely the opposite order in which I actually came up with things - i.e. from the top down, in a semi coherent form that makes sense.  Lord knows that actual discoveries and explorations are more a matter of luck in which you discover something and then spend an inordinate amount of time tracking down why the heck you managed to stumble upon it and where it fits in the larger picture of things that you're trying to map out.  I've always found this cognitive dissonance amusing, myself, and hope you won't mind to much when I veer off into seemingly irrelevant paths rather than sticking to the point at hand.

If you're one of those people who can't wait until the end of the story to find out what's going on, by all means download the PDF of my talk on the subject at last year's Spring Experience entitled <a href="http://www.tensegrity.hellblazer.com/media/Digging-The-Trenches.pdf"><em>Digging the Trenches on the Ninth Level</em></a>.  If you're not familiar with Dante's <em>Divine Comedy</em>, then you won't get the joke.  But suffice it to say that I'm a big believer in the principle that every time you solve a problem, you discover ten more problems that you didn't know you had.

A perfect example of this sometimes perverse law is something as simple as email.  Email solved a lot of problems that a modern economy and social population have, but in doing so it created a lot more.  Without email, we would never have been subjected to the sublime beauty of penile extension spam nor would your grandmother be subjected to the horror of id phishing which you discover has snagged her bank account and drained all her life's savings leaving you with a predicament that makes you wonder what all this progress was supposed to do in the first place.

Likewise, I firmly believe that in solving the problems I believe have been addressed by OSGi, Spring DM and management architectures like mine, we've inadvertently unleashed new levels of horror that will ensure future generations will curse our names as they suffer from the fall out and live the unspeakable abominations unleashed from these "solutions" and witness them unfold in ways that we couldn't possibly imagine.

So, with that cheery panorama as the back drop, I'll end this introductory post and start working on the next post, which provides high level overview and ten dollar tour of the sewers that I've been digging for your benefit on the ninth level of hell.

Remember.  I dig because I care.   After all, you do want that frozen crap to be routed somewhere and dealt with, don't you?


<center><img alt="Gustave_Dore_Inferno34.jpg" src="http://www.tensegrity.hellblazer.com/media/Gustave_Dore_Inferno34.jpg" width="461" height="368" /></center>
<center>C'mon in!  The water's wonderful!</center>]]></description>
         <link>http://www.tensegrity.hellblazer.com/2008/04/event_driven_autonomic_managme_1.html</link>
         <guid>http://www.tensegrity.hellblazer.com/2008/04/event_driven_autonomic_managme_1.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Distributed Systems</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Event driven autonomic management</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Management</category>
                  <category domain="http://www.sixapart.com/ns/types#category">OSGi</category>
        
        
         <pubDate>Tue, 08 Apr 2008 18:52:41 -0800</pubDate>
      </item>
            <item>
         <title>Digging the Trenches on the Ninth Level of Hell</title>
         <description><![CDATA[My talk at last year's Spring Experience talk on the next generation of application server architecture is available <a href="http://tensegrity.hellblazer.com/media/Digging-The-Trenches.pdf">here</a>.

The talk is about OSGi and how the next generation of application server platforms will simply do away with the cumbersome and rather dated component models that we all know and hate in favor of the vastly superior OSGi platform.  Or that's the theory at least.  Only time will tell if I'm correct or just another mad hatter sniffing too much mercury outgassing from the various toys littering his office.

In addition, I also lay out the management architecture I've been experimenting with for the past year.  Obviously, it uses OSGi as its base, but OSGi - by itself - isn't sufficient to provide the kind of management infrastructure you need to manage large numbers of processes.  I call this management architecture - for lack of a better name - Event Driven Autonomic Management.  I'll be kicking off a series of posts going into far more detail on this architecture as a means of documenting the research I've been doing.  

Think of it as therapy, as talking about it on this blog - posting, so to speak, to the wind about concepts and issues that no one else seems to find terribly interesting or useful.  You can tell I'm a great hit at parties, can't you?]]></description>
         <link>http://www.tensegrity.hellblazer.com/2008/04/digging_the_trenches_on_the_ni.html</link>
         <guid>http://www.tensegrity.hellblazer.com/2008/04/digging_the_trenches_on_the_ni.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Distributed Systems</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Management</category>
                  <category domain="http://www.sixapart.com/ns/types#category">OSGi</category>
        
        
         <pubDate>Tue, 08 Apr 2008 18:43:22 -0800</pubDate>
      </item>
      
   </channel>
</rss>
