Goldenseal Progress Report- Sept 30

Goldenseal Pro now connects from the database to the display windows, which is where our previous contractor got “stuck”.  It was very exciting, the first time it showed a list of categories!

The Goldenseal app includes several hundred layout resources, used for data entry screens, reports and printed forms.  In the original Goldenseal they were stored as resources, embedded in the application file.  The modern approach is to store them as separate files, hidden in an ‘application bundle’.  So we wrote some one-time code to translate all the layouts to the new style. Now we are working on the code that reads them, and sets up the fields and buttons on-screen.  Getting that to work is the biggest task in the whole project, and it probably will take a few weeks to complete.

At every design step, we need to decide where to draw the line between Cocoa and our existing C++, but we are using Cocoa as much as possible.  It means rewriting more code, and spending more time learning the ins and outs of Apple’s framework, but it ought to result in a better interface (and better compatibility with future OS versions).  We used a pure-Cocoa setup for the list of categories, and it seemed worth the extra effort.

Dennis Kolva
Programming Director

Goldenseal Pro Progress Report- Sept 20

We are gradually ramping up the programming work on the Mac version of Goldenseal Pro, accounting software.  

After starting on the interface classes, we soon realized that almost everything needs to be written in Objective-C. That is the only way to hook into our existing C++ code.   We were really psyched to use the newer Swift language, but switching between three different languages drove us nuts.  Partly because different concepts, but mostly because the punctuation is very different. So, Swift is out, unless we find good reasons to use it later.  We will still use Swift for future iPhone/iPad development, because that will be entirely new code that won’t need to integrate with anything old.

Back when we tried subcontracting the upgrade work, the contract had 6 payment draw stages of approximately equal sizes.  Draw 1 is to open a list window (for example, anything from Options-Payment Terms), and then view and save list records.  Now that the programming work is in-house, we will use the same milestones.

We are still climbing the learning curve for Objective-C, but the Pro version already has menu commands that open windows and show a list of items. We still need to link it to the database and have it load screen layouts, then that will finish draw 1.  This is also the time to design many basic structures, which is good reason to take it slow, and do it right.

The Cocoa framework was developed in the mid-1980s for the NextStep computer.  It’s a ‘black box’ with many nifty features, but it can be challenging (especially for large apps like ours). We aren’t the only ones who still need a major rewrite: Microsoft is finally releasing their first Cocoa and 64-bit code this year, in Office 2016. 

On the plus side, Cocoa lets you build a lot of interface with very little code.  It’s going to allow some nifty improvements to the Goldenseal user interface. For example, popup buttons you can access from the keyboard.

On the minus side, Cocoa is hard to debug, and lacking in practical documentation. We have been perusing open-source projects, just to see how other people handle ‘the basics’.  Cocoa is also changing constantly, so at least half the answers for it in Stack Overflow are outdated and incorrect.  We have learned to check the date on all books and online info.  Much before 2013 and it is probably wrong. Anything after 2014 will be for Swift, not Objective-C. The ‘sweet spot’ is very narrow!

Some year soon, Apple will probably change the Macintosh from Intel to their own ARM chips.  Most likely they will also replace Cocoa with a new Swift-based OS, though that will be an enormous project.  We’ve learned our lesson, and are now designing things so the next remodeling round will be easier.

Dennis Kolva
Programming Director

Goldenseal Pro Progress Report #10 (Sep 6)

Our staff now has a decent grasp of the new Swift programming language, and the basic Cocoa libraries.    It will take a few months to get fully up to speed, but we are ready to start coding.

Our contractor wrote quite a bit of startup code in Objective-C, and we are reviewing it now to see how much can be salvaged.  We may need to start over entirely, but it’s worth spending a week to understand his code, and decide what to keep (and how to merge it).  If nothing else, we need to learn enough Objective-C so we can link our C++ to Swift.

It took us about 2 months to move Goldenseal from Mac OS 9 to X, and 2 weeks to move it from PPC to Intel.  Unfortunately, this is going to be a bigger transition.  Hard to estimate right now, but it will be months, not weeks or years.  A lot of the time will be “learning curve” that will pay off when we start writing apps for iPhone and iPad.

Dennis Kolva
Programming Director