Goldenseal Pro Progress: Monopolies (Feb 21)

Ithaca has five new-car dealerships scattered along the main drag. Years ago they were independent, but one of them started to buy up the others. Now they’ve gobbled all five, and are expanding into nearby towns and cities.

There’s a lot to be said for owning a monopoly. You can charge your customers more. You can pay less to your sales and repair staff. Where else are people gonna go? Even better, you can use the excess profit to expand and/or purchase the competition, and get even more monopoly. It’s a positive feedback loop. A chance for exponential growth. One reason why the rich get richer.

Doing business with a monopoly? Not so great. Fortunately, there still are independent repair shops in town. It’s also possible to drive an hour and get dealer services for 1/2 to 2/3 the local price. Both those options may dry up if the trend continues.

Sadly, more car monopoly is likely: dealerships are consolidating everywhere. The local group isn’t even in the top 150 for size. Their industry is following the same path as banks, auto parts stores, lumber yards. However, the difference is that auto dealers already have franchises: a local monopoly for one or a few brands. Merge them, and it’s like owning every bank in town. Hedge funds must be drooling.

Monopoly is a problem we face as a construction software company. TurtleSoft is a minnow swimming in a sea owned by trillion-dollar tech monopoly sharks.

The Apple/Microsoft desktop duopoly doesn’t mean higher prices for us. In fact, their development tools are free. The problem, I think, is a more general arrogance. It happens when wealth and power get concentrated. No competition, so no need to make their tools excellent. If it takes 4x as long to build for the platform, well, that’s just the cost of entry. Suck it up.

Plain old incompetence may also be part of the problem. Too many pointy-haired bosses in the decision chain. Or maybe there is something else at play. Minnows can’t easily understand sharks. All they see is skin, teeth and turbulence.

For whatever reason, we wasted more than 4 years with Cocoa/Xcode from Apple, and MFC/Visual Studio from Microsoft.

I did a post-mortem recently, looking back at all our past successes and failures. They very much correlate with monopoly.

TurtleSoft started with MacNail, estimating software based on Excel spreadsheets. It was back when Microsoft was the scrappy underdog struggling against Lotus 1-2-3. Later we released BidMagic, made with Apple’s HyperCard when they were the scrappy underdog competing against IBM, DOS and Windows. Next came Goldenseal, built using CodeWarrior from Metrowerks. They were the smallest, scrappiest underdog of them all. CodeWarrior was also the best tool our staff has ever worked with.

In all three cases, I think the scrappiness led to excellent programmer tools. They had to be amazing, or die. The end result for us was being able to create software in a reasonable amount of time. The tools were satisfying to use. Almost fun. Definitely productive.

Sadly, all three of those tools lost their greatness prematurely. Excel grew bloated after Version 3.0, with a bug that randomly zapped code in our macro sheets. HyperCard stagnated and soon disappeared. Metrowerks was absorbed by Motorola. After a few years they butchered CodeWarrior and sold its organs.

Scrappiness does not guarantee great software. Over the years we’ve tried at least a dozen development platforms that didn’t work out. Some came from big fish, but most were made by minnows that later died. It’s always a gamble.

Fortunately, Qt is proving to be like the 3 best development tools we’ve used. Every week it lets our staff make serious progress on Goldenseal Pro. Things are really cruising.

In the future, TurtleSoft will be less tolerant of BS from the trillion-dollar companies. They lost something important, getting to be so big.

Looking at the bigger picture, monopolies may have grown too powerful. There’s too much concentration of wealth and power these days. Too much arrogance and incompetence.

It may be time again for some Teddy Roosevelt-style monopoly busting. Clamping down probably won’t help car owners around here, but at least it can rein in the biggest of the sharks.

Dennis Kolva
Programming Director

Covid-19: Vaccines (Feb 15)

From 2008 until 2013, I went back to Cornell part-time to finish up a BA in Molecular Biology. It’s an interesting field that didn’t even exist during my first shot of college. Mol Bio kinda squoze into the gap between Biochemistry and Genetics, with big help from the Human Genome Project.

Molecular biology is the reason you can get vaccinated for Covid-19 now. Previously, it took a minimum of 4 years to develop and test a vaccine. What sped things up is mastery over the big molecules of life: DNA, RNA and proteins.

Derek Lowe is a molecular biologist who blogs for Science magazine. He’s an expert on diseases and vaccines, but he writes for mere mortals. If you want to make intelligent decisions about Covid-19 vaccines, here are links to some of his recent posts. They are way better than anything you’ll ever see on Twitter or Facebook.

B Cells, Infection & Vaccination
Pfizer/Moderna Vaccines
J&J and Novamax Vaccines
Oxford/AstraZeneca Vaccine
Vaccine Production Myths
Why Lower Efficacy Isn’t That Bad (Vox)

