Depuis 2005, je fais parti des nombreux convertis à Ruby On Rails. Après une décennie de développement Java, je retrouve dans Ruby et Rails la même fraîcheur que dans les technologies Java il y a quelques années. Je souhaite maintenant privilégier les projets mettant en oeuvre cet environnement.
Exploiter la souplesse et la richesse portées par Ruby et Ruby On Rails nécessite une bonne dose d’expérience. La qualité logicielle trouve tout son sens lorsqu’il s’agit de travailler avec un langage dynamique et un framework en évolution continue.
Combiner des connaissances en langages, en qualité et méthodes logicielles, en administration unix, en online holdem poker, en réseau et télécoms, m’a permis de participer à de nombreux projets professionnels ou libres.
Quelques unes de mes compétences en Ruby On Rails acquises ces 3 dernières années :
Design RESTful
Test driven development : Rspec, autotest/
spec, rcov
Quelques 45000 lignes de Rails
Gestion “restful” des permissions utilisateurs
ActionMail: support multipart, inline images et mass-mailing
Creation de plugins
Gestion de documents audio : multi format (ogg/mp3), re-encoding asynchrone, playlist, podcast
Integration “Google” : Google Analytics en multi account, sitemaps multi site
Taches asynchrones (via cron)
Interaction avec Postfix, Asterisk
Support de template liquid
Web-services (old ActionWebService)
JRuby (en particulier pour des drivers jdbc)
Déploiement: capistrano multistage, apache2/mongrel
Process via trac, subversion, git and cruiseControl.rb
J’ai eu l’occasion de découvrir et d’explorer professionnellement le langage Java très tôt (fin 1996). J’ai ensuite pu mettre en oeuvre et faire évoluer cette expertise au sein d’équipes et d’environnements variés (supervision, finances, banques, télécoms).
Large spectre d’activités : de l’implémentation de protocole RTP au design d’interface de point de vente, de la mise en oeuvre d’un moteur d’inférence au conseil pour la qualité logicielle,
Environnements de production variés : du clusters EJB au daemon “simple”, de l’interface web à des interfaces Swing/SWT pour le grand public, pour les points de vente
Contributions à de nombreux projets libres : Jakarta Commons, Ant, CruiseControl, FreeCast
Depuis 2001, une partie de mon activité consiste à mettre en place, maintenir (et utiliser) les process de travail des équipes dont j’ai fait partie. Ce travail se décline aussi bien en Java qu’en Ruby On Rails :
Processus de livraison itératif
Organisation du travail des équipes par ticketing/story (trac, bugzilla)
Test driven development (tests et mocks en rspec, en JUnit)
Utilisation et conseil dans la mise en place de l’intégration continue depuis 2003
Gestion de branches pour les corrections, pour les livraisons (git, subversion, cvs)
Mise en place et maintenance de process scriptés de validation, tests automatiques, mise en production (rake, ant, capistrano)
Pour supporter les différents projets présents ou passés, j’ai été amené à mettre en place du simple serveur à des architectures système plus complexes :
Debian: packaging, configurations diskless,
Process d’administration géré par
Puppet (un système d’automatisation des tâches d’administration)
Virtualisation Xen
Réalisations: hébergements de nos applications (principalement Java, Rails), serveurs de benchmark, sites web fréquentés, stockage, streaming, systèmes “embarqués” pour le son, serveur de mail mutualisé, ...
Déploiement sur dedibox, en datacenter, gestion de baies
chez Ipnotic Telecom - depuis décembre 2005
Mise en place du provisionning et de l’espace utilisateur permettant de paramétrer les équipements et les services
Ce système gère le paramétrage et la remontée d’information des équipements. Il permet aux équipes d’exploitation de provisionner les resources des utilisateurs en quelques clics. L’application gère une synchronisation transactionnelle des équipements.
Provisioning et consultation Cirpack, MGC et services ClassV via requetes http et adabas (Ibatis)
Provisioning et consultation des répondeurs, fax (Asterisk)
Provisioning des services mails (Postfix), backup, vpn, réseaux
Développement, intégration et validation avec les équipes techniques et support
Mise en place de webservices Rails pour administrer certains services
Interaction avec le reste du SI : CRM et billing (Axis)
C’est l’interface unifiée qui permet aux utilisateurs finaux de consulter, paramétrer et administrer les services proposés :
Application Spring MVC utilisant xhtml et css
Nombreux fonctionnalités intégrées : gestion de contacts, écoute des messages audio, consultation fax, administration mail, ...
Évolution des interfaces avec le provisionning (Axis, Burlap, fusion)
Refonte graphique et évolutions (
CSS,
Scriptaculous)
Annuaires
XML consultés par les téléphones
Mise en place d’un développement itératif sur les deux applications
Processus de validation et de mise en production (Ant, CruiseControl, Bugzilla)
Spécifications avec les équipes techniques et marketing
Environnement: Spring, Hibernate, Acegi, Ibatis, Mysql, Adabas, Tomcat, JUnit, Ant
pour Tryphon - depuis 2005
AudioBank et BonnesOndes sont des applications Ruby on Rails proposées en service gratuit par le collectif Tryphon. Ce sont des outils open-source développés pour nos besoins dans le cadre de radios éphémères puis mis à disposition des radios associatives.
assure le stockage et l’encodage des documents audio afin de permettre l’échange entre radios ainsi que la publication sur internet
gestion d’upload de gros fichiers via répertoire ftp temporaire
jobs asynchrones assurant le re-encodage audio
mise à disposition multi-formats : ogg/mp3 selon les players clients, playlists, podcasts
partage des documents entre utilisateurs et groupes, notifications
web-services permettant la gestion des documents et client cli assurant la création et l’upload automatique de documents
API javascript pour intégrer un player dans une page web
anti-scraping : urls, cband apache
Le service gère actuellement 20 G de documents et assure jusqu’à 100G de traffic mensuel.
Environnement: Rails 1.2, rspec, plugins classiques, openid, trac, git
gére les sites d’émissions de radio en quelques clics. En plus des fonctions classiques : textes, images, templating, feed rss, il intègre l’intégration des contenus audios, la publication de podcasts, l’administrateur multi-user ou encore un domaine propre pour chaque émission.
support textile, tags et images via plugins associés
publication rss, podcast et sitemap
-
support de templates
Liquid pour chaque émission
-
Environnement: Rails 2.1, rspec, plugins classiques, liquid, trac, git
chez XCalia (anciennement Libelis) - de juillet 2004 à décembre 2005
refonte des supports de formation et de l’environnement de travaux pratiques (Docbook, Ant)
participation à la mise en place d’un processus d’intégration continue (CruiseControl)
intégration et développement de librairies libres (Jakarta Commons, Prova)
test-driven development
-
recherches, analyses autour des technologies de formalisation et de sémantique sur les services
responsable de l’équipe de développement
création et spécification d’un modèle de formalisation et de description de la sémantique de services
modélisation des invocations de services: local, EJB, WebServices, JMS, JCA, ...
conception et dévéloppement du moteur de complétion d’opérations de persistence par analyse dynamique (via un moteur de règle
Prova/
Mandarax)
travail sur l’intégration au moteur de XCalia Core/LiDO
Environnement: JDO, Prova, Eclipse, Ant, JUnit
pour Autres(M)Ondes et Tryphon, depuis 2004
Mise en place de l’infrastructure informatique et technique afin de réaliser des radios éphémères.
Interventions en France, en Belgique, collaborations avec les radios locales
Streamings multi-formats classiques et peer-to-peer, diffusions FM (pool icecast2, FreeCast)
Mise en place d’un studio mobile numérique (Rivendell, Jackd, debian)
Conception de solutions mobiles pour le stockage, la captation de concerts ou de conférences, les duplex (debian, jackd, alsa)
Conférences sur l’utilisation des logiciels libres dans le monde de la radio (
RMLL 2008,
JM2L 2007)
Participation au projet RivenDell, logiciel de gestion d’antenne
Développement, maintenance et déploiement de FreeCast, application de diffusion de flux selon un organisation peer-to-peer
Architecture modulaire permettant le fonctionnement aussi en daemon qu’en
GUI
Protocole RTP-like assurant la diffusion en UDP d’un flux Ogg audio/video (mina)
Support stun et du NAT traversal (jstun)
Players embarqués dans le
GUI (
jvorbis,
cortado)
Déploiement par packages, binaries, installeur et JavaWebStart (javawebstart, nsis)
Environnement: Java, Swing, Mina, JUnit, EasyMock, Ivy, Trac
Conception/Architecture/Developpement J2EE - Mission pour Armonys chez BNP Arbitrage - février 2004 à juillet 2004
container IOC (PicoContainer)
mock objects (MockObjects, EasyMock)
mise en place de CruiseControl
gestion de configuration (Commons Configuration)
Environnement: Weblogic 8.1, Hibernate, Oracle, SWT, JMS, Maven,
Conception/Architecture J2EE - Mission pour Leuville Objects chez Fimasys - de 11/2002 a fin 01/2004 (15 mois)
mise en place d’un processus de Continuous Integration (CruiseControl)
refonte de la procédure de built (Ant), integration d’outils et developpements specifiques (CheckStyle, Jalopy, JUnit, JUnitEE)
mise en place d’outils de gestion de projet :
Bugzilla,
ZWiki, gestion de branches (
CVS)
présentation de ces travaux lors d’un séminaire sur la qualité logicielle au Club des Utilisateurs de Java
intégration d’APIs : Jakarta Commons
développement/refactoring J2EE des modules transversaux (EJBs)
migration d’applications de Weblogic v5.1 vers Weblogic 6.1/8.1, JBoss 3.2
conduite d’un projet pilote Struts
mise en place d’environnements de validation, de stress
mise en place d’une procédure et d’outils de mise à jour automatique
installation et administration de clusters Weblogic (sous Solaris, Linux, Windows)
conseil aux équipes de développement, aux équipes de production clientes
étude, rapport et reproduction d’anomalies au support BEA
Environnement : Weblogic, JBoss, Linux, Solaris, Oracle, Ant, CruiseControl
Conception/Architecture J2EE - projet personnel ManaOs - de 09/2002 a 07/2003
architecture distribuée reposant sur technologies Java (JMX, JNDI, JMS, EJBs, Avalon)
études de solutions logicielles à des problématiques plus générales : configuration, audit, project model, implementations JNDI
intégration de l’incubateur de l’ENST
recherche de financement
présentation au Concours Anvar 2003
création d’une SA sur fonds propres
Environnement: JMX, JNDI, JMS, J2EE
Conception/Developpement IHM J2EE - Mission pour Leuville Objects chez Experian - de 09/2002 a fin 10/2002 (2 mois)
Mise en place et poursuite du développement d’APIs OpenSource
Etude des problématiques d’ergonomie de saisie : navigation de focus, détection d’erreurs
Environnement: Java, Swing, Weblogic, Log4J, JUnit, Linux
Conception/Architecture Java - Mission pour Leuville Objects chez Corvis Algety - de 07/2000 a fin 07/2003 (24 mois)
etude de l’architecture du système, mise en place du partage de composants logiciels entre les applications
conception du manager principal :
gestion des accès aux agents distants,
persistance du modèle (TopLink/Oracle),
gestion transactionnelle,
gestion de l’ordonnancement des tâches
conseil et refonte de l’architecture
GUI
participation à la mise en place des outils et des méthodes de développement (gestion de configuration, gestion des bugs, méthodes de livraison et de packaging)
Corba: réalisation d’une
API d’interfaçage avec le service de notification Corba, outil de mapping systematique entre les objets Corba et les objets Java
Beans : représentation du modèle métier sous forme de Beans, systématisation du mécanisme de notification de changements et de synchronisation des informations entre applications
Gestion des problématiques de déploiement, d’exécution et de contrôle des applications
en phase de déploiement sur les sites clients, interaction avec le support client pour l’analyse et le suivi des tickets
Conception/Architecture/Developpement Java - réalisé en collaboration avec un expert en pharmacie - de 01/1997 a 07/2000 (43 mois)
nombreux travaux pour fiabiliser et améliorer les librairies de Sun (impression, base de registre réseau, architecture de l’IHM, BeanInfos, …)
serveur RMI réalisé selon une technique similaire aux EJBs, moteur de données spécifique (stockage sous forme de blobs)
intégration de nombreuses technologies Java : RMI, Swing, JNDI, Java Mail, Java Comm, JNI, Beans
travaux sur J2EE (naissant) et une interface icône (Java Activation, Drag&Drop …)
Application achevee et deployee chez des clients durant plus d’un an : http://www.jasp.free.fr/
Environnement: Java, RMI, Swing, JNI, Windows NT
Participation aux projets Jakarta Commons, en particulier aux projets Lang, Collections, IO, Launcher
Maintenance des projets Kolaka : Kolaka IRC, JDataField, Kolaka JNDI, Ant Xref, CCBot
Anglais : ecrit courant et quotidien