Skip to content
// NicerDates.swift
// Created by Ben Taylor on 20/07/2015.
import Foundation
extension Int {
RAC(self, property) = RACObserve(self.model, property);

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?

// CustomCollectionFlowLayout.h
// evilapples
#import <UIKit/UIKit.h>

Autolayout lessons:

* 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;


  • 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
* 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.
var widths = $("elements").map(function(i, el){
var max_width = Math.max.apply(Math, widths);
Something went wrong with that request. Please try again.