Bank Transactions & Layouts (Aug 25)

Bank transactions are the heart of any cash-based accounting software. They track how money moves around.

Goldenseal uses object-oriented programming. For banking, we went overboard with it. There are seven types of bank accounts: cash, checking, credit cards, escrows, investments, loans and savings. Each has their own transactions, which makes 14 object classes. On top of that, there are 5 more for checks, payments, deposits, transfers in and transfers out. Each has a different screen layout, showing slightly different data.

The new accounting app is simpler. There are plain old bank accounts instead of cash/checking/credit cards/loans/savings. The differences have blurred anyhow, thanks to deregulation. Also, there is just one layout for all money going in or out. The change removed a lot of excess code, dropping from 19 classes down to 6.

Using a single layout in the new app was more cluttered, with unused fields causing confusion. This week, our staff fixed that problem. Excess fields now disappear when you switch from a check to a transfer or back. It required some new code that turned out to be very nifty.

In Goldenseal, the title for each field is a separate caption block. Aligning them is a pain, and there’s no way for the code to change their text or hide them.

Bank transactions now create field labels automatically, using text from a resource. They can hide labels or change their text. As a result, banking looks like Goldenseal again.

There are other places that can use the same approach. In fact, we probably should use it everywhere. The advantages: simpler layouts, more consistent spacing, and easier translation to other languages. It’s too big a project to tackle now, but maybe in future upgrades. We can do it gradually.

We also improved another bit of banking interface. In Goldenseal, you can only see transactions for one account at a time. It’s annoying, but we never were able to fix it. The new app shows as many accounts as you want, each in its own tab or window. Major rewrites sure take their sweet time, but they do let us fix basic design flaws.

Every time our staff tidies layouts, we improve Custom Layouts just for our own convenience. The customizing interface won’t be perfect for the first release, but it already looks pretty good.

Dennis Kolva
Programming Director
TurtleSoft.com

TurtleSoft Progress (Aug 18)

This blog started nine years ago. First there was a Kickstarter campaign, then progress reports on the 64-bit update for Goldenseal accounting software.

It’s embarrassing to read posts from the early days. I was so clueless. Back then, the best guess was six months to whip out an upgrade. That’s how long previous updates took for OSX and two chip changes (680×0 to PPC to Intel). Macs still had another 5 years of support for 32-bit apps, so it seemed like plenty of time to spare.

This banner sums up what really happened:

Updating the basic 32-bit code wasn’t bad: it only took a few months. Then our staff spent a year rewriting the basic database engine. Meanwhile, several subcontractors worked on the human interface. All gave up. Moving from an older GUI library (PowerPlant) to a 64-bit framework was just too hard.

Our staff took over, and wasted 3 years trying to build a GUI with Apple’s Cocoa framework. That also failed. The next plan was to go Windows-only. Sadly, Microsoft’s frameworks were even worse than Apple’s. At least we realized it sooner, and only wasted a year.

After a year of Covid obsession, our staff finally tried Qt. It was more successful. After 9 years of struggle, it’s looking good for a software release this winter.

Right now, the biggest snag is real estate.

To run software on current desktops, we need to register the app with Apple and Microsoft, and jump through some hoops. Ditto for a Qt license and trademark. All those things will work better with a new LLC.

Problem is, TurtleSoft has been in temporary quarters since May. When the office vacated and the house sold, there was an extreme drought of home listings. Excellent for sellers, not so good for buyers. The dream of having sale and purchase closings on the same day evaporated. Instead, we scrambled up a month-to-month rental.

Since then, much time has been spent on Zillow and Realtor.com. We visited many fixer-uppers in both New York and Pennsylvania. Hard to incorporate without knowing the final state. Hence the snag for software progress.

Fortunately, more housing has gradually come onto the market. There are fewer snap sales and bidding wars. We compromised a bit, and made an offer on a house near Binghamton NY. It was accepted yesterday.

Closing is in September. We probably can focus more on programming until then. No more hourly checks on Zillow. There will be spells of moving chaos, but those should subside by October. Then it’s time to pick a name, build a beta version, and let folks try it.

Dennis Kolva
Programming Director
TurtleSoft.com

Binary & Linear Search (Aug 8)

If you ever looked up something in a phone book or dictionary made of paper, you probably used binary search. Open to the middle, check which direction you need to go. Split that half in the middle. Repeat until success. It’s faster than a page-by-page linear search that starts at A.

If you ever played 20 Questions, you also used binary search. The same process, only with all possible things. Is it bigger than a breadbox? Does it exist within a mile of me? Is it inside this house? Good questions can find 220, or about a million choices. Only noobs start with “Is it my uncle’s left eyebrow?” That should be question #20.

Last week, our staff found a minor bug in the new accounting software that took a full day to fix. We probably should have used binary search to solve it, but we didn’t. The Reconcile command sometimes showed the wrong name for transfers between bank accounts. Debugging started at the table display and worked backwards. It was step by step all the way to bad data in the file. The conversion from Goldenseal 4.9x skipped a value. We must have run the code 50 times to discover it.

Linear search does have its good points. You start at one end and keep going. No need for fancy splitting. No risk of accidentally missing something. People don’t use pure binary search on phone books or dictionaries. After getting down to a few pages, it’s easier to stop splitting and just go 1-2-3.

Goldenseal is built with a database library that once used pure binary trees, as on the left:

We changed it to eight branches per node (right image), and everything ran faster. Turns out that a mix of binary and linear search works best. Later, we upped it to 32 branches at each node. That was even faster.

The new accounting app uses very broad trees: up to 1024 branches per node. They’re more like creeping shrubs or ground covers. Wide trees are speedy, but they waste space. Right now an empty file starts at 12 megabytes. We may tweak that design before final release.

Dennis Kolva
Programming Director
TurtleSoft.com