🤓 What I've learned...
Self-taught since high school, my intensive practice of mapping — a discipline at the crossroads of many trades — led me to acquire a wide range of skills : programming, web and software development, graphic design, game and level design...
🎓 ... what I was taught
After earning my Science Baccalaureate (spec. Mathematics), I went on to study a Biology degree specializing in geology (Geosciences), fascinated by the complex mechanisms that shaped our familiar landscapes.
🏭 What's next?
After my studies, I decided to redirect my career towards my main skill, which had always occupied my free time, computing, and joined the video game industry as a scripter-level-builder, game-designer and tool programmer... A rich professional experience that allowed me to deepen my knowledge of Agile methodologies and inter-team coordination within highly constrained projects.
Building on this experience, I then established myself as an independent Developer and Web Consultant, a profession I have now been practising for over 15 years...
Personal projects
Programming for fun is also programming to grow
Web Frameworks
Curious to understand their internal workings and to test new features, I had the opportunity to develop several frameworks in the past:
WebKore
2010 → 2012
Comprehensive development of a PHP framework inspired by Symfony 1 and 2.
- Custom ORM (ActiveRecord)
- YAML configuration (custom parser)
- MVC - Modular organisation
- HTTP router with built-in URL rewriting and canonical URLs/redirects handling)
WebKore.NET
2013
Port of the WebKore framework to the .NET platform.
- Convention-oriented ("opinionated")
- Inspired by the ASP.NET framework
- Uses the RAZOR template engine
- GNU/Linux compatible
MediaKore/MediaServe 2014
HTTP server for GNU/Linux compatible with C# applications for IIS.
- Multithreaded requests
- Dynamic loading of different applications (dll) in isolated environments (AppDomain)
- Uses the Mono framework
- Built-in Less CSS pre-compiler
Misc Web
My main professional projects are detailed on the home page, but here are a few more examples from my personal work.
CinéPortail
2017 → 2020
A SaaS platform for cinema venues offering numerous tools to streamline theatre management and communication with audiences.
- Fully customisable platform creation: content, features, graphic theme...
- Main features: film sheets, events, articles, admin tools...
- Scheduling sync with the venue's point-of-sale software.
- PHP
- Symfony
- Twig/Vue.js
- MinIO (S3)
- RabbitMQ
Emoji Picker
2025
A fairly simple website that emoji lovers will appreciate, allowing them to search and copy-paste them in the blink of an eye.
- Classification by categories
- Search by name and keywords
- Copy to clipboard in a single click
D3 Calculator
2018
Equipment simulator for Diablo 3, allowing players to calculate the impact of attributes on hero stats (health, damage...)
- Real-time updates and calculations
- Save/load multiple profiles via localStorage
- OOP with JavaScript pseudo-classes (constructors + closures, pre-ES6)
- JS
- OOP
Image cropper/resizer 2018
Image resizing and cropping component for Vue.js
- Fixed or free aspect ratio
- Allowed format restriction
- Min and max dimensions
- Automatic resizing (via HTML canvas)
Demo
- Vue.js
- JS
Text-highlighter 2010
A vanilla JavaScript script that highlights all occurrences of one or more search patterns within a text.
- Multiple patterns supported simultaneously
- Performance: two-pass algorithm using
indexOfinstead of regex - Handles pattern overlaps gracefully (intervals are merged)
- Customisable HTML tags
- Optional case sensitivity
Crooked pines complain, exuding sharp resin, pools of shade, and tired butterflies, wings fading, search endlessly for hidden flowers. While swallows dart and swoop after invisible flies.
- JS
Misc Programming
Working on many varied types of applications — including 3D engines — taught me a great deal, not just in terms of technologies, but also in architecture, constraints, and optimisation...
SEM Flare / SEO Console
2016
Tools for analysing data from the Google Analytics and Search Console APIs.
- Page statistics (position, impressions, clicks, CTR)
- Incremental async updates from the APIs (high data volume).
- Keyword analysis tools
- SEO behavioural analysis tools (navigation flow)
- WPF
- Multithreading
Quark Engine
2010
First prototype 3D engine coded in C++ using the Qt framework.
- Rendering of basic geometries
- Camera rotation
- Dynamic loading of OpenGL renderers
- OpenGL
- Qt
Moon Engine
2011
Prototype 3D engine coded in C# using the OpenTK framework.
- Static geometries and UV Mapping (Warcraft 3 models and textures)
- Translations and Rotations of the model
- OpenGL
- OpenTK
Time series analyzer
2008
University project for computing linear regressions from given time series (written in IDL).
- Linear regression computation
- Curve plotting
- File reading and writing
- Advanced interface and curve configuration
File parsing & processing
Beyond simple text file processing, I have handled many other formats and practised binary file reverse-engineering (notably when building several 3D model importers).
BlizzImporter
2006
3dsMax script for importing 3D models from Warcraft 3 along with their animations.
- Parsing of text files (.mdl) and binary files (.mdx)
- Import of geometry (vertices) and skeleton (bones)
- Import of animations (quaternions)
- Import of textures (UV mapping) and materials
- Animation editor (concatenation of several original animations into one)
M2 Importer (WoW)
2005
3dsMax script for importing 3D models from World of Warcraft along with their animations.
- Parsing of binary files (.m2, .wmo)
- Import of geometry (vertices) and skeleton (bones)
- Import of animations (quaternions)
- Import of textures (UV mapping) and materials
- Animation editor (concatenation of several original animations into one)
- Geometry editor (selection of model variations to import)
MDL Importer
2003
3dsMax script with a graphical interface for importing 3D models from Warcraft 3.
- Parsing of text files (.mdl)
- Import of geometry (vertices) and skeleton (bones)
- Import of animations (quaternions)
- Import of textures (UV mapping) and materials
- Model events and particle emitters
Game programming
Learning to program was for a long time driven by designing tools and systems related to the world of video games, which offers an unmatched diversity of goals and a uniquely engaging quality.
The growing complexity of the systems I developed taught me to structure my code in a modular way: autonomous, decoupled components, yet perfectly interoperable. My framework « J » for JASS — the scripting language of the Warcraft 3 map editor — is a good example, with its many modules that can be activated à la carte:
JPhysics
Code library simulating a physics engine inside Warcraft 3.
- Simulation of physical principles: gravity, bouncing, friction
- Terrain height taken into account
- Physics formulas
- Vector maths
JQuest
Code library automating quest creation in Warcraft 3 (vJASS).
- Quest prerequisites (hero level and class, parent quests...)
- Quest chains (quests unlocked after completing a previous one)
- Automatic objective tracking (gathering, exploration, escort...)
- Dynamic quest journal (automatically updated)
- Event-driven programming
- Polymorphism
JBuff
Code library extending the buff/debuff system in Warcraft 3 and serving as a framework for creating custom enhancements.
- 100% scriptable enhancements
- Stackable enhancements
- Enhancement/enchantment dispelling
- Polymorphism
JSpell
Code library extending the spell system in Warcraft 3 and serving as a framework for creating custom spells.
- 100% scriptable spells
- Cast time / interruption
- Channelled spells
- Spell families
- Mana regeneration
- Customisable progress bar
- Polymorphism
JCombat
Code library replicating WoW's combat systems inside Warcraft 3 (vJASS).
- Threat management (aggro) and combat lists for target selection
- Scripted combat phases
- Automated patrols
- Customisable monster behaviour via a « brain » system (custom overridable classes)
- Polymorphism
A little more about me...
Instead of thinking outside the box, get rid of the box
Languages
🇫🇷 French — native language
🇬🇧 English — read, written, spoken
🇩🇪 German — advanced notions
Hobbies
I also enjoy renovation and DIY work, activities that surprisingly echo my approach to development: understand the existing, intervene with care and improve durably.
Miniature painting and sculpting — a childhood passion that taught me patience and attention to detail:
Music (guitar, piano, singing), Hiking, Arts
Ethics
To manage, in my way of life, to stay attuned to what speaks most strongly within me, and to devote myself to it wholeheartedly.

































