How we fed ourselves for a year & sold a startup...with only 300 lines of code

488 points by felixchan ↗ HN
Hello Hacker News,

I’ve been reading HN for a long time now and love the way the community shares thoughts with each other. I haven’t done anything extraordinary or extremely successful, but I want to chip in to the community with this experience that I find pretty interesting.

A year ago, I moved to San Francisco from rural Missouri hoping to join the start-up world. At the same time, I met a friend, Zac, who also just moved to the bay area around that time but had left his job to pursue something more interesting. We decided to become partners and start hacking stuff together.

Since we were new to the city and we didn’t know any one, we decided to build a mobile app that lets people use their phone to read the profiles of others nearby. It was supposed to help people “break the ice” and meet new people. This was our first startup. We coded the product in a week and pushed the product live.

Once live, we got like 5 users, since no one really knew about it. To promote this product, we decided to target events, since we thought that events is where people would like to meet each other. We locked ourselves in a room and asked this question over and over: “What is something valuable we can provide to event organizers so that they can promote our product?”

Zac finally came up with an idea. He proposed that we could build a kiosk where attendees can type in their name, and a name badge would instantly print. Then the attendees would be integrated into our mobile app as well. At first, it sounded insanely dumb (what would my mom think if I told her that I moved 2000 miles away from home to print paper name badges?), and I laughed really hard. But after thinking about it, it seemed “cool”, and we gave it a try.

In a day of work, we wrote the software in 300 lines of code and tested it. We ordered a label printer from Dymo and hooked them up to a Dell Mini 10v netbook. After that was done, we contacted an event organizer, convinced him that our system wasn’t going to fail, and asked if we could print name badges for him.

The event organizer let us try out our system, and that night turned out to be amazing. People thought it was the coolest thing ever to type their name in a laptop and instantly have a name badge print out. At the end of the night, we handed out lots of cards and got lots of people to try our mobile app. It was the first time in my life that there was “buzz” around something I created.

We continued to hit events and print name badges. We bought more printers and lots and lots of labels. We bought a huge travel suitcase to hold everything, and we carried it everywhere to print name badges for events.

The experience was amazing. Not only did we get a lot of people to try our mobile app, but all the attendees thought it was the “coolest” gadget ever. I guess we essentially “engineered” our way into these $600 technology events for free. Many event organizers gave us the front-seats sponsor booth, without charging us a dollar. Some gave us free advertising banners at their events. Most importantly, everyone walked around with our logo on their shirt. We shook all their hands as they walked into the door. Advertising can’t get any better than that. We quickly got our mobile app into the hands of our users, and talked to more than 500+ directly.

Unfortunately, after a month passed, we realized that our initial mobile app wasn’t working. People didn’t want the product. They didn’t want to read profiles about people around them. The mobile app wasn’t useful.

Here’s the weird thing about start-ups: things just happen. Although our mobile app failed miserably, our little name badge printing system became insanely popular. Event organizers were begging us to print badges for them every time they had an event. They were referring us to their friends, and we were hitting events literally every day with our name badge printer. To cater for each event, we forked our original software (which was completely hard coded and not we...

117 comments

[ 2.2 ms ] story [ 190 ms ] thread
Very interesting story! Thanks for sharing.
FYI, the signup form on view.io doesn't show the placeholder text in Firefox, I had to view source to see what it was meant to display. Fine on Chrome.
wow. very inspiring. This proves how life really make its turns huh? :) Great job guys, and the app looks cool.
The exaggerations in titles are really starting to bother me.

Yes, you started with 300 lines of code... But then you modified it several times for different conferences, and enhanced it a lot when you really become popular. Only after that did you sell it.

and evangelized the hell out of it, too, which isn't exactly easy work.

i mean, its still a good story. but the tl;dr title isn't accurate.

Titles aren't meant to be a tl;dr
they aren't always, no, but this one's wording definitely sounds like a summary, and is at least somewhat misleading.
(comment deleted)
(comment deleted)
The actual number lines actually hovered around that until we sold. It was fork soup because we hardcoded everything for each event (I love git so much for making that so easy). For every event, we always seen it as just one more event for promotion so we didn't want to make everything configurable. Simple and easy to test basically.

