The work I would discuss in a Staff or Principal engineering interview: what the problem was, the scope I owned, the decisions that mattered, and what changed. Some commercial implementation details are private, so these accounts stay at the level I can share publicly.
Building a collaboration platform with many products inside it
I architected and led development of an enterprise collaboration SaaS with drive, office, chat, video, social, calendar and email. It became Optidata’s second-highest grossing product.
The constraint
Enterprises needed separation across services and, in some cases, dedicated infrastructure or data stored in a particular country. That requirement applied to WebSockets, databases, media, email and calendar services, not just the primary application.
The architectural decision
I made the tenant the shard boundary from day one. A central API operated by Optidata holds the tenant definitions; the service stack is separated by tenant. The same federation model supports a company on dedicated infrastructure and, for example, a US company storing its data in a US datacenter.
My scope and the team
I started the platform alone. The team grew to five including me, then 13, and later nine. As CTO / Head of Software I owned technical direction and architecture alongside engineering practices, tooling and delivery strategy.
Implementation and outcome
The platform used PHP/Laravel, Go, PostgreSQL, Redis, Ceph, Docker and Kubernetes. Tenant-level service separation shaped the system from the start; the resulting product became Optidata’s second-highest grossing.
The lesson: tenancy was an architectural boundary, not an account field added later. Applying it consistently across the service stack gave the product room to meet different customer infrastructure and data-location requirements.
Changing how the team builds software
Together with Jean Bianchi and the development team, I improved the system around delivery: how engineers learn, plan, review, test and use AI. Jean’s published account ↗
People and process
We acted on retrospective feedback, trained engineers across disciplines, redistributed responsibilities and adapted the process to the product’s needs, switching between continuous Kanban flow and monthly Scrumban sprints.
Automation and AI
We automated deployments, code review and tests, and planned internal improvements as sprint work. We trained the team on AI, encouraged experimentation and removed barriers to using it. The published account says roughly 90% of output now passes through AI at some stage, from requirements and documentation to code, review, tests and monitoring.
January to July 2026
Completed tasks rose from 170 to 348 per month (+105%). Effort points rose from 810 to 1,901 per month (+135%). Effort points per person rose from 68 to 211 per month (reported as +213%). These are month-to-month figures.
Same-period year-over-year comparison
For January–July 2026 versus January–July 2025, the development department averaged nine people instead of 17 and completed 32% more tasks. Tasks per person rose from 10 to 23.7 per month. This department-wide comparison has a different scope from the core platform team’s one-to-five-to-13-to-nine progression above.
What this demonstrates: this was a shared change in training, responsibility, process and tooling. The published account attributes the result to the combination, not to AI alone. Task counts and effort points are useful indicators of delivery, but they do not by themselves measure product value or software quality.
Building under clinical and operational constraints
Across three health technology companies, I worked on different parts of the software lifecycle: architecture and process, production medical imaging, and speech technology integration.
Amplimed · 2022–2025
As a technology consultant, I helped engineering teams address technical debt and architecture and process problems.
Animati · 2021–2022
Worked on a production radiology information system. Earlier research I co-authored on image transfer and visualization was used in the Animati medical image viewer. Read the research ↗
Iara Health · 2019–2021
Designed APIs, SDKs and pipelines for speech-recognition technology in medical environments.
The common thread: useful architecture depends on the environment in which software operates. In healthcare, integration and dependable workflows are as consequential as the model or feature at the center.
Building the tools I wanted other developers to have
Codebot
Game development involves more than editing code: finding assets, making sounds, building levels and preparing releases. I built an IDE around that larger workflow, then made it web-based. The design question was which recurring tasks the tool could absorb so a developer could stay focused on making the game. Explore Codebot ↗
cvui
OpenCV experiments needed fast, simple controls without requiring Qt or OpenGL. I created a UI library that renders with OpenCV drawing primitives, packaged it for straightforward adoption, documented it and maintained it in C++ and Python. Explore cvui ↗
Flixel Studio and community work
Flixel Studio brought an editor into the HaxeFlixel debugger. I have also co-maintained Flixel Community and contributed to HaxeFlixel. These projects taught me to design for other developers’ workflows and for maintenance beyond the initial release. Explore Flixel Studio ↗
Studying emotion without wearable sensors
My HCI research explored remote detection of players’ stress and boredom using computer vision and neural networks trained on psychophysiological signals, including heart rate and facial expressions.
Constraint
Capturing useful signals without attaching sensors to the player. That made the measurement method part of the research challenge.
Method and result
I combined computer vision, machine learning and experimental methods to investigate player experience, then published the work. The research connects my present interest in AI to earlier hands-on work with models, signals and evaluation.
There is more to the story: browse the project archive, read the writing archive, or get in touch.