Improving the dead code elimination algorithm in js_of_ocaml
Reducing code size with a new global optimization pass in js_of_ocaml.
My programming language feature wishlist
All the features I want in a modern general-purpose language.
Synthesizing the boring parts with GHC: a research progress report
A progress report on work on synthesizing Haskell code using the GHC.
Monad confusion and the blurry line between data and computation
On the dual interpretations of data and computation, and a comparison of Clojure macros to Haskell monads.
Why learn Racket? A student's perspective
A few thoughts on why I think you should learn Racket.
About that Reader trick
Reader can be used to track local bindings, but tracking all bindings can be more difficult.
The good and the bad of Typed Racket
Some thoughts on Typed Racket, gathered from my experience using it to implement a Lox interpreter.
Crafting Interpreters in Typed Racket
Some thoughts on following Bob Nystrom's book Crafting Interpreters in Typed Racket.
Solving a few Leetcode questions in Haskell
Exploring some purely functional programming solutions to a few popular Leetcode questions.
The strange, sketchy emails a browser extension developer receives
Where does extension malware come from? It might originate from emails like these.
Median heaps in Haskell
An implementation and discussion of a median heap data structure in Haskell.
Book Review: Racket Programming the Fun Way by James Stelly
A review of the new Racket programming book.
Implementing simple hash tables in Racket
A simple implementation of mutable hash tables to learn how they work behind the scenes.
Don't go looking for you first open source contribution
The traditional method of approaching one's first open source contribution gamifies the process and leads an unhelpful experience for all involved.
Parsing propositional logic in 33 lines of Racket
A guide to implementing a simple parser for propositional logic in Racket.