Blog
2026-07-08
What `for x in y` hides from you
What a Python `for` loop is really doing once you stop hand-waving.
2026-04-06
Build Your First REST API in Rust - LIU Brooklyn Workshop
A recap of bringing my Rust REST API workshop to LIU Brooklyn and seeing the second run go a little smoother.
2026-03-23
Build Your First REST API in Rust - CCNY Workshop
A recap of my first in-person Rust workshop at CCNY, where we built a CRUD API together and made REST a little less scary.
2025-11-17
Write your first library
Why writing your own library changes the way you think about dependencies, interfaces, and your agency as an engineer.
2025-11-03
Memphis goes online: adding socket support
How Memphis went from quietly evaluating code to accepting bytes from `localhost` like a proper little runtime.
2025-10-20
Python’s operator chaining is mildly interesting
Why `4 == 4 == 4` broke my mental model and forced me to parse comparison chains a different way.
2025-07-14
What I’ve learned from 200+ hours helping developers grow
A few things one-on-one mentorship taught me about confidence, emotional safety, and helping people think a little more clearly.
2025-06-16
How global variables work in Python bytecode
Why globals are weirder than locals in Python bytecode, and why the VM has to work harder to find them.
2025-06-02
How local variables work in Python bytecode
What people mean when they say local variables live on the stack, and how that actually plays out in a Python bytecode VM.
2025-05-05
Verifying two interpreter engines with one test suite
How Memphis now makes its treewalk and bytecode engines prove they agree by running them through the same tests.
2025-03-31
I'm embarrassed by how much code I cut from my test suite
How I cut a mildly absurd amount of code from my parser tests after the original setup finally buckled under its own weight.
2025-03-03
I left corporate and still do roadmaps + a Memphis update
A progress update on Memphis, public roadmaps, and the strange fact that I left corporate but still love making a plan.
2025-01-27
Building a Markdown blog with links optimized for Gatsby
How I built this little Markdown blog in Gatsby and wrestled the links and SEO details into something I actually wanted to own.
2025-01-13
Typed integers in Rust for safer Python bytecode compilation
How a small Rust type trick saved me from mixing up bytecode indices and silently ruining my own compiler.
2024-12-30
How I added support for nested functions in Python bytecode
A short tour of nested functions in Python bytecode and what it took to get them working in Memphis.
2024-12-16
Improving memory efficiency in a working interpreter
What it looked like to cut back on my cloning habit and make the interpreter less bloated with lifetimes and borrowing.
2024-11-25
An interpreter inside an interpreter
What happened when I embedded Python inside my Python interpreter so parts of the standard library could stop glaring at me.
2024-11-18
Building for WebAssembly
Notes from my first attempt to shove Memphis into the browser with WebAssembly and see what broke.
2024-11-04
Introducing: From Scratch Code
Why I started From Scratch Code as a place to teach software engineering with a little more depth, personality, and actual human support.
2024-10-21
A REPL for fat-finger friendly typing
How I taught Memphis' REPL a few basic manners like backspace, arrow keys, and not exploding when someone hits Ctrl-C.
2024-10-07
Declarative macro magic from Axum in Rust
How Axum pulls off the mildly magical trick of making `get` and `post` feel like both functions and methods.