Installing VMWare Server 2.0 on a OVH RPS

A French hosting company called OVH provides an interesting offer named Real Private Server (RPS) as a intermediate solution between cloud computing and classical dedicated hosting. In a nutshell, RPS is a true dedicated server that comes with a virtual storage starting at 10 GB and going up to 1 TB. OVH is pricing RPS very aggressively - 20EUR/month for a dual-core AMD64 and 2EUR /month/10GB - makes the RPS a very interesting offer for backup servers that essentially need a lot of reliable storage.

Creating an auto-update framework with WiX

The WiX utility does it job at letting you create Microsoft Installer packages (known as_.msi_ files), but it involves it own set of weird peculiarities. For my uISV, I have designed a minimal auto-update framework for WinForm applications. The spec was the following: the user can click on Check for update, and will optionally be notified if a new version is available. In such event, the user is proposed to upgrade toward the new version.

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, more is less.

Custom error page in ASP.NET when database connectivity is lost.

A particularly annoying, yet frequent, issue for your ASP.NET is the loss of database connectivity. Indeed, if your database is hosted on a separate machine (as it is generally advised for performance), then your web application is subject to database downtime. Database downtimes have several particularities It generates internal server errors. It’s not the type of error that can be fixed by be the developer. The problem tends to get solved by itself (think: reboot of the database server) Errors don’t get logged (well, assuming that you are logging errors in the database).

My startup at the Incubator of Telecom Paris

For over a year, I have been working on Lokad.com. The project has been growing nicely, and last week, Lokad has been accepted at the Incubator of Telecom Paris. The incubator of Telecom Paris is the largest incubator in France with some nice success stories (such as Netvibes). Thus, for the next 18 months, Lokad will have nice offices in Paris (in the 14th arrondissement). For a young company, an incubator is probably the nicest way to smooth all the mundane details (yet critical) that become unavoidable as soon your company grows beyond the stage of the 1-man company.

Hard times ahead for shopping cart providers

Since my μIVS is providing sales forecasting services for eCommerce, I have been spending a considerable amount of time reviewing the market of eCommerce frameworks and providers. I did come up with a few conclusions that may be of interest for people considering developing business in this area. The first shocking element when I did start to review the online shopping cart market is the insane amount of competing software solutions.

Delete-proof data paging

In order to retrieve a large amount of data from a SQL table, you need to resort to a data paging scheme. Conceptually, a typical paged SQL query looks like (the syntax is approximate and vaguely inspired from MS SQL Server 2005) SELECT Foo.Bar FROM Foo WHERE RowNumber() BETWEEN @Index AND @Index + @PageSize ORDER BY Foo.Id; The queries are made iteratively until no rows get returned any more. Yet, this approach fails both if rows are added or deleted in the table Foo during the iteration.

Tracking file downloads in Google Analytics AND Google Adwords

Google has not one web analytics system, but two of them, namely Google Analytics and Google Adwords. For the average webmaster, this situation is quite a pain, because most of the tracking code must be duplicated. To make the situation worse, Google Adwords does not support any straightforward solution to track file downloads. For the sake of my own μISV, I have designed the following script that enables both Analytics and Adwords tracking in a single function.

Crypt your config files with PowerShell

ASP.Net 2.0 comes with a convenient native support for configuration file encryption. Yet, things are still not that easy for WinForms, Console applications or Windows Services since the aspnet_regiis.exe utility only supports Web Configuration files. My own μISV has its share of distributed applications which involve securing a few connection strings over several machines. Securing the connection strings through encryption is not an ultimate defense (if the attacker gains executions rights on the local machine, connection strings will get disclosed anyway), but it can still save you a lot of trouble such as involuntary disclosure.

Velib's from a software engineer viewpoint

The Velib’s are becoming insanely popular in Paris because of the strikes (strikes in public transportations is a national sport in France, a bit like baseball is in the US). Thus, I have been taking my first Velib ride yesterday, a few months after their initial launch. The Velib both the name of a public bike renting system in Paris but also the name of the bike itself. There are now 10.