, “nginx, python, uwsgi”)

Running multiple python apps with nginx and uwsgi in emperor mode

This blog is moving

From now on, I won’t be posting here anymore* and wil instead be using my shiny new blog over

It has been 2 years since I started using wordpress(.com) (after having used blogger and b2evo before), and while it’s a nice and quick-to-bootstrap solution, I’ve started to grow annoyed with it for the following reasons:

  • I have spent years waiting for to include a clean, a really clean, theme, wide enough so it doesn’t butcher code snippets (this is a technical blog after all), but nope, no luck. I also found the paying themes were a bit too expensive.
  • Too restrictive: you had to play by their rules, which was understandable, they just can’t let anybody include anything in their pages (javascript stuff for example). Some other restrictions aren’t as fair though: no custom css for instance, but they had to monetize their product. Hey, it was free, so I’m not complaining, just stating the fact.
  • Ads. I only noticed them recently when I had to check something quick in my blog using IE. Yup, it only took me 2 years to figure that out, thank you adblock ! I have no problem with “classy” and contextual ads, but the one I’ve seen the other day was plain awful. Again, it was a free service, so …
  • They had many performance issues, especially on the backend-side

Again, I’m not complaining: I’m more than grateful for the for what they offered me and millions of other blogger, a nice free hosting package, but it’s time for me to move to greener (I hop) pastures.

Enter my new blog:, built on Jekyll and served with nginx from an EC2 micro-instance. I’m rather happy with my new setup, especially the markdown format (instead of html), and the freedom it gives me. Also, it’s backed by a Github repo: a push and a couple seconds later (which will eventually become minutes, Jekyll is not a speed beast) the changes are reflected on the site. I’ll eventually blog in more detail on my setup.

* Actually, I’ll continue, for some time at least, to post links in here to the new posts.


Moulder in action

In a previous blog post, I’ve talked about templating in general and showed a quick example of how Moulder does templating.

Moulder is an Open source templating library that exists in 2 versions: Scala and Java. Both versions are hosted on Github and are available under the MIT Licence.

Unlike many other templating libraries, Moulder keeps the template data and the templating rules in separate files. The template data can (only) be any XML-like format, including HTML.
The templating rules are written in Scala or in Java (depending on the version you choose) and mimics jQuery’s usage patterns, i.e. a rule is expressed as a CSS selector and a list of operations to perform on the elements returned by that selector.

Read more of this post

Introducing Immanix: a Java library to process XML using parser combinators

Processing XML files is a PITA. There. I said it. Processing XML files using the Java standard XML API, i.e. JAXP is even worse. There are some nicer APIs out there that alleviate this pain, like XPATH, XStream, JAXB, Castor, etc.

But still, they all fail in some point or another, ranging from being verbose and tedious to write to not being able to handle large XML streams.
The latter is a killer for many of the higher level approaches out there. Try using XPATH or any mapping library on a file weighing more than a couple of megabytes.

To handle such cases, we are usually left with StAX. Don’t get me wrong: StAX is not that bad an API, and I’d take it any day instead of JAXP even for small files. It still is a very low level API and parsing the simplest of files requires an impressive amount of code. Also, handling state with StAX is a painful exercice. You usually end up building a full-fledged state machine to do it.

It’s in dealing with such cases that I thought that there must be a better way to do this. And that’s how immanix was born.
Read more of this post

Création d’une application de type CRUD avec Wicket

Extrait du synopsis :

Cet article va présenter le framework Apache Wicket et ce en s’appuyant sur la création d’une application de suivi de bugs (Bug tracker) qu’on nommera “Min.Bug.Tra”. Une telle application est un cas particulier de ce qu’on appèle CRUD (Create, Read, Update et Delete) mais qui a l’avantage de traiter une problématique réelle.

L’article complet est par ici : Création d’une application de type CRUD avec Wicket

Non, Dzone n’est pas censuré ici en Tunisie

My Clojure explained solutions to the s99 problems 21 to 26

This post will present and, I hope, explain my solutions to the s99 problems 21 to 26. I’ve already posted the solutions and explanations for the problems 1-3, 4-7, 8-13 and 14-20.


Insert an element at a given position into a list.
user> (insert-at(\c, 3, (list \a, \b, \d))
(\a, \b, \c, \d)

Read more of this post

Setting up a Scala development environment based on Emacs, SBT & Ensime

In this post, I will quickly show how to get a productive Scala development environment by using Emacs as an editor, with Scala mode and Ensime as extensions, and SBT as a build tool.
The following assumes that you are running a Linux with emacs already installed and a minimal knowledge on them.

1. Installing Scala

Start by downloading the latest Scala distribution from this page. I usually opt for the tar gz version which I then extract in some directory.

Read more of this post

Pour l’amour de notre patrie: posez les questions avant de tirer !

On templating, and a shameless plug of Moulder

Moulder is a server-side templating system. It uses jQuery’s approach, i.e. select and transform, and works only on XML-like data. I’ve written it two times over: One time in Java and another in Scala. Both versions are available as Open source software on GitHub and released under the MIT License.

1. What is templating

Templating is generally used in (but not limited to) web applications to generate dynamic web pages. Every time you perform a search on Google or open your Facebook page, templating was used behind the scene to generate these pages.
Read more of this post