_____ _____ _____ _____ _____ _____ _______ _____ _____ _____ /\ \ /\ \ /\ \ /\ \ /\ \ /\ \ /::\ \ /\ \ /\ \ /\ \ /::\ \ /::\ \ /::\ \ /::\ \ /::\ \ /::\ \ /::::\ \ /::\ \ /::\ \ /::\ \ /::::\ \ /::::\ \ /::::\ \ /::::\ \ /::::\ \ \:::\ \ /::::::\ \ /::::\ \ /::::\ \ /::::\ \ /::::::\ \ /::::::\ \ /::::::\ \ /::::::\ \ /::::::\ \ \:::\ \ /::::::::\ \ /::::::\ \ /::::::\ \ /::::::\ \ /:::/\:::\ \ /:::/\:::\ \ /:::/\:::\ \ /:::/\:::\ \ /:::/\:::\ \ \:::\ \ /:::/~~\:::\ \ /:::/\:::\ \ /:::/\:::\ \ /:::/\:::\ \ /:::/__\:::\ \ /:::/__\:::\ \ /:::/__\:::\ \ /:::/__\:::\ \ /:::/ \:::\ \ \:::\ \ /:::/ \:::\ \ /:::/__\:::\ \ /:::/__\:::\ \ /:::/ \:::\ \ /::::\ \:::\ \ /::::\ \:::\ \ /::::\ \:::\ \ /::::\ \:::\ \ /:::/ \:::\ \ /::::\ \ /:::/ / \:::\ \ /::::\ \:::\ \ /::::\ \:::\ \ /:::/ \:::\ \ /::::::\ \:::\ \ /::::::\ \:::\ \ /::::::\ \:::\ \ /::::::\ \:::\ \ /:::/ / \:::\ \ /::::::\ \ /:::/____/ \:::\____\ /::::::\ \:::\ \ /::::::\ \:::\ \ /:::/ / \:::\ \ /:::/\:::\ \:::\____\ /:::/\:::\ \:::\ \ /:::/\:::\ \:::\ \ /:::/\:::\ \:::\ \ /:::/ / \:::\ \ /:::/\:::\ \ |:::| | |:::| | /:::/\:::\ \:::\____\ /:::/\:::\ \:::\ \ /:::/ / \:::\ ___\ /:::/ \:::\ \:::| |/:::/__\:::\ \:::\____\/:::/ \:::\ \:::\____\/:::/ \:::\ \:::\____\/:::/____/ \:::\____\ /:::/ \:::\____\|:::|____| |:::| |/:::/ \:::\ \:::| |/:::/__\:::\ \:::\____\/:::/____/ \:::| | \::/ |::::\ /:::|____|\:::\ \:::\ \::/ /\::/ \:::\ \::/ /\::/ \:::\ /:::/ /\:::\ \ \::/ / /:::/ \::/ / \:::\ \ /:::/ / \::/ |::::\ /:::|____|\:::\ \:::\ \::/ /\:::\ \ /:::|____| \/____|:::::\/:::/ / \:::\ \:::\ \/____/ \/____/ \:::\ \/____/ \/____/ \:::\/:::/ / \:::\ \ \/____/ /:::/ / \/____/ \:::\ \ /:::/ / \/____|:::::\/:::/ / \:::\ \:::\ \/____/ \:::\ \ /:::/ / |:::::::::/ / \:::\ \:::\ \ \:::\ \ \::::::/ / \:::\ \ /:::/ / \:::\ /:::/ / |:::::::::/ / \:::\ \:::\ \ \:::\ \ /:::/ / |::|\::::/ / \:::\ \:::\____\ \:::\____\ \::::/ / \:::\ \ /:::/ / \:::\__/:::/ / |::|\::::/ / \:::\ \:::\____\ \:::\ /:::/ / |::| \::/____/ \:::\ \::/ / \::/ / /:::/ / \:::\ \ \::/ / \::::::::/ / |::| \::/____/ \:::\ \::/ / \:::\ /:::/ / |::| ~| \:::\ \/____/ \/____/ /:::/ / \:::\ \ \/____/ \::::::/ / |::| ~| \:::\ \/____/ \:::\/:::/ / |::| | \:::\ \ /:::/ / \:::\ \ \::::/ / |::| | \:::\ \ \::::::/ / \::| | \:::\____\ /:::/ / \:::\____\ \::/____/ \::| | \:::\____\ \::::/ / \:| | \::/ / \::/ / \::/ / ~~ \:| | \::/ / \::/____/ \|___| \/____/ \/____/ \/____/ \|___| \/____/ ~~
Développeur Drupal Senior avec plus de 15 ans d'expérience, spécialisé dans le développement back-end avec de solides compétences front-end. Reconnu pour la résolution de problèmes complexes et une croissance technique continue.
Repousser les limites de mes connaissances est ce qui me motive ; je relève constamment des défis en dehors de ma zone de confort pour découvrir des solutions innovantes.
Optimisation de la Sécurité
Lorsque les sites web d'un client ont fait face à des attaques consommant des ressources excessives, j'ai mené une analyse approfondie des vulnérabilités de sécurité web, particulièrement les injections SQL. J'ai développé un module de détection personnalisé qui a réussi, en agissant en amont, à réduire la surface d'attaque et à diminuer la charge du serveur, offrant une amélioration significative des performances et ce sans compromettre l'expérience des utilisateurs légitimes.
Leadership en Assurance Qualité
Reconnaissant des lacunes dans les processus de test, j'ai commencé à implémenter des tests PHPUnit pour les nouvelles fonctionnalités et le code refactorisé. L'objectif de cette initiative était simple : réduire les problèmes de régression et augmenter la confiance de l'équipe de développement lors des déploiements. C'est ce que j'appelle « l'assurance code ».
Philosophie
A priori, j'utilise les modules 'contrib' Drupal et les bibliothèques établies pour le support communautaire et la couverture sécuritaire intégrée qu'ils fournissent. Je sais reconnaître les contextes où un module custom est plus approprié. Je ne suis pas un adepte de la complexité : «Complexity is your ennemy» - Richard Hipp, créateur de SQLite.
Profil d'emploi idéal
Je m'épanouis dans des environnements collaboratifs avec des équipes multidisciplinaires où la revue par les pairs et le soutien sont ancrés dans la culture. Je recherche un rôle où je peux continuer à développer mon expertise backend, à résoudre des défis techniques complexes et donner libre cours à ma curiosité et à ma créativité.
Travaux Récents
MANITOBA LIQUOR & LOTTERIES (Jan 2023-Mar 2025)
Participation à la migration de Drupal 7 vers 9/10 pour six sites web. Les responsabilités comprenaient la migration de données, le portage de modules/thèmes personnalisés, et la garantie de la conformité WCAG 2.2. Développement de modules personnalisés incluant la détection d'injection SQL et implémentation de tests PHPunit.
RESULTA (Mar 2021-Sep 2022)
Intégration d'une équipe d'élite de plus de 15 développeurs Drupal pour la migration du site de paris sportifs OddsShark.com de Drupal 7 vers 9. Cette plateforme agrège les pronostics, les cotes et les actualités des principales ligues sportives (NFL, NBA, MLB, NHL, UFC). L'accent principal était mis sur la migration de 10 ans de données complexes, avec un travail supplémentaire d'implémentation du nouveau design de thème vers la fin du projet.
Expérience & Expertise
- Développement de modules personnalisés (PHP OOP)
- Migrations de Drupal 7 vers Drupal 9|10|11
- Sites web multilingues
- Thématisation & templates Twig, Bootstrap, CSS, SASS
- Recherche à facettes (Search API, Apache Solr)
- Drupal Commerce
- Tests automatisés (PHPunit)
Voir mon profil Drupal.org
Voir mon profil LinkedIn
Dernière mise à jour Mai 2025