Over the past few months I’ve been running an experiment. When a candidate gets stuck solving an interview problem, I tell them they can use Claude or ChatGPT or any AI of their choice. I found that candidates who were already doing well end up doing well with AI , but candidates who were already failing don’t do any better. AI assistance doesn’t help weak candidates. The correlation is very…
Many programmers complain AI is good for quickly throwing up some CRUD apps but not much else. When someone points out this isn’t true, everyone (rightly) asks for examples. There aren’t many posts with detailed examples online, so I thought I’ll offer some from a project I wrote this Christmas. Over the winter break I started building Beep – an imaginary programming language I wanted to get out…
I mentioned before that getting an interpreter working is a nerd-snipe. Once it works a little , it’s so much fun to keep adding functionality you end up working on it despite yourself. In this spirit, here is a writeup about my latest changes to ts-wolfram . Dropping OOP I initially wrote the interpreter using OOP . There were three AST types ( Integer , Symbol , and Form ), each one derived from…
My original plan for ts-wolfram was to quickly write a toy Wolfram Language interpreter in Typescript to better understand Mathematica internals, then abandon it as an exhaust product of learning. But one feature of interpreters is that building them is really fun. Once you get something working you want to keep hacking on it. So, last weekend I decided to allow myself to get nerd-sniped and…
Try it on GitHub: https://github.com/coffeemug/ts-wolfram I’ve been using Mathematica to help with learning math (and using math to help learn Mathematica). Too often my Mathematica code has surprising behavior, which means I don’t really understand the language or how it’s evaluated. So I thought I’d do two things to get better. First, write a bunch of Mathematica rules to implement a toy…
Try it on GitHub: https://github.com/coffeemug/ts-parsec I write a lot of throwaway interpreters to play with programming language design ideas. For these projects, writing a parser is usually the most frustrating part. Parser libraries are hard to learn, easy to forget, and finicky to use. The other option, hand-coding a custom parser for each interpreter, raises the activation energy to start a…
The mean value theorem is a surprising Calculus result that states for any function f f f differentiable on ( a , b ) (a,b) ( a , b ) 1 there exists x ∈ ( a , b ) x(a,b) x ∈ ( a , b ) such that f ′ ( x ) = f ( b ) − f ( a ) b − a f ′ ( x ) = b − a f ( b ) − f ( a ) Here are three informal intuitions for what this means (all of them say the same thing in different ways): Physical example. If you…
There are all sorts of things people want. To pay off debt 1 , to help the environment, to be kind to strangers. But we don’t want these things now . Right now we want the latest iPhone, our drink to go, to zip through traffic faster. And since anything we ever do we do in the now, paying off debt, helping the environment, and kindness to strangers remain perpetually in the future. Failed products…
I wrote this for myself to understand the Leibniz notation. Prerequisites for this post are the definition of the derivative and the Lagrange notation. If you don’t understand these yet, please study them first. So… You may have already seen something like d y d x d x d y . This is called the Leibniz notation. The Leibniz notation has many of what Spivak calls “ vagaries”. It has multiple…
EDIT Oct 26, 2025: for homework solutions go here (but do it yourself first, you’re only hurting yourself if you look, etc. etc. all the usual disclaimers apply.) I finished self-studying Axler’s Linear Algebra Done Right (3rd edition). I wanted to understand linear algebra and picked up LADR because it’s the most recommended book online. Some notes below. After picking the book I found a…
If you work on anything worthwhile, sooner or later people will care about it and will want you to send progress updates. These could be quarterly investor updates, weekly updates to your boss, emails to adjacent teams, etc. Here are tips on how to do this well. Understand your role, and with each update add to the body of evidence that you’re a good steward in that role. If people want your…
Here is a simple process for shipping software projects that works. First, decompose the project into a stream 1 of headlines. Then pick an aggressive date to ship the first headline and work like hell to meet that date. Have everyone work only on one headline at a time– the upcoming one. Ignore everything else. Don’t work on anything that doesn’t help you ship the headline. Once the headline is…