Category Archives: archive

Articles written in 2003.

Share the article!


I was driving to work the other day and I came to a shocking conclusion, I had accidentally patented Aspect Oriented Programming (AOP)!  Actually the kind of interception based dynamic AOP.  Yes, the kind of AOP that JBoss Group LLC is so actively promoting.  Intrigued? Well read on, here’s my story.

I started working for IBM as a consultant in the mid 90′s, I was hired by IBM because I had a special skill, I had actually developed programs using a class library from an obscure company called StarDivision.  Years later StarDivision is purchased by Sun, and that libary becomes the basis of what we know now as OpenOffice or StarOffice. 

Well one day BusinessWeek publishes an article about IBM’s main excursion in e-Commerce.  There’s a screenshot of an IBM project with a caption that’s identical to what we were buiding at the time, unfortunately that wasn’t a screenshot of our project!  A few days later, mass reorganization!  I was moved now to developing a class library for a “subsumption and constraint based” engine. 

We were essentially tasked with redesigning an existing Lisp based implementation and porting it to C++.  We spent several months in design sessions and struggling to make Rational Rose do round-tripping correctly.  One design problem was that we needed to dynamically change the way the knowledge engine checked the semantic correctness of each operation.  That’s when I came up with my idea, every client talks to a proxy which delegates to chain of command objects that can be dynamically configured.  A simple idea, a play with design patterns, a decent solution.

Years later after I had left the project for another IBM project. One day I’m told that my name is part of patent that’s being filed.  See in a big company like IBM, it’s imperative that a patent be filed for any product that gets commercialized.  So what they do is dig up anything “innovative” about a software design, phrase the design in terms of hardware and file a patent.  It turns out, my design was worthy of such “recognition”.

The patent application goes through the process and is eventually awarded.  For my efforts, I get rewarded with a “night-out-in-town”.  My wife and I spend that on theater and dining at the “Windows of the World” restaurant at the WTC.  The Broadway show has been shutdown, the restaurant obliterated, but the patent lives on.

That’s my story, a story played thousands of times every year at IBM. 

Share the article!

Java is a Language for the Masses

Share the article!


Matt Quail writes about the new complexities of JDK 1.5 extensions.  He points to this blog which quotes:

The real point is that LFSPs (Language for Smart People) have a much greater support for abstraction, and in particular for defining your own abstractions, than LFMs (Language for the Masses).

Half a year ago there a couple of bloggers made the recomendation of adding Hygienic Macros into Java as an alternative to adding language features piecemeal.  We received this response from Gilad Bracha, the resident Computational Theologist at Sun.

Thanks for the suggestion. Yes, we do know what macros are, and we may have even heard of Lisp. Seriously, some formulations of macros are well structured enough to prevent the onerous kinds of abuse that have given macros a dubious reputation in the C culture.Nevertheless, we don’t plan on adding a macro facility to Java any time soon. A major objection is that we do not want to encourage the development of a wide variety of user-defined macros as part of the Java culture.

He goes on further to explain what he means by Java Culture:

The advantages of Java is that it easily serves as a lingua franca – everyone can read a Java program and understand what is going on. User defined macros destroy that property. Every installation or project can (and will) define its own set of macros, that make their programs unreadable for everyone else. Programming languages are cultural artifacts, and their success (i.e., widespread adoption) is critically dependent on cultural factors as well as technical ones.

We are catering to the Java culture, while trying to manage things well on the technical side at the same time. In general, once can contrast the Scheme-like philosophy of using a small number of very general constructs, with the more mainstream approach of having a great many highly specialized constructs, as in C or Modula style languages.

Java is clearly in the latter camp. Most Java developers are happy to have dedicated, narrowly focused solutions that are tailored to a specific problem. I am keenly aware of the drawbacks of such an approach, but I don’t see it changing very quickly.

A little while later William Grosso puts together a Share the article!