# Saturday, March 05, 2005

This update to the original application blocks has recently been released. After a couple of weeks developing with it I’ve decided that I’m going to ditch it and go back to the old blocks. There is lots of really useful functionality but what I’ve found boils down to two main problems.

The first problem I’ve been wrestling with is the flexibility in library configuration. I applaud the flexible storage mechanism and the excellent configuration application but, having tried to add my own provider class, I think it is too complicated. You need to derive three classes for every provider – ConfigurationView, ProviderFactory and ProviderData. The equivalent code written without the Enterprise Library is about half as much.

I also wonder what the benefit of having a system administrator rework your exception handing? The whole idea of exceptions is to only catch those you are capable of handling. If your handler catches a SqlException but the configuration is changed to wrap it in a MyException then the whole thing is going to stop working. I can just imagine the support calls:

Support: “Hello, Exony support”

Customer: “Er, hello. Your application isn’t working.”

Support: “OK, well looking at the deployment logs I can see it passed it’s customer acceptance tests. Have you changed anything recently?”

Customer: “Well I used the configuration tool to modify the exception handling.”

Support: “You shouldn’t do that. It’s not meant to be changed.”

Customer: “Oh, why is it there then?”

Support: “I dunno, let me ask an engineer… OK, he says why are we all here?… Maybe you should just change it back.”

The other issue is, whilst some parts of the library are incredibly configurable, the bit’s you really need access to are inaccessible. For example, in an enterprise application, it’s likely you might have a backup database connection. With this in mind, there doesn’t seem to be a way to enumerate all the database instances configured. I also can not find a way to create a database instance against a programatically generated connection string.

Some other minor problems I could live with but worth mentioning are:

  • Logging is slow compared to other libraries
  • You can’t store all your configuration in a single app.config [Edit: this is now possible with the extension library]
  • The documentation is too much “look at this cool design we did” and not enough “how to do…”
  • The fact that a patch had to be released fixing custom storage providers tells me that no one tested this feature – how much more wasn’t tested?

Hopefully I’m wrong on all counts and someone will provide me with answers to all my problems so I can do the right thing and continue using it. Maybe next week I’ll have better news to report.

This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Saturday, March 05, 2005 10:01:15 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Sunday, February 27, 2005

Did anyone see The Gadget Show (cached) on Friday? They managed to get access to the Microsoft campus and, in particular, look around a series of rooms designed to show a future house with integrated technology. There was some really amazing stuff, mostly voice activated and with a heavy integration of RFID. What really stood out was a lack of computer monitors – kitchen recipes appeared on the work surface, wardrobe information such as washing instructions and designer advice appeared in the mirror and the phone messages showed up in a wall tile that looked the same as the rest of the wall when not displaying anything.

It seems that the Microsoft staff were a little shy though – not a single one appeared on camera (even in the background). Maybe Robert could do something for Channel 9? Lets meet the designers and see what they have to say…

This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Sunday, February 27, 2005 11:56:17 AM (GMT Standard Time, UTC+00:00)  #    Comments [1] Trackback
# Friday, February 25, 2005

Software and Utilities:

Development Sites:

SQL Server:

Software Life:

This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Friday, February 25, 2005 8:30:05 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Sunday, February 20, 2005

I’ve finally got around to upgrading to the next version and I can’t say it’s been a pleasure. Not due to the software itself but because, when I set the site up, I made the mistake of installing the blog in the site root folder. This means the web.config settings automatically flow to all virtual directories below. Any <httpModules> and <httpHandlers> sections need to be carefully undone in web.config files lower in the tree. The problem is that to remove an entry from these sections the web application needs to load any referenced assemblies. Simple – just copy them into the bin directory. Unfortunately not if, like nGallery, the application is actually using a previous version of that assembly. I’ve had to do a special build of nGallery referencing an updated FreeTextBox control.

I did try setting a new blog up in a sub-folder and redirecting any relevant requests but testing with RssBandit showed that news aggregators would have a problem. Everyone would just assume the feed had died unless they actually pointed a browser at the URL. Also, I wonder what Google does with permanent redirects? Does it update it’s copy or just index the new page losing the original Page Rank?

There are a number of new features in this upgrade; most of them behind the scenes. But one you can play with is the new Month View. I’ve also upgraded the wiki. If anything is broken then let me know.

This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Sunday, February 20, 2005 1:45:27 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Saturday, February 19, 2005

I’ve just watched the DVD “Man on Fire” and have to say I found it riveting. In fact it was so enthralling that I feel the need to blog about it; something I’ve not done about a film before. Basically it’s a revenge flick caused by the kidnapping of John Creasy’s (Denzel Washington) young charge. The first third of the movie provides an insight into John Creasy’s background and his new relationship with Pita (Dakota Fanning) and the remainder details Creasy’s revenge on all who were involved with or profited from her abduction.

This is an incredibly powerful film primarily due to the performances from Denzel Washington and Dakota Fanning. Denzel’s acting abilities are well known but I’ve also been a fan of Dakota since she appeared in “Taken”. It has to be said that there is a fair bit of violence during the revenge part but I don’t think it’s over the top. In fact, due to the events in the film, you end up actively wanting Creasy to take extreme action. I won’t spoil it by telling you what happens – you need to watch it for yourself.

There are a number of points that make this film stand out. Firstly the pace; once the kidnap takes place nothing detracts from Creasy’s primary objective. There is no side story, no “relationship” getting in the way. Actually, if you watch the deleted scenes then he was supposed to hook up with Pita’s mother and I’m glad Tony Scott stuck to the main story. Secondly, the sound track is perfect. Almost every scene has music and it compliments the action on screen. My particular favourite is the rave scene – a wall of sound, not much dialogue and a load of action. The cinematography and subtitle overlays are just as effective. Finally the ending matches the mood exactly. I was expecting the usual “Hollywood ending” – main character succeeds against all odds to save the day. Well thankfully the finale isn’t ruined by an implausible conclusion and the ending is more in line with the rest of the picture. Even the alternate ending fits (do watch it in the extras) but I prefer the one chosen for the final cut.

OK, that’s all I have to say. Go watch the film and let me know if you agree.

This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Saturday, February 19, 2005 12:25:35 AM (GMT Standard Time, UTC+00:00)  #    Comments [2] Trackback
# Monday, February 14, 2005

For some reason when I’m developing something new I always end up changing my design twice. Note, I’m not talking about architecture here. Architecture is a higher level concept and as such isn’t killed by implementation detail the way a design is. I think there is a reason for this multi-version development though.

The first design is basically a prototype exploring possibilities. At this point I’m not sure what the best solution is or even what techniques might be best to employ. It only just does the job and is probably not very elegant or efficient. Not something to be proud of.

The second is usually a great design but, more often than not, flawed with a super hero style weakness. It will be elegant, efficient and cover every requirement imagined. The only problem – it will never be finished. This second iteration is usually complex, over designed and would take an eternity to implement.

After a good dose of reality, the third version takes shape. It’s much more practical, easier to maintain and solves only the requirements that are actually needed. These three designs are usually quite different. Not what the XP crowd would call iterative implementations but the end result is similar.

I think it’s important not to get too attached to any one way of doing things. I see some who start coding and stick with their first design to the bitter end no matter what. People often complain that a v1 product is OK for early adopters but not general consumption. Iterative design like this enables that sought after v3 product in your first release. Just don’t take three times as long to implement it…

This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Monday, February 14, 2005 9:25:15 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Thursday, February 10, 2005

Ryan blogged about e-mail spam today which reminded me - I got hit this morning on three separate and unrelated addressed within a 10 minute time span. I can’t imagine how many mails they must have sent in that short time to hit all three addresses. The same message got through Google, Yahoo and Outlook spam filters. These spammers need a good long stay in Guantánamo Bay as guests of the US Navy.

