About
About Keith
I run Roots of Reason, a tutoring and creative learning practice. Teaching gives me specific problems to build for: a student needs a different way to practice, a parent needs a clearer update, or a lesson needs something the learner can manipulate.
My development projects also include rock collecting, audio experiments, and infrastructure for coordinating AI sessions. I am interested in interfaces with useful behavior and a distinct visual identity.
I use AI in development. I review the design, behavior, and claims before choosing what belongs in this portfolio.
California · Independent developer & educator
Development services ↗ · Project index ↗
Background
I taught before I built software, and I still run a tutoring practice, Roots of Reason. Most of what I build starts as a problem from a real session: a student who needs a different way to practice, a parent who wants a clearer update, or a lesson that needs something the learner can move.
How I work
- I build on Cloudflare by default: Pages, Workers, D1, and R2.
- Client work runs under written weekly contracts with named deliverables.
- I keep a record of what was built and why, and I state limitations on the page.
- I use AI in development, and I review the design, behavior, and claims myself before anything ships.
What I build with
Languages
- JavaScript
- TypeScript
- Python
- SQL
- GDScript
- Liquid
- Swift
Front end
- React
- Vite
- Tailwind
- Canvas
- SVG
- Web Audio
- GSAP
Platform
- Cloudflare Pages
- Workers
- D1
- R2
- Durable Objects
- Shopify
Data and tooling
- SQLite
- Prisma
- GA4 and Search Console APIs
- Playwright
- GitHub Actions
Discuss a project
Describe the task, the users, and what you already have.