Why Does Everyone Hate Haskell, Jazz, and Pure Math?
All three of these things get a lot of hate for being elitist, obscure, irrelevant, painful, and useless. But are they?
Proofs are programs, and programs are proofs. That's basically what the Curry-Howard correspondance says. While learning about direct proofs in math, it helped me to think of a direct proof as a simple function that I was trying to write...
Functors, Applicatives, And Monads In Pictures (In TypeScript)
This is a translation of Functors, Applicatives, And Monads In Pictures into TypeScript, with the Haskell examples alongside for reference and comparison.
People often struggle to understand what monoids, functors, and monads actually are and how they could ever be useful outside of the typical examples...
In this post I’m going to talk about how I figured out I could use nested array destructuring in TypeScript to work like S-Expression…
State persistence in React with TypeScript and useStickyReducer
Let's learn how we can expand on the popular useStickyState pattern and the reducer pattern...
How I learned Pashto grammar through programming syntax trees
Peter Naur talked about programming as theory building, and argued that programming is: “an activity by which programmers form or achieve a…
Making totally offline-available PWAs with Vite and React
PWAs (Progressive Web Apps) are great. They let you make any website into an app that can be installed and used across different platforms…
Logic and Multiply-Quantified Statements in JavaScript
Programming has drawn me back into math, and I am really enjoying seeing the parallels between the formal logic of mathematics and the…
Using recursion to modify all the text in a React/JSX element
How can we write a function to modify all the text found inside of a React/JSX element, even when its full of other nodes and texts? This is a good problem to learn about recursion with...
How to keep an input in focus when clicking on other elements in React
Sometimes in a React application you want to have an input which is the main focus. You might want the cursor to stay focussed on that input even if you click around on different things...