Jul 31

Quand on parle de créneaux - ceux des voitures pas des châteaux forts - avec des Allemands et qu’on leur avoue qu’il nous arrive de temps en temps “d’embrasser” les voitures garées devant et derrière nous - et que tout bien réfléchi on s’en fout - ils nous regardent avec des yeux ronds avant de caresser mentalement le manche du couteau de cuisine virtuel qu’ils planteraient sans hésiter dans votre dos si jamais vous osiez approcher votre voiture à moins d’un mètre de la leur… ouais la voiture c’est sacré ici alors pas touche!

Vous auriez vu la tête de Mlle V. quand mon père a un jour décidé de se garer dans une place à peine plus grande que la voiture - ici à Nuremberg - et qu’il est bien évidemment allé “frôler” les voitures déjà garées. Elle est devenue blême, s’est mise à regarder à droite et à gauche d’un air inquiet et serait certainement restée muette - en me laissant gérer la situation avec mon accent français et mon allemand approximatif - si jamais quelqu’un avait dit quelque chose.

Pris d’un moment de délire intégral autour d’un café hier en début d’après-midi, nous avons imaginé toutes sortes de dispositifs digne des lapins crétins destinés à dissuader les automobilistes de trop s’approcher (ou de s’être trop approchés) de votre voiture. La palme revient au détecteur de pression placé sur le pare-choc couplé à une bombe de peinture rose… Je pense qu’on tient là un produit à fort potentiel, non?

Qu’est ce qu’on peut en raconter des conneries à la pause café quand même :]

Jul 21

Tout le weekend durant, j’ai vécu dans l’attente de ce rapport de build (l’image est floutée pour des raisons évidentes de respect des infos professionnelles - tout ce qui est rouge n’est pas bon signe…).

En rentrant dans le bureau ce matin, j’avais déjà ôté mes écouteurs et rangé mon iPod, j’étais prêt à affronter les collègues!

Avant de parler de ce matin, il faut parler de ce weekend. Mlle V. n’étant pas là (partie en rando), j’avais donc le loisir de bâtir le programme de mon choix, histoire de ne pas trop compter les secondes:

  • Vendredi soir et samedi toute la journée étaient dédiés à une session de jeu non stop pour faire enfin passer à mon chasseur le cap du lvl 60 (oui, WotLK approche et il était encore lvl 51…). Mission accomplie, check!
  • Samedi soir était prévu une sortie avec les français rencontrés récemment à Nuremberg. Dîner dans un sushi-bar histoire d’éponger les litres d’alcool ingurgités par la suite. La soirée s’est terminée dans une boite de nuit super-select-prout-prout où il a fallu batailler ferme pour entrer. De retour à l’appart’ à 6h du mat’, j’ai émergé (pas franchement frais) vers 14h dimanche… encore 20h de bien occupées, check!
  • Quelques heures de zonage plus tard, direction le fitness studio histoire de faire du sport malgré le temps pourri. De retour en fin d’après-midi il ne me restait plus qu’à ranger l’appart’ (c’est dingue à quel point ça peut se déranger vite ce genre de petite bêtes) avant le retour de MlleV, épuisée mais bronzée, check!

Entre temps, j’ai pu faire quelques photos de coucher de soleil (sur fond de ciel orageux), suivre Greg sur Twitter (il s’est acheté un iPhone3G donc il a intérêt à l’utiliser pour Twitter en permanence) et m’y mettre également (cf l’encart ici en haut à droite), commencer le livre Ilium, écouter 5 épisodes des podcasts de 1Up.com, regarder les 3 actes du DrHorrible’s Sing-Along-Blog (que je recommande très fort vivement en applaudissant des deux mains) et enfin réfléchir à des choses et d’autres (@Ghusse)… voila un weekend bien rempli.

Trêves de plaisanteries, en arrivant ce matin, pas de regard noir, pas de note sur mon bureau type “viens me voir dès que tu arrives t’as tout pété, signé DrHorrible”… j’ai donc tranquillement allumé mon ordi, ouvert le rapport de build de ce matin et découvert que le build en question est totalement inutilisable (là mon sang n’a fait qu’un tour)…

Après une demi heure d’épluchage de logs et de tests, je peux affirmer qu’aucun bug n’est dû à mes modifications… pourvu que çà dure!

Jul 18

J’ai les boules… je viens de faire le merge du boulot que j’ai abattu depuis pas loin de 3 mois (merge = transfert du code d’une branche de développement à une autre - en l’occurrence depuis ma branche “privée” vers la branche “publique” visible et utilisable par tous les développeurs). Ce soir à 23h se lancera la compilation journalière, base de travail pour tous les développeurs du projet et donc dans laquelle mes modifications seront pris en compte. Lundi l’action première de tous les développeurs sera de télécharger cette nouvelle version et de l’utiliser comme base de travail pour la journée… autant dire que si j’ai foiré quelque part… je le saurais avant même d’atteindre mon poste de travail!

