Five Years
Five years ago, I published v0.5.0 of a little project I had great hopes for. Here we are five years later: I’ve gone from selling $50 licenses to negotiating five-figure enterprise deals with the...
View ArticleWhat can I do?
Like many people, I’ve been shaken by the events of the last week. I was raised to believe in freedom for all, the rule of law and the inalienable rights guaranteed to all Americans by the...
View ArticlePublic Relations Blast
Apologies, dear reader, it’s been a while since I blogged; I’ve been busy with many things for the last few months:We bought a house and moved, kid started kindergarten.I rewrote Sidekiq Pro’s...
View ArticleDebugging stuck Ruby processes
My Ruby process has stopped doing any work, what’s wrong?This is an uncommon but occasional problem for many people, especially with large applications using lots of native extensions.Step 1 - Thread...
View ArticleProfiling Crystal on OSX
How do I profile my program to determine where it is slow?This is one of the first questions any developer asks after building a non-toy program. Crystal has a reputation for being quite fast but every...
View ArticleTest Driving Sidekiq and Crystal
It’s alive! I’ve finished the initial port of the three core pieces of Sidekiq, the client API, the job execution engine and the Web UI, to Crystal. Let’s assume we have a Ruby app using Sidekiq.rb and...
View ArticleSidekiq for Crystal
Sidekiq is a popular job framework for Ruby. Now we’re bringing it to Crystal!Why Crystal?I wanted to use a language that was a good complement to Ruby. Its syntax is similar enough to Ruby that I can...
View ArticleServing your own Commercial Rubygems
It’s not well known but with Rubygems and Bundler, you can distribute access-controlled commercial Rubygems. My gems, Sidekiq Pro and Sidekiq Enterprise, are the most well known example but I’m not a...
View ArticleDistributed Locking with Redis and Ruby
It can happen: sometimes you need to severely curtail access to a resource. Maybe you use a 3rd party API where you can only make one call at a time. To handle this extreme case, you need an extreme...
View ArticleKill Your Dependencies
This post talks about Ruby but it’s true of every language community: Python, JavaScript, Java, etc. The scourge of dependencies spares no one.This is a dependency visualization of every Rails app I’ve...
View ArticleHappy 4th Birthday, Sidekiq
Four years ago today I shipped Sidekiq 0.5.0. 110 versions later, it’s still changing every day. Pretty amazing. So what’s new?Sidekiq EnterpriseSidekiq Enterprise gained two major new features this...
View ArticleContributed Systems: the 2015 wrapup
In July 2014 I started my company Contributed Systems and work on Sidekiq full-time. Let’s review how 2015 went. The end of January will be Sidekiq’s 4th birthday so here’s some birthday numbers: table...
View ArticleHow to Test Multithreaded Code
Multithreaded code is hard to write and even harder to test. Since much of my work is dedicated to making Ruby threading easier for my users and customers, I thought some might be interested in the...
View ArticleHow to Charge for your Open Source
Every month or so we hear of another high profile open source developer who flips the table and rages about open source because of burnout, most recently Ian Cordasco and Ryan Bigg. Does this sound...
View ArticleSidekiq 4.0!
I’m happy to announce that Sidekiq 4.0 is now available!I’m happy to announce that Sidekiq Pro 3.0 is now available!!I’m happy to announce that Sidekiq Enterprise 1.0 is now available!!!SidekiqSidekiq...
View ArticleAdvanced Data Structures in Ruby
Ruby provides several complex data structures out of the box; hash, array, set, and queue are all I need 99% of the time. However knowing about more advanced data structures means you know when to...
View ArticleShould you use Celluloid?
I’ve used Celluloid from day one. More importantly I’ve evanglized Celluloid and advised Rubyists to use it. So it came as a shock to several people that I recently overhauled Sidekiq to remove...
View ArticleDistributed Locking with Redis and Ruby
It can happen: sometimes you need to severely curtail access to a resource. Maybe you use a 3rd party API where you can only make one call at a time. To handle this extreme case, you need an extreme...
View ArticleKill Your Dependencies
This post talks about Ruby but it’s true of every language community: Python, JavaScript, Java, etc. The scourge of dependencies spares no one.This is a dependency visualization of every Rails app I’ve...
View ArticleHappy 4th Birthday, Sidekiq
Four years ago today I shipped Sidekiq 0.5.0. 110 versions later, it’s still changing every day. Pretty amazing. So what’s new?Sidekiq EnterpriseSidekiq Enterprise gained two major new features this...
View Article