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
TurtleSoft.com

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 (one from chimps). That 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
TurtleSoft.com

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
TurtleSoft.com

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
TurtleSoft.com

Goldenseal Pro Progress (Jan 26)

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.

Dennis Kolva
Programming Director
TurtleSoft.com

Rule of Law (Jan 20)

Over the past 33 years, about 2% of the orders for our estimating and accounting software have been fraudulent. In the early days it was bounced checks. Then it switched to stolen credit cards. After each rip-off, we gradually refined the fraud-prevention checklist.

TurtleSoft offered expensive Express Mail shipping for many years, because fraudsters almost always used it. They weren’t the ones paying, so why not? Our staff checked those orders much more closely.

Rule of Law lists were helpful when orders came from unknown countries. They’re calculated by Center for Financial Security and World Justice Project. Countries with poor ROL ratings are much more likely to have fraud.

Basically, Rule of Law is a measure of integrity, reliability, truth, fairness, justice, trust. All the good things that (most) religions try to teach. Boy Scout stuff. It means places where power comes from laws, not men. Where leaders are public servants. Not autocrats, demagogues, despots, dictators, kleptocrats, mobs, tyrants, or whatever.

ROL is important when we mail out rare Swiss Army knives (our side business). Orders to Germany (#6) or Netherlands (#7) will get there. Orders to Russia (#92) are 50% likely to be stolen along the way. Anything below that is a black hole. Our current cutoff is roughly #50.

ROL is why Hong Kong residents keep protesting. Their island is #17 on the list. They don’t want to be swallowed into #89 China, where people can just disappear suddenly, and/or have their organs harvested.

The US is only #21 on the latest Rule of Law list. We fell a couple spots during the Trump era. Ahead of us are most of Europe, plus Japan, South Korea, Singapore, New Zealand, Canada.

TurtleSoft actually sold a copy of our accounting software to a legit firm in Nigeria (#109). The order took many weeks to process. People can’t get regular credit cards there, so payment had to go by wire transfer. It took several tries. Everyone involved said “Um, it’s Nigeria. Are you sure you want to do this?” A low ROL rating has real, negative consequences for those who live there. Ditto for visitors.

In construction, Rule of Law means building inspectors who make sure structures are safe and sturdy. Zoning boards that are fair and impartial. Suppliers who don’t sell you defective goods. Employees and subs who care about their work and don’t cheat or steal. Clients who actually pay you. All stuff that makes it easier to run a business.

Rule of Law varies inside the US. I spent a year managing remodeling projects in Boston, at a time when much of the Building Department was under indictment for bribery. The neighborhoods where I worked probably rated somewhere between #52 Jamaica and #62 Brazil. Everything was so much more chaotic and difficult.

One example: a developer that my boss worked for added an illegal basement unit. It was below sea level. Municipal pumps failed during heavy rains at high tide, so the condo filled with neck-deep water and backed-up sewage. My crew had to put the main project on hold, and wade in for emergency repairs. Fun fact: refrigerators float in floods, then topple and do structural damage.

Less fun fact: that part of Boston is a former bay and mud flats, with 4-story brick row houses built atop wood pilings sunk into the muck and fill below. The developer installed sump pumps to keep the new unit dry. Those pilings had lasted 100+ years because they were always under water. Now the water table is lower, so they’re exposed to oxygen, and rotting. If you ever read about building collapses in the South End of Boston, they’re the result of greed and corruption in the 1980s.

I mention all this because on January 6, the US flirted with becoming a government of man and mob, not laws. Rule of Law is still under threat here. Arnold Schwarzenegger explains how easily things can go wrong.

Integrity is not hard-wired into the human genome. It takes effort to maintain it. Often it’s an uphill battle, because there’s all sorts of short-term profit to be made from lying and cheating.

What does seem to be hard-wired is blind loyalty to charismatic leaders. Not in everyone, but enough. It’s surprising how much impact one person can have on a whole country. Many people just seem born to follow, even when it leads to drinking the Kool-Aid. Or posting selfies while chanting slogans and committing felonies. I must have killed a couple days watching videos made by Capitol rioters.

Now that we have a new leader, hopefully we’ll see increasing Rule of Law, not less of it. Maybe we can find better ways to protect ROL. There’s a lot to be said for not becoming a shit-hole country.

Dennis Kolva
Programming Director
TurtleSoft.com

Covid-19 in New York #6 (Jan 12)

In July, the local Internet provider asked me to do some in-home wiring for a few of their clients. Most of the folks were good about masking and social distancing, but one couple wasn’t. They didn’t wear masks, and got physically close to me even after I asked them not to. I left early, and decided not to go back there. Someone else finished the work.

Soon after that, the couple tested positive for Covid-19. Not surprising, considering their behavior. The second installer had to quarantine. Luckily, I was outside the exposure time window. Phew.

Lately, it feels like there are more bullets to dodge. Cases have turned up in Home Depot, Walmart, most supermarkets, the Post Office, public transport. Since March I’ve kept a spreadsheet of public places where I’ve been, and when. There have been a few near misses, but nothing close enough to need a quarantine. Yet.

New York just entered phase 1B of their vaccination program. As an over-65 I’m qualified to get a vaccine as of today. Theoretically, I’d prefer to wait a bit. For one thing, the Moderna and Pfizer vaccines are well-tested and probably fine, but they are a new technology. I’d rather let other people be the guinea pigs, just in case there are long-term, subtle effects.

Also, they were the quickest to release. It’s possible there will be a future, more dangerous pandemic. If so, it would suck if my immune system had learned how to zap their mRNA carriers. Waiting a couple of months for Johnson & Johnson or AstraZeneca is kinda like saving the big guns for when they are really needed.

A traditional killed-virus vaccine would be best of all, since that approach is extremely well-tested. However those take years to develop. That’s a long time to be living in a bubble. Plus, any vaccines that haven’t started trials yet will have a hard time finding test subjects who weren’t vaccinated or infected. They may never get out the door.

Meanwhile, active cases have spiked locally, similar to the rest of the US. Covid-19 got into one of the local nursing homes right after Thanksgiving, and the number of county deaths jumped quickly from 1 to 17. That seems to be how the disease works in other places, also.

Since Christmas, the number hospitalized here has varied from 20 to 32. That’s much worse than the Spring ’20 surge, which maxed at 16 and was only over 5 for a few days. Here’s the chart to date:

Thick blue is active cases divided by 10. Red is the number in hospital, which lags by a few weeks. There was a spike of active cases in early March, but tests were scarce then so it’s not in this chart.

Most surrounding counties are having a worse time than here. Cattaraugus only updates their website once or twice a week now, ever since new cases jumped from a few a day to a few dozen. They used to be much more chatty. Chautauqua (next door to them) has 111 hospital beds, and 131 patients. Steuben has 774 active cases, 2,214 residents in quarantine (2% of their population), and only 15 contact tracers. They’ve had 153 Covid deaths so far in a population about the same as here.

The Rt tracker website is a good predictor for future disease impact. As of today 15 states are below 1.0 and reducing their active cases. 36 are above it, and still getting worse. Now that the holidays are over, there’s more hope it will improve.

One (tiny) good impact of Covid-19 is that many people put up extra Christmas lights this year. Walking around at night has become very entertaining. Winter is a bit less bleak.

Now we just need to survive Jan 20.

Dennis Kolva
Programming Director
TurtleSoft.com

State Payroll Withholding (Jan 6)

Yesterday, TurtleSoft released 2021 payroll tax tables for our accounting software. It’s our 31st year of doing so.

We kinda got into the payroll software business without meaning to. Its origins are similar to our estimating and accounting software. Turtle Creek Construction never had actual payroll: back then it was easier to pay under the table, especially for short-term workers. But as the software biz ramped up, suddenly there were actual white-collar employees who needed withholding, FICA and the whole nine yards.

Eventually, the early cobbed-together payroll spreadsheets were good enough to include in MacNail Accounting. It started with just New York and California, but expanded to the whole US a year later. The whole system improved vastly in Goldenseal, and we even added Canada.

Updating US payroll is quite the PITA. 50 states is a lot to wade through. Even worse, many states have found odd-ball ways to calculate withholding, and most years there’s at least one state that finds a new, even wackier way to do it. I think creating tax formulas is probably one of those low-status jobs that gets pawned off on some lowly official, or maybe the brother-in-law of the Governor.

A couple years ago, Utah changed their payroll withholding formulas to something complicated that Goldenseal couldn’t handle. Rather than write new code for just one state, we decided to graph their numbers, and figure how to match them. It turned out to be a straight line. So we now have a simple one-step table that gives the exact same results.

Connecticut is even worse. I think they must have disliked some part of their “tax curve”. Rather than tweak it, they added another table to correct it. Then that caused new problems, so they added another table. Then that still wasn’t right, so they added a couple more: including the Table C 3% Tax Rate Phase-Out Add-Back table. Dave Barry would consider it a bad name for a rock band. Someone with basic math skills could simplify the whole mess in a day or so, but I’m sure the political and bureaucratic process would drag out for months or years.

There’s a similar problem happening with the response to Covid-19. States and local health departments and governments are kind of on their own. Everyone is guessing and improvising.

The good news is that it will provide interesting data. Maybe we’ll learn from the mistakes.

Dennis Kolva
Programming Director
TurtleSoft.com

Goldenseal Pro Progress (Dec 31)

Our staff made some progress on Goldenseal Pro, then the holidays hit. This week we are futzing with payroll tax tables for 2021. Next week it’s back to working with QT. The big question is, how fast will it go?

Since the pandemic started, I have done a lot of of construction work. As a result, I’m now almost as lean as during Turtle Creek Carpentry, 30+ years ago.

The other day I carried a bucket of joint compound upstairs. About 60 pounds, the difference between my current weight (195) and my maximum during programming spurts (255). I imagined carrying that kind of load around, every single day. Nope. I really, really don’t want to go back there again. The mass piles on gradually so you don’t notice it right away, but I sure notice the lack of it now.

From 1987 to 1992, I was the main programmer for Turtlesoft: writing Excel spreadsheets and a HyperCard app. It meant many days sitting at the computer full-time. I gained 60 pounds. Then I switched to supervising real programmers, bought a fixer-upper house, and did a major rehab evenings and weekends. By the end of that I was lean again.

After the year when Apple almost died, I ended up finishing Goldenseal myself. It was six years of C++ frenzy, and back up to 255. That seems to be the usual max. Some combination of burning more calories because of the extra burden, and feeling unhealthy enough to do something about it.

Since then, my weight has correlated pretty closely to the amount of time spent sitting at a computer. Usually it’s somewhere between the two extremes.

Programming work is intense. It requires that you hold a huge mass of stuff in your brain’s RAM. The big picture is necessary so new code fits in well. Remembering many hundreds of names is necessary, so you can whip out code without looking up functions and classes. C++ syntax and good programming rules need to be in the brain’s best Level-3 cache, on call constantly.

Loading it all is a big mental effort. But once it’s in, you can get into a productive groove and really fly. Write a few lines and boop, something works when you run it. The process is very satisfying. I can’t think of anything in construction that gives such amazing results so quickly. But it requires sitting still, only moving fingers and eyeballs, and living in a fantasy world of CNextRecordButton and ShowBreakdownTable(const SInt32 tableID) for hours at a time.

Losing it is like a blown engine. Bye-bye forward motion. Programmers are often surly, because a single interruption can pop the whole mental picture like a balloon. It may take hours to restore it.

Because of all that, when not programming, it’s hard to start. Then once you’re in, it’s hard to stop. If it were a drug, a programming buzz would have the unpleasant start of mescaline, followed by the addictive rush of cocaine.

Some types of programming don’t require all the intensity. Fixing small bugs is possible to do in shorts spurts. Adding a small feature to familiar code is easy. Problem is, building a whole new QT interface for Goldenseal will require full-on high-impact frenzy. I’ll need to be in the zone for quite a while. Maybe 100 days of it? It’s still just a guess now.

I still haven’t figured out the right balance, to be both code-productive and healthy. The next few weeks I’ll try scheduling two-day spurts, and see how that works out. Then tweak it if needed.

The goal for 2021 is to finish Goldenseal Pro on a reasonable schedule, but not get fat. And not get Covid-19 before a vaccine is in my arm.

Dennis Kolva
Programming Director
TurtleSoft.com

Covid-19 in Charts (Dec 26)

This chart shows new confirmed Covid-19 cases in each part of the US. A couple months ago things got bad in the Dakotas and surrounding states. Then it improved there, but got worse everywhere else. There was a sudden reverse last week. New cases declined in every region. It may be good news, but more likely it’s because health departments ended the week early.

This one shows weekly restaurant seatings from OpenTable, comparing this year to 2019. After the April/May shutdown, it rose gradually to about 60% of last year. Now it has declined back to about 35%. There’s a big spread between states: New York is at 12%, California 6%. Texas and Florida are still near 60%. I don’t know why everyone decided to eat out during Labor Day week.

Last July I divided the largest countries into 5 groups, and made charts for their cumulative confirmed Covid counts. Here are updated global CCCCCCs. All numbers are cases per 100,000 people.

First are the countries that were doing it right back then. Almost all of them are still doing it right. They have very few cases, and economies that are close to normal. The only exception is Tunisia. It’s starting to catch up with Europe.

Next are countries that were just starting to increase in July. Most of them halted the growth, but Jordan, Morocco and Greece are acting like Europe. Some of the poorer countries may have low counts from lack of testing, rather than lack of disease.

The third group is countries in Europe, plus Canada. They had serious early outbreaks, but contained the disease over the summer. Sadly, things got much worse once the weather cooled. Canada and Germany aren’t too bad, but the rest are doing almost as badly as the US.

The fourth group is countries that were just starting to have serious problems in July. They are a mixed bag now. Some are doing OK, but the ones in Europe and South America have growth rates similar to their neighbors.

The last group I called the “basket cases”, with outbreaks that were bad and getting worse. Those in the Southern Hemisphere slowed down as their summer hit. Those with disease-friendly politics became even more baskety. Portugal started zooming recently, similar to the rest of Europe.

The countries with the most per-capita Covid cases now are #1. Czechia, #2. Belgium, and #3. USA.

About 45% of the world population is in places where Covid-19 is no big deal: China, all of East Asia and Southeast Asia, Australia, New Zealand. A few island nations and isolated countries. When a disease is contained, it’s possible to keep it that way. Though it’s much harder when neighboring countries don’t have it under control.

About 5.5% of people in the US have been infected so far. Keep in mind that it takes roughly 80% to reach ‘herd immunity’. Take the pain of the past 10 months and multiply it by 15 to get there naturally. It’s why we need vaccines.

Dennis Kolva
Programming Director
TurtleSoft.com