Depuis début Mars, je travaille à la refonte d’une des parties centrales de notre logiciel alias le moteur de règles qui gère les relations entre les objets lors des actions - copier/couper/déplacer/coller - effectuées par l’utilisateur. Pour vous faire une idée de ce que je fais, imaginez une table (composée de 4 pieds d’un plateau) et un verre vide posé sur celle-ci. Au moment de leurs créations respectives au sein du logiciel, chaque objet a émis un certain nombre de règles du genre “je suis un pied, je peux être ajouté sous un plateau” ou “je suis un verre, je peux être posé sur un plateau” ou “je suis un plateau je peux avoir au maximum 4 pieds, et si j’en ai moins de 4 ca va barder”. Dès lors, que se passe t-il si l’utilisateur copie un pied de table et essaye de le coller sous ce même plateau? Le moteur de règle va interdire l’action au regard de la règle émise par le plateau (max 4 pieds). De même, si l’utilisateur essaye de couper le plateau, le moteur de règle va dire “tss tss, il y a un verre qui repose sur toi, si tu t’en va il va se péter la gueule alors je t’interdit de t’en aller”.

Vous l’aurez compris, je m’occupe en fait d’assurer la “consistance” de la structure qui est entrain d’être construite; je fais en sorte que jamais une action qui aboutisse à une structure “bancale” - on parle de configuration illégale ou inconsistante - soit effectuée. Autant dire que si qqch foire dans mon code, l’erreur est susceptible d’impacter simplement… tout le monde!

Pour minimiser les erreurs et maximiser la qualité du logiciel, nous travaillons avec un ensemble de règles de test. Pour chaque morceau de code (ou plutôt chaque fonctionnalité élémentaire), un scénario de test automatique doit être écrit, scénario qui vient alors gonfler la masse des tests à effectuer avant tout “merge”. Le script global contient plus de 1800 tests et demande près de 4h d’exécution, mais permet d’éviter les effets de bord (qu’une modification à un bout du logiciel ne casse qqch à l’autre bout sans le savoir).

Depuis une semaine, je laisse tourner le script toutes les nuits et décortique les résultats pendant la journée pour m’assurer qu’aucun des tests négatifs obtenu n’est dû a mes modifications… ce soir j’ai eu le go de mon chef alors voila c’est mergé! Après tant de tests, je suis (presque) convaincu que tout ira bien, mais malgré tous je ne peux m’empêcher d’imaginer le pire… si qqch foire lundi promet d’être funky!

Jul 09

Depuis que j’ai commencé mon intégration en Germanie, il y a quelques évènements qui m’ont vraiment fait grimper de quelques niveaux. Saucisson-fromage au petit dej ou même boudin-blanc-bière, le tri sélectif dans plus de 3 containers (sans compter le verre) et l’extinction de mon ordi dès que je ne suis plus devant par exemple.

Mais voila une photo prise ce matin sous mon bureau (au boulot donc) qui, je crois, me fait gagner deux niveaux d’un coup. Yep, ça y est, je me suis mis aux sandales comme 80% de mes collègues…

PS: Reference titrique (ou titrale, c’est comme vous voulez aujourd’hui) évidente au Donjon de Naheulbeuk!

Jul 04

Il y a des moment où je me demande vraiment ce qui passe par la tête des personnes qui décident du fonctionnement et du design d’une application (et c’est extensible à tout produit en général).

Ce matin, au cours de mes tests quotidiens, j’ai découvert un petit changement dans le fonctionnement des fenêtres de confirmation de suppression d’objets. Selon que l’on supprime depuis une zone ou une autre, l’un des messages est du type informatif (jaune et pas vraiment stressant), l’autre est une fenêtre de type “attention ça va faire mal” (rouge avec un code erreur…) mais surtout, et c’est là que j’ai bondi, le bouton sélectionné par défaut n’est pas le même dans les deux cas. Dans un cas c’est “oui” dans l’autre c’est “non”.

En soi ça n’est pas dramatique, mais cela montre un manque sérieux de cohérence et c’est terriblement trompeur pour l’utilisateur (moi en l’occurrence) qui doit s’y reprendre à deux fois 50% du temps pour supprimer un objet. Ceci étant dit, j’ai été discuter de ce problème avec des membres de l’équipe GUI (Graphical User Interface) qui ont aussi sauté au plafond comme moi avant d’aller voir leur chef et de revenir penaud me dire que c’était un ordre venu d’en haut, que c’était pensé ainsi… “forget it buddy, works as designed”!