Architecting Websites For The HTTP/2 Era

The arrival of HTTP/2 will require a bit of re-thinking how we handle websites (and webservers). This makes it a good time to reflect on what those changes can bring.

It’s a trap! Systems traps in software development

In her seminal work on systems thinking, Systems Thinking — A Primer, Dana Meadows describes a number of systems structures that tend to result in “problematic behaviour.” She calls such archetypes ‘traps’, as a failure to recognize them as such can result in unexpected problems. Such traps are extremely common in all areas of life, and are no less prevalent in software development.

The Unreasonable Effectiveness of Recurrent Neural Networks

This is a very interesting article about Recurrent Neural Networks, how it works, and its applications.

Wizard and Warriors series

An interesting series of articles touching on Object Orientation, Domain-Driven-Design, and how not reflecting about the Domain can cause problems quickly down the road. I recommend reading them in order.

What the Pack?

Quick article explaining the Array#pack and String#unpack methods used for serializing (packing) data into byte streams and back.

Nobody Told Me Minitest Was This Fun

An Explanation of Minitest features through the eyes of a RSpec user.

Testable Examples in Go

Official blog post explaining how testable examples work in Go.

NO D***HEADS! A Guide To Building Happy, Healthy, and Creative Teams.

Very interesting article about culture and keeping a healthy team. It’s targeted to design companies but not exclusive to it.

Library Patterns: Why Frameworks Are Evil

The difference between library and frameworks and why frameworks can be a problem.

Remote Code Execution in Elasticsearch - CVE-2015-1427

This article explains an exploit for Elasticsearch that exposes interesting information about its internals.

Code Review Best Practices

This is a really good write-up of how to code review, what to look for, and how to be good at it.

Problems with Nil and How to Avoid Them

An object oriented approach for handling nil objects in Ruby. It implements a similar approach to newer languages which dropped support for null values implement.

The Failure of Agile

Andy Hunt – one of the agile “creators” – talks about what’s wrong with agile today and how most organizations are not really doing agile.

A Week with a Rails Security Strategy

This post presents a mini-habits based practice for continuous review of Rails applications security.

High Cohesion, Loose Coupling

A good explanation of what cohesion and coupling really mean, the benefits, and how to achieve high cohesion and loose coupling.

Keynote: Architecture the Lost Years

This is a really good talk from Uncle Bob Martin about architecture.

The DRY Obsession

The Don't Repeat Yourself principle is important. But it's not the only important principle or consideration for software design. Like all good things, it should be used with caution and forethought.

Elements of Scale: Composing and Scaling Data Platforms

Very good write-up about how memory hierarchy is important when designing data platforms and how that impacts performance.

CraftConf 2015 – did someone say microservices?

Some notes around all the microservices-related talks at CraftConf2015. You can also check out the videos for all talks on

An Introduction to JavaScript-based DDoS

Cloudflare explains how JS-based DDoS attacks work and how to mitigate them.

The Architecture Twitter Uses To Deal With 150M Active Users, 300K QPS, A 22 MB/S Firehose, And Send Tweets In Under 5 Seconds

The article is a basic list of bullet points, but it explains in a high-level how twitter handles its scale.

Ruby Hash Initializing – Why Do You Think You Have a Hash, But You Have an Array

Interesting insight into Ruby’s hash implementation.

Libraries & Tools


Lotus is a new Ruby framework with a focus on architecture and code de-coupling. It really shines on separating domain/business logic from the framework and delivery system. I think it’s an interesting idea and I’d keep an eye on it.

Caddy Server

New modern zero-conf HTTP server that supports HTTP/2.0 with a focus on modern web applications.


HTML elements morphing JS library. It’s pretty cool.

A Pragmatic Guide to Backbone.js Apps

This is a very interesting series of articles about a proper usage Backbone.js. I especially like the “Using events like a boss” section.

3 Ways to Do Eager Loading (Preloading) in Rails 3 & 4

This post explains the different ways of preloading data using ActiveRecord.

To Understand Code You Have to Build a Mental Model

How to become a better programmer by learning how you understand code.

The http.HandlerFunc Wrapper Technique in #golang

A good explanation and examples of how to achieve a middleware stack with Go’s plain net/http stdlib.

The Log: What Every Software Engineer Should Know About Real-Time Data's Unifying Abstraction

This is an older article but it’s really good. It explains the Log data structure, when it’s useful, and how LinkedIn used it internally to scale their system and continues to use it. It’s worth mentioning that this later resulted in the Kafka project.

Call Me Maybe: MongoDB Stale Reads

Aphyr is one of the leading experts in distributed systems, specifically databases. The focus of the article is MongoDB’s flaws in data consistency, but it comes with a lot of good explanation and examples on the subject.