Category: Uncategorized


On the importance of Data Integrity

Not long ago, I attended a seminar by Chris Date at Warwick Uni DCS on the topic on the advantages of the Closed World Assumption as opposed to the Open World Assumption. I wont be talking about these here, but I’ll just give a quick introduction. In the closed world assumption, if a set of data exists in a database, then it is assumed to be true (for example, Employee Steve has ID 1 and earns 20K). If a set of data could exist in the database, but doesn’t, then it is assumed to be false. In the open world assumption, however, this data can be either true or false – the assumption is that it doesn’t exist in the database because we don’t know if it’s true or not. It’s a very interesting topic, perhaps I’ll talk about it some other time.

The talk was incredibly interesting, but there was one thing he said which really struck a chord, and that was:

The most important property a database can have is that its data is correct.

This struck me in particular as a result of a number of issues I’ve had with recent projects whereby the entire website was crippled because of a couple of bit of incorrect data in the database. Could this have been avoided? Definitely. I could have added lots of constraints to the database, and I could have performed more unit tests on the code itself (I’d only just gotten into doing unit tests at this time, so they weren’t quite as robust as they could have ¬†been). It got me wondering, however, whether it would be useful to unit test that database design itself. It’s all good having “correct” code, but if the underlying database will allow inconsistencies, then there’s still a risk that the system can break. I’m not sure if unit testing the database design at a level below the code would be worthwhile, but it’s something to think about!


Research Directions

I’ve recently finished the first term of my final year of university, and for probably the first time, I’m actually sad to have completed one of my modules. The module was entitled “Research Directions”, and is (apparently) fairly unique to Warwick University. It’s organised as a series of graduate seminars, meaning the module as a whole covers a wide range of subjects, mainly being taught by guest lecturers who are experts in their particular fields. This meant that we were given decent groundings in areas including Quantum Computing, Bioinformatics and Trading Algorithms. Each member of the group presented a topic taken from the Communications of the ACM, which gave us brief introductions to more topics such as Smoothed Complexity, Probabilistic Databases and Model Checking.

What made this module great? It was relaxed, free-flowing and interesting. What more can you ask for? If only all modules were like this.


Theory and Applications

The degree I do at Warwick is very theory-heavy, in that we learn a lot of algorithms, techniques and equations, but put very little of it into practice. I quite enjoy the theory part of it, but it’s always fun to do the implementation (after all, isn’t the general perception of Computer Science that it’s a degree in programming?). Today, I got one of those wonderful moments where the theory is put into practice outside of the modules, when I had to implement Bresenham’s line drawing algorithm as part of our group project. For some reason, I found this really exciting! Of course, I had to look up how to do it, even though the module was only last year…


Reducing Complexity

So, once again, I’ve redesigned the site. The concept is very simple: reducing complexity. This is something I’m really keen on at the moment – as Einstein says, everything should be as simple as possible, but no simpler. So the main site itself is incredibly minimal, and all the things are hosted separately. This blog now uses WordPress, which is fantastic, and the majority of the other content is available through other sites such as Twitter, LinkedIn and Flickr.

The portfolio was something I thought about for a bit. Traditionally, portfolios show all your work with quick descriptions on one page. But, as a web developer, the websites itself should act as their portfolio entry, so it makes sense for the portfolio to be just a list of links. Simple, see!

I’ve got a load of things I’d like to blog about soon, so watch this space!



I just wanted to say how much I freakin’ love LaTeX. As far as I’m concerned there is nothing else you can feasibly use for academic document preparation, and the output is just so beautiful. I can’t quite explain it, but I find the aesthetics of a LaTeX prepared document just incredibly attractive. Check it out for yourself.


Gato o Cactus?

I just found a review of Cat or Cactus?! on Mon Da Dientes which made me laugh. According to Google Translate, it says:

Cat or cactus is an exciting game blends real time strategy, third-degree differential equations and guess if the photo is half covered by a cat or a cactus. A real challenge.

Thanks, Mon Da Dientes!


What’s happening to me?!

I did some work on a CakePHP site earlier today, and I pretty much hated every minute of it. Somehow, I’ve gone from the kind of person who does everything in PHP, to one of those fanatical Ruby on Rails developers. There’s only one thing for it: I must re-write everything I’ve ever done in RoR! OK, maybe I won’t go that far. Yet…


MySQL gem on OSX with XAMPP

I’ve just upgraded to Snow Leopard, and as a result, have had to reinstall my MySQL gem for Rails. On OSX, this is never easy, as the sheer number of blog posts offering advice will show. Having tried all the different solutions I could find, this is how I managed it. Note that because I am on a Core Duo machine (not a Core 2 Duo), I didn’t upgrade to the 64 bit version of MySQL.

Open up a Terminal, and edit the .profile file, to add the following to modify your path:

export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"


sudo sh env ARCHFLAGS="-arch i386" gem install mysql

You might see a load of warnings, but as long as it doesn’t fail, then they’re not too important. You can check it’s worked by running:
gem list -d mysql

This way you don’t need to bother with all the setting mysql_config flags. Or, at least, I didn’t need to. Hopefully this will work for you!



Wow, long time, no update, sorry! Expect a full update soon, but for now, here’s a project I’ve been working on over the last few days. It’s a Twitter mashup called Twipestry (Twitter + Tapestry), which produces a patchwork of images based on keywords extracted from tweets. It’s quite good fun! Enjoy!



Dave Ellis, a friend and band mate of mine, has just posted this video of me recording a guitar solo for one of his solo projects. Enjoy!