Stack
Available for Projects
Stack
Available for Projects
Stack
Available for Projects
I use modern, battle-tested tools to ship production-grade apps that work across devices. I care about performance, maintainability, and making software that doesn’t make users want to scream. Whether it's building dashboards, pushing mobile updates, or yelling at Blazor’s routing for the tenth time this week, I’ve probably done it—and done it well.
Frameworks and Platforms

.Net Core
For APIs and server-side logic. I use it behind the scenes to keep things fast, secure, and not falling over.

.Net Core
For APIs and server-side logic. I use it behind the scenes to keep things fast, secure, and not falling over.

.Net Core
For APIs and server-side logic. I use it behind the scenes to keep things fast, secure, and not falling over.

Blazor
Powers most of the modern internal tools at Tonbridge. I moved the school from legacy .NET apps to Blazor-based SPAs, hosted in Azure, with a focus on maintainability and responsive UX.

Blazor
Powers most of the modern internal tools at Tonbridge. I moved the school from legacy .NET apps to Blazor-based SPAs, hosted in Azure, with a focus on maintainability and responsive UX.

Blazor
Powers most of the modern internal tools at Tonbridge. I moved the school from legacy .NET apps to Blazor-based SPAs, hosted in Azure, with a focus on maintainability and responsive UX.

Entity Framework
ORM of choice for working with SQL. I use it to make database work feel slightly less soul-crushing.

Entity Framework
ORM of choice for working with SQL. I use it to make database work feel slightly less soul-crushing.

Entity Framework
ORM of choice for working with SQL. I use it to make database work feel slightly less soul-crushing.

Flutter
My go-to for mobile apps. I use it to build performant, cross-platform experiences that don’t feel like compromises. I’ve launched several public apps with Flutter, including ones using real-time telemetry and Firebase integration.

Flutter
My go-to for mobile apps. I use it to build performant, cross-platform experiences that don’t feel like compromises. I’ve launched several public apps with Flutter, including ones using real-time telemetry and Firebase integration.

Flutter
My go-to for mobile apps. I use it to build performant, cross-platform experiences that don’t feel like compromises. I’ve launched several public apps with Flutter, including ones using real-time telemetry and Firebase integration.

Kotlin
Used in native modules and occasionally standalone projects. Gives me the power to drop into native when Flutter hits a wall.

Kotlin
Used in native modules and occasionally standalone projects. Gives me the power to drop into native when Flutter hits a wall.

Kotlin
Used in native modules and occasionally standalone projects. Gives me the power to drop into native when Flutter hits a wall.

SQL (Azure)
Every serious app I’ve built has a database under it. SQL is where I live when I’m not debugging CSS.

SQL (Azure)
Every serious app I’ve built has a database under it. SQL is where I live when I’m not debugging CSS.

SQL (Azure)
Every serious app I’ve built has a database under it. SQL is where I live when I’m not debugging CSS.

Supabase
My backend-as-a-service when I don’t want to babysit an entire server farm. I use Supabase for quick prototyping and shipping MVPs faster—auth, real-time databases, storage—all without writing boilerplate SQL until I really need to.

Supabase
My backend-as-a-service when I don’t want to babysit an entire server farm. I use Supabase for quick prototyping and shipping MVPs faster—auth, real-time databases, storage—all without writing boilerplate SQL until I really need to.

Supabase
My backend-as-a-service when I don’t want to babysit an entire server farm. I use Supabase for quick prototyping and shipping MVPs faster—auth, real-time databases, storage—all without writing boilerplate SQL until I really need to.

Swift
Used in native modules and occasionally standalone projects. Gives me the power to drop into native when Flutter hits a wall.

Swift
Used in native modules and occasionally standalone projects. Gives me the power to drop into native when Flutter hits a wall.

Swift
Used in native modules and occasionally standalone projects. Gives me the power to drop into native when Flutter hits a wall.
DevOps and Deployment

Azure
I moved Tonbridge’s core app and my personal projects hosting to Azure. I handle setup, security, deployments, and the occasional fire.

Azure
I moved Tonbridge’s core app and my personal projects hosting to Azure. I handle setup, security, deployments, and the occasional fire.

Azure
I moved Tonbridge’s core app and my personal projects hosting to Azure. I handle setup, security, deployments, and the occasional fire.

Firebase
Real-time data, push notifications, analytics—all baked into my Flutter apps. Especially handy for tracking user behavior and debugging on the fly.

Firebase
Real-time data, push notifications, analytics—all baked into my Flutter apps. Especially handy for tracking user behavior and debugging on the fly.

Firebase
Real-time data, push notifications, analytics—all baked into my Flutter apps. Especially handy for tracking user behavior and debugging on the fly.

GitHub
Source control and code reviews live here. Also where I vent via commits.

GitHub
Source control and code reviews live here. Also where I vent via commits.

GitHub
Source control and code reviews live here. Also where I vent via commits.
UI/UX

HTML/CSS/JS
Obvious, but worth mentioning. I still build interfaces by hand when needed, and I care about performance and accessibility.

HTML/CSS/JS
Obvious, but worth mentioning. I still build interfaces by hand when needed, and I care about performance and accessibility.

