Goldenseal files store a lot of data: our own company file is 48 megabytes, and it grows by 2 or 3 megabytes a year. Users want quick access to all parts of their data, which requires some rather clever database code to keep track of it all.
Rather than reinvent the wheel, we licensed an “object database” program called NeoAccess, and built Goldenseal around it. However, when we released the first alpha version in 1998, we began to discover some serious bugs. For example, deleting a record had a 1/32 chance of totally corrupting the database. Deleting 32 records was guaranteed to kill the file.
By then the NeoAccess developers were besieged by angry users, and they disappeared rather than fix things. We were in too deep to switch, so we spent 6 months rewriting the worst of their code, and managed to fix most or all of the bugs. We also added a bunch of file diagnostics in the Security menu, so we could look at file contents. Since then, we have gradually made Goldenseal files more and more secure.
This past week we’ve been poking at NeoAccess, and gradually rewriting it to be compatible with 64-bit systems. It also seems like a good time to do some house cleaning. We are trashing unused code, and “refactoring” anything that is hard to understand. It makes the code more pleasant to work with, and often fixes subtle bugs which would otherwise be hard to find.
Turtle Creek Software