911 R - Just A Pipe Dream

Published Version

You’ve been planning, saving, and dreaming about taking the next step. Making all the right decisions to put yourself into position to become an owner of a special GT Porsche. Eventually, rumors begin to stir; websites with headlines diving into the details of the mid engine Corvette, and release date of the next generation Toyota Supra, begin to describe the triumphant return of a manual transmission to a GT department 911. You get excited, but remind yourself, half of these articles only exist for those few clicks of users without AdBlock installed.

Just months later, the Geneva Auto Show starts. The show debuts an incredible range of cars from every automaker. You rush to see Porsche’s announcement. The pixels slowly load, and you see it, the 911 R. 500HP, 339 lb-ft torque, lighter than the GT3RS, manual transmission, and most importantly a car designed, and developed by some of the very best. You can’t contain your excitement this time. It’s really happening.

But the rest of that story isn’t worth going into. Things spiral down hill and you learn you won’t be even given a chance at an allocation. You’re not ridiculously wealthy; The 911 R’s are almost all to be given to 918 owners. The road ends here.

This fictional story, albeit probably a true story for a lot people, is quite the dilemma. How do you balance keeping a car ‘special’ without alienating customers that are new to your company or even existing loyalists?

From Porsche’s business point of view the grass couldn’t be greener. With such a limited number being produced (even less than than the recent GT4), it will be quite a rare and special site on the road. This also means that this car’s value will almost certainly appreciate go well above the MSRP. There’s also no need to have any concern about sales. Every car is, or will be sold, before it even lands at the dealer’s doorstep. Lastly, this has got to be the best way to get consumer and media attention. I bet you can’t name a single car enthusiast who hasn’t heard of the GT3RS, GT4, and now the 911 R.

Quite a fail proof business plan for Porsche. But what about the the narrative we so often hear about being ‘for the driver’. What about the customer that has never had a Porsche and this is the one. Or the customer that has been enjoying a 944 for the past 10 years and wants to add the 911 R to the garage? Maybe they haven’t invested as much money in the company but I bet you they’ve put the same amount of heart into their car, and driving experiences, as any other owner.

They…we, deserve a fair shot.

How to not burn out.

I’ve been really busy as of late and thought how I’d share my experience on how to keep your head straight when enduring high hours of work and stress. Spoiler: It ain’t rocket science.

###Sleep### 8+ hours. The moment you cut on sleep is the moment things will start to go downhill.

###Fun### Spend 2* hours a day with whatever it is that you enjoy outside of work. netflix. party. hangout. significant other. games. whatever.

*number of hours needed for fun is different from person to person. 2 works well for me.

###Balance### “Duh”. Obviously balance is tougher when you are working a ridiculous amount of hours but it’s still feasible. Figure out everything you spend your time on, and prioritize things so you know what to scale back when you need to. When I first started to realize my balance was off I had to cut off my open source time; be prepared to miss out on certain things. Budget your time.

Kind of simple but I truly believe there isn’t anything more to it than that.

$$$

In my recent Haskell learning I’ve noticed it would be very easy to approach an SML tier of parentheses hell when writing a decent size app.

Then it happened. Function application.

As we can see from code or previous posts, functions in Haskell are left-associative, which means when you pass a result from a function into the parameter of another function you are going to be ((()()()()()()())))))))(((()))). Props to Atom for auto parenthesizing.

$ is a function application. It makes everything after it right associative.

Turn this (hw4.hs - get right most digit of any given number):

right_digit :: Int -> Int
right_digit x
    | num_digits x == 1 = x
    | otherwise = right_digit (x - (10 ^ (num_digits x - 1)))

Into:

right_digit :: Int -> Int
right_digit x
    | num_digits x == 1 = x
    | otherwise = right_digit $ x - 10 ^ (num_digits x - 1)

Neat.

Nunjucks config for iso react in express.

I found this but my nunjucks were rendering my react components as strings in the template. Just had to flip the autoescape option.

Here is what you end up with:

var env = nunjucks.configure(app.get('views'), {
    autoescape: false,
    express: app
});

app.set('view engine', 'nunjucks');

Knex connection bug with Heroku Postgres.

I was getting a weird error when attempting to build a schema in a Heroku Postgres instance.

Take Knex’s docs and Herokus auto generated connection string and you’ll get something like the following.

var knex = require('knex')({
    client: 'pg',
    connection: 'postgres://myUser:myPassword@myHost:5432/myDb'
});

Then you get a weird error; related to SSL. The suggested fix from some reading is adding ?ssl=true to the end of the url.

var knex = require('knex')({
    client: 'pg',
    connection: 'postgres://myUser:myPassword@myHost:5432/myDb?ssl=true'
});

Still doesn’t work! However….throw it in a connection object….

var knex = require('knex')({
    client: 'pg',
    connection: {
        host: 'myHost',
        user: 'myUser',
        password: 'myPassword',
        database: 'myDb',
        ssl: true
    }
});

And bam. It all works.