Finance Tracker
FeaturedFull-stack personal finance tracker with a Flask backend, React/TypeScript frontend, and Docker deployment.
67.7k lines
- Python
- Flask
- SQLAlchemy
- React
- TypeScript
- Docker
Today’s valley
Software engineer & agentic engineer. The valley below didn’t exist yesterday and won’t exist tomorrow: today’s date is the seed, and it builds itself on your clock — one house at midnight, towns and a highway by evening, dark again at midnight so the next one can rise.
One seed per date · 24 hours of world time · drag to roam, ctrl + scroll to zoom
The world up there is weather, not a map of my work — its towns name themselves and none of them stand for anything. The actual work is here: six projects, from a 68k-line finance app to a 2.3k-line notification fan-out, with sources where the sources are mine to give.
Full-stack personal finance tracker with a Flask backend, React/TypeScript frontend, and Docker deployment.
67.7k lines
Durable agent-to-agent communication in a few hundred lines of stdlib Python — atomic file mailboxes as the record, pluggable notifications as the bell.
2.3k lines
KDE Plasma workspace automation — define a workspace once, then open and arrange every application across screens and virtual desktops with one command.
26.4k lines
Self-hosted document toolkit — merge PDFs with automatic conversion of ~19 input formats, convert files between ~150 format pairs, page tools, OCR, watermarking and AES-256 password protection, in six browser tools plus a REST API.
18.1k lines
Games at impossible scale — War and Blackjack with up to 100 players and 100 decks, simulated in seconds, then played back in the browser like a video with a scrubber, live table, and batch statistics.
4.2k lines
Local-first Flutter app for hierarchical project management — Project → SubProject → Feature → Step, with a schemaless, scope-aware metadata system and a three-tier field UI.
19.6k lines
I’m Ethan — a software engineer and agentic engineer. I work across the stack: Python and Flask on the backend, React and TypeScript on the front, Bash and desktop automation where it counts. Lately my focus is agent infrastructure — the durable plumbing that lets AI agents talk to each other and get work done.
The valley is not stored anywhere. Today’s date is hashed into a seed, the seed generates the terrain, the river, the roads and every building the day will contain, and a timeline paces that build across twenty-four hours. Nothing is downloaded and nothing is remembered: give the same date to any browser on earth and you get the same valley, at the same hour, down to the cart on the bridge.
Because the clock is your clock, the world you land on is the world your day has got to. Scrub it to watch the whole day in a few seconds, raise the pace to see how much more the same twenty-four hours could have held, or stay until midnight: the light goes, and the next date’s valley comes up in its place on one house.
The towns are the world’s own. Their names come out of the same seed as their streets, and they are deliberately not project markers — I would rather the front door be a place than a diagram. The projects are in the grid above, where a link is a link.