Continuous Integration Testing

At work we recently set up Buildbot to replace an in-house continuous integration tool that never really took off. I’ve used Buildbot before, in a hobby capacity, but using it my day job has really brought home to me how important not only testing is, but testing continuously.

Buildbot is pretty simple to explain. Every time you make a commit to your source control system this triggers buildbot to run a series of steps over your code. What these steps are is totally configurable by you. Typically though, you’ll configure it to check out your code, compile it and run unit tests.

I’m a big fan of test driven and issue driven development. With these two methodologies when you want to make a change you record the issue in your bug tracking software, then write a test that detects the deficiency in your code. Once you’ve done that you can start actually making the change that you wanted to make in the first place. By writing down the issue you’re forced into thinking about the change that you want to make, and creating the test ensures that you know when it’s complete.

Read More...

Why Does e=mc2? Book Review

Rock star turned physicist Brian Cox and Jeff Forshaw have written a book with a deceptively simple title, Why Does e=mc2 ?. With a title like that you might expect that the book will be along the same lines as the New Scientist books How To Make A Tornado and Do Polar Bears Get Lonely?. Instead though, you get a book that takes you on a in-depth journey through deriving the equation from first principles* and on to the many things that it implies.

As you might expect for a book from two physicists it is a fairly specific book, focusing on entirely on the equation and the mathematics and physics that surround it. If you’re looking for a history of the equation and the Einstein then this is not the book for you. That’s not to say that it’s not well written, or not accessible because it is both of those things. The jovial nature of the writing and understandable metaphors really help you to follow the progress of the book, especially when four dimensional space-time is being discussed.

This book is well written, informative and entertaining. If you’ve ever wanted to know why e=mc2 and you’ve got a basic understanding of maths then “Why Does e=mc2 ?” will answer all your questions and more.

  • Well, from an fairly basic set of set of assumptions.
Read More...

Using Fabric For Deployment

In a previous post I discussed what you want from an automatic deployment system. In this post I’ll discuss how use to solve the repeatability and scalability requirements that I set out.

Fabric is a tool which lets you write scripts to automate repetitive tasks. So far, so bash like. What sets Fabric apart is the tools it gives you to run commands on remote servers. Fabric allows you to run the same commands on multiple machines, and to move files between the hosts easily.

To get started with Fabric you’ll need to install it, but a simple sudo easy_install fabric should be enough to get you up and running. The Fabric website has excellent documentation, including a tutorial, but before I discuss how to integrate Fabric with your Django deployment process, lets go over the basics.

Read More...

iLust

This weekend, the day after the iPad was released in the UK, I went into an Apple store and had a play with an iPad for a few minutes. My first reaction was surprise was that I was able to get access to an iPad so quickly. When I tried the same for the iPhone I had to give up as it was taking too long to queue. That’s probably down to the time of day rather than the popularity of the device though.

Much has been made of the iPad being a jumped up iPod Touch, and when the iPad was announced I was disappointed that it didn’t run Mac OS X. Having played with the device though I’m inclined to think that it was a good move. When they release the upcoming version 4 operating system with its background processing capabilities most criticisms will no longer be valid.

The iPad is usually described as a content consumption device, rather than a content creation device. That’s not quite true, as I could quite happily type this blog post using an iPad. However, as a webdeveloper in both a professional and a hobbyist capacity it is impossible to imagine using the iPad to create anything that complicated.

Read More...

Perfect Deployment Of Websites

Recently I have been giving a lot of thought to how best to deploy websites, specifically Django powered sites. In future posts I’ll describe how I use some of tools available to deploy websites, but in this post I want to set out the goals of any system that you use to deploy a website.

What do mean when we say deployment? Clearly it involves getting your code onto a production server but the process also needs to look after any dependencies of your code. Updates also sometimes require database changes and these need to be managed and deployed with the appropriate code changes. If your website is more than just a hobby then it will also usually involve some sort of high availably set up.

The first requirement is repeatability. You might be able to follow a list of ten commands without making a mistake normally, when your site is broken and you need to get a fix deployment as soon as possible following that list will suddenly become a whole lot harder. For this reason, and to avoid the temptation to cut corners when deploying a change automation of as much as possible is key.

Read More...