Towards the very end we rewrote everything, made it configurable, integrated all past features, and made a UI designer for designing labels (instead of hardcoding the layouts) and then we sold.

Never has the measure of 'lines of code' been less relevant to anything though.
yes. I didn't like measuring it. My partner thought it was significant though.
Yup, every fork = +300 LOC! :P
Sorry, this is very snarky, but seriously (over)paraphrasing:

``We didn't really have anything to sell until "we rewrote everything [and] made it configurable".

Would you say you could have sold without a rewrite? Did you try and sell before that and fail when the buyer started their due diligence?

We could of sold specific versions for different organizers (we did actually give out 2 versions for free to our first event organizers that are hardcoded as a thank you gesture to them and it is still in use). But we wanted something more flexible to sell to the people that contacted us in the past. We spent 2 weeks, cleaned it all up, and got it ready. At the last minute, we started to speak to someone we met at a conference we were at again that wanted to push it. We worked out a deal for his team take it over, maintain, and support it and the rest is history.
Despite the 300LOC stuff, it's still a really inspiring story. You started with a hack, learned a bunch, wrote some code in two weeks, and sold it for, what sounds like, just over the non-trivial threshold. Good job :-)
(comment deleted)
Because HN used to be above that linkbait BS.

The story is interesting and useful and stands up on its own without having to resort to "in only 300 lines!!!".

(comment deleted)
I would have upvoted it if it wasn't for the hyperbole. It was a good story, with a crappy title. So I didn't upvote.

I get tired of everything ;)

Why is it every community ever is awesome until that third person joins? Then suddenly it's all about how things "used to be".

Are linkbait BS titles the cancer that is killing /HN?

(comment deleted)
When you hear people complain about "<foo> used to be", just mentally replace it with "I think <foo> should be". Whether or not it was true in the past was irrelevant. The main focus should be the statement of how things should be. There's a widespread tendency to romanticize the past, and fighting against it is fighting against human nature.

Granted, HN used to be above romanticizing the past... :-)

No. It's people not being in /new enough and voting up good stories after actually reading them. That way, the "linkbaity" stuff is more likely to get voted up. But this is a problem most vote-based link sites have, alas.
>No. It's people not being in /new enough and voting up good stories after actually reading them.

What's the solution to that, I almost daren't mention it, could it be a dig like toolbar that wraps the story (I'm assuming you mean external articles). Perhaps better would be a personal list (like Reddit) of recently viewed posts.

Alternatively one could have a sort of moderation view for trusted users so that pages like /new would give the story link with a first paragraph and up/flag/down buttons for fast rating. That way standard users time on pages like /new or /noobstories wouldn't need to be spent on spam so much.

Not that spam appears to be a huge problem here but as things grow optimisations become more important IMO.

original title doesn't show the exclamations, you know: scope and citing :)
What HN used to be above is this stupid pedantry. 300 lines of code is a euphemism for a simple system. That's it. Who gives a shit if the actual system was 800 lines, or even several thousand lines?? The system they made was simple.

Notice how it's a self post? It's not some grand ploy to get more pageviews for a blog. What's bullshit is that half of the comments section is being taken up by this contentless debate. That's the actual poison on HN.

(comment deleted)
Did you not see enough money in the event market to continue trying to build products in that space? View.io seems to be a bit of a departure from that.
Plus I could easily imagine a View.io-like app directed to event planners and attendees that leverages the badge printing service: an event-specific "mobile app that 'tells you what you need to know, wherever you are' could be useful for people networking (like their original business plan), visitors new to the conference city, or promotions of related events/services.

When you have to turn away interested, paying customers, it's time to increase your rates and leverage that relationship to sell them more products and services.

There are quite a few of these already. The biggest difference(and most useful) is the level of integration between the event management and registration software and the app.
Wow, awesome story! Good luck with view!
Interesting story. So you basically printed people's names on a label and made a name tag out of it? You say a company bought your product, what exactly did they buy? I'm not taking anything away from you, I applaud you for what you did, I'm curious...
After signup, there is a syntax issue:

  To try our initial beta on Feb 31, invite 2 friends that live nearby:
Feb. 31 doesn't exist. :)

Also, the watermarks don't show up in Firefox; I almost assumed I needed to know the "secret codes" to get an invite.

Are you sure that's a syntax error? I'd probably catch that during typechecking...

:)

