Searching for the ultimate VPS provider

I change hosting providers quite frequently nowadays.  I moved to BlueHost about two months ago and now I've just moved to Linode.

BlueHost is absolutely the best shared hosting provider in my opinion but there are several things that I've missed, such as:

  • providing a Subversion repository through HTTP
  • doing resource-intensive shell operations without the fear of being kicked out
  • administering my server without going through zillions of CPanel pages

It's not hard to realize that it's not possible to do the above things on a shared hosting account.  A dedicated server would have been truly overkill for my needs so I opted for a VPS account.

There are two main kinds of VPSes: XEN and OpenVZ.  I wasn't conscious about the major differences between them for a long time, but I am now.  You can do your research, but my conclusion is that XEN gives you much more freedom, because it's a true paravirtualization technology, not an OS-level technology like OpenVZ.  XEN may have slightly more overhead, but it makes you able to use the OS of your choice, manipulate iptables, load your own kernel modules and such.  Using my preferred OS (Ubuntu) is certainly a major benefit for me as most OpenVZ providers offer you CentOS which I cannot stand personally.  OpenVZ may have the advantage of providing "burstable" RAM that is temporarily usable RAM that the others don't use momentarily, but I don't like the concept because it may be the cause of nondeterminisic errors upon memory overruns.

Linode has very good prices and they provide a very advanced custom-developed web interface which is ahead of their competitors.  You can install your OS image of choice in a matter of seconds and they also provide a unique feature: lish, the Linode Shell which runs at the hypervisor level and makes you able to log in to your VPS even when something terrible happens, like sshd gets killed.

I'm very satisfied with their service so far and can only recommend it for everyone.  I could have choosen Amazon EC2 as the ultimate VPS, but I see Linode as their smaller counterpart that is more appropriate in scenarios where less resources are sufficient.

You may also want to choose


as your VPS provider

Searching for the ultimate shared web hosting service

I've been using the services of MediaCenter as my web hosting provider for 3 years and I cannot say a bad word about them because they provide a decent service, but I've realized recently that I want more, specifically:

* SSH to do advanced system administration and secure file transfer
* Virtual Host configuration without the need to contact customer support
* Manipulating DNS records without the need to contact customer support and being able to use a name server other than theirs

The last few days were very demanding because I wanted to find the best shared hosting provider that fit the above needs.

The toplic of managed vs unmanaged hosting really hits home for me. Most users are not technically savvy so they prefer having a customer support to hold their hands, but it's an entirely different situation for me who uses computers since the age of 6. I don't wanna mail back and forth with anyone just to make something happen. As huge companies wanna satisfy the masses and clueless users constantly mess up their DNS records and contact the customer support, companies decide to disable manual DNS record manipulation and make the job of novices easier and mine harder. This is a common pattern to see, not only about DNS specifically, but about all services.

