Mutate your Rack middleware's env!
Rack middleware is a powerful pattern to follow, however, there are some 'gotchas'
that you need to keep in mind when developing new middleware. This post explains
how you should be using Rack's env
.
Are Your Cache-Control Directives Doing What They Are Supposed to Do?
Cache-Control
directives are pretty straightforward to understand. They're
easy to use as well if you assume that all the caches between your end user
and application correctly implement the spec. Unfortunately, as with any spec,
you can't make that assumption.
The Toiling Programmer: Succeeding as a Developer
Ever get a feeling of dread while working on a long problem? That feeling is cancerous towards your work, your relationships at work and your well being. I've personally experienced it many times during my short career -- it's not a fun experience and that's why I would like to write about it. Work doesn't have be like that. You can stop the cycle and feel way better about yourself!
Background Processing: Use Einhorn to Spawn and Manage Worker Processes
When building a custom background processing system, at one point, you need to worry about how you spin up and manage multiple worker processes. This is where most people reinvent the the wheel, and write custom code. Don't reinvent the wheel, and use Einhorn instead.
3 Ways to Create Classes in Ruby
Out of the box, there are 3 ways to create classes in Ruby. Find out how to use all 3 options, and learn when to use one option over another.
Select and Map Are Good
This article argues that when able to one should break down iteration operations over an array into map and select as opposed to operating on the enumerable through an each.
Simple Ways to Protect an API: HTTP Basic Authentication and HTTP Token Authentication
Having a limited number of consumers for an API lets you keep the authentication really simple for that API. Let's explore HTTP Basic Authentication and HTTP Token Authentication as the simple solutions in this scenario.
How You Nest Modules Matters in Ruby
Ruby provides two different syntaxes to nest modules (and classes). Most Rubyists think that the syntaxes are interchangeable. But, the the code may behave differently depending on the choice of syntax.
Benchmarking JSON Generation in Ruby
Find out how RABL, ActiveModel Serializers, and plain Ruby presenters perform relative to each other when they are used to generate JSON.
Analyzing S3 and CloudFront Access Logs with AWS RedShift
The S3 and CloudFront logs for us are easily terabytes of data per year, and traditional log parsers tend to not handle that size of data. Find out how we use AWS RedShift for log analysis.