"Feb. 31 doesn't exist."

Maybe they are using MySQL? http://sql-info.de/mysql/gotchas.html#1_14

One of my previous jobs was coding software for banks that handles financial transactions. And I am not entirely sure any more if it was Feb 30th or 31st but one day the product manager came to my office and asked me to change the validation routine in the library that handles the date-related calculations and consider Feb 31st as a valid date.

Can't exactly remember what it was about but I think some banks or other banking applications are acting like there is a 31st or 30th February for some kind of calculation. (Rather off-topic but if I ever 'share' this with the whole world, it seemed like now is the time!)

My guess is to generate interest for a "month" compounding daily. Bank didn't want to get cheated by February.
Different markets have different day count conventions. For instance is a 3 month deposit rate the same as a 90 day CD? When it comes to 'wholesale size', it's not about gouging clients for a day of interest, it's making sure that everyone is talking about the same dates and penny-accurate amounts.

http://en.wikipedia.org/wiki/Day_count_convention

When I wrote billing systems for telecoms, Feb 31st was a valid date... after a fashion. Billing cycles were stored as a cycle period "monthly", "quarterly", etc, with a "bill day" offset which was a number 1-31. If your "bill day" was the 31st then in February you would be billed on the last day of the month along with the customers with bill days 28-30. It was rare to do actual time calculations treating the bill day as an actual date, but not considered particularly strange.

And there you have it, at least for one small corner of the software world.

Haha, thanks. Yep, we get lost sometimes. There isn't a Feb 31 :)
I just signed up for the beta and it told me that I can use it on February 31st if I sign up two friends. I think someone should take a look at how the dates are being calculated.
What a great story! "This is what it's like to build a product someone wants."
As one of the early event organizers to use imhello just want to say we love you guys, and still want to have you back -- until I read this I thought you'd fallen off the face of the Earth. You guys helped us with badges at out City Hall event (where Tim O'Reilly spoke) and also with an event at Twilio HQ. I'm really happy to hear you're back, and my one piece of advice is that once you have that initial traction and buzz don't let it die.

As an event organizer, I felt like you guys were doing for free what I normally had to pay someone to do - manning the front door. It was very valuable, having you there and putting your logo on our badges felt like 100% win-win. Good luck with view.io

Wow, awesome to see the demand still there. It would appear that event technology like this still has a nice future!
So was their success mostly based on the non-scalable aspect? (namely that organizers were happy to get an excited person to work the door for free)

Or is there a hidden scalable app in there for sending out people to do conference name tags in exchange for advertising in front of certain audiences?

"Make sure you click the link above instead of typing it through the browser, so we can know you were referred from Hacker News and can give priority access." (even if I think this point is bullshit): There is a clickable link to View : http://view.io
I reached the end of this story and thought, "These guys have not fully learned the lesson of product failure. Nor have they learned to recognize product success."

