About me


I suppose if I expect people to care about what I write here, I should tell you a little bit about why you might care.

In the past 25 years I have worked on Assembly Language TSRs (Terminate and Stay Resident - yes I am that old), I have worked on K&R C and marvelled at function prototypes in separate header files when ANSI C came along, I have buried myself in the intricacies of C++, which like chess is easy to learn, but as you learn more about it you realise just how complex it can be. I moved on to C# and started learning a whole new simplicity.

I have worked on Embedded Systems, Financial Systems, Operating Systems, and Communications and Control Systems, and had the good fortune to travel all around the world to work from Portland to Hong Kong, from New York to Saudi.

I have worked for myself, and worked in companies of 4 people and in companies of 15000.

I do not have all the answers, but I have seen some of the worst and most appalling messes, and also some of the most simple and elegant solutions.

This is not the daily wtf, it is not intended to be. Rather this is about sharing some of that experience.

Many of the things that I have encountered, and many of the things that I have done myself that seemed reasonable and credible at the time turned out to be bad ideas, not quite anti-patterns, although some of them could be called that, but often little things. Little things with nasty after tastes.

Some of the things I'll write about are nice simple solutions, mini-patterns if you will.

When I discuss something, the samples will often be contrived. The problems are real, but confidentiality and in some cases actual NDAs mean that contrived examples are best for all concerned. Also, sometimes the real problems are buried in hundreds of lines of code.

I have had and continue to have the good fortune to work with some very clever people, and many of the lessons that I have learned came from discussions with them. Many however simply came from doing it wrong and fixing it later.

I read somewhere that in one lifetime, you simply do not have time to make all your own mistakes, so you should try to learn from other peoples mistakes too.