Hacker News new | comments | ask | show | jobs | submit login
Anatomy of a Crushing (pinboard.in)
490 points by mbrubeck on Mar 8, 2011 | hide | past | web | favorite | 68 comments



   I lived in constant fear of forgetting a WHERE clause.
For those in constant fear: http://dev.mysql.com/doc/refman/5.1/en/mysql-tips.html#safe-...


Ha, I half-remembered this existing and tried to Google my way to it, but to no avail. Thanks so much for the pointer!


In a huge database, even a SELECT with no WHERE clause can tie up considerable resources.


--i-am-a-dummy also limits the number of rows you can SELECT or JOIN.


You can kill it though, use SHOW PROCESSLIST


I always write my WHERE clauses first whenever I do anything on a live dataset.


I always had a rule to do everything inside a transaction. Having to commit a transaction gives you just enough pause to double check what you've done.


It's funny because I bookmarked this on pinboard.in


It was my experience that people approached an online purchase of six dollars with the same deliberation and thoughtfulness they might bring to bear when buying a new car.

Much like people complaining about the price of a gorgeous $2.99 iOS app while ordering a $6 coffee.


But the coffee is coffee. You know what you're getting.

That $3 iOS app or $6 web service may or may not be entirely useless to you; it's quite difficult to know.

I mean, it's easy to make sarcastic quips about the mentality. But there are good, clear reasons why it exists. And if you understand them, maybe you can do something about it - make it very clear exactly what your app does, include informative screenshots, offer a demo version, make payment easy, etc.


You know what you're getting because you've been trained to associate a price point with it. The retail markup on coffee is huge.


More than that, the experience surrounding the purchase decision for the $6 coffee is packed with seemingly reliable indicators of quality. From the neighborhood of the coffee shop to all of the design and decor of the physical place to the menu makeup to the people working there... there is a continual onslaught of conscious and subconscious information that guides one's final purchase decision.

The same is actually true with app purchase, unfortunately much of it negative (people charging real money for buggy crapware and fart apps, apps being poorly designed or full of distracting advertising, the list goes on.)

What chance do you have to bring to bear that same firehose of positive experience as the coffee shop to request $6 from your customer?


It's worth noting that unless you get siphon, any "coffee" you can find for $6 is much more than just coffee.


Yes, there is also 15 cents worth of milk and energy in it.


Didn't want to get into this, but yeah, in addition to 5 cents' worth of coffee, 30 cents' worth of barista time (fixed), and probably around 50 cents' worth of lease (fixed) and a bit more for equipment (fixed).


We can wrap this up tidily by observing that the "coffee house experience" probably does cost some reasonable markdown from $6/cup. The coffee itself, though, is a good we have been trained to pay an exorbitant markup for.


So the question is: how do we change the price point people associate with this service to be higher?


Step #1: Pick a market that isn't saturated by companies that are hypnotized into selling services below cost.

Step #2: Deliver a technology product into that market.

Step #3: Charge money for the product.

You can skip Step #1 (like 37signals did), but why cause yourself undue stress? All the customer money is outside the echo chamber.


If it's an app that is supposed to be useful, it may very likely be worth $15 to you. A game that you enjoy for a few hours has already beaten a movie rental in value. Most users have, on average, gotten more than their money's worth on their app purchases.


I can get a ticket for a movie for U$ 4 in my country (Uruguay), yet there's no such price discrimination for games - it's the US retail price or the highway.

Web/app pricing usually doesn't take into consideration the 3rd world (plus, the lack of availability of international credit cards or other easy purchase options, coupled with the attractiveness of piracy and low wages, makes selling stuff here a tricky proposition).


Even if you are from a 3rd world, if you can afford a smartphone worth several hundred dollars wouldn't you be able to afford a 99c app?


Wow, I didn't realize Angry Birds is really 99 cents. I was thinking they cost U$ 15 or something (even Plants vs Zombies, which is U$ 19 on the PC and I was considering buying, is only 3 dollars for the iPhone).

My father bought a Samsung Galaxy last week, and it's carrier subsidized so he pays 20 dollars/month for a year.

My own Nokia N86 was also carrier subsidized at U$ 30/month for a year (and that included 300 minutes' worth of calls).

Even the iPhone is carrier subsidized at about U$ 50/month for 2 years.

In those cases, paying an extra U$ 15 would make a difference, but U$ 0.99.. you're absolutely right.


I love that quote, and the article as a whole.


What I think is sort of interesting is the difference in what makes a small company happy and what can satisfy a behemoth like Yahoo.

This was an epic day in the life of Pinboard, and possibly took them from making ramen money into maybe pizza and beer money. For Yahoo, signing up a few thousand users at 6 bucks a pop is possibly not worth speaking of, much less devoting a team of developers, designers, marketers, system administrators, etc., to.

I'm not saying Yahoo hasn't been making mistakes left and right for the past...I dunno, decade or so. Nor am I suggesting that delicious had to come to this ignominious end; had it been kept on target throughout the years since acquisition, this story probably wouldn't have happened this way.

I'm just saying that this might not be an agonizing defeat for Yahoo. That's the cool thing about being a tiny company. You can do things that just aren't sensible from a business perspective when doing it on a larger scale (right now). A small company can completely ignore huge swaths of the market, for instance, and make one niche really happy and do nothing for the average user. Or, a small company can come in with a just the basics product that's simply easier to use than the big, complicated, product that's been in development for a decade or two. These are freedoms big companies simply don't have (as is the freedom to make thousands rather than millions on your primary product).


I hear what you're saying; this really isn't an agonizing defeat for Yahoo because Delicious was useless to them to begin with, however it's undeniable that the Delicious episode was a serious PR fuckup. It is a direct reflection of their floundering culture that A) the brass puts this in a major presentation when they are hoping to sell it (if indeed that was the case as they later claimed) and B) the employees are so demoralized that they are instantly leaking this presentation. Regardless of whether Delicious has any value to them, the last thing they want to do is forcibly drive away their user base.

All that said though, this is a nice windfall for Pinboard, and I'm super happy for them. The positive karma there outweighs the negative karma to Yahoo, which isn't really significant because it's just one piece of their larger ongoing failures, and I can't really think of a better use of a small failure than to make a company like Pinboard's year.


"" This is especially true in the world of Rails and other frameworks, where there is a tendency to treat one's app like a high-level character in a role-playing game, equipping it with epic gems, sinatras, capistranos, and other mithril armor into a mighty "application stack"."

Excellent article, giving balance to current "best practice" thinking.


Yeah, it's great to see someone using a couple dedicated servers instead of a massively parallel web of EC2 servers and all the overhead that comes with it for something that really shouldn't need it.


Thanks for posting this. Easily the most interesting sysadmin-gone-right I've ever read, and a type of article I'd love to see more of on HN.


Posted under "Things that went well":

We charged money for a good or service

I know this one is controversial, but there are enormous benefits and you can immediately reinvest a whole bunch of it in your project sips daiquiri. Your customers will appreciate that you have a long-term plan that doesn't involve repackaging them as a product.

If Pinboard were not a paid service, we could not have stayed up on December 16, and I would have been forced to either seek outside funding or close signups. Instead, I was immediately able to hire contractors, add hardware, and put money in the bank against further development.


Money quote: Of course, had bedbugs been found in the Delicious offices, our server would have been doomed.

This is excellent writing!



Yes, I was going to post that as well. Very entertaining writeup of a topic that tends to be dry (regardless of how stressful or exciting it is in the moment).


I really enjoyed this article in a way that I enjoy so few like it. It had just enough detail in the right places while being a really fun read.

And thanks for mentioning apachetop -- I somehow wasn't aware of it, and as one of my hosting customers is expecting 6 digits of page views over the course of a couple of hours tonight, it now has a terminal window all to itself.


I agree (on apachetop). I wish it were easier to discover essential tool like this beyond post-mortems. This will be a lifesaver in the future.


But now the Senior Vice President for Bad Decisions at Yahoo had decided to give us a little help.

Jeez - who keeps hiring this guy? I think we had him or his brother at the next to last company I worked at.


"And a final, special shout-out goes to my favorite company in the world, Yahoo. I can't wait to see what you guys think of next!" Seriously - you should send Senior Vice President for Bad Decisions a bouquet of flowers.

One of the best posts I've read on HN in a long time, and I'm not even a sys admin. It was compelling, informative and funny - nice job!


That's great - you never know when your competition can unroll a red carpet for you.

Also, apachetop. How did I not know about this?


Pinboard has a slowly increasing price as more users join. It was only $4.21 the day I signed up, and is now up to $9.25. I'm really glad I joined before the onslaught. :-)


With the signup fee currently at $9.25 and a pricing scheme of

  fee = (number of users * $0.001)
that means there are currently approximately 9250 registered users. Who remembers calculus and can calculate how much revenue they have generated, assuming their signup fee started at $0.01?


The pricing scheme is (number of users * $0.001 * C) where C is a multiplier that has changed with time. On top of that a significant portion of total revenue comes from archival accounts.

This urge to reverse-engineer our total number of users when I actually share that information in the post baffles me.


Reverse-engineering is much more fun


"where C is a multiplier that has changed with time"

Well, there's your bug :D


maciej has stated previously[1] that his revenue is greater than the $42K-$47K being approximated:

> Right now it's 18k users, with 11k active. The signup fee has brought in just over $120k, most of that coming in December (thanks, Yahoo!).

[1]: http://news.ycombinator.com/item?id=2205417


You don't need calculus. The mean price per user is $9.25 / 2, so they have taken in about 9250 * $9.25 / 2 = $42,781.25.

Not bad!


[deleted]


Some small corrections:

- Pricing didn't start at 0.01

- We don't have 9250 users (hint: see the linked article!)

- The price doesn't go up by $0.001 per user

Other than that, you're dead on.


Let U = Users

Let Price = U / (1000 x (LOG(U) - 2.44))

Disclaimer: $fuzzy_math_fudge_factor = TRUE


Assuming the fee as a function of users is linear and started at zero, the average user is paying 1/2 of the current price. So if the current price is $9.25, the average user is paying $4.625 per month. So they have made 9250*$4.625 = $42,781.25.


It isn't per month -- it's a one-time signup fee.


I didn’t realize it was a one-time signup fee. Thanks for pointing that out.


Archiving is annual.


You don't exactly need calculus for that one, just n*(n+1)/2. That works out to $47,785.875. Assuming they round up to the nearest penny on each transaction you get $42,827.50.


That's a really interesting pricing model. I should rummage around and see if he's mentioned why he chose that.


I got the idea from joshu. I wanted a gatekeeping fee for spam prevention but had trouble figuring out what to charge. He suggested a monotonically increasing signup fee.


At some point you're losing more potential users than you're gaining because the price has gone too high. Do you think about that? How will you handle it?


I've deferred worrying about it until it happens


I would suggest, once you cap it (at whatever rate) -- divide the rate by 12 and make it a recurring charge. For example, let's say you notice sales decline, and decide to cap the charge at $12 - change the structure so that instead, you bill each new user at a rate of $1 per month (with optional pre-pay discounts or yearly prepays or whatever).

If you can keep the users for 1 year, you'll have made more than the $12 cap you would have and, if you don't, at least you don't have the support headache of having to deal with a customer who bought in at the minimum for life -- non-paying users at this price tier go away. Plus, anybody willing to break out their wallets at all are likely to have little qualm over $1 a month.

Also, with a fairly regular income stream, it'll allow you to plan your expenditures more reliably, so budgeting for things like employees, server space, etc will be easier to plot out cost vs income.


$5 seemed reasonably, $10 is too much. For me at least.


Are you increasing the rates for Archival accounts, too, or just the Basic?


Archiving has always cost $25/year, and will stay that way. Only the signup fee goes up.

The practical result is that the upgrade becomes progressively cheaper (since the signup fee is deductible from the first year's subscription)


Archiving is the best deal around. $25 and I have 1.25GB of my past ten years of bookmarks saved. (Minus a few hundred dead links from the early days of del.icio.us.)

I bookmark so I can look at something later, and the unpredictable perishability of the web defeats that purpose. Archiving snatches victory from the jaws of defeat. :-)

I would like to see tag hierarchies à la del.icio.us, if you were bored and wanted to implement them.


Anyone know what tool is generating these very-pretty load graphs?


Microsoft Excel 2004


I find it quite surprising how little users pinboard actually got overall. But on the other hand - most of them are premium customers.

Maciej I'm curious is this endeavour profitable for you? I understand the point of an itch that needs to be scratched and all. But still I'm curious - I find the service excellent (I'm a devout customer) but for all the resource intensiveness that your service requires to offer caching and search and the time sunk into implementation and maintaining, well I find the fee kinda low (on a over thumb estimate that is).

Are there any other ways you are monetizing this? Since all those bookmarks are true "human powered search engine"?


You have to pay to sign up (right now it's $9.25 but it increases steadily), so it's not too surprising that they got a relatively modest registration bounce. The money adds up quickly though.


He was paying something like $500/month for the servers, right? Were the two hosted projects worth that monthly spend? In retrospect, of course it was, but maybe not on a month-to-month basis.


Great read, and I've personally used Pinboard more than I ever would have thought. Best small web purchase ever!


We charged money for a good or service

I know this one is controversial

How unfortunate that this should be the case.


This is one of the best reads I've had in a while on a tech blog.




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: