Host Routing Multicast Engine (HRME)

I liked university. It gave me time to think about things. It gave me interesting people to talk to. But then I had an idea. It was called the Host Routing Multicast Engine (HRME). The idea was to get computers above the TCP/IP layer (e.g. not IP based multicast, see here for the problems with IP multicast) to join up in a spanning tree and distribute information down the tree. By each machine volunteering to redistribute content to every other machine one could very efficiently distribute large amounts of data. I'm sure this all sounds very familiar but these thoughts occurred to me back in 1994. 56Kb modems were state of the art, e-mail was still mostly 7 bit text, the Internet bubble was just getting started and I smelled money in them 'dar' hills.

Continue reading Host Routing Multicast Engine (HRME)

BPEL, TIBCO and trademarking the English language

Issue 202 in the BPEL TC is a demand from Tibco that the BPEL TC change the word 'rendezvous' that is used as the value of an attribute in the BPEL programming language because Tibco has trademarked the word 'rendezvous'. To be clear, trademarks do not apply to 'descriptive' uses and that is exactly how BPEL uses the term 'rendezvous'. So legally speaking Tibco most likely doesn't have a leg to stand on. I do have sympathy for Tibco because one is required to 'vigorously' enforce a trademark in order to keep it. So to protect their trademark they need to be seen to be defending it, hence issue 202. But now people in the group are scared that Tibco will sue them (or their employer) if we don't change the term. Hopefully the group will stand up for the freedom to use the English language and reject issue 202 on next week's call. An even better outcome would be a change in the law that would make it illegal to get a Trademark on a common English word. The fact that Tibco could trademark the word 'rendezvous' and then try to banish its use from technical efforts is insane.


The WSDL 1.1 XML Namespace Screw Up

The official schema namespace for WSDL 1.1 is http://schemas.xmlsoap.org/wsdl/. But, and here is the fun part, the schema for that namespace given in the official W3C WSDL 1.1 note and the schema for that namespace given at the actual XML namespace URL are different. But wait, it gets better. Not only are the two schemas different, they aren't even compatible with each other! I'll give the gory details below but the bottom line is that there exist two incompatible versions of the WSDL 1.1 schema, one in the W3C note and one at the actual XML namespace URL which use the same XML namespace and the same element names. Just to add to the fun the WS-I has officially approved the schema at the actual namespace URL in contradiction to the schema in the W3C WSDL 1.1 note. So now implementers get to pick which industry body they favor since they have competing, incompatible, definitions for the WSDL 1.1 schema. I suppose errors like this make it more understandable why versioning in Web Services is such a disaster.

Continue reading The WSDL 1.1 XML Namespace Screw Up

The Importance of Humility in Extensibility Design

When designing a protocol or programming language the inclusion of extensibility is essentially an act of humility. One is minimally admitting that one's design is not complete and more generally one is admitting that one's design is not perfect. By providing for extensibility one is enabling others to improve and in many cases fix one's design.

Unfortunately it's easy to get extensibility design wrong. Typically such design errors result from assuming oneself or others to be perfect and in that assumption one fails to provide for sufficient extensibility. A rather subtle example of this problem recently came up in the Web Services – Business Process Execution Language Technical Committee (WS-BPEL TC).

Continue reading The Importance of Humility in Extensibility Design

PerfAnal – a simple but workable approach for Java Profiling using hprof on OS X

I have written a bit of Java code that does some financial analysis for me. Unfortunately it takes forever to run, even on my dual proc G5 w/a gig of ram it could literally run for over a day (it's those pesky 5 nested for loops, hey don't look at me, the equation it's solving has 12 variables and using some algebra and domain knowledge I could get it down it down to 5 independent variables but at that point I just had to iterate). Thankfully there were lots of obvious optimizations that I could apply that got the program down to around 4 minutes and then making the program multi-threaded got it down to around 3 minutes. But that is still a while to wait. So I decided I wanted to do some performance profiling.

I use Eclipe so it was natural to look a Hyades but the requirements included the Eclipse SDK which, near as I can tell, isn't currently available for OS X and anyway the whole project just seemed a bit complex and what I needed was really simple. I next tried out jMechanic which looked to be at just the right level of sophistication for my needs. Unfortunately it never seemed to quite run right. I would create a profile, run the program, see some hprof output in the console, etc. but when I tried to view the results using window->show view->other->profiler->etc. I never saw any data. I even got various errors from Eclipse.

I briefly considered using a commercial product but come on, my needs are trivial and the commercial stuff is expensive. So finally I decided to look into hprof directly. This is the performance profiling technology built into the JVM. Hprof is more than powerful enough to give me the level of detail I needed but the output is, to put it kindly, a bit hard to read. After looking around for a hprof viewer I found one that seems to do a pretty good job, PerfAnal.

It's very simple and doesn't have many features but it does a good job of providing a view of what the code is doing. This article gives a very nice overview and got me up and running within about two minutes. The end result? It helped me find some snags in my code (I never realized just how incredibly expensive it is to declare arrays in Java and I had left in some error checking code that I no longer needed) which got my performance down to around a minute. So I'm a pretty happy camper.

Innovation, Premature Standardization and Caveat Emptor

Adam Bosworth's blog had a pointer to an interesting entry in another blog on innovation and standards which itself pointed to another good blog entry on the subject. All three came to the same conclusion – Standards shouldn't innovate. As anyone who has read my rule's of standardization knows, I agree wholeheartedly. And yet, premature standards, standards in areas that are not well understood, keep getting churned out. Why?

Continue reading Innovation, Premature Standardization and Caveat
Emptor

More DVD Fun with OS X

Marina had the idea of sending my father a copy of UNCONSTITUTIONAL. My father returned the favor by sending us CELSIUS 41.11. Ironically enough while both UNCONSTITUTIONAL and OUTFOXED ran fine on VLC but caused my machine to crash on Apple's DVD player pretty much the opposite happened with CELSIUS 41.11. It ran on Apple's DVD player without problem but if I tried it on VLC then VLC got an error that screwed up the sound. In fact, if I ran VLC and then ran Apple's DVD player the sound stayed broken. The only way to get the DVD to play right was to kill VLC and run Apple's DVD player which for the first time didn't crash my machine! I guess Apple must be right wing.

OS X + G5 != DVD Player, but there is hope!

I just got a new DVD, UNCONSTITUTIONAL. I intentionally didn't run it full screen because I didn't want my machine to crash again. Unfortunately that didn't work. After running for twenty seven minutes and fifty seconds my machine died hard. Keyboard, mouse, DVD player, everything dead. The only sound a stuttering from the speakers. The only difference from my previous experience is that a friend told me to hold down the power button for five seconds or more instead of just pressing it the way I did last time. That did work so I didn't have to pull the plug. Of course the point of buying a Mac was to not have to know things like that.

It appears that I'm not alone in having this problem. The previously mentioned thread suggested two possible solutions. One was to turn off one of my dual processors but a number of people said this still caused problems for them. The other was to use a different video player than Apple's DVD player. VLC was suggested. As an experiment I played OUTFOXED full screen in VLC, turned off the sound and went to bed. I came back to my computer the next morning to find it running just fine. So for the moment I have a workaround. But I can't say it's a great work around because the VLC player is no where near as easy to use as the Apple player. Also note that at least on my LCD screen I found switching to video-deinterlace-blend made a big difference when blowing the picture up beyond normal size.

Come on Apple, this is pathetic! The previously referenced thread lists numerous people having this problem and you can safely assume for every person who posts there are many, many people like me who have the problem but didn't post. Just admit the problem exists and fix it already!