Goldenseal Pro Progress: Layouts & Actions (Mar 16)

After two weeks, Custom Layouts is starting to look like something. It loads fields. You can drag them around on the screen. Click a tool, and you can add a new field. The app is already further along than we ever got with the Cocoa version.

Unfortunately, there isn’t any Qt sample code for doing a MacDraw-like environment. We’ll have to create most of the interface from scratch. None of it is real hard to write, but there are many fussy details. Undo in particular is a PITA.

The original Custom Layouts command needed at least one programmer-year to finish. Qt will be faster, but most likely it will take 2 or 3 months to get everything working well.

This stage of programming is a bit like starting rehab work on an old house. Sometimes you have to knock a few holes in the walls, just to see what the guts are like. Then you can get a better estimate of what’s needed. We kinda just did that with Custom Layouts. Now there’s a clear scope of work, and we know it’s doable.

Speaking of knocking holes, I must share a construction tale from an Ithaca rehab project in the 1980s. It was a small, odd house that had been owned by a custodian who worked at Cornell. The new owner wanted to remove a non-bearing wall to combine two rooms. I tried knocking holes to check for wiring, but couldn’t. It was plaster over an old door, with concrete fill behind it, then wood scraps nailed together, then plaster on the other side. Demolition was like an archeology dig through all the random building materials that someone brought home from work. Bricks, putty, roofing tiles, wadded newspaper, grout, tar, woods of all sorts. Too bad YouTube didn’t exist back then, because the demo (or the construction process) would be an amazing time-lapse video.

Anyhow, next on the agenda for Goldenseal Pro is the final untouched mode: action commands (Reconcile, Pay Bills, Deposit Funds, Project Billing, Sales Billing, Write Payroll, Job Costs). It definitely will be hard, because the current code sucks. Giving a complete overhaul to the interface has been on the to-do list for more than a decade.

The rest of Goldenseal uses Custom Layouts to arrange fields on the screen. It makes setup easy for our staff. It also lets users make changes. Action screens currently use a different system that is awkward for us. Users can’t change anything there at all. Since we have to rewrite anyhow, now is the time to switch them over to the Custom Layouts system.

Our staff probably will be working on the two areas in parallel for a while. If it gets too frustrating, we’ll take a break and work on other, simpler loose ends.

Meanwhile, this winter I’ve been doing major interior work on my house. In 2 or 3 weeks it will be ready to list and sell. This area is in a seller’s market for single-family homes, so it probably will go fast. I’m already looking at fixer-uppers to replace it.

The current house was built in 1910, right after the chestnut blight came through. Chestnut lumber was cheap for a while, so they used it for all the trim work. I wouldn’t mind finding another house from the same era. Chestnut looks great, and it’s easy to work with. Too bad it’s now a fossil.

If the next house needs trim or flooring, I’ll put in ash. This century’s cheap hardwood caused by a major species loss.

Unfortunately, the whole selling, buying and moving process may cut into programming progress for a couple months. We’ll see.

Dennis Kolva
Programming Director
TurtleSoft.com

Covid-19: Mutations (Mar 8)

Life is not easy when you’re a coronavirus. If you can even call it a life.

You’re tiny. Too small to see in a microscope. Rock bottom on the food chain. You can’t move, and you’re delicious. Rich in protein, plus tasty fat and sugar. Happily snarfed up by bacteria or dust mites. Easily killed by UV, or just about anything else.

You only have one trick: sneak into the right vertebrate’s cells, and you’ll reproduce like crazy. But even that’s just temporary. In days or weeks, their immune system will learn how to stomp you. Eventually, the entire species will be resistant. The only way to survive long-term is to mutate, and change enough to infect again. Or better, jump to a new species and start over with fresh victims.

We are already seeing that with Covid-19. New versions keep popping up. Some reinfect people who survived earlier versions. Some are jumping to minks, cats, other species.

This is yet another reason why it’s a whole lot better to nip contagious diseases before they become pandemics. Fewer infected people means fewer mutations, and lower risk that the disease recurs for decades. SARS and MERS both were caught in time. Now SARS is gone forever. MERS is gone if you don’t hang out with camels.

It’s way too late for Covid-19 to ever be contained. The question is, what happens next?

For the short term, vaccinations are starting to kick in. They will help slow down the spread. Life will probably be close to normal this summer.

