Our staff is making good progress on Goldenseal Pro. The part-time schedule is great. Too much programming time means getting fat. Too much construction work means carpel tunnel syndrome and other joint problems. This is close to the sweet spot in between.
Last summer we hired an experienced QT contractor to write a prototype. By now we have replaced almost all of his code, but it helped to get a running start. The code had a few ‘tricks of the trade’ that we didn’t have to learn the hard way. It definitely was worth $500.
When we first tested the button to make a new record, the app gave a weird database error. It turned out to be an accidental infinite loop. Within a few seconds it filled the file with the maximum number of records that it can hold: 65536 x 4096, or about 1/4 billion. Oops.
Until we ship, those numbers aren’t fixed, but we probably won’t change them by much. It’s a balance between maximum capacity, empty file size, and code complexity. We’ve used Goldenseal f0r 20+ years for our own accounting, and aren’t even in the millions of records yet. So 250 million is very conservative. The file size for that is about 500 gigabytes.
The app now gives a better warning when it starts to get close to the max, just in case someone really creates humongous data. It asks the user to contact Turtlesoft so we can program in a higher limit. It probably will only take a few days of programming and testing to add support for multiple billions of records, but there are more important things to work on right now.
Goldenseal Pro has a lot of interface, which means many small details to finish. So far, QT is handling them well. We’re just about ready to start working on breakdown tables: the most difficult task. It’s where both Cocoa and MFC stalled out. It seems very likely that we can make it work. Then it’s just matter of time to complete everything else.
Six years ago, we hired a different QT contractor to build the first attempt at Goldenseal Pro. He gave up after 6 months. Afterwards we checked his work to see if it was worth salvaging, and decided it wasn’t. That was a fateful decision. After ruling out QT, we subsequently threw away five years trying to build Goldenseal Pro with other frameworks (Cocoa and MFC). First with other contractors, then with our own staff.
I think the difference is that the original guy tried to change all of our existing interface code into QT classes. It made a big, complicated mess, and was extra work besides. No wonder the project failed.
Starting over, our current approach is to use new QT classes for what’s visible. Then link it into our existing code. I suppose it helps that we already did that with two other frameworks. Our staff has learned some stuff along the way. Maybe we only wasted two or three years instead of four.
Oh well. Creative work is hard. It’s not the first time we’ve wasted time, or thrown away big hunks of code. What counts is actually finishing an app. This time around, it’s looking pretty good.