RAGANWALD.COM

Reginald Braithwaite

Creative Works

Welcome to my humble abode on the World Wide Web!

Recent


Essays New Yorker Cartoon, c. 2025
Cryptographic techniques used by nCrypt Light in 1994
Mutual Recursion in Language
The Inner Osborne Effect

Thanks for posting this, great stuff...
—Mark Watson

Wow! Thank you so much for taking the time to write and for sharing it :) Will have to read a few more times before it properly sinks in I think! Really thorough and well written! —Johnathan Mukai

divider 2015 - 2019
books JavaScript Allongé (pdf, podcast)

is as close to capturing the true soul of JavaScript as anything I’ve read. The examples are very well thought out, and the writing style is a joy to read.—acjohnson55

This book is awesome and blowing my mind in a great way.”—Johnathan Mukai

The best discussion of functional programming in js I’ve found so far.—Nicholas Faiz

I think it’s one of the best tech books I’ve read since Sedgewick’s Algorithms in C.—Andrey Sidorov

talks Optimism and the Growth Mindset from NDC Conferences
Optimism II from DevDay
Optimism from Nordic Ruby
JavaScript Combinators from DevDay
JavaScript Combinators, The Six Edition from NDC Conferences
First-Class Commands: An unexpectedly fertile design pattern from NDC Conferences
essays 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

is amazingly well written. You covered a good deal of any introduction to computational theory course in a straightforward, well motivated matter. This is definitely something I’ll be passing around to some of my bootcamp friends who are curious taste some of the theory they don’t get exposure to.—kjeetgil

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

sounds like poetry. Beautifully written!—nikodunk

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

I’ve been looking for a resource to introduce state machines to others. This does much more. Thank you—Pyrolistical

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

I really enjoyed Why Recursive Data Structures? because it introduced me to a new data structure and some very elegant and (subjectively) beautiful algorithms.—johnfn

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 Advices
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
divider 2010 - 2014
code HashLife in the Browser, computing qudrillions of generations of Conway’s Game of Life in a browser.
allong.es, a library for writing ES5 in a functional style.
oscin.es, a library for playing with combinatorial logic puzzles such as those found in To Mock a Mockingbird
books JavaScript Allongé (ES5) (podcast)
CoffeeScript Ristretto (pdf)
talks Kestrels, Quirky Birds, and Hopeless Egocentricity from Nordic JS.
Javascript Combinators from NDC Conferences
The Art of the Javascript Metaobject Protocol from NDC Conferences
The Art of the Javascript Metaobject Protocol from Nordic JS.
Invent the future, don’t recreate the past from Future JS
The Not-So-Big Software Design from wroc_love.rb.
I have a good feeling about this - Why tooling is poised to make the jump to hyperspace from Web Rebels
The Rebellion Imperative from Øredev
divider Essays
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
divider
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
divider
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
divider
Prototypes Are Not Classes The New JavaScript Problem
Type-Fu Fighting Defactoring
The Predicate Module Pattern Leaky Greenspunned Abstractions
divider
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
divider
Inelegance config ||= config
Did you ever take that test yourself? When FP? And when OOP?
Explicit vs. Clever High Level Trampolining
divider
Trampolines in JavaScript My Literate CoffeeScript Blogging Workflow
The Interview Zee Hackenbush Bird
Arity and Partial Function Application Six Questions
divider
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
divider
Hilbert's School Closed for Discriminatory Practices Hilbert's Grand JavaScript School
Twenty Thirteen Solving the "Drunken Walk" problem with iterators
The "Drunken Walk" Programming Problem Tortoises, Teleporting Turtles, and Iterators (CoffeeScript)
divider
Tortoises, Teleporting Turtles, and Iterators (JavaScript) Classes vs. Prototypes in JavaScript
Practical Applications of Partial Application Effective JavaScript Reviewed
Function and Method Decorators The Madness of King JavaScript
divider
More than you ever wanted to know about "this" in JavaScript, Part I More Combinator Recipes in JavaScript: Partial, Bound, Send and Fluent
Combinator Recipes for Working With Objects in JavaScript Duck Programming
While one of the main points of the article seems to be "duck programming is bad because it circumvents proper workflows", I suspect you could also reverse it and say "people write duck programs to avoid terrible workflows"—overgard
divider
Williams, Master of the COMEFROM Software's Receding Hairline
divider

Selected early work


code andand, the Maybe monad in idiomatic Ruby
JQuery Combinators, composition-oriented tooling based on combinatory logic
You Are ‘Da Chef, aspect-oriented programming tooling for Underscore projects
rewrite_rails, add syntactic abstractions like andand and String-to-Block to Rails projects without monkey-patching
ick, an ad hoc, informally-specified, bug-ridden, slow implementation of half of Monads, written in ES5
String#to_proc, a port of the String Lambdas from Oliver Steele’s Functional Javascript library
nCrypt Light, “strong” encryption for the origial Apple Newton in 1994
books What I’ve Learned From Failure
talks Beautiful Failure from CUSEC

divider Bullshit from Unspace Interactive

divider essays
Elegance and the Surreals
A program to compute the nth Fibonacci number
The Mouse Trap

A+ story. Can't believe how much this stuff happens.—Xichekolas

divider

Billy Martin's Management Secret, a Play in Three Acts

divider

We Have Lost Control Of The Apparatus

Visitor Counter Visitor Counter
Walk

Under Construction New! Generate your own 90s page here! Under Construction