Thoughts, Advice & Other Writing

Oban Recipes Part 7: Splitting Queues

A technique for running a distinct subset of queues on each node in a cluster.

Oban Recipes Part 6: Expected Failures

Using protocols to control notifications for expected Oban job failures.

Oban Recipes Part 5: Batch Jobs

Monitor jobs as a group with the power of pattern matching and queue introspection.

Oban Recipes Part 4: Reporting Progress

Keep applications feeling responsive by reporting progress from long running background jobs.

Oban Recipes Part 3: Reliable Scheduling

Patterns for recursively scheduled jobs without any duplication and the mechanisms that make it possible.

Oban Recipes Part 2: Recursive Jobs

Learn about finite recursive background jobs through the lense of Oban.

Oban Recipes Part 1: Unique Jobs

Examine techniques for enforcing unique background jobs with Oban.

Strategies For Selective Cache Expiration

Selectively expiring cached records is essential to maintaining the health of large production caches.

Essentials Of Cache Expiration In Rails

Learn the essentials of cache expiration in Rails, and see how fundamental cache key composition is to a performant cache.

Effectively Scaling Sidekiq Workers

A case study on organizing Sidekiq queues, workers, and throttles for stability and higher concurrent throughput.

Knuckles, The Next Level of API Caching

An introduction into the motiviation and methods behind Knuckles, an extremely fast API caching library.

A Fistful Of Pubsub

The PubSub pattern is core to many distributed systems. Learn about the pattern, best practices, and a distinct use case.

Folding Window Functions Into Ecto

Understand the power of Postgres window functions to manipulate data efficiently with Ecto

Caching, What is it Good For?

Achieve application simplicity with zero caching and blazing speed. It isn't the framework or the content that is holding you back, it's the language.

Know Your Sidekiq Testing Rights

Sidekiq as a background worker is a critical part of any application infrastructure, mastering the various ways to test it is paramount.

Layering Api Defenses With Caching

Learn how to effectively layer caching around an API endpoint to yield massive performance gains.

Enhancing Logs With Cache Timing

Enhancing logs with custom timings illuminates where request time is really being spent.

Instrumenting Your Cache With Notifications

Instrumentation with ActiveSupport::Notifications is a powerful tool, useful for much more than raw performance benchmarking.

Migrating Redis Data

Sometimes migrating data from between Redis instances is necessary and not all of the tools are available.

Transactional Services Through Background Jobs

Mitigate the lack of transactional safety by leaning on discrete background jobs when interfacing with external systems.

Managing Redis Reconnections From Ruby

Learn lessons of stability and reliability through an exploration of how the Ruby Redis client manages reconnection.

Reconstructing Payloads With Lua

Reconstructing cached data into API responses quickly directly from Redis using Lua scripting.

Efficient Redis Caching Through Hashing

Boost cache performance and memory consumption in Redis through cache sharding, an intelligent way to utilize the Hash type.

Optimizing Redis Usage For Caching

Strategies and configuration tips for making the most value out of Redis as a cache.

High Performance Caching With Readthis

Strategies behind building the fastest ActiveSupport compliant cache with Redis and Ruby.

Universal Postgres Exports

Export queries as CSV straight from PostgreSQL.

Realtime For Everyone

Sometimes you do need to build a new wheel, just don't reinvent it.

Self Healing Deployment

Applications are services, they need monitoring too.

Environment Reloading

A zero-downtime technique for reloading the environment within long running processes.

Let Postgres Do The Work

Efficient social ranking within PostgreSQL, or immutable functions are your friend.

Presenting By Proxy

Leveraging ES6 Harmony's Proxy object for data presentation.

Integration Off Rails

Lightweight testing with Rack for libraries that integrate with Rails.

Subsecond Resolution In Rails

Fixing inconsistent timestamp serialization in Rails 4.

Journey Into Perforated Caching

Maximizing cache performance when serializing large collections for API endpoints.