N95 Masks (Mar 30)

Last year, I spent many weekends with a heat gun, removing lead paint off the exterior of my house (built in 1910). Construction unit cost = 12 square feet per hour. Bought a box of 3M N95 respirator masks for the work, then misplaced it over the summer and bought another.

Covid-19 has pretty much turned the remaining masks into gold nuggets. I gave a few to high-risk friends.  Offered the rest to my GP, but they are already well-stocked, and using face shields as well as masks. The local hospital needs tons of masks, but folks have mobilized to sew them. A few N95s won’t make much difference there.

There’s good evidence that Covid-19 has a stealth mode: spread by people with no symptoms, via small droplets in the air from talking or breathing. There’s also good evidence that general use of face masks helps to reduce viral spread. China and the Czech Republic saw lower infection rates when masks were used widely.

It’s complicated, because protective gear is in desperately short supply. Where should they go?

Most people in Ithaca are staying home and/or physically isolating, but the grocery stores are still busy. I finally decided to donate the remaining masks to checkout staff at the local Aldi’s supermarket. They are crowded, with no self-checkouts. Maybe masks will slow down the transmission rate, and reduce the number of people who need the hospital.

Construction companies often have face masks or full respirators laying around.  It might be a good time to think about how best to allocate them, based on local needs.

Since masks and other PPE are in short supply, they will need to be reused and sanitized.  Low heat in an oven is the most convenient way to do that. One study says a pre-heated oven at 56° C (133° F) for 90 minutes, 67° C (153° F) for 60 minutesm or 75° C (167° F) for 30 minutes. A second study says 56° C (133° F) for 15 minutes is enough to kill the virus. A third study recommends 60° C (140° F) for 30 minutes. Take your pick.

If you have enough masks, you also can rotate them without additional treatment. The SARS-CoV-2 virus has a half-life of about 1.2 hours in air, .8 hours on copper, 3.5 hours on cardboard, 5.6 hours on stainless steel, and 6.8 hours on plastic. 4 days is the recommended minimum wait before reuse.

Dennis Kolva
Programming Director

We’re #1 for Covid-19 (Mar 26)

The USA became #1 for cases of Covid-19 today. We lapped both Italy and China in a single day. Globally, there are over a half million cases. It’s doubling about every 4 days, so expect a million next Monday.

Here’s a timeline for Ithaca. It probably is a good predictor for how the pandemic will unfold in other communities. I’ll keep it updated.