HTML/CSS/JS
Obvious, but worth mentioning. I still build interfaces by hand when needed, and I care about performance and accessibility.
Illustrator
I turn to Illustrator for designing vector-based UI elements like logos and custom illustrations that need to be crisp and scalable.
Illustrator
I turn to Illustrator for designing vector-based UI elements like logos and custom illustrations that need to be crisp and scalable.
Illustrator
I turn to Illustrator for designing vector-based UI elements like logos and custom illustrations that need to be crisp and scalable.
Photoshop
Photoshop is essential for me when editing images or creating detailed visual assets like icons or banners that enhance the user interface.
Photoshop
Photoshop is essential for me when editing images or creating detailed visual assets like icons or banners that enhance the user interface.
Photoshop
Photoshop is essential for me when editing images or creating detailed visual assets like icons or banners that enhance the user interface.

Tailwind CSS
I use it to build consistent, scalable UIs with actual design system sanity. It’s baked into both internal and public-facing tools I’ve worked on.

Tailwind CSS
I use it to build consistent, scalable UIs with actual design system sanity. It’s baked into both internal and public-facing tools I’ve worked on.

Tailwind CSS
I use it to build consistent, scalable UIs with actual design system sanity. It’s baked into both internal and public-facing tools I’ve worked on.
Ai and Integrations
(MIS Platforms) WCBS PASS, iSAMS, SIMS, Bromcom
Built integrations into MIS systems to sync student data, timetables, and assessment data. I’ve worked directly with these APIs (and sometimes their lack thereof), and built front-end interfaces that make the underlying chaos usable for real humans.
(MIS Platforms) WCBS PASS, iSAMS, SIMS, Bromcom
Built integrations into MIS systems to sync student data, timetables, and assessment data. I’ve worked directly with these APIs (and sometimes their lack thereof), and built front-end interfaces that make the underlying chaos usable for real humans.
(MIS Platforms) WCBS PASS, iSAMS, SIMS, Bromcom
Built integrations into MIS systems to sync student data, timetables, and assessment data. I’ve worked directly with these APIs (and sometimes their lack thereof), and built front-end interfaces that make the underlying chaos usable for real humans.

AppFigures
Pulled in mobile analytics and financial data for reporting dashboards and app performance monitoring. Because I like knowing what’s happening before things break.

AppFigures
Pulled in mobile analytics and financial data for reporting dashboards and app performance monitoring. Because I like knowing what’s happening before things break.

AppFigures
Pulled in mobile analytics and financial data for reporting dashboards and app performance monitoring. Because I like knowing what’s happening before things break.

ChatGPT (OpenAI & Azure Apis)
I integrate GPT models into apps to make them more intelligent and user-friendly—whether it’s summarising data, helping users write content, or automating repetitive tasks. It’s like adding a second brain to my apps, only this one doesn’t get tired or need snacks.

ChatGPT (OpenAI & Azure Apis)
I integrate GPT models into apps to make them more intelligent and user-friendly—whether it’s summarising data, helping users write content, or automating repetitive tasks. It’s like adding a second brain to my apps, only this one doesn’t get tired or need snacks.

ChatGPT (OpenAI & Azure Apis)
I integrate GPT models into apps to make them more intelligent and user-friendly—whether it’s summarising data, helping users write content, or automating repetitive tasks. It’s like adding a second brain to my apps, only this one doesn’t get tired or need snacks.
Discogs, Apple Music, Spotify
Used in personal and experimental projects to create interactive music apps, and in a vinyl record tracker.
Discogs, Apple Music, Spotify
Used in personal and experimental projects to create interactive music apps, and in a vinyl record tracker.
Discogs, Apple Music, Spotify
Used in personal and experimental projects to create interactive music apps, and in a vinyl record tracker.

Google Workspace
Integrated into school systems for calendar sync, document automation, and login flows. Bonus points for surviving both OAuth flows without crying.

Google Workspace
Integrated into school systems for calendar sync, document automation, and login flows. Bonus points for surviving both OAuth flows without crying.

Google Workspace
Integrated into school systems for calendar sync, document automation, and login flows. Bonus points for surviving both OAuth flows without crying.
Microsoft 365 Copilot
Integrated into school systems for calendar sync, document automation, and login flows. Bonus points for surviving both OAuth flows without crying.
Microsoft 365 Copilot
Integrated into school systems for calendar sync, document automation, and login flows. Bonus points for surviving both OAuth flows without crying.
Microsoft 365 Copilot
Integrated into school systems for calendar sync, document automation, and login flows. Bonus points for surviving both OAuth flows without crying.
OneSignal
Push notifications across web and mobile, integrated for both custom logic and Firebase-driven systems.
OneSignal
Push notifications across web and mobile, integrated for both custom logic and Firebase-driven systems.
OneSignal
Push notifications across web and mobile, integrated for both custom logic and Firebase-driven systems.
Collaboration and Productivity Tools
Notion
I use Notion to organize design projects, document ideas, and keep track of user research and feedback. It helps me stay structured and aligned with the team.
Notion
I use Notion to organize design projects, document ideas, and keep track of user research and feedback. It helps me stay structured and aligned with the team.
Notion
I use Notion to organize design projects, document ideas, and keep track of user research and feedback. It helps me stay structured and aligned with the team.