Image for post
Image for post
Photo by Benjamin Voros on Unsplash

I’ve been deep in the domain of observability over the past year. I thought I should take a step back and try to explain some concepts of a project I’ve been working on, OpenTelemetry.


Image for post
Image for post
Photo by Jeff James on Unsplash

I couldn’t find a good answer to this question and I looked for hours. Ultimately, I decided to document it here for the next time I need it and for anyone else out there who’s looking to disable go modules in in Visual Studio Code.

  1. Open up Settings (⌘,) and search for “go tools env vars”

Image for post
Image for post
Photo by Amy-Leigh Barnard on Unsplash

We’ve all been there. You want to get started with distributed tracing, but don’t have the time to revisit the codebase of dozens, if not hundreds of dozens of services in your system. Don’t worry, OpenTelemetry’s got you covered. Thanks to a great community effort from members of many organizations, the OpenTelemetry project has been able to quickly ramp up its ability to auto-instrument code in a variety of languages for many widely used third-party libraries.

Why auto-instrument?

For many organizations’ engineering teams, the biggest barrier to using distributed tracing, and therefore making the lives of operators 10,000 times better at least…


Preface: This is not an article defining what the Berkeley Packet Filter(BPF) is. The internet is full of resources on the topic and I’m definitely not an expert on it. Check out this talk by Brendan Gregg if you’d like to know more.

One of the biggest pains in the butt to writing BPF code on MacOS is getting the right environment setup. I know, I know, use the cloud… Or get a Linux laptop. Yes, those two options would make things simpler, but I’m old-fashioned and like to run things locally, which means the cloud won’t work for my…


Image for post
Image for post

There’s a scene from the Simpson episode “Lisa the Simpson” where Lisa appears on a television broadcast to make an appeal to the audience. She urges citizens to use and treasure their brain, in fear that she was about to lose her own due to the “Simpson gene”. As I was leaving my previous employer, I had a similar fear that my brain would turn to mush. I’m writing this article in the event that my true destiny of turning into a couch potato becomes fulfilled and I no longer have full use of my brain. …


Image for post
Image for post

Here comes a rant. There’s a handful of words I hear people using repeatedly that make my skin crawl. Say for example I’m sitting in a meeting, coffeeshop, or at a conference. The speaker will say “check out this sexy code I just wrote” and immediately my train of thought is derailed. Instead of paying attention to the new library they built, I’m now wondering “Is the person actually sexually aroused here?” or “Did he really just say that?”

Depending on the situation, I usually either ask the person to clarify things on the spot or follow up with them…


Image for post
Image for post

Distributed applications come in all shapes and sizes. In many cases, an Application Programming Interface (API) talks to another one and distributed tracing through Hyper Text Transfer Protocol (HTTP) headers works just great. But what about other cases? Can distributed tracing work for event driven architecture? What if instead of a direct request, a message queue is used to trigger an action in another part of the system?

A little while ago I started working with Redis channels to pass information from one service to another. If you haven’t played with Redis Pub/Sub, it’s a pretty simple and convenient way…


Image for post
Image for post

One of the challenges in software development is to remain focused on delivering value to users. Interruptions and outages cause a lot of noise and distract engineers from planned work. Sometimes a bug escapes into production. Others, systems are on fire because of unexpected surge in traffic (at the risk of dating myself, this used to be known as the slashdot effect). Responding to these events comes with a sense of urgency and tends to raise the stress level of any engineering team. In the chaos, there is usually a lot of information floating around, many theories and much speculation.

The problem


I ran into an interesting networking problem last week while configuring a multi-host Vagrant environment. I couldn’t find a lot of information about it anywhere so I thought, why not share it? Maybe it will save time for the next poor soul who tries to get VirtualBox virtual machines talking over MacVTap interfaces. Mostly I’m just hoping that I’m not alone out there trying to make this work.

Image for post
Image for post
One of my all time favorites https://xkcd.com/979/

Getting started

First things first, let’s launch a couple of hosts. This is super easy to do using Vagrant. I created two VirtualBox instances using standard Ubuntu distributions via the following configuration. …


Image for post
Image for post

A few people have asked me about my recent job title change. After managing an infrastructure team for two years, I switched career tracks back to an individual contribute role. I wanted to share some thoughts about the transition in hope that it might help others in similar situations.

The journey

A few months ago, I was in one of those deep pits of self doubt. You know, the ones where you question everything you say and do. I was getting to the point where I was really starting to question whether or not I was still able to write code. In…

Alex Boten

Passionate about the environment and making the world a better place

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store