Skip to content
Back

◆ — Projects

Work.

Data engineering, cloud infrastructure, mobile, and web platforms.

University coursework, revived

Project timeline

Each node is a project. Hover to read, click to jump.

39 projects

Since 2019 · spanning 10 domains

AI / MLBiotechClimate ResearchCloud / HPCEducationGovernmentOpen SourcePersonalResearchStartup
Featured — FlagshipLive · v1.14

Signal

Governance Layer for AI-Assisted Government Data

Personal · Open Source·Jun 2026 – Present

A governed data product that puts AI governance on the request path — tamper-evident hash-chained audit logs, auto-generated DTA and EU AI Act compliance artefacts, and faithfulness-checked LLM narratives. The live reference implementation analyses South Australian and NYC crime statistics with Mann-Kendall trend tests, Sen-slope forecasting, and z-score anomaly review.

Live deployment · 128 tests · Tamper-evident audit + DTA v2.0 governance set · Open-core product

A tamper-evident audit log as a chain of hashed records. The newest record, the live end of the chain, is red.

Stack

PythonFastAPILLMModalPydantic v2NumPySciPyDockerGitHub ActionsEU AI ActDTA v2.0

Domain

AI / ML · Open Source

⌕

NSW Strata Law Guide

Interactive Calculators for Strata Scheme Management

Personal·Apr 2025 – Oct 2026

I rebuilt this in 2026 to turn a static information page into calculators that each cite the provision they apply. The calculators cover meeting quorums (Schedule 1 clause 17 and Schedule 2 clause 12), levy shares by unit entitlement (section 83(2)), and the thresholds for ordinary, special and unanimous resolutions (section 5 and Schedule 1 clause 14), checked against the Strata Schemes Management Act 2015 on 11 October 2026. This is an informational tool only, not legal advice.

Impact

3 calculators · Meeting quorum, levy distribution, resolution requirements · Informational, not legal advice

A strata building whose three floors follow unit entitlements of 1, 1 and 2, with a disc per lot sized by its levy share: a quarter, a quarter and a half.

Stack

Next.jsTypeScriptReactTailwindVitestPlaywrightVercel

Status

Live

Completeupdated Oct 2026
  • Revived (done)
  • Upgraded (done)
  • Guided tour (done)
  • Merged (done)

Domain

Government · Personal

brewscope

Read-Only macOS Homebrew Inspector

Personal · Open Source·Oct 2026

A read-only terminal tool that explains what your Homebrew setup actually does on macOS. It shows which packages overlap or shadow each other, how often you and your AI agents use each one, and what a move to a new Mac needs to carry across. It is built for AI coding agents first, with JSON on stdout, stable schemas, meaningful exit codes and no prompts, while people at a terminal still get a readable table. The web demo demonstrates brewscope's capabilities in the browser with synthetic output.

Impact

Read-only inspection · No side effects · JSON API for AI agents · Web demo with synthetic data

Two overlapping sets of Homebrew packages. The overlap, where one package shadows another, is drawn densest. The sizes are illustrative.

Stack

PythonNext.jsTypeScriptTailwindVercel

Status

Live

Completeupdated Oct 2026
  • Revived (done)
  • Upgraded (done)
  • Guided tour (done)
  • Merged (done)

Domain

Open Source · CLI

Timezone Calendar Visualisation

Weekly Calendar with Timezone Switching

Personal·Oct 2024 – Oct 2026

I revived a 2024 timezone calendar prototype. The original embedded a live calendar, so this version uses synthetic events instead, which makes it safe to share. Events are generated in the browser from a fixed seed (2026), so the demo is reproducible and shows no real schedule. The grid runs Monday to Sunday by the hour, colour-coded into work, meetings, focus time and personal events.

Impact

9 timezone options · Seeded synthetic events (seed: 2026) · Week view grid · Demo uses labelled synthetic events

Nine timezone bands, Los Angeles to Melbourne, each the same 9 to 5 local working day shifted along a 24-hour UTC axis by the city's standard-time offset.

Stack

Next.jsTypeScriptReactTailwindVitestPlaywrightVercel

Status

Live

Completeupdated Oct 2026
  • Revived (done)
  • Upgraded (done)
  • Guided tour (done)
  • Merged (done)

