Goldenseal Pro- starting new code

Last week we listed the Pro project on and UpWorks, and we are talking to subcontractors again.  A few seem very promising.  However, we are also continuing our own programming work on the project.  If we do subcontract the Mac and/or Windows versions, doing some coding now will help us to supervise better.  If not, we’re on our way to getting it done in-house.

Our C++ code and the remaining bits of PowerPlant are pretty solid, and probably are ready to start hooking into the new system calls.  However, the NeoAccess database code uses a lot of “C-like” C++ which was not considered good practice, even back in the mid 1990s.  We’ve started to rewrite it using modern C++ functions, which make the code much safer and more reliable.

We are also searching out and finding sample code for the basic functions in Goldenseal, so we don’t have to re-invent the wheel.  Apple provides some, and there are also many other Cocoa projects online.  It’s much easier if we can start with code that already works similarly to what we want, and then tweak it to meet our needs.

Dennis Kolva
Programming Director
Turtle Creek Software


Refactoring NeoAccess

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



Blog Users Change

Unfortunately, this blog is being deluged by bots that create a blog user account, and then add a SEO link in their account description, and/or attempt to crack our admin account.

We just deleted a few thousand spammy user accounts, and changed the settings so users can no longer set up accounts on their own.

If we accidentally deleted your user account (or if you would like to set up a new user account to post messages), please contact us and we will create one for you!

Goldenseal data

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.

Dennis Kolva
Programming Director
Turtle Creek Software

Small Goldenseal Apps

Prep work continues on Goldenseal Pro.

Our long-term plan is to make Goldenseal more mobile: with company data that is accessible from anywhere, from any device.

Laptops can run the current Goldenseal, but phones or tablets use a much “lighter” operating system (Android or iOS).  They have less memory, slower speeds and smaller screens, so there is no way we could run the full Goldenseal on them.  Instead, we’ll need to have multiple small apps that each do just one thing: enter a purchase or employee hours, prepare a simple estimate, print out a customer bill.

We are seriously considering switching to the same approach for desktops and laptops, also.  Instead of running one Goldenseal app for everything, you’d double-click on one icon to enter employee hours, and then another one to write payroll.  It might take 20 or 30 of them to do everything that Goldenseal does now, but most people would only get a few of them.

On the plus side, it will look exactly the same on desktop or mobile. Easier for us to design, and easier for users to learn.

The biggest minus is that existing users may not like it, but we can always just keep the existing apps that do everything.

This is a bigger change of direction than we planned a year ago, so we’d appreciate any feedback that users may have to offer…

Dennis Kolva
Programming Director
Turtle Creek Software