Unknown's avatar

About Greg Moore

Founder and owner of Green Mountain Software, a consulting firm based in the Capital District of New York focusing on SQL Server. Formerly, a consulting DBA ("and other duties as assigned") by day, and sometimes night, and caver by night (and sometimes day). Now, a PA student working to add PA-C after my name so I can work as a Physician Assistant. When I'm not in front of a computer or with my family I'm often out hiking, biking, caving or teaching cave rescue skills.

Checking the Setup

A quick post outside of my usual posting schedule.

I was rewriting a T-SQL sproc I have that runs nightly to restore a database from one server to another. It had been failing for reasons beyond the scope of this article. But one of the issues we had was, we didn’t know it was failing. The error-checking was not as good as I would have liked. I decided to add a step that would email me on an error.

That’s easy enough to do. In this case I wanted to be able to use the stored procedure sp_notify_operator. This is useful since I don’t have to worry about passing in an email address or changing it if I need to update things. I can update the operator. However, the various servers at this client had been installed over a several year period and I wasn’t sure that all of them had the same operator configured. And I was curious as to who the emails the operators went to on those machines.  Now, I had a decent number of machines I wanted to check.

Fortunately, due to previous work (and you can read more here) I have a JSON file on my box so I can quickly loop through a list of servers (or if need be by servers in a particular environment like DEV or QA).

$serverobjlist = Get-Content -Raw -Path “$env:HomeDrive$env:HomePath\documents\WindowsPowerShell\Scripts\SQLServerObjectlist.json” | ConvertFrom-Json
 
