I am Joannes Vermorel, founder at Lokad. I am also an engineer from the Corps des Mines who initially graduated from the ENS.

I have been passionate about computer science, software matters and data mining for almost two decades. (RSS - ATOM)


Entries in practices (34)


Continous migration in software development

New (and soon to be deprecated) technologies are just flowing in the Software industry. Some people pointed out that you can't stop improving your product just to keep the pace with the release flow (that's the fire and motion theory). Yet, being an ISV, your options are quite limited. You have to rely on the latest (yet stable) technologies in order to maintain a highly competitive productivity.

Rewriting from scratch your application to support the latest Foo.NET release is a bad idea; no question asked. Yet, it must be taken into account that

  • getting people interested (worse, training them) on deprecated technologies (let's say Classic ASP) is both hard and depressing.

  • not beneficing from the latest tools means lower productivity. Ex: Classic ASP => ASP.Net 1.1 => ASP.Net 2.0, each new version being a huge time-saver compared to the previous one). has been existing for less than a year and, we have already performed quite a lot of migrations.

  • SQL Server 2000 => SQL Server 2005

  • ASP.Net website => ASP.Net web application

  • No AJAX => ATLAS (betas) => ASP.Net AJAX Extensions

  • NAnt => MsBuild (when the MsBuild Community Tasks have been released)

  • VS 2005 Setup Project => WiX 2.0

  • Command Line => PowerShell (for our command-line tools)

  • IE6 => IE7 and FF1.5 => FF2.0 (for javascripts and CSS)

Among the next planned migrations

  • Visual Studio 2005 => Orcas

  • WiX 2.0 => WiX 3.0

  • Inline SQL in C# => LINQ

  • NDoc => SandCastle

  • NuSoap => PHP5 Web Services

  • osCommerce 2.2 => osC 3.0 (currently alpha) => osC 3.1 (for the plugin framework)

Our processes at Lokad involve continuous migrations toward new technologies. Upgrading take time and efforts, yet this process seems quite necessary to maintain optimal development conditions.


WetPaint is far too expensive, migrate or die

WetPaint is a hosted wiki solution. Although Wetpaint still lacks from "professional" wiki features like being able to insert custom HTML or scripts, it's a nice, simple wiki application with a great look&feel. I have triedWetPaint, I did even use it for while for; but looking back, it turned out to be a really BAD move. I have finally manually removed all the content from my wetpaint wiki (because there is no "Remove my wiki" feature available); and I have migrated all the content to, a wiki powered by ScrewTurn.

It can be argued that moving to ScrewTurn may not be the optimal solution (they are tons of open source wiki software available out there, see the wiki matrix ); but moving away from Wetpaint is the only solution that can be considered if you fall into the WetPaint trap. Yes, to all the people using WetPaints, I strongly suggest to re-consider and start thinking about moving your wiki somewhere else.

WetPaint owns your traffic

For those who thinks that wetpaint is a "free" wiki, it's not. It's neither free as in "libre" nor free as in "free beer". Wetpaint inserts Google Ads in your wiki without providing a paid subscription plan to remove them. Let's look at the problem this way: if the traffic of your wiki stay low, then any $2/month hosting solution will be sufficient to host your website; but if your web traffic starts to go up, then WetPaint takes 100% of the advertising profits generated by your content.

No matter how you look at it, the content of your wiki is worth more than $10/month, the price to get an hosted wiki. As, Jacob Nielsen pointed out long before me, free solutions have terrific costs. If you think that the wiki that you are starting is not even worth $10/month; then starting a wiki might not be a good idea in the first place.

You end-up advertising for your competitors

The worst part of the WetPaint ads is actually the accuracy of the Google Ads system. Indeed, the Google algorithm are really efficient to optimize the ads displayed on your wiki. But what are the ads the most relevant to your wiki content? Well, it's simply the ads of your competitors. Choosing WetPaint means that you are granting your competitors the right to advertise on your website.

This is the WetPaint trap; and I have been sufficiently foolish to fall for it for almost two weeks. Actually WetPaint people are smart, thus, as long as they are able to track you (through Cookies), WetPaint don't display any ads. The longer it takes to realize the situation, the more painful the migration. Migrate now or you will soon experiment the true cost of this free application.


What's wrong with Google AdWords

I have been using AdWords for quite a time, having setup ad campaign both for (freelance translation marketplace) and for (business time-series forecasting). And, being both a AdWords consumer (yes I do click on ads) and an AdWords publisher, I must say it’s quite surprising to see a company weighting hundred billions of dollars, with a business so crippled with long-lasting intrinsic issues. Please note that this post is not a complaint against Google, they are quite good at what they are doing; my point is that the AdWords business model is really weak against adversarial behaviors.

Adversarial behaviors

First, let me clarify what I mean by “adversarial behavior” here. Put very simply, it’s a situation where an actor (can be a company, an individual) does not play by the rules (can be the laws, can be ethics, can be traditions) and attempts to exploit system weaknesses for its own profit with no overall benefits for the society as a whole. I would oppose this behavior to a “constructive behavior” where an actor attempts to make profits by building wealth with a positive overall benefit for the society.

Typical adversarial behaviors includes stealing, cheating, lying. To avoid those issues, most modern societies have laws to fight those behaviors. On the web, the situation gets more complicated. Not because law does not apply to the internet (which is totally untrue) but because laws gets really complicated to enforces. For example, if you’re caught stealing $10000 to your neighbor, you’re in trouble. But what happen if you’re caught stealing $0.001 to 1,000,000 people from 30 countries over the worlds? Well most probably nothing is going to happen, because nobody is going to complain for 0.1cent.

