Rankle
A daily tier-list game: one topic, rank it, submit, then see how everyone else ranked it too.
- Live at rankle.io
- Solo build, September 2026
- Next.js · Supabase
Two products, each told in full. Then the archive: the coursework and smaller builds around them, each with something you can check.
A daily tier-list game: one topic, rank it, submit, then see how everyone else ranked it too.
A syllabus is written for people. Plannr turns it into dates a calendar can hold, and makes the student check every one first.

Shorter entries, in the order they happened. Work done with a team says so, and each entry links to the record where one is public.
A full-stack UCSB course search, handed from cohort to cohort since 2021. It already held over 2,200 commits from earlier students and instructors when Matthew's team arrived.
Four merged pull requests: a clear “no courses found” state (an empty search had looked like a slow one), course IDs that link to their details pages, a paginated admin job log with sort and page-size controls, and a fix for a blank details page.
The course's CI runs coverage and mutation testing (PIT for Java, Stryker for React); several of his commits exist only to close the last gaps. In the earlier team exercises he built one resource end to end: database table, REST controller, React pages, integration and end-to-end tests.

Five projects that work up the network stack: mail sent over SMTP and read back over POP3, an HTTP/1.1 file server on raw sockets, reliable Go-Back-N transport in C, distance-vector routing, and a hangman server in C for three players at once.
Matthew wrote each protocol to the course's spec. The routing project is shown here because its result is easy to read: every node starts out knowing only its neighbors and ends with the cheapest route to every other node.
Each node sends only when its own table changes. There is no timer, so the simulation ends by itself once every node agrees.
Source not published: these are current course assignments.
| To | Cost | Next hop |
|---|---|---|
| E0 | 0 | E0 |
| E1 | 1 | E1 |
| E2 | 2 | E1 |
| E3 | 4 | E1 |
The site you're reading: an editorial portfolio built with Next.js, with its content in Convex behind an authenticated admin (WorkOS AuthKit sign-in, authorization enforced in Convex).
Its art direction is written down, and most of the rules a machine can check are tests that run before every production deploy.
Visible “chaos” (the tilts, overlaps and torn edges) is deterministic, and one variable, ‑‑chaos, scales all of it. Setting it to zero realigns the whole page.
tests/design/rules.test.ts
describe(“things we never do”)