New Laptop: Why I Went for a Mac (Again)

A couple of weeks ago, I successfully sold one of my old bassoons that I no longer play, which provided me with a tidy sum to make some purchases I'd been after for a while. Top of the list was a new laptop, and after some searching around, and due consideration, I decided a MacBook Pro was the model for me.

PHP Web Deployment Using Git

I've recently been working on a new version of my personal website, which can be found over at http://www.alastairsmith.me.uk/. I wanted a light-weight site that would pull in data from my various presences across the web including my two blogs, GitHub, and Google Picasa; furthermore, as much as possible should be hosted on some form of Content-Distribution Network (CDN). Google's CDN is serving up jQuery and jQuery UI quite nicely for me whilst minimising the amount of stuff I need to administer and maintain myself.

It's generally a good idea when developing web applications to keep your in-development version separate from your production version; indeed this goes for many development scenarios, including in-house application testing before rolling out to users, desktop software development, and others. The backbone of such a strategy is a good source control system, and whilst centralised source control like Subversion can handle this capably, a certain amount of friction is involved in setting it up. Distributed version control systems, and Git in particular, can remove this friction.

Because my personal website is so small by design, the friction of setting up a centralised source control system for deployment scenarios for such a tiny application would have been great enough to put me off looking into it any further. Luckily, I switched to Git as my version control tool of choice about a year ago, and haven't really looked back. Here's how I accomplished a simple web deployment mechanism that can work for sites with a back-end component as well as a smart front-end.

Code Complete: High-Quality Routines (Part 2 - Naming and Parameter Usage)

This second and final post on high-quality routines will cover good routine names and guidelines for parameter usage, as well as touching on routine length and special considerations for functions vs procedures.

Code Complete: High-Quality Routines (Part 1 - Introduction and Design Considerations)

Last time, I rounded off the series-within-a-series on class design and usage, Working Classes. The next topic for dissection is routine design, creation and usage, and this topic will be handled over two posts. This post will form a bit of an introduction and cover design considerations for high-quality routines through the classification of different kinds of routine cohesion. So, without further ado, let's get cracking!

Code Complete: Working Classes (Part 4 - Reasons to Create a Class)

This fourth and final post in the mini-series on Working Classes covers the reasons to create a class. These reasons are many and varied, but fall quite neatly into a number of groups. These groups are: modelling concepts, managing complexity, hiding information, building for the future, and classes to avoid. This post should be rather shorter than the recent ones, and hopefully more digestible as a result.

I'm also experimenting with a new method of writing up my notes that I hope will make this post more coherent; I feel that some of my recent posts in the Code Complete series have been almost a sequence of short paragraphs and possibly haven't hung together too well. I'm interested to know whether you think this post is an improvement, dear reader.

Code Complete: Working Classes (Part 3 - Design and Implementation Issues)

There are a number of design and implementation issues to consider when working with classes, not least dealing with inheritance. This third post in the series of four on "Working Classes" covers my take on Steve McConnell's thoughts on containment, inheritance, member functions and data, and constructors.

Action! Introducing ReelCritic, a new film blog.

I've finally done it: ReelCritic has launched! The DNS changes are currently propagating through the Internet, so the link may not work for you straight away; you might want to give it another go in a few hours/tomorrow.

NxtGen Cambridge: RDBMS, NoSQL and CouchDB

If you've been following the developer hangouts in the last few months, you've probably heard at least a little bit about NoSQL and document databases. You may also have read how they're the best thing since sliced bread, and that NoSQL will be your new BFF. Contrariwise, you may have read some of the FUD surrounding the subject and have *cough* a less rose-tinted view of the things.

Last night, I attended the Cambridge NxtGenUG meeting on this very topic, and I intend to distil some of what I learnt in this post; mostly it'll be me riffing around the stuff that Neil covered. The talk was delivered by Neil Robbins, whose delivery was always energetic, interesting and informative. The 100mph demo at the end of the talk was both simple and powerful. He's a great speaker even if his slides were a bit wordy (with one or two being excessively so). Check him out on Twitter.

Moving Home

I find the whole meta-blogging thing a bit tiresome, really, but I thought I should probably do a quick update as CodeBork is moving home! There are two main things you will notice:

  1. it should be much snappier than it was before, having the full benefit of a fatter pipe than an "up to 8Mbps" ADSL connection
  2. Some of the images have disappeared. They've been transferred successfully, I just need to win an argument with Drupal to get them to display.

ReelCritic - A New Film Blog

As you may have already gathered from my Twitter feed, I've been working recently on ReelCritic, a new blog catering solely for my film reviews. For a sneak peek at the design of the new site, pop on over to http://www.reelcritic.co.uk/. Everything you find at that address is a non-functional mock-up, so please don't try to leave comments, etc. There's only one review available, Rachel Getting Married. I'm currently working to port this design over to Drupal's theme engine so that I can get the blog fully up and running.

Syndicate content
while (true) { 
    progress++; 
    progress -= 2; 
}