Software Engineer · Solutions Architect

I build scalable software for web, native, and real-time systems.

Software engineer with production experience across web, mobile, embedded, and 3D. I build event-driven backends, ship cross-platform clients, and craft interfaces with the kind of polish people remember - from WebSocket fleets and digital signage to Unity engines and creative engineering work.

RTMS · WebSocket Tizen · webOS Vue · Nuxt C++ · Unity Android · Flutter
0
Years shipping production code
0
Languages & runtimes used in anger
0
Signage platforms unified behind one API
0
FPS sustained on 5k-particle engine

Where I work

One engineer, multiple disciplines - production-grade across all of them.

Years of shipping real software across web, native, embedded, and 3D - held together by a consistent set of architectural principles and a refusal to leave loose ends.

01

Web & Backend

TypeScript-first development across Vue, Nuxt, Angular, and Node. I architect frontends that scale and APIs that don't break under load.

TypeScriptVue 3Nuxt PiniaNode
02

Native & Mobile

Android, Flutter, Kotlin, Java, and C# - mobile and desktop clients built with the same care I give the backend, and the same eye for performance.

FlutterAndroidKotlin C#Riverpod
03

Real-time & Embedded

Tizen signage, WebSocket fleets, and the orchestration layer that ties devices to cloud. Long-lived connections, retry semantics, observability.

TizenWebSocketwebOS Android TV
04

3D & Engines

C++ with SDL3 and Unity for engines and tooling. Three.js and shaders for the web. Performance budgets, design patterns, and rendering fundamentals.

C++SDL3Unity Three.jsPixiJS

Selected case studies

Three projects, three architectural problems.

Each case below was selected because it shows a different muscle - distributed messaging, cross-platform device fleets, and creative engineering - under real product constraints.

RTMS CLIENT → SESSION ROUTER → CLIENT

01 · Graduation · Architecture

RTMS - Real-Time Messaging & Management Server

A reusable platform connecting digital media installations to web, mobile, and backend systems. Built on a session-first model with tenant isolation, secure routing, and end-to-end observability.

  • Bidirectional WebSocket pipeline with reconnection and backpressure
  • Session lifecycle: create, join, leave, expire, route, audit
  • Security-first: JWT, RBAC, isolation, full negative-test suite
  • Telemetry: p95 latency, reconnect rate, error budgets, correlation IDs
PLATFORM ADAPTER LAYER TIZEN WEBOS ANDROID TV ONE CODEBASE THREE OS NO FORKS

02 · Digital Signage · Devices

Smart Display Player - Tizen / webOS / Android TV

A unified media player architecture deployed across TV signage platforms. Schedule-driven playback, remote diagnostics, and a thin platform-adapter layer that lets one codebase serve three operating systems.

  • Platform-specific APIs hidden behind a clean adapter contract
  • Image, video, HTML, and live-template playback flows
  • Remote diagnostics: screenshots, metrics, soft restart, OTA
  • Maintainable across Tizen, webOS, and Android TV - no forks
01 · GSAP Choreography & timelines 02 · PIXIJS High-performance 2D 03 · THREE.JS Interactive 3D systems MOTION · PARTICLES · 3D

03 · Creative Engineering

Premium UI, WebGL & interactive systems

Interfaces that lead with motion: GSAP for choreography, PixiJS for performant 2D, and Three.js for 3D explainers. Used to make engineering work tangible during stakeholder demos and recruitment conversations.

  • GSAP timelines for scroll, sequencing, and micro-interaction
  • PixiJS for high-performance 2D backgrounds and visualization
  • Three.js for 3D architecture diagrams that respond to input
  • Accessibility, reduced motion, and progressive enhancement built in

Stack & tooling

The tools I reach for, organised by job.

Languages and frameworks are means to ends - the picks below reflect what I've shipped to production, not what I've skimmed a tutorial on.

Frontend & UI

Component architecture, state, and motion that doesn't fall apart at scale.

Vue 3Nuxt 3Angular TypeScriptPiniaTailwind GSAPThree.jsPixiJS

Mobile & Native

Cross-platform clients with native polish - and the patience to debug platform quirks.

FlutterRiverpodAndroid KotlinJavaC# TauriAvalonia

Backend & Infra

APIs, sockets, and the ops layer that keeps long-lived connections honest.

NodeWebSocketREST JWT · RBACMySQLSupabase Docker

Embedded & Signage

Devices that need to run for months, recover from anything, and tell you when they don't.

TizenwebOSAndroid TV Remote diagnosticsOTA

Engines & 3D

Performance budgets, spatial structures, and the patterns that keep engines maintainable.

C++SDL3Unity QuadTreeObject poolingDesign patterns

Quality & Practice

Tests, docs, and trade-off documents - the unglamorous half of software engineering.

Unit + integrationNegative tests ObservabilityThreat modelling ADR

Architecture in practice

How I think about systems.

A diagram is a contract. Below: how visitors, operators, and devices flow through the platforms I build - and the supporting layers that make production survivable.

Mobile / Web UI visitor · operator · customer
RTMS sessions · routing · policies
Media Player Tizen · webOS · Android TV
Backend APIs auth · data · commands
Observability logs · metrics · tracing
Security tokens · roles · isolation
01 · Clarity

Design for clarity

Diagrams, demos, and measurable outcomes. Architecture should be legible to a software engineer and a director on the same call.

02 · Change

Build for change

Adapters, boundaries, and small modules. Tizen, Android, Flutter, and the web should evolve on independent timelines without forced rewrites.

03 · Proof

Prove the work

Tests, latency numbers, reconnect behaviour, threat models. Trade-off documents over screenshots - every time.

Let's build something

Engineering is the product. The receipts are public.

RTMS, signage, mobile, and creative engineering work - backed by repos, diagrams, and metrics. If you're hiring software engineers or planning architecture for a real-time platform, I'd like to hear about it.