Mar 1: 0 cases. WHO warns about pandemic.
Mar 2-6: 0 cases.
Mar 7: 0 cases. NY declares state of emergency (76 cases in NYS).
Mar 8-9: 0 cases.
Mar 10: 0 cases.  Cornell bans events with 50+ people.
Mar 11: 0 cases.  Cornell plans switch to online classes on Mar 28.
Mar 12: 0 cases (15 tested).
Mar 13: 0 cases. Cornell ends classes, sends students home. County state of emergency.
Mar 14: 1 case.
Mar 15: 1 case (46 tested).
Mar 16: 2 cases. All NY restaurants, gyms, malls closed (960 cases NYS).
Mar 17: 3 cases (107 tested).
Mar 18: 6 cases (146 tested).
Mar 19: 6 cases (279 tested).
Mar 20: 11 cases. Non-essential NY businesses closed (7102 cases NYS).
Mar 21: 12 cases (449 tested).
Mar 22: 15 cases (451 tested).
Mar 23: 16 cases (592 tested).
Mar 24: 18 cases (666 tested).
Mar 25: 23 cases (731 tested).
Mar 26: 32 cases (1009 tested).
Mar 27: 48 cases (1191 tested, community spread).
Mar 28: 56 cases (1191 tested, 2 hospitalized).
Mar 29: 70 cases (1197 tested, 2 hospitalized).
Mar 30: 73 cases (1419 tested, 1 hospitalized, 1 recovered).
Mar 31: 76 cases (1419 tested, 1 hospitalized, 28 recovered).
Apr 1:    80 cases (1480 tested, 1 hospitalized, 33 recovered).
Apr 2:    87 cases (1553 tested, 2 hospitalized, 46 recovered).
Apr 3:    93 cases (1620 tested, 2 hospitalized, 51 recovered).
Apr 4:    95 cases (1626 tested, 2 hospitalized, 54 recovered).
Apr 5:    98 cases (1637 tested, 1 hospitalized, 57 recovered).
Apr 6:  102 cases (1988 tested, 3 hospitalized, 66 recovered).
Apr 7:  103 cases (2133 tested, 3 hospitalized, 69 recovered).
Apr 8:  105 cases (2246 tested, 5 hospitalized, 73 recovered).
Apr 9:  107 cases (2274 tested, 5 hospitalized, 76 recovered).
Apr 10: 112 cases (2290 tested, 4 hospitalized, 82 recovered).
Apr 11:  113 cases (2403 tested, 5 hospitalized, 82 recovered).
Apr 12:  113 cases (2408 tested, 4 hospitalized, 83 recovered).
Apr 13:  113 cases (2419 tested, 4 hospitalized, 84 recovered).
Apr 14:  116 cases (2506 tested, 4 hospitalized, 87 recovered).
Apr 15:  118 cases (2546 tested, 4 hospitalized, 90 recovered).
Apr 16:  119 cases (2606 tested, 5 hospitalized, 93 recovered).
Apr 17:  121 cases (2783 tested, 7 hospitalized, 94 recovered).
Apr 18:  121 cases (2808 tested, 7 hospitalized, 94 recovered).
Apr 19:  123 cases (2820 tested, 6 hospitalized, 94 recovered).
Apr 20:  123 cases (2897 tested, 6 hospitalized, 94 recovered).
Apr 21:  123 cases (2947 tested, 6 hospitalized, 94 recovered).
Apr 22:  124 cases (2996 tested, 5 hospitalized, 94 recovered).
Apr 23:  129 cases (3056 tested, 5 hospitalized, 94 recovered).
Apr 24:  129 cases (3095 tested, 6 hospitalized, 94 recovered).
Apr 25:  130 cases (3104 tested, 6 hospitalized, 94 recovered).
Apr 26:  130 cases (3104 tested, 6 hospitalized, 95 recovered).
Apr 27:  130 cases (3212 tested, 6 hospitalized, 97 recovered).
Apr 28:  130 cases (3299 tested, 5 hospitalized, 97 recovered).
Apr 29:  132 cases (3391 tested, 5 hospitalized, 99 recovered).
Apr 30:  132 cases (3578 tested, 5 hospitalized, 100 recovered).

The hospital only has 8 ICU beds, so things may get dire quickly.  We’ll see.  (NOTE Apr 14: not overwhelmed so far, with enough spare capacity to treat a few Covid-19 patients from NYC).

I’ve been watching Coronavirus since it first hit the news in December, and started to prepare in February. And yet, despite the long advance warning, I probably still should have acted faster. Most likely, today’s 32 cases were first shedding virus around Mar 14. At that time I was still shopping, going to the gym, eating in restaurants. Slightly cautious, but more would have been better.

I have a hand-wavy theory that the human brain is hard-wired to calculate jumps between trees, from when we were small arboreal primates. The distance you fall from gravity is squared over time. The series goes 1-4-9-16-25-36-49-64-81-100. The same math also applies to throwing things. Also cars, and most other stuff we deal with in real life.

Epidemics and explosions are exponential. The series goes 1-2-4-8-16-32-64-128-256-512-1028.  It starts out slower than the gravity curve. Humans often are fooled by that, and think it’s no big deal. Then it catches up. Suddenly it’s 10x bigger. Another 10 jumps and it’s a million, when we were expecting 400. Another 10 jumps is a billion.

Dennis Kolva
Programming Director

Coronavirus & Table Clicks (Mar 24)