You made a product no one wanted, and in order to market it, you stumbled onto a product that lots of people wanted in a market where billions of dollars are spent each year (we spend about 10 grand a year on conferences, and we're a tiny company with a tiny marketing budget). You've now ditched the product people wanted, presumably selling it for a pittance, and went right back to a similar mobile app to the one you couldn't convince anyone to use, despite excellent marketing savvy.

It sounds like you guys are a great team, and I bet you'll make many great products in the years to come. I hope you'll also figure out that when the market speaks that loudly, it's a good idea to listen. I had the same problem for many years; it took me three years, from the time we first wrote the code, to realize that Virtualmin could be a great business.

I reached the end of this story and thought, "they're following their heart and building something they'll personally use every day." ("We’re really excited about this app because it’s very useful to our daily life.")

Some things are more important than commercial success, and taking the exit door when presented with a base hit or standup double, especially when it's a product your heart's not in, doesn't sound like that bad of a choice to me. I'm in a very similar situation atm.

I think a distinction between your argument and the OP's motivation is that it isn't money he wants - its to work on something he loves doing.

It may have started with a mobile app, and he found some tangential success with printing name badges at conferences. But nowhere in your response addresses that maybe the OP didn't want to print name badges for a living. He sold his company which he wasn't truly passionate about which enabled him to do something he was passionate about. Sounds like a success story to me.

Not everyone's motivations are the same, and when that's the case we end up with criticisms that aren't focused on the essence of what is being told.

That's a perfectly valid approach, and one I have no problem with, but I did get the impression they also want to build a successful business, rather than just keep food on the table (which is why they killed the prior product, which they also loved working on, apparently).

My point is merely that I don't think they really learned all the lessons they could have learned from these experiences. I'm almost certain they undervalued their label printing business, for instance. Certainly they should have started charging for the service earlier.

And, I also think that they're maybe underestimating the value of listening when the market speaks.

But, by all means, people should work on stuff they love. There's no way a small, bootstrapped, startup can possibly weather the hardships in the beginning, when money is tight, rewards are few, and everything takes longer than expected, without having a real passion for the work they're doing.

You're both right. But SwellJoe's argument was basically, "A hundred thousand dollars isn't cool. You know what's cool? Ten million dollars!" The OP was lucky enough to find a vein of gold underground, mined like 5% of it, then stopped so they could go open a restaurant. They could've mined out the rest of that vein and with the extra cash started ten restuarants and bought a yacht, etc.

That said it's always hard to criticize success. It's like these guys just did a gymnastics routine and got a 9.5 and then we harp that they should have gotten a 10, while we sit here gobbling popcorn from the couch. :)

I honestly don't think that was his argument. His argument was more like: "You started off with a cool idea that no one wanted, accidentally found something people were willing to beg for, then got rid of what people wanted to work more on the cool idea."

It would have been just as valid to stick with the idea people begged for/made money and add features that made you happy. Wouldn't it have been valuable to test/market View to thousands of customers with the need they were trying to solve?

I think his...oh, wait...I think my argument isn't really any of that (though they're interesting thought exercises).

I haven't suggested they should have stuck with label printing or that they should have sold it and started something new; my advice applies no matter what path they chose. I suggested that I don't think they learned the lessons that the market was willing to teach them.

In my wizened old age, I think back on similar situations in my own life, where I missed the signs and missed opportunities that would have had very low costs and very high pay outs. This is one of them for this team.

Since everyone wants me to have actually made recommendations for what they should have done (rather than what lessons they should have learned, which is all I covered to start with):

1. When you have a business that takes off on a run like this, and you know you're going to cash out and run; raise your prices. Raise them a lot. Double them. If volume doesn't drop, double them again. Rinse and repeat until you have found the point at which customers stop coming to you. Conferences are huge cash cows. They have money; if you solve one of their problems in a cool, social, way, they will pay for it. So, OP should have started charging earlier and more (a lot more).

2. Learn from failure. It sounds to me like they're back on the same sort of project as the one they couldn't convince people to like to start with. If they're passionate about social mobile apps, that's fine. But, you have to be willing to listen when the market says "We do not want this."

And, let's add a bonus third point:

3. Leverage past successes to enable future successes. As you note, it sounds like View could have been launched as a cool feature of the label business, getting it into the hands of all of those CEOs and investors that passed through their system. It started as a marketing ploy, and it would have been an effective one for the new product...I don't know that it makes the new product any more awesome or wanted by people, but it is still a valid avenue for marketing the product to thought leaders.

In the post it said they were only making $50-300 a conference. That sort of business is tough to scale. It's like those guys who take your photo at Disneyland. It doesn't sound like they were leaving that much money on the table.
"In the post it said they were only making $50-300 a conference."

That's nobody's fault but their own. That's one of my primary points about them not really learning a valuable lesson. If they were booked solid by prime conferences at those prices, and people were calling them from all over the country, I'd suggest they were undervaluing their service by at least an order of magnitude.

I believe they should have begun charging sooner and much more than they were, especially if they didn't particularly love the project. When I started hating my previous company and the work I was doing, I doubled my prices. It didn't hurt sales, and I put more money in the bank for my next venture.