Domain

Personal

Data Engineer BootCamp

Notes and Exercises from DataTalksClub Zoomcamp 2024

Personal · Open Source·Jan 2024 – Oct 2026

Personal study notes and code following the DataTalksClub Data Engineering Zoomcamp 2024, a free hands-on course that builds an end-to-end data pipeline on NYC taxi data. All seven weeks are done: I completed Week 1 (Docker, Postgres, ingestion) in 2024, and weeks 2 to 7 in October 2026 with Claude as a pair programmer, covering workflow orchestration, the data warehouse, analytics engineering with dbt, batch processing (pandas, with the PySpark equivalents), stream processing with Redpanda and the course project, using free local stand-ins for the Google Cloud services. The weekly exercises answer the official 2024 homework with numbers computed by code in the repo, with tests in CI. The course project is a batch pipeline over South Australia's public road crash data from 2012 to 2025 (Prefect, a Parquet lake, dbt on DuckDB, and Terraform for the local folders and a Docker run in CI) feeding a dashboard of three charts and supporting tables, run locally and in CI rather than in a cloud.

Impact

All 7 weeks complete · Official homework answered from code · Course project: SA road crash pipeline and dashboard · Tests in CI

Seven week blocks joined like a pipeline, all seven filled.

Stack

PythonDockerPostgreSQLPrefectdbtDuckDBTerraformVercel

Status

Live

Completeupdated Oct 2026
  • Revived (done)
  • Upgraded (done)
  • Guided tour (done)
  • Merged (done)

Domain

Open Source · Education

Life System Template

Obsidian Vault Template for a Personal Operating System

Personal · Open Source·Oct 2026

This is the generic version of a structure I use every day, with every personal detail taken out. One behaviour contract (AGENTS.md), Areas as the backbone (ongoing responsibilities), Projects (time-bound, each tagged with its area), HQ (goals, reviews, intake), and memory files that stay small (MEMORY.md with a 300-line ceiling, append-only LOG.md). The web demo showcases the template with an interactive vault navigator, landing page, and guided tour.

Impact

One agent contract · Areas/Projects/Archive structure · Small memory files · Privacy by convention

A vault drawn as a tree: one agent contract at the root, then areas, projects, HQ and memory, with notes under each.

Stack

Next.jsTypeScriptReactTailwindVitestVercel

Status

Live

Completeupdated Oct 2026
  • Revived (done)
  • Upgraded (done)
  • Guided tour (done)
  • Merged (done)

Domain

Open Source · Personal

WeChat Style Distiller

Turn Chat History into an LLM Persona Prompt

Personal · Open Source·Jun 2026

A local-first tool that analyses WeChat chat exports and distils your texting voice into a persona prompt for Claude or other LLMs. The Python pipeline extracts 12+ linguistic features — message length, emoji frequency, code-switching between English and Chinese, catchphrases, punctuation habits — and maps them into LLM instructions. The web demo runs the methodology on six synthetic personas, with feature validation, bootstrap confidence intervals and a privacy threat model.

Impact

12+ linguistic features extracted · 6 synthetic personas · Statistical validation with CIs · Privacy-first design

Chat bubbles from a conversation on the left funnelling into one persona prompt card on the right.

Stack

PythonNLPNext.jsTypeScriptTailwindLLMVercelVitest

Status

Live

Completeupdated Oct 2026
  • Revived (done)
  • Upgraded (done)
  • Guided tour (done)
  • Merged (done)

Domain

AI / ML · Open Source

SA & AU Open Data Atlas

Curated South Australian & Australian Government Datasets

Personal · Open Source·Jul 2026

Ninety-five South Australian and Australian government datasets curated for research and civic tools, each documented with source, licence, retrieval date and field definitions. The collection spans ten domains — health, justice, education, infrastructure, environment, social services, planning, economy, demographics and governance — with provenance tracking for every joined or transformed dataset.

Impact

95+ curated datasets · 10 domains · Complete provenance · FAIR principles

A dot map of Australia with South Australia drawn densest.

Stack

Next.jsTypeScriptTailwindPythonPandasFAIR DataVercel

Status

Live

