I spend a fair bit of time these days thinking about overloaded servers and one recent problem I’ve wrestled with is how to shed load fairly when a server is overloaded. For example, if there are two separate tenants (users, accounts, clients, etc.) consuming vastly different amounts of resources, should we be treating them the same when shedding load? If one of those tenants is “misbehaving” and flooding the system with traffic, this can begin to affect everyone else sharing the system with this “noisy-neighbor”.

The different approaches to fairness I see folks taking are to either give each tenant…

It should be obvious to everyone at this point that the tech industry has a diversity problem. Lots of folks have written about this, but one of my favorite blog post on the matter is written by Dan Luu. In it, he links to a Twitter thread where Roger Dickey expresses his “unpopular opinion” that hiring women/minorities is hard because there is a pipeline problem. Basically, Roger thinks that there are not enough women or people of color graduating from STEM programs, so there aren’t enough of them starting companies to fund or entering the candidate pool to hire. …

I recently helped some colleagues debug an issue with the Envoy fault filter. They remarked that I have a powerful local testing setup, so I thought it would be worthwhile to share it with others who would like to do some local experimentation on Envoy. One can do most of the things in this article via Envoy integration tests, but I find this method faster for quick little tests that I want to run and the only way to run non-trivial amounts of traffic through an Envoy process locally.

The goal here is to spin up an Envoy process on…

If you deal with networked systems you probably care a lot about latency. It’s also likely that you’ll be faced with a decision of which load balancing algorithm to use when fronting a fleet of servers. It can be extremely helpful when making these decisions to build an intuition for what behaviors to expect in different load balancer configurations, so that you can minimize latency in your environment without any surprising behaviors.

Hopefully we can all agree that a load balancer’s job is to distribute requests across some fleet of servers (occasionally referred to as upstreams to Envoy folks). The…

I’ll start this off by saying I’m not a C developer. I mostly use C++. However, this did not stop me from zealously offering to help a friend debug his CS50 homework. My beard should be grey enough for that…

The problem can be distilled down to something like this:

int main() {
char *foo = “lol, sup”;
foo[0] = ‘x’;
return 0;
}

Seems straightforward. However, I was a bit vexed to find that it exploded:

[tallen@legion tmp]$ ./test
Segmentation fault (core dumped)

I’ve been coddled by std::string and forgotten how C-strings work. Why can’t we modify the string…

As engineers, we place a lot of emphasis on the efficiency of the things we build. That’s great, really, there’s nothing like reading through highly efficient code and knowing that our precious CPU cycles are not going to waste. However, I’ve observed that on the whole, we don’t approach our technical communications with the same regard. Support-related communication seems to suffer from this the most. I’m not claiming to be some expert on communication within large engineering organizations, but I do think I’ve given this topic more thought than the median engineer that’s shoveling coal in the fire.

The cross-team…

I recently ran across this bloom filter post by Michael Schmatz and it inspired me to write about a neat variation on the bloom filter that I’ve found useful in my work. Quick refresher: a bloom filter is a probabilistic data structure that tests if an element is potentially in a set. False positives are possible when testing if an element is in the set, but negatives mean an element is definitely not in the set. Got it? Cool.

A counting filter is essentially a bloom filter that’s had its single-bit booleans replaced with n-bit integers. This makes the filter…

Tony Allen

Programmer and aspiring lich in Seattle.

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