Alors que l'UTF8 a pris son envol, Twitter rame un peu
jeudi 11 février 2010 :: perrick :: Développement :: aucun commentaire :: aucun trackbackIl y a deux ans (oui oui, c'était en 2008), l'UTF-8 devenait l'encodage le plus utilisé sur le web. Il y a quelques semaines Google annonçait que bientôt 50% des pages de son index seraient en UTF-8...
Pendant ce temps, Twitter fait des siennes avec des problèmes d'encodage (sur Opera au moins)...

Bien sûr il y a aussi des défauts dans la CSS...

Et moi qui pensait qu'ils n'avaient que des problèmes de charge ! Heureusement qu'ils sont de plus en plus à bosser sur le projet ;-)
Twitter Code Swarm from Ben Sandofsky on Vimeo.
Conférence sur la Qualité Logiciel au LORIA
mercredi 3 juin 2009 :: perrick :: Développement :: aucun commentaire :: aucun trackbackPetite tranche d'auto-promotion puisque je viens de terminer mon support numérique pour demain... J'ai été invité à participer à un séminaire au sein du LORIA sur la qualité et développement logiciel. Au programme pour moi, un retour d'expérience sur les pratiques collaboratives que nous utilisons dans OpenTIME ! C'est la première fois que je fais une conférence dans le monde universitaire : reste à voir si c'est si différent des conférences PHP - de Paris, Londres ou San José.
Des tests unitaires pour couvrir des process
jeudi 12 juin 2008 :: perrick :: Développement :: 2 commentaires :: aucun trackbackL'équipe de No Parking s'est largement étoffée depuis 10 mois : trois nouveaux développeurs m'ont rejoint. Histoire de partager 65 000 lignes de code d'opentime : elles ne sont pas toujours faciles à apprivoiser... En plus il faut surtout continuer à avoir une haute qualité de code pour chaque release. Et comme on peut en faire presque tous les jours, la tâche peut être rude.
Parmi les petits trucs qui aident, nous avons mis en place une gamme un peu spéciale de tests unitaires : ils vérifient non pas une fonctionnalité mais des propritétés sur les fichiers dans le dépôt. Ainsi on va vérifier que toutes les chaines de traduction existent bel et bien dans les trois langues : français, anglais et italien. On va aussi vérifier la concordance entre le numéro de la version courante et le dernier numéro dans le fichier de mise à jour. Bref tout un tas de vérifications (automatisées via le hook en post-commit dans Subversion) qui permettent de ne pas oublier ces petites choses qui font la qualité d'un logiciel au quotidien.
PS : merci à Gérald de m'avoir fait comprendre lors du PhpCamp de juin 2008 que ce "petit truc" pouvait en intéresser d'autres ;-)
Aller voir une pièce de code
mardi 8 mai 2007 :: perrick :: Développement :: aucun commentaire :: aucun trackbackLors de mes deux passages aux XP days (à Malignes l'année dernière et à Paris il y a quelques semaines), j'ai assisté à deux Kata. D'abord celui de Emmanuel Gaillot & Christophe Thibaut -- A Fugue about Paradigms and Functional Programming -- puis celui de Régis Medina -- Refactoring: la voie vers l'abstraction.
A chaque fois, c'est avec un large sourire que j'ai quitté la salle : c'est très impressionant de voir du code naitre, pousser et grandir... Bien sûr ils avaient préparé leur démonstration. Exactement comme un jongleur s'est entrainer avant de monter sur scène. Il s'agit bien là d'une performance (au sens artistique du terme).
Pour un néophyte, les raccourcis clavier, ceux de l'IDE et aussi ceux de l'expérience auront parfois tendance à brouiller le chemin emprunté. Alors que le résultat final est juste beau : du code limpide, dense, expressif (même en Java).
Ceux qui voudront creuser la question pourront aller jeter un coup d'oeil du côté de CodeKata ou du DojoDeveloppement.
Un commit qui fait plaisir
vendredi 13 octobre 2006 :: perrick :: Développement :: 4 commentaires :: aucun trackbackIl y a un mois, Vincent - stagiaire chez No Parking - a mis en place un outil d'intégration continue pour suivre le développement d'openTIME. Il s'appuie sur un hook post-commit de Subversion. Le process suivant s'enchaine :
- destruction de l'installation précédente
- export du dépôt SVN
- attribrution des bons droits sur les fichiers
- création de la base de données
- configuration d'openTIME
- instanciation des variables globales
- lancement des 2893 tests unitaires
- envoi d'un email
Et aujourd'hui j'ai enfin obtenu le résulat que je souhaitais :
[nopkg opentime 1135] SUCESS !!!
Commit de perrick le 13/10/2006 à 16:30
opération effectuées :
Nouvelle image pour les rendez-vous [rdv]
fichiers concernés :
A : /grafx/class_rdv.gif
Unit testing
OK
Test cases run: 30/30, Passes: 2893, Failures: 0, Exceptions: 0
Dans Thunderbird, ça donne :

Dire que cela faisait 113 commits que je l'attendais : pas mal pour un vendredi treize.
Des tests de recette directement dans l'application en développement
vendredi 25 août 2006 :: perrick :: Développement :: 3 commentaires :: aucun trackbackIl y a deux ans déjà, j'avais écrit mes premiers test de recette avec SimpleTest. Pour des raisons de performances et surtout parce que le support JavaScript y est inexistant, nous n'avions pas été très loin. Depuis Selenium est arrivé avec un concept différent : au lieu d'émuler le navigateur, il s'en sert pour effectuer des tests. Principal avantage, on voit ce qui se passe concrètement !
Après un premier test concluant hier, j'ai passé mon après-midi à hacker Selenium pour l'intégrer dans mon univers de développement. Une fois compris son fonctionnement interne, je suis arrivé à :

C'est assez original d'avoir l'application openTIME dans l'application openTIME via une iframe mais on s'y fait vite. Le gros avantage, c'est que tous mes paramètres de configuration sont pris en compte directement au lancement des tests. Il me reste juste un souci avec Opera (que j'espère mineur) et ce sera le bonheur...
Trouver les points de levier dans le code
jeudi 25 mai 2006 :: perrick :: Développement :: aucun commentaire :: aucun trackbackL'objectif du remaniement n'est pas uniquement d'avoir du code joli. Il est aussi d'avoir du code malléable : de trouver les points de levier. Ceux qui feront qu'il devient facile de faire évoluer son application.
Reste à trouver ces points : ils ne sont que très rarement évidents au début du développement. J'ai même l'impression qu'ils sont impossibles à anticiper. Le client, la mode, la couleur du ciel : tout participe à l'évolution des fonctionnalités. Pas la peine alors d'essayer de les anticiper.
Plutôt que de les chercher, j'ai parfois l'impression qu'ils émergent naturellement grâce à un remaniement continue. J'en ai encore eu l'exemple cette semaine : j'ai installé la dernière version d'Opera -- version 9 béta. Premier défaut, ils ont changé le raccourci pour ouvrir un nouvel onglet (le très mozillien Ctrl + t, au lieu de Ctrl + n). Deuxième défaut plus génant : une anomalie sur la priorité des champs <input>. Forcément la grille de saisie des temps dans mon logiciel maison contient 6 des ces boutons. Autant dire que je suis assez sensible à ce qu'il se passe quand on appuie sur Entrée au lieu de cliquer sur tel ou tel bouton.
Une bible pour le remaniement
lundi 15 mai 2006 :: perrick :: Développement :: aucun commentaire :: aucun trackbackCe n'est pas souvent qu'après quelques heures un bouquin devienne une référence : c'est exactement ce qui m'est arrivé avec Refactoring: Improving the Design of Existing Code. Martin Fowler a écrit avec Kent Beck et quelques autres une bible. De celles qu'on relit jour après jour.
En deux jours sur la table au bureau, ce livre est déjà passé par toutes les mains. Il permet tout simplement de créer un vocabulaire commun au sein de l'équipe de développement. Dans les phases d'apprentissage -- une fois que le code marche -- il devient une aide très précieuse par son côté systématique. Juste dommage que ce vocabulaire soit anglophone encore une fois.
Et puis il faut avouer que cette exploration est largement aidée par la batterie de tests que nous avons sur openTIME. En attendant d'acheter le livre, un détour par le site refactoring.com pourra peut-être s'avérer utile à quelqu'un. D'ailleurs ce quelqu'un pourrait très bien être moi-même : je viens d'y découvrir le Split Loop. Et j'adore découvir des remises en cause de mes pratiques.
En attendant Web 3.0
lundi 13 février 2006 :: perrick :: Développement :: aucun commentaire :: aucun trackbackLors de la conférence PHP de Londres, Harry Fuecks a présenté une session sur AJAX. Il montre le pourquoi du comment on arrive à AJAX != toujours "cool".
Et pour ceux qui ne pensent que ça n'arrive qu'aux autres je me revois en pleine discussion avec Rasmus Lerdord : chez Yahoo, ils ont du patché leurs serveurs BSD pour faire face aux requêtes trop lentes venant des dizaines de milliers de modems chinois. Il ne faudrait pas non plus oublier que le succès du trio HTTP / HTML / PHP s'est bâtie sur ce manque de synchronisation.
Rendez-vous AFUP : clients riches avec XUL
jeudi 9 février 2006 :: perrick :: Développement :: aucun commentaire :: aucun trackbackAprès la conférence d'Olivier Grange-Labat (LeMonde.fr) lors du dernier Forum PHP à Paris, plusieurs visiteurs étaient venus me voir : un goût de trop leur était resté dans la bouche. L'AFUP organisera donc une session spéciale sur les technologies XUL (l'interface riche de Mozilla). L'occasion de rencontrer / d'écouter / d'échanger avec Laurent Jouanneau, Edouard Andrieu et Olivier Grange-Labat (LeMonde.fr). Le rendez-vous est fixé au 2 mars 2006 - 20h à Paris : les détails et les inscriptions sur le site de l'AFUP.
L'élégance de la conception
samedi 1 octobre 2005 :: perrick :: Développement :: 6 commentaires :: aucun trackbackHier HTML, aujourd'hui Ajax. Hier la bulle internet, aujourd'hui Web2.0. Un des attraits de l'informatique tient dans sa capacité à créer des modes : plus blanc que blanc, toujours plus blanc... Chaque vague charie son lot de plats cuisinés à réchauffer et d'astuces innovantes à découvrir. En face de cette marée constance, il y a d'abord toute l'humilité devant son travail propre : le code. Surtout devant celui qu'on a produit il-y-a-une-éternité (notion floue qui s'étale entre une journée et des années). Celui-là même qui vieillit. Il y a aussi l'excitation devant des nouveaux outils, des nouvelles pratiques : l'apprentissage permanent.
Maintenant j'ajoute une notion complètement subjective et personnelle : l'élégance de la conception. Cette valeur va croissant avec l'étendue de mon bagage technique. En croisant ces deux valeurs -- qualité réelle de mon code produit et la qualité potentielle de ce même code -- j'arrive à un schéma.

Je m'arrête ici pour aujourd'hui : j'aimerais savoir si l'un ou l'autre d'entre vous se retrouve -- plus ou moins partiellement -- dans ce schéma...
Envie de devenir développeur : des pairs
mardi 28 juin 2005 :: perrick :: Développement :: 3 commentaires :: aucun trackbackDepuis que j'ai lancé cette série Envie de devenir développeur, j'ai pu suivre pas mal de discussions sur le sujet parfois en ligne (via des blogs ou des commentaires) d'autres de vive voix. Ces échanges sont le plus souvent réalisés avec des pairs, plus ou moins avancé sur le long chemin du développeur.
Envie de devenir développeur : de l'enthousiasme
samedi 11 juin 2005 :: perrick :: Développement :: 2 commentaires :: aucun trackbackJe reprends la série Envie de devenir développeur avec un concept à multiples facettes : celui de l'envie et de l'enthousiasme. Je dis multiple parce que pour l'instant j'en connais au moins deux formes : la première très communicative et l'autre plus intime.
Envie de devenir développeur : un utilisateur
mardi 24 mai 2005 :: perrick :: Développement :: 4 commentaires :: aucun trackbackEn tant que développeur, ne sous-estimez pas le pouvoir de l'utilisateur. C'est à lui qui détient la clef de vos efforts : est-ce que vos lignes de code lui faciliteront la vie, le travail ou l'amour ? Si vous ne faîtes pas mieux que son horoscope, pensez à la reconversion.
Envie de devenir développeur : un maître
lundi 23 mai 2005 :: perrick :: Développement :: 8 commentaires :: aucun trackbackPuisque Dave Hoover m'a demandé d'étayer mes propos précédents avec des exemples, je me vois "obligé" d'y répondre. Je commencerais donc par un maître qui a jalonné mes errements informatiques.