Slides and source code from The Best of Delphi 2005, repeated in Edinburgh, Scotland, 14th January 2005.
Download the PowerPoint (1120K)
Download the source code for the demonstrations (50K)
Download the source code for the demonstrations (226K)
Slides and source code from The Best of Delphi 2005, repeated in Edinburgh, Scotland, 14th January 2005.
Download the PowerPoint (1120K)
Download the source code for the demonstrations (50K)
Download the source code for the demonstrations (226K)
Slides, source code and an article from The Best of Delphi 2005, repeated in Edinburgh, Scotland, 14th January 2005.
Download the PowerPoint (1400K)
Download the source code for the demonstrations (381K)
Download the article that accompanies the session (pdf, 280K)
I would like to thank all those who nominated me for the Windows Server System – XML Web Services Microsoft Most Valuable Professional (MVP) Award.
I received notification of the award this morning.
I will of course, continue to serve the development community during 2005!
If there is anything you would particularly like an article or presentation about, or if you would just like to chat about your development issues, please drop me an e-mail (via http://www.craigmurphy.com, at the bottom)
Methods and Tools have published my Adaptive Project Management using Scrum article (available here as a PDF)

I am pleased to announce that Scottish Developers are doing their bit for the Tsunami Earthquake.
Scottish Developers will donate at least £1.50 of the proceeds of the sale of WeRock DVDs to the Tsunami Earthquake, more here.
Craig and Alison are pleased to announce the successful delivery of Cameron Andrew Murphy, 7lb 1ounce, at 2215 on the 6th of December 2004, Forth Park Hospital, Kirkcaldy, Fife, Scotland.
Aged 20 hours:

Michael has written another great post here. I don’t want to steal his thunder, so please go read his post (it’s an excellent read), then read my thoughts below!
Earlier this year a good friend and colleague was discussing (with my boss) the idea of increasing workload and the pressure required to improve/increase productivity. Working out just how much more work an individual can cope with is difficult and is one that Michael covers in his post. Too much work and the individual goes in to shutdown mode, too little and they procrastinate.
Whilst I agree with increasing a person’s workload, it’s important to consider the unseen work they might be undertaking. For example, and I don’t wish to blow my own trumpet, I put in a lot of hours for my employer (more on this in a moment) and I put in a lot of voluntary hours writing/presenting for Scottish Developers, the Developers’ Group and Agile Scotland, amongst others.
I’ve recently seen my employer’s workload increase, particularly the amount of travel has increased. This has meant sacrifices elsewhere: writing takes time and inclination, without both, writer’s block is very common. After a working week involving a lot of travel and 6-8 hours of working time each day too, one doesn’t really feel up to firing up the laptop to start work on articles and presentations!
Earlier in this post I mentioned that I put in a lot of hours for my employer. I put the hours in just to get the job done: and I try my best to make sure it’s a “good job, well done” too. I’m sure that I procrastinate, who doesn’t? I’m sure that I sometimes take longer to complete a task than the next person, again who doesn’t? What I have noticed however, and this is a general observation, not specific to any organisation, is that there are folks out there who take a long time completing what should be a simple task. Of course, there are similar folks who can complete the same simple task in a much shorter time-scale than was ever expected.
Productivity comes through “getting on with it”, it comes with the realisation of “task completion”: the more tasks that an individual completes, the more productive they should become. Ultimately, the individual will set their own threshold. For productive individuals, this will be easy and should require no outside involvement, which, IMHO, is a bad thing: outsiders shouldn’t try and alter individuals thresholds unless the individual concerned is the worst kind of procrastinator, the kind who never finishes anything.

On the 29th of November 2004 I will be speaking at The Best of Delphi 2005: an event organised by The Developers’ Group.
The event takes place here: 1 Whitehall Place, London, SW1A 2EJ and starts at 0900 – be there!
The full agenda can be found here.
I’ll be speaking about two subjects: refactoring and XML Web Services.
Refactoring
I don’t know about you, but I’m a lazy coder: I like my IDE to help me as much as possible. I used to be happy with simple stuff like indenting or “outdenting” blocks of code. Then along came code completion, heaven! Naturally I crave for more, more productivity gains, more guarantees that the code I write is syntactically correct and it is consistent.
The refactoring support in Delphi 2005 provides such guarantees: no longer do you have to rely on cut’n’paste to move chunks of code around (many a customer-facing error has been made with “cut’n’paste”!).
Use Refactoring To Move From Win32 Delphi to Delphi 2005
Moving your application from one version of Delphi to another is never quite as easy as it looks. Even more so if it’s from Win32 Delphi to Delphi for .NET!
Consider a legacy Delphi 5 application that was written around the time Delphi 5 was released. Like all code that was written “a while ago” (a couple of weeks ago in my case!), you probably look at some old code and think: “did I really write that?” and/or “I haven’t a clue how that piece of code actually works”. If those quotations ring true for you, Delphi 2005’s refactoring (and unit testing) is something you should be very interested in: refactor what you don’t understand.
Delphi 2005’s refactorings will let you re-write (alter the design of) your old code whilst preserving the functionality. Similarly, if you don’t understand how a piece of code works, Delphi 2005’s unit testing will let you write tests to “surface” an understanding.
If your application doesn’t use any third party components, then moving from say Delphi 5 to 6 or 5 to 7 is probably the simple matter of a recompile, perhaps with one or two minor code changes.
However, if your application uses third party components, your move to a new version of Delphi typically will involve an upgrading those very same components! And this is where it can get a little hairy. My experience has shown that moving a moderate-sized application from Delphi 5 to Delphi 7, whilst taking into account a raft of third party component upgrades, sparks off the need to re-test and often re-write large parts of the application.
Similarly, moving from Win32 Delphi to Delphi 8 or Delphi 2005 also necessitates that your application is retested after the move.
It is for reasons like these that Borland have incorporated two features into Delphi 2005: refactoring support and unit testing via NUnit. Refactoring brings with it the productivity gains we are all looking for and NUnit provides us with a means of ensuring that the refactoring hasn’t broken anything. Refactoring and unit testing are made for each other: I will cover refactoring during my session and Dr.Bob will cover unit testing in his.
Attend this session if you want to learn how to be more productive within the Delphi IDE (Win32 or .NET), how to be more responsive to your customer’s [changing] needs and how to bring your application to market faster thus encouraging an early return on investment and realising profit sooner rather than later.
XML and Web Services
Between Delphi 6 and Delphi 2005, the bottom line functionality of Delphi’s support for protocols like the Simple Object Access Protocol (SOAP) and web services hasn’t really changed very much. Granted, there have been bug fixes and upgrades to support newer versions of World Wide Web Consortium (W3C) standards, but if you look at the applications that can be created using Delphi, not much has changed.
So why spend 45 minutes talking about it?
Well, there are plenty of good reasons, least of all:
1. Delphi 2005 could be the version you have been waiting for: a lot of folks follow “odd numbers”, Delphi 3, 5, 7…Delphi 2005 is the next logical version. If you plan to adopt Delphi 2005, and you are coming from Delphi 5, then it is possible that your Delphi 2005 application architecture will need to involve web services.
2. Delphi 2005 could be the version that you plan to “migrate to .NET” with. You’ll need an understanding of what’s in .NET that can help you: this session will provide you with an understanding of how to integrate your application(s) using .NET’s XML support and will show you how to interact with other applications running elsewhere on the Internet.
Building applications that rely on web services to serve up their functionality might sound odd. However, think about how your existing applications are architected: you probably use “layers” or abstractions to shield GUI functionality from database access functionality, for example.
Building an application using web services instantly gives you a layer of abstraction: you can implement functionality once, and then use it from a GUI client application, and web client application or even a mobile device – anything platform that is capable of consuming a web service could potentially become a user of your application.
This suggests that your application could be used in more remote locations….increasing the return on investment and bringing your application into profit much sooner.
My travelling colleague required some headache tablets last week. Luckily it was the middle of the day in the quaint village of Harpenden, Hertfordshire where a Sainsbury’s store is located.
We found the wording of the ‘cheap’ paracetamol to be somewhat amusing:

What goes around comes around. Blogging is no different. Folks even call the “space” in which blogging occurs “blogsphere”. I don’t know whether it should be one word or two, but that’s not too important – either way they sound the same and mean the same, but let’s not argue, you/we are amongst friends…
Personally, I’ve been a blogsphere citizen since May 2004, however I’ve been following various blogs since late 2003. Indeed, so much good stuff is written via blogs, that my NNTP usage as dropped to virtually nothing – hey, I even blogged about it here. Actually, the number of blogs that my RSS aggregator has to manage is getting out of hand – it seems that blog after blog after blog has really good content and just has to be added to the aggregation list. Now this shouldn’t be a bad thing, especially because my RSS aggregator presents me with a list of new content every hour or so (configurable) which lets me read through the RSS items and read only those that sound interesting. The whole process is actually quite efficient.
However, I’ve begun to notice an interesting pattern. Most of the blogs that I visit regularly are one step removed from each other – indeed, most of the new blogs that I stumble upon have “blog rolls” that look very similar to my RSS aggregation list. Blogging has created its own web of intricate connections. And we’re almost able to classify these connections, thus bringing some real meaning to links that have been established.
As I type this, Ron Jefferies posted this: Blog Considered Harmful. Ron seems to agree with my earlier point about RSS and bandwidth.
So these spherical connections in blogsphere leads me to think that we might begin to think about how we relate to each other, via the Internet of course. What is it that makes me one step removed from you? It’s very likely that we’re in the same social circle – albeit geographic limitations apply. We probably like technology and gadgets. We probably like proper beer and good wine. We probably share the same taste in music. Of course, occasionally, we have probably met and agreed to blogroll each other, but that still counts – we’re still one step removed from each other.
Please, comment away: why are you just a single step away from me? Should I be blogrolling you? What connects us? Is it just the blogsphere? Coincedence? Is there something more sinister afoot? Or is there something much smarter underlying it all? May be it’s just the technological circles that we move in. Are the relationships manifesting themselves via the blogs that I follow…over to you.
Scrum, the ethos of simplicity.
Last week I gave a presentation to the Developers’ Group and Scottish Developers user groups.
I spoke about the project mangement/control technique known as Scrum. The session ran for over an hour and some lively debate followed. Read more about it here.
Anyway, the slides and a sample backlog are now available here.
It’s worth noting that for the purposes of this session I split my product backlog in to four sprints. In reality, you probably don’t know the contents of subsequent sprints until after the last sprint has been completed. Agility. Flexibility. Simplicity. It’s all about the freedom to change the order in which requirements are turned in to working value/functionality.
I read about this over on Clarke’s blog.
It seems that I am a ‘Go-Getter’. Do you agree?
Summary of Go-Getters
Spookily accurate…for now.
Interestingly, my last psychometric test revealed that I wasn’t too keen on rules/routines: sometimes, in order to get things done, or be inventive, rules have to be altered, usually for the better. Similarly, folks have told me that I can be ruthless, take no prisoners…or be tough-minded when needed.