Blog

Posts from June 2012

Referrer Blocking is Hard

Posted by Peter Baumgartner on June 27, 2012. Filed under code

One of my recent tasks in Ginger was to ensure that we weren’t leaking referrer URLs when you click on an external link in Ginger. It seemed like an easy task and one that’s probably been solved before. What I found was a trainwreck of solutions and a classic example of the trade-off between security and usability.

The Problem

We use human-readable slugs in our URLs in Ginger. It makes it easy to identify where a link goes just by looking at it. It’s a win for usability. We also allow users to create links to external sites in the messages they create. Another usability win.

The problem is when a user clicks on one of these links, the URL from Ginger could be sent as the HTTP Referrer to the external site. This is bad for security and privacy. Those nice URLs could leak sensitive information ...

View comments View full post

Optimize for Motivation

Posted by Graham King on June 15, 2012. Filed under business, remote working

When your client is hundreds of miles away, but your bed only three feet, it helps to understand motivation.

The first thing to understand about motivation is that it’s not something you do to someone. That’s called coercion. With enough power you can make anyone do almost anything, but you can’t make them want to; and typically creative work done by people who want to do it is better. The tl;dr of motivation is this:

If you want to build a ship, don’t start by collecting wood, sawing planks and assigning tasks, but awaken in people’s hearts a yearning for the beautiful deep sea. – Antoine de St Exupéry, Citadelle

Extrinsic motivation (especially contingent rewards such as bonuses) has been shown to only improve performance on menial repetitive tasks, and to decrease performance on even slightly creative tasks. There’s a good summary in ...

View comments View full post

Backbone.js for Django Developers

Posted by Peter Baumgartner on June 5, 2012. Filed under django, javascript

Our new product Ginger relies heavily on Backbone.js for most of the client-side functionality (you can read about our full web-stack here). Our JavaScript guru Marco built the initial prototype and then was pulled away by client work. I reluctantly filled in, but my background is primarily in Django. My JavaScript experience was minimal (primarily stitching together jQuery plugins to get the desired effect).

After a month or two of being submersed in Backbone, I’ve seen the light and am now relatively competent. When I got started I was completely lost. Here are some things that probably would have helped me back then. Whenever possible, I’ve linked to the source of the Backbone Todo example for code samples.

Terminology

In many ways, Backbone and Django are similar. They’re both MVC-like, but some of the terminology they use is different. Here’s a quick map:

  • Backbone ...

View comments View full post