Languages
Used for product code, application architecture, utilities, automation, and data-heavy workflows.

I enjoy working across layers because the most interesting problems rarely stay in one place. A slow screen might be a query issue. A clumsy workflow might start in the UI but end in application logic. A product that feels simple usually depends on careful decisions underneath it.
That is the part of software I like most: understanding the whole system. UI, application logic, databases, APIs, AI workflows, computer vision, and desktop software all become more useful when designed to work together instead of being bolted together.
Based in Cambridge, UK, I build products that aim to be technically serious and pleasant to use. Not just functional. Not just visually polished. Both.
Typed, modular, boring-by-default code that explains itself under pressure. Engineered from interface to data, not just the visible layer.
Turning ambitious design into real, responsive, maintainable interfaces without dumbing down the visuals or killing performance.
Fast static sites, edge-rendered pages, reusable UI systems, and deployment pipelines that actually keep working after launch.
Using AI and computer vision where they add real value: barcode pipelines, nutrition lookup, recipe reasoning, vision features. No buzzwords.
Thoughtful flows, keyboard-first navigation, editorial typography, and interfaces that feel deliberately composed instead of improvised.
Relational schemas, local offline-first stores, edge object storage, and data boundaries that keep systems understandable long-term.
The stack is grouped by how I actually use it. The lab is where the work becomes interactive.
Used for product code, application architecture, utilities, automation, and data-heavy workflows.
Where desktop products, installers, and local-first workflows come together.
Schemas, indexing, structured local data, and persistence decisions that keep products stable.
The delivery layer: web interfaces, interactive systems, computer vision, APIs, and deployment.
A full desktop product story around barcode scanning, nutrition data, AI recipe discovery, and local-first architecture.
An interactive technical map that turns the stack into a navigable experience instead of a wall of logos.
Small utility products that demonstrate product thinking, browser UX, and useful interaction design.
A small performance-conscious browser game that adds personality without compromising the portfolio.
Press M to open the command palette and jump through the site like a tool, not a brochure.
No invented clients, no inflated metrics, no filler. Just the genuine progression — from first lines of code shipped outside tutorials to the current phase of building evidence-first product work with clear engineering judgement beneath it.
Started with web fundamentals, then moved quickly into scripting and application logic. That early stretch taught me how software behaves beyond tutorials — files, state, inputs, and failure.
Built first website from scratch without frameworks
Learned by shipping small utilities rather than copying tutorials
Started exploring how software behaves across UI, files, and logic
Moved from isolated features into complete software systems — desktop interfaces, structured data, and applications that had to keep working beyond development.
Built desktop software with Java and structured local persistence
Worked across UI, application logic, and data modelling
Started treating maintainability as part of the product
Pushed deeper into AI-assisted applications and computer vision. FoodFinder brought together barcode scanning, nutrition workflows, recipes, local storage, and product thinking in one system.
Built a working barcode-to-recipe desktop experience
Combined AI workflows with practical application architecture
Used OpenCV / JavaCV in a product context, not just an experiment
Expanded into products that needed packaging, updates, deployment, and sharper UX. The work became less about isolated features and more about full product systems.
Built desktop and web products with stronger delivery polish
Worked across distribution, release workflows, and product clarity
Focused more on systems that feel good to use, not just ones that function
The current phase is about raising the bar: stronger product storytelling, more interactive technical work, and software that proves how I think across interface, logic, data, AI, and delivery.
Refining portfolio and case-study presentation around real products
Exploring AI-assisted applications, modern desktop software, and interactive web experiences
Using the web itself as a way to demonstrate engineering judgment
Product work, engineering hires, collaborative problems, or technically ambitious things that need someone comfortable from the interface down to the data layer. Send a note — replies are human, fast, and direct.