Articles

 feature image
Karl Matthias bio photo

Karl Matthias

VP of Architecture at Community.com. Co-Author of "Docker: Up and Running" from O'Reilly Media. Dublin, Ireland.

Mastodon

Twitter

Github

2022


Run Your Own Kubernetes Instance with Microk8s

This post covers how to get a personal Kubernetes (K8s) cluster running on aninstance with a public IP address, with...

Events, Event Sourcing, and the Path Forward

Distributed systems pose all kinds of challenges. And we’ve built them in theweb age, when the tech of the wider Inte...

2021


Coordination-free Database Query Sharding with PostgreSQL

Follow other posts by At Community.com, we had a problem where a bunch ofworkers needed to pick up and process a larg...

2020


Writing Apache Spark UDFs in Go

Follow other posts by Apache Spark is a perfect fit for processing large amounts of data. It’s not, however, a perfec...

Hello World on the W65C265 (65816) from macOS

I have been lucky enough to be healthy so far and have been using lockdown timeto get back into electronics and micro...

2019


The Kernel Change That May Be Slowing Down Your App

A kernel “bug fix” that happened at the end of last year may be killing theperformance of your Kubernetes- or Mesos-h...

2018


Dynamic Nginx Router... in Go!

We needed a specialized load balancer at Nitro. Aftersome study, Mihai Todor and I built asolution that leverages Ngi...

2017


Cgo: When and (Usually) When Not to Use it

Cgo is really good. If you’ve worked with C libraries in other languages, Iexpect you already know it’s not always mu...

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 debuggi...

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...