Parsing Protobuf Definitions with Tree-sitter
If you work with Protocol Buffers (protobuf), you can really save time, boredom, and headache by parsing your definitions to build tools and gene...
If you work with Protocol Buffers (protobuf), you can really save time, boredom, and headache by parsing your definitions to build tools and gene...
This post covers how to get a personal Kubernetes (K8s) cluster running on an instance with a public IP address, with HTTPS support, on the chea...
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...
At Community.com, we had a problem where a bunch of workers needed to pick up and process a large amount of data from the same DB table in a high...
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...
I have been lucky enough to be healthy so far and have been using lockdown time to get back into electronics and microcontrollers, a hobby that i...
A kernel “bug fix” that happened at the end of last year may be killing the performance of your Kubernetes- or Mesos-hosted applications. Here’s ho...
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 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...
with
Statement
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...
Great, you have a Docker system up and running. Maybe you run stuff on your dev box in a standalone Docker instance. Maybe you are just deploying...
Building good, clean Docker container images is a bit of an art, and there is a lot of conflicting advice out there about how to do them properly. ...
Flow control of nested loops can be a pain. And because Go uses for loops in great abundance, you hit this problem more often than in some other la...
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 (shorthand: msgpack) gives us a big performance boost when serializing data to our data store. JSON is the reigning champ for data seri...
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...
In my recent project, I found an idiom that seems pretty useful for instantiating new objects that wrap the functionality of an external C function...
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...
At MyDrive we have a few hefty binaries written in C++ that are used as part of our main telematics data processing pipeline. One of these is buil...
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...
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...
At MyDrive, Gavin and I came up with what I think is a pretty novel solution to discovering new Rails migrations at deployment time. We deploy ofte...
TL;DR: Having both headers set to different values upsets rack-protection. It’s always fun to spend a whole day debugging something that should be...
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...
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...