BizWrench Lack of Progress (Sept 1, 2026)

The estimating software portions of BizWrench still need testing. Its interface seems to work properly, but we have yet to check the numbers it produces. The easiest way to do that is to compare it to Goldenseal estimating. Both use the same math code, but the new interface may not be connected properly in all possible places.  To catch that, we need to see the errors in action.

Payroll and Project Billing also need more testing time. TurtleSoft uses the accounting software portions every day, so those have been working well for the past couple years. But the parts we don’t use here were neglected.

The ideal testing setup is to have both apps running side by side on the same screen. Since there’s a gap between the OS versions they run on, our staff spent the past several weeks trying to build BizWrench on older Macs that can also run Goldenseal.

First attempt was an install on MacOS 10.14 Mojave, the final version that runs 32-bit apps. We downloaded correct versions of Qt and Xcode, but then stalled out. Qt has “kits” that contain all the fussy details needed to create actual software: compiler version, debugger, libraries, SDK, etc. When Qt is installed for current versions, kits appear automatically. Going back that far, they don’t, and we couldn’t figure out how to set them up manually. Nobody on the Qt mailing list was able to help. As often happens, documentation wasn’t helpful. Ditto for Stack Overflow and similar sites.

Second attempt was to go waaaay back, and set up on MacOS 10.12 Sierra. BizWrench for Sierra would be fantastic, since it’s the final OS that runs DreamWeaver 6 (the app that manages our website). Newer DreamWeavers require a monthly fee that’s expensive for the amount we use it. Even worse, we haven’t found anything decent for current OS versions to replace it, except for Adobe’s monthly fee.

After much trial and error, the Sierra install also got nowhere. The app relies on many different components: Qt Creator app, Qt maintenance tool, Qt libraries, Mac SDK, Xcode app, Xcode command line tools, etc. Each changes several times a year. There is no documentation that explains which ones fit together and which don’t. We tried a few setups, but didn’t even get close.

It will be worth another attempt when we’re ready to fill in the new website. Qt actually ran here on Sierra back in 2017, when a subcontractor worked on a 64-bit update for Goldenseal but failed. Maybe that setup is still on an old hard drive somewhere.

The only remaining option for testing is to fiddle with desk space and get two monitors side-by-side (plus two keyboards and mouse runs). That was easy in the days of smaller monitors. Harder now that screens are half the width of a desk. We’re busy rearranging surfaces now and will get to it soon.

At least TurtleSoft can return to productive C++ programming again. Programming can be serene when it works, but August sure wasn’t. It was a long month of banging heads against walls.

Dennis Kolva
Programming Director
TurtleSoft.com

Padlocks & MacIntel (Aug 10, 2026)

In Goldenseal construction estimating software, each item in an estimate breakdown has a padlock. Close it if you want the app to calculate a quantity; open it to use a different number. BizWrench works the same way.

It’s the approach we’ve used since the beginning. Our first estimating app was Excel-based. It had formulas that you could over-write, but padlocks are better. Just lock them to get the formula back again.

Dimensions screens also have padlocks. A closed padlock calculates a quantity from other measurements, while an open one uses whatever you type in. Those fields calculate the numbers that later show up in the estimate breakdowns.

Our staff has had a hell of a time getting Dimension padlocks to work right. The root problem: there are two types of locking. Some numbers are totally locked because there’s no reason to change them (for example, Total Gross Floor Area, which is just the sum for each floor). Those get a gray padlock and never change. Some fields are temporarily locked with a closed padlock: you can open it, then edit the number.

After a week or 2 of frustration, it was time to bite the bullet and rewrite the padlock code. Now padlocks make fields editable or not, rather than locked or unlocked. Same interface, but true/false values are opposite.

After a bit of tweaking, padlocks worked fine again. No idea where they went wrong. It’s quite possible there are lingering bugs in Goldenseal, thanks to the same confusion.

I’m pretty sure our staff has conquered the last of the GUI challenges in our new estimating/accounting software. It still needs testing to make sure calculations are correct. That is very hard for us to do right now: programming happens on an M3 Mac that can’t run 32-bit Goldenseal, so we can’t run them side-by-side. We really need an Intel build so we can run both apps on the same machine.

It means loading an older version of Qt, then hooking it up to source control and getting it to build. Maybe easy, maybe not. We soon shall see.

Dennis Kolva
Programming Director
TurtleSoft.com

 

Phones & Estimating Progress (July 28, 2026)

