Archive for July, 2012

Enable Tagalog fonts in Firefox/Ubuntu

July 30, 2012 1 comment

Tagalog is the national language of Philippines and, although it’s now written mainly in latin fonts (as Wikipedia reports), it can also be found written using the Baybayin script.Well, somehow, it seems difficult to find any relevant information on how to display Baybayin fonts in your browser in Ubuntu. After a little bit of common web research, then a bit of trial-and-error research, I found out you can install the required fonts by installing the “unifont” package:

sudo apt-get install unifont

Then just refresh your browser and you’re ready to read this very exotic writing!

Did you know we were going to have a Tagalog translation for Chamilo soon? It’s been financed by the Linux Fund, and we’re very glad they did!

Macro-scale benefits of e-learning on free software

July 26, 2012 1 comment

There are many advantages of e-learning. Some of them are obvious to people who barely entered the education with technology world:

  • Increased availability of learning content in time
  • Increased availability of learning content in space
  • Increased capacity to maintain and improve learning content
  • Lower logistical costs than physical, in-class teaching
  • Increased reach (due to not binding it to a physical place)

Providing or using e-learning with free software provides the following additional benefits:

  • Ability to modify the application to your needs
  • Ability to scale (up and out) without increasing licensing costs
  • Ability to develop the local business by directing critical financial resources (otherwise spent in foreign licensing) to local manpower, developing both skills and wealth locally, even in rural areas
  • Ability to avoid technology lock-up as data is and remains in your posession
  • Ability to replicate the improvements or other modifications you have made and make other institutions benefit
  • Ability to translate to any language (having a learning tool localized is very important for minorities)

All this is good, but when talking about macro-scale (a region, a country or the world), e-learning on free software provides you with incredible advantages which could really improve the way every person lives

  • Ability to share knowledge and learning efforts cross-borders, which will increase understanding and thus reduce conflicts (free software will enable you to customize this knowledge sharing to what local communities really need)
  • Ability to share resources, making it possible for experts to be virtual hosts in other organizations, spreading their knowledge
  • Ability to evaluate massive amounts of learners, fast (and improve the educational system as a whole, instantly) and without fear of other parties controlling those results to whatever ends they might plan
  • Ability to reduce centralization and develop all sub-parts of a specific geographical territory (even with only partial internet connectivity), through light optimizations taken in charge by the same people who face these challenges
  • Ability to improve the role of teachers, making them re-take their role of leaders, showing the way instead of running after the clock to finish correcting their students’ assignments

There are many reasons why everyone should suggest the use of e-learning using free software, and these are the reasons why this is my expertise. I really believe in making the world a better place by using it. With Chamilo, we are already helping more than one million people around the world to get a better education at a lower cost and with control over their resources. Help us do the same, tell your institution (company, school, government) about Chamilo and try it!

Mozilla-specific CSS-hacks

Just two valuable links to information about how to avoid other browsers taking into account Mozilla-specific hacks:

Courtesy of Julio Montoya and the authors of the respective pages.

Categories: Development, English Tags: , ,

Creating a new branch in Mercurial

July 20, 2012 1 comment

A really good guide on branching is available here:

In my case, I wanted to branch a previous version of my code to launch a parallel branch for bug-fixing of the previous release. I used the Chamilo code repository on google code. I already had a local copy (in /var/www/chamilo), so what I did was:

  • cd /var/www
  • hg clone chamilo -r [the changeset of the previous release, in my case 5c49a5e35ade ] chamilo- (this last bit is the destination dir)
  • cd chamilo-
  • hg branch (from there on, the default destination for my commits here will be the “”, which will only exist after my first commit)
  • did some changes
  • hg commit -m “Fixed security flaw …” index.php
  • hg branches (this shows that there are effectively 2 branches, the “default” and the “”)
  • hg log -l3 (shows that we are effectively at changeset 5c49a5e35ade + 1 commit)
  • hg push –rev (with double dash) (this pushes only in branch – this triggers a warning asking me to confirm the creation of a new branch in the upstream repository)
  • hg push –new-branch –rev (these are  two double ‘-‘, by the way)
  • because I cloned from the local repository, I actually just pushed in my “local upstream”
  • cd ../chamilo
  • hg push –new-branch –rev

Done. Now all normal people will keep sending to the default Chamilo branch, but anyone wanting to improve will just be able to commit to that branch. Not sure yet that “” was the right name choice, but it’s too late to lament on that.

Free music for your videos

I found this great article in the Vimeo forum: which gives a large list of free music sources.

Categories: English, Open Content Tags: , ,

Chamilo 1.9… getting back to 3 digits

We are currently approaching the 1.9 release of Chamilo. In the inner circles, it will be called 1.9.0 as it will be followed by one or two other bugfix releases.

During the past years, we started getting into details of, etc. In my view, this was a bad decision. While it’s OK to have lots of number within the inner circle of developers (because it allows us to focus on the details), it is definitely confusing to the end user having to deal (mentally) with 4 digits in a version number.

We started going deeper in the version when the doubt was still present about the merge with Chamilo 2.0 (now “Chamilo LCMS”), to avoid confusing people and making it somewhat natural to expect a 1.9, then the move to 2.0. But this merge has now been postponed to two years from now, and the team of Chamilo LCMS now decided to name their new version “3.0”, so it doesn’t make any sense anymore for us to remain stuck in the normal numbering.

In fact, most people just call the “Chamilo 1.8”, or just “Chamilo 8”. And they should! It makes no sense to be using so many numbers to identify a version before the public.

So we decided to get back to a simple 2-digits number (commercially) and a 3-digits number for the fixes. 1.9 will be released before the end of the month, while 1.9.2 should be out in a month or so in case we find any remaining bug.

Categories: Chamilo, e-learning, English Tags:

Drupal site with Varnish, returning page without style on CTRL+F5

I had serious problems with a Drupal website with many Varnish optimizations. It so occurs that one of them, a return(lookup) on images and css extensions, was really the one causing the problem:

if (req.url ~ “\.(png|jpg|jpeg|swf|css|ico)”) {

Now I don’t remember precisely why I added this condition in the first place (lookup means you force Varnish to re-use the version it has in cache) but apparently in my case it doesn’t suit my purposes.

The most common actions you can decide to ask Varnish to execute in the vcl_fetch can be found here:

In short:

When you call pass the request and subsequent response will be passed to and from the backend server. It won’t be cached. pass can be called in both vcl_recv and vcl_fetch.
When you call lookup from vcl_recv you tell Varnish to deliver content from cache even if the request othervise indicates that the request should be passed. You can’t call lookup from vcl_fetch.
Pipe can be called from vcl_recv as well. Pipe short circuits the client and the backend connections and Varnish will just sit there and shuffle bytes back and forth. Varnish will not look at the data being send back and forth – so your logs will be incomplete. Beware that with HTTP 1.1 a client can send several requests on the same connection and so you should instruct Varnish to add a “Connection: close” header before actually calling pipe.
Deliver the cached object to the client. Usually called in vcl_fetch.
ESI-process the fetched document.
%d bloggers like this: