Archive for the 'Uncategorized' Category

In San Francisco Next Week

I’m going to be down in San Francisco on the 26th next week. Anyone want to get some breakfast/lunch/coffee? Shoot me an email at

Android Market Search Bug

Hey Google folks, I love that Android exists, but these kinds of bugs sort of drive me insane. Guess what the name of my app is?

I know the app is still there. I know the name is “Audiogalaxy Music”. Please help my users find it when they search for it by name.

Are you caching search results from a device that we don’t support and then showing them to me? This feels like that sort of bug.

Update — and now we are back (though that text about no matches still cracks me up):

Introducing the Audiogalaxy API

I never posted about it, but in 2008, I started working with a group to relaunch Audiogalaxy. It looked like we had an opportunity to (legally) run the same thing we had before: a DRM-free, all you can eat music downloading service. We spent almost 2 years on that effort, but ultimately it didn’t work out (that advice about staying out of the music business is pretty solid, btw). So we pivoted, and after looking at the chunks of technology we had laying around the shop, we decided a music place-shifting service would be a good start.

After a year of working on it, we are happy with our backend and our functionality, so we’ve exposed an API. Check out my post on the Audiogalaxy Blog for some more information, and follow @audiogalaxy for all the latest news.

Where Are the AB Testing Frameworks?

I read news.yc and reddit/programming pretty regularly to keep up with what is going on in the biz. Based on that reading, I can probably name a dozen different systems for building high scale applications (distributed storage, message queues, caching layers, search engines, etc), but I can’t name a single AB testing framework other than Google Website Optimizer. That seems like a serious inversion of priorities for most startups. Everyone with a sign up page should use AB testing. Not everyone needs a message queue.

Is this because:

  • Nobody needs anything other than Google Website Optimizer?
  • Startups don’t actually do AB testing, possibly because they don’t get enough traffic to get meaningful results, or maybe because they don’t have time?
  • AB testing (including the statistical analysis to determine if results are valid) is so simple that everyone just bangs out their own?
  • As a largely theoretical issue for most startups, scalability is more fun to talk about on the Internet?
  • Everyone that is using AB testing is so happy that they are trying to suppress information about it so their competitors don’t start doing it too?

If everyone is secretly using some great framework please shoot me an email and let me know.

If you haven’t thought much about it before, here is a short paper on AB testing from some folks that made Amazon a ton of money.

Two and a Half Months of Twitter

After a few months of playing around with Twitter, the service is really growing on me. The ability to have casual IM-ish conversations without any immediacy is nice. Also, having a place to record short thoughts and interesting links that other people might like scratches some sort of itch for me. I wouldn’t want to write up a whole blog post for any of these, but they were all interesting enough to post on twitter:

But, I don’t think I’ve reached the critical mass of followers necessary to really unlock the Q&A potential of the site. Having a few hundred technical folks all following each other would be a tremendously useful resource for everyone involved. For example, I’m considering upgrading my desktop to 8 or 16GB of RAM. I’m going to need a new motherboard, processor, and RAM. My normal approach for this would be to spend a few hours on Newegg and the hardware review sites trying to figure out where the price/performance curve is and making sure I’m not getting ripped off. If someone else has done this same research it would be nice to use their information as a starting point, and twitter provides the kind of free-form conversation necessary for that kind of sharing.

To really make this work, you need to run one of the desktop apps so you don’t have to constantly reload the website (I use Twhirl).

Handling Human Error In the Datacenter

When I was working on Live Mesh at Microsoft, I had the good fortune to meet James Hamilton. James is full of good ideas, many of which are captured in his paper “On Designing and Deploying Internet-Scale Services.” There is a lot of wisdom in those pages (Greg Linden had some thoughts on it), but I’d like to focus in on this snippet in particular:

Design the system to never need human interaction, but understand that rare events will occur where combined failures or unanticipated failures require human interaction.

Continue reading ‘Handling Human Error In the Datacenter’

tklein on twitter

I’m on twitter now. Follow me at

Crashing When Something Feels Wrong

I’m sort of lazy, so I really like the idea of code that continually checks itself by using assertions. I even like running production services with assertions turned on. To be clear, I’m talking about assertions that check for actual bugs in your code – not assertions that socket() didn’t fail. Still, crashing production servers is a contentious issue, but sometimes (hopefully rarely) it is the best thing to do. For something like FolderShare, crashing a server as soon as there is any hint of an error is vastly safer than possibly deleting someone’s files due to a bug. Of course, this introduces the risk that you could have multiple servers fail in a short amount of time, but you need to design for that case anyway.

Continue reading ‘Crashing When Something Feels Wrong’


I don’t plan on having many non-technical posts here, but I’m breaking my rule today for a good reason. I’ve got a kid now! My first child, Margot Lee Kleinpeter, was born about 10 days ago. Between a long, drawn out labor, a few nights on a hospital couch, and fatherhood in general, I’ve fallen a bit behind on publishing. Much to my surprise, Margot prefers clean diapers and songs to essays on startups and programming. But, I’ve got a new post for today and I’ll hopefully be back on a more normal schedule soon. In the meantime, enjoy this picture of her sleeping:


I went to a meeting run by the Seattle Tech Startup folks a few weeks ago. Even though I’m not thinking about doing another startup right now, I was glad to see the enthusiasm of all the other people who are. Because I love seeing the new ideas that come out of startups, I really hate seeing them fail as a result of them making the same silly mistakes. So, the collaboration that the STS meetings and the associated mailing list promote really put a smile on my face.

I’ve played a big part in two successful startups, and my two had very different flavors. Audiogalaxy was a rocket-ship ride that didn’t let up for three years until it all came crashing down due to a lawsuit. We had traffic from the minute we turned on the Satellite, and all we had to do was scale it up as quickly as we possibly could. FolderShare, on the other hand, sometimes felt like a continuous series of failures until we had success all at once–a glowing review from Walt Mossberg while we’re negotiating our acquisition by Microsoft. That was nice.

Now that I’ve got some free time, one of the goals for this blog is to reflect a little bit on my experiences and what I might change next time. Stay tuned.