Bank Reconciling (Sep 3)

In our current accounting software, it takes several steps to reconcile a bank account. First, you open the window for the account or its transactions. Then you choose Reconcile from the Bank menu. It shows a modal dialog: you can’t do anything else until it’s closed. You fill in a reconcile period, then click a button to load items that haven’t yet cleared.

To get the list, the app must check every bank transaction. It may take minutes if it reads them from a hard disk. Even with an SSD it may take many seconds.

One the list is filled, you mark off items that have cleared. The screen calculates an end balance. Most likely you didn’t enter everything that’s on the statement. So, you hit the Reconcile button to save current changes. Close the dialog and add more stuff. Then repeat until the end balance matches the bank statement.

When we wrote that code in the 90s, 9″ to 13″ screens were still the norm. Not many pixels to work with. Computers had 4 to 16 megabytes of RAM: also pretty tight. We used a framework (PowerPlant) which was very limited. We did what we could, using the tools at hand.

TurtleSoft Pro is a chance to redesign the entire interface, thanks to a better framework and much better hardware. Reconciling bank statements will be a whole lot easier.

The Reconcile dialog is now non-modal. If you’re interrupted, you can do something else and come back to finish later. You can reconcile several statements at once without closing the dialog. Just switch to a different period, or hit the Bank Account popup and switch over to a different account.

We also improved the way bank accounts store their data. It makes record loading much faster.

Right now, the new Reconcile dialog is close to completion. It probably needs a couple more days work to finish off all the details.

There are a eleven more action dialogs to do, but most them are very similar. They’ll go faster. The first is always the hardest.

Once Pay Bills and Deposit Funds are working, we can start to use TurtleSoft Pro for our own accounting. At first, we’ll run it side-by-side with the current Goldenseal. It’s a good way to test the app. We can see whether both versions produce the same numbers, and act the same.

Dennis Kolva
Programming Director

Modern C++ and Compilers (Aug 27)

Goldenseal estimating/accounting software is built from about 1,000 text files. TurtleSoft Pro is similar in size.

To convert all that text into a final app, we use an IDE (Integrated Development Environment). First it was CodeWarrior, then Xcode, then Visual Studio, and now Qt Creator. The most important part of every IDE is the compiler. It checks for errors, then turns the C++ into machine language for the final app.

Compilers are excellent helpers. They catch most stupid typos and fatal errors. They also give warnings for code that is legal, but possibly risky or confusing. Compilers keep getting stricter, which is fine with us.

Meanwhile, the C++ language is also improving. The 2011 and 2014 updates added many features that help make code safer and faster. Unfortunately, the changes caused our code to give over 70,000 warnings: mostly for lack of the new override keyword in our pre-2011 code. It’s one of those changes that makes code a bit clearer.

The huge list of warnings slowed down compile times, and made it hard to see the ones that are most useful. We could have turned off some of the warnings, but it’s good to get them when writing new code. So we just spent a few days to update all the files. Thousands of copy-pastes. Most of the changes were benign, but we did catch a couple of potential bugs in the process.

The warning list is now down to 430 items, and shrinking gradually. Ideally we’ll get it close to zero soon. Anything that’s left will act as a to-do list.

Meanwhile, the estimating interface now looks good. Our staff has moved on to bank transactions and the Reconcile command. Reconcile, Pay Bills and other action commands are the last big and unfinished interface chunk. Once we figure out how to do those, it’ll be down to smaller details. Many, many of them.

Our staff has worked with Qt for about a year now. We’re becoming more fluent with it. Programming is fun when you can whip out a few lines of code and make something happen.

Dennis Kolva
Programming Director

TurtleSoft Pro (Aug 17)

Twenty years ago, the local hippie bank gave us a free marketing analysis. It complained that we used three different names: TurtleSoft, Turtle Creek Software, and Goldenseal. Too confusing, should be just one.

That was soon after we launched Goldenseal 1.0. The advice made sense, but not enough to be worth a total rewrite of printed manuals, website, and everything else. Sadly, was already taken. Otherwise we could have just changed the company name.

The past few years I’ve been calling the next generation Goldenseal Pro, but it’s time to shift gears. Listen to past advice, and abandon the creeks and the goldenseals. Everything will just be TurtleSofts, all the way down.

Once our staff finishes the new interface code, we’ll launch TurtleSoft Accounting, TurtleSoft Estimating, TurtleSoft Payroll, and a few other single-purpose apps. Some of them may have more than one version, with different features and prices. Also TurtleSoft Contractor, TurtleSoft Retail and a few more that combine things for different types of business.

The current full version of Goldenseal will become a mongo TurtleSoft flavor, for the rare souls who need construction estimating, accounting, retail and property rentals all together. For now we’ll call the whole family TurtleSoft Pro. Same features as Goldenseal, and mostly the same interface. But we’ve rewritten about 2/3 of the code.

Some large accounting packages use separate modules: people get the ones they need and run multiple apps. That would make marketing easier. However, using one database to feed multiple apps seems like a recipe for data corruption and disaster. Using a separate database for each app has even bigger problems. So, we’ll stick with the current format, with just one app and one company file.

All versions will use the same database structure, so it will be easy to move from one flavor to another. Just switch the app, and it’s good to go.

Dennis Kolva
Programming Director