Melbourne, Australia

Will Lienert

Physics graduate who builds machine-learning systems end to end — from the data pipeline underneath to the model doing the work.

Try··

SCROLL TO SEE MY PROJECTS ↓

01Personalised news infrastructure

News that assembles itself around you.

A news platform built end to end. It scrapes and geocodes sources, then groups documents into events by extracting named entities and matching them with a source-aware TF-IDF, so an outlet's boilerplate carries no weight. Events are scored on source credibility, LLM-judged importance, interest and locality, then ranked against a vector of what you care about and where you live.

PythonasyncioSupabase · pgvectorAstroCloudflare Workers
  1. sources
  2. ingest
  3. cluster
  4. rank
  5. publish

Live from production · anonymous feed

02RMIT capstone · with Francesco Campaioli

Predicting chaos with ten qubits.

Reservoir computing trains nothing but a linear readout — so the reservoir can be any complex dynamical system, including a quantum one. I simulated a ten-qubit transverse-field Ising model in QuTiP and used it to forecast a chaotic time series, with a split-permutation classical memory separating single-site from co-occurrence observables.

QuTiPNumPyHamiltonian simulationRidge readoutChaotic dynamics87% HDRead the paper Read the code
10-qubit Ising reservoir · Mackey–Glass held-out set
true x(t)predicted, one step ahead120 of 561 held-out steps · NRMSE 0.53%H = −Σ Jᵢⱼ ZᵢZⱼ − Σ hᵢ Zᵢq0q1q2q3q4q5q6q7q8q9
03In training

A language model, from the tensor up.

A GPT-2-scale decoder written from scratch in PyTorch — no model libraries, just the architecture and a training loop — pre-trained on FineWeb-Edu and then instruction-tuned.

Architecture
12 blocks, 12 heads, 768-dim residual stream, 1024-token context, tied embeddings, flash attention. ~124M parameters.
Training loop
Hand-rolled: 20k steps at ~500k tokens per batch, cosine 6e-4 → 6e-5 after 715 warmup steps, checkpoint and resume.
Data
A 2.5B-token FineWeb-Edu shard tokenised to a memory-mapped binary, then No Robots for instruction tuning.
Readout
Micro-batch size auto-tuned to the GPU, gradient accumulation to hit the token budget, all of it containerised.
PyTorchtorch.compileFlash attentionGradient accumulationtiktokenDocker · CUDA

Status

Deploying trained model soon...

Read the code

Available now

Looking for a graduate or junior role where I can keep building things like these.

lienert.will@gmail.com LinkedIn

BSc Physics, RMIT (2025). Melbourne-based, open to hybrid or in-office. This site is a Next.js app; the chat is retrieval-augmented over a knowledge base I maintain by hand.