Ninjas and Robots

Makes stuff. Previous: Founder of writing software Draft, CEO of Highrise. Also founder of two YC companies. Engineer for President Obama’s re-election campaign.

Page 12


I fall a lot

I started figure skating when I was 4 or 5. It was my Mom’s idea. She wanted something of her own to do with the kids.

The first thing you learn when you’re taking skating lessons is how to fall. My sister would even stick a pillow in the back of her pants to cushion herself.

Nothing cushioned the fall she took on her chin. Blood on the ice. Stitches.


Almost two years ago I went through Y Combinator a second time (S2011). We built some pretty cool technology to help companies brand their own versions of popular games. Games like Bejeweled. Imagine if a company like The Gap let you play their version of Bejeweled, but instead of jewels they were Gap logos, and pictures of models wearing the latest shirts, and you could even win a prize.

We had people playing an average of two hours a day. I was pretty damn excited and hopeful.

But we weren’t getting enough repeat business. The...

Continue reading →


Design Inspiration from Svbtle - The trouble with being efficient

Being good developers and designers, we typically define reusable features like a navigation bar or a footer and include them in multiple pages of our design. In PHP we might use “includes”. In a web application framework like Ruby on Rails, we have our “layouts” and our “partials”. But too often, we prematurely reach for those tools.

Having a layout saves me a lot of time. Especially if I have to refactor something. Imagine having a navigation bar on each page but then needing to add another link in it. If the navigation wasn’t in some kind of resuable layout, I’d be opening up dozens of files just to edit the same thing over and over. 

Saving time is great for me, but is that optimization actually solving a problem my customer has?

Maybe a user is in the middle of a task, struggling to write a very important document. Do they really need to be able to logoff from this page right...

Continue reading →


Cohort analysis - User retention in a Rails application.

I want my actions to be more data-driven. I want to make Dave McClure, Steve Blank, and Eric Ries proud. Easier said than done.

Analytics is still a pain in the ass.

How can I tell if people are using my product, Draft? (Draft is the tool I’m working on to help people become better writers.)

I could look at user retention. Once people start using Draft, do they come back to use it again?

There’s some great software to help study how users return to your product. They use a method called cohort analysis, which breaks up users into groups of people who “activate” or sign-up at the same time and then you track their progress as a group. Do users that signup in January after one month use your app more than those users who signed up in December after their first month? They do? Awesome, those features and things you did in February might be onto something.

To use these analytics...

Continue reading →


Draft Preview: Uber for writing

One constant I’ve recognized in my writing is how much feedback I like to have. I’ll write an email, and I’ll send a draft to a colleague to see if it’s right. I’ll write an application to something, and get feedback from friends to see if it makes sense. I’ll write a blog post, and send it to my wife.

But being a solo entrepreneur and working alone at home, I often find myself stuck, not being able to get a friend to look at my work.

My wife can only take so much.

At the same time, I’ve gotten hooked on how simple it is to order a cab on Uber. Click a button, and a bunch of steps happen I don’t need to worry about.

So now, Draft, the version control for writing tool I’m making, has a magic “Share with an Editor” button. One click, and you can send whatever you’re working on (Christmas letter, cold email to a potential customer, blog post, etc.) to a staff of folks who can review...

Continue reading →


Improving Open Rates - Look like the Taxman

It’s tough to get people to open your mail. Snail or digital.

A few years ago I blogged about a restaurant in my neighborhood that sends out these crazy handwritten pieces of mail. Not just the letter itself, but the entire envelope is covered in handwriting about my birthday. It’s impossible not to open up that type of letter :)





I recently noticed a new trend around this time of year. Making a piece of mail look like it’s been sent from the taxman.





Good old Form 854-A, in bold print. This must be something important I need for my taxes this year?

Opening it up.

Nope. It’s just a renewal form for a magazine subscription.

Sneaky bastards.

Continue reading →


Draft. Version control for writing

I wanted to show off a preview of what I’ve been working on. It’s a better version control system for writing. I call it Draft.

