Thursday, July 17, 2008

Comments subscription

I just realized that I wasn't notified when people were posting comments on my own blog...My apologies to all those that left a comment on this blog if I didn't reply to you :-). Of course I enjoy everybodys comments so keep posting!

I'll go fix that right away.

Saturday, July 5, 2008

The Neo FreeRunner is out!

It seems that the cellphone I was waiting for is finally out. The Neo Freerunner is the first phone that runs entirely with open source software and on open hardware. Its has about the same features as an iphone and its price is $399. It runs the openmoko platform, which is nothing else than a linux distribution for cell phone.

I will wait a few weeks to read some reviews and see what people think about it. And if it's positive, the freerunner will be next on my shopping list :-)

Monday, May 19, 2008

Woodstock or Icefaces?

I recently ran into a tutorial on the icefaces JSF components and it seems to be an interesting technology. I like the fact that they use ajax push for some of there functionalities. Drag n drop and other visual effects seem to be really attractive too, but I'm concern about the overall stability and usability of the toolkit. As I'm developing and maintaining a project that uses the woodstock JSF components, I need stability.

While signing up on IceSoft website to be allowed to download icefaces, I noticed a few usability errors. IceSoft website makes use of Icefaces. Basically, the form where you enter your name and all that uses ajax to autovalidate its content. That sounds like a good idea. The problem is that it drops the content of the form when it receives an ajax update. That means that what you type between the moment when the form decides to run an ajax validation and the moment where it receives the result of this validation magically disappears while you are typing.

That's the kind of usability bugs I cannot afford in my application so I think I will wait before I give a try to icefaces.

Sunday, March 30, 2008

OOXML's vote at the ISO, the results should be published tomorrow

Yesterday was the last day of the vote for OOXML's approval as an ISO standard. The different organizations had until Saturday night, to submit the result of their vote to the ISO committee. This is a big deal as numerous governmental organization rely on the ISO to choose the standards they should use. Of course, considering the poor quality of OOXML, it wouldn't make sense to me to have it recognized as a standard. OOXML is microsoft's format and nothing else. It hasn't been designed by an open consortium with the goal of creating an open file format that will suit the needs of people. It has been designed by Microsoft's employees with the goal in mind that Microsoft needed to have their file format listed as a standard so that they can keep selling Microsoft Office to as many people as they can.
The results of the vote should be published in the news tomorrow. I'm really looking forward to that.

Tuesday, March 18, 2008

I'm back online!

So I guess I spent a total of 2.5 hours on the phone with verizon. I wanted them to send a technician to my place so that he can fix the phone plug in my wall. I thought that was the reason why internet wasn't working in my new appartment. Yesterday while I was passing by the modem I realized that the light was green and that my internet connection was actually working....I'm curious to see if verizon will ever send me the techician :-)
Anyway, long story short, I'm back online! <:o)

Friday, March 14, 2008

MonoDevelop 1.0 released

Congratulation to lluis and his team at Novel for the long awaited release of MonoDevelop 1.0. The release notes are available here. I don't have much time to test it right now but that's definitely something that gnome lovers will want to check out.

Wednesday, February 20, 2008

Game Developper Conference

I'm leaving tomorrow morning for San Francisco, where I will attend the Game Developper Conference on Friday. I'll spend the week-end there, and I will meet with some people I'm working with at the Emergency Operation Center of SF. I should be back on Wednesday with maybe some interesting things to blog about :-)

Thursday, February 7, 2008

Some progress on gnome-do

So I'm moving along on replacing gnome-do's addin system. Today I added an entry in the menu that opens mono.addins addin manager. I think that it's about the only graphical feature that users will see when using the new plugin system. Most of the work is on the internal behaviour.
Porting existing plugins to the new addin system will be easy. It's just about creating an xml file that describes the addin, and embed it as a resource in the dll.

Now I have to clean up the code and fix a certain number of bugs. I'm still far from being merge-ready. The addin manager window cannot be moved and steals focus to any other application. I also have to set correctly the folder from which addins are read.

For those that cannot wait, I added a screenie :-). If it looks familiar, it's because the addin manager is the same that's used in tomboy, monodevelop or any application based on Mono.Addins.


Wednesday, February 6, 2008

Hacking on gnome-do

So I found that the other day and I found it a really cool app. gnome-do is the equivalent of mac's quicksilver to gnome, written in C#. It offers a convenient plugin system that allows anybody to create new actions and itemSources. As a real geek, I couldn't help but reading the source code, and realized they were not using Mono.Addins.
As I had some experience with mono.addins and am familiar with C#, I decided to start hacking a bit to improve gnome-do's plugin system. A few lines of code later, I already started to have something up and working so I published it on launchpad.