Completeupdated Oct 2026
  • Revived (done)
  • Upgraded (done)
  • Guided tour (done)
  • Merged (done)

Domain

Open Source · Government

Gmail Labeler

AI-Powered Email Triage Skill

Personal · Open Source·May 2024

A Claude Code skill that triages Gmail by auto-labelling senders into provider categories — Banking, Shopping, Subscriptions, Government and more. The Python skill classifies by sender domain and content, generates importable Gmail filter XML, and works in dry-run mode so nothing moves until you review it. The web demo showcases the provider taxonomy, classification rules and dry-run simulation on synthetic inbox data.

Impact

100+ provider rules · 10+ categories · Dry-run mode · Gmail filter export

Unsorted mail on the left funnelled into ten labelled lanes on the right. The lane lengths are illustrative.

Stack

PythonREST APIsNext.jsTypeScriptTailwindVercelVitest

Status

Live

Completeupdated Oct 2026
  • Revived (done)
  • Upgraded (done)
  • Guided tour (done)
  • Merged (done)

Domain

AI / ML · Open Source

ClassBro

Tutoring and Mentoring Across Computer Science

ClassBro · Tutoring·2024 – 2025

Tutoring and mentoring university students across computer science subjects through ClassBro, from programming fundamentals to advanced topics in machine learning, AI, databases, systems and cloud computing. Working one-on-one with learners to bridge concepts and code.

Impact

10 subject areas · Subjects spanning programming, data science, AI, systems and more

Ten subject areas around one tutor, each joined to the centre by a spoke.

Stack

Status

Active

Domain

Education

Ranking Radar

University Rankings Visualisation & Open Dataset

Personal · Open Source·Jun 2026

Brings four ranking systems (QS, Times Higher Education, and two U.S. News rankings) together for 3,790 universities across 40 years. A no-hard-coding pipeline pulls each ranking live and recovers QS history from archived edition IDs, published as an open, FAIR-licensed dataset.

Impact

3,790 universities · 4 ranking systems · live-sourced FAIR open dataset

A radar with four axes, one for each ranking system, three range rings and an illustrative profile.

Stack

ReactTypeScriptViteTailwindshadcn/uiD3.jsNode.jsData PipelineFAIR DataVercel

Status

Live

Domain

Open Source · Research

Outlook Daily Email Summary

A Daily Excel Report of Your Outlook Email

Personal · Open Source·Jun 2026

A single-file Python script for Windows that reads the day's Inbox and Sent Items from Microsoft Outlook and writes a formatted Excel report. Each day gets one row in a running Daily Log, with sent, received and replied counts, word counts, response time, attachments and size. It also gets a detail sheet of top senders, recipients and domains, hourly traffic and common subject words. Every email is tracked by its Outlook EntryID, so the script can run several times a day without counting anything twice. The demo on this site runs the same counting rules in your browser on a made-up inbox.

Impact

Reruns never count an email twice · 17-column Daily Log and a detail sheet per day · Runs by hand or from Windows Task Scheduler

A row of envelopes above a Daily Log sheet of 17 columns, one per field the script writes. The envelopes an earlier run counted are dim, and the new one is bright, like today's row at the bottom of the sheet. The number of envelopes and rows is illustrative.

Stack

Pythonpywin32openpyxlExcel

Status

Open source · MIT licence

Domain

Open Source · Personal

Meal-Prep Studio Order SystemActive

Members, Prepaid Cards, Orders & Finance App

Family Business · Private·Apr 2026 – Present

Built as sole developer for my mum's meal-prep studio: one system for members, prepaid meal cards, daily orders, kitchen and delivery, and finance. A single Expo codebase builds for iOS, Android and the web, on a Hono API on Vercel with Turso (libSQL) and Drizzle. It was built to replace group-chat sign-ups that were tallied by hand and re-keyed into an Excel workbook.

Impact

Sole developer · In production since April 2026 · One codebase for iOS, Android and web

A prepaid meal card drawn as a punch card: used meals filled, today's order red because the system is in use now, the rest still open. The counts are illustrative.

Stack

TypeScriptExpoReact NativeHonoTurso (libSQL)Drizzle ORMZodargon2id + JWTVitestTurborepoVercelGitHub Actions

Status

In production · Private

