Month: July 2020

Statistics and Mortality

I question the logic behind the “the worst is past, and it wasn’t as bad as we thought” faction that’s drove the Memorial Day partying and is gearing up for the 4th of July celebrations. The decrease we see in the NYC metro is impacting nationally aggregated data. NY and NJ have significantly reduced infection rates (and have since late April/early May). MA as well. Most other states have seen increases. Since the NYC metro had an oversized representation of cases (some 6% of the national population had, in late March, some half of the national infections), the reduction in cases there has had an oversized impact on nationwide data. Break the infection rates out by state, though? There are a lot of lines heading up, and steeply.
Hospitalization rates are already heading up outside of the NE corridor. Again, the drop-off in the “New England” and “Mid-Atlantic” buckets hide increases in aggregate. Death rates don’t have such a clear upward trend. Yet. Infection is a leading indicator, followed by hospitalization rates (it’s not like you are in the hospital on day one. Most people I’ve seen interviewed say they felt sick for a week or two), *then* death rates a month or two after hospitalization. We’ve seen infection rates on the increase since June. We’re starting to see hospitalization rates increase. I don’t doubt we’ll see death rates increasing toward the end of July. I don’t know if this misrepresentation of aggregate over partitioned data is a deliberate attempt to obfuscate the current risk level or a more easily comprehended visualization (my chart with 50 lines is a lot more difficult to read that the single-line national infection count graph). But the impact on public perception and public policy is dangerous.
What bothers me, though, is that … even if someone believes the mortality rate dropping significantly as more young/healthy people get infected or we “get better at treating it” or whatever their mental excuse for partying and venturing out without any type of protection, the hospitalization numbers *are* going up. It’s certainly better to go into the hospital for a month or two and emerge alive than to die alone in the COVID ward. Personally? I want to avoid a month or two on a ventilator. It’s a rather unpleasant experience. Not to mention the personal and national economic impact from millions of people out of work – the lucky ones have insurance that covers something like 80% of their normal salary, the less ones need SSDI, and the really unlucky ones have nothing. Even if hospitalization was a fun holiday experience? At some point, health care resources are maxed out; then resource constraint impacts mortality rate.
Risk mitigation isn’t about taking extraordinary action to avoid black swan events. When I worked in Arkansas, there would be an ice storm that shut down travel for a few days. The first year I moved there, it was a serious storm that shut down most of the state for a week or two. Access to the company network was via dial-up. We had some number of PRI’s — maybe ten, which would be 230 dial-in lines. Normal operation, we had fifty or so lines free. Ice storm? They were maxed out constantly. After that first week-long ice storm, the company executives demanded IT figure something out because they were unable to get on network. The company had 20k employees, which would require 800+ PRIs (a reasonable analysis was about 10k employees who could work remotely, so ‘only’ 400 PRIs) and the dial-in gear so those lines went somewhere. For the low, low price of a few million, we could ensure everyone could dial into the company network simultaneously. Of course, no one wanted to fund that initiative. What we did implement was a dedicated executive dial-in access number. One PRI, with one small modem bank, provided access for the 20 people who were special enough to get the number (yes, there was an authorization group preventing access by the unwashed masses who had the number). And the three IT people who supported those executives. It cost more than nothing, sure. But it was a reasonable expense to address the most critical part of the issue. In the subsequent ice storms? Lower-level employees would complain about busy signals on the VPN, their complaint would work its way up the chain, and the executives would pull out my multi-million dollar proposal to fix a problem that averaged two days a year. Technology advanced, and IP-based VPN became a thing. It has functionality beyond Arkansas ice days, and the company invested in it. Now everyone can connect to the network during the ice storm. A fairly reasonable cost that has utility 24/7.
For some reason, people are treating masks like the multi-million dollar VPN project. They’re not. It’s a cheap thing that most people can don safely. No, it’s not comfortable to sit in a warm room to attend the Township meetings wearing masks. I’m happy to head back to the car and cool off. But the hard plastic chair isn’t a big cushy couch. Their building is drafty and, while I am certain the space is conditioned, the ambient temperature isn’t as comfy as my house. There are lots of ways in which the environment isn’t comfortable. Masks are generally available — back in March, I wondered why more people didn’t just wrap a scarf around their face a few times.
People argue the efficacy of masks — most of which seems to stem from early recommendations against mask wearing that was partially driven by the reality of product availability and partially driven by the unknown of aerosol v/s large particle transmission. And, for large particle transmission, just staying physically distant from others minimizes risk. But the reality is people don’t maintain an acceptable physical distance from others. Our Township meetings have board members sitting at the far side of 6′ tables … but they move their chairs around and end up four feet apart and yelling at each other. There are people walking right next to us in the grocery store, people queuing up a foot behind me at the liquor store, people standing next to us in the aisle at Home Depot.
Even if a mask only prevents 50% of exhaled viruses from escaping and and prevents 50% of virus particles from being inhaled — that’s a huge reduction in risk. Even at 5% reduction, you’re reducing virus particles by a non-trivial amount.
I’m waiting for the lawsuits to start — it would be difficult to prove causality on a micro level (i.e. no one can sue Home Depot for failing to require customers wear masks), but at a macro level? Streets and businesses don’t altruistically have wheelchair accessible entrances. They have to. There’s a long legal history behind the requirement. Why shouldn’t businesses and government offices have to ensure access for those with compromised immune systems by requiring everyone wear a mask?

