Using Immutability Helpers for Redux reducers

Immutability is a core concept of libraries like Redux, and has many advantages - not the least of which is that is easier to decide when a React component should update. The downside of immutability is that it's hard to do: familiar methods like .push modify arrays in place instead of producing and new ones, and even when trying to "think immutable" it's easy to mess up and modify and existing data structure.


Adding an RSS feed in Keystone.js

I recently rebuilt my personal website on KeystoneJS and immediately fell in love with it. I think it's for the following reason: Keystone has successfully married NoSQL with the basic concept of the CMS.


Three mundane things you can do with recursion

I have been spending some quality time with Clojure, not because I think I'm likely to use it for a real project any time soon, but because both the syntax and behaviour of the language are so different from what I'm used to that I feel like a total n00b again. This is uncomfortable, but it's a good thing: I'm looking at my even my production code in a whole new way.


DIY Lazy Load

I am constantly looking for practical ways to get all the beautiful images in a design to load without hampering the page load unreasonably.


How to keep your promises: JavaScript edition

The first time I needed to access a third-party API on the web I remember doing something like the following (in PHP):

$data = file_get_contents('http://a/resource/somewhere');

This has the advantage of being really easy to read: like all other parts of my code, I assign a variable to an expression and expect that it will be filled with a value of some sort. What I never thought about at the time was how much was going on behind the scenes: unlike an basic expression that performs a math operation or comparison, a whole HTTP request and response is going on before $data can be filled. During this time, my program pauses and no further code is executed.