A couple weeks ago I camped and hiked in Acadia National Park. Coming down Parkman Mtn (941 feet elev) I had to slide down some rocks on my butt. Having phone in back pocket as per usual was a mistake. Some connection was damaged, so the screen stayed black. The phone still chimed for a few spam calls a day, but otherwise it was useless.

That’s when I discovered how vital smartphones have become. I had a laptop and could access Internet at nearby places, but it hadn’t been used much in the past couple years. Because of that, sites demanded 2FA (2 factor authorization) via a code # by phone.  Nope, can’t see it. That meant no way to order a new phone before getting home. Some sites had the option to verify by email, but email accounts needed 2FA because of the new device.

Fortunately, before the trip started I had the foresight to write down directions to get to the next campground, then home. On plain old paper. I missed some small roads and got semi-lost between Auburn ME and Conway NH, but it was only a few extra miles. Otherwise, the rest of the week was fine. It was just like camping 10+ years ago.

After getting home, ordering a new phone was easy. The old one was almost 4 years old: about average turnover for me. I considered getting a new number to ditch the 3 or 4 daily spam calls and texts, but 2FA was too big a barrier. I’m sure all sites have some way to switch phone numbers, but it’s probably a 5 or 10 minute process. Multiply by 30 or 40 places that use 2FA and it was too daunting.

Meanwhile, estimating in the new accounting software inches along. Some things are just too hard to figure out. We have to fire up an old Mac running Leopard and Xcode 3.0, and see how Goldenseal does them.

The interface looks the same, but under the hood the two apps are very different.

Dennis Kolva
Programming Director
TurtleSoft.com

 

Construction Estimating (July 6, 2026)

TurtleSoft started out in 1987 with construction estimating software for Mac. First was MacNail (Excel), then HyperEstimator and HyperRemodeler, then BidMagic (all 3 in HyperCard), then Goldenseal (C++). Each became obsolete when the platform or hardware shifted under it.

Right now our staff is getting the final bugs out of estimating in BizWrench, our 6th estimating app.  It works the same as Goldenseal, but with totally different GUI code. Estimating has a complex interface, so it is taking a while.

The most recent work is on the dimension system. It has a few screens to enter measurements, with pictures to make the process clearer. Goldenseal already has layouts for that but we can’t use them, since its pictures use a format (PICT) that nobody supports now. We had to do an ugly hack, with code to add the same graphics using a new format.

However, Dimension layouts still didn’t look that great. To improve them, we added code to Custom Layouts so it can choose picture files. There are two different places where it can get images: from a file somewhere on the drive, or from a resource stored inside the app. Both are working now, and Dimensions look much better.

It’s possible that all this work on estimating is a waste of time. The MacNail/Goldenseal style of estimating worked great for Turtle Creek Carpentry. However, going through several screens of dimensions is overkill for most construction companies.

Around here, there are crews that do a complete roofing job in one day. Tear-off, new sheathing, shingles, cleanup. It’s easy to estimate that kind of project with a few simple measurements and “rules of thumb”. Many other contractors are similar.

As with our previous estimating software, BizWrench will be great for anyone doing high-end remodeling and additions. Sadly, there aren’t many potential customers that need its style of estimating. So we will be glad to finish this part of the project. We’d rather spend time on features attractive to other small businesses that number in the millions.

Dennis Kolva
Programming Director
TurtleSoft.com

 

 

Bit Rot #3 (June 11, 2026)

Our staff has been thinking about bit rot lately. Is there anything more we can do to reduce its impact on our accounting software?

To answer that question, we looked at the raw data stored in Goldenseal and BizWrench accounting files. Then we figured the amount of impact that bit flips might have at each location.

Most of the file consists of business records: customers, projects, estimates, sales and other accounts and transactions. About 12% of their bytes are fatal if changed. The app won’t be able to read the data properly, so it will show an error message and give up.

Another 2% will show an error message, but it’s something the app can fix. About 3% is “padding” that has no impact if changed. The remaining 83% is actual accounting data. The record will load OK but something will be wrong.

About half of that fragile 12% is at the start of text strings and item lists (arrays). They have a length byte that says how much data to read. If that number somehow gets changed, the next field will start to read at the wrong part of the file. All data after that will be bogus. In practice, you’ll get error messages. The record probably won’t even load.

In 2017, BizWrench added a 4-byte end tag to arrays. If the file data doesn’t match that, we’ll know that the length is wrong. Theoretically, we can use it to calculate a correct length. Code to do that hasn’t been written yet, but once we see a file with that damage we can write it. It may never happen: bit flips are not that common.