Unfortunately, Covid-19 will keep making new mutants. Most likely, there will be reinfections and outbreaks for years or decades. It’s established too deeply, now.

The only good news is that co-evolution is likely to happen. A virus spreads faster when their carrier is out and about, not deathly ill. If they kill the host, they also die. That means mutations and natural selection gradually make a disease less serious (but faster-spreading).

Warts are the ideal end point, from the viral point of view. Common colds are almost as good: infect everyone, rarely deadly. There already are four coronavirus strains like that (229E, NL63, OC43 and HKU1). Covid will eventually settle down to be the fifth.

Sadly, the process of becoming less deadly takes years, and it’s not 100% reliable. Folks probably will need an annual Covid booster to go along with the flu shot, at least for a while. Face masks may be a long-term reality.

In 2009, the US launched the PREDICT program. It set up a global network of labs and researchers to act as an early-warning system for pandemics. It cost about $20 million a year. Funding for that and other international health programs was cut in mid-2019. That was a 5 or 6 trillion dollar mistake just for the USA.

In this century, there have been 3 serious Coronavirus outbreaks: an average of one every 7 years. Fatality rates of 34% (MERS), 10% (SARS) and about 1% (Covid). Toss in Zika and a couple of Ebolas, and it’s one outbreak every four years. That’s not even counting influenza and other random diseases.

Humans are a densely packed and mobile species. Pandemics are nature’s way to fix that sort of overpopulation.

We probably should do more stuff like PREDICT, not less. Along with the sickness, dying and inconvenience, pandemics are very expensive.

Dennis Kolva
Programming Director
TurtleSoft.com

Goldenseal Pro Progress: Reports & Layouts (Mar 1)

Our estimating and accounting software has five different modes. Three of them are now working: data entry, Find command, and reports.

That doesn’t mean the project is 60% finished. Our rule of thumb: this stage is the first 1/3 of the work. The second 1/3 is finishing all the little details. The final 1/3 is testing and debugging.

Building software is similar to building a house. We did foundation work last Fall. Now three wings out of five are framed up and closed in. The app is starting to look like the architect’s drawing, but it’s not too late to tweak the floor plan. There is still plenty of utility and finish work to do.

It took a couple months to get the basic app window set up. Data entry screens needed a couple more months. Find and reports only required a week or so apiece. The two remaining modes (layouts and action screens) will be somewhere in between.

While working on the new Qt code, we often step through the old, partly-finished Cocoa version to recall how it works. No sense in re-inventing any wheels. If there’s nothing useful in the Cocoa app, we can also go back and step through source code for the current Goldenseal.

Back when we stopped work on the Cocoa version, I estimated that it was 1/2 to 2/3 complete. However, stuff keeps turning up that was never even started. That estimate probably was too optimistic. While struggling with Cocoa every day, I guess it was hard to see what a morass it was. Not seeing the forest for the trees.

Last week our staff worked on Reports. To see a report in the current Goldenseal, you choose something from the Reports menu at the top of the screen. It’s way over on the far right, so people often miss it. In Goldenseal Pro, there is a Reports button right on the main window. It makes navigation easier. From then on, the interface is similar.

We just started on the 4th mode: Layouts. It lets you change the appearance of data entry screens, printed forms and reports. In the current Goldenseal you get there via Options–Custom Layouts. Another nifty feature that is tucked away and hard to find. In Goldenseal Pro, it also gets a button on the main screen.

Custom Layouts was one of the first components we built in the current Goldenseal, back in the mid-1990s. It allowed the project manager (me) to design the app, while the programmers were writing C++ code to make it work.

It would also be nice to have Custom Layouts right away in Goldenseal Pro. Then we can adjust the current layouts for bigger screens.

Apple has sample source code for a drawing app that is very similar. We had high hopes it would make the work easy for the Cocoa version. Unfortunately, the sample code was old and unusable. As the project bogged down, we finally decided to skip Layouts entirely for version 1.0.

Based on results so far, I am optimistic that Custom Layouts will be easier to create in Qt. We’ll know better about that in a few weeks.

Goldenseal’s layout mode is similar to the MacDraw program on early Macs. That app never made it to OS X. Too bad, since I had useful data in MacDraw files: house plans, travel maps, flow charts, ad layouts. There was never a great replacement.

If Qt is not too much of a struggle, it will be tempting to spin off a MacDraw clone some day.

Dennis Kolva
Programming Director
TurtleSoft.com

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, 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
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