Articles

 feature image
Karl Matthias bio photo

Karl Matthias

DevOps, sysadmin, coder. Principal Systems Engineer at Nitro. Dublin, Ireland.

Twitter

Google+

Github

2017


Elixir: Thoughts on the `with` Statement

Elixir has a some great syntactic sugar. A nice feature that was introducedback in Elixir 1.2 is the with statement w...

2016


Sidecar: Service Discovery for all Docker Environments

Great, you have a Docker system up and running. Maybe you run stuff on your devbox in a standalone Docker instance. M...

Building Tiny, Reliable Docker Container Images

Building good, clean Docker container images is a bit of an art, and there is a lotof conflicting advice out there ab...

2015


Continue statements with Labels in Go (golang)

Flow control of nested loops can be a pain. And because Go uses for loops ingreat abundance, you hit this problem mor...

2014


Writing Testable Code in Go (golang)

If you are coming from Ruby or another dynamic language you are used to mockingand stubbing extensively for testing. ...

2013


MessagePack vs JSON in Ruby

MessagePack (shorthand: msgpack) gives us a bigperformance boost when serializing data to our data store. JSON is the...

Cassandra vs MongoDB For Time Series Data

This is how we got a big win by switching from MongoDB to Cassandra formanaging our time series data.BackgroundMyDriv...

A Pattern for Wrapping C Function Calls in Rust

In my recent project, I found an idiom that seems pretty useful for instantiating new objects that wrap the functiona...

A Week with Mozilla's Rust

I want another systems language in my tool belt. I want a language where I can be much more productive than in C: one...

Magritte: Running sub-processes easily from Ruby

At MyDrive we have a few heftybinaries written in C++ that are used as part of our main telematicsdata processing pip...

2012


CoffeeScript Testing on Travis CI

I have recently been working on Troll-opt, a powerful butsimple command line parser for Node.js that was inspired by ...

A Works-Anywhere Config For SSH Tunneling

TL;DR: This article proposes a simple solution to DNSand jump hosts that allows you to use short names on the sshcomm...

Discovering Pending Rails Migrations With Git

At MyDrive,Gavin and I came up withwhat I think is a pretty novel solution to discovering new Railsmigrations at depl...

HTTP Header Hell Starring X-Real-IP and X-Forwarded-For

TL;DR: Having both headers set to different values upsetsrack-protection. It’s always fun to spend a whole day debugg...

2011


Kiwi Wikitext Parser at Wikimedia Data Summit

I will be presenting the Kiwi wikitext parser at the Wikimedia Data Summit at O'Reilly's headquarters in Sebastopol,...

Convert Chef Cookbooks to Puppet Modules

What if you, for any number of reasons, needed to convert Chef cookbooks toPuppet modules and it were convenient to d...