GEM Tours — Project Horus
Solo
Next.js 16 · Vertex AI · Firestore vector index · Capacitor
Point a phone at an artifact in the Grand Egyptian Museum and hear its history in your language. 18k lines across 72 modules. Multimodal embeddings in a 1408-dimension vector index identify it in under 300 ms.
Inference cost treated as an architectural constraint: a three-tier cache ending in a shared Firestore store, so one visitor's generation serves every later visitor — ~$0.008 per visitor. Arabic-first, not retrofitted.
GeoFighters 2.0
Solo
TypeScript · Three.js · Svelte 5 · Rapier WASM · miniplex ECS · WebRTC
A browser-native co-op 3D shooter, 45k lines of it. Host-star WebRTC topology with 30 Hz snapshots on unreliable, unordered SCTP channels — see Instrument 02. TURN on :443/TCP after finding CGNAT is the norm on Egyptian and UAE mobile carriers, which is exactly the Capacitor build's audience.
Frame limiter skips frames before any work while the clock keeps accumulating, so the simulation stays real-time: 160 → 59 fps.
CARRY — After Hours Bowling
Solo
Three.js · Rapier · Capacitor · esbuild
16.5k lines with 17 test suites — one of which exists because of the bug in Instrument 03. Stone pins are genuinely heavier and resist falling; Glass pins genuinely lighter and fly. The pocket read grades arrival position, angle, pace and first contact, and can never cost you anything: ignore the system and you score exactly what you would have before it existed.
TELOS II — Senior Thesis
Siemens-sponsored · team of 7 · lead
FastAPI · Python · React · LLM evaluation · industry co-supervised
Measuring LLM sycophancy: can a recommendation adapt to evidence while resisting conversational pressure? The architecture's answer is that the model renders but never decides — action authority sits in a versioned, SHA-256-pinned YAML policy behind an independent decision guard, and the renderer gets a deep copy so it cannot mutate the decision.
Evaluation protocol is predeclared: 288 outputs per model per domain, with parse failures counted rather than silently discarded and a runtime fallback treated as a delivered outcome, not an exclusion. The README states plainly what it is not.
MVS Client Portal
METI · sole engineer
Laravel 12 · Next.js 16 · React 19 · MySQL · Playwright
A whole multi-tenant product, start to finish, alone. The interesting part is what it deliberately doesn't use: no data-fetching library, no form library, no client-state library, no schema-validation library — each decision written down in an ADR rather than defended after the fact.
Smart Red-Light Detection
Solo
C · FreeRTOS 11.1 · TM4C123GXL Cortex-M4 · arm-none-eabi-gcc
Six tasks across four priority levels, communicating only through queues, in an 11 KB image. SensorTask polls at 50 Hz behind a 150–2000 ms dwell-time filter that rejects both fast swipes and parked objects; ViolationTask is a pure dispatcher fanning out to independent alert, camera and log consumers.
Concurrency reasoned about rather than reflexively locked: the shared light state is single-writer/single-reader and documented as safe unlocked on this core, while UART — genuinely contended by three tasks — is mutex-protected.
Indoor positioning without beacons
Inside GEM Tours
DeviceMotion API · IMU dead reckoning · QR drift reset
PedestrianTracker.ts — step detection over raw device motion (1.2 g threshold, 0.7 m stride, five-sample moving average) integrated with heading into a running position estimate, then dead-reckoning drift reset at QR checkpoints. No beacons, no infrastructure, no per-museum install. Paired with haptic proximity feedback.
Pixel-Perfect
Solo
PyTorch · ESRGAN · RRDBNet · PSNR / SSIM / LPIPS
GAN super-resolution for pixel art over an ~89,000-image corpus, with a custom edge-aware sharpness loss. The decision worth the interview: training pairs are built by nearest-neighbour downsampling rather than bicubic, so the low-resolution input keeps blocky geometry instead of inventing smooth intermediates the model then learns to expect.
GymTrack
Solo
SwiftUI · SwiftData · Swift Charts · zero dependencies
Rewritten from a Next.js PWA to 7.3k lines of native Swift with no third-party packages at all. Personal records recognised on estimated 1RM, so heavier-for-fewer and lighter-for-more both count; kilograms are canonical in storage so switching units never rewrites history; unfinished sessions survive a force-quit and auto-close after twelve hours.
BMO — agent host
Solo
LiteLLM · MCP · launchd · Tauri · supply-chain audit
Built around its security posture — localhost-only, scoped writes, every dependency version-pinned because the host refetches unpinned npm plugins on every start. A maintainer-to-repository audit caught two namesquatted packages before they ran. Mail and screen contents are treated as data, never as instructions.
GuloGulo DMT
METI · team of 7
Next.js 16 · Laravel 13 · PostgreSQL + PostGIS · SSE · S3
Designed the visualization contract: a chart may never cost the reader the reply — the array is optional, each entry validates in isolation, nothing throws — and only data crosses the boundary. No HTML, script, style, colour, URL or chart config. It enforces the agent schema's own ceilings down to the GeoJSON property-key pattern, and reconciles a documented gap between two generated API specs.
Digital Alarm Clock
Coursework
Verilog · Vivado · AUC Digital Design II
882 lines across 15 modules — including a two-flop synchronizer for the asynchronous button inputs, a debouncer and a rising-edge detector, with the control-path and datapath diagrams to match.