Friday, September 26, 2008
Singletons take a reusable object and give it a single point of access for an application. Without awakening the debate over whether global state is good thing or bad thing I’m going to attempt to discuss singletons. I think it’s likely everyone will be familiar with is something along the lines of: Renderer::GetInstance()->Function();
This is often accompanied by code that caches the instance pointer in an object, or locally in a function before using it. (I’m not picking on renderers specifically, they just exemplify a particular use case.)
To me though, this is a really odd way of accessing global state through a global function. The access point is within the class scope and it’s a lenghly and cumbersome interface for clients. It combines the implementation choice with the client interface, to the detriment of both. It’s simultaeously more difficult to refactor your interface or reinitialize your system and more work for clients.
In cases like this, I think your interface and your implementation should be kept separate. If you want to implement your set of renderers using inheritance, great stuff. But your clients don’t care, that’s why they’re relying on your library in the first place. They just want a consistent API to work with.
(Continued)
Wednesday, August 6, 2008
Dark Knight is great. The best comic or graphic novel film I’ve seen. The fantastic nature of the characters and story line are evolved convincingly but with a pacing that makes it gripping. The contrasts between the characters and how the story effects them really pulls the whole piece together for me and makes it more than a linear action story line. Direction and cinematography are really solid, and the special effects guys flip an 18 wheeler which is one of the coolest things I’ve ever seen.
(Continued)
Wednesday, August 6, 2008
This made both me and Rebecca laugh. The canned vegetarian spaghetti bolognaise from Sainsbiry’s proclaims to have “All the Flavour of Meat”.
Well, which meat? Cow, Pig, Squirrel, Gopher? All of the above? It’s as if they thought that the most tempting thing for a vegetarian would be the flavour of meat. Any meat. They won’t know the difference because they’re vegetarian!

All The Flavour Of Meat!
Update: Mildly interesting fact. It’s spelled bolognese in Italian, well ragù alla bolognese. And sauce bolognaise in French. I’ve always used the French spelling, no idea why. Google totally disagrees with me and only accepts bolognese. Damn them.
Wednesday, August 6, 2008
It’s true that food has risen in price during the credit crunch, but I don’t know how Sainsbury’s managed to introduce a NaN into their per Kg cost for fish. Made me laugh.

NaN per kg
JotSpot is finally back in the form of Google Sites. Back in the day, we were pretty excited about JotSpot but the result of the Google integration has left it looking like a glorified web page builder that’s trying to be like Share Point. The site themes looks like early 90’s web design, which doesn’t help matters.
Looking at it from a team collaboration perspective using Google Apps For Your Domain:
- Application API is no longer present.
- Pages no longer have their own email address.
- Pretty sure there are less applications / services than there were originally.
- The gadgets available are a bit pointless.
- The Google Docs integration is weak.
I hate having to dig through Google Docs to get a URL, copy it, and paste it into the site properties when they could just as easily pop up a browser for all the domain shared documents by user.
I’m sure it will get better, but right now I’m a bit dissapointed. Can Google actually innovate?
I’m looking towards Open Source, Microsoft, and smaller ISV’s for the more interesting features and and ideas.
Share Point, Trac, Central Desktop, Base Camp, FogBugz are all going in more interesting directions than Google Sites.