
Linglow
A language app for reading real books (Dracula, Alice in Wonderland) in nine languages including Irish. Every word is tappable, grammar shows as colour, the audio stays in sync.
Filter by what kind of thing it is. Every project page starts with a short version, then goes into how it works.

A language app for reading real books (Dracula, Alice in Wonderland) in nine languages including Irish. Every word is tappable, grammar shows as colour, the audio stays in sync.
![Forest plot of four ratio-scale effects on a log axis, each a point estimate with its 95% interval. Within-fight KO hazard at 1.38 [1.32, 1.44], damage carried into the UFC at 1.22 [1.15, 1.29] and the recurrent-KO clock at 1.11 [1.04, 1.19] all clear the null of 1, in blue; head KO versus ground TKO sits on it at 0.98 [0.82, 1.18], in grey.](/_astro/head-trauma-mma-card.DjyZJsJF_Z25doWr.webp)
Does absorbing head strikes wear a fighter down, separately from ageing, selection, and the sport itself changing? A ten-study programme on 17,434 fighter-fights and 2,708 fighters, 1994–2026. It grew out of my 2023 masters project, which proposed the question as future work.

The thesis data kept growing. Octagon IQ is where it ended up: a fight prediction model, a live site, and an audit that found five critical defects in my own features.
A burnout model built only from git commit timestamps: speed, revs, coolant, fuel. It's calibrated against one real burnout, in-sample, and the write-up is honest about that.

The MCU split into its phases and measured: budgets, box office, critic and audience scores, release cadence. Which phase was the golden age, which actors and writers made the studio the most money, and where the critics and the audience stopped agreeing.

A generative radio station played by a London traffic camera. Computer vision watches a TfL JamCam and drives a C++ synth. It played for 245 hours, and 243 of its 3,323 chord changes came from the traffic. The other 3,080 came from a timer that stops it repeating itself.

A planning app for neurodivergent brains: just a more helpful way to keep your day on track. Its Bad Day mode shrinks the day down to what's possible rather than nagging about what isn't.

A drum synth in the Moog DFAM tradition, in C++ with JUCE. It addresses the hardware's best-known complaints, and FFT tests measure its aliasing suppressed by about 23 dB against a naive oscillator.

Press a key on my desk and my keys, wallet or iPad start ringing. Find My has no API for this. A small launcher drives the app through macOS accessibility and, for AirTags, finds the Play Sound button by its colour.