Text strings don’t have any protection, but we just added tags at their beginning and end to make text safer, and more fixable. It hit a snag: Goldenseal files don’t have the tags, and it won’t be easy for our code to handle both options when converting from Goldenseal to BizWrench. Our staff is still looking for a way to do it without changing a few thousand lines of code.

For the 83% that is useful data, both apps have a Clean Up Record command. It corrects about half of the possible data errors. Most of the rest will be annoying but not worse: a bad character in some text, or a link that goes to the wrong place. The only way you’ll even see them is if you go back through old records and look close.

In theory, if we stored all data in triplicate, we could eliminate 99%+ of damage from bit flips. If one byte doesn’t agree, just change it to match the other two. However, if you want extra protection you might as well do it with hardware, not software. RAID storage protects the entire drive, not just our data.

Besides the actual records, our files have an index that locates records. Goldenseal only has the file location in one place, which is fragile. BizWrench store it in four places. We can compare them and fix an bit flips (though we will need to see a damaged test file before we can write the code).

Meanwhile, it’s gardening season. Our staff has not made much progress on BizWrench the past couple of months. That has been the routine here ever since TurtleSoft began in 1987. Planting is just about done, so we are back in the groove starting today.

Dennis Kolva
Programming Director
TurtleSoft.com

Bit Rot #2 (May 11, 2026)

Last December, TurtleSoft lost an SSD drive to bit rot. Some vital control data was zapped, so it wouldn’t mount. The hardware was fine after a reformat, but all data on it was lost. Fortunately, we recovered almost everything from old clones and Time Machine. Still, it was a wake-up call that we needed a better backup system.

Many things can corrupt stored data in RAM or on storage media. Wikipedia lists the gory details for all the ways bits can rot. Data corruption can happen inside our accounting software: its impact depends on exactly which bits went bad. If the app gets corrupted, you’ll just need to replace it. If your data file takes a hit, the impact depends on the damage location. Most bit flips are not very serious, but some are critical.

A long-time Goldenseal user recently reported that the Verify File command gave an error for the list that keeps track of Audit Trail records. The two places that store its address on disk didn’t agree. When they tried to view the Audit Trail, the app gave errors and crashed. That’s because it read from the wrong file location and couldn’t handle the bogus data.

That user kept their Goldenseal file on Microsoft OneDrive, rather than a local hard drive or SSD. It was more convenient, but probably a risky choice. Microsoft’s drives won’t get any more bit rot than yours, but passage through the Internet is one extra place where data can be corrupted. Our software will be more reliable if you store the app and file on a local drive, and use OneDrive or iCloud for backups only.

How often will our accounting files get bad bits? I could not find data anywhere for data corruption rates. It probably has a very wide range, depending on device, manufacturer, age, amount of radiation in your location, the solar cycle. Testing the rate would not be easy, since most bad bits are invisible.

Our TurtleSoft company file probably suffered some bit rot in the early 2000s. A couple hundred breakdowns can’t be reached because of a corrupted database index. Hard drives were less reliable back then. The conversion to BizWrench fixes most of the bad records: there is a second way to locate them, and we use that instead.

Practically speaking, most of our accounting software users will never see bit rot. You probably will do OK by having a good backup system. Also, run Verify File occasionally to make sure there are no serious data problems. It won’t see simple flips that change some text or a number value, but it will report damage in any key areas that have serious consequences.

If you want to spend extra money and get more reliable data storage, set up RAID-Z. It uses multiple drives, with a more reliable file system that greatly reduces the risk of data loss from bit rot or drive failures.

Dennis Kolva
Programming Director
TurtleSoft.com

Estimates/Categories/Breakdowns (April 16, 2026)

Our estimating/accounting software uses Category Systems to handle all possible ways to organize projects and business expenses. They show up everywhere: in sales, in every type of expense, and especially in construction estimates. For those, you usually use a breakdown table that lists all the components. Each line item has 4 columns which help you zoom in on a one specific bit of work, out of 1000+ possible items:

Cost Area: Assemblies, Labor, Materials, Subs, a percentage, etc.
Category: Concrete, Framing, Interior Trim etc.
Subcategory: Floor Framing, Wall Framing, Roof Framing etc.
Cost Item: 2×4 16″ oc, 2×6 16″ oc, 2×4 24″ oc, etc.

We’ve had a hell of a time getting that to work right in our new accounting software. It’s mostly because of a bad design choice we made for breakdown tables in Goldenseal. They are similar to Excel, with a grid of identical cells that could be anything. Because of that, there’s tons of code that IDs a cell by row and column #, then acts on other cells (also by row and column #).

