Front-end and full-stack developer with 20+ years of experience building web, mobile and desktop applications, with a particular taste for interactivity, motion and performance.
I’ve worked on SaaS platforms, product UIs, promotional sites, branded games and internal tools, across creative agencies, product companies and tech teams, taking projects from concept to deployment. Vue, React and TypeScript on the front end; Node.js, Deno, PHP and SQL on the back end.
Alongside client work, I build games, engines and tools (Unity/C#, WebGL/Three.js) and have worked professionally on several arcade and strategy games.
Happy to talk about front-end, full-stack, creative tools, game dev, or weird ideas.
Built a feature-based architecture with automatic discovery of features and routes, plus injection and interceptor mechanisms that keep core systems separate from feature modules.
Maintain the shared foundation of reusable components, hooks, helpers and patterns used by all new applications.
Integrated Azure AD single sign-on across projects.
Lead the migration of legacy ASP.NET systems to React and a Python backend, working closely with developers and scientists.
Work with cross-functional teams to fit the platform to internal workflows and scientific requirements, with the aim of faster delivery and lower maintenance.
SmartCertificate is a secure digital certification platform for sending verifiable documents. I was hired to lead the revamp of its front-end and back-end structure, with the goals of modernizing the UI/UX and reaching a broader audience.
Rebuilt the entire front-end with Vue 2 and TypeScript, structured for modularity and maintainability.
Led the move away from a monolithic C# system toward a modular architecture, within legacy constraints and strict security and privacy standards.
Led back-end API development with the back-end developer, keeping a clean separation between front and back.
Act as Product Owner, working with stakeholders to align the roadmap with business goals, client needs and budget.
Designed and built a drag-and-drop template editor with custom variables, letting users create their own dynamic documents in the app and cutting manual setup time.
Built Excel/CSV import with mapping to template variables, automating document creation.
Added an onboarding flow with tutorials and in-app guidance so new users can send certified documents within minutes.
Delivered two complete production versions of the platform, reducing maintenance overhead and improving stability.
Main point of contact for how the product works and where it should go: support, the back-end developer and the CEO all relied on this role.
React · Haxe · HTML5 Canvas · Custom brush engine for a drawing tool
Built a drawing module for a web-based presentation tool, letting users sketch in the app and embed their work in slides.
Designed a custom brush engine with Photoshop-style brushes and experimental ones (connected-point “sketchy” strokes, noise-driven brushes, fluctuating gradients, procedural patterns).
Implemented smooth curve drawing with easing to avoid jagged lines on fast mouse movements.
Integrated the module into the existing React architecture.
After more than a decade with Flash, ActionScript 3 and Stage3D, this role was my move to modern web technologies, with a focus on animated interfaces.
Longines “H” website: responsive, mobile-first site with a flexible animated grid and performance-friendly animations, built with Haxe tooling.
Agilytic: lightweight animated company site.
Mobile banking app (Luxembourg): animation and transitions prototyped in Framer.
Contributed to several other responsive sites and interactive prototypes.
Riftworld Heroes (2017): took over a turn-based strategy game to build a solid technical foundation. Created a modular entity system, where players, creatures, items, spells and cards are all configurable entities editable in Unity, so designers can work with minimal code. Designed the game logic around fast simulation of outcomes, in the spirit of Hearthstone, for AI and future multiplayer.
Endless Runner & Endless Jumper (2015): designed and coded two arcade games integrated into a larger Unity application, with attention to RAM and VRAM usage.
Mask of War (2013, prototype): co-founded and led development of a multiplayer, cross-platform turn-based strategy prototype in a steampunk setting. Built client gameplay and server-side multiplayer with Photon, led a small team of artists, animators and 3D modelers, and tested simultaneous turn execution and early solo AI. The project ended when funding fell through.
ND2Dx: a GPU-accelerated 2D game engine on Flash Stage3D that outperformed alternatives such as Starling at the time. Features include a double-linked-list display hierarchy, batched rendering of thousands of objects per frame with minimal draw calls, 2.5D scenes and cameras, component and material systems, a timeline animation framework, and GPU-optimized bitmap fonts.
WorldGameMaker: a full game-development IDE built on ND2Dx, with live debugging, a component system, Nape physics integration, dynamic ActionScript loading, a property editor, a UI toolkit, and cross-platform publishing through Adobe AIR.
Used to build most of my games and apps from 2011 to 2016.
Space Cropper (2014) and Space Cropper 2 (2015): Qix-style arcade games, designed, coded and scored by me, with art adapted from Lostgarden. Both rated 8/10 on FGL.com; the first also received very good reviews on Newgrounds.
Memory Wizard (2015–2016): solo mobile memory game for children with light physics, covering design, art and engine-level optimization.
We Are Tennis Fans (2014): cross-platform iOS/Android promotional game for BNP Paribas at Roland Garros, with Stage3D graphics and native extensions.
Orange - Roland Garros (2013): Facebook game and interactive terminal on site at the tournament, with a Node.js backend for scoring and verification.
SoundQuest (2011–2012): Facebook game for Sony Ericsson, one of the first large promotional games to use Stage3D. It was the start of ND2Dx and WorldGameMaker.
Le Monde Déjanté de Sony Ericsson (2011): social game on Facebook, including the 2D engine and game logic.
Ernest & Celestine (2012–2013): cross-platform mobile app for the movie. Total (2014): iPad game for a contest.
Prototype (Activision, 2009): promotional website that let visitors connect with Facebook and see their own data and photos inside the game trailer, shortly after Facebook Connect launched. It drew international attention, including from Microsoft US.
BNP Paribas Fortis- Payback Time (2013): interactive video with personalized user images overlaid on a trailer, using complex masking at 30 fps in high quality.
Promotional sites for KIA (FreeYourWorld), Volkswagen (FearTracker, Blue Your Friends), Samsung (3D TV), Fanta (Less Serious) and Jacques Dutronc, covering animation, transitions, content and effects.
AI & LLM tools (2023 - present): built a prototype HR assistant that answers questions about an uploaded CV and compares it to job requirements; built a document parser with segmentation and embeddings (LlamaIndex) for summarizing and searching. Stack: Deno, Vue 3, TypeScript.
Blockchain & smart contracts (2017 - present): built and tested Solidity contracts on Binance Smart Chain and other EVM chains using Hardhat and Truffle; explored upgradeable patterns such as Diamond Proxy; prototyped dApps with Vue 3, Web3.js and Ethers.js, with attention to gas optimization and security.
Flash Meta Games (2013 - 2014): game portal aggregating Flash games with metascores and user feedback, built on PHP, MySQL and a heavily modified WordPress backend, with a custom crawler to collect game metadata.
Matrix Fall 3D (2004): open-source 3D Matrix screensaver in Visual Basic 6, which received several awards on Planet Source Code.
ND2Dx is a highly optimized 2D GPU-accelerated game engine I built using Flash’s Stage3D API. Designed for speed and flexibility, it significantly outperformed alternatives like Starling at the time, and powered the WorldGameMaker editor.
Custom 2D rendering engine leveraging Stage3D and shaders to push GPU performance to its limits, achieving blazing-fast rendering speeds.
Advanced display list system: Implemented a double-linked list hierarchy to allow for ultra-fast traversal and manipulation of 2D elements (sprites, containers, custom meshes, animated sprites, particles, etc.).
Rich visual capabilities: Support for tinting, blend modes, pivot points, color transforms, scaling, and full sprite animation.
Efficient batching system: Rendered thousands of objects per frame using GPU-optimized shader logic and minimal draw calls.
2.5D rendering, scenes, and camera system to allow more visual complexity while staying within a 2D framework.
Component and material systems: Fully integrated, lightweight, and flexible, allowing for modular object behaviors with near-zero performance cost.
Full animation framework with powerful timeline control, high speed, and ease of use.
Input and event handling: Custom mouse interaction system with a fast, signal-based event dispatcher.
Bitmap font support and rich text rendering optimized for GPU.
Exploited specific quirks of the ActionScript 3 virtual machine to squeeze out maximum performance.
Focused heavily on performance profiling, memory management, and GPU pipeline efficiency.
This project was a deep dive into low-level rendering, real-time graphics, and game engine architecture — and gave me a solid foundation for everything I’ve done in real-time rendering and performance optimization since.
ActionScript 3, Stage3D, ND2Dx, Nape Physics, Adobe AIR
WorldGameMaker is a custom-built game development IDE I originally created for our team at Reed.be while working on SoundQuest, a mobile game for Sony Ericsson. Flash’s default editor quickly proved too limited, especially with our desire to push visuals using Stage3D and GPU acceleration, so I started building my own.
What started as a basic level editor evolved into a full-blown development environment, tightly integrated with my custom 2D engine ND2Dx and packed with features tailored for game creation.
Built on top of ND2Dx: Fully leveraged my own GPU-accelerated engine for high-performance rendering and animation.
Full-featured IDE: Designed and developed an intuitive interface for creating, editing, testing, and exporting games and apps — all within a single environment.
Live Debugging & Testing: Run and debug games directly inside the editor with real-time updates and interaction.
Component System: Reusable and extensible components to streamline gameplay logic and object behavior.
Physics Integration: Initially built a basic physics system, then integrated the open-source Nape physics engine for more complex simulations.
Dynamic Scripting: Enabled dynamic loading of ActionScript code and real-time editing through a customizable property editor.
Cross-platform Publishing: Used Adobe AIR to export games and apps to both mobile and desktop platforms.
UI System: Developed a near-complete user interface toolkit within the editor for building menus, HUDs, and in-game controls.
Used extensively: Most of my games and apps during that time were built using WorldGameMaker.
It was built out of necessity but grew into a robust, production-ready tool that empowered both solo and team-based development.
It constantly evolved with my projects, making it both a creative playground and a technical deep-dive into engine/tool design.
Memory Wizard is a playful and dynamic memory game designed for children, combining traditional memory mechanics with fun physics interactions. Built entirely with mobile performance in mind, it was a solo project where I handled everything from game design to art and engine-level optimization.
Built the game from scratch using ActionScript 3 and my own ND2Dx engine, leveraging Stage3D for GPU-accelerated rendering.
Used WorldGameMaker, my in-house IDE, to speed up development and level design.
Designed and created all visual assets, including UI elements, characters, and animations.
Integrated a light physics layer to add engaging, real-time interactions for kids.
Optimized for mobile devices (performance, resolution, and input responsiveness).
This project was a fun intersection of creativity and technical problem-solving, and it gave me a chance to build a full experience, from engine to interface, entirely on my own tools.
ActionScript 3, Adobe Flash, Sound Design, Game Design
Space Cropper 2 is the sequel to my original action-arcade game Space Cropper, developed entirely in pure Flash and ActionScript 3. The game combines fast-paced gameplay, stylized visuals, and custom audio to deliver a polished arcade experience.
Sole developer: Handled everything from core mechanics to final polish — including animation, UI, sound design, and implementation.
Built entirely with native Flash display list and ActionScript 3, without relying on external engines or frameworks.
Designed dynamic gameplay and visual feedback systems to keep players engaged.
Created the entire soundtrack and sound effects, giving the game a distinct audio identity.
Visual assets were adapted from Lostgarden.com under an open art license.
Received a rating of 8/10 (“Great”) on FGL.com, a leading platform for publishing and monetizing Flash games.
SoundQuest was a 2D social video game developed for Facebook as a promotional campaign for Sony Ericsson. This project marked the beginning of both my ND2Dx 2D GPU-accelerated engine and the creation of the WorldGameMaker editor.
Built the entire game engine using Flash + Stage3D, including physics, effects, level editing, collisions, and rendering pipeline, laying the foundation for future tools and projects.
Developed highly responsive controls for the player’s dragon character, going through many iterations to get the feel and gameplay experience just right.
Created and used the WorldGameMaker IDE for building levels and managing assets, kickstarting a full-fledged development tool that evolved well beyond this project.
The game was one of the first large-scale promotional games to use Stage3D and pushed the tech further than most Flash projects at the time.
Successfully delivered a smooth, visually rich, and engaging game that was a major success for Sony Ericsson’s campaign.
This project was pivotal in my career, not just as a game, but as the start of a broader technical ecosystem that would power many of my later works.
Flash Meta Games was a web portal designed to aggregate and showcase Flash games, complete with metascores, user feedback, and game details collected from across the internet.
Built a custom Flash game portal using PHP and MySQL, on top of a heavily modified WordPress backend with a fully original theme.
Developed a custom web crawler and data collector to scan the internet for Flash games and gather associated metadata, including scores, comments, tags, and other useful stats.
Implemented a clean, user-friendly interface where visitors could discover, rate, and play Flash games directly on the site.
Focused on performance, metadata accuracy, and content organization to stand out from other generic game portals.
This project was part experimentation, part archival effort, a way to explore automation and game discovery.
Development of the interactive video using Flash Stage3D and ActionScript3.
The core idea is the same as for the Prototype. Overlay personalized user images on top of a trailer. This one was a bit trickier though as I needed to use complex masking techniques that needed to run at 30 fps in high quality mode.
Development of the promotional website for a blockbuster video game called Prototype, by Activision.
The idea was to allow people to connect to the website using their facebook account. The facebook connect feature had just made its appearance. We then integrated people's data (information & pictures) right into the video game trailer. This was probably the first time ever such a thing was being done. The website got international attention. Big brands such as Microsoft US contacted us.
Flash ActionScript 3
Whole website including animations, transitions, content and special effects
Fascinated by film since seeing the making of Star Wars as a kid. I still read and watch behind-the-scenes material, and write to directors whose films moved me (some answer).
Spent two and a half years backpacking through Australia and Asia, working on farms along the way. Since then, one or two short trips a year, mostly to meet people.