So this happened. Thanks for your support, everybody!
As far as the iOS library integration process, your SDK is quite easy to use. I don’t have any problem and issue. It just works.
Probably you are looking for some other feedback, but I just don’t have any at this moment.
"— an early keen.io user
I’m on a bus driving from San Antonio to Dallas, where SoftLayer, a supporter of TechStars Cloud 2012, is going to get our entire class cataclysmically drunk. Most of the class is riding along with me. We’re celebrating / mourning the end of the most rewarding, challenging, and productive three months of our lives.
Yesterday was Demo Day for TechStars Cloud 2012. We pitched our young businesses to a group of hundreds of elite investors (plus tons of our supportive friends and families). It’s fair to say that none of us have experienced anything quite like what we went through yesterday.
I’m incredibly proud of the pitch my team delivered. We were definitely among the standouts of the day, although, truthfully, every team was really fucking great. I’m honored to have been part of the inaugural TechStars Cloud class. All the teams are incredibly smart and driven. It’s been a wonderful experience getting to know them, watching their businesses evolve, and drinking way too much with them.
But enough back patting. The point of this post is to share with you the kind of progress a company can make in a program like TechStars. Now, there’s all kinds of progress that can be measured in all kinds of ways: numbers of daily active users, total number of API calls made, amount of storage used, average size of customer, amount committed to your investment round, etc., etc. But I want to focus on what the focus point of Demo Day is: The Pitch.
The Pitch is a science and an art. It has to be incredibly tailored to each business, but there are several themes that are basically required. In no particular order:
At TechStars, we practiced our pitch literally every week, starting with week one of the program. By the end, we practiced it every day as a class, and Ryan was practicing it at least a dozen times on his own. I already told you how proud I am of the pitch we delivered yesterday. But our early attempts? Well… not so much. And in an effort to open the kimono / show you how the sausage is made, I’m going to share videos of one of the first, horribly embarrassing attempts, and the pitch we gave during Demo Day. The first video is of our pitch from Demo Day.
Demo Day Pitch
The second video is our pitch from week SIX of TechStars. It’s not pretty, but hopefully it demonstrates just how much polish TechStars can put on a group of bumbling nerds.
Week Six Pitch
Pretty stark, right? And this is week SIX. Can you imagine what our week one pitch looked like? I just went through it and I wanted to throw up by the end of (let me know if you want to see it). Kudos if you even made it through the entire thing - it’s hard for me to sit through it. And we’d love any feedback you have on the Demo Day pitch - good or bad. We welcome any opportunity to have a conversation about us and our business.
So, as I look back on this post, I realize I have no general thesis here. I guess what I want to part with is simply that Demo Day was an amazing experience, as was TechStars. If you get the chance, even if you also are accepted into other accelerators, I’d suggest heavily considering what TechStars has to offer.
As always, hit us up on twitter at @keen_io, or e-mail us at founders@keen.io. You can reach me directly on twitter at @dkador, or e-mail me at dan@keen.io. And, if you feel like this deserves it, give us some love on Hacker News here.
We’re hard at work on many things here at keen. Perhaps the most important, however, is our iOS client library. We’re really interested in building a powerful and flexible client library to consume the APIs we’re exposing to customers. Obviously, decreasing battery drain and bandwidth usage is essential. And maybe I’ll even write about how we’re solving these problems later. But for now, I’d like to focus on how insanely difficult it is to distribute a client library to other iOS developers.
I mean, it’s not so hard to just point people to our GitHub repo (still private for now but will totally be open sourced soon). We can throw up some instructions and people can get started by either downloading the source, cloning the repo, or submoduling it. It sort of sucks to pollute your project with all that code, though, especially since the code I’m writing is NOT using ARC yet, since I know that a lot of developers who will be integrating with us will be on legacy code that hasn’t been ported yet, and it’s pretty crazy to have to set compiler flags for every class that isn’t ARC-ified.
So I figured it’d be awesome to distribute a compiled static library (and corresponding public headers). Simple to drag into your project, no headache, easy to use, etc. I also figured that this wouldn’t be that hard. HA HA HA HA laughs Present-Me at Past-Me.
I ran into a couple problems. First, some of the code I’m using (JSONKit is awesome) creates categories on a couple of the standard foundation objects. I found that when I used my static library, those categories weren’t available at runtime, and my app was crashing and burning with the wonderful “Invalid Selector” error we all know and love. Luckily, this problem was pretty easy to solve with some google / stack overflow-fu. All credit goes to this Stack Overflow post. Briefly, a linker flag needs to be set to tell the linker to go through all the classes in the static library to look for Objective-C classes and categories. Here’s a small screenshot.
Second, and most painful, I found out that the static library I used with my sample app worked in the simulator, but not on the device itself. It makes 100% sense in hindsight. When you compile for the simulator, you’re really compiling for an i386 architecture. And iPhones and iPads use an ARM processor, so a single universal binary is unlikely. Except that normally we developers don’t have to think about this, at all. It’s not like we’re submitting two versions of the app to the appstore, one for devices and one for simulators. It’s actually because xcode automates sending the binary off now, and the binary sent to Apple is almost certainly device-only, but still. Arg.
Okay, so I knew other people had to have solved this problem. More googling and more stack overflowing later, and I came across this excellent post. The gist is that us developers have to create two different targets, one for the simulator and one for the device. Then we create a third target that runs a custom script that invokes a command line utility called “lipo” (and wow, when you google “man lipo” looking for the manpages for lipo, you get some unexpected results). lipo builds universal binaries. Sweet.
The writeup above is great and completely solved my issue. You should read through it. The only thing I’ll say is that, of course, Apple’s changed some naming conventions since April 2011, and I had to work through that. Here’s what the contents of my script look like.
So, great, problem solved. In the end, not a huge deal to overcome. But it’s completely non-obvious that this is a problem in the first place, and then there’s nothing in the official Apple docs (that I could find) to show how to solve the problem once you know there is one. Normally, I love Apple’s documentation and the really powerful tools they provide, but not this time. Luckily, the iOS developer community is amazing, and we can rely on their expertise when Apple fails to deliver an awesome developer experience.
Maybe the most important takeaway for me from this little episode is how passionate we all are at keen about making sure that our customers never have to deal with this shit. We’re developers ourselves. We’re picky and observant (and some would say anal). Little details are important. We’re building something we wished we had before, and we’re working hard to make sure we’re providing a development experience that doesn’t suck.
Want to know more about what we’re working on at keen? Sign up for our preview on our website and hit us up on twitter: @keen_io or @dkador.
A common struggle faced by founding teams is understanding the distinction between creating a technology and creating a business. History’s entrepreneurial graveyard is rife with brilliant, unappreciated inventions — technologies created by talented engineers who, sadly, didn’t know how (or couldn’t be bothered) to convert invention into enterprise.
Even after having read (and believed) all the right books over the last couple of years, our team here at keen.io began the TechStars journey with an alarming blind spot in this area. In one of our very first mentor meetings here at TechStars, I betrayed my own underdeveloped business savvy when I declared that, in five years’ time, “The entire internet should be using us!!” While I still believe this is largely true from a technical perspective, it’s pointless and borderline masturbatory from a business perspective.
Thankfully, we’re getting help with that.
On day 1 at TechStars, David Cohen made it pretty clear that, however many customers you’re talking to right now, you should probably be talking to more. During the first month of this program, ten customer calls per week is the minimum (not counting friendlies like your old boss, your buddy at company X, etc.). Four weeks later, I can tell you that this has been much more difficult and much more important than we anticipated.
If focusing on customer development means, like it did for us, not writing any code for a month straight, then so be it! It’s the only way you can be sure you’re creating something people actually want, not just something they should want.
-Kyle
Hi!
I’m Dan.