As a writer, I’ve been very annoyed at my options for version control. Software like iCloud and Google Docs end up saving a lot of arbitrary junk making it very hard to find an old draft that has that certain paragraph I ended up deleting and now want back.

And when I share a Google Doc with someone to help edit it, they overwrite my master copy making it insanely difficult to accept individual changes they’ve made.

A lot of folks try to end up learning Git, which is a popular version control system used by software developers. It really is a great tool if you’re in software development. But even as a developer it’s full of headaches. Writers don’t need all this added complexity and overhead to manage versions of their work.

Draft solves this. Draft is a...

Continue reading →


Gamification at Jimmy John’s. Sandwich chain innovates on a commonly used game mechanic.

I bought a sub the other day at the sandwich chain Jimmy John’s, and I noticed something very innovative about their loyalty program when they gave me a punch card.

Sure they gave me the typical buy 10 subs, get one free card. But there was just one twist…

9 of the slots on the card were already punched.


Usually a loyalty program at a retail store like this is a punch card with 10 “slots” on it. Every time I buy something the cashier punches another slot. And once I collect 10 punches I get a free something.

The premise of punch cards like this is to play on a commonly used “game mechanic”. Humans like to collect things. We like to finish things. If we know we have something that’s incomplete, it nags on us until it’s accomplished.

“Hmm, I shouldn’t go to McDonald’s today. I only have 3 more lunches to buy and I’ll get my free one,” someone hopes his customers are saying.

But...

Continue reading →


New Business Ideas: Alienate people

We once went into a meeting with someone who had gotten hold of some market research data from Ocean Spray. She said that they had tested guava as a flavor and decided that the name evoked negative images for people. We looked at each other and said, ‘OK, we’re making it.’ Now it’s one of our top sellers.

Tom Scott, founder of Nantucket Nectars (via Upstart Start-Ups!)

Tom Scott shares a great piece of wisdom on where to find new ideas. Start looking for stuff that the mainstream doesn’t like. You can find a gold mine.

Look at things like hot sauce. Oysters. Malört.

That’s what most people look like drinking Malört.

Me? I love the stuff. We drank a bunch of Malört at the Obama campaign. Most did it just to say they tried such a terrible thing once in their life. But a couple of us did it because we love bitter drinks. (There’s another great bitter liqueur, Cynar. I like...

Continue reading →


Group email address. An original idea?

Immature poets imitate; mature poets steal; bad poets deface what they take, and good poets make it into something better, or at least something different.

T.S. Elliot

A bunch of folks have been asking for my reaction to 37signal’s recent product launch of Basecamp Breeze, a tool for creating a group email address like groupname[at]breeze123.com. A few years ago I created a tool very similar in spirit called Tgethr. You can easily create a groupname[at]tgethr.com.

I’ve even gotten condolences about 37signals copying my idea. :)

So I thought this would be a good opportunity to write a few thoughts on competition and copying ideas, especially since this is a real common area where people get stuck.

First of all, I highly doubt I was even in 37signal’s peripheral vision as they were planning Breeze. Even if they did get inspired by Tgethr, I’d be flattered.

If my idea isn’t worth...

Continue reading →


Faster Rails partial rendering and caching. 78% improvement of test application

Using a new gem I created, I was able to optimize a Rails action by 78% (152 ms to 34 ms). The gem takes advantage of Rail’s read_multi method to retrieve cached partials in parallel instead of the traditional route of sequentially fetching things from Memcached.


Syntax

Using this gem, if you want to automatically render a collection and cache each partial with its default cache key:

<%= render partial: 'item', collection: @items, cache: true %>

If you want a custom cache key for this same behavior, use a Proc:

<%= render partial: 'item', collection: @items, cache: Proc.new{|item| [item, 'show']} %>

Background

One of the applications I worked on at the Obama campaign was Dashboard, a virtual field office we created. Dashboard doesn’t talk directly to a database. It only speaks to a rest API called Narwhal. You can imagine the performance obstacles we faced building an...

Continue reading →