Category: Startups

  • The relative non-risk of startups

    Based on recent events I suspect an investment axiom might exist that says: The further an investor is abstracted away from the underlying asset they’re investing in, the greater the risk.

    This has been shown recently to be true with Mortgage backed securities, credit default swaps, the black box that is the hedge fund industry and even sovereign debt may qualify.

    When you are shielded from your investment by layers of structure, marketing, repackaging and sales teams, you are too far away to hear the alarm bells when they’re ringing.

    That got me thinking about the relative risk of being an angel investor in young companies. Angel investors meet with the founders, use the product and in many cases craft the investment terms themselves. Spending a few weeks negotiating a deal with an entrepreneur is itself a revealing process. The investor is exposed to a mountain of data on the underlying asset they’re investing in.

    The recent excellent Bloomberg article on the under performance of commodity ETF’s brought this difference home for me. Suited and booted bankers sell commodity ETF’s daily with a prospectus that tells you you’re investing in gold or oil or copper. The impression created is that you’re investing in the underlying asset when in fact you’re investing in a fund that is trading monthly futures contracts for the commodity. Two years later you’re left wondering why your investment has lost 20% while the underlying commodity has gained.

    The complexity of financial products and the distance between the average investor and the underlying assets they’re investing in has, I believe, peaked. As the financial crisis that was started in 2008 continues to play out, during next decade I strongly suspect there will be a return to less complexity and a desire to know, touch and meet with the assets that underlie each investment.

    While the likelihood of failure in young businesses is high, as an angel investor you know exactly what you’re getting and you have the ability to influence the performance of your asset. Try finding that on Wall Street.

  • Are you building an R&D lab or a business

    Take Twitter in a parallel universe. The team builds a great useful and viral product. They start growing like crazy and hit their first million members. The growth machine keeps pumping and everyone is watching the hot Alexa and Compete graphs cranking away.

    They start getting their first acquisition offers. But the smart folks know the second differential of their graphs is still wildly positive (it’s curving up). They decide to hold off on a sale because they figure that even though they have to raise another round to buy infrastructure, their equity will still be worth more net net.

    They keep growing and that second differential gets a little smaller as the curve starts flattening out into a line. Then right before the line turns into the other half of an S they hire Allen and Company, line up all the acquirors and sell for $3Bn to Google.

    What just happened is a kick ass group of product guys teamed up with a kick ass group of financiers to create an R&D lab. The lab came up with a hit product and was acquired. Make no mistake, this is a very very good thing! In this parallel universe the amazing product that is Twitter is combined with a company with the business infrastructure and knowledge to turn it into a money printing machine. That creates jobs, brings foreign currency back into the US through exported services and of course the wealth creation event for the founders has a trickle-down effect if you’re a fan of supply side economics.

    Now lets step back into our Universe (capital U because I don’t really believe in this parallel universe stuff). Another group of kick-ass product guys called Larry and Sergei teamed up with a group of kick-ass financiers called Sequoia in 1999. A guy called Eric Schmidt who is a battle hardened CEO from a profit making company that got their ass handed to them by Microsoft joins the party.

    In 2000 Google launched AdWords and the rest is business model history. A history that you will never hear because once the company started printing money they went dark. There are tales of Bill Gross having invented AdWords, legal action, a possible out of court settlement – but no one will ever know the full details of these early days and we have almost zero visibility into the later story of how Google turned that product into a money printing business.

    The stories of successful transitions from product to business are never told. Even if they were they would bore most of us  because they are not fun garage-to-zillionare stories. They are stories where the star actors are cash-flow plans, old guys with experience and teams of suit-wearing sales people.

    The thing that attracts most geeks (also called Product Guys) to startups is the garage to zillionare story through an exit. And that’s OK provided you get your head screwed on straight and understand that you are an R&D lab who’s goal is to get acquired. So go and make yourself a credible threat. Make yourself strategically interesting. Go and build the kinds of relationships that demonstrate your worth to potential acquirors, get them addicted to your data and result in an exit.

    [Quick aside: I spent the day skiing a while back with a great guy who heads up a certain lab at Stanford. They came up with an amazing product that you now use every day. They teamed up with an A list VC with the specific intent of selling to Google. That’s exactly what they did and it has improved our lives and Google’s business model. So again, the R&D lab approach is very very OK.]

    The other smaller group of founders are business geeks. I’m friends with a handful of company founders and CEO’s in Seattle who absolutely personify this group. Everyone of them was a VP in a larger company. They all have MBA’s from top schools. And every one of them is focused on generating cash in their business. The road they’ve chosen is a longer, harder road with a lower chance of success but a much higher reward (think Michael Dell, Bill Gates, Larry Ellison) if they succeed.

    Both paths are morally and strategically OK. You just need to know which you’re on and make sure your investors and the rest of the team are using the same playbook.

    temet nosce (“thine own self thou must know”)

  • Bandwidth providers: Please follow Google's lead in helping startups, the environment and yourselves

    There’s a post on Hacker News today pointing to a few open source javascript libraries that Google is hosting on their content distribution network. ScriptSrc.net has a great UI that gives you an easy way to link to the libs from your web pages. Developers and companies can link to these scripts from their own websites and gain the following benefits:

    • Your visitor may have already cached the script on another website so your page will load faster
    • The script is hosted on a different domain which allows your browser to create more concurrent connections while fetching your content – another speed increase.
    • It saves you the bandwidth of having to serve that content up yourself which can result in massive cost savings if you’re a high traffic site.
    • Just like your visitor already cached the content, their workstation or local DNS server may also have the CDN’s IP address cached which further speeds load time.

    While providing a service like this does cost Google or the providing company more in hosting, it provides an overall efficiency gain. Less bandwidth and CPU is used on the Web as a whole by Google providing this service. That means less cooling is required in data centers, less networking hardware needs to be manufactured to support the traffic on the web and so on.

    The environment benefits as a whole by Google or another large provider hosting these frequently loaded scripts for us.

    The savings are passed on to lone developers and startups who are using the scripts. For smaller companies who are trying to minimize costs while dealing with massive growth this can result in a huge cost savings that helps them to continue to innovate.

    The savings are also passed on to bandwidth providers like NTT, AT&T, Comcast, Time Warner, Qwest and other bandwidth providers who’s customers consume less bandwidth as a result.

    So my suggestion is that Google and bandwidth providers collaborate to come up with a package of the most used open source components online and keep the list up to date. Then provide local mirrors of each of these packages with a fallback mechanism if the package isn’t available. Google should define an IP address similar to their easy to remember DNS ip address 8.8.8.8 that hosts these scripts. Participating ISP’s route traffic destined for that IP address to a local mirror using a system similar to IP Anycast. An alternative URL is provided via a query string. e.g.

    http://9.9.9.9/js/prototype.1.5.0.js?fallback=http://mysite.com/myjs/myprototype.1.5.0.js

    If the local ISP isn’t participating the request is simply routed to Google’s 9.9.9.9 server as per normal.

    If the local ISP (or Google) doesn’t have a copy of the script in their mirror it just returns a 302 redirect to the fallback URL which the webmaster has provided and which usually points to the webmaster’s own site. A mechanism for multiple fallbacks can easily be created e.g. fallback1, fallback2, etc.

    Common scripts, icon libraries and flash components can be hosted this way. There may even be scenarios where a company (like Google) is used by such a large percentage of the Net population that it makes sense to put them on the 9.9.9.9 mirror system so that local bandwidth providers can serve up commonly used components rather than have to fetch them from via their upstream providers. Google’s logo for example.

  • Does your startup pass The Sleep Test

    Having coffee at 4am after an all-nighter with my co-founder and wife a few days ago we came up with a rather obvious but interesting concept. I’ll call it The Sleep Test.

    Unless your business earns revenue while you are sleeping, it won’t scale.

    If you’re an I.T. consultant or lawyer selling your own time, you can’t scale.

    If you’re a brick-layer who employs other brick layers and also employs a sales person, driver, accountant and all the other business components so that your business runs while you’re not there, you CAN scale.

    If you’re a web developer who writes an application that earns ad revenue or that earns subscription money while you sleep, you CAN scale.

    Most businesses start off with a founder selling their time and with the maximum earnable revenue being tightly limited by the founders available time. The founder works themselves into a stupor and at some point they go through what is often a difficult transition where they “step back” from the business and employ others to take over their various jobs. Many businesses don’t make this transition and it is the subject of much discussion in MBA programs world-wide. The birth of Kinko’s is a great example of this evolution. Paul Orfalea is dyslexic and in the story of Kinko’s he mentions how this forced him to step back from the business and employ others.

    Many “Web businesess” or “Software businesses” need to employ a sales team or have components like fulfillment that don’t scale easily or cheaply. But if your business is a “Web App” that earns you money through advertising or through subscriptions and where the application is the business, it scales incredibly well.

    Web App businesses scale so well that if you “get it right”, they automatically pass the sleep test from day one and they pass the test without you having to employ additional staff.

    Two types of Web App that often pass the sleep test are:

    1. A service that attracts huge numbers of an attractive demographic that can earn you ad revenue or
    2. A service that is so valuable to a group of people that they will pay you for it, preferably on a recurring basis

    Your web app business must also:

    1. Not require additional staff time per customer
    2. Not require additional staff time per dollar earned
    3. Market itself. If it’s marketing is limited by your time, you wont’ scale.
    4. Earn you substantially more money than your business costs to run.

    And that’s it. You need to build a web application that markets itself, earns more money than it burns and that is either wildly popular or wildly valuable.

    If you have a Web App that passes The Sleep Test, congratulations because you have just bypassed one of the most difficult stages of small business evolution and one of the most common points of failure that just about every other business type is forced to navigate.

    Final caveat: I’ve written this post discussing this concept in absolutes i.e. you either do or do not pass the sleep test. Of course in reality there is not a single web app business that does not need to employ more staff as their revenue and customer base grows. Google is a fine example of a business that is designed to avoid having to employ more people as revenue or customers grow and they employ over 20,000 people today. But this test is a useful way to measure and think about how efficiently your business will scale.

  • Basic cooking for bachelor alpha geeks

    Just caught up with a good friend of mine who’s a tech geek and bachelor and needed some cooking advice. I’ve watched bachelor friends give themselves scurvy by getting home and ordering pizza every night. Being a tech geek makes it worse.

    Your $badnessOfDiet += $levelOfAlphaGeek**3

    So my wife put together the list of recipes below for him this evening. They are incredibly basic but are staples that you can make in big batches at the beginning of a week and eat the whole week. You can make a big batch on sunday, freeze half of it and keep the other half in the fridge and thaw it out halfway through the week as you run out.

    The foods below are Low GI so will help you lose weight and you can eat as much as you’d like. They also contain much of what you need in your diet. If you’re a geek looking to lose some weight, this list is definitely for you. I lost 25 pounds (200 down to 175) last year eating mostly this. I’d throw in some fruit here and there (organic apples, banannas, grapefruit, oranges, etc..) The fruit is not as low on the GI scale, so don’t go nuts.

    Also, try to drink your geek dose of caffeine AFTER you’ve eaten. You’ll notice your skin suddenly stops being so dry.

    Lentils                                    Cooking Time:  30-45 min

    Lentils are the easiest bean to cook as they don’t require presoaking.  Sort through the lentils to pick out any rocks.  Rinse them to remove dust.

    Add 2 cups water and 1 cup lentils in a pot.  Bring to a boil then set to simmer.  Cook for 30-45 minutes depending on the type of lentil.  Start checking at 30 minutes. They should be soft.  Not chewy (undercooked) or mushy (overcooked).  Add water if you need to during the cooking time.  You can drain off any excess water if they are done cooking.

    You can eat them plain or add some salt and pepper (such as ½ teaspoon salt and ½ teaspoon pepper) or other spices.  You can add spices during the cooking except salt.  Only add salt at the end or the lentils won’t soften.  You can triple/quadruple, etc the recipe to make a big batch at the beginning of the week.

    Dried Beans:                  Black Beans / Lima Beans / Kidney Beans / Pinto Beans

    Soak Time:  8 hours                  Crockpot Cooking Time:  8-12 hours

    Dried beans are also easy to make but need some planning.  You also sort through the bag of beans for rocks and give a quick rinse.  Soak overnight or at least 8 hours.

    The easiest way to cook is in a Crockpot while you are at work or overnight because you don’t have to worry about the water level getting too low.  Put the soaked beans into the Crockpot and cover with about an inch of water.  Add spices, set the Crockpot on LOW then let the beans cook for 8-12 hours.  Start checking at 8 hours or when you get home/ wake up.  Beans should be soft.  Take one out and sample it to see if it’s done.   If you get home and they aren’t quite done, you can put them on high and they cook much faster but keep an eye on them.  They can get low on water and burn.

    Some spices to add are garlic powder, onion powder, cumin seeds or cumin powder and pepper.  Again, no salt while cooking, it will prevent the beans from softening but the other spices are great to add while cooking.  You can start off adding 1 teaspoon of each spice per 2 cups of soaked beans and modify to suit your taste.

    Vegetables:                  Cooking Time: 5-10 minutes

    Go for variety when eating vegetables.  Steaming is the easiest way to cook.  Get a little metal steamer you put into the bottom of any pot.  Be sure to rinse the vegetables before cooking.  Good vegetables for steaming are broccoli, asparagus, cauliflower, green beans, mushrooms and carrots.  Put in the steamer, add water until it just touches the bottom of the steamer, put in the veggies, cover, put on high until it starts steaming then set temperature on medium.   Most vegetables are done in 5-10 minutes.  Start checking them at 5 minutes until they are the texture you like.

    You can eat them plain or drizzle with some olive oil, salt, pepper, lemon juice or even try balsamic vinegar.

    Herbed Baked Chicken:                                    Cooking 50-60 minutes

    This recipe works great with boneless breasts or thighs.  Rinse the chicken and put into a baking dish.  Over 8 pieces, drizzle a mixture of  1 tablespoon lemon juice, 1 tablespoon olive oil, 1-2 minced garlic cloves and 1 teaspoon each of dried (or 1 tablespoon fresh) of your favorite herbs such as oregano, rosemary, thyme, basil, etc.

    Cover with foil and bake at 350 for 45 minutes.  Take them out and check the internal temperature with a meat thermometer.  This is important.  The best way to not overcook or undercook is to check the internal temperature.  The chicken is done at 165.  If the chicken is already at that temperature, it’s done.  If isn’t not quite there, remove the foil and bake for another 5 minutes. Take it out and check the temperature again.  Repeat until it’s at 165.

  • If your bank doesn't like your startup's blog, they may freeze your funds

    Update: The Fabulis story had legs like I’ve never seen before. When I posted it to Hacker News it shot to number 1 in about 3 minutes and stayed there for 6 to 8 hours. A few hours later Robin Wauters from Techcrunch picked up on the story and since then it’s appeared everywhere from GigaOm and ValleyWag to FT.com. Citi has now issued a formal apology to Fabulis emphasizing their support of the LGBT community which you can read here.

    Update2: Jason posted this update about 4 hours ago with some additional rather startling detail. “Yesterday I was even instructed to come into the branch to view a print-out of the “offensive” content on our site which was in “violation” of their compliance officer’s review of our business account.”

    My original post follows:

    In an utterly bizarre move, according to the Fabulis blog, Citibank blocked Fabulis.com’s bank account a few days ago for “objectionable content on their blog”. To give you some context, Jason Goldberg the Founder & CEO is a good friend of mine and started his career working for Bill Clinton in the White House. He then went on to T-Mobile, picked up a Stanford MBA on the way, raised $50M for Jobster which ended up buying my job search engine, then founded SocialMedian (sold to Xing) and is now working on Fabulis.

    Fabulis is based in NY but Jason is still known and loved by the Seattle startup community and we may one day even forgive him for going to the east coast.

    The company is still finding their niche but it looks like they’re setting up to be a travel portal for gay men. Their blog has had a ton of hilarious videos of guys describing why they’re “Fabulis”. Zero porn, nothing even mildly suggestive or risque.

    Just to be completely clear, we’re not talking about refusing a line of credit here. This is a cash account belonging to a funded company that was blocked.

    I haven’t had a chance to speak to Jason about this yet, so I don’t have any more detail. But after Fabulis called Citi this evening they temporarily lifted the block while “a compliance officer is asked to re-review our website on Thursday”.

    I’m curious why a bank would think they have the right to block a depositor’s access to their own funds based on that banks own moral judgment. Unless I’ve misunderstood the facts, this sets a very dangerous precedent.

    Banks are highly motivated to hold on to your money as long as possible. If they have this power, it is very profitable for them to use it because they earn interest on your money every additional day it stays in your account. Ever heard of the overnight rate?

    One might speculate that this is a form of redlining and that the LGBT community is the new target.

    After their $45 billion dollar public money bailout of Citigroup in 2008 it’s ironic that they would block the bank account of a technology startup who’s goal is to create jobs.

    Whatever the reason, I hope Citi’s PR team is kicking into gear because Jason is no stranger to mainstream media (CNN video) and this seems like the sort of thing that that will get picked up.

  • How to handle 1000's of concurrent users on a 360MB VPS

    There has been some recent confusion about how much memory you need in a web server to handle a huge number of concurrent requests. I also made a performance claim on the STS list that got me an unusual number of private emails.

    Here’s how you run a highly concurrent website on a shoe-string budget:

    The first thing you’ll do is get a Linode server because they have the fastest CPU and disk.

    Install Apache with your web application running under mod_php, mod_perl or some other persistence engine for your language. Then you get famous and start getting emails about people not being able to access your website.

    You increase the number of Apache threads or processes (depending on which Apache MPM you’re using) until you can’t anymore because you only have 360MB of memory in your server.

    Then you’ll lower the KeepaliveTimeout and eventually disable Keepalive so that more users can access your website without tying up your Apache processes. Your users will slow down a little because they now have to re-establish a new connection for every piece of your website they want to fetch, but you’ll be able to serve more of them.

    But as you scale up you will get a few more emails about your server being down. Even though  you’ve disabled keepalive it still takes time for each Apache child to send data to users, especially if they’re on slow connections or connections with high latency. Here’s what you do next:

    Install Nginx on your new Linode box and get it to listen on Port 80. Then reconfigure Apache so that it listens on another port – say port 81 – and can only be accessed from the local machine. Configure Nginx as a reverse proxy to Apache listening on port 81 so that it sits in front of Apache like so:

    YourVisitor <—–> Nginx:Port80 <—–> Apache:Port81

    Enable Keepalive on Nginx and set the Keepalive timeout as high as you’d like. Disable Keepalive on Apache – this is just-in-case because Nginx’s proxy engine doesn’t support Keepalive to the back-end servers anyway.

    The 10 or so Apache children you’re running will be getting requests from a client (Nginx) that is running locally. Because there is zero latency and a huge amount of bandwidth (it’s a loopback request), the only time Apache takes to handle the request is the amount of CPU time it actually takes to handle the request. Apache children are no longer tied up with clients on slow connections. So each request is handled in a few microseconds, freeing up each child to do a hell of a lot more work.

    Nginx will occupy about 5 to 10 Megs of Memory. You’ll see thousands of users concurrently connected to it. If you have Munin loaded on your server check out the netstat graph. Bitchin isn’t it? You’ll also notice that Nginx uses very little CPU – almost nothing in fact. That’s because Nginx is designed using a single threaded model where one thread handles a huge number of connections. It can do this with little CPU usage because it uses a feature in the Linux kernel called epoll().

    Footnotes:

    Lack of time forced me to leave out all explanations on how to install and configure Nginx (I’m assuming you know Apache already) – but the Nginx Wiki is excellent, even if the Russain translation is a little rough.

    I’ve also purposely left out all references to solving disk bottlenecks (as I’ve left out a discussion about browser caching) because there has been a lot written about this and depending on what app or app-server you’re running, there are some very standard ways to solve IO problems already. e.g. Memcached, the InnoDB cache for MySQL, PHP’s Alternative PHP Cache, perstence engines that keep your compiled code in memory, etc..etc..

    This technique works to speed up any back-end application server that uses a one-thread-per-connection model. It doesn’t matter if it’s Ruby via FastCGI, Mod_Perl on Apache or some crappy little Bash script spitting out data on a socket.

    This is a very standard config for most high traffic websites today. It’s how they are able to leave keepalive enabled and handle a huge number of concurrent users with a relatively small app server cluster.  Lighttpd and Nginx are the two most popular free FSM/epoll web servers out there and Nginx is the fastest growing, best designed (IMHO) and the one I use to serve 400 requests per second on a small Apache cluster. It’s also what guys like WordPress.com use.

  • Why we breathe

    Free Diver in LimasolHold your breath for a moment.

    In about 10 to 30 seconds you’ll be feeling a strong desire to take a breath. That’s not caused by lack of oxygen. It’s caused by excess carbon dioxide buildup in your blood.

    [Ok you can breathe again.]

    The trigger in mammals that causes us to want to take a breath is an excess buildup of CO2. In reptiles the trigger is lack of O2. Free divers don’t hyperventilate to get more O2 into their bloodstream. They do it to to flush out excess CO2 and remove that breathing trigger. That’s also what causes shallow water black-out as you’re surfacing, so don’t try it without a buddy.

    I’ve worked in more startups than I care to count where the lack of endurance was not caused by lack of oxygen, but an excess buildup of waste. Getting a larger office, buying excess server capacity early on that isn’t needed, hiring excess people to manage that server capacity, hiring managers to manage the people, hiring an ad agency and PR firm and a small team to manage them.

    Once you start down the path of waste you may still have enough oxygen in your bloodstream to surface, but the excess CO2 in your business creates a strong demand for more Oxygen which causes you to raise another round of funding, producing more CO2 and the cycle continues.

    So start your business by hyperventilating to flush out all excess CO2, take a deep breath and beware of shallow water blackout as you’re approaching the surface.

    [Photo credit: My good friend Bruno Stichini who hosted a free diving world record attempt in Limasol, Cyprus back in 2000]

  • Revenue and Runway – Why every cent matters

    A month ago on Techcrunch, Michael Arrington wrote about “Twitter’s Revenue Dilemma”: “Your valuation can actually go down once you turn on revenue.”.

    “Turning on revenue” frames it as a binary thing. You’re either making money or you’re not. It completely disregards the most important variable in finance: Time.

    With the tiniest trickle of revenue you can extend your runway infinitely. That means you never have to raise another cent and you even have money to fund your growth. Let’s take an example:

    Say you’re a consumer web business. You have some growth and some traction. You close an angel round for $400k in Month 1. In month 2 you start spending it and your burn rate is $25k for salaries, office and hosting. It takes you 4 months to get the product into shape and launch.

    In your first month of launch you make a meagre $500 bucks. And lets say you suck at marketing and your revenue increases by $1000 per month so that a year after you launch your product (17 months after getting funded) you’re making $12,500 per month in revenue.

    Even two years after getting funded you’re still only making $19,500 which is far from breaking even.

    But what this does it it slows your burn rate enough and buys you enough time so that you never run out of money. That means you can keep paying yourself a full salary and growing your business and you never run out of cash. In month 29 your bank balance drops down to $12,500, but then it starts increasing again because in Month 30 you break even.

    If you didn’t generate any revenue in the first 18 months you run out of money in month 17.

    You might argue this approach stifles growth. So be more aggressive, increase your burn rate to $200k and raise $3 Million. The same logic applies. Early cash-flow that is far from break-even can extend your runway to infinity (and beyond).

    This matters for founders more than anyone else because it means you can raise a single round and never have to give away any of your equity ever again.

    The sheet below shows the two scenarios – with and without revenue. [I’ve reoriented the flows vertically for readability]

  • Costs and Startups – Advice for your CFO

    In any company if you save $1 it goes straight to your bottom line. Meaning it’s as if you just earned another $1. The company that my wife and I have been running for about 2 years now serves over 30 Million page requests per day. We’ve invested a lot of time in getting more performance out of our hardware but about 6 months ago we started hitting pesky issues like limits on the speed of light and electrons.

    So we’ve had to keep growing without going out and buying a Google-size web cluster. A lot of the wins we’ve had have been simply using every spare drop of capacity we can find. I’ve noticed a pattern during the last 6 months. It goes something like this:

    Kerry (My wife, our CFO, and keeper of the graphs): Server 12 is hitting 10. [Meaning it has a load average of 10 on an 8 CPU machine which is 125% load]

    Me: OK Dell has this great special on these new R410 servers that are about twice as fast as the previous generation.

    Kerry: What about the other machines in the cluster?

    Me: They’re already at 80%.

    Kerry: OK what else do we have?

    Me: Well the crawlers are maxed, the mail server’s maxed, the proxy’s maxed out, the load balancer is maxed….

    Kerry: What about 25 and 26? They’re sitting at 2.

    Me: Well we’d have to [technical and managerial speak explaining how complicated it’s going to be to implement]

    Kerry: OK so lets do that.

    Me: [More bullcrap this time rolling out the big guns desperately trying to get money for new toys]

    Kerry: …[waits it out]

    Me: OK so lets do that.

    If you’re a CFO approving purchase decisions in your company, take it from me: Geeks and CEO’s alike love buying new stuff. I assure you there isn’t a web cluster or database cluster on this planet that you can’t squeeze a little more capacity out of without breaking things. So before you take the [technical and managerial bullcrap from your geeks and CEO] at face value, sit down with your team and have them explain all the data to you and go through all your resources with a fine tooth comb. Then, if you absolutely have to, spend some money.

    And if you don’t have a CFO, nominate someone immediately!! It doesn’t matter how small you are, someone had better be the keeper of the cash-flow plan or you’re going to run out of money and wonder why.

    Incidentally, this is the load decrease on one of the busiest servers in our cluster when we brought online some ‘found’ capacity earlier today.

    Screen shot 2009-11-01 at 2.29.56 PM

    Posted on Hacker News.