Roguelike Celebration
November 5, 2024
Loopy Levels in Fallen Order
November 3, 2024
Parsing the Cohost Export with DuckDB
Code really is data.
October 10, 2024
Splash of paint
Updated the design and added some new features.
October 7, 2024
Trying out Astro
Seeing what all the fuss is about
October 6, 2024
Why cohost is good
Or why it was good...
April 6, 2024
New library: superhistory
A small nestable wrapper around the history API
January 1, 2024
Expensive Reverb, for free...
October 30, 2023
Hooks and Streams
Skip the "rules of hooks"
February 22, 2020
Node scripting: Tips and tricks
These days, probably just use zx
February 2, 2020
bash run: an alternative to npm scripts
Again, these days probably just use zx
November 9, 2017
Intro to Streams
Imagine if JS had a keyword for reactive variables
November 4, 2017
Intro to Monads
Not really...
July 20, 2017
Redefining Filter
You can filter pretty much any data type...
January 25, 2017
The versatility of Array methods
Safely parse JSON, with array methods?
January 25, 2017
Fantasy Land: The Power is Yours
A life lived in fear and all that stuff...
October 24, 2016
How to talk to a computer
You can save a lot of time by working in the REPL
September 11, 2016
The Perfect API
Intro to Monads, Functor and Algebraic types.
May 13, 2016
The road from Backbone to Mithril
Sometimes you have to look back to move forward.
May 2, 2016
How I use mithril
Or at least, how I used mithril
April 21, 2016
The power of m.prop
RIP
January 8, 2016
Philosophies. Not Frameworks.
Ship ideas, not code.
June 8, 2015
Self currying function
A fun exercise
June 8, 2015
Hardcoding is great
DRY after you've WET
January 31, 2015
A practical Ramda example: Scraping
Scraping the web FP style
January 8, 2015
Grokking Lodash
Peeking under the hood of Lodash
November 22, 2014
Currying vs Hurrying
A very serious deep dive into partial application
November 12, 2014