February 07, 2010
Gabriel Weinberg's Blog
How should I value prospective angel investments?
February 04, 2010
Social Strategist
How to Hire a Good Marketer (for Startups) [1]
It’s the question I hear second-most often, right after “How do I hire a good developer?”. Marketing is one of those skills a startup can’t do without, and realistically, probably shouldn’t be started without. Most founders have at least some marketing skills, and that works for a while. But they reach a point where they want to focus on what they’re great at, and don’t know how to determine if someone else is as good at marketing as the founder is at coding, business, etc. If you’re in that spot, or just in the unenviable position of trying to attract customers / users to an idling completed product, here’s your guide to choosing someone who can help turn up the heat.
What is Good Marketing?
Good marketing exists at the intersection of awareness, analysis, and creativity.
- Awareness: Of the market, of how it will perceive different messages, of what others are doing to reach your market, of how your market communicates with each other, and of trends within related markets that may be applicable to yours.
- Analysis: The ability to take information and create meaning. Being able to answer more than one “why?” about a change’s occurrence. Being able to predict more than one scenario, and explain the factors that make each more / less likely.
- Creativity: The ability to create new methods, rather than just improvements to existing ones.
What Skills Does a Marketer Need?
Every marketer must have a well-honed talent for effective communication. Someone with average communication skills can take information and restate it in way they’re better able to understand it. Someone with above-average communication skills can take information and restate it in a way that others will be better able to understand it. Above-average communicators can take the same content and frame it many different ways (“in need of repairs” becomes “fixer-upper”). Most importantly for applications, above-average communicators can translate features into benefits.
For web-based businesses, a marketer also needs to be skilled at the following:
- Knowledge of incentives. Understanding what motivates people (to purchase, to participate, to create) is essential for marketing.
- Search Engine Optimization. Search engine traffic drives signups/sales directly, assists with referrals, and provides additional opportunities. A marketer should know how to identify what terms to target, how to find out how often people are searching for different terms, how to increase your rankings, and how ranking well for different terms will accomplish your business goals.
- Content Creation. For cash-strapped startups, being able to create interesting content is key for inbound marketing strategies to bring users. Even if you’re not trying to bring in customers, creating interesting content will get you noticed in your industry, and in the media, leading to partnership, investment, and acquisition opportunities.
- Analytics. Startups that want to accomplish their goals must be able to measure them, and they must have a marketer that’s able to test different means of accomplishing them. You can only improve efficiency by seeing what affects it, whether it’s A/B testing your site, or determining which of your marketing efforts are getting the most bang for your buck (or effort).
How do you Find a Good Marketer?
The best marketers combine passion with the ability to communicate it. A good marketer for your startup is going to be one that understands your target audience, preferably by being a member of it… unless your target market is people who are bad at marketing.
One of the best ways to find candidates is to identify the marketing people at related, but not competing, services targeting a similar demographic, and ask them to recommend someone.
How do you Determine if They Have the Skills?
The best evidence is always just that: evidence. If they can show the results they specifically generated for projects (“I increased…”, not “My company increased…”), that’s excellent.
Some questions you may want to ask in an interview are:
- How would you describe my company to a friend you wanted to use it?
- Their answer should describe benefits, from a user point of view, rather than features.
- What are two specific types of potential users you think we could better focus on reaching, and how? – or – What are two specific ways you can our product being used, and how should our marketing target people who would most use it one way?
- They should demonstrate an ability to make some kind of intelligent segmentation of your overall market into audiences that you can create specific messages or use specific mediums to reach.
- What trends do you see in our industry that we could tap into, to attract more users?
- Here they should either show you that they know the scene well, or that they’re motivated enough to do research about it. The trends they recommend tapping into should be people-focused.
Be Open to Change, but Establish Trust & Test It
A good marketer can only help you if you let them, and that may mean changing that front-page description that you think is just fine, or targeting search terms that seem counter-intuitive. But remember that there’s a reason you’re looking for marketing help: they’ve learned lessons you haven’t yet!
Work with a new marketing team member to create clear, measurable goals. Provide clear priorities for how you want different resources (their time, development time, money) used. Pursue new marketing efforts with set expectations for when and how they’ll be measured, and let the results speak for themselves.
Björn Günzel
Exchanging a hard drive with Ubuntu LiveCD and gparted, disk image created with dd
The S.M.A.R.T. monitor has been warning about imminent failure of the hard drive in my mother’s laptop, so it was time to exchange it. Since it is running Ubuntu Linux (version 9.10, Karmic Koala), I was looking for ways to create an image of the old hard disk and transfer it to the new hard disk.
My initial googling didn’t immediately yield definite results, even though I found some comments mentioning “dd”. Therefore I wanted to quickly summarize the steps I have taken in case anybody else looks for something similar.
While I found forum threads recommending a variety of tools, they were usually several years old. Therefore I wasn’t sure if the recommended tools are still state of the art. Also I preferred a disk image over using the recovery mechanisms of the backup software (sbackup or rsync), as I wasn’t 100% sure if permissions and everything would work out OK on a fresh install of Ubuntu (probably, but a disk image just seemed cleaner).
Then I found this blog article about copying a disk with dd and decided to stick with it. Other than in that article, since I didn’t have a way to connect the new hd without installing it in the notebook, I first copied the image to another external hd. Then I exchanged the internal disk and copied the image back onto the new internal disk.
To do the copying, first boot the notebook from the Ubuntu CD (”Ubuntu LiveCD”), to run Ubuntu from the CD and not from the internal hd. That way, the conents of the hd don’t change during the copy process. Booted into Ubuntu LiveCD, I quickly changed the keyboard layout in the settings -> keyboard menu (it defaults to US layout, but I have German). Then I mounted the external USB disk by selecting it in “Places” (or clicking on it in Nautilus, the Ubuntu file explorer).
Then open a shell, and create an image of the internal hd by executing
sudo dd if=/dev/sda of=/media/name_of_external_disk/image_name
The sudo might be optional, in my case I needed it because the external hd was only writable for root. If the external hd doesn’t have a name yet, you can assign one with GParted or Disk Utility (I forgot which).
This might take a while, depending on the size of the internal hd. The resulting image will be as big as the capacity of the internal hd. dd will copy the whole hd, no matter how much of it is used or not. Also dd does not give any progress reports, so just be patient.
As the article I linked to mentioned, it might be a good idea to check with
sudo fdisk -l /dev/sda that /dev/sda is the right hd (I recognized it because of the size).
Now, power down and exchange the internal hd, then boot up with the Ubuntu LiveCD again. Again, change the keyboard layout (if necessary) and mount the external hd. (I actually rebooted once because at the first time there was a hickup mounting the external hd. After the reboot it worked).
Then write the disk image back using
sudo dd if=/media/name_of_external_disk/image_name of=/dev/sda
(again, checking that sda is the right target with fdisk might be good).
If the new disk is the same size as the old one, that’s it. Otherwise, the partitions on the hd can be resized with GParted to make them use the whole disk. GParted can be started from the Ubuntu Administration Menu.
I had only one problem: the hd had a “normal” partition containting the main file system, followed by an extended partition that contained the swap partition. Somehow I couldn’t move the extended partition or the swap partition, and therefore I could not resize the main partition either. Eventually I figured that I should first resize the extended partition to fill all the remaining space. Then I could move the swap partition (which is inside the extended partition) to the end of the available space. That done I resized the external partition again to only be as big as the swap partition. After that I could finally resize the main partition to use all the remaining space (OK, except for 8MB that were left over because of alignment with the hd’s “Cylinders”, not sure if that was necessary or not). Before resizing/moving the swap partition it might be necessary to select “swapoff” for that partition on gparted, if the Ubuntu Live system has decided to use that swap space.
That’s it - again a scarily long text to describe a simple procedure.
A downside might be that it copies the whole disk, not just the used parts. Also there has to be enough space left on the external disk. Not sure if copying less could be achieved with some dd magic. I am pretty sure one could just copy individual partitions with dd, but not sure how to copy the disks partition table, master boot record and what not then.
February 03, 2010
Björn Günzel
APT, the app store for geeks
Whether they loved it or hated it, all reviewers of the iPad agreed that usability of “normal” PCs for average users is atrocious. And I have to agree: whenever I take a look at the PC of a friend or relative who is not a “computer freak”, they are always riddled with spyware and malware or at least ladden with useless software that draws away time and energy of the user (examples are “Toolbars” like the Google Toolbar or the Yahoo Toolbar). This is not only because they might have downloaded or installed bad software from questionable sources, but because even vendors or seemingly trustworthy businesses have no qualms to sell their customers. Usually a new PC is already messed up by the software the vendor has preinstalled. If not that, then the new gadget (camera, navigation system, whatever) might come with crappy software.
But I don’t want to rant about the various ways today’s PC software and hardware vendors mess up the PC experience. The point is, by many reviewers the iPad has been hailed as the savior from this hell of malware and overly complicated software. What I want to mention is that the “geeks” (computer savvy people) have actually been aware of this problem for a long time, and they have invented a solution long before Apple’s App Store. It is called APT.
APT is a front end to the package managers of some Linux distributions, most notably Debian and it’s derivative Ubuntu. By using it you can install software from a trusted repository of open source applications (trusted because it is open to peer review). It is not the only way to install software on these Linux systems, but usually if you opt to install software from another source, you end up feeling slightly icky and dirty, as you should.
To avoid icky spyware, malware and so on, just stick to the official repositories of your Linux distribution. It is as simple as that - no debilitating iPad required.
Now I have to go ahead and admit that I am not even that well versed with Linux and apt. I know how to find, install and remove programs, and some other internals that are not really important. But isn’t that kind of the point: you can use Linux and apt even if you are NOT a “computer freak”. There are simple front ends that enable you to use it without using the command line. The main difference to Apple’s App Store is that it is still open - using apt is entirely optional, but recommended.
Of course, things on Linux don’t always run as smoothly as with a Mac (although I have whole lot of things to complain about with Macs, too). Not all the software in the repositories is very polished or even bug free. But neither is software in the app store.
As for stability, it helps to look at the hardware Apple has on offer: presumably they only actually sell three or four different kinds of computers (a laptop, which includes the iMac and the Mac Mini which are also based on laptop internals, the Mac Pro, and the iPhone/iPad). Most Linux distributions try to support a far wider range of hardware and therefore are less optimized for any specific piece of hardware. But it would be possible even today to launch computers with a Linux distribution optimized just for these computers. They should have no troubles achieving adequate stability.
Anyway, maybe you get the idea, maybe you don’t, all I want to say is this: the App store model is NOT our only salvation.
David's Computer Stuff Journal
Italy vs Google
I'm starting to notice a pattern here:
- Google executives are on trial because some sorry excuses for human beings picked on a retarded person and posted the video to youtube: http://news.bbc.co.uk/2/hi/technology/8115572.stm - this one is simply preposterous. Going after the execs of a company who did nothing to aid, abet, condone or in any way facilitate the abuse in question is absurd, and if extended to other industries would mean that you could pretty much attack any company whose products happened to figure in a crime somehow. Kitchen knives, hunting rifles, golf clubs, even automobiles would seem fair game.
- Italy is going after "user generated content" sites like Youtube and wants to force them to register with the government if they wish to operate: http://arstechnica.com/tech-policy/news/2010/02/italy-preparing-to-hold-youtube-others-liable-for-uploads.ars
-
And last but not least, this hit piece in the normally respectable Corriere della Sera: http://www.corriere.it/economia/10_gennaio_28/mucchetti_4de4be8a-0be8-11df-bc70-00144f02aabe.shtml
- it's in Italian, but the gist of it is that Mr Mucchetti really has it in for Google because they operate out of Ireland in the EU, whereas he believes they should be registered in Italy as a publisher, and subject to Italy's myriad rules, regulations, and, of course, taxes regarding publishing. Despite, well, not really publishing much of anything themselves. He mentions "tax evasion" charges that had been considered, because the Italian division of Google is not where the adsense revenue in Europe goes. I suppose he figures that since the ads are bought by residents of Italy, the money should somehow stay in Italy? He also huffs and puffs about Italy's antitrust laws, which, in the same piece, he admits were created with the express purpose of not touching existing companies (the market share limit was set higher than the share of the largest existing company). Perhaps he would do well to reflect on political schemes and carve-ups like that and think about why companies like Google go to Ireland, rather than Italy. He also makes some quick mentions of network neutrality, and rambles on a bit about how it's a battle between the "Obamanian, Californian, search engines" versus the telecommunications industry, in "the rest of the world and above all in Europe". And of course he uses a liberal sprinking of keywords like "globalization", "multinational corporations", and "deregulated" to attempt to paint Google in terms of being a big, evil company throwing its weight around. One wonders if there aren't more pressing problems with the Italian media industry, such as the prime minister owning a large chunk of it?
One way of seeing things is that politicians and businessmen in Italy noticed Google was actually making quite a bit of money, and even if they don't quite understand this internet thing, they want some of the loot.
And while Google certainly is becoming big enough to be cause for worry and discussion, the moves against them in Italy do not seem anything like a rational response calculated to offset severe failures in the market.
In any case, it will be interesting to see what happens. Maybe, after China, we'll see Google quit Italy as well?
February 02, 2010
Gabriel Weinberg's Blog
/usr/bin/nice is your friend
February 01, 2010
Gabriel Weinberg's Blog
Alexis Ohanian from reddit on Getting Traction
This is the fifth episode of Traction, an interview series I'm doing with successful entrepreneurs that demystifies how startup companies get traction for their businesses. Getting traction is the process of acquiring users and customers, and more generally significantly growing businesses.January 31, 2010
Gabriel Weinberg's Blog
Smaller bills are on the path towards bi-partisanship
A moment for bi-partisanship has opened.
Reaction to State of the Union
Pundits seem to think Obama's speech was partially aimed at independents, i.e. the center. As someone who sort of fits that bill, here were my reactions.- What if. I liked a lot of the proposals that I think were targeted at my political demographic, e.g. zero capital gains taxes, more nuclear power, small business credits, budget restraint, etc. However, I kept thinking why didn't all of these thing happen over the past year, when they arguably would have had a bigger impact on the economy.
Then I got to thinking they are somewhat bi-partisan proposals, at least in recessionary times, so what would have happened if Obama had led with these last year? Of course it is an unanswerable question, but you have to wonder if he had done it would he had started off on a better footing and then would have been more able to achieve a real bi-partisan, or at least more bi-partisan health care reform outcome. - Too long. I realize most State of the Unions are super long, but it just seemed to drag on. I would love to see Obama or another president make a shorter, more themed speech as opposed to really ten different speeches on every major political topic. It seemed he was just trying to cover all the bases. The worst was at the end he threw in like three sentences on immigration with no proposals or anything. He might as well just said the word immigration, paused, and moved on.
- Liked the casual parts. I really appreciated the parts where Obama's personality shone through. That is, you could tell some of it was his own words. It bothers me how speech writers are so prevalent.
- Bi-partisan yet not at the same time. I thought the tone on partisanship was weird. He would call for bi-partisan effort and then 30 sec later attack people in a partisan way. And I thought some of his attacks were simplified to much in the same way he attacked the media for doing.
- Supreme court thing was strange. The moment where he called out the Supreme Court and all of Congress basically jeered at them while they just sat there was strange, and I thought inappropriate.
Obama, Ryan, bi-partisanship and changing Washington


