Saturday, January 26, 2008

16 Years Ago

As promised before, here is the second part of my "power of two" flashback series of posts.

During the development of a modem hub sixteen years ago, something happened to me, something that touched my geeky soul and left me nostalgic for years, something that have apparently happened to many other people: I have been touched by OS/2.

I mean, touched by:
Sorry, I could not resist. There is still something mythical and magical about this operating system.

I had the chance to develop a system that was receiving chemists orders sent by modems and was analyzing and multiplexing them before sending them to an AS/400 machine. The application was developed in C, in a multi-process and multi-thread manner, with named pipes and semaphores enabled communications. The local persistence database was DB/2. And it was internationalized (French and Flemish).

At all stage of the development, I was amazed how OS/2's memory and threading models were making my life easier. Totally resilient to hard crashes (C has pointers, remember?), inviting to think asynchronously, it was a dream of a programming environment.

Then I switched jobs and started the arid journey in the Valley of the Shadow of Death that started in Windows 3.11 (for Workgroups!) and ended with Windows XP/2003 (the first really solid and well designed OS from Redmond, AFAIAC).

For a while I thought I should be mad at Microsoft for having turned my developer life into such a miserable experience. But in fact I became bitter at IBM and their inane marketing campaigns for OS/2. Their lack of capacity to make a superior OS dominate the market was flabbergasting. This sense of waste is probably what fuels the nostalgia of OS/2 lovers all around the world until now.

In fact, I have been mad at IBM until the redeemed themselves with Eclipse. But this is another story...

Tuesday, January 22, 2008

Loan Redemption

I had my first loan redemption on Kiva today: it is truly great to see that the small business I have lent money to has made well enough to pay it back. I can not wait to re-invest this money and help another developing country entrepreneur!

If you are not already involved in micro credit, consider it seriously. Small entrepreneurship is the fabric that makes a country develop in a stable and durable manner. The few bucks you lend (and get back) is the little help that another person needs to start changing her life, community and, let us see big, country!

Monday, January 21, 2008

Need Some Rest?

If you are looking for a no-nonsense REST framework built on all the good stuff Spring offers, look nowhere else and get a good Mattress.

Despite the pun, this framework is an interesting initiative to watch, as it is a pragmatic (hence partial?) implementation of JSR-311.

Stay tuned and look for the first release and, I am pretty sure knowing the framework author, the upcoming witty logo.

UPDATED 21-JAN-2008: The first release of the framework is now available in Maven's central repository. You want to give it a try!

Wednesday, January 16, 2008


Beautiful British Columbia


See for yourself: I have put my best BC shots on Panaramio.

Big Integers

Bernard Tapie, knowing this first hand, once said:

"If you owe one million to your banker, he holds you. If you owe him ten billions, you hold him."

So, how much do owe your banker, Larry?

Tuesday, January 15, 2008

One Step Further... Dynamism

So the buzz is all about using a mix of strongly and dynamically typed language in our applications. Is this really useful or is this just another hyped concept?

Well. Let us suppose that, while using our favorite ESB platform, we come with the need to invoke some remote EJBs. We would traditionally need to provide the client libraries to connect to our remote application server plus the required interfaces to cast dynamic proxies into something usable.

Now suppose we add JavaScript in the equation. In fact, if we use JDK 6, we do not need to add anything. We simply need to write a simple script that, thanks to the dynamic nature of the language, will not need any of the EJB interfaces to compile. Nor to execute. We will end up with fully functional EJB remote invocations without the hurdle of embarking extra dependencies.

The invocation chain that was dynamic down to the level of the local proxy can now go much further into your code without needing strong typing.

This might sound obvious to you: this means you are already addicted to mixing strongly and dynamically typed languages in your daily practice. Or this might sound to good to be true: then be my guest and give it a try. The only thing that is sure is: this is no hype.

Saturday, January 12, 2008

Direct Kudos

I do believe that DirectX is one of the greatest achievements of Microsoft.

Not only this SDK provided, from the very beginning, a clean and efficient way to develop high performance graphic applications for Windows (anybody remembers WinG?), it is also an bright demonstration of Redmond's giant mastery in the art of backwards compatibility.

Every time I put my hand on a new version of Windows, I run PackAttack, a basic DirectDraw 2D action game I wrote several years ago. The last time I compiled it was in December 2000. If memory serves, it was compiled for DirectX 3. I am flabbergasted to see this game still working with DirectX 9 on Windows XP.

Anybody with Vista out there who would dare trying to run PackAttack and see if the miracle still happens, despite the fact Microsoft is supposed to have lost the API war?

Monday, January 07, 2008

8 Years Ago

Computer is running a very instructive column named "32 & 16 Years Ago". As a blogging exercise, I will do the same but, because I am not that old, with smaller powers of two (8 and 16).

To approach the things I was doing 8 years ago, I thought it would be interesting to see what happened to the domain names that was used in the startup I was involved at that time. For our new line of products, we opted for a Djinn-prefixed family of names, to express the magic of the stuff that was happening behind the scene.

At that time we had:

  • Webdjinn, a pure DHTML RIA platform, with automatic code execution balancing between the browser and the server. It was using an XML based language (that we named ApiML) to describe the application, its components and their behavior. Knowing that this was developed in 1999 and 2000, you can imagine the technical difficulties of developing such a project on the browsers and servers of that time!

  • Datadjinn, a SQL generator that was using a generic XML query syntax (that we named DQML), which was transformed into optimized native database queries. It was speaking a few database dialects and was used for the database connectivity of Webdjinn and of a pure HTML report generator we also built.
I leave to your imagination to figure out what was the fate of these bold endeavors... So what happened to their names? seems to be now used to host a link farm. Boo. had a better fate and landed in the hands of an Autralian "husband, web developer, human" who totally understood the value of the *Djinn pattern, as he created the cmsDjinn moniker for the "perfect Web Content Management System (CMS or WCMS)" he is creating.

Now, that is a bold endeavor!

LinkedIn OSS Context

If you are a user of NxBRE or the Mule JCR Transport and want to connect with me on LinkedIn, please use one of the "fake" positions I have created for that matter, so we can get connected in the right context.

Thank you!

Sunday, January 06, 2008

New Year New Engine!

I am happy to announce the release of NxBRE 3.1.1.

This is mainly a service release for the Inference Engine, which got some bug fixed and simple features added.

See the release notes for more information. Enjoy!

Thursday, January 03, 2008

Sub My Version

We all love Subversion: it is a solid, simple and powerful SCM that is as free as beer on a Super Bowl day. But when Subversion starts throwing a tantrum, the sense of free fall that occurs is really discomforting, to put it mildly.

I know how to find my way out of most of the problems (twiddling the .svn folder usually does the trick), but it is not always enough and not all issues can be solved locally (at least by reasonably educated developers). Indeed, the thing I hate above all is when I need to break the build in order to solve a Subversion issue: when the local files are in such a painful state that a commit followed by an update is needed, crap will happen in the CI server.

Take this simple case for example: extracting an interface of the same name as the source class, while renaming that class. I always do it in the wrong order:
  1. Rename the class (say Foo to FooImpl),
  2. Extract interface (Foo out of FooImpl),
  3. Bang! Subversion wants to delete Foo from the repository (from step 1) and add a new version of it (from step 2).
Why do I have to care about SCM when performing such a trivial operation? Read Larry O'Brien suggestion about this.