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

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

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

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

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

Goldenseal Pro Progress (Dec 14)

Our staff is back to cruising on Goldenseal Pro. Productivity really went up once desks, equipment, wiring and amenities were all settled in at the new office.

These days, we are reinventing the wheel for the third time. Our staff built the original Goldenseal interface in the late 1990s and early 2000s. After that, we worked on improvements to the accounting and estimating code. From 2016 until Sept 2019, we tried rewriting the entire interface using the Cocoa framework: a necessity to run on 64-bit Macs. Then we started over, and repeated with MFC for Windows, until the pandemic hit. After neither of those frameworks worked out, we started over yet again with QT (cross-platform) this summer.

All that previous work wasn’t completely wasted. TCS_FOR_COCOA marks the places where our code connects with the Cocoa version. We are going through all 258 of them one by one, and writing a QT branch to do the same thing. It saves a lot of thinking and testing.

So far, QT seems pretty decent. However, it does have its oddities. For example, we will need to use four different QT classes to replace our current text fields. Cocoa and MFC only needed one, as did the original Goldenseal.

QDateEdit is pretty neat, because it pops up a calendar to enter dates. A bit nicer than just typing in text. QTimeEdit provides a similar pop-up tool for times (which we don’t use very often). For regular text, there’s QLineEdit for single-line fields, and QTextEdit for multi-lines. Splitting them is a minor nuisance, but QTextEdit does show scroll bars if multi-line text gets too big. To do that in the original Goldenseal would have required too much extra code.

The real test will be breakdown tables. We wasted almost a year on them in Cocoa, and still never got them working right. MFC was even worse. There’s other stuff to do first, but I think we’ll be able to move on to tables within a month or two.

QT just released a major update. Up until now, QT has been a weird mix of a commercial version, and one that is free and open-source. The bad news is that QT 6.0 won’t have a free option. The good news is that they dropped the license fee to something much more reasonable for small developers like us.

This may be a good thing in the long run. We wrote the original Goldenseal using a paid app (CodeWarrior). It cost something like $300 a year, but the software was a joy to use. Their support was great. These days most desktop programming happens with either Xcode (free from Apple) or Visual Studio (free from Microsoft). They and their frameworks have been a constant struggle.

Paid-but-great definitely beats out free-but-mediocre, especially when you’re using it for hundreds or thousands of hours.

Dennis Kolva
Programming Director

The Economy (Dec 2)

TurtleSoft was born near the end of the Reagan presidency. Those were the days of “trickle-down” economics, with a top income tax rate of 28%. It had fallen steadily from 91% in 1963, to 70% during the 1970s, then to 50% and down during the Reagan years.

I read an article back then predicting that the new tax policy would shrink the US middle class. They expected good fortune for Walmart (more poor people) and for Tiffany’s and Neiman-Marcus (richer rich people), but problems for Sears (bye-bye middle class).

At the time it seemed like a bold prediction. But 30+ years later, the writer turned out to be spot on. Sears is almost dead. Walmart is thriving. Aside from Amazon, their biggest competition these days is the dollar stores, which cater to even poorer people. Tiffany’s and Neiman-Marcus are in trouble right now, but that’s mostly because the Internet and Covid-19 zapped walk-in retail. Or maybe it’s because the moderately rich are also shrinking. The ultra-rich can buy islands and politicians (thank you Citizens United vs FEC). They don’t need to show off with jewelry or designer clothes.

The divide keeps growing, with fewer in the middle.

Covid-19 is definitely impacting the economy very unequally. It’s accelerating a trend that was already moving at decent speed. This is a very bad time to own a restaurant, or any type of walk-in retail. It’s difficult for most service professionals. AirBnBs. Much of the gig economy. Even hospitals and medical workers are worse off: higher expenses, layoffs, and less profitable work.

Construction seems to be a mixed bag. One of my neighbors is a contractor who has kept busy since May. However, the biggest construction project in town finished last month after many delays, and it is still completely empty. Nobody wants to rent offices or apartments in a building with shared hallways. The second-biggest project shut down in April, and it is still just a partly-finished foundation and elevator towers. That’s got to be hard on owner cash flow.

I’m no economist. But as a small business owner and a developer of accounting software, I do know how to track money. As the pandemic slithers into its scariest phase, I think the US is at a crossroads.

The conservative viewpoint is that the deficit is huge, and it’s time to cut back. Based on past history, that usually leads to austerity, layoffs, bankruptcies, deflation. Money stops flowing, so it becomes more valuable. Recessions are a good chance for people with money to pick up assets cheap.

The liberal viewpoint is that people are hurting and need financial help. The US can borrow at close to 0% interest. The economy needs stimulating. Stimulus makes things better in the short run, but the debt eventually needs to be paid to those who provided the money. Mostly rich people & foreign governments.

Hopefully there is some middle ground, to keep things stable until vaccines are widely available. Then life can get back to something close to normal. If the money goes into things that create wealth in the long run, then it’s an even better investment.

Unfortunately, this year a lot of money is shifting from places suffering from pandemic (US, Europe, India, Africa) to countries that contained the disease (China and East Asia). It’s too late to do anything about that. Wealth is also shifting upwards to rich people, since they are relatively less affected.

Meanwhile, I’m keeping busy, trying to stay middle class. Goldenseal Pro is inching along. I think progress will speed up soon.

Dennis Kolva
Programming Director

Covid-19 Update (Nov 22)

Our staff is back to working on Goldenseal Pro, though no major progress to report yet.