I’ll try to summarize vaccine results so far, in very over-simplified form.

The first Covid-19 vaccines approved in the US were RNA vaccines from Pfizer and Moderna. Both require two jabs, with about 94% efficacy at preventing infection. They use mRNA that includes the code for Spike protein. It’s stuffed into a tiny sphere of fats, cholesterol and probably some proteins. Composition and size similar to a Coronavirus, or like LDL “bad cholesterol” plus RNA. When injected, the nanoparticles are absorbed by muscle, lymph and liver cells. Inside them, the mRNA hooks up with a ribosome, which uses its sequence to build Spike proteins. Some Spikes leave the cell, float around, and trigger the immune system. Later, a real Coronavirus comes along, but immune cells recognize its spiky bits and send in the killers. Protected!

The Oxford/AstraZeneca, Johnson & Johnson/Janssen and Sputnik vaccines use a different approach. Instead of nanoparticles, they deliver via a modified Adenovirus (a mild virus that causes sore throats, pink eye etc). The DNA code for Spike is spliced into its genome. After injection, the virus infects some human cells. Its DNA sneaks into their nucleus and is transcribed into mRNA. That exits the nucleus, then follows the same path as the RNA vaccines: ribosome to Spike to export to immune response.

Of the 3 DNA vaccines, Sputnik (2 jabs) has excellent results, but probably won’t be available in the US. J&J (1 jab) is mediocre at preventing infection, though it’s OK at blocking serious disease and death. Oxford (2 jabs) is somewhere in between. The lower efficacy may be because some people are already immune to Adenovirus: so they kill it prematurely. Sputnik uses two different virus forms, which may explain its better performance. J&J and AstraZeneca are testing variations that may also be more effective.

Novamax takes a third approach. It cuts to the chase, and injects Covid-19 Spike protein directly. The Spikes are manufactured by moth (!) cells. How cool is that? To produce the vaccine, the DNA sequence for Spike is spliced into a virus genome. That infects the moth cells, which then produce Spike via the same path as the DNA vaccines. The protein is purified, then attached to a fatty nanoparticle. To the immune system, it looks a lot like a Coronavirus. Trials in the UK showed 89% efficacy (2 jabs). US Phase 3 trials started in December.

The DNA and protein vaccines have a big advantage: both molecules are more stable than RNA. They only need fridge temperatures for distribution instead of freezers (Moderna) or dry ice (Pfizer).

As an old dude, I’m eligible to be vaccinated now. The original plan was to wait for J&J vaccine data before deciding. That quickly became moot, since there’s a huge backlog. It will be a while until I can get any vaccine regardless. By health and habits I’m low-risk, so it won’t be too bad to live the pandemic lifestyle for a few more months.

New York vaccinated nursing homes and health care staff first. Now the priority is essential workers and teachers. That approach is already having an impact. There were 20+ daily cases in the local hospital for the month after Christmas, but it’s down to 3 or fewer. Surrounding counties are also doing much better.

At the moment I probably would pick Novamax, if its US trials are similar to the UK results. I probably already have Adenovirus immunity, and it makes sense to save mRNA vaccines for the next pandemic. However, the decision is barely more than a guess. There may not even be a choice of vaccines.

The big picture for humans: the success of all these vaccines is extremely good news. They’re fast, and will be even faster to release in the future. Minor DNA/RNA/protein tweaks to keep up with mutations will only take days, and won’t need such a long approval process. All three of the methods will help fight other diseases. And that’s not even counting newer techniques like CRISPR that are gradually being developed.

Looking back ten years from now, Covid-19 may seem like a wonderful disaster that launched huge medical advances.

Dennis Kolva
Programming Director

Goldenseal Pro Progress- Smart Fields & Qt (Feb 8)

Accounting software is all about accounts: the people and companies you do business with. There may be hundreds or thousands of them. MacNail Accounting, our first attempt at job costing software, gave everyone a number. Data entry meant using a printed cheat sheet (or memorizing numbers). It was easy to make mistakes.

For Goldenseal, we found a better way: clairvoyant fields. They pop up a list of items when you start to type, so you can just use regular names for your accounts. Usually you type a few letters, and get what you want. Worst case, you scroll through a list or use a pop-up button.

Goldenseal Pro still has the same thing, but with a name change to smart fields. They are an important part of our estimating and accounting software.

For example, when you enter a Material Purchase, smart fields link it to a vendor account, sales tax rate, payment method and payment terms. They allocate job costs to a project, cost category and subcategory. Smart fields may also tie the expense to an allowance, bid, change order, room, unit or project phase.