January 27, 2010
Gabriel Weinberg's Blog
Top user-generated comments about the Apple iPad
nally apple gives me what I wish." (522 points)
"Netbooks are just cheap laptops!" - Steve Jobs;
The iPad is an EXPENSIVE netbook!" - The internet" (277 points)
My netbook weighs only 2 pounds, has the same screen size, and gives me a full keyboard. Plus it's a full blown OS that lets me do just about anything I want with it, including such basics as flash. Oh and it cost half the price. All you're getting with the iPad is a neutered computer and you're saving a half pound of weight. I
'm generally a fan of Apple, and I love my iphone, but they screwed the pooch on the iPad badly IMO." (215 points)
doctor_ship: "
What this device does is extraordinary. You can browse the web with it.
That's revolutionary." (201 points)
How-to fix skype video when party can't see the other
January 25, 2010
David's Computer Stuff Journal
Flippa experiment
I decided to try a little experiment with Flippa.com, a site where you can auction off domains or web sites.
I put http://www.innsbruck-apartments.com up for auction:
http://flippa.com/auctions/83341/Innsbruck-Austria-rental-listing-site---Ski-Season
We'll see how it goes and whether the site is worth using for other sites that I'd like to sell on.
It's a good test case, because it's a site I threw together years ago simply to aid our search for a new apartment in Innsbruck, and then requested by friends.
Mike Coyle's Weblog
My new Eris, or a Tale of Two Droids
My Blackberry Curve (8330 on Verizon) decided to call it quits last week, so I was forced to go phone shopping at the worst of times: One week before a major Apple product announcement, and with the Google Nexus One coming to Verizon sometime this quarter.
I purchased a Motorola Droid, probably because I am easily influenced by flashy TV commercials. The Droid has a beautiful screen (protected by Gorilla Glass), amazing GPS navigation capabilities, and a very nice web browsing experience. Heck, you could even use the camera's LED flash as a flashlight. It was a bit heavy, and I didn't love the sliding keyboard, but I could easily overlook those issues.
In practice, however, I found the Droid to be fundamentally unusable as a phone for day-to-day use. For example, hanging up a call could be a 5-step process:
- Hit the power button to wake up the device
- Unlock it by entering a "connect-the-dots"-style password
- Navigate to the home menu
- Press the Phone application icon
- Hit the End Call button on the Phone application
It seemed like the Droid was designed to be a mobile Internet device that could also be used in a pinch to make phone calls. I used it for a day and a half, but then exchanged it for an HTC Droid Eris and haven't looked back.
By most accounts, Eris is the lesser, budget-oriented phone in VZW's Android lineup. Eris currently runs an older version of Android OS (1.5 vs 2.0), has a slower processor, a lower-resolution screen, weaker battery, etc., when compared to the Moto Droid.
But despite its relatively weaker technical specs, I've found Eris to be a far superior user experience to that offered by the Droid. This is due in great part to HTC's Sense UI which builds atop the stock Android interface. The Eris is first and foremost a phone, with physical call send/end buttons. Eris is also thinner, lighter, and less expensive than the Droid. I've found the browser pretty snappy over Wi-Fi, and plenty fast over 3G.
For anyone on Verizon who needs to buy a business-oriented smartphone before the next-gen devices are available (i.e. the Nexus One, BlackBerry Tour2, and possibly the iPhone), don't overlook the Eris.
January 23, 2010
Gabriel Weinberg's Blog
Google traffic spikes

