Multi-User #2 (Nov 14)

Our staff has started testing the networked version of our new accounting software. A contractor wrote the basic code to connect and send messages between computers, and we hooked it into a modernized version of Goldenseal’s multi-user code.

Like the current accounting/estimating software, the new version works over a local area network (LAN). You can connect either by Ethernet or wireless. One computer holds the company file and acts as a server. Other computers log on as clients. The app looks the same for them, but all data comes from the server.

The new software adds something new: connecting over the Internet. Enter an IP address for the server, then sign on just like the LAN version. A Mac or Windows machine then acts like a regular client, just a bit slower.

We’ll also have apps for Android and iOS to make the connection. Those can’t be full version clients: too small a screen, and not enough memory. Instead, phones and pads will have single-purpose apps to enter purchases, log in employee hours, or enter quick estimates. If there’s enough demand, we can app-ify any record window.

The original plan was that servers would need a static IP address. It turns out that may not be necessary. If you don’t pay for a static IP, your Internet provider assigns you a dynamic IP address instead. It’s easy to look up, and the new app can use that. In theory, dynamic IP numbers may change at any time, but in practice they usually don’t. Worst case, clients may need to switch to a different address to reach the server. We’ll test it for a while and see how practical it is to use dynamic addresses.

The whole IP connecting system has an interesting history.  The current version is called IPv4. Each IP address is a 32-bit number, usually split into four bytes with periods between. It has room for over 4 billion addresses.

When IPv4 started in 1982/3, the Internet was still very sparse, so the 256 top-level numbers were passed out like Halloween candy. Harvard, MIT, Stanford and a few other universities each got one. So did companies like Ford, Xerox and Apple, plus the military. Each of those sat on more than 16 million addresses. The leftovers were kept in reserve for future expansion.

An “oops” moment soon came, later in the 80s. By then the Internet was expanding, and the reserves were already in danger. From then on, IPv4 has survived by squeezing out extra addresses and finding ways to cheat. So far it still works, but some day 4 billion won’t be enough.

There’s already a replacement called IPv6, first developed in 1998 and made official in 2017. Rather than expand to mere 64-bit numbers (18 quintillion, or 2 billion for each person on earth), it jumps all the way to 128-bit numbers (340,282,366,920,938,463,463,374,607,431,768,211,456 addresses, or 9 quintillion for each person on earth). Apparently the planners want a system that can cover the known universe.

Qt supports IPv6, so you’ll just have to enter extra numbers to connect, some day. IPv4 and IPv6 don’t talk with each other at all, which will make things interesting.

Dennis Kolva
Programming Director
TurtleSoft.com

Goldenseal Bugs (Nov 6)

There are 689 records in TurtleSoft’s Problem Log, nearly all of them for bugs in Goldenseal accounting/estimating software. Most showed up during the first few years, then tapered off. This year there was a slight uptick because of old bugs caught while testing the new accounting app.

257 bugs are marked as Completed. Most of the others were fixed long ago, but didn’t get a status update. A few are user bug reports that we couldn’t duplicate.

Recent bug finds are usually small stuff: slightly annoying or very rare. However, last week we discovered a serious Goldenseal design flaw. It may be the cause for some mystery errors. The problem will linger on in Goldenseal, but not in the new version.

One handy feature in our software is linked records. There are many ways to see something related. Some are commands in the View menu. Others are buttons in records. You can also see links from clairvoyant/smart fields and from double-clicks on report lines. All those actions will activate a window, then jump to a record (some buttons start a new record, instead).

The system is nifty, but we overlooked something important. What happens if the window was already open, with an unsaved record? It’s an “edge case”. Probably rare, but it may happen. The code tries to save changes, but if it’s too incomplete to save, the record sits in limbo after another one is loaded. When you quit the app the dud record will disappear, but it may cause chaos before that.

Fixing it took a while because we discovered another problem. The different ways to see links were added gradually, with slightly different code each time. Rather than fix four different functions, our staff combined them so only one change is needed. That will make future upkeep easier.

The new accounting software now warns about the unfinished record, and cancels the link. Slightly annoying, but better than creating a mess.

Dennis Kolva
Programming Director
TurtleSoft.com