Chamilo 1 "LMS", Chamilo 2 "LCMS Connect", and the desambiguation

There's been much talk over the last years about Chamilo 1 and 2, whether they were the same product, whether we were going to merge, etc. Last month's General Assembly of the Chamilo Association (which also made me the happy president of the association) helped us clarify a common line of conduct which, I am sure, most will appreciate. If you're in a hurry, you'd better move directly to the end of this article ("Conclusion"), because I want to drive you through the history of both projects now to give you a complete understanding of both pieces of software.

History of Chamilo 1 (now Cha

Memcache(d) to store PHP sessions

Edit: as of July 2014, there is a recent article discussing the use of php5-memcache instead of php5-memcache to store sessions on this blog. There are many posts around on the web about using memcached to store sessions data on high-availability servers, but few actually cover the whole topic and there are some elements that I thought might be of interest in the form of a quick recap. Memcached allows you to store frequently-used data in memory (RAM).

On migrations to production systems

Migrations on production systems is one of the most complex thing there is in the field of software because it requires all-in-one system administration, database administration, software development and quality management, each at a high level of skill. We generally delegate  a certain level of quality management to the customer (because they're most qualified in telling us what's wrong) but all the other aspects have to be dealt with, without the smallest mistake, otherwise you don't get a running system in the end.

Debunking error (OS 10054) core_output_filter: writing data to the network

One of our customers has Apache logs (Xampp-based) full of this line:
[Tue Mar 02 16:21:41 2010] [info] [client 172.20.99.16] (OS 10054)Une connexion existante a dû être fermée par l'hôte distant.  : core_output_filter: writing data to the network
Sometimes (OS10053) is used as a variant, but the Apache error seems to be the same (core_output_filter: writing data to the network) Apparently, the error is widespread and only occurs on Windows operating system (that's where OS10054 error code comes from) and a few useful references for this are:
  • http://httpd.apac

JavaScript preg_match

In the context of a nasty (wrong) SCORM package, I had to find a method of quickly parsing a time representation like "PT03H23M34S" and transform it into "03:23:34". After a few quick searches on how to do user string.replace(), I had to change the method, because apparently replace() doesn't allow for selection identifiers (2 and the likes) in the replacement string, or at least I didn't find how to do it. So I ended up with this:
if (/[A-Z]{2}d{2}Hd{2}Md{2}S/i.test(param)) { param = param.split(/D+/).join(' ').trim().split(/S/).join(':');}
It *is* kind of a one-liner.