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 tools (10)


Migrating from OnTime to Trac, a short review

I have been a long time user of the project tracker OnTime provided by Axosoft. Yet, at Lokad, we have just migrated to Trac, a open source project tracker.

Although OnTime is a good product, there are quite a few elements definitively in favor a Trac

  • low ceremony: Trac has no advanced workflow, no 10 fields bug entry forms, no team reporting dashboard - but it just works. When it comes to web app, less is more. If you can pinpoint a bug in one sentence, then filling a 6 steps bug replication form is just a waste of time.

  • pretty URLs: that one is very often neglected by ASP.NET developers. It's really nice to be able to copy a URL such as into a mail, a wiki or even to bookmark it. Then, every single view in Trac has its own URL ready to be shared. In this respect, I have felt that the AJAX upgrade of OnTime, one year ago, was a downgrade from the usability viewpoint, because with AJAX, you loose both URLs and the ability to hit "back" on your web browser.

  • emphasing usability and not coolness: when I select an item on Trac, I get the complete view of the item in a simple webpage. Agreed, the page design not super elegant, but since scrolling up and down is a mechanical feature of my mouse, and it happens to be really efficient - especially compared to the tiny AJAX tabs of OnTime.

  • SVN integration: Trac let you browse the SVN source and associate SVN commits can be associated to Trac tickets. That one feature is a killer.

Disclaimer: OnTime is probably meant to be used through the Visual Studio add-in, yet, for some reason, I never managed to convince myself of actually installing the add-in, and I did stick to the hosted edition of OnTime. Thus, the comparison might be entirely fair.


RESX utilities open-sourced

Due to popular demand, I have finally open-sourced my RESX utilities. All the content (source code as well as binaries) is now available at, released under the GPL open-source license.

The release includes RESX Editor a simple yet efficient RESX file editor. It can be very handy if the translator is not too much familiar either with XML or with Visual Studio.

The release also includes Resx2word a RESX to Microsoft Word converter. The converter has been packaged as a command line utility (resx2word.exe and word2resx.exe).


The quest of the fail-proof hosted service

There isn't many 100% reliable hosting providers; yet when I buy an hosted subscription plan, I expect no less than a 100% uptime services.

So far, I have discovered only two fail-proof hosting services

  • blog hosting, not a single issue for more than 3 months of service.

  • Subversion hosting, not a single issue for almost 1 year of service.

Such a quality of services is truly worth to be mentioned and praised.


Format-Graph CmdLet; Drawing graphics with PowerShell

PowerShell, through its object-oriented design, provides a flexible and powerful framework to build interactive shell commands. Lately, in order to produce quick&dirty graphs while working on Lokad, I came up with Format-Graph, a CmdLet that outputs a text-based graphics of curves extracted directly from the PowerShell pipeline.

Format-Graph screenshot

For those who might be interested, the source-code of the Format-Graph CmdLet is freely available as a part of the Lokad OpenShell project. The class is stand-alone, you not need the rest of the Lokad OpenShell project to get it working.

The key idea behind the Format-Graph is the way to actually retrieve, from the pipeline, the values to be plotted. Indeed, if the Format-Graph was relying on some arbitrary strong-typed inputs (think of a class named Point); then this CmdLet would be pretty much useless. Indeed, using the Format-Graph would require some heavy input formatting to actually produce anything. Instead, Format-Graph leverages the .Net reflexion to extract the values from the pipeline.

Basically, Format-Graph takes a ValuePropertyName argument that is used to extract the actual double value from the specified property. For example, in the screenshot here above, I have used -ValuePropertyName:Value to extract the values from TimeValue objects.

Future development notes: Format-Graph does not provides any axis description for now. I have already included a LabelPropertyName argument as a placeholder (labels are just ignored for now); but I am unsure about the way to handle the X axis description at this point. Additionally, I am considering to (optionally) display some scaling information for the Y axis.

Mar132007 review: reducing the PAD pain

There are a lot of things that are simply wrong in PAD files. My previous experiences of PAD file submission for Resx Editor and Lokad ASP.Net Sales Forecasting were just terrible. I did end up submitting my PAD URLs at random for hours to hundreds of crappy directories (because most online directories do not even work) without knowing whether this work would actually lead anywhere.

Three weeks ago, it did bargain 80 euros or so and gave a shot to and it saved me much more time that I would have even imagined.

Automated PAD guidelines analysis

The first and foremost added value of Submit-Everywhere (S.E.) is not submission, it's PAD proofreading. Basically, once you've published your PAD, S.E. starts performing guidelines checks on your PAD file. The process is very similar to what is performed by FxCop for .Net code but transposed on PAD files. The issue is not too achieve a valid PAD document (which is almost completely trivial) but to achieve a well-designed PAD file. In this matter, I found out that S.E. had quite a lot of smart guidelines (ex: create a dedicated e-mail address for each PAD submission); after my initial submission I have been correcting more than a dozen of elements in my PAD file based on the S.E. suggestions.

Massive PAD submission

S.E. is not lying about its massive submission, S.E. is really submitting your PAD file to hundreds of websites. Actually, many websites require some minimal human intervention to validate the submission; and S.E. is precisely taking care of that for you. In addition, once the submissions are done, you receive a summary that recaps the status of all submissions; and most importantly, the reasons why you software did end-up rejected from certain directories. The most common reason for being rejected is that your product does not match the scope of the directory (some directories are specialized on video games for example).

As a final note, I would add that outsourcing your submission work to S.E. is really painless. The process is e-mail driven, you get an automated e-mail containing some instructions (usually a suggested change on your PAD file), you follow the instructions and finally you reply in order to get the next instructions. Each e-mail is self-explanatory which makes the process really simple to follow.

Until a better PAD standard is devised, Submit-Everywhere is definitively a must-have if you do not want to be driven nuts by PAD submissions.