Deep insights from our research and experience

Image for Four Libs Good, Two Libs Better

Four Libs Good, Two Libs Better

[with apologies to Mr. Orwell] I’ve noticed a subtle shift in how we approach building up new sites over the last couple of years. Our approach to site construction used to favor collecting open source apps and gluing them together …
Image for Open Book Finances

Open Book Finances

Maverick by Ricardo Semler was an eye-opening read for me a while back. It is a detailed account of his (highly profitable) company which is a radical departure from the traditional workplace. Rework (published over 20 years later) reads like …
Image for On Fixtures and Factories

On Fixtures and Factories

We’ve made it a general rule to move away from relying on fixtures in our projects. The main reasons are: Fixtures are fragile. They often break when the schema changes or even worse they appear to work but introduce subtle …
Image for Ginger Tech Stack

Ginger Tech Stack

For our latest product, Ginger, we wanted to marry the real-time functionality we needed with the traditional Django stack we know and love. After some false starts and falling on our faces in the beginning, we ended with a stack …
Image for Quick Django Class Based View Decorator

Quick Django Class Based View Decorator

The recommended way to add decorators such as login_required to class based views in Django is a bit verbose. Here’s a little metaclass-producing function you may find handy: def DecoratedDispatchMethod(actual_decorator): """ If you want to decorate the Class-based View with, …
Image for Down with 9 to 5

Down with 9 to 5

Development is a creative endeavor. Often developers are creating something where there was once nothing. For most us, the thought of being productive for 8 consecutive hours 5 days a week is laughable. 2-3 hours on a single problem is …
Image for Introducing Ginger

Introducing Ginger

Our team of 10 is distributed across 8 countries and 3 continents. We have no central office. When we first started, a couple years might go by without ever meeting in person, now we meet in person for at least …
Image for Detecting File Moves & Renames with Rsync

Detecting File Moves & Renames with Rsync

Without patching, the rsync utility lacks support to detect when a file was renamed/moved across multiple directories inside the synced tree. There is a ––fuzzy option to save bandwidth by building upon similar files on the target side, but only …
Image for Django Caching in the Real World: Part 1

Django Caching in the Real World: Part 1

When you develop a sizable content heavy web site you quickly learn, hopefully not the hard way, that caching is a very important piece of your infrastructure. The database servers are the typical bottleneck in high volume website. Common wisdom …