Everything here I built and maintain myself. Where something is in real use by other
people, I say so — and where it is half-finished, I say that too.
JARVIS
In use daily
A personal assistant I run my life on. It is not a chat window — it is
infrastructure: a phone client, a cloud relay, and a process on my Mac that does real
work while I am at my job.
- Phone or voice → Cloudflare Worker → Durable Object → WebSocket → daemon on my Mac
- Scheduled agents that brief me each morning and catch their own silent failures
- A written memory it carries between sessions, so it does not start over every time
- Native iOS app and an installable web app, both with push
TypeScriptCloudflare Workers
Durable ObjectsD1
PythonSwift
agent-from-scratch
Active build
An AI agent harness with no frameworks and no hidden parts. I wrote the loop,
the tool definitions, and the safety gates myself, because I wanted to understand the
thing rather than import it.
- The loop: ask the model → it requests a tool in text → my code decides and runs it → feed the result back
- A path fence the model cannot talk its way past — tested against the gate, not by asking the model nicely
- Written twice, Python then Java, specifically so failures get loud instead of silent
- Next: a test suite that attacks my own agent, so I find the holes before anyone else does
PythonJava 21Gemini APIno dependencies
Store EOD tracker
Adopted by my store
My store posts its numbers three times a day. It used to be a whiteboard and a lot of
retyping. Now the reps tap a few steppers and paste. My manager started using it
the day I showed him.
- Shared day totals — any rep can update, everyone sees the same numbers
- Output matches the old handwritten format character for character, so nothing had to change downstream
- Conflict-safe writes, offline fallback, and an automatic rollover at local midnight
- Linked from the spreadsheets the store already kept
Cloudflare WorkersD1Vanilla JS
Plan & bundle calculator
On the floor
Quoting a family plan with trade-ins and add-ons means holding a lot of numbers at
once. This does it on a phone, in front of the customer, with every price verified
against the source rather than remembered.
- All-in monthly totals across plan tiers, not just the headline rate
- Eligibility-aware, so it stops offering what the customer cannot have
- Full end-to-end test suite — a wrong number here costs a real customer real money
Cloudflare WorkersD1Vitest
Learn
Live
A tutor that draws instead of lecturing. It works a problem one step at a time
on a shared canvas, built for an iPad and a pencil. I have dyslexia and ADHD; walls of
text are where I lose the thread, so this one deliberately refuses to produce them.
- Pressure-sensitive pen input with palm rejection, tuned on real hardware
- One step at a time, and it waits — it will not hand over a finished answer
- Any subject, four model providers behind one interface
- Open source, MIT
TypeScriptCloudflare WorkersCanvasMIT
Dinner Picker
Live
Built to end a recurring argument at home: “what do you want for dinner?”
Thirty real Bloomington restaurants, each one verified by hand, and a shared list two
people can both edit.
- Its own Worker and database, shared by passcode — no accounts to create
- Every restaurant checked against a live source, not scraped and hoped for
Cloudflare WorkersD1