Meanwhile, here’s a chart for new weekly Covid-19 infections in each region in the US:

The numbers are from Johns Hopkins University. I multiplied counts for the first few weeks by 5x, because testing was so sparse back then. There’s still lack of testing now, but not nearly as bad.

50 million people are predicted to travel for Thanksgiving, so the curves probably will get steeper.

Covid-19 is now worse than the first surge 7 months ago, but the US reaction is very different. Here’s a chart of restaurant activity from OpenTable. It covers the entire pandemic from Feb 18 until yesterday.

Between March 10 and March 20, every state dropped rapidly from normal to 0% or close. Starting in May, seatings inched back to 50% or 60% of usual in most places (Rhode Island went crazy with restaurant dining, while Hawaii and DC mostly stayed closed). Attendance has dropped off a little in the past month, but many people are still eating out like it’s 2019. Presumably they are doing other things that spread virus, also.

I don’t know what to say. It’s like watching two trains on the same track, headed towards each other. The Coronavirus train is much, much bigger.

Dennis Kolva
Programming Director

Covid-19 in New York #5: Early Signs (Nov 13)

Here in Ithaca, we just set a record for active Covid-19 cases and people in hospital. Nationally, the US is also setting records. Things are getting worse in every state except Mississippi.

Globally, much of Europe is shutting down. Meanwhile, the US is chugging along about like normal. OpenTable shows restaurant seating declines in a few states, but most are about the same as a few months ago.

Back in March, I posted a link that talked about how fast Covid-19 will hit. It’s worth revisiting, since conditions probably will be like that again, and soon. Except, this time it’s starting from higher ground. Most of the US is headed towards conditions that are similar to New York City last March.

My parents are in a nursing home in Cattaraugus County NY. It’s rural, just south of Buffalo NY. I check their Health Department website weekly, to get an idea of how things are going there. It’s the only nearby county with a write-up on every case: gender, symptoms, how they caught it, why they were tested.

The odds of catching Covid-19 are growing rapidly. It may outstrip the number of test kits (already happening in the Dakotas). So, I decided to put all the Cattaraugus data into Excel (633 cases), then do math on them. The results may be useful for anyone trying to figure whether they have Covid-19 or not.

60% of Cattaraugus cases are female, 40% male. 20% are health care workers or employees in hospitals or group homes. 47% reported close contact with a Covid-19 carrier. They may not have known it at the time. 8% caught it while traveling elsewhere. 92% were local transmission.

34% had no symptoms when tested (they may have developed some later).

On average, the other 66% reported 3.21 symptoms each. The most common were fever (43%), coughs (43%), congestion (36%), body aches (33%), and headaches (31%). 21% had loss of taste and/or smell. That’s the only one that is different from a bad cold or the flu.

14% had shortness of breath: the most scary sign, since most deaths are caused by respiratory failure.

Victims also reported the usual stuff: fatigue, sore throat, chills, runny nose, nausea, diarrhea, sinusitis, weakness, dizziness, chest pains, stomach pains, vomiting. Sneezing was rare: only 3 mentioned it.

UPDATE NOV 22: Cattaraugus had 52 positive tests on Nov 17. Then 30+ most days after that. Not surprisingly, they stopped listing details for every case and just give a summary now. I revised the percentages slightly, with a few days more data.

If you want one more way to track the pandemic, Carnegie-Mellon now has a website with Covid-19 maps. It uses Google and FaceBook data to track doctor visits, mask usage and other indicators.

Back in March, people changed their behavior very quickly. It happened in just a week or two, even before Governors shut down states. I’m curious to see if it happens again.

Dennis Kolva
Programming Director

Goldenseal Pro Progress (Nov 2)

TurtleSoft is mostly done moving into the new office. It’s bigger, which was a bit of a gamble given the uncertain economy.

Next on the agenda is to finish interior work on my house in town, then sell it and buy another fixer-upper. Right now the local real estate market is still pretty good, and hopefully it will stay that way for a few more months.

Programming requires intense focus, which (for me at least) requires a calm environment. I was making good progress on Goldenseal Pro before the move, but still haven’t shifted back into programmer mode. It may take another week or two to really get settled in and productive again. Long nights and crappy weather also help.

The rate of progress this winter will depend on the pandemic, politics and the economy. Personally, I’m calmer when experiencing positive cash flow. Some of the ways to make that happen consume a lot of time.

The Goldenseal Pro project has dragged on much, much longer than ever expected. First there were a few subcontractors who tried it and failed. Then our staff took over, and failed with two different frameworks (Cocoa for Mac, MFC for Windows). QT is looking like it may be a winner, but that is not guaranteed. We will know better in a few months.

If it’s clear that we can’t finish Goldenseal Pro, I’ll fall back on the original retirement plan from before Turtlesoft started: buy, live in, rehab and sell fixer-upper houses on a 3 to 5 year cycle. Selling my current house in April +/- should provide enough extra cash to pay back folks who prepaid for Goldenseal Pro. That is a bit dependent on where the pandemic and the economy go. If there is a major financial crash, I’m pretty much screwed.

If QT works out, we probably will have something to ship by late 2021. Possibly earlier if sailing is very smooth. I’m sure the early releases will have some gaps and rough spots, but at least the core estimating and accounting functions are well-tested. They won’t be affected by the new interface code.

Meanwhile, please vote. Please wear a mask. Stay safe. Covid-19 is not a hoax:

Dennis Kolva
Programming Director