Looking back on your startup and its progress so far, what are the two best technical decisions you've made? Did you know they would have such a dramatic impact?<p>I'll start the ball rolling:<p>1. Linode - its flexibility has helped us keep costs seriously low without sacrificing power or scalability.<p>2. Memcached - using it various places instead of database access helped us turn a beast of a ~12second algorithm into a sub-400ms beauty.<p>I suspected they'd both be pretty cool but didn't realise quite how <i>insanely</i> fast memcache would be.
For context I run pinboard.in, a bookmarking site.<p>1. Using PHP rather than Rails or Django. It meant having to hand-code simple things like form handling, but resulted in a peppy site that can handle sudden spikes in traffic. The initial investment in writing boilerplate and laying out the code has really paid off now that I need to tune and add features.<p>2. Sphinx. Made the site searchable with minimal configuration, and allowed me to move certain queries out of MySQL without having to set up caching. It's nice to have caching as a luxury to make the site even snappier, rather than an essential prerequisite for usability.<p>People have to pay to use our site, and the main thing that sets us apart from our many free competitors is speed, speed, speed. That fact has loomed large over our technical choices.
Rails: Two years ago I switched from the standard shareware five-page-HTML-brochure site to the same site written in Rails, with the immediate goal of not having to do templating by hand anymore. It has grown organically since that, now boasting a CMS, a full-fledged web app, an API which interacts with my desktop application, copious reporting/administration/backend features, consumption of several web services for outsourced providers, and an A/B testing framework. You'd think it would be a staggering mess of spaghetti by now, but no, the MVC discipline makes it easy to maintain, easy to extend, and fairly easy to manage. Almost all time I spend in my IDE creates additional business value. This contrasts markedly with my experience with developing in Java, where frequently I have to mark off a week just to fight my tools.<p>Prawn: A maaaaaaaaaaaaaaajor pain point for me in developing my desktop version, and developing unrelated web apps for my day job, was laying out documents properly to be printed. Prawn makes it absurdly easy. For added goodness, throw in ImageMagick and you can turn the PDFs into GIFs for essentially no extra work.
1. Puppet - being able to roll out a new server in a few minutes on either ec2, external networks connected to our vpn or locally is magic. Having our server definitions version controlled is seriously powerful.<p>2. AWS - enough said.