Domain

Personal

Ethical Standing in Police EnvironmentActive

Strategic Research and Analysis on Ethical Frameworks

SAPOL·Oct 2024 – Present

Research officer role in the Intelligence & Probity Unit of SAPOL's Ethical and Professional Standards Branch. Conducts strategic research on ethical frameworks and professional standards, performing analysis to support branch decision-making and strategic planning.

Impact

Strategic research capability · Ethical framework analysis · Policy support

A level balance, standing for ethical frameworks and professional standards. The pivot is red because the role is current.

Stack

research-designintelligence-analysisexperiment-designleadership

Status

Live

Domain

Government

SAPOL EPSB AnalyticsActive

Professional Standards Reporting & Tooling

South Australia Police, Ethical and Professional Standards Branch·Mar 2026 – Present

As ASO7 Senior Data Analyst in the Intelligence & Probity Unit of SAPOL's Ethical and Professional Standards Branch, produces the quarterly Use of Force and Vehicle Pursuit statistical reports, led an end-to-end review of the complaint administration workflow, and analysed a financial year of expiation notices. Also built a Python client and web console for the complaint-management system APIs, covering more than 1,100 endpoints.

Impact

Quarterly executive reporting · Admin workflow review · 1,100+ complaints API endpoints in one client

Many API endpoints converging on one client, the shape of a single client over more than 1,100 endpoints. The client is red because the work is current.

Stack

PythonPower BISQL ServerFastAPIVueStatistical modelling

Status

In production

Domain

Government

EM Algorithm, Explained

An Interactive Expectation-Maximisation Lab

Personal · Open Source·Sep 2025

A maths-complete explainer of the expectation-maximisation algorithm that I wrote in September 2025, framed around sparse movie ratings, with a notebook that fits a two-component Gaussian mixture from scratch. In 2026 I rebuilt it as a web lab where you can step through the worked example by hand, run EM on the notebook's 200 ratings, and trigger label switching, stopping too early, local maxima and variance collapse. The TypeScript port reproduces the notebook's printed results, and the slips in my own hand-worked numbers are corrected beside the originals.

Impact

Notebook results reproduced to within 10⁻⁶ · Four pitfalls you can trigger · Corrections shown beside the originals

Two overlapping Gaussian components and the mixture they make, drawn as columns of stacked dots under the two curves.

Stack

PythonNumPySciPyMatplotlibJupyter NotebookGaussian mixture models

Status

Revived in 2026

Completeupdated Oct 2026
  • Revived (done)
  • Upgraded (done)
  • Guided tour (done)
  • Merged (done)

Domain

AI / ML · Open Source

SA Gaming Machine Statistics

Public Gaming-Machine Figures, FY 2009/10 to FY 2024/25

Personal · Open Source·Sep 2025

South Australia publishes its gaming-machine statistics as separate PDF releases. In September 2025 I transcribed about 110 of them, from FY 2009/10 to FY 2024/25, into one workbook with a Power BI report. In 2026 I rebuilt it as a website on statewide revenue and tax, council areas, licences and manufacturers, with every figure checked against its PDF and the gaps in the series shown. It is a personal project on public releases from Consumer and Business Services, not affiliated with CBS, the Government of South Australia or my employer, and it takes no position for or against gambling. If gambling is affecting you or someone close to you, call the Gambling Help Line on 1800 858 858.

Impact

4,406 of 4,409 figures matched to their PDF · Yearly totals corrected · Gambling Help Line 1800 858 858

A workbook of sixteen financial years, FY 2009/10 to FY 2024/25, one column per year under a header row. The figures are placeholders.

Stack

Power BIExcelPublic data

Status

Revived in 2026

Completeupdated Oct 2026
  • Revived (done)
  • Upgraded (done)
  • Guided tour (done)
  • Merged (done)

Domain

Open Source

MapivaActive

Map-First Social Discovery App

Mapiva (Co-founded)·Aug 2025 – Present

Co-founded a Melbourne startup building a map-first app for discovering people and events nearby. As Dev Lead, owns the technical architecture (an Expo React Native client on a Django, Rust and PostgreSQL backend, shipped through GitHub Actions) and leads code review for a part-time engineering team.

Impact

Co-founder · Dev Lead · Beta planned for early 2027

A street grid with people and events nearby as dots and rings of distance around a red pin, which marks the app's current work.

Stack

React NativeExpoDjangoRustPostgreSQLGitHub Actions

Status

Beta 2027

Domain

Startup

SA Address Generator

Mock South Australian Addresses for Software Testing

Personal · Open Source·Aug 2025

A personal command-line tool I wrote in August 2025 that makes mock South Australian addresses for software testing, each with a suburb, postcode, council and remoteness level, and looks up real addresses through the Mapbox API. Porting it to the web in 2026 showed that its remoteness and socio-economic weights were never applied and its socio-economic column was empty. The revival keeps that uniform mode as built, adds the promised weighting from ABS remoteness and SEIFA data, and checks each sample against its target mix. Every output is labelled as synthetic test data.

Impact

20 of 20 recorded Python runs replayed exactly · Sample mix checked against its target · Labelled synthetic test data

South Australia with mock addresses scattered across it, densest around Adelaide. The points are synthetic.

Stack

PythonPandasMapbox API

Status

Revived in 2026

Domain

Open Source

US Political Data

Presidential Debate & Campaign Document Scraper

Personal Research·Aug 2025

Two notebooks I wrote in August 2025 that collect public pages from The American Presidency Project at UC Santa Barbara, with a thread pool, retries and resumable runs: 7,556 campaign documents from 2016 to 2024 and 179 debate transcripts from 1960 to 2024. In 2026 I revived the collection as Campaign Text Lab, a descriptive reading room that reads the original CSV files without scraping again, with distinctive-word comparisons, debate talk shares and term timelines. Every speaker goes through the same code, and nothing is scored or predicted.

Impact

7,556 campaign documents · 179 debate transcripts, 1960 to 2024 · Descriptive only, nothing predicted

A debate transcript as alternating lines from two speakers, above a timeline from 1960 to 2024 with a tick every four years.

Stack

PythonWeb scrapingMulti-threadingCSV pipelineBeautifulSoupRequestsPandasRate limiting

Status

Revived in 2026

Domain

Research · Open Source

CBS Intelligence

Regulatory Analytics from the Ground Up

Attorney-General's Department SA·Jan 2025 – Mar 2026

Built the first intelligence analytics capability within the CBS Prevention Team — integrating ABS, SA Health, ACCC, and DataSA data into unified dashboards and GIS maps used by the Minister's Office.

Impact

Minister's Office reporting · SOPs institutionalised

A tile map of South Australia shaded in three steps with its legend, the shape of regulatory analytics on a map. The shading is illustrative.

Stack

Power BIPythonGIS/ArcGISTime seriesRegressionSQLDAXStatistical AnalysisDataSAABS API

Status

Completed

Domain

Government

Lecture Revision Lab

Revision Material That Cites Its Sources

Personal·Oct 2024

A retrieval-augmented generation prototype I built in October 2024 to turn course notes into revision material, with DSPy, sentence-transformer embeddings and SQLite. In 2026 I rebuilt it to run in the browser. It finds the passages that answer a question and drafts revision agendas, worked examples and practice questions that cite those passages, and nothing is exported until a person has reviewed each item. Generation runs on the visitor's own API key, and the demo uses an openly licensed OpenStax statistics textbook instead of my private notes.

Impact

Retrieval matches the 2024 Python on 10 of 10 sample queries · Every item cites its passages · Reviewed before export

Revision material drawn from cited passages: three passages in a column of notes are linked to the item that cites them.

Stack

PythonRAGDSPyOpenAI APISentence TransformersSQLite

Status

Revived in 2026

Domain

AI / ML · Personal

Moodist

Mental Health Mobile Application

University of Melbourne — Psychiatry·Aug 2024 – Feb 2026

A clinician-facing and patient-facing mental health app for the University of Melbourne's Department of Psychiatry, built as sole developer. Rebuilt it from Uniapp to Expo React Native with a clinician dashboard on a Flask backend, kept hosting under $500 a month by running each service in its own Docker container on AWS LightSail, and kept its data handling privacy-first before handing it to a professional team for production.

Impact

Sole developer · Hosting under $500/month · Cross-platform iOS + Android

A patient phone app beside a clinician dashboard, drawn as outlines with placeholder blocks only.

Stack

ExpoReact NativeFlaskPythonAWS RDSLightSailCI/CD

Status

Handed to production team

Domain

Research

Genomics Metadata Multiplexing

Sample-sheet tooling for plate-based single-cell sequencing

WEHI·Feb 2024 – Jul 2024

Worked on Genomics Metadata Multiplexing (GMM), an R Shiny tool that builds CEL-Seq2 sample sheets for plate-based single-cell sequencing. It merges flow-cytometry sort metadata from FACS index-sort files with the plate layout and primer indexes, so nobody has to stitch them together by hand. Wrote the Shiny side of the app, added test inputs with expected outputs, and contributed a column clean-up step to WEHIGenomicsRnD/celseq-sample-sheet-generator.

Impact

One sample sheet instead of a hand merge · Contribution merged into celseq-sample-sheet-generator

A 96-well plate, eight rows by twelve columns, with wells shaded by sample block and the last column empty.

Stack

RShinyPythonreticulatepandasfcsparserBashGitMilton HPC (built to run on)

Status

Completed

Domain

Biotech · Research

Psyckitchen Echo

Memory-Aware Companion Chatbot Prototype

Psyckitchen·Jun 2024

A June 2024 prototype of Echo, a companion chatbot for Psyckitchen built to remember a person's profile and past conversations. A Flask backend on Azure App Service kept both in MongoDB and sent them to GPT-4o with every new message. A Next.js test page sat alongside it, with a chat box and a mock wearable display. The prototype has since ended.

Impact

Prototype, since ended · 8 to 14 June 2024 · Flask and MongoDB backend with a Next.js test page

A conversation whose earlier messages are threaded back into the newest reply, the memory Echo was built to keep.

Stack

PythonFlaskMongoDBLLMAzureNext.jsReactTailwind CSS

Status

Prototype · Ended

Domain

AI / ML

Climate Fact-Checker

Automated Fact-Checking for Climate Claims

University of Melbourne·Apr 2024 – May 2024

A two-stage fact-checker for climate-science claims, built for COMP90042 with Wei Zhao and Xuan Wang. TF-IDF retrieval pulls evidence from about 1.2 million Wikipedia passages, then a Transformer trained from scratch labels each claim as supported, refuted, disputed or not enough information. I worked on the system design, the preprocessing and the TF-IDF retrieval, and Wei built the classifiers. I revived it in 2026, with the original pipeline re-run as it was and the weak results shown.

Impact

TF-IDF retrieval over 1.19 million passages · Reported evidence score reproduced in 2026 · Weak spots stated plainly

A claim pulling a handful of evidence passages out of a dense field that stands for about 1.2 million Wikipedia passages.

Stack

PythonPyTorchNLTKScikit-learnpandasTF-IDFGoogle Colab

Status

Completed

Domain

Climate Research

HEX

Digital Content Library Builder

HEX·Nov 2023 – Jun 2024

Built and refined interactive digital educational content aimed at bridging the gap between education and professional success. Conducted market research on leveraging advanced technologies to improve course engagement and learner outcomes for students across Australia and beyond.

Impact

80+ students supported · Improved course engagement through technology-driven content innovation

A winding learning path with short course modules at each stop.

Stack

Content DesignEdTechMarket ResearchLLMsInstructional DesignCurriculum DevelopmentNotionInteractive Content

Status

Domain

Startup

Self-Driving Databases

Workload-Driven Optimisation & Index Selection

University of Melbourne·Jun 2023 – Jul 2023

A survey of self-driving databases for COMP90050, written by Group 40 with Xiaoyi Liu, Runqiu Fei and Qingxuan Yang. Runqiu and I covered index selection, from heuristics to bandits, and Xiaoyi and Qingxuan covered workload-driven optimisation. I revived it in 2026 as Self-Driving DB Lab, where the index advisors the survey described race on a live SQLite database in the browser.

Impact

Group 40 survey · Five index advisors implemented in 2026 · Revived as a browser lab

Five index advisors racing in five lanes towards a finish line. The distances are illustrative.

Stack