foreach ($computername in $serverobjlist.computername)
{
$results = Invoke-Sqlcmd -ServerInstance $computername -query “select name, email_address from msdb.dbo.sysoperators”
write-host $computername $results.name $results.email_address
$results = Invoke-Sqlcmd -ServerInstance $computername -query “select name from msdb.dbo.sysmail_profile”
write-host $computername $results.name `n
}

This gave me a list of what operators were on what servers and who the emails went to. Now if this were a production script I’d probably have made things neater, but this worked well enough to do what I needed. Sure enough, one of the servers (ironically one of the ones more recently installed) was missing the standard mail Profile we setup. That was easy to fix because of course I have that scripted out. Open the T-Sql script on that server, run it, and all my servers now had the standard mail profile.

Once I had confirmed my new restore script could run on any of the servers and correctly send email if there was an error it was time to roll it out.

deploy

Successful deploy to the UAT environment

So one quick PowerShell Script, an updated T-SQL Script and a PowerShell Deploy Script and my new sproc has been deployed to UAT and other environments.

And best of all, because it was logged, I knew exactly when I had done it and on what servers and that everything was consistent.

I call that a win for a Monday. How is your week starting?

 

 

Getting My Hands Dirty…

… and my clothes cleaned. Or more importantly, dried.

Before I was a programmer I worked for my dad in construction over the summers of high school. It was good solid work. I enjoy working with my hands at times. For one thing, you see and feel the results of your accomplishments in a very tangible manner. For another, you generally can measure the impact of your effort.

After my dad died, I wrote about using a drill of his to work on the addition that was to become my office. I liked the heft and feel of it. I knew I was accomplishing something with it. Being a programmer, sometimes it’s hard to experience that. Currently for example I’m working on an ETL script using PowerShell to SFTP down a file, extract it to some tables and then feed it into Salesforce. For me, it’s just a bunch of data. Yeah, there’s some fun challenges; learning how to setup and deal with GPG and designing a robust and secure information because some of the data is sensitive. But, once the project is finished, it’ll run silently and other than an occasional email, I won’t think much about it. It won’t impact my day to day life in any way and I won’t be able to point to it and say, “See, THERE is something I did.”

But, my dryer on the other hand, now that’s different. For awhile now (say at least a year or two) whenever I’ve run a load it’s made a fearsome rumbling sound. It’s been annoying, but we’ve managed to live with it up until 6 or 7 weeks ago. Generally I’d do most of the laundry on Sundays and if there was a load or two left, on Monday while everyone else was out of the house or at school. But obviously things changed. My wife’s office is in the room next to the laundry room. Whereas for me the rumbling was faint and simply background noise, for her it was quite noticeable.  I tried to work the loads around her work schedule, especially since she’s on so many conference calls for her job, but it was getting less and less practical.

It was finally time for me to do something about it. Now, had I been smart, I’d have started the project on a Monday. But, I’m not always that smart. So, Saturday came around and I disassembled the dryer.

I was fairly confident I knew what the problem was. I assumed that either something had wrapped around one of the rollers for the drum, or a bearing in a roller had seized. If it was the former, the fix would be trivial and I’d have the whole thing back together before dinner. If it was the latter, I figured a shot of silicone or other lubricant and I could at least get a few more weeks out of it while I ordered the parts. And since the tight screws were now loosened and I knew how to take it apart, the final fix would go quickly.

Well, as they say, you know what happens when one assumes. I was wrong about the first guess, it was not something as simple as something wrapped around the roller. And I was even more wrong about it being a seized or flattened bearing. See for that assumption to be valid the bearing assembly inside the wheel has to actually exist.

20200502_162747

Bearing Assembly? What Bearing Assembly?

It’s a bit hard to make out, but inside the blue part of the wheel above, and behind the plastic triangle, there is supposed to be a nice little bearing assembly.  There is none.

20200502_163501

Better view of the roller

You can see the wear on the inner hub.  This is what in the trade is called “less than optimal.”

More seriously though, it unfortunately meant that this was not going to be a quick fix. I had been planning on ordering the parts, but this made it a bit more of a rush. The dryer contains four of these rollers and as such I ordered a four pack, since generally my assumption on items like this is is that if one has worn, all four are worn. Now, none of the other three have shown nearly the damage, but figure, I’m in there, I might as well make it right.

What’s most interesting to me, is that there’s literally NO sign of the roller assembly in the dryer. However it got destroyed, it was pretty cataclysmic.

I also took the time to clean out the rest of the interior space and correctly deduced that the moisture sensor was covered with lint. Now that I know where it is, I can keep that clean in the future.

In any case, sometime later this week, I’ll get my package, swap out the rollers and reassemble the dryer and start doing laundry again. Quietly.

But, unlike the ETL I’m writing above, this change will have a direct noticeable impact on my life I’ll be aware of every time I do a load of clothes. I like that.

This week’s takeaway? I do enjoy my job and the challenges that come with it, but there’s something to be said for doing work you can touch and feel and experience the tangible impact.

20200505_090057

My best sourdough yet!

And perhaps I shouldn’t be posting pictures of homemade bread after talking about dirty hands. Don’t worry, I washed my hands!

Scripting Made Easier

I was recently asked to write a quick blog for a local Tech Group. You can read it here. I commented on some trends in SQL Server there. But I wanted to add a thought on a particular positive trend I’ve been seeing in the design of SQL Seerver itself.

As regular readers will know I’m a huge fan of PowerShell and have been using and writing about it more and more. But, I came across a requirement last week where PowerShell would have been overkill. Basically, my client and I had identified a number of databases that had the wrong owner. We wanted to change them over to the proper owner.

Now, being old school, my first reaction was to call sp_changedbowner. Any DBA who has been around for enough years has probably seen this and used it. But, if you look at the most recent webpage from Microsoft, you’ll notice a light blue box that has a warning:

 Important

This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use ALTER AUTHORIZATION instead.

Now on one hand, since this was a one-off script, I could have safely used sp_changedbowner. But there is an issue with it. It has to be run in the database you want to change the owner of. There is no parameter to specify the database. Now to change the owner on a single database, that’s not an issue. Go into the database and run the sproc.

But, when you might have a dozen databases, that becomes a lot of work.

Now, my first inclination for something like this is to write a query similar to:

select name, ‘sp_changedbowner ”newowner”’ from sys.databases where owner_sid != SUSER_ID(‘oldowner’);

This would generate a nice list, except that we’d still have to go into each database and execute the command. Now, I could get a little smarter and write something like:

select ‘use ‘ + name + ‘ sp_changedbowner ”newowner” ‘ from sys.databases where owner_sid != SUSER_ID(‘oldowner’);

This has the advantage of putting in the USE command so I can change databases, but I still would have to manually insert carriage/return linefeeds.

So it’s a slight improvement, but only a slight one. Now, I could resort to PowerShell, get a list of databases and loop through them with a ForEach, but as I said, I wanted to keep this simple as it was basically a one-off (well really a three-off since I had to do it on DEV, UAT, PROD) but the point was still the same, I wanted to keep it fairly simple and try to keep it all in T-SQl.

But, if we go back to the notice that Microsoft I quoted above, we end up with a better solution.  Alter Authorization lets you put the name of the database right in the command.  So, something like this will work quite smoothly.

select ‘alter authorization on database::[‘+name+’] to newowner’ from sys.databases where owner_sid != SUSER_ID(‘oldowner’);

This results in a column that I can then cut and paste into a new window and execute without having to make any edits. It’s also a solution I know will work in the future.

I’ll add a final way some DBAs might have approached this and that is with the undocumented stored procedure sp_msforeachdb. However, I try to avoid that as much as possible because it is in fact undocumented and honestly, I find the syntax a bit confusing at times.

Anyway, the real point I wanted to make in this post was not necessarily how to change the DB owner, but to make an observation. Over the years, I’ve noticed that Microsoft has been improving T-SQL and making tasks that once were unncessarily complicated easier to script out. It’s easier to change a DB owner now than it was to do so years ago. This is evident in other areas of SQL Server. There are many items that previously were easier done via SSMS or perhaps could pretty much only be done by SSMS that can now be done via script (and of course pretty much any action you can do in SSMS now has a “Script” option so you can script it out, modify it if needed and save it.)

So, my pattern lately has been, “script everything” and Microsoft has certainly been making that easier!

What you’re Doing Right Now…

… is important. And no, I don’t mean reading my blog. While it’s gratifying to me that you are reading it, that’s not exactly what I mean.

I’ve seen some memes on Facebook with the theme of “If you don’t come out of this lockdown with a new skill or having learned something it doesn’t mean you’ve lacked time, it means you lacked motivation.”

Now, for some, this may be true. I know I’ve taken time lately to attend several webinars and have recently finally gotten around to signing up for the Khan Academy (currently working my way through the circulatory system). But, and I want to stress this, EVERYONE is different.

Recently I got a Facebook message from a close friend, “Hey, can I call you?” We spoke for 45 minutes. Between the usual shit going on her life, just everything else was getting to her.

My wife and I are fortunate, our kids are older and can pretty much handle their own schooling on their own. And we both are still working, so finances are not a problem.

But, I know others, who for example have grammar school children at home who are suddenly thrust into becoming full-time teachers. I know others who have lost, or shortly will lose their jobs. They’re getting by day by day.

Some folks are taking walks to cope. Others baking (it’s one of my coping mechanisms, has been since college) to cope.

Some are just getting by.

But for all of us, what we’re doing right now is important, to us. So please don’t be quick to judge others for what they are or are not accomplishing. And, IF you can, be there for others. And if you need to, ask others for support.

We’re all in this together.

Social !Distancing

As some of my #SQFamily knows, Mike Walsh has been hosting a Friday afternoon Zoom “social hour”. It’s a chance for all of us who are social distancing to hang out, chat and basically socialize.

This past Friday, and then Monday night was a real reminder of how much I love my #sqlfamily.  Earlier in the day, my client asked me to come up with a script to back up some SSAS databases. A bit surprising to me, there isn’t the robust built-in support for this like there are for the normal databases. No problem some googling quickly brought me to an article on how to do it using PowerShell by Jana Sattainathan. Now as any of my readers know, I’m a huge fan of PowerShell, so this was a great solution. I had to tweak it a bit for my needs, but not much.  So I was already happy that someone else had done the work for me. For one thing it meant I could finish my day a bit earlier and get on the Zoom call with #SQLFamily.

Well, what do you know, but during the call as we’re talking Kevin Hill happens to mention he’s having trouble with a script to backup SSAS databases. I immediately chimed in, “hey, I’ve got a working script, let me email it to you!”  Ten minutes later he was up and running and contacted me back. Turns out he had found the same article by Jana but got hung up on the fact Get-ChildItem there needs DEFAULT for the $instancename when dealing with the default instance. As most of my readers would understand, usually if you’re referring to the default instance, you don’t need to explicitly reference it. I had encountered this issue writing one of my first articles for RedGate.

So I’d like to say I solved Kevin’s problem, but truth is it really goes back to Jana.

Meanwhile on the call, there was a discussion of the work being done by #SQLFamily for the @FoldingatHome project, being led by Glen Berry I believe. Others, led by Tim Radney are printing clips to help hold N95 masks on. (If I’m leaving out folks or getting names or credit wrong, please let me know).

Monday night we hosted our local SQL Server User Group meeting, but virtually. We had between 9-12 people on line at any time, which is not bad considering that’s about 1/2 of what we usually have in person. We had no specific topic, other than simply catching up on each other and how folks were dealing with the current crisis. Meanwhile I learned of at least one other virtual User Group meeting going on. Our #SQLFamily is still finding a way to share knowledge at this time.

So for all these reasons, I love my #SQLFamily (but still insist they stay at least 6′ away for now!)

Pushing Solutions, not Products

Earlier this week, the governor of New Jersey put out a call for more COBOL programmers. Everything old is new again. Last time I remember such a call was around the year 2000. That said, while I never had the opportunity to learn COBOL, I’m amused by this. It reminds me of a quote I heard in college about Fortran and how one expert didn’t know what language engineers would be programming in in the 21st Century, but they’d call it FORTRAN.

But, I highlight these two languages because the truth is, they are the exception. In reality one has to constantly keep learning. The times, they are a changing as a poet once said. Fortunately for me I’ve been busy during this Covid-19 lockdown, but even still I have free time (some who read my blog may argue too much time!) That said, I’ve been trying to take more time to catch some webinars and to learn new skills.

Over the past few weeks I’ve got a couple of SQL PASS WIT Webinars under my belt. Last week however, I took advantage of Redgate’s Streamed event. (full disclosure: Redgate does pay me for the articles I write for Simpletalk but what I write here is not paid for by Redgate in any way).

There were a lot of great webinars and I did not catch all of them, so please don’t take my lack of mentioning any as a comment on their quality. There were also some I could only listen to partly as I was actually doing work at the time.

First off, I started with Kendra Little‘s session using git for database development. I’m still moving in this direction and it gave me a good insight into what I’m doing right and moreover what I’m doing wrong and how to improve it. I recommend this session to anyone trying to get version control into their database development.

Unfortunately I had to split attention to Grant Fritchey‘s session on learning to effectively use Extended Events (I do have to do billable work from time to time) but did catch some good stuff. Again, if you haven’t played with Extended Events, please do! I recently used them to help debug an issue I was having with a client and their Reporting Server (yes! you can write them for an SSAS instance!) Go Team #ExtEvents.

Andy Mallon’s session on shortcuts for the DBA was excellent and seemed to generate the most feedback in the chat window. I suggest you go to his page and find his print-out for keyboard shortcuts for SSMS. It’ll save you a lot of time. That said, watch the video if you can and see how well Kendra Little did on her “job interview”. (To be fair, I suspect most of us would have done about the same!)

Steve Jone’s session on unit tests was good, at least what I caught of it. Again, client work got in the way. I may go back to specifically watch this one.

After that, I had time to catch Grant Fritchey’s session on SQL Injection. It still amazes me how many programmers STILL write code so susceptible to this. He had a lot of great examples and offered some solutions. Note there’s no single right answer, but there’s definitely a lot of lousy answers.

Friday brought Rob Sewell speaking about SQL Notebooks and using Jupyter. I haven’t used this yet, but it’s on my list for the year.

Again, a great presentation by Grant Fritchey, this time on convincing the DBA to support DevOps. I’m come back to this in a bit.

I think the highlight of Friday was the costumes. In honor of SQLBits which was postponed this year, several of the presenters wore costumes. I think Steve Jones, with his hat, wig, and glasses won in the pure costume category. (You’ll have to check out the videos). But, that said, Kendra took the overall prize with her corgi Freya on her back in a pack. There was just something so wonderful watching her talk about index tuning as she’d casually feed a carrot over her shoulder.

Again there were other sessions and speakers, and even if I didn’t mention them, their presentations were top notch and worth the watch. Again, you can go to: https://www.red-gate.com/hub/events/redgate-events/redgate-streamed/ and catch them o demand. I recommend it.

One of the overarching themes I picked up on was an emphasis on DevOps and using both tools and processes to achieve a successful DevOps environment. Note that I think both are critical. One can have all the best tools, but without good processes, not much will be accomplished. Honestly, one take away I got was I’d rather have good processes and develop my own tools than have tools, but no process. This focus makes sense given Redgates focus on DevOps.  I now in the past I’ve made the mistake of simply thinking of them as a company that sells some cool tools.

I want to close with saying, one thing I appreciate about the #SQLFamily and Redgate does this well, is generally members focus more on solving problems than pushing specific products. I’ve attended more than one webinar hosted by RedGate where other than mentioning them as a sponsor, their name hasn’t come up at all. I’ve seen other members of #SQLFamily do the same thing. They may work for a company that provides tools and solutions, but if you use #sqlhelp on Twitter, you’ll find almost always it’s people there are about solving your problem, not pushing their software or solution.

So that was how I spent part of last week in lock-down. How about you?

P.S. I also made some boule bread to with the homemade chili on Saturday. It was a winner in the Moore House Hold.

 

The Year So Far

Today happens to be the last day of the month and the last day of the quarter. And according to my calendar, it’s the 4th Blursberyday of the month of Holiecouw.

I decided to take a look back at my first post of the year: 2020 in Preview. Wow, a lot has changed in a scant three months. I mentioned I was reading Station Eleven. It’s set in a post-apocalyptic world after a world-wide flu pandemic. Little did I know at the time I’d be living that reality a scant 3 months later. Ok, this is not nearly as bad as in the book, but it does give on pause to think. We are living in a time of upheaval and it will be interesting to see how this current pandemic changes social structures for coming years.

I wanted to speak at SQL Saturdays. Well, almost every one I’ve put in for or was planning on putting in for has been cancelled or delayed. So much for that goal. On the other hand, members of the #SQLFamily have been holding Friday afternoon (and other times) Zoom hangouts as sort of a morale boost. So I’ve actually gotten to know a number of my fellow DBAs and fellow speakers, so that’s better.

Fortunately, I’m still working. As a consultant, you realize every meal may be your last meal, so you keep working at it and hoping more meals are coming your way. So far my biggest client shows no sign of slowing down, nor does my second largest client. I’ve been fortunate, I know a number of folks across many industries who have been hit with a temporary or even permanent job loss. This is going to be hard for many.

But, I’ve also been taking the time to do more webinars. Last week I sat in on a Redgate webinar on the state of DevOps that was quite informative. The next day, Kendra Little (also of Redgate) gave the WIT webinar and also talked about DevOps. Both were quite informative and I learned a lot. I look forward to the upcoming Redgate Streamed event.

I’ve been using git more and more. I started using it integrated with Visual Studio about two years ago I think. But, after seeing my son working on a project where he was using it at the command line, I decided it was time to start to do that and now for one client that’s my de facto way of checking in and out changes I’ve been making to the PowerShell scripts I write for them. Next up, more version control for the SQL Scripts. I’ve already written a small deploy script I use to deploy scripts and changes and more importantly to log them. So while that client hasn’t really adopted DevOps, I’m doing my part for my small corner of work.

My next goal is probably starting to learn how to use Docker more. Cathrine Wilhemson’s blog post on that has convinced me it’s time.

And I finally finished binge-watching Haven.

So, the last few weeks haven’t been exactly what I planned for, and the upcoming months won’t be what I planned on either, but it hasn’t been a terrible time. What about you?

P.S. While out biking the other day, a thought dawned on me. Many post-apocalyptic books (such as Station Eleven) have characters using cars, but more like carts, either pulling them themselves or with horses because once the gas runs out, you can’t make more. But I got wondering how having a large number of electric vehicles would play out in such a world. Yes, much of the infrastructure would be gone, but even if you had to carry panels with you (much like Mark Watney in The Martian) you could probably be far more mobile. Hmm…

It’s too late?

I want to start with a sobering thought. It’s too late to contain this pandemic. I’m watching the news as slowly more and more states in the US issue versions of “shelter in place” or “stay at home” orders. But I think in most cases, it’s too late. The virus has probably already spread so much that self-isolation won’t be nearly as effective as it would have been had the states issued the same orders a week or two earlier. That said, it’s most likely still better than doing nothing.

Human beings at times are lousy with risk analysis. If a risk is immediate, we can react well, but the longer it stretches out or the further away it is, the harder it is to get people to react. Almost any climate scientist who has studied anthropogenic global warming has known for a decade or more we have a problem and we have a very quickly narrowing window for solving it, and the longer we wait, the harder it will become.

Yet too many of us put off the problem for another day.

So it is with the Covid-19 virus. “Oh we don’t have to lock down just yet, let’s wait another day.” And I’ll admit, sitting in the state that is the center of the virus outbreak here in the US, I’m tempted to say, “25,000 isn’t TOO bad, we can manage that.”  But that’s the lizard part of my brain reacting. It’s the emotional part. Then I kick in the rational part. If we use one of the numbers bandied about, doubling every 4 days, that means by this weekend, in New York State alone, it will be 50,000. By April 1st, 100,000. By the end of April, it could be the entire state.  Those numbers are hard to comprehend.

That said, I’m also hopeful. Modelling pandemics is pretty much pure math, but reality is more complex and often luck can play a huge factor. Let me try to explain.

First, we need to heed the words of experts like Dr. Fauci and others who are basing their remarks and recommendations on the inexorable exponential rise in expected infections. They are giving basically the worst case scenario if their recommendations are followed. And that’s proper. That’s really what you have to plan for.

Let me take a little side trip and mention a cave rescue in Vermont several years ago. By the time I had gotten the call to show up and to call out other rescues, the injured party had been in the cave for several hours. I didn’t know much about the extent of their injuries other than it was a fall and that it was in a Vermont cave, which almost certainly meant operating in tight quarters. I grabbed a box of Freihofer cookies, a lawn chair (my fellow cave rescuers will understand the reference), a contact list of other potential rescuers, and my son. While I drove, he’d read off a name and I’d say “yes call” or “Nope, next name.”  On the hour plus drive to the rescue we managed to contact at least two other people who could get there. (It turns out, as I surmised, several of the folks I wanted to call were members of the original caving party.)

Once there, my son and I were driven partway to the cave entrance and trudged the rest of the way. I talked with the folks on the scene to gather information and then dressed to go into the cave to gather first hand information. I still hadn’t gained too much information other than to know it was potentially shaping up to be a serious rescue. The person had been climbing a cable ladder when they fell and injured themselves. This meant, based on the information at hand, a worst case scenario of an evac through tight passages with the patient in a SKED stretcher.  I was playing the role of Dr. Fauci at that point, preparing for the worst based on the information I had.

Fortunately, literally at the moment I was about to enter the cave, one of the members of the original caving party crawled out and said, “he’s right behind me, he’ll be out in a minute or so.”  It turns out his injuries were fairly minor and with the members of his own caving party, he was able to get out of the cave under his own power.

I got back to Incident Command about an hour later and was informed, “oh, by the way, you’ve got at least 3 cavers who showed up to help. We held them at the bottom of the road. What should we tell them?”  My answer was simply, “Thanks and to go home.”

I relate this story not so much to talk about cave rescue specifically but to point out that even when planning for the worst, you may get a lucky break. But you can’t rely on them. Let me give an alternate scenario. Let’s say I had not called out the other rescuers and had gotten to the cave and crawled in, realized the situation was a worst case scenario, crawled back out and then initiated a call-out. It would have at that point probably meant at least an extra 90 minutes before the extra resources would have been on the scene. It would have meant the patient was exposed to hypothermic condition for another 90 minutes. It would have meant 90 more minutes of pain. It would have meant fewer brains working to solve the problem.

Getting back to Covid-19. Will we get lucky? I don’t know. I actually suspect we might. One “advantage” of an increasing population of sick people is we can better model it and we can also perform more drug trials. We may discover certain populations react differently to the disease than others and be able to incorporate that into the treatment plan. I don’t know. But I do know, we need to plan for the worst, and hope for a bit of luck. In the meantime, hunker down and let’s flatten the curve.

And if you’ve read this far and want to know how to make some pita bread, I’ll let you in on the two secrets I’ve learned: VERY hot oven (I typically bake mine at about 500-550F for 2 minutes on 1 side, and 1 minute on the other) and roll it out thinner than you might think.

Life in a Time of Coronavirus

With apologies to Gabriel García Márquez.

Life in the past week has definitely take a turn. We’ve gone from, “this might be bad” to losing about 30% of the market value of the stock market, and basically the country is shutting down.

I’d like to quote R.E.M. and say “It’s end of the world as we know it, and I feel fine” but the truth is more complex. Physically, I feel fine. I don’t think I have the Coronavirus, but of course I can’t say for sure.  I’m not really worried about myself. I’ve been working from home for years and so already had reduced the vector of working in crowded offices. But, of course my wife has been working in an office (though tomorrow her job will become “work from home”) and my son just came home from college for a break of now unknown length and my daughter’s school started a mandatory closure with some sort of undefined “remote teaching”. It’s still unclear what teachers will do what, but I hope by the end of the week they’ll be able to have a more robust teaching rubric in place.

I’ve been thinking a lot about toilet paper lately. We picked up some more rolls, just in case, but we’re far from hoarding (unlike the story of one family of four I read about on Facebook that apparently was caught trying to bypass the rules at a supermarket and buying 16 packs of 24 rolls of toilet paper: yes, they were trying to buy a total of 384 rolls of toilet paper in one day!)

But I’d by lying if I didn’t say there was a certain about of dread on my mind. Things are going to get worse before they get better.  I’ve been monitoring a site out of Johns Hopkins that seems to have accurate and fairly up to date data on the spread of the Coronavirus. The numbers aren’t great.  If the spread continues according to some models, we could be looking at a death toll in the US of 500,000-1 million or more.  These are staggering numbers. Now, to be clear, with social distancing and other measures, I have reason to hope the numbers will be 1/10th of those numbers, but even that’s a good sized number.

And of course there’s the aforementioned drop in the value of the stock market, and I honestly think it will only get worse.  If the worse case death tolls come in, we’re looking at a fundamental shake-up of our economy. Couple that with some of the possible mid-term effects as people face bankruptcy due to income loss and longer term changes that may result as a result of social changes. For example I’ve seen one headline suggesting that cinemas may simply not make a comeback after people stop going and just watch them at home. This is all scary and worrisome. And it’s bigger than toilet paper.

But more importantly, I’ve been thinking about families. I’ve written about this before and I’ve mentioned #SQLFamily. With Social Distancing being the current buzzwords, it’s put a damper on getting together with people. I know it’s so tempting to call up some friends and say, “hey, let’s get together and play games” but that sort of negates the point of social distancing.

My families, virtual and my biological one give me hope and cause to celebrate. On the RPI based chat program I use, Lily, it’s been great to see how one whole discussion is pretty much focused on a fact-based exchange of ideas. Even those of us on separate ends of the political spectrum are basically exchanging facts and mostly keeping emotions in check. This has been a useful place to learn a lot.

And on Twitter and elsewhere, it’s been remarkable to see #SQLFamily come together. Last Friday, and coming again this Friday, one of our members hosted a Zoom Chat where #SQLFamily members could just hang out and chat. Yeah, we talked about TP, and power outages in Johannesburg, and other topics, but it was mostly fun small talk. It was a reminder, that there are real people behind the Twitter handles and tweets. I’ve seen my #SQLFamily members send tweets about the success of their own family members and of their own hopes and fears.

Having gone to a technical college, and usually surrounded by folks who are self-identified geeks, sometimes it can be tempting to think we’re all just emotionless people driven by facts and data, human version of Star Trek’s Mr. Spock or Data, but the reality is, the families I’ve surrounded myself with are an amazing, resilient, group of people. And I think that’s probably true of most of us. It’s tempting to think “my group is special” and in some ways every group is, but at the end of the day, I think what unites us is greater than what separates us. Yes, fortunately I think my virtual families tend to make decisions a bit more based on facts than some groups, but we still share the same humanity deep down.

So, is there a tinge of dread on the horizon of my mind, yes. But I also see the sun rays of hope peaking above the clouds and know that the next weeks, months and possibly year or more will be rough. Some of us may lose loved ones. And I hate to type that, but it’s true. But, life will go on and we’ll find a new normal and we will do so by maintaining our relationships, physical and virtual.

My advice, during these times, reach out, expand your virtual relationships. Find hope and happiness where you can and share your fear, sadness, and sorrow when you need to.

Do small acts of kindness.

And I make the following offer:

If you’re down and need to talk or even just a cheer-up hit me up on twitter @stridergdm or if you know me on Facebook, private message me. If you want to join me on Lily, let me know, I’ll set you up with an account and a client. It’s mostly RPI folks, but not exclusively. If you really need it, we can even to a Zoom chat to talk about anything, from the role of the little known Saturn IV stage to talking about the Hudson River Chain at West Point during the Revolutionary War to recipes for air fryers, I’m there.

I’m going to close with a bit of randomness, because, well I think we need it.

A random cow sighting at a local Walmart.

A random cow sighting at a local Walmart.

 

Follow-up to last week

As a blogger, often I find myself tracking the number of page views a particular post gets as a measure of success. If I post something and it gets 20 page views and the next week I post something and that gets 100 pages views, one can sort of claim that the second post was 5 times more successful.

But the reality is, that’s probably really only a measure of popularity. One of my most popular posts was about some ongoing issues at RPI. But, I’m not entirely sure that popularity is a measure of success. In fact I’d argue that it’s often a misused metric.

What I actually prefer to know, but is often far harder to measure, is the impact a post or lesson has. I mentioned in an earlier post about how a single part of a lesson during a cave rescue class made a big impact.

So, this gets me to last week’s blog post. In terms of popularity it was rather humdrum. It didn’t stand out much in terms of the number of views it received and I was initially afraid that perhaps no one was reading it. (Yes, as a blogger, I have do have enough of an ego to hope people read my posts).

But, then something strange happened. I started getting comments and feedback, both here and other social media. Most of it was public, but some was sent privately and I’ll respect the privacy of those who sent it. And the feedback was generally supportive and informative and in several cases from women I know and whose opinion and feedback I value.  To them, I want to say Thank You. It is gratifying to know my post was read and had an apparently positive feedback.

I’m going to end this week’s quick blog with the name of a book that I’m reading this year. Yes, I say “this year” for a reason. Headstrong: 52 Women Who Changed Science and the World by Rachel Swaby. Each chapter is a quick read and it helps highlight the fact that women have been changing the world even when we didn’t know it. Some names I’ve recognized: Virginia Apgar for example. Most, like Mary Putnam Jacobi are new to me, but fascinating reads. I’m trying to read one bio a week, hence why it’ll take a year to read. I look forward to reading about Rosalind Franklin for example, a woman that I’d say was pretty much cheated out of a Nobel Prize.

So, in closing, thank you to who commented and gave me feedback. I value it and learn from it. And it makes writing my blog worth it to me.

Oh, and I have to comment on last week’s header photo. I picked it because it was a subtle example of poor design, anyone sitting at that spot on the bench risked having the latch slam into their legs. But I also picked it because I took it before one of the hockey games my wife plays in. She’s the one playing hockey. I’m just the guy opening and closing the door as they get on/off the ice.