It's been a while since I began work on the new version of AddedBytes.com. There was a lot to do. I had a few specific aims for the move:
- New Platform: bBlog, though it had served me well, was no longer being updated. The version I was running was hideously out of date, fairly bloated, and a pain to maintain by the end. It was also causing problems for the VPS it was running on.
- New Host: The site was outgrowing the JaguarPC VPS it was on, and was suffering downtime. I wanted more control over my own hosting and an opportunity to learn more about hosting my own site. So a self-managed VPS was on the list.
- New Design: The old design was thrown together pretty quickly after the incident with the trademark police. I wanted something brighter, cleaner and more spacious.
In no particular order, here are a few useful (hopefully) tricks I learned along the way:
The site uses HTML 5, at least in a basic fashion - <header> tags, that sort of thing. I like a lot of what HTML 5 promises, but so far I'm not sure what the advantages are to you, the reader. Semantic improvement is great, but many of the advantages of HTML 5 seem to be in areas that I just won't be using - audio, video etc.
There are a bajillion hosts offering everything under the sun to anyone with a dollar to their name. The small print for each is, it seems, a bit of a minefield. What's the point in offering unlimited bandwidth when CPU usage is capped at such a low level that 6 people visiting on the same day will put you over the limit?
Equally, what's the point of hiring support people without basic technical hosting knowledge? In the course of my regular work, I've encountered support staff at one major international host who told me that it was normal for a site to go offline for three days while it was moved from shared hosting to a VPS. Three days to move an ecommerce site? Normal? Last time I had a site moved by a host it happened in off hours, cost nothing and there was no downtime. The same support staff have told me that it is impossible to host a site with one company and the DNS with another.
I'm in danger of veering off into ranty territory here, so I'll pull myself back from the brink and leave you with what I've taken away from the experience. That being that there is an unholy triangle for web hosting - you want a cheap price, high capacity and great support? Pick two.
Ultimately, I've gone the self-managed route (with Slicehost) for a couple of reasons. First, hosting management is something I dabble with occasionally when a client requires it, but my knowledge is spartan at best and I can increase my own value to an employer if I bring server management skills and experience to the table. Second, I wanted to be forced to fix my own mistakes. When something breaks now, I'm not going to be able to simply file a support ticket and have it fixed. Baptism by fire.
I'm lucky enough to work with some great designers, and have been picking up little bits and pieces along the way. One thing that I have come to realise is that adjusting typography is a neverending mission. One minute you're playing with line heights and word spacing ... the next you're worrying about orphans and adjusting margins to line up letter stems.
Within a couple of hours of launching the new site I had a collection of emails from people pointing out problems. And these were good bug reports - including a URL, an explanation of what they saw ... sometimes a screenshot. Made replicating and fixing problems a doddle. So thanks!
Character Sets Can Ruin You
The old site's database stored data in ISO-8859-1. The data was actually UTF-8. PHP was running as ISO-8859-1. The site was rendered as UTF-8. I think. I'm still not entirely sure. Moving that data to a system running entirely as UTF-8 was a painful experience. Character sets can be a nightmare, especially when you're setting things up yourself. Pick one and stick with it, for everything. One day, when I can bring myself to (or am forced to) revisit the problems I had with this, I'll write up what I learned and how I got things working.
Listen to Other People
Especially when they tell you that when you're working on your IP tables configuration, it's important not to log out until you've verified everything works. Because if you log out before you check and something's broken, you cannot get back in. Tough lesson, that one. Which brings me to ...
Backup from the Beginning
Seriously, it's never, ever too early. If you start out by grabbing snapshots and organising them effectively, you'll be much more likely to be in a position to revert a bad change. With self-managed hosting in particular it is very easy to rush a change that looks innocuous but ends with it utterly destroying everything you've worked on so far.
Separation is Good
I moved my email to Google Apps a couple of years ago (and it's been great so far). I dread to think how complicated this would have been if I'd kept my email at the same place as the site. Having the email handled elsewhere hugely reduced the work involved in moving things around. Same with the DNS - it's entirely separate from everything else. The move involved just changing A records around - minimal risk and easy to reset.
Launching Feels Good
It feels good, but nerve-wracking, to press the button and make a move. It feels even better when, a few days later, you haven't had to revert the entire process.