- Google was testing some major change and the site benefited during that period.
- The site was on the edge of some filter and for some reason passed it and then went back down.
- Google specifically was testing this site to see its impact on user behavior.
January 20, 2010
Gabriel Weinberg's Blog
Goal: 100+ posts in 2010
- the Philly startup scene
- aspects of being a single founder
- startup accounting
- startup formation
- interviewing
- SEO
- search engines
- investing
- MIT
- being a stay-at-home dad
- Perl
- PostgreSQL
- FreeBSD
- nginx
- solr
- memcached
January 19, 2010
Gabriel Weinberg's Blog
My Apple Tablet (iSlate) Use Case: Baby Following
January 17, 2010
Gabriel Weinberg's Blog
Baby Bath Hacks
- Babies are already clean. Eli doesn't really get that dirty, especially earlier on when he wasn't eating anything besides milk. Before he could sit up, he didn't so much like the bath, so we started doing it rather infrequently upon need, a little less than once per week. He gets dirty mostly around his diaper and mouth, which gets cleaned continually from baby wipes.
- Get in the bath. Since being able to sit up, Eli has loved baths. However, he doesn't really like being anywhere by himself. Getting in the bath with him solves the problem and can extend bathing for a long time.
- Fill the tub up only a few inches. When you get in the bath, you have a tendency to default to fill it up higher. But the higher you fill it up, the more unwieldy the baby becomes. If you keep it only a few inches, they can have fun and be stable at the same time. The problem is it gets cold quickly, which brings me to my next point.
- Separate the bath into two sections. If you get in the bath, you can position yourself in such a way where the water is divided into two sections with your body being the separator. Then you can sit near the faucet and turn on the hot water to a drip. The results are you get to be in hot water and your baby can be in warm water, and you can regulate how warm it gets while remaining comfortable. You also get to guard the faucet, which can be dangerous.
- Water bottles. Water bottles make great bath toys. Eli likes to chew on them and likes how the water flows over his hands when you pour them out. They also can serve as parent bath toys. If you get cold in the few inches of water, you can get a bigger bottle and keep pouring it on you from the hot water section. You can also use the bottle to wash off soap from the baby's hair.
- Toy wall. Eli likes to rotate bath toys. One activity that keeps him interested and busy is to take the bath toys and line them up on the side of the bath, making a toy wall. He will pull them down, and then you can line them up again.
- Toy biting. Eli also likes to bite toys. But he likes it even more when his parents bite them. He loves grabbing them from our mouth and then putting them back in. Fun.
January 14, 2010
Gabriel Weinberg's Blog
Avatar: is assimilation of the natives bad?
January 13, 2010
Gabriel Weinberg's Blog
Would we (Earth) show up in our universe's stats pages?
January 12, 2010
David's Computer Stuff Journal
Rough Estimates of the Dollar Cost of Scaling Web Platforms - Part I
I have been pondering the idea behind this article for a while, and finally had a bit of time to implement it.
The basic idea is this: certain platforms have higher costs in terms of memory per concurrent connection. Those translate into increased costs in dollar terms.
Nota Bene: Having run LangPop.com for some time, I'm used to people getting hot and bothered about this or that aspect of statistics that are rough in nature, so I'm going to try and address those issues from the start, with more detail below.
- Constructive criticism is welcome. I expect to utilize it to revisit these results and improve them. Frothing at the mouth is not welcome.
- There is something of a "comparing apples and oranges" problem inherent in doing these sorts of comparisons. As an example, Rails gives you a huge amount of functionality "out of the box", whereas Mochiweb does much less. More on that below.
- I am not familiar with all of these systems: meaning that I may not have configured them as I should have. Helpful suggestions are, of course, welcome. Links to source code are provided below.
- You can likely handle many more 'users' than concurrent connections, which means multiple browsers connecting to the site at the same time.
- Programmer costs are probably higher than anything else, so more productive platforms can save a great deal of money, which more than makes up for the cost of extra memory. There's a reason that most people, outside of Google and Yahoo and sites like that, don't use much C for their web applications. Indeed, I use Rails myself, even though it uses a lot of memory and isn't terribly fast: I'd rather get sites out there, see how they do, and then worry about optimizing them (which is of course quite possible in Rails).
Methodology
All tests were run like so: my new laptop with two cores and four gigs of memory was used as a server, and my older laptop was used to run the ab (Apache Benchmark) program - they're connected via ethernet. I built up to successive levels of concurrency, running first 1 concurrent connection, 2, 10, and so on and so forth. The "server" computer is running Ubuntu 9.10, "karmic".
Platforms
The platforms I tested:
- Apache 2.2, running the worker MPM, serving static files.
- Nginx 0.7.62, serving static files.
- Mochiweb from svn (revision 125), serving static files.
- Jetty 6.1.20-2, serving static files.
- Rails 2.3.5, serving up a simple template with the current date and time.
- PHP 5.2.10.dfsg.1-2ubuntu6.3, serving up a single php file that prints the current date and time.
- Django 1.1.1-1ubuntu1, serving up a template with the date and time.
- Mochiweb, serving a simple template (erltl) with the date and time.
- Jetty, serving a simple .war file containing a JSP file, with, as clever observers will have surmised, the date and time.
As stated above, it's pretty obvious that using Rails or Django for something so simple is overkill:
Better Tests for the Future
I would like to run similar tests with a more realistic application, but I simply don't have the time or expertise to sit down and write a blog, say, for all of the above platforms. If I can find a few volunteers, I'd be happy to discuss some rough ideas about what those tests ought to look like. Some ideas:
- They should test the application framework with a realistic, real world type of example.
- The data store should figure as little as possible - I want to concentrate on testing the application platform for the time being, rather than Postgres vs Sqlite vs Redis. Sqlite would probably be a good choice to utilize for the data store.
- Since this first test is so minimalistic, I think a second one ought to be fairly inclusive, making use of a fair amount of what the larger systems like Rails, Django and PHP offer.
- I'd also be interested in seeing other languages/platforms.
- The Holy Grail would be to script all these tests so that they're very easy to run repeatably.
Results
With that out of the way, I do think the results are meaningful, and reflect something of what I've seen on various platforms in the real world.
First of all, here we look at the total "VSZ" (as ps puts it) or Virtual Size of the process(es) in memory. Much of this might be shared, between libraries, and "copy on write" where applicable.
The results are impressive: Rails, followed by Django and PHP eats up a lot of memory for each new concurrent connection. Rails, which I know fairly well, most likely suffers from several problems: 1) it includes a lot of code. That's actually a good thing if you're building a reasonably sized app that makes use of all it has to offer. 2) Its garbage collector doesn't play well with "copy on write". Which is what "Enterprise Ruby" aims to fix. Django and PHP are also fairly large, capable platforms when compared to something small and light like mochiweb.
That said, excuses aside, Erlang and Mochiweb are very impressive in how little additional memory they utilize when additional concurrent connections are thrown at them. I was also impressed with Jetty. I don't have a lot of experience with Java on the web (I work more with J2ME for mobile phones), so I expected something a bit more "bloated", which is the reputation Java has. As we'll see below, Jetty does take up a lot of initial memory, but subsequent concurrent connections appear to not take up much. Of course, this is also likely another 'apples and oranges' comparison and it would be good to utilize a complete Java framework, rather than just a tiny web app with one JSP file.
So what's this mean in real world terms of dollars and cents? As your Rails application gets more popular, you're going to have to invest relatively more money to make it scale, in terms of memory.
For this comparison, I utilized the bytes/dollar that I'm getting for my Linode, which works out to 18,889,040.85 ($79.95 for 1440 MB a month).
As we can see, to have a similar amount of concurrent users is essentially free for Mochiweb, whereas with Rails, it has a significant cost. This information is particularly relevant when deciding how to monetize a site: with Erlang and Jetty it would appear that scaling up to lots of users is relatively cheap, so even a small amount of revenue per user per month is going to be a profit, whereas with Rails, scaling up to huge numbers of users is going to be more expensive, so revenue streams such as advertising may not be as viable. It's worth noting that 37 signals, the company that created Rails, is a vocal supporter of charging money for products.
There's another interesting statistic that I wanted to include as well. The previous graph shows the average cost per additional concurrent user, but this one shows how much the platform costs (using when there is just one user, so it acts as a sort of baseline:
As we can see, Jetty is particularly expensive from this point of view. The default settings (on Ubuntu) seem to indicate that, for instance, the basic $20 a month Linode package would not be sufficient to run Jetty, plus a database, plus other software. I think that the Apache Worker number is off a bit, and may reflect settings made to handle a large number of connections, or perhaps a different MPM would make sense.
Source Code / Spreadsheet
The spreadsheet I put together is here: http://spreadsheets.google.com/ccc?key=0An76R90VwaRodElEYjVYQXpFRmtreGV3MEtsaWYzbXc&hl=en
And the source code (admittedly not terribly well organized) is here: http://github.com/davidw/marginalmemory/
January 11, 2010
Gabriel Weinberg's Blog
Will single founders please stand up?
- We don't often get funding and the press/recognition that comes with it.
- Entrepreneurs are discouraged from being single founders in the first place.
- Most people, even most startup founders, aren't equipped to be single founders.
- Intellectual curiosity
- Independent thinking
- Analytical thinking
- Likes to work
- Works efficiently
- Dedicated
- Emotionally stable
- Ability to focus
- Responsible
- Integrity
- OK with no salary for a period of time
- Shared financial/exit goals
- Shared product areas
- Compatible personality