2048
A from-scratch 2048 clone in vanilla JavaScript, with no frameworks and no build step. Exercises board-state logic, animation timing, and a clean split between game logic and rendering.
A software developer based in South Africa, building applications across web and desktop since 2015. My primary stack is C# and .NET, but I pick up whatever a project actually needs.
I've been developing software since 2015, starting with desktop applications and steadily moving into the web, where I now spend most of my time.
These days I work full-stack: building rich, interactive frontends with Blazor and connecting them to robust APIs and services on .NET. I care about clean code, solid architecture, and writing software that's pleasant for the next person to maintain, even if that person is future-me.
Outside of code I design logos and brand assets. It's a habit from the early days that still informs how I think about user interfaces. If a button looks off, I'll notice.
A from-scratch 2048 clone in vanilla JavaScript, with no frameworks and no build step. Exercises board-state logic, animation timing, and a clean split between game logic and rendering.
A classic Minesweeper, also built dependency-free in vanilla JavaScript. Covers recursive flood-fill reveal, game-state management, and multiple difficulty levels.
A WPF desktop app for logging service history across multiple vehicles, with cost and mileage charts per vehicle. Built with MVVM and data-binding throughout, backed by EF Core and SQLite.
An expense tracker built the way production Blazor apps actually work. It uses a standalone WebAssembly client calling a separate ASP.NET Core Web API, backed by EF Core and SQLite, with category budgets and spending charts.
Looking for downloadables? See downloads →
Foundational programming, software design, databases & systems analysis.
A small app I've built. Free to download, and feedback is always welcome.
A desktop app for logging service history across multiple vehicles, with cost and mileage charts per vehicle.
More apps coming. ← back home