Goldenseal does useful stuff with all those links. It sets up Accounts Payable, or pays the vendor instantly. It gives you expense reports and job cost reports. It does time & materials billing for projects. If you include an itemized breakdown, it updates material prices for future estimates.

You may interact with smart fields hundreds of times per day. Because of that, they need to perform well. It took some effort to make that happen in the current Goldenseal.

Last week we used the Qt framework to set up smart fields for Goldenseal Pro. After a couple days they already look great, and perform properly.

Smart fields are the last interface detail we were worried about. As a tool for finishing Goldenseal Pro, Qt has aced the test. It’s going to build the new 64-bit interface on a reasonable schedule. Wheee!

For the short term, the question is: how long will it take to finish? We don’t have enough experience with Qt to answer that yet. It took 3 years with Cocoa to get roughly half to 2/3 done. So far, programming with Qt has gone about 4x faster than Cocoa. If that math continues, the best guess is another year or so.

One uncertainty is Apple’s new M1 chip. We won’t have to change our code for it, but the Qt framework needs an update to run natively there. Qt is mostly open-source, and folks are working on M1 compatibility now. They probably will finish before we do. It helps that TurtleSoft doesn’t use anything fancy in Qt— just the basics. BTW that need to rewrite for M1 is a big part of why we decided to halt Cocoa development. It was last straw on camel’s back.

For the medium term of five to ten years, my biggest concern is that the Qt Company probably will get bought. It could be swallowed by any big fish that sees strategic value in them: Apple, Google, Microsoft, Oracle. Nokia owned Qt for a while, and maybe they will re-buy before they get swallowed. With luck the actual Qt framework won’t suffer too much from assimilation, so we’ll get a 10 year lifetime or more.

For the real long term, we’ve found out the hard way that long term planning does not exist for software. It’s risky to rely on any small or medium-sized company: they often disappear. It’s risky to rely on the big players: their frameworks and tools often disappear (or become useless). Maybe things will settle down some decade, but probably not soon.

Dennis Kolva
Programming Director

Goldenseal Pro Progress- Breakdowns & Smart Fields (Feb 2)

Our staff started work on breakdown tables last week. After two days, they already looked great. Values filled into cells. Text was editable. General appearance about the same as our current accounting software. Even better, the code (QTableWidget) was easy to understand. It got the job done without too much sweat. That is a very, very good sign.

It took a month to get to the same place using Cocoa for Macintosh. NSTableView has many built-in features, but it is complicated and hard to adapt. There were many quirks to overcome.

MFC for Windows was even worse. They don’t have a built-in table class at all. We found a few libraries to make a grid of cells, but they were ancient and buggy. So we started to write a table class from scratch, but then the pandemic hit. The break gave us time to realize that MFC was just not going to work out. It’s too old, and too creaky. Hence the pivot to QT.

Breakdown tables are not completely done in the QT version, but they are good enough for now. We’ll come back and finish them later. The plan is to get past all the potential deal-killers at the beginning, before investing too much time.

Next on the list is smart fields (called clairvoyant fields in the current Goldenseal). Those have a popup button that shows a list of projects, vendors or whatever. You can click the button and choose one. Or you can tab into a field and type the first few letters, or start typing then choose from a scrolling list. It’s ideal for accounting software, where everything links to other stuff.

The basic design for smart fields came from Bruce Tognazzini at Apple, one of their human interface gurus. He called it a disambiguating field.

Cocoa has something called a combo box. It is similar, so at first we thought it might be Tog’s design brought to life. We fiddled with NSComboBox for weeks before realizing it wouldn’t work. Close, but users could type in things not on the list, and there was no way to prevent it. No good way to deal with it. We ended up building smart fields from three components, just like in the current Goldenseal. There’s a text field, a popup button next to it, plus a scrolling list that pops down when you start to type.

MFC also has combo boxes, but with the same basic problem. QT has them too, but they are even less adaptable than in Cocoa or MFC. Being worse was better, since it was obvious they’d never work. We didn’t waste time trying.

This will be the 4th time we build 3-part smart fields, so it probably won’t take very long to get them working.

Breakdown tables use smart fields. For example, for each line item in an estimate there are three: Category, Subcategory, and Cost Item. Each row in a construction estimate can show all sorts of stuff, so the code to manage them is very complicated. It’s a collision of many complex things.

In the Cocoa version, we never managed to get smart fields to work properly when in tables. The eventual solution was to have a pop-up window to enter each line item, instead of doing it inside the table row. That turned out to be a nice interface. We may use it for the QT version also. Not so cramped as working in little table cells.

If QT is very cooperative, we could do it both ways. Then users can choose which they prefer.

Dennis Kolva
Programming Director