This is a repository of essays and presentations by Reginald “Raganwald” Braithwaite
🛖 | 📫 | 🐘 | 👨💻 | 📚 | 📽️ |
JavaScript Combinators, the “six” edition from DevDay 2016.
Free Downloads
☕️ JavaScript Allongé, The “Six” Edition
☕️ An antiquarian edition of CoffeeScript Ristretto
HashLife
2020+
2019
- 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
2018
- 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
2017
- 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
2016
- 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)
2015
- 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
2014
- 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
2013
- 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
- Better to leave it in the social sphere
- Solving the "Drunken Walk" problem with iterators
- The "Drunken Walk" Programming Problem
- Tortoises, Teleporting Turtles, and Iterators (CoffeeScript)
- 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
- More than you ever wanted to know about "this" in JavaScript, Part I
selected older essays
- More Combinator Recipes in JavaScript: Partial, Bound, Send and Fluent (2012)
- Combinator Recipes for Working With Objects in JavaScript (2012)
- Duck Programming (2012)
- Williams, Master of the COMEFROM (2011)
- Software's Receding Hairline (2011)
- OOP practiced backwards is "POO" (2010)
- Elegance and the Surreals (2009)
- A program to compute the nth Fibonacci number (2008)
- The Mouse Trap (2008)
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License except where copyright is otherwise asserted.