March 2005

published: Tue, 1-Mar-2005   |   updated: Fri, 5-Aug-2016

Here are the articles that were published in March 2005.

Object-Oriented State Machines

In the March issue ofThe Delphi Magazine, I discussed refactoring state machines that had been implemented as giant case (or switch) statements into an object-oriented model. Essentially, the class model I used was the State pattern as described by the Gang of Four in Design Patterns. Anyway one of my readers sent me an email that made a valid point. Read more...

Exceptional rant

I found an interesting story about a process-deficient software company this morning (via Larkware). The story itself was interesting for sure -- it's about the need for developers to fix their compiler warnings and keep them fixed, a proposition with which I heartily concur and follow -- but it was the comments that got my goat. Read more...

Aborting a Windows service start-up request in .NET

Yesterday we were debugging a Windows service written in .NET. The issue being debugged was that sometimes (it seemed to happen mostly on Windows 2000 Server, but not every time) the service would hang during stopping. After some work we found the bug and also found how to abort a service start-up request in .NET. Read more...

Asynchronous Exceptions

This article is an interesting email that was sent out to the CLR team at Microsoft about asynchronous exceptions. The email is, shall we say, information-dense. It's targeted at the Framework developers, but there are some ideas we can take from this as application developers. Read more...

Encapsulation is not Information Hiding

I came across this article by Nat Pryce in the PlanetTW blog. It came at the right moment. (Update: it'd help if I gave the post a title.) Read more...

Specify IFormatProvider

This is one of the errors that FxCop spits out and it gets depressing, it happens so often. "Depressing, why?" I hear you ask. Mainly because I've never taken the time to understand what it's on about. Well, tonight I had time to work it out, not that it took a lot of working out. Just one of those things that if you took the time to understand it, it would hold no horrors. (Updated: 15-Mar-2003) Read more...

Using FxCop

I've been code reviewing a part of Enterprise Configuration Manager (ECM) over the past week or so, mainly in an effort to help polish the code and also to identify possible problems before they surface and bite our collective butt. The part I've been involved with is the largest part that is implemented in C# and the .NET Framework. Read more...

Unintentional Programming

We're having a minor discussion here in development about a bug I found. The bug is completely benign at the moment (indeed, I only found it through a code review, not through using the product), but code could easily be written to fire it. Read more...

Why interfaces?

Even for those developers who are expert in OOP design and programming principles seem to stumble the first time they come across interfaces. It's hard to see why interfaces are so important compared to, say, pure abstract classes. Read more...

What is good-enough software?

The problem with the term "good enough software" is that it seems to have a slightly grubby connection: software that's just good enough to pass muster. It isn't polished, it isn't clean, perhaps it isn't even maintainable (a one-off program, for example). Read more...

RSS feed: The CityDesk Connection

An old acquaintance, Jeroen Pluimers, was kind enough to gently point out that my RSS feed was totally, er, sporked. (Updated.) Read more...

RSS feed Update

Eeek! I apologize to all those people who subscribe to my blog through my RSS feed. You'll have just received this and the last seven entries again. Read more...

Business logic in the database

In my view of multi-tier architectures, the business layer resides in a separate layer from the data storage layer (a.k.a. the database layer), at least when thinking about logical layers rather than physical tiers. In fact, all that appears in the data storage layer are stored procedures to Create, Retrieve, Update, and Delete records (the CRUD procedures). This simple schema has worked pretty well for me in the past. (Updated 3-Mar-05) Read more...

It's all multi-tier, all the way down

I've been writing a bit recently on multi-tier architectures and the issues that arise when designing, developing, and testing them. Meanwhile, I've also been researching a couple of patterns for an article I'm writing for The Delphi Magazine: Inversion of Control and Dependency Injection. Read more...

Latest articles on CodeFez

February's editorials on CodeFez. Read more...