Typica: Software for Coffee Roasting Operations

Virtual Machines to the Rescue

The Mac build of Typica 1.8 was disappointing to me on many levels.

This starts with the Typica 1.7 release. Shortly after getting the final Mac build for that version, the computer that I was using to compile Typica on a Mac died. I've mentioned before that developing Typica costs considerably more than the money coming in to support that work and as a result, fixing that machine was not going to be in the budget. As a result of this, I was not eager to put out another release based on the 1.x code base.

When it became clear that there was still too much work to do on Typica 2.0 and enough features had built up that I really needed to get a 1.8 release out, one of the sticking points was getting a Mac build put together.

Typica makes use of a framework known as Qt. This handles a lot of the platform differences among Mac, Windows, and Linux operating systems and provides a lot of the building blocks that make it possible for me to continue writing this software on my own (after about a decade, people have expressed interest in contributing code, but nobody has followed that up with a code contribution), but Typica is still on Qt 4 and using parts of Qt that are deprecated in Qt 5 that just don't have a good replacement. Typica 2 will move to Qt 5, but the architecture of the program will be substantially different because of it.

While building Qt 4 on Windows or Linux isn't problematic, it's a different story on a modern Mac. I ended up turning to Homebrew to get something working in time for release, but it turns out that some of the features that Typica uses were broken in those libraries. The most noticeable is that all of the graphics in reports were messed up (mostly not present, though some were partially and uselessly visible) and I failed to notice this until after the release went out.

The other major issue was that previously Typica probably worked on Macs running operating system versions as old as 10.4, but the 1.8 release bumped that substantially. It may have worked on 10.7, but it definitely would not have worked on 10.6. I still have a machine at work that cannot be upgraded past 10.6.4, so that machine would be stuck on Typica 1.7 unless that could be sorted out.

Since both the graphical issues and the minimum OS version issues were not related to any new code in Typica but just how the program and its libraries were compiled, I decided to take some time over the weekend to fix that.

The solution was to take a modern Mac and put VirtualBox on it, install an old build of Mac OS X in a virtual machine, and recompile Qt with all of the features that Typica needs in that virtual machine, followed by rebuilding Typica there. I decided to set up two VMs while I was at it: one with development tools for building Typica and the other without for deployment testing. Finding appropriately vintage tools was more difficult than setting this up, but most of the time spent on this was just waiting for things to compile. Now I have a working Mac build of Typica 1.8.0 that doesn't suffer the graphical regressions in the current release and while it probably still won't work on 10.4, it does work on 10.6 or newer.

Fortunately, there's also at least one new feature that's useful enough to warrant a quick 1.8.1 release that will be available as soon as I can get it ready. Some of you may have noticed that Phidgets has a new product line out and with that, a new version of the library used to communicate with their hardware. Communication surrounding that release was pretty poor so lots of people have been trying to use the new library with software that hadn't been updated to use that. The new library makes no attempt at even source compatibility so everything that was using the old library needs an update with newly written code before it can make use of the new library.

Phidgets Inc. was kind enough to provide some hardware in their new line so that Typica can be updated to work with that and with the new library. I might get a couple other little things in before the 1.8.1 release as well.

If you'd like to help support ongoing development of Typica financially, it's now easy to pay what you want with your credit card.