So [via www.ryanstevens.co.uk] I suggest the following as a small way of fighting back:

A novel way of making spam less profitable is to help shutdown the scammers who send these mails by driving up they costs. Check out how you can help Artist Against 419

While reading this page you've stolen 41076 bytes already!

A fake banks imageA fake banks imageA fake banks imageA fake banks imageA fake banks imageA fake banks imageA fake banks image 
This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Thursday, February 10, 2005 9:56:48 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Monday, February 07, 2005
I think Google are stepping things up a notch. Instead of the usual 6, they’ve given me 50 this time. If you want one then drop me an e-mail at james.snape@NOSPAM.ONLINE.gmail.com (remove NOSPAM.ONLINE.) with your first and last name (I need then to send the invite). No requirements this time – just sent the e-mail and it’s all yours.
This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Monday, February 07, 2005 9:25:18 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] Trackback
# Saturday, February 05, 2005

OK, I’m a little embarrassed to admit but I’ve been suffering from coder’s block this week. It’s a state similar to writer’s block which is defined as “a usually temporary psychological inability to begin or continue work on a piece of writing”.

I think probably everyone suffers it from time to time and, although I haven’t had a case for a number of years, this has come at a most inopportune moment because we are on a very tight schedule with our current release.

I guess it’s a little like depression in that you can’t just mentally “fix it”, you need to work through the cause. In this case I don’t think it’s an inability to write code, it’s more a case of too many possible solutions to the problem in question. They are all good but none are perfect. In particular one of the requirements is to allow additional code generation (note – not just an add-in, this is adding to the system) post release by our professional services engineers. This is hard for me because my brain prefers to work spatially – I need to see the design animated in my head before I code it up; not something that’s possible if an unknown chunk of code if going to be added by someone at a later date. Talking with other developers didn’t help because all that did is give me more good solutions to consider.

The other problem is that there are a number of very intricate details that have to be thought about or the implementation won’t meet the requirements. Completely overwhelming if you look at them together so on Friday I decided to take a leaf out of the extreme programming book – baby steps. I started by ignoring the mass of requirements and implementing a really small section. By lunchtime I was back in the flow, I managed to check-in something yesterday evening and things are looking to be back on track.

So if you are suffering similar then I can offer the following advice:

  • Take a break and do something completely different like go for a walk, however doing this too often is just procrastination
  • Try and work out what is causing the block and fix those issues one at a time
  • Take small steps to get something (anything) working
  • If all else fails, see if you can swap your feature with another developer
This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Saturday, February 05, 2005 10:09:17 PM (GMT Standard Time, UTC+00:00)  #    Comments [3] Trackback

Robert, I'm happy you chose to add an article of mine to your link blog and quoting the full text is fine too. One thing though, I didn't find out until I started getting referrals so it would be nice if you could change your software to drop me an e-mail or send a trackback when you post, especially as the new site doesn't make finding the quoted article very easy. Thanks.

This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Saturday, February 05, 2005 8:55:42 PM (GMT Standard Time, UTC+00:00)  #    Comments [1] Trackback
# Wednesday, February 02, 2005

Ward Cunningham’s recent contributions to Microsoft have appeared on the web in the form of a wiki called PatternShare. The content is excellent but what I find more interesting is that the person who invented the wiki concept is (a) using FlexWiki instead of his original creation and (b) doing some really novel things with the software itself.

Having never programmed in SmallTalk, I haven’t really got my head around WikiTalk so my FlexWiki development is limited to modifying existing examples. This new site has plenty of those.

This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Wednesday, February 02, 2005 10:15:47 PM (GMT Standard Time, UTC+00:00)  #    Comments [2] Trackback
# Thursday, January 27, 2005
Clever, but not magic. How long will it take you to work out how this Mind Reader works?
This posting is provided "AS IS" with no warranties, and confers no rights.
posted on Thursday, January 27, 2005 10:40:18 PM (GMT Standard Time, UTC+00:00)  #    Comments [1] Trackback