Database systemsML optimisationQuery planningPostgreSQLB-tree IndexingCost ModelsQuery OptimisationLiterature Review

Status

Completed

Domain

AI / ML

Social Media Analytics

Australia on the Cloud

University of Melbourne·Apr 2023 – Jun 2023

Harvested and analysed Twitter and Mastodon data alongside ABS SUDO spatial data to produce a Social Sense Dashboard illuminating Australian sentiment, social trends, and regional behavioural patterns.

Impact

Cross-platform social analytics · Spatial + social data fusion

Two social data streams, Twitter and Mastodon, merging into one spatial grid.

Stack

PythonTwitter APIMastodon APICouchDBMelbourne Research CloudSUDOPandasFoliumMatplotlibSpatial AnalysisREST APIs

Status

Completed

Domain

Cloud / HPC

Twitter HPC Analysis

Big Data on SPARTAN

University of Melbourne·Mar 2023 – Apr 2023

Processed a large-scale Twitter dataset on the University of Melbourne's SPARTAN HPC cluster using MPI and Python, identifying tweet distribution across Australian cities and top contributors.

Impact

HPC parallel processing · City-level tweet distribution insights

A dot map of Australia with each capital city marked by a dot and a ripple around it.

Stack

PythonMPISPARTAN HPCParallel computingSlurm

Status

Completed

Domain

Cloud / HPC

ENSO Climate Risk

Climate and Staple Food Prices, a Public-Data Revival

CSIRO × University of Melbourne·Feb 2023 – Nov 2023

This was our MAST90106 and MAST90107 industry capstone, hosted by CSIRO in 2023. I worked in Group 36 with Ritwik Giri, Jiaqi Hu, Xiangyi (Emma) He and Jihang (Jonathan) Yu. In 2026 I rebuilt it from scratch as a clean-room revival on public World Bank, NOAA and FRED data, with no CSIRO or team data, code or documents. It asks whether lagged climate indices such as El Niño help forecast next month's prices for wheat, maize, rice, soybeans, palm oil and sugar, comparing forecasts with and without the climate input on months the models never saw. None of the eight commodities forecast better with it.

Impact

Team of five · 6 climate indices and 8 commodities tested · Public data only (World Bank, NOAA, FRED)

An El Niño style oscillation above eight commodities that all sit on the line of no gain: none forecast better with the climate input.

Stack

PythonAR time seriesRolling windowStatistical modellingResearch Software EngineeringJupyter Notebook

Status

Revived in 2026

Domain

Climate Research

Cachex AI

Game-Playing AI Agent

University of Melbourne·Apr 2022 – Jun 2022

A pair project with Wei Zhao as team _4399 for COMP30024. Cachex is a two-player connection game like Hex, with captures and a steal rule. We wrote an A* solver for the search task and a minimax agent with alpha-beta pruning to play the full game. I revived it in 2026 as Cachex Arena, where you can play the agent or run a seeded tournament.

Impact

A* solver · Minimax agent with alpha-beta pruning · Pair project, revived as a playable arena

A Cachex board, a Hex-like connection game, with one player's connected stones forming a path from one edge to the other.

Stack

PythonA* pathfindingHeuristic searchGame theoryGame-playing agentsMinimaxAlpha-beta pruningGraph search

Status

Completed

Domain

AI / ML

Project Cradle

Invite-Only Member Hub

Personal · with Jiahong Zheng·Jan 2022 – Mar 2022

A small community you can only join with an invite code from a member, where each member holds at most two unused codes. Jiahong Zheng and I built it in early 2022 to learn a full stack, with an Express and MongoDB API behind a Next.js front end. The database is long gone, so in 2026 I revived it as one Next.js app on SQLite (Turso), with the 2022 invite rules ported and checked by parity tests, an invite tree, demo logins and a guided tour.

Impact

Pair project with Jiahong Zheng · 2022 invite rules ported with parity tests · Demo logins and a guided tour

An invite tree growing from the root, Cradle, with members as dots and open invite codes as hollow rings, at most two per member at a time.

Stack

TypeScriptExpress.jsMongoDBMongooseNext.jsChakra UIJWT Auth

Status

Revived in 2026

Domain

Personal

HPLC Pipeline

Lab-Data Quality, an Industry Capstone with CSL

