First Harvest – 2020

There are green tomatoes ripening, the beans are growing on the bush beans … and we’ve got cucumbers! I knew there were flowers with little proto-cucumbers growing. Anya and I were grilling dinner tonight, and I noticed a large diameter end of a cucumber nestled in the center of the plant. Pushed aside a few leaves and wow, that’s a large cucumber. I held Anya’s hand so she could lean over into the center of the plant and she found four more! There are still a lot of flowers and cucumbers starting too.

SCCM Shows “No items found”

The Windows 10 1909 upgrade was rolled out at work, and I got the “if you don’t get this installed, I’m gonna tell your manager” e-mail. Which is odd since all of this ‘stuff’ is supposed to be doing its thing in the background. But whatever. So I opened the “Software Center” and was told there were no items found under applications. Which … possible, I guess. I don’t use IT-deployed software that isn’t part of the stock image. But clicking over to “Operating Systems” (where the update should be found) also yielded “No items found”.

I know enough about Microsoft applications & AD to know I’m on cached credentials when I initiate the VPN connection. No idea what the refresh period is like, so I lock and unlock my workstation to ensure I’ve got an active authentication token. But that didn’t help — still no items found. I had to go into the “Control Panel”, open “Configuration Manager”, and select the ‘Actions’ tab. There were two — ran both of them. A few minutes later, I went back into the Configuration Manager utility & found a bunch of things on the actions tab. I ran all of them — nothing changed. Then let the computer sit for a few hours (I’m certain less than a few hours would have sufficed, but I had other things to do). Ran all of the actions again, and a notice popped up that I have new software available. Sigh! Now I’m downloading the six gig update — a process that should be done in a few hours. But at least I’ll have the update installed before the deadline.

Kid Coding

I’ve seen a number of articles written by developers and IT folks promoting how they won’t be teaching their young kid to code. Of all of the arguments against teaching kids to code, the only one that really strikes me is the fact that a lot of parents don’t know how to code themselves. Now, I expect it is possible to not know French but manage to cobble together some approach to teaching your kid French. It’s a lot easier (and the results are apt to be better) if you actually know some French. My decision to teach my daughter to code doesn’t mean it’s a vital skill that every kid needs to learn to prepare them for future jobs. But, since it is something I do, it is something I share with my daughter. If she weren’t interested in what is going on beyond getting it all typed in, I’d stop. But she’s interested in exploring beyond what the coding book tells her to type. As we created a little character on the screen, Anya wondered if we could make different little figures. At different locations. In different sizes. In different colors. In using Scratch, she develops characters and game play.

Why teach a seven year old kid to code? Why do you teach your kids anything apart from the mandatory school curriculum? Working on the car? She can help and learn a bit about how vehicles work. I replaced the tube on my bicycle tire, and she helped. She was aware that bicycle tires had replaceable tubes that could explode on you … which was useful knowledge when she blew out her own tube. She sews with me — embroidery and a machine — because being able to patch clothes saves having to replace things as frequently. Mowing the lawn – she’s aware that a house with a lot of land requires work and knows how to safely operate both the push and riding mowers. Gardening – she knows where food comes from, how to grow her own, and how much work actually goes into feeding the country. She’ll participate in chicken keeping – somewhat so she knows where eggs come from and the amount of work that goes into egg production, but also because pets are fun (and our chickens will certainly be more socialized with her involvement). We share all sorts of activities with our daughter because we enjoy them. Some intrigue her, some don’t. But how do you learn where your interests are if your exposure is limited to reading and math for the first decade, then science and history for the next almost decade?

All of that provides useful, practical knowledge. And learning to code is certainly useful and practical. But the utility of such knowledge, the practicality of such knowledge isn’t the reason I am teaching my daughter to code. Or, for that matter, the reason I’ve taught her anything else at home. These activities involve deductive reasoning, analytical thought, problem solving, research skills, or accepting instruction from others. All of which are generally useful in life.

Statistical Coverup

I keep encountering people who cite the fact that “only” half a percent of kids who get SARS-CoV-2 are dangerously ill. A small percentage of a very large number is still *a large number*.
 
The Department of Education estimated 50,800,000 public school students started the 2019-2020 school year. School admission rates have been trending up, but 2019 is the latest available data. Data from the CDC puts ICU admittance for children infected with SARS-CoV-2 at 0.58% (between 0.58% and 2%, but I’ll use the lower number since I haven’t encountered an ‘only two percent’ argument).
 
If only 1% of the kids who enter public school get infected, that’s over 2,500 kids in the ICU. If 5% get infected, that’s over 14,000 in the ICU. I doubt anyone would make the argument “Schools should re-open because only 14k kids are going to end up in the ICU”.

Medina County: Finding Survey, Deed, and Permit Info

I had downloaded some PDF files of the county survey books after we first bought our house. We wanted a little more info, but were completely unable to find where I’d gotten the survey book pages. Fortunately, a very helpful individual at the County Recorders office knew what I had and exactly how to get there. Figured I’d write it down for the next time we want to pull up survey information. The trick is to not use the new Medina County GIS website.

From http://engineer.medinaco.org, select “Traditional” from the GIS menu. This will bring you to the old county GIS interface at http://engineer.medinaco.org/cgi-bin/mchequery.cgi

From the drop-down menu hidden between the red bar and an text input and select a search type (Parcel Number, Address, Owner Last Name)

Click Query/Refresh

You will now see information about the searched parcel and a map. Scroll down.

From here, you can access a bunch of different information – for the survey books, select “Scans”.

There’s a lot of information available. In the Surveys, there’s a cool feature — the top part of the page contains a portion of the document and a light gray outline showing the searched parcel — when you cannot figure out why a particular page shows up when your parcel isn’t involved — look for a tiny portion of your parcel that’s technically on the page. In this example, a few feet of our lot appear under the information block. There are a few pages where the little section of land on the public right-of-way appear somewhere along the bottom portion of a scan. I expect they’ve got the corners of each page tagged with geographic information & your scan query retrieves anything where any of your lot falls within those bounds. Survey and tax map go back over a hundred years, and it’s neat to see how the property lines have changed (and not changed). Plus, I now know Bellus Rd was named after the family that owned the farm across the street from us.

 

Since I’m writing down where I’ve found important documentation … I’ll add:

Building permits are available through the Medina County Building Department at https://medina.onlama.com/Default.aspx

Deed transfers, mortgage instruments, etc are available through the Medina County Recorder at http://recordersearch.co.medina.oh.us/OHMedina/AvaWeb/#!/search

 

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";                                                                      
?>

Blah

[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