Jeff Mesnil
Weblog · About

Thank you Microsoft, you made my day

February 8, 2005

I wanted to have a closer look to the Enterprise Architectural Space which is used to organize patterns on patternshare.org.

So I decided to download the PDF version to read it on my powerbook.

I really laughed out loud when I saw the system requirements to view the PDF:

System Requirements
* Supported Operating Systems: Windows 2000, Windows Server 2003, Windows XP

So I now know the truth: All your PDFs are belong to Microsoft...

At least, Microsoft was kind enough to let me browse their site with Firefox...

JOnAS is J2EE certified

February 1, 2005

Congratulations to the JOnAS team and too all ObjectWeb guys!

JOnAS certification was made possible by a collective effort from a lot of ObjectWeb projects including the two I worked on: JORAM (for JMS) and JOTM (for JTA).

It's a huge achievement and it will definitely help to broaden JOnAS adoption and other ObjectWeb technologies (C-JDBC and ASM are really cool).

Middleware'05 at Grenoble

January 27, 2005

I noticed today that the Middleware'05 conference will be held in my sweet little town of Grenoble (France) from November 28th to December 2nd.

I'm looking forward to that one. It'll be a great opportunity to talk again will all the great guys I met at HPTS'03.

Lilac Wine from Jeff Buckley

January 25, 2005

I lost myself on a cool damp night
I gave myself in that misty light
Was hypnotized by a strange delight
Under a lilac tree

I made wine from the lilac tree
Put my heart in its recipe
It makes me see what I want to see
And be what I want to be

When I think more than I want to think
Do things I never should do
I drink much more that I ought to drink
Because it brings me back you

Lilac wine is sweet and heady,
Like my love
Lilac wine, I feel unsteady,
Like my love

Listen to me, I cannot see clearly
Isn't that she, coming to me
Nearly here

Lilac wine is sweet and heady,
Where's my love
Lilac wine, I feel unsteady,
Where's my love

Listen to me, why is everything so hazy
Isn't that she, or am I just going crazy, dear

Lilac wine, I feel unready for my love
Feel unready, for my love.

People, Process, Product

January 19, 2005

One of the key issue in software development (but not restricted to that field) is to understand that the success of a project depends (among other things) of the balance betweeen the 3P:

  • People
  • Process
  • Product

Your project can be successful only if you find a correct balance between the 3P.

I see the People as the chaotic part of the balance. By chaos, I mean creativity without reins, wild ideas. Life is born in chaos, ideas and innovations happen when one think outside the box. But you can't build anything from the chaos. It needs to be tempered.
The Process is the order part of the equation. Order can be be a good thing and is essential for any contruction but it can also be a hinderance to your success. Too much order makes things rigid, without any movement. It slows things down and ultimately hamper the creativity of the People.
And the Product... well, my analogy to chaos and order shows its limit... Let say that if you have a good balance between People and Process and a crappy Product (or a good Product based on a crappy idea), it won't be a success.

As a developer, I see myself like a painter and I like to experiment a lot and let my imagination goes wild.
I want to make a good Product that I can be proud of and I understand that the Process is an invaluable asset to help me stay focused on what is important for the Product.
However, when I feel that the Process comes as a barrier between my work and the Product, when I feel that I'm less important than the Process, there is a problem. If I believe that the Process is there to prevent me to make decisions and think by myself, I feel robbed. If I see that the Process is too heavy for me and that there is no advantage at my own level to use it, I'll try to circumvent it (even if I try very hard not to...).

The Process can have a desastrous influence on the People and create a vicious circle where the People will work against the Process making it counter-productive.
But it can be different: People can also increase the value of the Process to make it better for them and the Product. If the Process is seen as an asset by the People, you can follow a virtuous circle which helps to reach success.

What I think is important is to have ongoing immediate feedback between the People and the Process to create this kind of virtuous circle.
If I understand that the Process helps me to create a great Product, I'll accept that from time to time it is annoying or too heavy for my taste. On the other hand, if I can't see how the Process helps me to create a great Product, it's up to me to give feedback to improve it or I'll be tempted to bypass it and will only make things even worse...

Putting some order in chaotic wiki

January 19, 2005

By its very own nature, a Wiki is a bazaar and it works great like that. But from time to time, you neet to get some order from that chaos.

Let take the example of a big corporate wiki with thousand pages and hundred users. Most of the pages are related to a few other pages only and each users modify and read only a few pages. More than often, the wiki ends up with a lot of related information disseminated on hundred pages with no apparent navigation between them. Given that users deal only with a small subset of this huge wiki, they may not be aware that potential useful information is sitting at other places.

To build some order in this chaos, a very useful feature implemented by most wiki is backlinks. To put it simply, a backlink on a page gives you a list of all the wiki pages pointing to that page thus enabling a backward navigation.

