vondrak's soapbox a tech blog

Writing a Tracing Framework, Part 1: Structured Events

Disclaimer: this blog and the minitrace gem are my personal works. They are not affiliated with my employer, Honeycomb. Views expressed are my own.

A while back, I wrote a talk about the path from logs to traces explaining how flat, human-readable log files can be transformed into rich, machine-parseable data structures. It’s an important conceptual overview, but leveraging traces requires the proper tooling. So I want to go one step further by building a tracing library from the ground up.

Specifically, we’ll look at the development of minitrace, a minimalist tracing framework written as a Ruby gem. The aim isn’t to be minimal in functionality, but in implementation. We’ll get to the same features found in “big” libraries like the Honeycomb Beeline or OpenTelemetry, but we’ll do it with less code and make it easier to understand. Don’t worry too much about knowing Ruby; the lessons are broadly applicable to most major object-oriented programming languages.


Shively Questions

I’m starting a new job at Honeycomb soon. (No, not because of the slides.) I’ve been working as a backend engineer for the better part of a decade, but this role is different: I’m going to be working as a support lead.

I can already feel the sting of that word, “support”. It’s like engineers are allergic to it. And I don’t think I’m just projecting. When I ran the idea by one programmer friend, his initial shock betrayed his disdain. Like support is beneath us programmers. We spent some time unpacking it, stepping through what support would mean at a company like Honeycomb, what it’d mean for me, and so on. But I think it’s telling that the gut reaction was there in the first place.

What is it that makes support a second-class citizen? If I’m honest, I can’t say for sure that the disdain isn’t warranted. Maybe all that “unpacking” was really just an exercise in rationalization. I don’t know; I’ve never been in a support role before.

…Or have I? I think Chris Shively, my former coworker, might argue otherwise.


The Path from Logs to Traces

A blog post linking to the slides for a talk that (a) no one ever asked for and (b) I have no plans on giving. 🙃

But I can explain!



I made my own Vim color scheme based on Google’s Material Design palette.

That’s right, another one.


On RSpec, Minitest, and Doing Magic Right

I started programming Ruby professionally in 2014, which meant I had to learn RSpec. To this day, it remains the de facto standard for writing tests. And to this day, I still don’t really get it.