University of Melbourne × CSL·Aug 2021 – Oct 2021

This was our MAST30034 industry capstone with CSL. I worked in Group 07 (Team 4399) with Yuchen (Cynthia) Cai, Rongshun Li, Zhiliang (Tommy) Tang and Quzihan (Martin) Wu, and was the team's Scrum Master. We parsed free-text HPLC lab-result spreadsheets into tidy records in the spirit of the FAIR principles, rebuilt control charts for four assays to find out-of-control runs, and compared PCA, t-SNE and UMAP with K-Means and DBSCAN as an aid for spotting unusual runs. I revived it in 2026 as HPLC QC Lab, which runs the team's methods on synthetic data, with no CSL data, code or documents.

Impact

Team of five · About 99.7% of lab-result records parsed in 2021 · Revived on synthetic data only

Control charts for four assays, each a run of points between control limits with the one point outside them circled. The points are synthetic.

Stack

PythonpandasScikit-learnPCAt-SNEUMAPK-MeansDBSCANControl chartsFAIR DataJupyter Notebook

Status

Completed

Domain

Biotech

PCRM

Personal Customer Relationship Management

University of Melbourne·Aug 2021 – Nov 2021

A mobile-first personal CRM built by Team 4399 for the COMP30022 IT Project, with Bin Liang, Hongji (Harrison) Huang, Wei Zhao and Yixiao Tian. It has a React front end, an Express REST API and a MongoDB database. I was the team's Scrum Master and worked on the contacts, meeting records and map screens. I rebuilt it in 2026 as 4399 CRM, a single Next.js app with a guest sandbox.

Impact

Five-person Scrum team · Full-stack web app · Revived in 2026 as 4399 CRM

Contact cards from a personal CRM, each an avatar and two lines of detail.

Stack

Node.jsReact.jsExpress.jsMongoDBHTML/CSSREST APIJWT AuthMongooseAgile

Status

Completed

Domain

Research

NYC Taxi Analysis

Quantitative Analysis with Spark

University of Melbourne·Jul 2021 – Aug 2021

My individual project for MAST30034 Applied Data Science. I cleaned every 2019 New York yellow-cab trip in PySpark, more than 84 million records, and fitted an elastic-net regression to estimate trip times. I revived it in 2026 as NYC Taxi 2019, with zone maps, weather, events and collisions, and the 2021 regression running in the browser.

Impact

84 million trips cleaned in PySpark · Elastic-net regression of trip times · Revived as a live demo

The 2021 regression, drawn as a straight line, against the median lookup, drawn as steps, each with a bar for its hold-out error: 9.5 minutes against 6.2. The lookup's shorter bar is in full ink.

Stack

PythonApache SparkPySparkSpark MLlibRegressionPandasFoliumJupyter Notebook

Status

Completed

Domain

Research

rin.contactActive

Personal Portfolio, v5

Personal Project·2020 – Present

Five major iterations of a personal website — currently rebuilt in v5 with a Nothing OS-inspired minimal design language. A living record of technical and professional development since 2020.

Impact

5 major versions · rin.contact · Open source

Five versions of the site stacked like layers, back to front. A red marker on the front layer, v5, shows it is the current version.

Stack

Next.jsReactTailwind CSSVercelJavaScriptSEOSchema.orgJSON-LDCSS AnimationsGitHub Actions

Status

Live · v5.27

Domain

Personal

Virtual internships (Forage)

Twelve Company-Designed Job Simulations

Forage · KPMG, BCG, British Airways, PwC and others·Oct 2022 – Aug 2023

I completed twelve self-paced job simulations on Forage, each designed by the company that set the brief. The companies were KPMG, BCG, British Airways, Quantium, Tata, Cognizant, GE Aviation, Accenture, Red Bull, PwC (two) and Standard Bank. The work covered customer analytics, churn and booking models, dashboards and data joins.

Impact

12 job simulations · Oct 2022 – Aug 2023 · analytics, ML and visualisation

Twelve job simulations as twelve identical tiles, each with a tick for a completed simulation.

Stack

Pythonpandasscikit-learnSHAPSQLRTableauPower BIExcelPowerPoint

Status

Completed

Domain

Personal

39 projects