diff --git a/content/images/status_board.png b/content/images/status_board.png
new file mode 100644
index 0000000..f092225
Binary files /dev/null and b/content/images/status_board.png differ
diff --git a/content/python/status.rst b/content/python/status.rst
new file mode 100644
index 0000000..1ad0876
--- /dev/null
+++ b/content/python/status.rst
@@ -0,0 +1,123 @@
+Status board
+############
+
+:date: 29-12-2012
+:lang: fr
+
+À force de démarrer des services web pour un oui et pour un non, de proposer
+à des copains d'héberger leurs sites, de faire pareil pour quelques assos etc,
+je me suis retrouvé avec, comme dirait l'autre, *une bonne platrée* de sites et
+de services à gérer sur `lolnet.org`, mon serveur.
+
+Jusqu'à très récemment, rien de tout ça n'était sauvegardé, et non plus monitoré.
+Après quelques recherches, je suis tombé sur `stashboard
+`_, un "status board" qu'il est bien fait. Le seul
+problème, c'est écrit pour se lancer sur GAE, *Google App Engine*.
+Heureusement, c'est open-source, et ça a été forké pour donner naissance
+à `whiskerboard `_ (la planche
+moustachue, pour les non anglophones).
+
+.. image:: |filename|/images/status_board.png
+
+Vérifier le statut des services
+===============================
+
+Donc, c'est chouette, c'est facile à installer, tout ça, mais… mais ça ne fait
+en fait pas ce que je veux: ça ne fait que m'afficher le statut des services,
+mais ça ne vérifie pas que tout est bien "up".
+
+Bon, un peu embêtant pour moi, parce que c'est vraiment ça que je voulais. Pas
+grave, je sais un peu coder, autant que ça serve. J'ai ajouté quelques
+fonctionnalités au soft, qui sont disponibles sur mon fork, sur
+github:: https://github.com/ametaireau/whiskerboard .
+
+Entres autres, il est désormais possible de lancer `celery
+`_ en tache de fond et de vérifier périodiquement
+que les services sont toujours bien vivants, en utilisant une tache spécifique.
+
+C'était un bonheur de développer ça (on a fait ça à deux, avec guillaume, avec
+un mumble + tmux en pair prog, en une petite soirée, ça dépote).
+
+Les modifications sont assez simples, vous pouvez aller jeter un œil aux
+changements ici:
+https://github.com/ametaireau/whiskerboard/compare/b539337416...master
+
+En gros:
+
+- ajout d'une `connection_string` aux services (de la forme
+ protocol://host:port)
+- ajout d'une commande `check_status` qui s'occupe d'itérer sur les services et
+ de lancer des taches celery qui vont bien, en fonction du protocole
+- ajout des taches en question
+
+Déploiement
+===========
+
+Le plus long a été de le déployer en fin de compte, parce que je ne voulais pas
+déployer mon service de supervision sur mon serveur, forcément.
+
+Après un essai (plutôt rapide en fait) sur `heroku `_, je me
+suis rendu compte qu'il me fallait payer pas loin de 35$ par mois pour avoir un
+process `celeryd` qui tourne, donc j'ai un peu cherché ailleurs, pour
+finalement déployer la chose chez `alwaysdata `_
+
+Après quelques péripéties, j'ai réussi à faire tourner le tout, ça à été un peu
+la bataille au départ pour installer virtualenv (j'ai du faire des changements
+dans mon `PATH` pour que ça puisse marcher), voici mon `.bash_profile`::
+
+ export PYTHONPATH=~/modules/
+ export PATH=$HOME/modules/bin:$HOME/modules/:$PATH
+
+Et après y'a plus qu'à installer avec `easy_install`::
+
+ easy_install --install-dir ~/modules -U pip
+ easy_install --install-dir ~/modules -U virtualenv
+
+Et à créer le virtualenv::
+
+ virtualenv venv
+ venv/bin/pip install -r requirements.txt
+
+Dernière étape, la création d'un fichier `application.wsgi` qui s'occupe de
+rendre l'application disponible, avec le bon venv:
+
+.. code-block :: python
+
+ import os
+ import sys
+
+ activate_this = '/home/lolnet/venv/bin/activate_this.
+ execfile(activate_this, dict(__file__=activate_this))
+
+ paths = ['/home/lolnet/public',]
+
+ for path in paths:
+ if path not in sys.path:
+ sys.path.append(path)
+
+ import django.core.handlers.wsgi
+ os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
+ application = django.core.handlers.wsgi.WSGIHandler()
+
+SSL et Requests
+===============
+
+Quelques tours de manivelle plus loin, j'ai un celeryd qui tourne et qui
+consomme les taches qui lui sont envoyées (pour des questions de simplicité,
+j'ai utilisé le backend `django` de celery, donc pas besoin d'AMQP, par
+exemple).
+
+Problème, les ressources que je vérifie en SSL (HTTPS) me jettent. Je sais pas
+exactement pourquoi à l'heure qu'il est, mais il semble que lorsque je fais une
+requête avec `Requests `_ je me
+récupère des *Connection Refused*. Peut être une sombre histoire de proxy ? En
+attendant, les appels avec `CURL` fonctionnent, donc j'ai fait `un fallback
+vers CURL lorsque les autres méthodes échouent
+`_.
+Pas super propre, mais ça fonctionne.
+
+Et voilà
+========
+
+Finalement, j'ai mon joli status-board qui tourne à merveille sur
+http://status.lolnet.org :-)
diff --git a/theme/static/css/main.css b/theme/static/css/main.css
index bb7f4e8..07f48d9 100644
--- a/theme/static/css/main.css
+++ b/theme/static/css/main.css
@@ -51,7 +51,7 @@ hr { border: 2px solid #EEEEEE; }
/* Anchors */
a {outline: 0;}
a img {border: 0px; text-decoration: none;}
-.body a:link, .body a:visited {
+article a:link, article a:visited {
border-radius: 5px 5px 5px 5px;
padding: 0px 5px;
background-color: rgb(234, 234, 234);
@@ -59,7 +59,7 @@ a img {border: 0px; text-decoration: none;}
text-decoration: none;
}
-.body a:hover, .body a:active {
+article a:hover, article a:active {
color: #fff;
background-color: #000;
}