Wednesday, April 29, 2015

Three Rules for Educating the Sith

Some people are like Jedi - they get their power from being patient and methodical. In school they don't demand to know what trig is used for - they learn trig and ace the test and move on.

Other people are like the Sith - they get their power from passion. For these people jumping through hoops without a direct goal is maddening. 

Traditional education is fine for the Jedi, but toxic to the Sith. 

If you are Sith, a great education isn't - can't be - about diligent study. It has to be about a series of projects that excite you, and as a consequence you - and only you - are qualified to compose that curriculum. 

There are 3 important rules to keep in mind when organizing your curriculum (your specific series of projects):

1. Your passion will shift targets (though for most Sith, the periodicity is pretty constant). Only choose projects that you can complete before your passion shifts. For some this window of passion is only a few hours, for some a few months. Be mindful of your feelings.

2. Your passions will often have nothing to do with one another. Be strategic. Keep a long list of skills necessary to be qualified for jobs you're interested in doing at some point in the future, and from among the projects you're excited about, choose ones that overlap with that list. If nothing seems to overlap well, resist the urge to handicap yourself by using a technique or tool that doesn't fit the challenge - this will only enrage you. Pick a short project, so you can get through it before you come up with a project that does overlap well.

3. Sometimes you will need to do something you're not passionate about. Learn the mind tricks. Practice looking at situations from lots of different angles. Often there is a way to contextualize the boring work you have to do as a part of a larger effort you are passionate about.

It may seem that the Sith are at a disadvantage compared to the Jedi - and in many ways they are - but if you are Sith, you can compensate for that handicap, and if you do it well, over time the skills you learn doing projects you're passionate about can grow to match the skill set of your Jedi peers, and you - unlike them - will have an enormous portfolio of interesting projects to show off.

Sunday, April 26, 2015

Digital Ocean Cloud9 Workspace Hack

TL;DR ln -s /opt /root

Working with a Digital Ocean droplet in Cloud9 is awesome and easy - except that Cloud9 creates it's workspace in the wrong directory (/root instead of /opt - at least for a MEAN droplet).

Here's an easy trick to get your application files into the workspace (so you can open them in the Cloud9 editor instead of having to navigate to them through the terminal and open them with VIM - ain't nobody got time for that).

Run the following command in a Cloud9 terminal.

ln -s /opt /root

This will create a soft link from the root directory (where your workspace is) and the opt directory (where the MEAN app is).

Now you can open all your MEAN files using the awesome Cloud9 editor!

Wednesday, April 22, 2015

Invisible Things Making Noise

The winners are scrappy and don't wait for someone else to hand them their dinner; they run out into the dark and chase down those invisible things making noise.

We are the winners. We're not waiting for a clear picture. We're not waiting for permission or credentials. We're doing it - now. We'll figure it out as we go. 

The things we build won't be perfect. They won't be clean. They won't be optimized, but they will BE.

Waiting for perfect will keep us waiting forever. Better to be scrappy.

Monday, April 20, 2015

Six Fingered Babies

The fact that you're actually making something, birthing a new thing into the world, is incredibly important and beautiful. It doesn't matter if the edges aren't straight or the angles aren't 90 degrees. It doesn't matter if your baby has six fingers. It's still a miracle.

Turing Interviews

Programming interviews are horrible. This may be a better way.

If A = B and B = C then A = C.

If Jesse (employed by you as a software engineer) is good at her job, and she writes the following bit of code:

x = 10
//this is a nice-looking assignment

And Sydney (applying to work for you as a software engineer) writes the following piece of code:

x = 10 
//what an awesome assignment

And Charlie - looking at each piece of code, but not knowing which came from which engineer, cannot reliably pick the one that came from the engineer you actually employ, then you know that at least for that narrow task - Sydney's abilities equal Jesse's. 

Put a slightly different way: If you already know Jesse is a good coder, and you cannot distinguish Jesse's code from Sydney's, then you know that Sydney is also a good coder.

If you do this with a sufficiently broad range of tasks (this should be doubly-easy if you've been diligent about testing) then not only do you have a much more objective measure of your applicants suitability for the team - you cannot help but select for people with specific expertise in your stack and an intuition for your coding style.

One last thing: if you're hiring a person to do something no one on your team has actually done - then just find an appropriate project on Github and use that codebase as your standard.

Thursday, April 16, 2015

The Great Unbundling

The internet allowed information - which was for a time delivered in a package because of the economics of the delivery method - to become unbundled. The medium evolved. What was discrete and costly became ambient and cheap.

Autonomous vehicles - as a means of delivering goods, not people - will facilitate another unbundling. Last time the package was a newspaper full of information, this time it will be a big box store full of things.

Walmart will be forever changed.

Sunday, April 12, 2015


Bitter Validation.

Several years ago when I started programming, I wondered how long it would take me to get good enough to contribute something useful and interesting.

In December, in my free time over the course of about a week, I made Coloroordinates and blogged about it here.

Yesterday Wired ran a story about a trio of researchers at Virginia Commonwealth University rebuilding the same tool.

I outran them by several months, but wasn't savvy enough to get recognition for it (the git log won't let me down though).

Validation, bitter validation.