Critical Vulnerabilities in JSON Web Token Libraries

This post describes a vulnerability with JSON Web Tokens (JWT). It's an interesting read and has good to know vulnerability.

Testing Strategies in a Microservice Architecture

A series of slides about Microservice testing strategies.

WebSockets From Scratch

How to implement a WebSocket server from scratch in Ruby. It’s a good way to learn the protocol.

How to learn C: An introduction for the high-level programmer

Learning C (and lower-level languages) can help develop an understanding of what happens behind the scene.

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 http://craft-conf.com/2015.

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

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.

Ramjet

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