Separating responsibilities Following on from Part 3, it's time for some refactoring. Thus far, all of the code has been in the TcpClient, but it mak...
At this point, I'll take a break from Faktory-focused functionality to address the shortcomings I raised at the end of the last part. Specifically, I...
This is a re-post of an article I wrote for my company's blog. Here's a story of how we improved our CI run times in one of our core Ruby services by...
I want to share a little algorithm I wrote to solve a puzzle. It's fairly basic computer science, but I feel a bit proud of it because I worked throu...
Now I'll turn what I did in Part 1 into code. First, I'll set up a new Composer project. My composer.json looks like this (truncated): { "require...
My recent queue foray put me on the scent of Faktory, a language-agnostic queue server made by Sidekiq's author. I noticed there wasn't a good PHP cl...
No big revelation here, just writing this as a reminder to myself next time I try curl localhost from WSL and it doesn't work: Don't use localhost o...
This post is part 4 of a series where I build a task queue system. Other parts: Part 1 Part 2 Part 3 Before we continue, at this point, you'd have...
This post is part 3 of a series where I build a task queue system. Other parts: Part 1 Part 2 Part 4 Error handling Right now, when an error happe...
I thought I understood Ruby's Module class, but nope. While reading Jeremy Evans' Polished Ruby Programming, I looked deeper and found some confusing...
This post is part 2 of a series where I build a task queue system. Other parts: Part 1 Part 3 Part 4 Next, I'll beef up my queue library with some...
This post is part 1 of a series where I build a task queue system. Other parts: Part 2 Part 3 Part 4 Motivation Some time ago, I came across a pos...