Our staff recently spent a few days trying to add Row objects. In theory they are a much better way to handle the whole category/subcategory thing. We definitely would design it that way now. However, using them to replace the existing system just got too complicated. Rewriting the worst parts of the old code has helped some, but mostly we just need to keep slogging at it until everything works correctly.

Estimating breakdowns also involve smart fields and table popups, two more GUI elements that are complicated. They have been working well in regular data entry screens, but tables are different.

Once we get BizWrench estimates acting just like in Goldenseal, the app will be ready for a version 1.0 release. Hopefully not too much longer.

Dennis Kolva
Programming Director
TurtleSoft.com

Debugging Tools (Mar 26, 2026)

Goldenseal accounting software still had a few database bugs in version 1.0. We finally caught them all after adding the Verify File command. It checks every record, and reports any problems.

A couple weeks ago, our staff discovered a bad record in BizWrench. We’ve been using Verify File regularly, but it had a bug so it didn’t actually check every record. Oops. That’s fixed now, and the command really checks everything again.

Using Verify File on 26 years of data got slower and slower, which was yet another bug: a memory leak. Records weren’t releasing properly. To fix that one, we improved the Cache Report: another debugging tool which lists what’s currently in RAM. The record cache now includes extra details which will make future debugging easier.

With that overhead out of the way, our staff is back to fixing smaller and simpler bugs again.

BTW the TurtleSoft company file has a big chunk of corrupted records, left over from the early days of Goldenseal. Converting to BizWrench fixes almost all of them.

In theory, we can use the same code to fix any future damage in BizWrench files. Some files probably can be repaired and keep going. If the damage is too severe, there’s another option. Time Machine on Macs makes it easy to store daily backups, so the goal will be to salvage recent data from a damaged file, and merge it into an older file that’s OK.

It will be a nifty feature, since there are plenty of other ways for file data to be corrupted: OS bugs, hardware bugs, cosmic rays, radioactive decay. It’s called bit rot.

The conversion code will need some tweaking to make that work, and also an actual damaged file to test on. A project for next year, or whenever a test subject turns up.

Dennis Kolva
Programming Director
TurtleSoft.com

 

Server Switch & Progress (Mar 19, 2026)

TurtleSoft is switching to a different website server. Same company, but more capacity. There may be slight chaos for the next couple days.

(Mar 20 update: everything is moved over and working well).

Meanwhile, work on our new accounting software is still progressing. The current target is the cost type/category/subcategory/item cells in breakdown tables.  It’s a collision of three of the most complicated app areas: breakdowns, smart/clairvoyant fields, and category systems. It’s also important for estimating, purchases, sales, and just about everything else. The old code was scattered all over and hard to maintain, so we are moving it into one place.

While testing Material Purchases, a bug turned up in the database code (something we haven’t seen in 2 or 3 years). It had the potential to zap a record or two during the conversion from Goldenseal to BizWrench. That’s fixed now. It was a lucky catch: that kind of weird/random error can cause weeks of frustration.

Dennis Kolva
Programming Director
TurtleSoft.com

Checkbooks & Member Tables (Feb 27, 2026)

Our staff has spent way too much time during the past month, dealing with support for multiple checkbooks in our new accounting software. Most of it is working now, but the list of checkbooks in bank accounts still has problems. Ditto with rental units in Real Estate accounts.

Support for multiple checkbooks was important for TurtleSoft in the late 80s and 90s. There was one checkbook in the office, plus a travel book we used while putting on training classes across North America. Some of our construction company users probably also had one checkbook in the office and another in the truck or on the jobsite.

These days, TurtleSoft only writes a few paper checks a year. However, checkbook support is in the app and we couldn’t just abandon the feature. So we’ve slogged away at it.

Getting Pay Bills and Write Payroll to let you choose a checkbook took a surprisingly long time. The old code was not designed very well, so it needed a major rewrite. The hardest part was figuring out how we did things 26+ years ago so we could make it work again.

Likewise, that list of checkbooks suffers from changes made to the original Goldenseal design. The different types of bank accounts are now just a popup menu rather than separate windows. Layouts for screen appearance are text, not binary data. And data entry screens use Qt code, which sometimes still relies on Goldenseal, but sometimes does stuff on its own.

It doesn’t help that tables inside accounts where hacked together by our least-good programmer in the 1990s. We are rewriting some of the code now, just to understand how it works.

The only good news is that this probably is the last of the accounting work needed for BizWrench. However, we still need to do serious testing on the construction estimating bits.

Dennis Kolva
Programming Director
TurtleSoft.com