Ask the Canon
Search the classics by meaning. Semantic search over Gutenberg books, no vector database. Read more →
Highlights of what I've built and run, from coding platforms and semantic search to open source tools. The alphabet is filling up, and some letters are still open. Looking for what developers I coach have built? See their projects.
Start here
435 Python exercises solved in the browser against pytest tests. Learn by doing, not by watching, from first functions to real-world code.
Have an idea? Scope it into a one-page MVP brief in about 30 minutes, with techniques I use for projects you see here.
Search the classics by meaning. Semantic search over Gutenberg books, no vector database. Read more →
Read the classic programming books together. A book club in my community.
My collection of (mostly Python) coding tips, also searchable from Claude Code via MCP. Read more →
A daily protocol tracker: up to five habits with streak heatmap. Built with Django. Read more →
Privacy-first analytics in a single Rust binary. It powers the stats on a couple of the sites you see here.
From 1k LOC Rust web app to a 156-line GitHub Action to drip course content. A good lesson in 'design over code'. Read more →
Turn code into beautiful images from the command line using carbon.now.sh.
Build a multi-tenant SaaS with Stripe billing and HTMX in a six-week 1:1 program.
Look up emojis from the terminal and copy them straight to your clipboard.
Code together in the browser: a shared editor, rotating driver, navigator and timekeeper, and Python that runs client-side. Keeps teams technical and trains engineers on the job. Source →
Python syntax is easy, the tooling around it is hard. Ship a real app with uv, git, and pytest in this free, self-paced course.
The Talk Python course I co-created: 100 days of hands-on Python projects.
The follow-up Talk Python course: 100 days of building Python web apps.
Extract structured expense data from invoice PDFs with an LLM. You can choose between Claude or Ollama, or add your own model.
My implementation of the Scripter to Rust cohort project: a performant JSON parser in Rust, callable from Python using PyO3.
The open source bot from the original Pybites Slack community: karma points, fun commands, and community interaction.
Turn one or many Markdown files into polished PDFs and EPUBs.
A multi-tenant content calendar and review workflow, with a JSON API to push drafts in from your own tools.
435 Python exercises solved in the browser against a hidden test suite.
A six-week cohort to learn how to build a production AI agent in Python with the right architecture, tools, and libraries.
Track what you read, set reading goals, and see what other people on the platform are reading. Includes Goodreads book import and email digests.
Search Pybites articles, exercises, tips, podcasts, and videos from the terminal. Rewritten in Rust.
Automate the two or three things you hate. Ignore the rest. For creative small business owners.
Test-driven Rust exercises, designed for Python developers pivoting into Rust. Learn by doing, not by watching tutorials.
My bite-sized Rust learning blog, mostly used for a one-month Rust learning challenge in June 2024. I now write about Rust here.
AI will build anything. It won't tell you what's worth building. Scope an idea into a one-page MVP brief in about 30 minutes.
A six-week cohort where Python developers build a performant JSON parser in Rust and call it from Python with PyO3.
Build a full-stack snippet manager (CLI, API, web) from data layer to deployment, in a six-week 1:1 program.
Kudos, onboarding, and a weekly wins post. It runs our current Python Agentic AI Slack community. Read more →
A free guide: 19 lessons from reviewing pull requests, one per line of import this.