Things I Learned About Queues

I think the queue is a really powerful metaphor for organizing and orchestrating the internal architecture of an application. Once you have a queue, and tasks that are running in that queue, making that system run well requires some attention. This post is very much a sequel to the application framework post. Factors of your queue implementation and system may impact the applicability of any of these suggestions for your particular application.…

Keep reading

Non-Trad Software Engineer

It happened gradually, and it wasn't entirely an intentional thing, but at some point I became a software engineer. While a lot of people become software engineers, many of them have formal backgrounds in engineering, or have taken classes or done programs to support this retooling (e.g. bootcamps or programming institutes.) I skipped that part. I wrote scripts from time to time for myself, because there were things I wanted to automate.…

Keep reading

In Favor of an Application Infrastructure Framework

The byproduct of a lot of my work on Evergreen over the past few years has been that I've amassed a small collection of reusable components in the form of libraries that address important but not particularly core functionality. While I think the actual features and scale that we've achieved for "real" features, the infrastructure that we built has been particularly exciting. It turns out that I've written about a number of these components already here, even.…

Keep reading

Why Write

I've had a blog [1] for more than 15 years, and I've found this experience to be generally quite rewarding. I've learned a lot about writing, and enjoyed the opportunity to explore a number of different topics [2] in great detail. While I haven't blogged as much in recent years, I've been thinking in the past few weeks about getting back into writing more regularly, which has lead me to reflect on my writing in the past and my goals for this in the future.…

Keep reading

Evergreen Intro

Almost two years ago, I switched teams at work to join the team behind evergreen which is a homegrown continuous integration tool that we use organization wide to host and support development efforts and operational automation. It's been great. From the high level, Evergreen takes changes that developers make to source code repositories and runs a set of tasks for each of those changes on a wide variety of systems, and is a key part of the system that allows us to verify that the software we write works on computers other than the ones that we interact with directly.…

Keep reading

Combating Legacy Code

I wrote some notes about to write a post about a software project I worked on a year and a half ago, that I think is pretty cool, but I was on writing hiatus. Even better the specific code in question is now no longer in use. But I think it serves as a useful parable, but I will attempt to reflect. Go's logging [2] support in standard library works, and it successfully achieves its goals on its own terms.…

Keep reading

Consciousness Rising

The subtitle of this post should be "or, how the internet learned about intersectionality," but while I love a good pretentious academic title, I don't think that's particularly representative of my intent here. Sometime in the last 5 or 10 years, the popular discourse on justice on the internet learned about intersectionality. Which is great. Intersectionality, generally is the notion that a single identity isn't sufficient to explain an individuals social experience particularly vis a vis privilege.…

Keep reading