Articles

2024


2022


Events, Event Sourcing, and the Path Forward

21 minute read

Distributed systems pose all kinds of challenges. And we’ve built them in the web age, when the tech of the wider Internet is what we use in micr...

2021


2020


Writing Apache Spark UDFs in Go

8 minute read

Apache Spark is a perfect fit for processing large amounts of data. It’s not,  however, a perfect fit for our language stack at Community. We are...

2019


2018


Dynamic Nginx Router… in Go!

8 minute read

We needed a specialized load balancer at Nitro. After some study, Mihai Todor and I built a solution that leverages Nginx, the Redis protocol, an...

2017


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

10 minute read

Cgo is really good. If you’ve worked with C libraries in other languages, I expect you already know it’s not always much fun. But Cgo is pretty eas...

Elixir: Thoughts on the with Statement

5 minute read

Elixir has a some great syntactic sugar. A nice feature that was introduced back in Elixir 1.2 is the with statement which allows you to string t...

2016


2015


2014


Writing Testable Code in Go (golang)

5 minute read

If you are coming from Ruby or another dynamic language you are used to mocking and stubbing extensively for testing. This works fabulously well in...

2013


MessagePack vs JSON in Ruby

3 minute read

MessagePack (shorthand: msgpack) gives us a big performance boost when serializing data to our data store. JSON is the reigning champ for data seri...

Cassandra vs MongoDB For Time Series Data

3 minute read

This is how we got a big win by switching from MongoDB to Cassandra for managing our time series data. Background MyDrive has an AWS cloud-host...

A Week with Mozilla’s Rust

7 minute read

I want another systems language in my tool belt. I want a language where I can be much more productive than in C: one in which I do not fear the co...

2012


CoffeeScript Testing on Travis CI

2 minute read

I have recently been working on Troll-opt, a powerful but simple command line parser for Node.js that was inspired by William Morgan’s Trollop gem...

A Works-Anywhere Config For SSH Tunneling

2 minute read

TL;DR: This article proposes a simple solution to DNS and jump hosts that allows you to use short names on the ssh command line without impacting a...

2011


Kiwi Wikitext Parser at Wikimedia Data Summit

less than 1 minute read

I will be presenting the Kiwi wikitext parser at the Wikimedia Data Summit at O'Reilly's headquarters in Sebastopol, CA on Friday.  Kiwi is a for...

Convert Chef Cookbooks to Puppet Modules

2 minute read

What if you, for any number of reasons, needed to convert Chef cookbooks to Puppet modules and it were convenient to do it in an automated way? How...

Latest Articles

Events, Event Sourcing, and the Path Forward

21 minute read

Distributed systems pose all kinds of challenges. And we’ve built them in the web age, when the tech of the wider Internet is what we use in micr...

Writing Apache Spark UDFs in Go

8 minute read

Apache Spark is a perfect fit for processing large amounts of data. It’s not,  however, a perfect fit for our language stack at Community. We are...

Dynamic Nginx Router… in Go!

8 minute read

We needed a specialized load balancer at Nitro. After some study, Mihai Todor and I built a solution that leverages Nginx, the Redis protocol, an...

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

10 minute read

Cgo is really good. If you’ve worked with C libraries in other languages, I expect you already know it’s not always much fun. But Cgo is pretty eas...

Elixir: Thoughts on the with Statement

5 minute read

Elixir has a some great syntactic sugar. A nice feature that was introduced back in Elixir 1.2 is the with statement which allows you to string t...

Writing Testable Code in Go (golang)

5 minute read

If you are coming from Ruby or another dynamic language you are used to mocking and stubbing extensively for testing. This works fabulously well in...

MessagePack vs JSON in Ruby

3 minute read

MessagePack (shorthand: msgpack) gives us a big performance boost when serializing data to our data store. JSON is the reigning champ for data seri...

Cassandra vs MongoDB For Time Series Data

3 minute read

This is how we got a big win by switching from MongoDB to Cassandra for managing our time series data. Background MyDrive has an AWS cloud-host...

A Week with Mozilla’s Rust

7 minute read

I want another systems language in my tool belt. I want a language where I can be much more productive than in C: one in which I do not fear the co...

CoffeeScript Testing on Travis CI

2 minute read

I have recently been working on Troll-opt, a powerful but simple command line parser for Node.js that was inspired by William Morgan’s Trollop gem...

A Works-Anywhere Config For SSH Tunneling

2 minute read

TL;DR: This article proposes a simple solution to DNS and jump hosts that allows you to use short names on the ssh command line without impacting a...

Kiwi Wikitext Parser at Wikimedia Data Summit

less than 1 minute read

I will be presenting the Kiwi wikitext parser at the Wikimedia Data Summit at O'Reilly's headquarters in Sebastopol, CA on Friday.  Kiwi is a for...

Convert Chef Cookbooks to Puppet Modules

2 minute read

What if you, for any number of reasons, needed to convert Chef cookbooks to Puppet modules and it were convenient to do it in an automated way? How...