It's the first time I use launchpad and bazaar, and I already really enjoy it. The concept of branches really makes it easy to contribute to a project and fits verry well with the opensource development model.

Anyway, there are chances that other posts will follow on gnome-do :-)

Sunday, January 27, 2008

Petition to get better via drivers

There is a new petition to ask VIA to improve their linux driver here.
My take on that? It's a great initiative, but the best way to convince a company is to vote with your wallet. That shows companies that there is a potential market and will make them invest more in this market. So if you like linux, purchase a computer with linux-preloaded like dell offers. And if you want a double boot windows/linux, still purchase a linux preloaded laptop and purchase your windows copy on the side. The more people will purchase linux preloaded computers, the more companies will invest energy to make their hardware works well under linux, the more people will be attracted by the linux preloaded computers, the more......well, you got my point :-)

Tuesday, January 22, 2008

Dynamic faces not working in Netbeans 6.0 (Update: there is a fix available!)

There is a nasty bug in the woodstock components shipped with netbeans 6.0, that makes that dynamic faces just doesn't work. If like me, you enjoy refreshing parts of your JSF pages using AJAX, you will see that DynaFaces.fireAjaxTransction() makes your components disappear, instead of refreshing them. The bug has been reported here. So let's hope it gets fixed soon.

If you are just trying to refresh a simple component like a label, have a look at the woodstock documentation (Help->JavaDoc References->Project Woodstock 4.1 Tag Library). You will see that some components have a javascript refresh() method that can refresh them using AJAX.

Friday, January 18, 2008


JPA and JAXB both provide a way to annotate your java classes to tell how they should be serialized. JPA annotations defines how your class is mapped to the database, and JAXB annotations define how your class is serialized to XML. But is it possible to have both annotations on the same classe, to be able to convert your data from the database, to java object, then to XML or any combination of the 3?

Well yes it is, and it works pretty well :-)
Here is what your code will look like:


@Table(name = "car")

@NamedQueries({@NamedQuery(name = "Car.findByCarId", query = "SELECT c FROM Car c WHERE c.carId = :carId")})

public class Car implements Serializable {
private static final long serialVersionUID = 1L;


@Column(name = "car_id", nullable = false)

private Integer carId;
@Column(name = "brand")

private String brand;
@JoinColumn(name = "person_id", referencedColumnName = "person_id")

private Person personId;

public Car() {


public Car(Integer carId) {
this.carId = carId;


public Integer getCarId() {
return carId;


public void setCarId(Integer carId) {

this.carId = carId;

public String getBrand() {

return brand;

public void setBrand(String brand) {

this.brand = brand;

@XmlElement(name = "owner")

public Person getPersonId() {
return personId;


public void setPersonId(Person personId) {

this.personId = personId;

There are several things to notice about that:

1)The JPA annotations decorate the attributes where the JAXB annotations decorate the bean properties (...the getters if you want...)

2)There is a catch when you have bidirectional relationships. XML doesn't allow bidirectional relationships (You cannot have element A in element B and element B in element A :-)). So if you convert from XML to Java, then try to persist the object in your DB, you will see that something goes wrong. So just make sure that you restore those missing relationships in your java object (eg, if!=null, then car.owner shouldn't be null) and everything will work fine.

2 things to remember when using JPA

Java persistence API offers a great Object Relational Mapping framework to develop java application. In combination with a wizzard that auto-generates the entity classes from your databse, it makes an easy, clean, and quick way to store your data in a database. Unfortunately, some or the errors you can get with JPA are not always easy to debug. So here are the two lessons I learned while spending hours trying to debug my code:

1)If you have a bidirectionnal relationthip (annotated with a @mapped_by), it is your responsability to make sure that the two fields that reference each-other contain what they should. I say it again, it is YOUR responsability. And if it doesn't, and you try to persist your object, you will probably get a violation constraint in you database, without JPA telling you that you messed up.

2)If your table has a field table_id, which value is auto-generated by your database, make sure to annotate the mapping java field with @Id and @GeneratedValue(strategy="IDENTITY"). If you don't, everything will work fine when you just persist your table, but things won't work when persisting the table in cascade.

Wednesday, January 9, 2008

The FSF is looking for new members

The free software foundation is running a campaign to recruite new associate members.
The free software foundation is dedicated to promote user's right in the IT world. Some of the their most famous activities include the GPL license, the GNU project, freebios or gnash. They also have several campaign to eliminate DRMs, promote ODF or ogg and in general, point out freedom issues as they appear.

So if you want to participate or help encouraging all those good stuffs, consider joining in :-)