Cook Computing


September 23, 2011 Written by Charles Cook

As I sort out things for the move to the US I'm discovering various artefacts from my career as a software developer. These have been stored unseen in boxes in the loft for many years so it is quite a nostalgia trip to see them again. For example, I came across a printed README file for FlexDump, a hexadecimal record viewer/editor I wrote as my first non-trivial Windows application:

FlexDump is a programmer's tool for working on files containing fixed length records. Unlike a typical hex editor where are offsets are from the beginning of the file, FlexDump displays a single record at a time with offsets calculated from the beginning of each record. Thus no more does the programmer have to keep converting field offsets and record number into an offset from the start of the file

This was a good example of writing some software to scratch a personal itch[1] — at work then we were using C-ISAM which stores its data in fixed length records and I needed a way of checking the raw data. At some point we moved to an open-source implementation of C-ISAM called D-ISAM[2] and I spent some time hacking on this to clear up some of its bugs, a useful experience in learning the value of open software. Implementing FlexDump was also a good way of learning an up-and-coming technology — this was the early 1990s when Windows 3 was just beginning to take off.

The README contains a screen snapshot (though I now notice that the file being viewed didn't contain fixed length records, so wasn't a good example; I should have spotted that at the time):

I developed FlexDump on a 386SX[3] machine which cost me around £2000, not much performance for a lot of money in those days. The README mentions the performance:

FlexDump is written in C++ using Borland Turbo C++ version 3.0. However, it does not use Object Windows and could be ported to Microsoft C++ 7.0 without any problems. Turbo C++has been used because it's speed of use of its development environment, necessary because of the rather slow hardware used — a 16 MHz 386SX with 2M memory.

It's difficult to imagine using a machine with only 2Mbyte of memory. I think it also only had a 20Mbyte hard disk.

The README also mentions that FlexDump was going to be released as shareware but I demonstrated it in an interview at Uniplex and got a job as a Windows developer working on the onGo Office project, and so moved onto better things as a Windows developer.

[1] As in the first of Eric Raymond's guidelines for creating good open source software, described in his essay The Cathedral and the Bazaar:

Every good work of software starts by scratching a developer's personal itch.

[2] D-ISAM seems to have survived in this product, via at least one rewrite.

[3] The 386SX had a 32-bit internal architecture but used a 16-bit data bus to reduce the cost of the circuit board.