My Articles

published: Tue, 12-Aug-2003   |   updated: Sat, 6-Aug-2016

One of the things I enjoy doing is writing, especially writing about algorithms and development methodologies.

Why? Well, several reasons I suppose. First is that the study of algorithms is based in mathematics, and that's the subject I got my BSc degree in at Kings College, University of London, way back in 1979.

Second is that algorithms and data structures have been fascinating for me ever since I bought two awful libraries for Turbo Pascal. The first was a library for reading and writing Lotus 1-2-3 files (I no longer have the code unfortunately). It was so bad that it would write Lotus 1-2-3 files with one cell that Lotus couldn't read. I rewrote it all and had many a happy hour writing the expression parser for the cell formulas. The other library was an extremely inefficient implementation of some standard data structures: linked lists, trees, etc. Again, I disliked the code so much that I rewrote it (some parts turned out to be over 10 times faster) and it became EZSTRUCS, and eventually EZDSL.

Third is that I just enjoy teasing out complex algorithms into efficient code.

This website contains lots of articles on various subjects, all published here for the first time. Sometimes I write articles for other people or sites and these are collected here (as much as I can, but note than some of these links are broken).

Mixture of articles published on CodeFez:

(Note that these have now disappeared from the CodeFez site. One day I'll resurrect them here.)

CodeFez

If you think things seem a little thin around here, there's only so much of me to go round. (My wife would probably say, justifiably, that there's too much of me to go round: I should diet and exercise more...) Anyway, starting last Saturday, 6 November, CodeFez opened its doors. Read more...

My other writing home

For completeness' sake, here is a list of my November articles on CodeFez. Read more...

Latest articles on CodeFez

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

Latest articles on CodeFez

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

Latest articles on CodeFez

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

Algorithm articles published elsewhere:

A variety of sources.

Writing Parsers in C# (part 4) - Building the target

The fourth in a series of implementing parsers. This installment [link broken] shows how to modify the parser class hierarchy in order to build the target object. To be continued... (C#)

Simple Pattern Matching

It seems simple enough: how do you match a pattern with ? and * wildcards to a string? Well, actually it is pretty easy once you take care of the boundary cases: see how.... (C#)

Writing Parsers in C# (part 3)

The third in a series of implementing parsers. This installment [link broken] introduces parsers as a class hierarchy: OOP gone crazy! To be continued... (C#)

Calculating the ISO week number for a date

Someone asked this question on The Code Project: how do you calculate the ISO week number for a given date? See how... (C#)

Calculating the number of months & days between two dates

This is still something that developers think is easy. It isn't and just shows that they haven't thought enough about what answers they expect. Check out why... (C#)

Writing Parsers in C# (part 2)

The second in a series of implementing parsers. This installment [link broken] lays down some of the groundwork for parsing a URI (Uniform Resource Identifier). To be continued... (C#)

Writing Parsers in C# (part 1)

The first in a series of articles on implementing parsers. This installment takes it easy by describing how to parse a comma-separated values file (CSV). And it's not just a case of calling String.Split(). (C#)

Ask A Thousand Times

How do Google and the other search engines generate results so quickly from a simple couple of words? It can't just be processor power. Explore how to index a large set of documents so that searches are almost instantaneous. (Delphi)

Gilding Pale Streams

Streams are a great invention; in fact, so good that you should embrace them wholeheartedly in your code. This article explores various extensions to the Delphi TStream class to help you. (Delphi)

What's the Difference?

A problem that keeps on rearing its head and nobody seems to know how it's done is the problem of working out the changes from one file to a later version. Find out how with this article. (Delphi)

The Slithy Tove

I was browsing around the dark nether regions of my hard disk and came across my very first published article. For fun I present it here: understanding the overlay manager in Turbo Pascal 6.0.