We’ve finished prep work on our code, and on the remaining bits of the PowerPlant framework. We also updated the NeoAccess database code to be 64-bit compatible. Goldenseal now runs without errors, and it’s ready to start getting Mac- and Windows-specific code.
While we were fiddling with NeoAccess, it was kind of like when you peel off a tiny bit of loose wallpaper, and then it gradually escalates until you’re remodeling the whole house.
Frankly, the NeoAccess database code is poorly-written and hard to understand. It works well, but it’s extremely hard to debug or change. The code does dangerous things even by early-1990s standards. It has worked acceptably well for the past 16 years, but it’s not good enough as is, for the next 16.
This is not the first time we’ve considered giving up on NeoAccess entirely, and we spent a couple days again, looking at other database options. Nothing seemed that great, so it’s time for a complete refactoring job. That means rewriting the NeoAccess code to work the same way, but with language that is safer and more understandable. It makes life easier for our programmers, and usually uncovers and fixes a few bugs that were hidden in the clutter.
We refactored a few parts in 1999-2000, and every year or two since then we’ve tackled a few more sections. Probably half of the NeoAccess code has already been rewritten or removed, so it’s not going to be that huge a project to finish refactoring it entirely.
The past few days we’ve been deleting entire files that seem confusing. It’s a bit like going into a house and removing walls, to see if they are load bearing or not! The nice thing about programming is that we can just ‘undo’ if it’s vital, after everything crashes down. Sometimes it doesn’t, and we have one less page full of cruft to look at.
It looks like we will be able to toss out at least half of what’s left in NeoAccess, and end up with a core database that is lean and reliable.
Dennis Kolva
Programming Director
Turtle Creek Software