June 2008 Blog Posts
My blog is currently experiencing some technical difficulties. This may be a combination of code, configuration or hosting. I'll be looking at it this weekend. Until then all 3 of my readers will just need to bear with me. In further failure news Telstra have managed to deliver the replacement handset to the wrong address, so I won't have it until tomorrow. This is after I specifically gave them the correct address. Brilliant. The delivery company (who just deliver where they're told) are the only consistently competent people I've dealt with so far. So kudos to Startrack Express and...
I recently got an i-mate Ultimate 9502 which I'm on the whole reasonably happy with. Its got a large form factor but that works for me. The screen is excellent, although the video performance isn't brilliant. It doesn't have the same one handed usability my SP5 did but that's to be expected given the additional capabilities and the compromises to phone functionality that entails. Unfortunately its developed a problem. I used the included headset and now it won't work without it. It'll still ring but no other sounds will come from the inbuilt speakers. Kind of a problem. I've...
In my previous discussion of patterns I touched on one of the most frequent anti-patterns; overuse of Singletons. Today I'm going to elaborate with an example of what happens when you use multiple anti-patterns together. As always details not relevant to the example have been changed to protect the guilty. The application in question was an existing code base which I was brought in to assist with. The system suffered badly from Singletonitis. Many of the items configured as Singletons had no state and had no business being Singletons at all. In particular the data access layer was invoked...
Step 1: Produce a new version of Firefox Step 2: Try and break a world record for number of downloads in 24 hours Congratulations to Mozilla who appear to have organised to have themselves nuked off the Interblag by millions of geeks wanting the latest shiny thing. I'd mock, but I'm one of them. Mmmm.... Shiny....
I'm a big proponent of unit tests and Test Driven Design (TDD). Unfortunately something I see relatively often is developers who don't understand that the quality of the unit tests themselves is important. In this post I'm focusing on a particular area of concern: unit tests that will intermittently fail for reasons not due to errors in the code under test. Failures of this kind are generally due to two causes. Firstly an external resource that the test depends on is unavailable or not in the expected state. This can be dealt with but the effort required to do...
After getting some reports of issues with dasBlog I've moved across to SubText which so far seems nifty. The binary version didn't work for me so I built it from source but had an otherwise trouble free install. This tool exported all the content from dasBlog except the images (which I solved by just leaving the images where they were). I also found this post from Ayende helpful in getting the post ordering sorted. In theory I've tweaked things so that the URLs should be the same for older posts. The RSS link has changed but Feedburner should mean...
A few random items that indicate that Visual Studio 2008 had a release checklist more vigorous than "It Builds! Ship It!":
Docked windows actually auto hide correctly.
Code coverage excludes code that Visual Studio itself has generated.
I'm yet to scream abuse at it for a solid 5 minutes.
I'm no longer contemplating a shift to Java.
I got myself a whiteboard over the weekend. Due to a lack of available wallspace it's now "installed" by resting it on a wooden frame I happened to have lying about and using Scotch tape to fix it to a cabinet. I'm not good with physical objects... Nevertheless there are some design problems that are best solved by scribbling transient crap on a whiteboard. They exist as a tribute to all the weird and improbably ideas you can have while searching for a solution that works. Recommended. Just get one with a stand if you can...
Jetbrains ReSharper 4.0 has been released. This is a tool that pays for itself just with the time saved due to the improved code navigation features, so everything else is a bonus. Version 4.0 introduces support for C# 3.0 as well as bunch of nifty new features. Send them your money now*. * No, I'm not on commission. Dammit.
Design Patterns are a mechanism whereby design knowledge can be encapsulated, considered and applied in a commonly understood way. Patterns form the basis of a design grammar that allows architects to discuss the composition of the design in a clear and unambiguous fashion using common and well understood terminology. They also gather knowledge of design constructs in a format that allows them to be readily shared and applied in multiple contexts. Design patterns tend to have significantly better reusability than software components. This is because design patterns are abstract knowledge that may be applied, whereas software components have concrete implementation....
There are many things I like about TFS (including the main one "It's not the abomination known as Visual SourceSafe"). Unfortunately the merge support in TFS 2005 is...well...lacking. Not being able to merge to branches other than a direct parent or child is highly restrictive. Additionally the merge dialogues are frankly confusing. Take the following (preferably far away from me). "Merge changes for me" is relatively straight forward. But what do the other options mean? You could try trial and error, but that's annoying. Fortunately someone at Microsoft noticed this, if not in time to fix in in...
I appear to have accidentally ordered an i-mate Ultimate 9502 from Telstra. My current phone (an i-mate SP5) has lasted over 2.5 years (which is quite good for me given my tendency to put phones through the wash) but it's starting to wear out. I shall of course attempt to demonstrate to my father why an integrated phone/PDA is superior to having separate devices, especially given that his old HP PDA runs Windows Mobile 2003 and therefore loses all its data when the battery dies. I probably won't have much luck with that.
Jetbrains ReSharper 4.0 RC3 is now available and it's looking fairly solid. Unlike my previous post where I advised against using the Beta this version looks ready to use. Recommended. Of course it's not final yet and it may still have issues so use at your own risk.
Way back in the mythical and idealistic past a Release Candidate was something that you actually intended to release unless a significant new issue was found with it. It gave users confidence that you were nearly done and that they could start planning to use it with confidence. Versions that weren't finished were called things like alpha or beta so that users knew that they used them at their own risk. This of course was clear and well understood. Thus marketing types on seeing this immediately decided that they had to kill it, because well informed users are less likely...
Recently I've been moving some code about in a project I'm working on in order to remove some duplicate code. While extracting the code I wrote a number of unit tests to validate that I was doing this correctly. As these tests were written for code I already had (I was primarily shifting it about, apart from a rather critical bug fix that prompted the original change) the tests reflected very much the structure of the code that I was moving. In order to ensure that the functionality remained consistent I went back to the tests for the original, now...
I've just updated to the latest version of dasBlog. In doing so this time I've left most of the themes available (previously I'd deleted them). In theory you should now be able to change theme (if you care, which I suspect you don't). I've had some issues with doing so, if the theme doesn't apply try refreshing the page. Or just leave it as is.
Apparently some people missed the memo. The www prefix is no longer considered mandatory. Yet every now and then I encounter a site that fails to resolve when I type in the URL without the www prefix. Back in the early days of the web it was just one service amongst many and it was reasonable to assume that you needed to specify which server handled web traffic. These days web traffic is the first class citizen of the InterBlag (and like most first class citizens looks very respectable but has rough edges you don't talk about in polite company)....
I remain unconvinced that there is currently a better format for reading novels than the book. Early in my career I worked on a system for selling books online and my personal conclusions from that experience are that general reading is not well suited to a computer. I can read a book pretty much anywhere as long as there's sufficient light, the form factor of a laptop and additional overhead and constraints can't compare. I've tried electronic books from Amazon on a PDA and that was painful. Reading a paragraph at a time is just too disjointed. I'm not sure...
Perth has to my knowledge two specialist fantasy bookstores: Fantastic Planet and White Dwarf Books. I've been endeavouring to give my business to these stores in preference to the chain stores or online retailers. I'm not sure how they compare on price, but this doesn't really factor into my decision making here. Certainly any discrepancies have not been enough to notice. Even if they were to be more expensive (and I don't believe they are) having these stores available provides value that isn't available from general retailers or indeed the Internet. Specialist stores win here because they have range and...
I've just looked back at the previous reading list and found that most of them remain unfinished. However in that time I've read a number of other books some of which were very good. However the list of books I'm yet to finish seems to be growing:
Dark Light by Ken MacLead
The Sky Road by Ken MacLeod
Matter by Iain M. BanksĀ
The Anubis Gates by Tim Powers
The Night Watch by Sergei Luyyanenko
...