I think my intent is being misunderstood quite a bit. I tried to clarify in another response, but it seems like people think this is an either/or thing; that they had to keep working on the label business to be living according to the Gospel of SwellJoe. And, that's not what I mean, at all. I mean that if you're going to build/run a business to bootstrap another business, you should charge enough to make it worth the effort you put into it. They built something that people really wanted, and then grudgingly started charging a tiny bit of money for it (when I'm doing stuff I don't love, I won't even leave the house for less than $500; seriously, when I was doing contract IT work, I billed $125/hour with a four hour minimum), and flipped it for probably much less than they could have.

I'm not suggesting they should have stuck with the label printing business forever, just that they did not capitalize on the label printing business on anywhere near the scale they could have, and probably in the same time period.

The type of business makes a big difference. They couldn't have charged much more. Beyond a fairly low price, it makes more sense to just bring your own printer.

It's much different from something like contract IT where nobody knows how to bring the network back up and they can't do any work while it's down.

The typical per person badge printer fee is upwards of $150 per day for the printer + laptop setup and $250-$500 per day for the labor .. you have to keep in mind travel, insurance, taxes, facilities fees etc ...
It seemed to me that they went back to the original application and pivoted. They didn't go back a build the same people to people proximity app. They built the people to environment proximity app which let them know about things going on in their environment (example from website : the Bart train is not running for the next two hours).

So, I don't think they gave up something successful to pursue something less successful. Rather, they decided to continue to work on something about which they are passionate.

I just want to tell that I've been using virtualmin every day for some years now and it helps keep me sane while managing my virtual hosts. It is a great tool and worth every penny. Now, every time I see something like cPanel, I scream in horror. Thanks for your hard work!
Thanks for the kind words. I'm glad Virtualmin is serving you well.
Question: how do we "click the above link?" It shows up as text for me, which I cut and pasted into the address bar (you won't know I came from HN) Am I missing something?
oh shoot--hmm , HN doesn't allow links from the page. So you're going to have to paste it in the bar or if the link works, click this: http://view.io
I thought most badges are simply printed from the event registration data and I would have certainly expected the events you listed to have had badges already upon arrival, so I'm curious as to why they didn't have the badges printed already. But it's certainly a great story of how something they developed in order to promote what they thought was their main product ended up becoming the main product.
A bunch of events were like that. We proved that our name badge system could verify tickets, print badges, and handle name errors and changes faster than someone using pre-made badges. It almost ran it self (one person could manage 3 kiosks at the bigger events). After the first run, it always proves its worth.
At TC Disrupt 2010, a very organized and well resourced event, I personally printed dozens of badges that didn't get printed from event pre-registration.
I was there doing the same. Amazed me. Sean is my name if we've met.
I love stories like these! Thanks for sharing!
This is the best longform copywriting I have ever seen! I'm happy to be advertised to in this way. I especially like the "priority access" part.

The View app does look amazing - seems to basically be local advertising/information signage on your phone, as Philip K Dick predicted/feared, but (hopefully) more useful than typical ads (can you find ways to keep it that way?)

Suggestions: the example messages are great, but show them a little longer, maybe proportional to their length (I couldn't quite read some of them); and maybe somehow make your tag more concrete and specific (maybe 'what you need to know about where you are' - danger signs, like your "tow zone" one sum it up). Maybe something about "signs"?

Inspiring resolve. great story
Is yours the product used at SHDHs? I (and others) were very impressed with it :)
wow. neat! could of been useful. The version we used was C#.. First was a WPF app and the second as Silverlight app. The rewrite was a web version with a WPF frontend client.
We would have loved for you to use our code too!
You probably ought to plan on Apple stealing your thunder with iOS 5.0, which purportedly includes http://siri.com/, a voice-activated app that appears to cover what you're doing exactly.
Great story. re: view.io, I closed my registration window, so I lost the link to send to my friends. Is there no way to get it back?
Hi there, send me an email and I can get you the invite code back: felix@view.io. Thanks!
Why did you sell? Besides the offer, were you sick of the business?