Software Source

Introduction

Some people write books or articles, I write software. Writing software is a strange mix of art, as one tries to attain a certain elegance, and engineering, since the software has to correctly perform the function that it was created for. Just as writing a book or an article allows the writer to express their creativity, writing software can be a creative process. Usually this creativity is buried when one writes software professionally, since the software belongs to one's employer. Since a lot of money is spent creating the software, it is rarely made public.

The Web is revolutionary because it allows low cost publishing. And like books, material on the Web should be protected by the first amendment, although this is something that congress does not seem to understand. One of the reasons that I set up www.bearcave.com is to publish the software that I have written on my own time, for my own enjoyment. Just as writers publish so others can enjoy their work, I am publishing my software.

I have not found software engineers to be an overly modest group. This is a trait that gets us into trouble, since we tend to overestimate our skills and underestimate the amount of difficulty and effort involved in new probjects. When I started to think about publishing my software on the Web, the following joke kept occuring to me.

How many software engineers does it take to screw in a light bulb?

Twenty one. One software engineer to actually do the work and twenty to watch and tell each other "I could do it better".

The software published here spans a number of years. For example, the DXF software and the software to build Sierpinski pyramids dates from my early days as a C++ developer. If I were to write this software again, I would do it differently. While it is humbling to look back on software written years ago, the embarrassment is a healthy sign, since it means that I have gotten better. If we don't continue to learn, we become like the computers we write software for.

In some cases the software is not as complete as I wish it were. For example, after weeks puzzling fruitlessly over POLYLINE entities in the DXF file format, I finally decided to leave the DXF conversion program alone and move on to other things. After all, I'm not getting paid for this. It's supposed to be fun.

Development Platform and Dependencies

Most of my software has been developed using the latest version of Microsoft Visual C++, on Windows NT (or 2000, or XP or what ever the minions of The Dark Lord decide to call it). When ever possible, the code is written to be platform independent (e.g., POSIX compliant). In the cases where there are Win32 or Windows NT specific calls, this will be noted in the comments for the code. In some cases the code is tested on UNIX systems as well (freeBSD or Linux).

Contents:

Ian Kaplan, January 1996
Last revised: September 2003


back to home page