Soirée SOA au Riviera JUG le vendredi 10 avril 2009

April 3rd, 2009

Le Riviera JUG organise sa deuxième rencontre le 10 avril sur le theme SOA, si vous êtes intéressé vous trouverez plus d’information sur cette page.

Marseille JUG

April 2nd, 2009

Depuis quelques mois une folie créatrice de groupes d’utilisateurs Java (JUG) envahit la France et un JUG se monte naturellement dans la région de Marseille. Si vous êtes intéressé de quelque manière que ce soit, vous pouvez prendre contact avec l’équipe du JUG.

How to mount a remote AFP drive on AppleTV Take Two

January 11th, 2009

I suppose that you have already installed NitoTV on your AppleTV as you need it to get remote drive access (note that it’s probably possible to do without it by doing everything through SSH).

The AppleTV with a native firmware above 2.0, does not have the AFP protocol in its recovery partition. So even though you upload the MacOSXUpdCombo10.4.9Intel.dmg on the AppleTV and create the recovery.dmg it will not give you access to the AFP protocol. The main reason is that the recovery.dmg image does not contain it! But if you would have an AppleTV with a 1.0 firmware it would have worked since it’s still in the recovery partition (it makes sense, doesn’t it) ?

Someone found a solution to workaround this issue, and I think it’s interesting to blog about it, since it’s in a forum post on the atvflash forums (it’s also like a note to myself, in case the post would disappear). So here is verbatim the solution:

  1. Do a factory restore of the ATV, update the firmware to the latest version and then run the patchstick again. You may be able to uninstall NitoTV but I couldn’t get this to work after a failed smart installer attempt. A freshly hacked box seems to be the most reliable method.
  2. On ATV: SSH in with terminal and enter sudo dd if=/dev/disk0s2 of=recovery2.dmg bs=1m
    This makes a recovery image of your Take 2 recovery partition.
  3. On the Mac: sFTP into the ATV, I used an app called Fugu to do this, and download recovery2.dmg to your desktop.
  4. On the Mac: Open recovery2.dmg. Once it’s mounted you’ll see a number of files in there but the one we’re interested in is called “OS.dmg”. Rename this to anything you want.
  5. On the Mac: Copy in the 1.0 recovery image you have managed to obtain. Mine was called OS-dot-DMG 1.0.dmg and the md5 = 55b909196952ff72c93aaf3553cf661e
  6.  On the Mac: Rename the image file you have just copied to “OS.dmg” and then unmount recovery2.dmg. You will now have an image of your ATV’s recovery partition called recovery2.dmg but the OS.dmg file contained within has been replaced with the 1.0 version.
  7. On the Mac: sFTP into the ATV and upload the edited recovery2.dmg to the Documents folder. Then rename this file recovery.dmg
  8. On the Mac: sFTP into the ATV and upload MacOSXUpdCombo10.4.9Intel.dmg to the Documents folder.
  9. On ATV: With the remote navigate to the DVD/NitoTV menu and select Settings > Install Software. I then ran ‘Install Perian’, ‘Install mPlayer Codecs’ and ‘Install Turbo’s kextloader’ in that order. This probably wasn’t necessary and most of it is probably already there but worth doing just to be safe.
  10. On ATV: Once all this is done you’re ready to run smart installer.
  11. 11) Unplug the ATV, plug it back in and then you should be able to mount the box on your mac and see your shares on the ATV. I’ve found that streaming video from your Mac via afp in NitoTv/DVD is a bit choppy. Streaming through the “Files” menu seems much smoother.

The only thing I need to add is that the so called “OS-dot-DMG 1.0.dmg” is the original firmware of the AppleTV that you can obtain if you own an AppleTV Take One.

The original forum post can be found here and all the credits go to Scrubadub and Magic, whoever you are.

Nikon D80 HDR bracketing tutorial

January 6th, 2009

Recently I dived into High Dynamic Range photography (also known as HDR) using my Nikon D80.

My interest for the HDR technology is the capability to produce images that would be almost impossible to take with a digital camera. An HDR image reveals details in the light and dark areas of your images.

HDR

HDR

For instance, on this picture we can see the details in the clouds but also on the rock and it would be very hard to achieve it without HDR.

This tutorial does not explain how to create an HDR image because there are already very good tutorials on that subject, for instance you can read Vanilla Days tutorial, it is based on the Photomatix software but it does not hurt and you could use another software.

I will rather focus on explaining how to configure a Nikon D80 to leverage a built in feature called Auto Exposure Bracketing (AEB) that makes easier the creation of HDR images. I found all the relevant informations in the user manual but they were not clear enough and I had to spend some time on it in order to get it effective.

HDR imaging works by combining the same image with different exposures into a single image using an appropriate software. No need to emphasis on the fact that the images should rigorously be the same as possible. It can be done manually by shooting several times the same pictures with different exposure time and keeping the same aperture size, but it has at least two drawbacks:

  • you need to physically touch the camera to change the exposure and it could change slightly the different images
  • it take time to reconfigure the camera and your image may change during that time (clouds may move for instance)

The Nikon D80 has a feature called bracketing that allows to shoot three times the same pictures with the same aperture but with different exposures in that order:

  1. The normal image
  2. The underexposed image
  3. The overexposed image

Here is my howto for configuring the D80 appropriately:

Configure the image quality

The first step is to set the image quality to RAW. You can change it by pressing the QUAL button and rotate the the main command until you get RAW.

Configure the ISO sensitivity