Here in New York, the Coronavirus storm is upon us. 20,875 cases with 15 locally, and growing. Ithaca is almost a ghost town. Hopefully it won’t get as bad here as in New York City.

The John Hopkins Covid-19 Tracker has gone back to tracking US cases for each county. It gives a clearer picture of where we all stand right now. Keeping that site updated must be a ton of work, and I really admire them for it. Last week it stalled out a lot, but they seem to have added servers to cope with the load.

The bad news is, confirmed cases are distributed throughout the entire US: big city, small city, suburban and rural. Right now it’s worst in NYC, then Seattle. However, everywhere else is only a week or two behind. Most of the regional differences are from lack of testing, rather than lack of infections.

The graph of the infection count keeps getting steeper. If you click to see the daily increase, it’s the same curve. The rate of increase in that one is also the same curve. Exponential growth works that way. The rate it gets faster keeps getting faster.

The way this pandemic plays out in each part of the US will depend a lot on the actions of state Governors and state/local health departments now. Balancing physical distancing with the need to get groceries and pay bills is going to be extremely challenging. We’re all in for some big changes.

Meanwhile, our staff has settled in to the new normal: isolated and ultra-cautious. We are back to programming, again.

A few weeks ago, two different types of tables were filling in data and looking pretty good. Then we clicked on one, and it crashed immediately, somewhere deep inside the MFC library.

It used to be possible to step through MFC source code to figure out problems like this. Unfortunately, that has become more difficult with newer versions of Windows. One option gave thousands of error messages in the compiler. The other option took hours to load up. Frustrating.

Luckily, taking a break from problems is often a good thing. Coming back afresh, we quickly found a nice CodeGuru explanation for the fix.  It only took a few minutes in the Class Wizard to get it working properly.

MFC is old and complicated. It’s going to be a slog. But we are making progress.

Dennis Kolva
Programming Director


Coronavirus & Construction #2 (Mar 20)

In the last post I did math to figure if and when Covid-19 overwhelms hospitals. The next few weeks will determine how accurate it was. Massive social distancing may prevent a crisis.

There is a second problem that may be more serious, with an even bigger impact on construction businesses (and everyone else).

By now, you’ve probably seen the “flatten the curve” graphic. If the R0  reproduction value is high, the number of cases is a steep bell-shaped curve. If it’s lower, then the curve is more shallow and the peak is lower. If people aren’t close together, R0 drops.

With an infection growth rate of 15% and no social distancing, half the US population will test positive for Covid-19 approximately May 31. At 25% growth it’s May 3. At 30% it’s April 26. The US is not ready for that size of widespread disaster. Just look at Italy or Iran. It’s worth the chaos now, to flatten the curve and have the next couple months be less insane.

Problem is, those curves don’t have a time scale.

To avoid high death rates, R0  has to be low enough to not overwhelm hospitals, and stay that way until nobody is catching the disease. Containment is unlikely with such a highly-infective virus, so it ends when almost everyone has caught it (resulting in “herd immunity”).

It’s not hard to calculate how long it takes to handle Covid-19 safely. It goes like this:

1. Start with US population (327.2 million).
2. Estimate how many will eventually get Covid-19.
3. Estimate how many of those get pneumonia.
4. Multiply that by average duration in critical care (about 14 days).
5. The result is ICU-days. Divide that by the number of ICU beds available (65,000 to 95,000). The final result is days required to flatten the curve.

You’ll notice there aren’t numbers for steps 2 and 3. This is a new disease, so there isn’t good data for those yet.  However, it’s possible to plug guesses into the spreadsheet, and see what results.

Assuming 70% of people eventually get Covid-19 (the best guess I’ve seen online) and 5% of them end up in intensive care (probably close to results from Wuhan and Italy), the curve needs to be spread out over 4.6 to 6.8 years to avoid zapping the health system. If 1% need ICU care, it requires 338 to 493 days. Of course, many folks are working on vaccines, but those will still take 12 to 18 months to test and produce. That’s a very long spell of social isolating.

