All projects

9 projects · 2020–2026

1 year2 years

Aug 2026Live

Monopoly Board Probability

The 2022 simulation rebuilt as something you can click. Roll, and the board shows where you can land — with the odds solved exactly rather than sampled.

TypeScriptMarkov ChainsProbability
Open the tool

Built from

Forty squares, solved rather than sampled: 11.5% of turns end in Jail, four times any other square on the board.

Jul 2026Personal Project

n810 GBoard

Gboard rebuilt with the iOS keyboard layout on a toggle. Installs next to the stock one, and ships as a patch rather than an APK.

AndroidAPK ModdingKotlin

The full iOS layout, behind a runtime toggle — beside the stock keyboard, not instead of it.

May 2026Live

n810 Trading Plan (OVTLYR)

Entry and exit signals for the stocks OVTLYR covers. 76% of 639 completed trades were winners on tickers the system had never seen before.

ResearchData Science

Regime, read from SPY breadth

Crisis
Normal
Extended
0%15%50%100%
76.06%per-trade win rate over 639 completed trades in unseen tickers

Feb 2025Live

LifeJourney

A journal for iPhone, iPad and Mac that works out what moves your mood — sleep, exercise, HRV, weather, music. All of it stays on the device.

SwiftSwiftUIiOS App

Jan 2025Open Source

Rize Disable on Alt

A Chrome extension that pauses Rize time tracking while you hold Alt.

Chrome Extension

Sep 2024Open Source

Obsidian Collapse Linked Mentions

An Obsidian plugin that keeps the linked mentions pane collapsed until you want it.

Obsidian Plugin
Linked mentions12
Unlinked mentions4

Collapsed by default, so the note you opened is the thing you see.

Apr 2022Open Source

Monopoly Analysis

The original Python version: half a million simulated games to find out how often each square really gets landed on.

PythonMonte CarloData Analysis

Rebuilt as

Four-panel plate from the simulation: the board shaded by how often turns end on each square, the dice distribution against its fair-dice expectation, every square's share of turn endings, and landings against endings on the eight squares where they differ.
500,000 rounds — about 3.1 million turns. Open it full size — it is four panels of small type.

Jun 2021Open Source

Text Recognizer

An Android app that pulls the text out of a photo.

KotlinAndroid App

Aug 2020Live

Monte Carlo Tic-Tac-Toe

An agent that learns tic-tac-toe by simulating games, and an exhaustive audit that proves the exact point where it stops being beatable. All twenty training snapshots are playable.

PythonReinforcement LearningMonte Carlo

Its answer to a corner, rated

After 800 games

−1.00
−0.60
−0.67
−1.00
−1.00
−1.00
−1.00
−0.76

After 400,000

−0.83
−0.73
−0.80
+0.03
−0.82
−0.79
−0.75
−0.80
The centre is the only reply that does not lose. At 800 games it is rated −1.00, because losing there once was the whole of what it knew.