Draw a digit
A neural network I wrote from scratch in sixth form: NumPy for the matrix algebra and nothing else, 99% on MNIST. What runs below is the original network, its trained weights unchanged, with the forward pass ported to JavaScript.
Play the engine
My AI-coursework engine, ported piece for piece: the 5×5 Chess Fragments variant, where the corner piece, the Right †, moves as rook plus knight. The search is the Python original's: magic bitboards, a Zobrist-hashed transposition table, killer and history ordering, null-move pruning and quiescence, with its piece values and square tables copied verbatim. You play as White.
Your move.
- depth
- –
- nodes
- –
- time
- –
- eval
- –
- line
- –
Race the searches
From a team project I led in my penultimate year of school, built for a STEM fair, that solved mazes off a webcam. Breadth-first floods, A* aims for the exit, depth-first takes the first corridor it finds.
- visited
- –
- path
- –
- frontier peak
- –
Projects
-
2026
ongoing6n
A fantasy rugby prediction engine, now running on competitions beyond the Six Nations: a point-in-time data pipeline drawing on player form data, team-level play-shape metrics, world rankings, historical results and weather, feeding gradient-boosted forecasts.
-
2026
chessweb
Multiplayer chess in the browser: Flask and WebSockets, user accounts, an object-oriented rules engine.
-
2026
bible-memorisation-app
React app for memorising verses with SM-2 spaced repetition.
Experience
-
Oct 2022
LondonIbex.ai Software & Data Engineering Intern
Pandas pipelines on production data; regression and classification models on Azure Databricks.
-
Jul 2022
South AfricaIoT.nxt Data Analysis Intern
Performance analytics and reporting for provincial rugby.
-
Jul 2022
South AfricaCodehesion Software Development Intern
Supply-chain and customer-loyalty systems.
Background
BSc Computer Science, University of Southampton, 2024–present: 86% in Artificial Intelligence. Before that, A-levels in Mathematics at A*, with Further Mathematics, Computer Science and Physics all at A.
1st place in the university Cyber Security Society CTF, May 2025.
Toolbox
- languages
- Python · Java · JavaScript / TypeScript · Haskell · C · SQL
- data & ML
- NumPy · Pandas · PyTorch · TensorFlow · Azure Databricks
- web
- React · Next.js · Flask · WebSockets · HTML/CSS
- tools
- Git · Linux · Bash
Contact
You made it to Neptune; say hello.
mail@williamgreenfield.comScale
- Orbital angles and positions are calculated from JPL Keplerian elements.
- Planet and Sun sizes are scaled to the square root of their true radii.
- The bodies and the orbits therefore use different, non-linear scales.
- For example, Jupiter’s true radius is about 11 times Earth’s, but it is drawn about √11 ≈ 3.3 times larger.
Imagery
Earth and Sun maps: NASA/GSFC Earth and Sun. Uranus and Neptune maps: NASA via ESO Supernova (Uranus, Neptune; CC BY 4.0). Other textures: Solar System Scope (CC BY 4.0). Milky Way backdrop: ESO / S. Brunier.