School Considerations

What exactly are the teachers using to clean the classroom? Stuff like Lysol and Clorox wipes have been on the “back to school” list for years because the school doesn’t have budget for basic classroom supplies.
These kids sitting 6′ apart … where’s that extra space coming from? In our elementary school, the “play” and “group” areas could be removed (no shared toys or sitting on squares together anyway). But kids are going to walk between desks, so you really need 12′ separation to allow a walkway. There’s no way to get 20+ kids into a classroom. And what about upper grades where students move between classrooms? There some large group of new hires disinfecting each desk in the three minutes between classes? Because having the teacher speed clean the desks seems counter-productive.
How do we accommodate both the ‘school shooting safety measures’ like keeping the classroom doors closed and the ‘COVID19 safety measures’ like minimizing contact with high-touch surfaces? The obvious COVID-19 solution is to have all interior doors propped open during school hours and possibly assign an employee to open/close the dedicated ingress and egress doors.
Everyone gets two scheduled times for the bathroom? Or how exactly does that work? Same for recess — hey, it’s your ten minutes to jog around the building. Go!
I’m already being asked to drive the kid to school because they cannot figure out how to bus kids safely. With the ‘normal’ number of kids being dropped off and picked up, there was a queue of cars backed out to the road. How’s this drop-off/pick-up thing going to work with a lot more kids? And what about someone who has kids in more than one school?
A significant part of early childhood education is learning to socialize and interact with others. How much social learning is going to happen this year?
And the biggest question of all — what exactly does the school do when the first person tests positive? The entire class has to be in quarantine for a few weeks? What about kids who have siblings in that class — everyone in their class has to quarantine too? Seems like the first positive test and the whole school needs to be in quarantine.

Oracle – Select Top

I discovered the “rownum” trick early in my usage of Oracle databases — especially useful for sampling data to see what’s in there, something like “select * from dataTable where rownum < 6” gets you the first five records. But that’s not suitable if you want to sort the records. In this particular case, I have a series of names. I want to find the highest number value in the series so I can name my object with the next sequential name.

Enter “fetch first”  … this appears to be available since 12c (so older database installations may still require a more convoluted solution):

SELECT set_name from set_data
WHERE set_name LIKE 'Something-With-A-Series-%'
ORDER BY set_name DESC
fetch first 1 row only;

Which returns the last name in the series.

PHP Sub-Second Sleep

I needed to add a sleep to a PHP process, but I didn’t want to waste a whole second on each cycle. That’s usleep:

<?php
        date_default_timezone_set('America/New_York');

        $t = microtime(true);
        $micro = sprintf("%06d",($t - floor($t)) * 1000000);
        $d = new DateTime( date('Y-m-d H:i:s.'.$micro, $t) );

        print $d->format("Y-m-d H:i:s.u") . "\n";                                                                       
        usleep(100000);

        $t = microtime(true);
        $micro = sprintf("%06d",($t - floor($t)) * 1000000);
        $d = new DateTime( date('Y-m-d H:i:s.'.$micro, $t) );

        print $d->format("Y-m-d H:i:s.u")  . "\n";                                                                      
        sleep(1);
        $t = microtime(true);
        $micro = sprintf("%06d",($t - floor($t)) * 1000000);
        $d = new DateTime( date('Y-m-d H:i:s.'.$micro, $t) );

        print $d->format("Y-m-d H:i:s.u")  . "\n";                                                                      
