Instantly share code, notes, and snippets.

View NicerDates.swift
// NicerDates.swift
// Created by Ben Taylor on 20/07/2015.
import Foundation
extension Int {
View gist:f00e24501f1820d24dfd
RAC(self, property) = RACObserve(self.model, property);
View Form

Subject: Unpaid Internships & Fair Work

Hi there,

I'm Ben Taylor, I don't represent anyone or anything, I'm simply a concerned Australian. Our country has long been known as a paradise for the working class. We give fair holidays and fair pay. We're a country that doesn't tip because we know the waitstaff are earning enough to support themselves.

I'm emailing you because your company is offering an unpaid internship. Under Australian law it's illegal to have an employee that works for free. In many cases unpaid internships are illegal.

It's absolutely in your right to offer an internship, you can pay them minimum wage if you like, but not paying is exploitative and discriminatory. Should a young person who is independent be forced to take a second job or live under severe financial stress just to get a chance in an industry? What about those who can't afford to do even that?

View CustomCollectionFlowLayout.h
// CustomCollectionFlowLayout.h
// evilapples
#import <UIKit/UIKit.h>
View gist:6408293

Autolayout lessons:

View colour.js
* A class to parse colour values. Updated by Ben to support colour conversions.
* @author Stoyan Stefanov <>
* @author Ben Taylor <>
* @link
* @license Use it if you like it
function Colour(colour_string)
this.ok = false;
View gist:3684133


  • Very low effort to get running
  • Easily extensible to add very powerful features eg. I added memcache and caching to one of our apps and had it live within 30mins
  • Less downtime stress (if shit fails, you know heroku is dealing with it and you don't have to do much other than respond to customers)
  • Very little platform lockin (unlike Google App Engine)
  • Standing on shoulders of giants
  • Strong app segmentation = stability
  • Easy to price for clients
View gist:3486381
View gist:3212275
* In JavaScript "this" is very finicky. Mostly it tends to get lost whenever
* you use a callback. When you assign a function you're literally creating
* a function object and then putting it into an object. Whenever the function
* is called it works out what it's this is based on how it was called.
* There are several ways to make sure your this stays around.
View gist:3000612
var widths = $("elements").map(function(i, el){
var max_width = Math.max.apply(Math, widths);