I build software that sits at the intersection of code and design - from interactive creative-coding projects to practical tools and experiments, always with an eye on how something actually feels to use.
Third-year CS + Interaction Design student at QUT, where I try to make sure the software I write is as considered to use as it is technically interesting to build.
Most of what lives here spans creative coding, applied AI, and interface-driven projects: things built to actually be used, not just to demonstrate that they can exist.
The Graph: every note as a node, linked by meaning, with the reason for each link written down.
A local-first notebook with a local AI librarian. You type a thought and the AI files it. You ask a question in plain English and get a conversational answer and the notes behind it, side by side, each sentence linked to the note it came from. The whole thing runs on your own machine: no account, no cloud, no telemetry, and it keeps working with no model installed at all.
What makes it different
- Your notes as a map. A force-directed graph coloured by category and linked by meaning; a timeline of everything by when it happened; a dashboard with your streak, digest and widgets.
- An agent that acts, and shows its work. 58 tools to search, link, tag, remind, organise and place cards on a board; every step visible; anything destructive asks first. 20 built-in skills run multi-step jobs as a checklist.
- Long-form writing and a canvas. A Markdown document editor with live view, version history and AI edits as diffs; a whiteboard for sketches, shapes and note cards that can become a mind map grown from your notes.
- One Library for everything. Notes, documents, chats, files, tags and the recycle bin. Every image read three ways: a caption, a vision-model transcription and OCR, all searchable. PDFs, spreadsheets and code imported with their text.
- Atlas. An in-app guide that answers "how do I" from the app's own documentation, never from your notes.
- Private by construction. Localhost only, no CDN assets, notes in a plain SQLite file, private notes encrypted at rest, web search opt-in and query-only.
- Designed, not assembled. One design system enforced by lints; ten themes over colour palettes; responsive from a phone to a desktop; a packaged Windows installer and Linux build.
Under the hood
Stack: FastAPI · SQLAlchemy · SQLite · vanilla JS (no framework, no build step) · CodeMirror 6 for documents · a canvas graph renderer with a layout worker · Ollama or any OpenAI-compatible server (LM Studio, llama.cpp, Jan, vLLM) · BAAI/bge-small-en-v1.5 for local semantic search · local Whisper dictation · Tesseract OCR
Engineering: 4,000+ pytest tests, all offline with every AI call faked · Playwright sweeps that measure the interface (console errors, contrast, touch targets, dock grammar) in both themes at four widths · CodeQL on every push · a release workflow that starts the packaged app before it publishes it
Built with AI, deliberately. MemoryMap was developed in collaboration with Claude (Claude Code) as an experiment in how far an AI-assisted solo project can go when the design decisions, the tests and the measurements stay human-owned. About 1,300 commits went into the 0.3.0 release alone.
Models that work well (ollama pull <model>): llama3.2 · granite4.1:3b · qwen3.5:2b · gemma4:e2b
🧬 HELIXLABS - Microbiome Simulation
An interactive microbiome simulator built with p5.js. Sequence alien base proteins to synthesise unique organisms, introduce them into a living petri-dish ecosystem, and watch emergent species behaviour unfold in real time - competing, coexisting, and evolving.
Started as the final assessment for QUT's DXB211 Creative Coding unit. Became one of my largest projects to date and was exhibited publicly at The Lanes, Fortitude Valley, Brisbane (July 2026) as part of QUT's Creative Coding exhibition, and also shown at the Queensland Games Festival (June 2026).
🏆 Won the DXB211 Tutor's Prize for Creative Coding.
Features & technical details
Core mechanics
- Procedural species generation - 26 alien base proteins combine via
NodeClass.jsto produce organisms with distinct traits; no two sequences behave identically - Ecosystem simulation - species interact, compete, and coexist dynamically; behaviour is fully determined by DNA sequence
- Click & drag interaction - physically move individual organisms around the environment
- Randomise function - instant random DNA sequence for quick experimentation
UI & audio
- Species Index - in-simulation encyclopedia cataloguing every species introduced
- Ambient audio engine - custom
BackgroundAmbienceManager.jsdynamically layers sound based on simulation state - Tutorial & hint popups - built-in guided walkthrough for first-time players
- FPS performance overlay - real-time monitoring
- Custom notification system - via
Notification.js
Stack: JavaScript · p5.js · p5.sound · GitHub Pages (auto-deploy via Actions)
Controls
| Input | Action |
|---|---|
| Type letters (A–Z) | Define your DNA sequence |
| Click environment | Spawn and introduce your species |
| Click & drag | Move individual organisms |
| Randomise button | Generate a surprise sequence |
Platform support: PC/Laptop (Windows & Linux)
Generative and interactive visual experiments built with p5.js - animation, colour, form, and interactivity. Feeding into a planned personal portfolio site.
A specialised AI agent for turning rough ideas into production-ready prompts - routing structured output across ChatGPT, Claude, Gemini, Midjourney, DALL·E, Sora, and more.
Fine-tuning & system design details
System design
- Three modes:
DUAL·PROMPT-ONLY·ADVICE-ONLY - Three complexity tiers:
BASIC·STANDARD·EXPERT - 4D build process: Deconstruct → Diagnose → Develop → Deliver
- 7D rewrite framework, Prompt Linter, Mini QA Gate, Assumption Ledger, output Scorecard
Fine-tuning
- Base:
Meta-Llama-3.1-8B-Instruct(4-bit quantised via Unsloth) - Trained with HuggingFace TRL
SFTTraineron Google Colab (NVIDIA A100) - LoRA:
r=64,lora_alpha=128, RSLoRA -q/k/v/o/gate/up/down_proj - v10: ~2,693 training examples, refined with Claude Sonnet 4.5 / 4.6
- Exported as GGUF
q4_k_mfor local inference via llama.cpp · Ollama · Open WebUI · Jan
- News Accuracy Checker - Python tool for evaluating factual accuracy of news articles
- Hospital Management System - C# system covering patient management, scheduling, and admin workflows
- Personal Portfolio - p5.js creative graphics + photography + design work
Languages
AI / ML
LoRA / SFT fine-tuning · GGUF quantisation · Local LLM deployment · Unsloth · llama.cpp · Agentic workflows · AI-assisted engineering with tests and measurements as the gate
Backend & tooling
Design
Canon EOS R50 · Landscape, street, portrait, and creative photography
QUT - 2024–2027 Bachelor of Information Technology (Computer Science) / Bachelor of Design (Interaction Design)
Full coursework
| Year | Sem | Code | Unit |
|---|---|---|---|
| 1 | 1 | IFB102 | Introduction to Computer Systems |
| 1 | 1 | IFB103 | IT Systems Design |
| 1 | 1 | IFB104 | Building IT Systems |
| 1 | 1 | IFB105 | Database Management |
| 1 | 2 | CAB201 | Programming Principles |
| 1 | 2 | CAB222 | Networks |
| 1 | 2 | IFB240 | Cyber Security |
| 1 | 2 | QUT009 | Data Science for Society |
| 1 | 2 | QUT010 | People with Robots |
| 2 | 1 | IFB201 | Introduction to Enterprise Systems |
| 2 | 1 | CAB203 | Discrete Structures |
| 2 | 1 | CAB302 | Software Development |
| 2 | 1 | QUT008 | Thinking Like a Computer |
| 2 | 1 | QUT001 | Artificial Intelligence in the Real World |
| 2 | 2 | EGB202 | Microcontrollers & Digital Systems |
| 2 | 2 | DYB122 | Design Visualisations |
| 2 | 2 | DYB123 | Emerging Design Technologies |
| 2 | 2 | DYB124 | Design Consequences |
| 3 | 1 | CAB301 | Algorithms & Complexity |
| 3 | 1 | DXB211 | Creative Coding |
| 3 | 1 | DYB121 | Introduction to Design Fabrication |
| 3 | 1 | DYB101 | Impact Lab: Place and Context |
| 3 | 2 | CAB432 | Cloud Computing |
| 3 | 2 | DXB212 | Tangible Interaction Design |
| 3 | 2 | DXB111 | Introduction to Web Design |
| 3 | 2 | DYB102 | Impact Lab: Society and Systems |
Coomera Anglican College - 2009–2023 Year 12 Graduate · Mathematical Methods · Digital Solutions · Design · Film, TV & New Media · Chemistry
| Award | Issued by | Date |
|---|---|---|
| 🏆 Executive Dean's Commendation for Academic Excellence | QUT - Faculty of Creative Industries, Education, and Social Justice | Jul 2026 |
| 🏆 DXB211 Creative Coding Tutor's Prize | QUT - Bachelor of Interaction Design | Jul 2026 |
| 🏆 Executive Dean's Commendation for Academic Excellence | QUT - Faculty of Science | Jul 2024 |
| 🥈 Duke of Edinburgh Silver Award | Duke of Edinburgh's International Award | 2023 |
| 🥉 Duke of Edinburgh Bronze Award | Duke of Edinburgh's International Award | 2021 |
- Completed a national Cyber Security Work Experience Program (2023) - selected alongside participants from across Australia
- Member: AISA (Australian Information Security Association) · ACS (Australian Computer Society)
- Associate, Topgolf Gold Coast (Jun 2024 – Present)