?>

Run the script, and you’ll see sub-second sleeps.

[tempuser@564240601ac2 /]# php testSleep.php
2020-07-09 14:06:20.641449
2020-07-09 14:06:20.741952
2020-07-09 14:06:21.742347

Marketing Fail

I find it ironic that the Republican, who brought us marketing campaigns such as the “Death Tax” which would cause Paris Hilton to pay taxes on her hypothetical inheritance but didn’t mean jack to 80% of the country seems unable (or, more likely, unwilling) to effectively market pandemic response.
 
Social distancing is a horrible phrase that speaks to isolation. OK, you don’t congregate in one big lump of humanity at the beach or discotheque. Why isn’t figuring out innovative ways to interact a national pursuit? Physically distanced social interactions — either online or in person. A few decades ago, I had friends who would all get on a call to watch a movie or TV show together. Start writing letters again (help out the post office, too). Back in March, when the lock-downs started, I surprised a lady at the grocery store by helping her look for her parent’s preferred type of coffee as I stood on the checkout queue. She didn’t have to get near me, I didn’t have to get near her, but the “social distancing” campaign had her thinking “head down, don’t talk to anyone”. We’ve got patio chairs set up under the big maple tree in our front yard. Two families sitting 10′ apart can easily converse, hang out, enjoy nature, etc. Putting chairs on either side of the fire pit is about 8′ apart too.
 
Then there are the masks. Social trends have convinced people to wear all manner of wild kit. There’s no way it couldn’t have been presented as some awesome fashion trend. I’m curious if it’s *masks* or *orders* that the non-mask wearing public finds so objectionable. Like, would they be down with wearing a confederate flag mask? What about helmets — we can dress up like astronauts, scuba divers, motorcycle riders. I introduced my daughter to pandemic safety by calling it the zombie apocalypse. It’s fun to get the masks and gloves on to take the recycling down the the drop-off point where she stands guard in the car watching for zombies. Or get a superhero cape and mask, adopt a secret identity. Not something I recommend when it’s 95 degrees … but when it cools off again, pretend you’re a less murder-y version of the invisible man with the head wrapping and sun shades.
 
The Republican promotion of preventative actions reminds me of the court-ordered PSA commercials that tobacco companies air. They have technically said what the court has ordered them to say, but there has been no attempt to engage the audience. Or attract attention. White screen, black text, monotone voice-over repeating what the text says.

School’s Out For …

I want to know what schools are going to do in September/November after what they did in August proves to be foolishly optimistic (either ‘the virus will disappear’ or ‘one person will be able to ensure twenty six-year-old kids wear masks and stay 6 feet apart, plus we can have a janitor in each restroom sanitizing after each use’) and they’ve failed to use the intervening 4-5 months to develop a decent online teaching approach.

Ohio Public Health Warning Level

Ohio now has a per-county public health alert level rating that reminds me of the terror alert color-coded system we had after 9/11.

Of course there will be people in red or purple counties heading out to neighboring counties to shop/eat/socialize/party because those neighboring counties are only in orange so they don’t need to wear a mask there. I don’t get why I’ve got to get my car e-checked because my county borders Cuyahoga but we wouldn’t have to wear a mask for the same reason … but it’s a step in the right direction deeming masks mandatory *somewhere* based on *something*.

Oracle – Group By Having

I needed a query to find records where duplicate name values exist. I know how to group by and count, but the table has millions of records. I don’t want the 99% of the data where no duplication occurs. By using “having” in conjunction with “group by”, I am able to restrict the output to the groups that match my criterion.

select display_name, count(display_name) from circuit
group by display_name
having count(display_name) > 1;

My result set is the display name & occurrence count for that display name without all of the ‘good’ records where there’s a unique display name. (Yes, I know uniqueness could be enforced. The real scenario isn’t this straight-forward. There are times where the display name should be the same and I’ve got additional filters that drop out those cases).