Hospitals in the US are run for profit, or by non-profits that are chronically underfunded. To cut expenses, they eliminated excess beds and staff that would have come in handy, right about now. Japan has 13 hospital beds per 1,000 people. S Korea has 12, Germany 8, China 4, US 2.77.

I’m really not sure what the consequences will be for small construction companies, small software companies, or anyone.

Dennis Kolva
Programming Director



Why you should worry about Covid-19 (Mar 17)

I just made a spreadsheet with New York coronavirus data, to get an idea of how bad it is likely to get here, and when.

Looking at other countries, the most important factor is whether the hospital system is overwhelmed. If so (as in Wuhan, Iran and Italy)  the death rate is high, and it’s a national emergency. If not (as in Taiwan, Singapore, S Korea and most of China), then the pandemic is less of a disaster.

It takes 3 numbers to calculate the risk and timing:

      1. Virus growth rate. World-wide outside China, cases are increasing by about 15% per day. NY cases are growing by 30% per day. Calculating from R0 rate of spread (1.4 to 3.9 infections per case) and incubation period (5 days, range 2 to 14) gives numbers in about the same range.
      2. Hospital capacity. Different sources say 3,000 to 4,000 ICU beds in the state.
      3. Percent of confirmed cases that need intensive care. Most studies show it between 5% and 10%.

The most optimistic calculation says that NY will run out of ICU beds on April 15 (four weeks from today). The most pessimistic version says crisis hits March 31 (two weeks from today).

Different sources say the US has 45,000 to 95,000 ICU beds. Using the same logic, they all are filled sometime between April 3 and April 25.  Four weeks away, plus/minus 10 days. The math assumes that ICU beds are currently half full, but another 50% can be added on short notice.

Keep in mind that testing in the US has been woefully sparse. All confirmed counts are just a bare minimum. Actual infections could easily be 10x or 100x higher. However, that does not affect the timing by much. The numbers it changes just cancel out.

For local planning, many state health departments are now publishing case counts in each city or county. Wikipedia also is adding tracking pages for hard-hit states (search coronavirus + your state name).  Their basic pandemic page is at this link.  (update Mar 19: Politico has tracking of all Covid-19 test results for each state).

There’s a good visual of the NY growth curve on Wikipedia. Take your state’s current case count, and you can guess at what it will look like over the next week or two. All US states now have at least 1 reported case.

Also keep in mind that there’s a week or two lag between infection and testing/confirmation. It means that social distancing does not act quickly to reduce hospitalizations. You need to wait a week or two to see the benefits.

NY/NJ/CT closed all restaurants and bars yesterday. Everyone is panic-buying and preparing to hunker down. This is one situation where irrational fears are actually useful.

According to the math, we may just squeak by. To make it happen, social distancing has to reduce R0 to 1 or below, and start really soon.

Dennis Kolva
Programming Director

Coronavirus & Construction (Mar 13)

Not much programming progress this week: our staff has been distracted by pandemic news and planning. It’s hard to stay focused on code when something possibly-deadly is happening outside.

Coronavirus probably has been around ever since vertebrates first moved onto land. It lives in the respiratory system and spreads mostly via cough/sneeze droplets. Several strains exist in humans. They and rhinovirus cause most common colds. No big deal.

However, COVID-19 is a new variation. It jumped from bats to another mammal to humans last fall. People aren’t used to it, and that’s why it’s dangerous. This new virus is more infectious than influenza, and more lethal. Most people just catch a chest cold with slight fever, so they barely notice it (and spread it to others). 20% get pneumonia and need hospital care. Some of them die: especially if over 60, or in already poor health. With good medical care, the death rate is under 1% (still 10x as bad as the flu). When the disease spreads too quickly, hospitals are overwhelmed and 3% to 6% die.