I have two co-founders. Here’s Kyle:

Here’s Ryan:

We’ve known each other since high school (we’re still good friends with the dude on the left. hi Nate!):

And now we’re keen.io.

We’re a new startup (and I want to heavily emphasize NEW). We’ve been kicking around ideas for a while but finally came across one that appeals to our passions AND seems monetizable. This was about midway through 2011. One of us will probably write a whole post about the inception of the idea, but that’s not what I want to focus on now.
I’d like to focus on the transition from kicking around Wouldn’t It Be Cools™ into getting our ass in gear and actually starting a company.
Okay, so let’s jump back to September or October, 2011. The idea’s been formed, and we think it’s worth pursuing. We all make commitments to dedicate a reasonable chunk of time to the company outside of our full-time jobs (hooray moonlighting!). We’ve got a little code and some big dreams. We’re also three product and design focused engineers, so that’s where we spend our attention…
… until we realize that we’re sort of coasting and if we want the company to actually succeed, we need to wake ourselves up, quit our real jobs, and focus on the company. To be honest, two of us have golden handcuffs and jobs we actually enjoy. We’re young, have no kids, nothing really holding us back, but still - the I Make Really Good Money Do I Want To Give It Up? precipice is a scary ass one to look down.
But wait! There’s an easy solution! Let’s apply to a startup accelerator. We’ll get a little bit of money and a LOT of validation our idea is worth pursuing from people who’ve done this before. Pretty obvious in hindsight, right?
We’ve all been living in San Francisco for five and a half years. We decide to apply to Y Combinator (pretty original, right?). We start that process. For those of you who don’t know, it’s reasonably involved. The first step is to fill out an online application that is honestly great. It asks the normal questions you’d expect, but also some rather pointed ones about the founder commitments, both to the company and each other. My feeling is that going through the application together with my co-founders not only honed our product idea but also deepened our desire to build this company.
Oh, if you want an example of the yc app, check this out: https://github.com/substack/stackvm/wiki/YC-Application (maybe we’ll post our application at some point)
So we submit that. And just wait for a bit and hang out in the calm before the storm.
At one point two of us go to pariSoma, a hacker space beer social meet-up (if it somehow involved facial hair it would have been a Platonic Ideal of San Francisco tech culture). After drinking a little, my co-founder and I are talking and decide we should apply to more accelerators. The easiest one to pick is TechStars. They’re nationally known, fund awesome companies, and generally seem like pretty cool people.
Their application process is very similar to Y Combinator’s (hereafter referred to as yc), so we take a lot of what we’ve learned and written from the yc app and dump it into the TS app, right there at the meet-up, where we’re all tweeting our votes about how good or bad the beer we’re drinking is (I know, get a bunch of nerds in a room and we’ll A. tweet about it and B. start ranking things). Honestly, I think we did a relatively sloppy job with that application. But, whatever, we send it in.
Both applications are in. We wait. And sweat a lot. Then it’s Halloween and we hear that yc wants to interview us (it makes celebrating a lot easier). Hooray! And TS invites us to TechStars For A Day (TS4AD) in San Antonio on November 5th. Damn, apparently we kick ass.
Ryan and Kyle hop on a plane to go talk to Jason Seats (managing director of TechStars Cloud, co-founder of Slicehost, acquired by Rackspace) and the rest of the TechStars community. It’s sufficient to say that it goes terribly. Kyle and Ryan (and me too, but I wasn’t there) suck at explaining what we want to build, and nobody knows how to pronounce our stupid name (it wasn’t keen before). They call me to commiserate, then go get drunk on the San Antonio River Walk.
We think we blew our chance to get into TechStars. Well, there’s still yc, right? We console ourselves with that thought. A week or so goes by and we start thinking concretely about the yc interview.
But wait! Kyle gets an email from Jason saying that we’re somehow, magically, incomprehensibly in the top 25 (they say they’ll whittle that down to 10). That makes no sense, but we’re all psyched as the yc interview approaches…
… well, honestly, psyched and completely freaked out at the same time. yc doesn’t fuck around when it comes to the interview process. You go in for your 10 minute (yes, only 10 minutes) interview, then wait until the evening, when you’ll either get a call telling you they want you, or an email telling you you’re out and why. If you get the call, you have to accept on the phone (aka the most explodiest of exploding offers). If you get the email, you go weep into your beer.
We (greedily) don’t want to have to make a decision about yc without knowing if we’re in the top 10 for TechStars. Luckily, Jason from TechStars is super cool about it and tells us we’ll know if we’re guaranteed a spot in TechStars before our interview with yc.
We huddle up in the few days before the yc interview to work on our messaging and to build a completely fake demo that hopefully shows what we’re thinking of. The day before the yc interview, Jason calls Kyle to let him know that we’re in and to expect a call from Brad Feld (yes, that Brad Feld). Our nerdgasm can probably be seen from space.
We’re nervous but psyched on our drive down to Palo Alto, where yc is located. My stomach is in knots as we walk into the yc office. We get called in to interview with Harj Taggar, Gary Tan, and Paul Buchheit. It’s a blur, but at the end we’re feeling good about our chances.
We get home and start the waiting process. It’s, to put it mildly, awful. We crack open a bottle of scotch to take the edge off. The call is supposed to come at some point between 7 and 8 pm. 7 rolls around and we hear nothing. Kyle’s call with Brad Feld starts and I begin to compulsively and repeatedly check email on Kyle’s laptop. 7:17 pm hits and an email from Harj pops up in our inbox. Shit. We didn’t get in. We write the news down on a piece of paper and wave it in front of Kyle’s face to make sure he doesn’t say something to fuck up the TechStars deal.
When he comes out of his room, we look at each other. We’re all exhausted, exhilarated, disappointed, scared, and eager. We’re all determined to kick ass at TechStars.
Stay tuned for the next post, where I’ll talk about what it was like to get incorporated, quit our jobs, move to Texas, and actually start working.
If you read this far, thanks! Please leave a comment here, get in touch with us at founders@keen.io, or email me personally at dan@keen.io. Or hit us up on twitter at @keen_io or @dkador. I’d love to hear what parts of this you thought you were interesting, what parts you thought were stupid, and if you’d like me to go into more detail about anything.
Up-vote this on Hacker News if you liked it (or down-vote it if you hated it).