raganwald.com
New Yorker Cartoon, c. 2025
Cryptographic techniques used by nCrypt Light in 1994
Mutual Recursion in Language
The Inner Osborne Effect
Remembering John Conway's FRACTRAN, a ridiculous, yet surprisingly deep language
Exploring Regular Expressions, Part II: Regular Languages and Finite-State Automata
Exploring Regular Expressions and Finite-State Recognizers, Part I
A Brutal Look at Balanced Parentheses, Computing Machines, and Pushdown Automata
Ayoayo and Linear Recursion
Structural Sharing and Copy-on-Write Semantics, Part II: Reduce-Reuse-Recycle
Exploring Structural Sharing and Copy-on-Write Semantics, Part I
Alice and Bobbie and Sharleen and Dyck
Pattern Matching and Recursion
Ruby's Hashes and Perl's Autovivification, in JavaScript
Why Y? Deriving the Y Combinator in JavaScript
To Grok a Mockingbird
The Eight Queens Problem... and Raganwald's Unexpected Nostalgia
A Trick of the Tail
Recursion? We don't need no stinking recursion!
More State Machine ❤️: From Reflection to Statecharts
How I Learned to Stop Worrying and ❤️ the State Machine
Truncatable Primes in JavaScript
Closing Iterables is a Leaky Abstraction
A Sequence Problem
What's a Transducer?
Having our cake and eating it too: "Using iterators to write highly composeable code"
foldl, foldr, and associative order
Turing Machines and Tooling, Part I
The Lumberjane Song
Time, Space, and Life As We Know It
Why Recursive Data Structures?
From Higher-Order Functions to Libraries And Frameworks
Anamorphisms in JavaScript
From Mixins to Object Composition
Why Are Mixins Considered Harmful?
The Hubris of Impatient Sieves of Eratosthenes
“We will encourage you to develop the three great virtues of a programmer: laziness, impatience, and hubris”
“Programs must be written for people to read, and only incidentally for machines to execute”
First-Class Commands (the annotated presentation)
This is not an essay about 'Traits in Javascript' (updated)
JavaScript Mixins, Subclass Factories, and Method Advice
super() considered hmmm-ful
An ES6 function to compute the nth Fibonacci number
Solving a Coding Problem with Iterators and Generators
Getters, Setters, and Organizing Responsibility in JavaScript
Extension Methods, Monkey-Patching, and the Bind Operator
Method Advice in Modern JavaScript
Method Decorators in ECMAScript 2015 (and beyond)
Using ES.later Decorators as Mixins
Purely Functional Composition
Functional Mixins in ECMAScript 2015
Prototypes are Objects (and why that matters)
Classes are Expressions (and why that matters)
De Stijl: How necessary are var, let, and const?
OOP, JavaScript, and so-called Classes
Carnac the Magnificent
Hilbert's Grand JavaScript School (2015 Edition)
Left-Variadic Functions in JavaScript
Partial Application in ECMAScript 2015
The Symmetry of JavaScript Functions (revised)
(unlikely to be) The Last Word on Interviewing for a JavaScript Job
Interviewing for a JavaScript Job
Lazy Iterables in JavaScript
The Quantum Electrodynamics of Functional JavaScript
Tail Calls, Default Arguments, and Excessive Recycling in ES-6
Destructuring and Recursion in ES-6
Why Why Functional Programming Matters Matters
Fun with Named Functions in JavaScript
600 Months
Chickens And Pigs
I Can't Find Good Salespeople
A JavaScript Constructor Problem, and Three Solutions
Greenspunning Predicate and Multiple Dispatch in JavaScript
Structs and ImmutableStructs
Repost: Captain Obvious on JavaScript
How to Trick the Gullible into Learning a New Programming Language
JavaScript Values Algebra
Mixins, Forwarding, and Delegation in JavaScript
Class Hierarchies? Don't Do That!
Future JS
Writing OOP using OOP
A Programmer's Story
At home with the Bumblethwaites
Private Methods In Ruby
Prototypes Are Not Classes
The New JavaScript Problem
Type-Fu Fighting
Defactoring
The Predicate Module Pattern
Leaky Greenspunned Abstractions
I hated, hated, hated this CoffeeScript
It's a Mad, Mad, Mad, Mad World: Scoping in CoffeeScript and JavaScript
Yes, JavaScript is a Lisp
Unfinished Work #1: Bind-by-Contract
Happy Birthday To Me
Functional's Greatest Accomplishment
Inelegance
config ||= config
Did you ever take that test yourself?
When FP? And when OOP?
Explicit vs. Clever
High Level Trampolining
Trampolines in JavaScript
My Literate CoffeeScript Blogging Workflow
The Interview
Zee Hackenbush Bird
Arity and Partial Function Application
Six Questions
Counting Crows (diversion)
A Surreal Encounter with a Winged Elephant
A long time ago, in a village far, far away
What's the difference between Currying and Partial Application?
Two Brief Points About CoffeeScript 1.5
Implementing the Sieve of Eratosthenes with Functional Programming
Hilbert's School Closed for Discriminatory Practices
Hilbert's Grand JavaScript School
Twenty Thirteen
Duck Programming
The Mouse Trap
Billy Martin's Management Secret, a Play in Three Acts
We Have Lost Control Of The Apparatus