SSH is a serious filtering factor. There are very few providers who offer SSH because of the considerable security risk involved. There are about a dozen of them who seemed adequate. After further filtering them based on their hosting plans I could remove most of them who 1) offered very few addon domains, 2) who had all hosting plans longer than one month (all of them offer money back guarantee, but I don't trust anyone for the first time) and 3) who had lots of very bad reviews on a lot of site.

Review sites is a mixed bag. I think that the whole peer review concept is useless without some kind of metrics, like a trust network, just as Advogato does or like the online auction sites do. Unfortunately none of the review sites have any metrics so how could I be sure that their reviews are honest are not made by some marketing people posting good or bad reviews? There's no way to tell, but my method is to look for reviews that look pretty unique and google some parts of them. If I don't find any duplicates that's a good sign that it's a genuine review. I think this method is pretty reliable because most people are too lazy to post their reviews on multiple sites. I don't know whether I'm right, but I don't have any better ways to tell which reviews are trustable.

One should be very careful when evaluting providers. Nothing is unlimited and nothing is free, no matters what they state on their front page. You have to read their ToS no matter what! You can easily find out that they don't offer the money back guarantee - which they are so proud of on their front page - for shared hosting packages.

A2 Hosting seemed very promising and I was flirting with their hosting plans for a while so I tried them first. Everything seemed pretty fine until I realized how poor their foreign bandwith is. It's about 30 kbyte/sec, not something that I expected. They use CentOS, and the jailed shell was rather limited, but I could find a Midnight Commander package and make it work. Unfortunately there was no subshell because they don't offer devpts in a jailed environment. I left them because of their poor foreign bandwidth.

Ubiquity Hosting Solutions was my next try. They seemed to offer everything I needed based on their hosting plans. As I issued "who" from their command line I realized how few power user were present. A typical server of a big hosting provider has about 4 Xeon processors with 16G RAM and hundreads of user, but there were only about 2 or 3 users logged in through SSH. I could also detect a major security hole which allowed me to see the home directories of other users on the server. I could also see some public_html directores and the configuration files of various CMSes managed by other users. I could hack some sites, but I rather reported them the problem and they solved it within 24 hours. Unfortunately after realizing that they don't allow me to use any other nameserver but theirs, I moved on. This goes back to the sad topic of managed vs unmanaged hosting.

Webintellects was my next try. I was their customer for about two hours while I could easily figure out that they provide a ridiculously limited shell environment without procfs and sysfs.

Bluehost was my last hope. I don't think one can make up any company name that is more boring than theirs. I was more than surprised when I figured out that they provide the most powerful SSH of all times. I could build Midnight Commander from source, all the developer packages were present. One should be careful however because according to their ToS they can cancel the service if one overuses processing resources so I stopped make a several times and later continued. Bluehost provides devpts, so subshell works magically with the Midnight Commander. Their foreign bandwidth is also adequate so my journey of finding the ultimate shared hosting provider has succeeded.

After going through all the hassle one might ask me whether I am satisfied. Well, BlueHost provides everything one can ever ask from a web hosting provider, but there are limitations in such an environment. The one thing I'd like is to use SVN through HTTP, but I'm not allowed to use DAV with Apache on their servers. I think the next step is going to be a VPS. KickAss VPS has the best price and Business Services also seem promising, but I'm a little bit sceptical because they don't provide dedicated resources, neither compute time, nor bandwith. I don't wanna move to a VPS just to have SVN thorugh HTTP. Currently I use the services of SourceRepo for my SVN needs and I may move on to a VPS eventually.

You may also want to choose
Bluehost logo

Disclosure: I recieve compensation for this referral.

Update (2009-08-17): Now it is absolutely clear to me that Bluehost is ahead of the rest regarding shared hosting. Matt Heaton, the CEO of Bluehost have some incredible insights about performance issues in shared hosting environments and they're working on the kernel level to solve these problems. Here are his relevant posts so far:

The guy have been done a massive amount thinking about these issues and he deserves success.

The three things that could be better in Python

2008-11-02 update: The legendary Joe Shaw made me realize (in the comments below) that there's a (very unintuitive) ternary operator for Python from Python 2.5 which one can use as:

a if condition else b

Python is my favorite scripting language. I think it's almost perfect and there are almost no things that could be improved in it. Almost...

  • There's no ternary operator in Python which I'd find very useful, but the designers probably felt that it's not clean enough. Fortunately one can make something in Python that resembles the ternary operator:
def T(condition, a, b):
    if condition:
        return a
        return b
  • True and False must be written with capital letters. I realize that True and False are objects in Python but it's impractical to write them with capital letters. One can easily solve this problem:
true = True
false = False
  • Strings are not Unicode by default and one has to prefix them with the "u" letter to make Python interpret them as Unicode strings. Well, that'll be solved in Python 3 if I remember correctly.

Programmer vs. Developer vs. Architect

I think it's important to express ourselves clearly when speaking about various IT professions because they represent dramatically different skillsets and mental models. This post have born out of my frustration to hear clueless people misnaming various professionals and it can be an eye opener for some. The descriptions below are not standardized by any means. I personally use these namings in the way I do and don't wanna enforce anyone to use them this way.

  • Programmer: I consider programming a pretty primitive transformational process. The related problems are rather easy to solve, like creating a simple Unix utility, think about cat or wc. Programmers are not necessarily clueless, but they often type before they think and many times dont' have any ideas about how resource intensive their code is. Most newbies are happy when succeeding at solving a simple problem and don't think about optimizing their code or cleaning it up. They think in terms of code. (I admire beautiful code, but it's all they can see.)
  • Software Developer: I see developers as knowledgable people who have clear mental models in their head about the systems they're working on. They usually know design patterns, can create well-designed class hierarchies, understand the algorithmical complexity behind their code and the framework they use and can develop solid applications. They think in terms of the structure, solidity and elegance of the solution.
  • {Software or System} Architect: I think of architecting as assembling complex components into a whole that works in an extremely realible and scalable manner. The various components are usually scattered across hosts which may form clusters in a network. It's not really about implementing low-level algorithms, but rather knowing service interfaces and the high-level mechanics of the services themselves. By services I mean SOA components, and various server applications, like webservers, application servers, message queing systems and so on. Architects are very critical thinkers who mostly think in terms of services, architecture, interfaces and bottlenecks.

Great videos!

I've watched some great videos on Google Video in the last few days: site improvements

I've made loads of improvements to recently and I'm very excited about them!

  • Added a completely new, shiny main page which is composed of two paragraphs, one for English and one for Hungarian. It's maybe a bit dense, but it's certainly very informative.
  • Integrated my Google Reader shared items under the title "News" which you can see on the top navigation bar. I've previously blogged about the news I found interesting and I'm a bit reluctant to store my shared items in the cloud, but it's extremely productive to comment and share the news with Google Reader. I hope I'll be able to save my shared items in the future.
  • Installed a parallel WordPress for my new Hungarian blog which you can also find through the above mentioned navigation bar. It was quite a challenge as WordPress is not designed to host parallel blogs and I didn't want to use WordPress MU, because it seemed to me that it lags behind WordPress. I've succeeded to solve the problem by setting up a symlink farm and reusing the wordpress and wp-includes directores and hacking the Beeblebrox theme file to include some language translations.

Links for 2008-10-29

I read my feeds on a semi-regular basis of about two weeks. It's a pretty intensive process because I watch about three dozen feeds, but it always pays off being well informed.

  • SourceForge has been redesigned which is a perfect example of how to screw up a site of great usability. I'm astonished to see how bad it became. I'm not a usability engineer, but it's clear to me that it's a mess and I can't believe that the largest open source software repository on Earth doesn't have any decent usability folks.
  • Ubiquity looks like an extremely powerful tool for streamlining various web related tasks. Aza Raskin basically took the core idea of Enso and transformed it to work within Firefox which makes much sense to me in a web-centric world.
  • How To Become a Better Programmer by Not Programming - I personally code less and read more nowadays. I also manage the technical side of Wondeer and my management role gets stronger and stronger. Architecting Wondeer is a pleasurable challenge, it takes different level of skills than developing small applications.
  • How to Ignore Marketing and Become Irrelevant in Two Easy Steps is one of the most interesting talks I've ever seen on the topic of brand psychology and marketing. Did you know that it takes one generation to change people's mind about a brand that have made a terrible image?
  • 10 Most Sought-after Skills in Web Development - Good compilation!
  • It's pretty refreshing to see truly creative designs, although I think that some sacrifice usability.
  • Banshee has been ported to OSX and work is underways to port it to Windows. I'm happy to hear that because there's a great potential in cross-platform Mono applications I believe. Your application gets more popular this way, you get more contributors and your work can be enoyed by many more people. It's also a great way to build a migration path to Linux for users.
  • Extreme JavaScript Performance - It seems that Chrome's V8 engine is not the fastest JavaScript engine anymore. I'm happy to see that JavaScript gets transformed from an interpreted to a compiled language. This will empower web developers to do computation-intensive stuff on the client side making web applications conquer the world.

How to build extremely responsive applications

  • All I/O happens in background threads within Chrome. I think it's the only right approach to take when building perfectly responsive applications.
  • Synchronous I/O is never ok, says Havoc Pennington and he's absolutely right. Even if one uses the native VFS API of his/her beloved platform things could go wrong because not only disks are slow, but there could be various abstraction layers beneath that can slow it down further, like RAID mirroring, encrypted block devices, slow or unreliable network connections in case of networked filesystems and who knows what else.
  • The future is multithreaded anyways so it's time to learn parallel programming on a deeper level. I think that the Parallel FX Library may be the best way to do that.

The New Era of Web Development

The web will never be the same.

If you asked me about one or two years earlier whether I consider the web as a serious application platform my answer would be a definite no-no. I couldn't see the real potential in the web because all I saw was a couple of messy technologies not designed to build serious applications upon them and I was right about that in a certain degree. The web was designed to serve static documents, that's probably all that Tim Berners-Lee have had in mind when creating HTML. No one would ever think that the web would evolve to what it is today, that client side scripting, cascading style sheets, the document object model and various related technologies evolve to such an advanced level that it makes developers able to create extremely sophisticated applications on top of it that can outperform their rich client counterparts.

Add Cloud Computing to the mix and you have your own datacenter so you can infinitely grow your application as the need arises. I'm very surprised that some tech leaders think Cloud computing is a hype, because it makes me question their ability to make informed decisions.

jQuery is my most beloved piece of the big equatiation of the new web. Its semantics is so powerful that I'd rather call it a metasyntax on top of JavaScript. DHTML development sucked in former times and I admit that browser bugs and icompatibilities didn't vanish, but jQuery powered development is a parallel universe that's a more productive, fun and friendlier place than it ever was. It must be pretty clear nowadays that jQuery is the #1 JavaScript library on the planet as more and more big companies tell us that they're using it and integrate it into their own frameworks. I think John Resig is a green alien skillfully masking his real identity, coming from the space with the goal of taking over the world of DHTML development.