Such situation is precisely what is causing spam. There are a lot of spammers; the impact of each spammer is low on the global scale, but all together the spammers are a real pain for everybody. E-mail as it has been designed several decades ago is super weak against adversarial behaviors. Yet, also the problem is very well known, it’s still quite easy to mess up, see the Coding Horror story about trackbacks .

The Google AdWords case

It has been quite a lot introduction, but the point I will defend here is that AdWords are almost as broken as the e-mail system to fight adversarial behaviors. Let’s review what I get for “open source ecommerce”, I have pasted below the result obtained at 2007-01-07

Sponsored Links

Ecommerce Open Source
Open an ecommerce website or an
eshop. Try free!

Open Source Ecommerce
1000’s of Great Programmers Bidding
Fast & Simple Project Outsourcing.

Open Source Ecommerce
Find the Top Links on
Open Source Ecommerce

Open Source Ecommerce
Open Source Ecommerce?
Get More Helpful Free Info Here.

Ok, what’s wrong with this listing? Actually the first result is just a blatant lie, is absolutely not featuring any open source solution (just check their web site if you do not believe me). Well, try to do that on a National TV show, and I am pretty sure that you get a class action the next morning. The second ads, for, is also a lie but I would say that it’s lesser lie since it can be argued that nothing prevents you to find freelancers to customize an open source ecommerce application. Google can’t be accused of willingly carrying lies, certainly they do not. Yet, they can discard their responsibility. Both and are lying here, but their behavior is not totally adversarial, they do both provide added-value solutions for their customers.

The two next results are more subtile but also more perverted. Those two links, and are not real website but just a super aggregation of advertising links. Yes, they do not feature any content, they just gather a huge amount of sponsored links into a self generated web directory (I suspect the directory architecture to be actually nothing more than the directory itself). Actually, what ever link you click in those websites is a sponsored link. I guess that the business idea is to buy cheap Ads from Google (notice that they are not the top results) and to sell random clicks from lost web visitor that happen to get to their website.Those trash websites represent a very significant percentage of the Google AdWords results (I would be on 20%).

Even Google is guilty

Just for fun, let’s see what we get for “make money fast” on Google (results obtained 2007-01-05). Note that the results are split in two sections, the first section being displayed before the actual search results, the second section being displayed on the side at the right of the search results.

Make Money Fast Have a website or blog? Earn revenue with Google AdSense.

Europe Trade LTD. 0.3% up to 4.5 % daily. Risk Free Short and Long Term Investments


Sponsored Links

Learn to be a super affiliate
Better Quit yr day job. It works!

Want to Make a Fortune?
Make $55,000 to 1,000,000 a Year!
Guaranteed success! - $49

Fast money work at home
Ultimate wealth package
try your luck and make1000’s


Sharemoney Investing
up to 385% return for 7 days
real short plan investment

Make Money Online
Secrets To Make Money Online
Revealed In Ebook. Free Download.

Make Money Online Today?
You can once you know this secret
Free audio shows how to get started

Well, I am quite astonished that Google put an ad titled “Make Money Fast”. To the people of marketing dpt. of Google Inc: Under-promise and over-deliver! and Don’t be evil!, anybody remember? Frankly, I will not even bother to review those links, they are all crap.As a conclusion, please don’t get me wrong, this post is not a Google bashing. Any company that will go in this direction (online automated Ad marketplace) will encounter the exact same problems. The “naive” technical solution (i.e. AdWords in its present state) is directly leading to this situation. Also no laws and no regulations will solve this situation. IANAL, but in France, I am pretty sure that there are enough laws to condemn every advertisers listed in this post.


What do most WS directories have in common?

Most Web Services directories have one thing in common: they are totally bugged at the point of being totally unusable. Indeed I have tried to submit the Lokad Forecasting Web Services to several directories. Namely:

  • registration process crashes and the ASP.Net default exception page.

  • can't even login, gets a fatal cgi-bin error while trying.

  • website painfully designed, registration succeeds but submission crashes.

  • "Submit URL" gets me to a page Service Temporarily Unavailable (it has been that way for the last 2 weeks)

It's almost unbelievable that so many top-ranked web sites (try web services directory on Google) are not even able to achieve something as simple as a registration process.

On the positive side, I have found which is by far the most usable WS directory out there IMO.


A few tips for source code versioning (do not drive your co-workers mad)

Source control management (SCM) is a technical matter as well as a good practice matter. Here is a small list of tips that I have found quite useful in practice.

A good commit is like a good paper:

  • It starts with an evocative title. Ok, there is no title in SCM but there are comments provided while committing. If your SCM comment is not clear, then how do you expect your co-workers to keep track of what you are doing? A good title takes time and so does a good SCM comment. Do not rush your commit omitting the SCM comment.

  • It has a clear self-contained content and focus. If you start working on many different files, you may end-up with a large commit covering many unrelated aspect of your software. Such a commit is hard to read for your coworkers because there is no focus. A lot of things are going on but nobody can really tell what did change and what did not.

  • It goes right to the point: Insignificant elements are left outside the scope of the article. Do not commit a file if the changes have no purpose whatsoever. Such situations arise easily when you've just added or removed a few blank lines.

  • The SCM comment is your title, eventually your headline, but it's definitively not the content of your paper. In particular, do not use the SCM comment to raise questions or ideas. Those elements must be handled directly in body of your commit, i.e. the committed files themselves. The SCM comments will be quickly lost in the SCM history, but the ideas/suggestions must stay until implemented or discarded.