Goldenseal Pro for the Cloud (Aug 25)

Every week or two, we get unsolicited phone calls from companies that migrate desktop apps to “the cloud”. It’s known as SAAS (Software as a Service). Usually they ask a lot of questions and try to sound like buyers, before revealing the real reason they called. However, still not as annoying as the almost daily “Hi, this is Heather…” scam calls.

Basically, SAAS means that the Goldenseal app will run on a server somewhere, instead of on your own computer. Your company file will also be stored on a server somewhere, and you’ll run it over the Internet. It’s pretty much like using a website.

The plus side for you is that you can access your data from any desktop or laptop computer that has an Internet connection, and you don’t even need to install Goldenseal. Up-front costs are also lower. The plus side for us is steadier cash flow, since it’s a monthly payment instead of a one-time fee. It’s why QuickBooks is aggressively moving all users to their monthly cloud-based service, and gradually abandoning their desktop apps. A monthly fee is more lucrative than forcing people into upgrades.

The minus side for you is that you can’t access your data if you don’t have an Internet connection (or stop paying the monthly fee). It’s also more expensive in the long run. The minus side for both you and us is that your data is totally dependent on someone maintaining those servers properly. One potential problem is plain old data loss, if there is an unfortunate sequence of events that kills both their main data storage, and the backups. A more subtle (and more common) problem is a data breach, where some stranger suddenly has all your company records.

We do not want to get into the server maintenance business. Even if we have incredibly smart people tending things, there are always smarter people with more time on their hands, trying to breach whatever security we have. It’s just too risky. We don’t want to be worrying all the time about losing or spilling other people’s vital data.

Likewise, we don’t want to be trusting all those small companies who are calling to offer SAAS services. It just adds one more layer of risk, since we don’t know how good they are at security. If they fail, we and our users are the ones that suffer, while they can quietly disappear.

There are a few larger companies that offer SAAS. So far we haven’t done much investigating of their services. It doesn’t make sense to do so before Goldenseal Pro is out the door. The computer industry in general has been very sloppy about data breaches, so even the biggest providers will have some risk. SAAS sounds great in theory, but it adds more failure points.

Our vision for Goldenseal Pro is to let you run your own data server. It will still depend on regular backups and decent network security. Fortunately, both Windows and Mac OS provide those features, without much effort. You really should use Time Machine (Mac) or File History and Windows Backup/Restore (Windows) for all your data, not just ours.

Despite the problems, it still may make sense for us to offer a cloud-based SAAS service, if only because it’s becoming so popular. We’d appreciate hearing opinions about it from users, and potential users.

Dennis Kolva
Programming Director


Goldenseal Pro for Smartphones (Aug 12)

Many people have asked if we can put Goldenseal Pro on a smartphone. Unfortunately, the answer is a resounding “no”.  The hardware is too underpowered, the screen is too small, and the operating systems (iOS and Android) are simply not designed for building complex desktop apps.

However, what we can do is build multiple small smartphone apps that each do one thing, and “talk” with the home company file back on your desktop.

Android and Cocoa Touch (the Apple framework for mobile) both have excellent support for communicating via html. We can package our data easily into something called JSON, for sending between devices. The hard part will be getting the desktop version of Goldenseal Pro to act as a web server, so the mobile apps can connect to it via html. If that isn’t possible, we can use a VPN (virtual private network) or something else.

We already need to rewrite our current desktop networking code to run under Cocoa and MFC, and it would sure be nice if we can use the same code to connect all types of devices.  Right now Goldenseal uses TCP/IP sockets to communicate between desktops, but it’s time to consider other approaches. To test them, we’ll need at least a prototype version of a smartphone app. The best tool for that will be an app for iPhone and iPad, using the new Swift programming language. We will start with something very simple, like entering a purchase or viewing the contact log.

Prototyping is a gradual process, so we’ve started on it now, and will mosey along on it over the next year or so.  The goal will be to have it functional by the time we start work on networking, which is probably a year off. 

Networking code is very hard to write. In the past we subcontracted most of it. However, if we can use something that is built into the operating systems, we may not need to.

Dennis Kolva
Programming Director


Goldenseal Pro and C++ (Aug 3)

For the code that runs Goldenseal, we use the C++ programming language. C++ was first developed in the early 1980s as an object-oriented extension of the C language, which was introduced itself in the early 1970s.

C is currently the second most popular programming language (behind Java). It’s often used to write operating systems (Windows, Unix, Mac OS), code libraries, and imbedded systems like the one that runs your car or truck. C++ is the third most popular language (per Wikipedia). It is better suited for large desktop apps like Goldenseal. The object-oriented features make it a teeny bit slower, but they also make it much, much easier to program big projects.

C++ was first “standardized” in 1998, with a set of “standard libraries” for handling many basic programming tasks. At that time, we were already using PowerPlant, a similar framework written in the mid-1990s. We used a few of the new C++ standard library features, but for most, we already had a decent version from PowerPlant.

Since then, C++ had a minor update in 2004, and then big upgrades in 2011 and 2014. Another is due this year. Unfortunately, we couldn’t use the many new features and improvements in the C++ language until we updated from 32-bit to 64-bit. That broke most of PowerPlant, so we started using a few of the new C++ features two years ago, to replace the old PowerPlant code.

Some programming work requires intense “focus”. Basically, the programmer needs to immerse in the entire system for days on end, and not think about much else. It’s similar to what you need when working around high-voltage electricity, or on steep roofs. But it goes on for weeks, not hours. It takes a day or two to rev up.

We left some of the interface work unfinished in May. The weather probably won’t suck enough until October, to start back on it again. Dealing with the quirks of Cocoa, MFC and Objective-C require lots and lots of focus. However, there are simpler things our staff can work on, even with summer’s distractions. Some programming is fairly routine, and can start and stop at will. It’s more like, say, painting walls or mowing grass.

We are currently going through the C++ 2014 standards, and picking out things we can use now, to improve Goldenseal Pro. There is some really nifty stuff in there.

Some of the features will help us do a better job with the networked apps. Some will help support multiple threads (e.g. use the Find command, and then do something in another window while it runs).

Many of the improvements are “safety” features, which allow code to not crash or run out of memory. We already have ways to accomplish that, but modern C++ does it better, and more concisely. Some things make the code stricter, so the compiler will point out stupid errors. Using the new C++ libraries means we will accidentally fix a few bugs, and prevent more in the future.

There are a few things we can probably change with a huge text-replace. Most will require looking at hundreds or thousands of code bits, and deciding what to change. It is all stuff than can be done gradually. We’ll work on it now, and probably will be doing it for many summers to come.

It’s invisible work, but it will make Goldenseal Pro more reliable, and easier to program and maintain.

Dennis Kolva
Programming Director