#001

PromptCoach

CLI + Chrome extension that coaches developers toward efficient AI prompting — UNSW CSESoc Flagship Hackathon finalist (team project).

How it works

AI-assisted coding wastes tokens on bloated prompts with no feedback loop. PromptCoach turns that repeated waste into a one-time cost.

One shared analysis core behind a CLI and Chrome extension (TypeScript/Next.js + FastAPI, Drizzle ORM on Cloudflare D1). Coaching is opt-in via a review: prompt prefix — ordinary prompts never leave the machine; a local bridge falls back to offline heuristics. Hosted analysis runs through Anthropic’s Batches API on Haiku at ~2% of a frontier model’s energy per task, with environmental impact reported as a sourced, uncertainty-labelled range. Local-first, no telemetry.

TypeScriptNext.jsFastAPICloudflare D1Claude API
#002

IMC Prosperity 4: Algorithmic Trading

Solo competitor in IMC Prosperity 4, finishing top 10% worldwide and top 200 in Australia out of 22,000+ global teams across 5 rounds of algorithmic and manual trading.

How it works

The challenge: keeping a market-making engine profitable across changing volatility regimes without overfitting to any single one.

Built a three-tier market-making engine (take/clear/make) using Welford online mean, online AR(1) on price deviations, z-score tiered sizing, and asymmetric bid/ask anchoring. Built a separate trend-following MM with hardcoded-slope discovery, online OLS blending (70/30), and full-book order imbalance microprice adjustment.

PythonAlgorithmic TradingMarket MakingStatistics
#003

Streaming Maze Engine

Full-stack maze platform with a C++20 generator hitting ~38 Mcells/s single-threaded (≈2× a published C# baseline) and ~92 Mcells/s on 8 cores, streaming 10-billion-cell mazes in O(width) memory, with real-time multiplayer and a WebGL2 renderer.

How it works

Generating a 10-billion-cell maze at full resolution should take terabytes of memory. Getting it under tens of MB while supporting thousands of real-time players is the actual constraint.

Eller’s algorithm with within-row strip parallelism (std::barrier) and AVX2/BMI2 SIMD wall packing (serialisation CPU share: 40% → <5%). FastAPI + Redis pub/sub broadcasts WebSocket moves across K8s pods (p99 RTT 3.3 ms at 100 bots). WebGL2 corridor renderer: one GPU draw call per 64×64 chunk, 512-entry LRU buffer cache, 60 fps with zero React re-renders. One-command AWS deploy via Terraform + EKS + RDS + ElastiCache + S3 + CloudFront. ≥70% pytest + GoogleTest coverage enforced in CI.

C++20AVX2 / SIMDPython / FastAPIReact / WebGL2RedisAWS / Kubernetes
#004

Slide Games

Python framework (published on PyPI) that compiles arcade game logic into fully playable Google Slides via BFS state enumeration: one slide per reachable state, hyperlink-navigated.

How it works

No runtime, no JavaScript, no server. Just a shareable URL that plays a full arcade game.

1,000-state ceiling bounds exponential growth (Pac-Man scales as positions × 2ⁿ with n pellets). Token-bucket rate limiter at ≤50 API writes/min with 5 concurrent batch uploads generates ~500-state presentations in 1–3 min. Pygame-inspired 1920×1080 rendering API with 40+ colours and 3 themes; campaign system across 4 bundled games (491–600 states each).

PythonGoogle Slides APIBFSPyPI
#005

PixelVault

Python file-to-video codec that encodes any file into MP4 for lossless storage on YouTube, recovering the original file exactly despite H.264/VP9 re-encoding.

How it works

YouTube lossy-compresses every uploaded video. Storing arbitrary binary data there without any corruption is the problem.

2×2 uniform pixel blocks survive ±127 DCT luma ringing in H.264/VP9. Three-tier Reed-Solomon ECC over GF(2⁸) (vectorised → Berlekamp-Massey → parallel) with byte interleaving for burst-error recovery. AES-256-GCM + PBKDF2-SHA256 encryption, zlib compression, and 38× faster encoding at 0.82–2.88 MB/s via NVENC/AMF/QSV hardware acceleration with YouTube OAuth2 upload.

PythonFFmpegReed-Solomon ECCYouTube APINumPy
#006

ASCII / Unicode Art Converter

Zero-dependency, fully client-side ASCII/Unicode art converter: 7 character modes, 3,163-codepoint Unicode pool, 123-emoji mosaic, image/video/webcam input.

How it works

The problem: faithfully mapping full-colour images to text characters at 30 fps without losing perceptual detail.

O(1) nearest-colour lookup via a precomputed 32³ = 32,768-entry RGB quantisation table enables 30 fps video at ~2.1 ms/frame. Implements Floyd-Steinberg, Atkinson, and Bayer dithering, Sobel edge detection, and a particle drift system. Supports 6 export formats (PNG, SVG, TXT, WebM via MediaRecorder API) and reports live render time at 1920×1080.

TypeScriptCanvas APIAstro
#007

Quantum Random Number Generator

QRNG using all-Hadamard circuits on Qiskit, with bit outcomes governed by Born-rule probability, a full NIST SP 800-22 / 800-90B statistical pipeline, and an MT19937 state-recovery attack demonstration.

How it works

Statistical tests can't distinguish a good PRNG from a quantum source. The real distinction: a PRNG's full state is recoverable in 624 outputs; a quantum source has no state to recover.

An n-qubit all-Hadamard circuit yields n bits with p=0.5 per bit; by Bell’s theorem no hidden variable predicts the outcome. Implements 8 NIST SP 800-22 tests from scratch + full 15-test battery, fixing 2 bugs in nistrng (shared-array mutation and incorrect LC binning that caused good random data to fail). SP 800-90B MCV/Markov min-entropy estimators; MT19937 state-recovery in 624 outputs; quantum-seeded AES-256-GCM encryption. Runs on Qiskit simulator or IBM Quantum hardware.

PythonQiskitIBM QuantumNIST SP 800-22Streamlit
#008

Black Scholes Option Calculator

Real-time options pricing engine with interactive visualisation of volatility and time-decay across 2,500+ scenarios.

How it works

Options pricing surfaces are non-linear and hard to reason about statically. The goal: interactive visualization across 2,500+ scenarios that updates instantly.

Built a real-time pricing engine using the Black-Scholes-Merton formula with vectorized NumPy/SciPy computations, 3D Matplotlib surfaces, and Seaborn heatmaps, simulating 2,500+ scenarios instantly in Streamlit.

PythonStreamlitQuantitative Finance
#009

Palimps: Stochastic Text Generation

Infinite, context-aware prose generation from any text corpus, without a neural network.

How it works

Markov chains lose context fast. Getting coherent, unbounded prose without a neural network means working around that.

Built an n-gram Markov Chain engine with a dynamic backoff strategy for zero-probability states, NLTK POS tagging for grammatical coherence, and binary serialization that cuts initialization time by 85%.

PythonNLTKMarkov Chains