Basket: Turning machines into text for fun and profit

Lately I've been rebuilding a lot of servers and workstations, and so one of the many things I've been trying to find the time to work on is basket.

Originally started as one of those random in-office projects, my coworkers and I have taken it upon ourselves to extend that flaky set of bash methods and maybe turn it into a useful set of low-level server administration utilities. It's difficult to say yet how much functionality we'll provide - the project is very much in its infancy - but it's starting to look like a sensible and robust enough idea that I'm posting about it here. From the readme:

It's a bash thoole ket, or bash toolkit if you're sober. Yeah, we tried. It's also a basket of bash functions so that kinda works.

Basket is like a basket because you can dump little scripts into it with no overhead other than storage. When sourced, only the main (small) basket of bash helper methods is loaded - special-purpose modules are brought in on demand and have a simple dependency management system. (So if basket ever gets too big, you can just blindly delete stuff you don't need out of the lib folder). (more)

Git deployment script

Deploying your projects via git (or any kind of version control, for that matter) is a no-brainer. It's been discussed many times (this is probably my favourite) and as we all know, it takes all the manual labour, time and human error out of the process.

You don't often find deployment scripts though. Perhaps it's just me failing at Google, I don't know; but perhaps people just don't tend to write them generic enough. Or perhaps they are too simple to be bothered sharing them. In any case, I didn't like the idea of writing single-use shell scripts and so I whipped up something that does the job rather well, and in a generic and reusable way. (more)

Percona Cluster on Ubuntu 12.10 (Quantal Quetzal)

Recently it's been a task of mine to setup a new SQL database cluster. My favourite database engine of late has been Percona's XtraDB, and so naturally I was quick to choose Percona Cluster as a solution.

This installation was a Cluster 5.5.28 install performed on a RackSpace public cloud server using a clean Ubuntu 12.10 image- your mileage with other platforms, OSes and Percona Server versions may vary. (more)

A good Webalizer user agent grouping

Recently I had to go about setting up my own configurations for Webalizer. Grouping user-agents into meaningful sections seemed a worthwhile cause, so I ran through the mobile user-agent string list and setup matches for mobile devices on top of some of the more straightforward ones for desktop. The result is a pretty clean config that handles (in my experience) about 90% of my incoming traffic. I've also tried to provide a little bit of forward-planning for version numbers on some of the browsers which now update their major version almost daily (curse you, chrome), but you should plan to keep that aspect up to date yourself. (more)

Google Apps email administration guide

Whilst they offer some great free services (edit: Google Apps is now only offered on paid subscriptions, even under the previous 5 user cap. But if you got in beforehand, you do get to keep it for free...), Google's products with their user-friendly interfaces can occaisonally be confusing for those of us who know what we're doing - a whole new set of terminology to learn just to be able to do what you had previously learned in the 'normal' / 'homebrew' / whatever way.

This is a quick cheatsheet on how to achieve some of the fundamental and more advanced mail behaviours and operations that you'd expect from any mailserver via your Google Apps admin console. (more)

A new server and new things

It's no understatement to say that this website has fallen largely into disuse over the years. I aim to fix this; and to start it's high time we got our server infrastructure sorted out.

We're now serving all our content from a Rackspace virtual host, which means we have complete control over what it can and can't do. We no longer need to make halfassed compromises with server constraints and serve annoyingly awkward websites with no reliable database backend. Hooray! (more)