Set the ISO sensitivity to the lowest value you can afford, for instance ISO 100 works well most of the time for me.

Configure the focus mode

Focus mode should be configured to manual (perhaps it’s possible to use automatic but I never tried).

Configure the mode

Set the D80 into Aperture-priority mode (A). Exposure bracketing works with that mode.

Configure the bracketing

Press the BKT button and rotate the main dial to chose 3 shoots and the sub-command dial to choose the bracketing increment with the value 2.0EV. At this moment you configured the D80 to change the exposure of the photo each time you shoot. Therefore the first picture you take is a normal one, but the second one will be underexposed by 2EV and the third one will be overexposed by 2EV. The forth one will be exposed normally.

Configure the shooting mode

The final step is to configure the shooting mode to continuous.

Et voilà!

The next time you will take a picture keep the finder pressed and the D80 will take the three shoots for you. Now it’s up to you to make great HDR pictures!

I’ll be at Devoxx 08

December 8th, 2008

Long time no blog, just a quick note that tell you that I will be at Devoxx 08 as a representative of eXo in the exhibition center.

See you there!

The WebOS Vision

October 15th, 2008

The initial vision

When I was a JBoss contributor, we used to name the infrastructure kernel as WebOS, it was Marc Fleury’s vision I think. Actually for many years the banner of our source code was:

/*
* JBoss, the OpenSource J2EE webOS
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/

It may sound a bit marketingish but it is a simple and powerful concept that was pioneered by JBoss in 2000 and followed by a large crowed since then. The fundamental idea is to provide a system for managing services. That system can be simplified as the equation WebOS = deployer + registry + controller , I won’t go farther in the gory details. Today JBoss as rewritten from scratch the system as JBoss Microcontainer, we assume that it is as of today the most complete system and will be for many years.

So JBoss Microcontainer provides a runtime for your services, do you think it is sufficient ? that would surely work out if you would use services the way we used computers 30 years ago (or maybe 40) with a shell as unique user interface.

Toward a more complete vision

To complete the picture we need an infrastructure to deliver an user interface that is adapted to the web and that’s our business at eXo. What we provide can be simplified as WebOS = deployer + registry + aggregation + identity.

The deployer takes care of deploying visual components such as portlets or widgets. Both are connected to your service infrastructure but in a different manner. Portlet adapts your existing applications (JSF, Tapestry, Struts, et…) to the portal world. Widgets are more stateless and access services through Rest. Components are registered in the registry. Nothing really fancy here.

The aggregator and identity are the real value add

The aggregator provides rich front end capabilities to deliver the user interface adapted to your needs based on flexible layouts and skinning. the Ajax technology came to the rescue a few years ago and is now naturally involved to improve the end user experience. It comes in two flavors, the classic portal and the WebOS portal (here literally an operating system like OS X or Vista).

The identity part takes care of linking your existing user back-end to the portal. It integrates the profile and the various roles of the user (I am not talking here about the social aspect of the user identity as it is out of scope of this blog, we’ll have more announcements about that soon).

The vision

The vision we have sketched so far is almost complete. Our WebOS is able to deliver services and applications to your users, but it comes as an empty shell. To make it more sexy it would be nice to have applications to deploy in it. It is also what eXo delivers as professional and powerful application products  that comes bundled with our offering providing a full fledged WebOS solution.

What’s new and cool in Portlet 2.0

September 18th, 2008

I just made my presentation available on SlideShare!

Portlet 2.0 @ JavaZone 2008 18th of September

September 8th, 2008

I will be speaking next week at JavaZone 2008 about Portlet 2.0 aka JSR 286. The talk title is “What’s new and cool in Portlet 2.0″ and it’s about the new features in the JSR 286 specification. I’ll introduce the new key features of the spec with demonstrations.

My session is on Thursday 18th of September 2008 at 3:45 pm. You can find more information on that page. I’ll be there during the full event so if you want to meet and have a drink, it will be with great pleasure.

The future is so bright…

September 5th, 2008

…that I almost need my shades.

eXo Platform SAS announced officially today that I am now part of the eXo Platform crew as Portal Product Manager.

Massive mail import in GMail

August 25th, 2008

Recently I had to archive a consequent number of mails into GMail. I don’t want to keep those mails in my Mail User Agent (Mail.app), yet I want to be able to search and retrieve any single mail. Of course I’m keeping an mbox version of those mails but once it’s in an mbox, it’s kind of dead because you cannot easily read one mail or search the mbox.

I considered several solutions and the simplest I could find is to dedicate one GMail account for that purpose. The only drawback is to have internet access but I’m fine with that. In addition the IMAP support provided by GMail allows to do that without any hacks.

Once my special GMail account was created, I started to use my mail client to copy the messages in dedicated folders in the archive account. It was working fine for a small number of messages like 5000. Some of my mailboxes have way more messages, like 60,000. Above 5000 messsages, it becomes a nightmare for two reasons:

  • The mail client synchronizes with the archive account which slows down the whole process.
  • Network failures are more likely to happen and make the whole process very fragile. When you have a network failure you don’t know how your mail client will hold the resume.
I started to look around for solutions but I did not find something that would work out well for me. So I started to create my own solution, that would just do the job. Obviously I used Java as it offers all the low level API and frameworks to build the solution:
Then I wrote a few classes using the above frameworks to perform the massive import. It turns out to work very well and deals with network failures when it happens. I won’t make an open source project because I don’t have extra time to invest in that, however if someone is interested in getting the source code, I would give it as it is.