Countries with significant deaths from SARS in 2003 were well-prepared for SARS-CoV-2. They contained the spread, and are almost back to normal now. It required a huge response in China, and less extreme actions elsewhere.

The rest of the world hasn’t done as well.  Things are real bad in Italy right now, and they turned deadly very quickly. The rest of Europe is only a week or so behind them. Conditions in the USA are more uncertain, since there has been so little testing here.  However, cases are already reported in almost every state. Celebrities are catching it. The shit is almost certain to hit the fan very soon. Exponential growth gets scary at this part of the curve.

It’s too late to stop Covid-19, but it can be slowed. Then hospitals aren’t overloaded, and fewer people die. Word is already getting out about the need for social distancing, but here are some thoughts more specific to construction companies:

      • Shut down for a while, if you can. If you are solo, this is a great time to get some  work done on your own house. If you have employees, can they handle a break? Isolation is the best way to protect your own health, and the health of your community.
      • If not, use face masks. N95 masks significantly reduce the spread of virus-laden droplets. “Easy breathe” masks won’t protect others if the user is infected, but a bit of duct tape over the outlet will fix that. Full respirators and haz-mats are even better if you can stand them. Fortunately, construction sites are less disease-transmittable than most workplaces, and they have other hazards that require masks.
      • Be clear with employees and subs. Send them home ASAP if sick, or don’t even let them come in. This might be time to start paying sick leave, if you don’t already. Emphasize the need for testing and self-quarantine. If you have an ear thermometer, it might help to check people for fever.
      • Stagger work hours & locations if you can. The less time people spend close to each other, the slower disease spreads.
      • Be clear with clients. If you work in client homes, let them know your plans. You might need to add plastic sheeting barriers, and sanitize more thoroughly at day’s end. Switch to outdoor work, if possible.
      • Take the usual precautions. Wash hands often. Cancel group events. Practice social distancing. Listen to local & state health departments. Check out the links below.

What you should do as a Business Owner
Covid-19 FAQs from Harvard U
CDC Covid-19 Website
Vox guide to Coronavirus
Johns Hopkins tracker (sometimes overloaded)

Please stay safe and healthy!

Dennis Kolva
Programming Director

Goldenseal Pro Progress- Tables & Beyond (Mar 2)

As of last week, breakdown tables are looking good in Goldenseal Pro for Windows. The code is clean and orderly. The appearance is pretty much as we’d like. It’s just a grid of little rectangles with text in them, but making that happen requires a surprising amount of code.

Many details are still unfinished, but our staff has moved on to other things for a while. There are several other types of tables in Goldenseal, and we might as well get them all working at the same time. We’ll come back to them after the entire interface is in place.

Table grids have a basic design issue: how do you enter data into the little boxes? Over the years, Microsoft Excel has approached it in two different ways: with a separate formula bar, and with an edit box that pops up when you click in a cell. Mac Finder and Windows Explorer edit in place after a delay, though it’s often easier to right-click and choose Rename.

The current version of Goldenseal also uses edit boxes that appear when you click. However, our tables are more complicated. Some cells are just text; some show a popup button and a menu list; some are check boxes or padlocks. It took a lot of programming time to get them working properly, and they still aren’t perfect.

When we worked on the Mac version last year, it was very hard to get edit-in-place fields working (especially for the smart fields that pop up a list of items). We finally gave up and tried a third approach: a separate window that pops up when you double-click in a row. Kinda like a little data entry window for a single breakdown item. It seemed like a big improvement over the current approach. Less cluttered, better use of space, easier to modify in the future. Most likely we will do the same thing for breakdown tables in the Windows version.

Right now we are working on Preferences, and the little windows that manage lists of payroll tax tables, cost categories, and many other details.

In the Mac version, there was a worrisome database bug that appeared when a breakdown table opened for the second time. Fortunately, it happened in the Windows version also, and it was easier to debug there. Working with code that is all in the same programming language really is easier. The bug wasn’t in the database code, after all. That was reassuring.

Dennis Kolva
Programming Director