Popfly - now using Cacheman
This has to be the first time one of my pet projects has proven remotely useful so I'm pretty pleased :-)
Slicehost
I spent a lot of my weekend moving my website from Dreamhost to Slicehost. Slicehost is a VPS provider with a platform based on Xen. This was not really due to any problem with Dreamhost (they're really good and I would recommend them instantly) but more due to how good Slicehost was. In fact, I have to say that Slicehost, at this early stage, is by far the best host I've worked with.
Shared hosts vs Virtual Private Servers vs dedicated servers
A quick primer on shared hosts vs VPS vs dedicated servers (most of you can probably skip this section - but you'll be surprised how many people confuse these).
A shared host, like the name implies, means that you get a machine that is shared. Your website will run on the same box as several other websites with some security ACLs in place to make sure you don't trample over someone else's files. Depending on the host, your access to the machine might range from just FTPing files over to a shell account where you can log in and run programs yourself. However, you'll never have root/administrator access to the box and you'll usually need to go through cPanel/some-really-ugly administrative control panel to request changes to your configuration or setting up new software. However, these security settings can't really protect against other type of bad behavior from individual websites. For example, if your website happens to be on the same machine as another website undergoing a Digg/Slashdot-effect, your performance will be affected as there is no real effective throttling mechanism. Most shared hosts will either kill the website hogging resources or perform some manual magic, like moving it to a different box.
A dedicated server is the other end of the spectrum - you get a full machine to yourself. Depending on which company you work and/or how much money you pay, this might be from a low-end provider or in a colo facility or in a big datacenter along with thousands of other boxes. You don't share the machine with anyone and you can party on it to your heart's content. However, since these require a 1:1 mapping between customer and hardware box, they're typically expensive.
A VPS falls in the middle. They offer you most of the benefits of dedicated servers (full root access on the box) without the 'bad-neighbour' problems of shared hosts. They tackle the latter problem by using some form of virtualization and use a hypervisor or a virtual machine to act as a sandbox and throttle resources. In Slicehost's case, they use Xen. In the screenshot below from my slice, you can see the custom Xen kernel in action as well as the 256mb limit imposed on my slice though the actual underlying hardware probably supports multiple GBs.
Some random notes
- I picked the base 256mb $20/month slice. I was tempted to get a beefier configuration but forced myself to hold off for now. This is also more than double what I was paying Dreamhost
- Slicehost has an awesome feel of community and sincerity around it. Their documentation and wiki are great, they know their stuff and they seem genuinely *honest*. That's hard to find in the overselling-world of web hosting.
- I installed Ubuntu 7.10 on my slice. I would really like to have installed Windows Server 2008 but I doubt that Slicehost will offer that as an option anytime soon. :-)
- I'm running lighttpd as my web server. I ran nginx for some time but switched to lighttpd when I needed to get mercurial to talk to my web server over fastcgi. Nginx rocks but I was just too lazy to figure out the spawn-fcgi magic to get it to talk with mercurial (and the cgi options seems unreliable).
- After a lot of iptables and lighttpd configuration file hacking, I realized how much I had been spoiled by MMC add-ins back in Windows land. I wish there was a way to remote-connect an configuration GUI over SSH (I'm thinking of the ability to connect to remote servers through MMC).
- I can't wait for the day when I get mod_rewrite style rules right at the first attempt. Or on the tenth attempt. On a tangential note, I like nginx's mini-language inside the configuration file.
- I'm writing a Python web app and I'm bewildered by the options for running it. mod_wsgi, mod_python, fcgi, etc. For every blog post with some graphs supporting one option, I can find another saying the exact opposite. I'm also amused at how a lot of people measure server performance under load by essentially hitting the server in a tight loop. All the interesting stress related problems only show up after a few days (as I painfully found out while writing cacheman).
- Mercurial vs Git - Git's poor support for Windows was a deal breaker for me. Now I just need to find a Mercurial<->TFS bridge :-)
Running Ubuntu on Windows Server 2008 Hyper-V
If you're trying to install Ubuntu 7.10 (either server or desktop) on a VT-enabled machine, you'll be probably get stuck at the "Loading..." screen. If you're interested in the gory details, check out this bug - the issue seems to be around emulation of real mode instructions and the graphics instructions that ISOLinux uses to boot.
The fix is simple - get the patch from this thread and patch your ISO images (the patch makes a small change to your isolinux.cfg.
Ubuntu is now purring away happily on my Win2k8 box :-)
Cacheman update (0.0.2)
There are no new features in this release but a *ton* of bug fixes. I had fun stomping out several race conditions that had crept into the code. I've also tested it on a bunch of diverse environments (single-core and multi-core, x86 and x64, Windows XP/Vista and Windows Server 2003/2008) so you shouldn't see some of the OS specific issues that were present in the last release.
I would like to thank Ayende for taking the trouble to find and report a lot of the bugs in the last release. Thanks Ayende!
Archives
November 2004 January 2006 June 2006 July 2006 August 2006 September 2006 October 2006 November 2006 December 2006 January 2007 February 2007 March 2007 April 2007 May 2007 June 2007 July 2007 August 2007 September 2007 October 2007 December 2007 January 2008 February 2008 March 2008 April 2008