For example in the c2 wiki, every page has a backlink which is the title of the page. If you click on that title, you get a list of all wiki pages which points to that page. Other wikis present that differently (in Twiki, it's a Ref-By link) but most wikis I encountered got that feature.

You then can use some naming rules. For example you can have (possibly empty) wiki pages whose names ends with Category (e.g. DevelopmentCategory, XmlCategory) and every pages related to that kind of category can add a link to one of these category pages. E.g. on a page documenting XML binding, I would put a "in XmlCategory" at the beginning of the page to create a link to the XmlCategory page. An user interested to find information about XML has just to use the backlink of the XmlCategory page to find a link to my XML binding page.

Basically with this very simple naming rule, you can categorize your wiki pages so that you can then browse the whole wiki through its backlinks.

To make it even better, I can create a CategoryCategory page which has a backlink to every other category pages. You have then an entry point to browse all the wiki based on these categories.

What is great with that approach is that users who write the pages and are the best to categorize it can help other users to find the information very easily.

As an aside, when I wrote this entry, I realized that there is a recurring pattern in the way I want to organize my data. I don't organize my data anymore (a.k.a all in one place and no deep tree structure) but rely more and more on classification with tags, labels, categories to find it. This behavior is occuring with my mails, bookmarks, wiki pages, pictures,... But more about that in another post.

Simple del.icio.us bookmarklet

January 19, 2005

It's so simple, it's not really a bookmarklet...

I added a bookmark in Firefox which points to http://del.icio.us/jmesnil/%s and added a keyword d for it.

So now when I want to go to my del.icio.us java bookmarks, I just have to type d java in the address bar to go to it.

If I want to go to my java and jms bookmarks, it's d java+jms.

<disclaimer>
I'm a total keyboard junkie. Too much emacs has definitely hurt my brain.
</disclaimer>

Eclipse Working Set in 3.1M4

January 10, 2005

A cool new feature in Eclipse 3.1M4 is that you can organize projects by working sets.

I've got a lot of projects in my workspace which relates to different developments. My package explorer view is quite cluttered by dozens of fine-grained projects.

To improve readibility, I created different working sets (one for each related development) and I show them (Show > Working Sets).

When I focus on a particular development, I Go Into the specific working set and I only see the projects of this given working set.

Not groundbreaking but definitely useful.

A del.ici.ous browser-based desktop application

January 7, 2005

Following my last post on browser-based desktop applications, I prototyped a little application to play with these ideas.

I'm a big fan of the social bookmarks manager del.icio.us which enable you to bookmark urls and categorize them. However, all your bookmarks are available to everyone else (it manages social bookmarks after all). But, from time to time, I also need to bookmark urls that I don't want to share (e.g. private ones or professional ones which could give too much hints to competitors).

So I bookmark these URLs with my browser. But they can not be categorized like del.icio.us ones (folders don't help). So when I want to check bookmarks for a given topic I've to look in two different places and interfaces (the web bookmarks toolbar and del.icio.us).

I prototyped a simple application with the following requirements:

  • keep a private list of bookmarks

  • categorize them like in del.icio.us

  • aggregate private and del.icio.us bookmarks

  • display them in the same interface

  • search categories for both private and del.icio.us bookmarks

The prototype is a browser-based desktop application (i.e. a standalone application which runs its embedded HTTP server and is displayed in the browser).

The application keeps a list of private bookmarks and aggregates them with del.icio.us ones (retrieved with del.icio.us REST API thanks to the delicious-java library). In fact, from the user interface, it is quite similar to del.icio.us interface. The only differences is that private bookmarks are automatically categorized with a private tag. (As an aside, I first had two type of bookmarks: public and private ones. But as I coded, I realized that I could used the bookmark own tags to categorize them as public or private...).

Special urls (like for displaying bookmarks for a set of categories) redirect to the application which filters both del.icio.us and private bookmarks.

Here some screenshots (I haven't care much for the layout but it is based on del.icio.us):

del1

To save a bookmark, type its url, its description, its (optional) extended description and list of space-separated tags. To save it in the application ( i.e. on your desktop), tag it as private. Otherwise, the bookmark will be saved on del.icio.us.

del2

If I look for all the bookmarks with the osgi tags, I see that some of them are categorized as private. They're stored on the application and not on del.icio.us (see my del.icio.us OSGi page to see the differences).

As you can see on the screenshots, the only differences is that private bookmarks are categorized with a private tag.

I haven't reproduced all features provided by del.icio.us but this first prototype is functional enough to help me vizualize what browser-based desktop applications could be.

I see this prototype like the equivalent of Google Desktop Search but for bookmarks. Both application aggregates local and web data and displays them in a consistent way in the browser.

As for the technology I used, it's based on the OSGi framework and its HTTP service (I used Knoplferfish implementation). The cool thing is that everything can be delivered as a standalone application that sits anywhere on your hard drive. You just start it and point your web browser to http://localhost:8080:. It's also possible make it a Windows or Mac OS X service with a cute little icon in the tray.

And, being based on OSGI, you can also use it from your PocketPC!

One other cool feature of this application is that since it sits on your own machine, you can also bookmark local files and categorize them.

For example, I've a local version of the OSGi specification in PDF file. I bookmarked it with my application with the url file:///Users/jeff/doc/...../r3.book.pdf. So when I want to see all my bookmarks related to OSGi (http://localhost:8080/jmesnil?tag=osgi), I've got both web url and local documentation (URLs starting with file:// are automatically tagged as private and local).

del3

The only problem is that you can't open the files from their URLs (I already blogged about it but I haven't find a correct solution yet).

There is nothing rocket science in this prototype but there is some potential for such browser-based desktop applications to integrate in a consistent way desktop data with the whole web.

Accepting file:// URL from localhost HTTP server

January 7, 2005

I have got a stupid problem: I have a HTTP server on localhost which serve web pages containing links to file:// URLs.

Firefox refused to open these URLs (which is completely understandable to avoid security holes). In fact, you can't load them by clicking on the link but you can load them by dragging the URL to Firefox address bar.

If I want to load them by click, I can bypass Firefox security by setting security.checkloaduri property to false (in about:config preferences page). However it will also expose this security hole to any HTTP server which is clearly not acceptable. What I'd like is that Firefox accepts to load file:// URL from http://localhost only but not from any other HTTP server.

I can't find documentation to enable this... I need to look for another solution to this problem...