2022 in Preview

I started last year’s version of this post with the suggestion I should leave it as a blank page and I’m tempted again, but no, I actually have goals for next year.

By words, thoughts become actions, and by actions words become deeds.

I’m going to start with the usual list of items and then have a big reveal at the bottom (you can skip to that if you want).

  • Like last year, I’m going to continue to write for Red-Gate. Even if it’s just one article. I will also attempt to keep my “Friends of Red-Gate’ status. In fact, I vow to be even more involved if I can find time.
  • This year for the NCRC, I’m looking to premiere a new class we’re calling “Tip of the Spear” aka TOTS. The focus of the class will be to work with medical doctors, nurses, physicians assistants and other medically trained personal to get them (the tip of the spear) to the patient deep in the cave as quickly as possible to provide the best possible medical care. Unlike our normal classes where there’s a strong focus on things like setting up communications, rigging, searching, etc this will focus solely on getting them there to use their skills. I’m excited about this, even though there’s a fair amount of work required to fully develop the curriculum.
  • Yeah, I’ll continue blogging. ‘Nough said. (Hey no one says you have to read it!)
  • Travel: While I do plan to do more, the big trips may be out for reasons to be mentioned below. But we’ll see.
  • Biking: Yeah, I hope to hit at least 700 miles this year (that has sort of been my minimum goal for years and I’ve beat it every year. I’ll continue to do so).
  • Hike More: I hope to do at least one overnight this year. And of course day hikes. So if you’re interested in doing a hike, let me know.
  • Caving: There’s a few caves I want to get into this year. So I’m looking forward to that.

Changes are Coming!

And now “the big reveal”. I’m going to start by saying that while I enjoy consulting and I think I’m pretty good at it, I am not enjoying it as much as I used to. I’m also simply not finding it fulfilling in a way I’d like it to be.

Among the reasons is that at the end of the day I look at what I’ve done and wonder “what difference does it really make?” Yes, I’ve written some solid code. I’ve helped with projects that have saved my clients thousands of dollars or made them tens of thousands. Financially, they’ve obviously made a difference. But, on a personal level they haven’t.

One reason I’ve enjoyed teaching cave rescue so much (and participating in the few I have, including a body recovery) is because at the end of the day I know I’ve made a difference: I’ve taught someone valuable skills, helped someone get out safely, or even in the most extreme case, been able to help others find closure.

I’ve been contemplating a change for awhile. I had toyed with a few ideas, such as going back to being a full-time employee, ideally in a management position for awhile. And I may still end up doing that, but that’s not where I am planning on heading right now. Financially it would probably be the right move, and honestly, I think when I’ve had the right environment, I’ve been a good manager (on the flip side, in a bad environment I’ve found it hard to be an effective or good manager).

So, instead, I’m going to pivot a bit and attempt a career change. I’m going to to try to move into a field where I think I can make a direct impact on people’s lives. I’m going to start taking prerequisite classes so I can apply for a Physician’s Assistant program. This is an idea I’ve toyed with off and on for years. Or rather one of several. Besides enjoying working with computers, I’ve been fascinated with two other fields: medical and law. I’ve thought for quite a few years if perhaps I should explore them. This really came to a head during my dad’s fatal illness 6 years ago. I’ll brag a bit and say that more than once I had one of the attendings or nurses ask me (after discussing his condition or treatment) “Are you in the medical field?” Once even when students were rounding, the attending asked them a question and none answered it to his satisfaction, I was able to step in and correctly answer it. Yes, one or two students scowled at me.

Now, having said that, I’m quite realistic in understanding that while I do claim a greater than a laymen’s knowledge of things medical, I have a LONG way to go and I’m entering a difficult field later in life and have a bit of catchup to do. I have no illusions that this will be easy for me. But to perhaps channel a bit of John F. Kennedy “We choose to go to the Moon in this decade and do the other things, not because they are easy, but because they are hard…”

In the most optimistic timeframe, I’ll be completing my PA work in mid 2025. In a more realistic timeframe, probably 2026. This is a serious investment of time and effort. This is arguably going to be one of the hardest things I’ve done in years. There’s no guarantee of success (heck, there’s no guarantee that even after doing all the prereqs I’ll be accepted into a program). But, I’ve decided I have to try. Ah but a man’s reach should exceed his grasp, Or what’s a heaven for? I won’t know if I can do it unless I try and I don’t want to be a 4 years older wondering “what if?”

I’d been having thoughts about this for a long time. I finally put the thoughts into words, which made them that much more real. Now I’m starting to put the words into actions.

And one of those actions is to write the words down here for others to read. I do this for a multitude of reasons.

  • By writing this down and revealing it to the world (or at least to a small part of it) it holds me a bit more accountable for trying.
  • I’ll freely admit, I could use any and all support and help any of my friends, family, including #sqlfamily, and others are willing to give.
  • And honestly, perhaps it’ll inspire others in a similar position to stretch for their own goals.

For the coming year

I’ll keep working in SQL, you’ll see me at events and I’ll probably do some speaking, but I won’t be seeking out new work. I simply won’t have the time.

I’ll still keep running my local user group and looking for speakers

I’ll be blogging about my successes, and failures.

And I’ll be busy.

Wish me luck.

And Fun Was Had By All

I want to give shout-outs to Rob Farley, Peter Shore, Deborah Melkin, and Rob Sewell for making the final Capital Area SQL Server User Group meeting of the year a rousing success. And this being T-SQL Tuesday, I’m going to try to very loosely tie this into the topic this month How much do you love meeting in person, where would you like for your next event to take place, and why Costa Rica? as invited by Xavier Morera.

tsqltuesday
T-SQL Tuesday

First, let me get his questions out of the way:

  1. Favorite Conference: The easy answer has been SQL Pass, but honestly, at this point, any where I get to see folks in person!
  2. Best Venue: Ignoring Pass at Seattle, I have to say Manchester UK was nice, simply because it was my first overseas SQL Saturday, or perhaps Virginia Beach SQL Saturday, because Monica Rathbun and her group provided a nice charcuterie board!
  3. Best Presenter: Oh, this is a tough one. I’m going to take a pass. But then cheat and answer below. Sort of.
  4. Next event and why it’ll be Costa Rica: I’m suspecting sort of a bias in this question, but to be honest, I’d love to go. I think 2022 will be a bit too busy for me to visit, but perhaps 2023 or 2024. Maybe I can work in some caving then too!

That all said, I want to get back to my shout-outs above and tie that into this T-SQL Tuesday.

As the coordinator for the Capital Area SQL Server User Group, one of my primary roles, in fact perhaps the most important, is finding speakers to present. I’ve tried over the past few years to have a good variety and to bring some variety. We haven’t really missed a meeting since the pandemic has started, but we have been virtual for well over a year now. This has presented both drawbacks and opportunities. The biggest drawback of course is the lack of actual in-person interaction and the feeling of connectedness that has brought. On a personal note it also means not only have I not gotten out of cooking dinner the night of meetings, but often, I’m juggling getting something together for dinner and getting the session started (though last night my wonderful wife did take care of dinner for me.)

On the flip side, being virtual has allowed me to invite speakers who might not otherwise be willing or able to travel in person to Albany NY and for attendees from across the country to show up. It has also given me the opportunity to experiment a bit more with formats.

Last year, instead of our traditional in-person holiday party format, we did a version of “Bluff the Listener” where I asked various presenters to tell their worst IT/SQL horror stories, but one was lying. It was a success and a lot of fun.

Not wanting to repeat that, this year I decided to ask the above 4 presenters to present lightning rounds. That’s not so bad, except I added a twist. They didn’t get to choose their topics, they were given them: 10 minutes before they were scheduled to present. (And yes, some may I stole this idea from Buck Woody, I’d like to say I was inspired).

I’ll admit I was very nervous about this idea. It seemed a bit gimmicky and it could have been a complete disaster with lesser speakers. Fortunately, all four brought their A-Game.

Rob Farley, presenting from the future, in I believe a public work space, managed to give one of the best talks on column-store indices I’ve seen. Given he had only 10 minutes of prep, I was impressed. His presentation included the use of Powerpoint in sort of a “green screen” mode so he could draw on his screen and we could see what he was drawing.

Peter Shore followed up talking about Tips in Advancing a Career in Data. Again, off-the-cuff with limited prep time, he did very well with this topic. I think in some ways this was almost harder than the more technical topics because you can’t fall back on a demo or graphics.

Deborah Melkin followed, talking about the Best new SQL Server features (2019, 2022, Azure). I had announced previously that the best speaker would be awarded a prize. By I think unanimous declaration, even before Rob Sewell finished out the night with his presentation, the other speakers decided Deborah was the winner. She included some demos in her presentation, which, given the lead time, really impressed folks.

Closing out the evening, Rob Sewell entertained us with a demo of SQL Injection. Not surprisingly, he made use of PowerShell and Notebooks.

As I said, it was an entertaining and educational evening. I purposely set expectations low and made sure folks understood that the entertainment value was as much, if not more important than actual educational value. But I was very pleased with how educational it turned out to be. It was a nice way to end the year and honestly, I think a decent way to get a break from the bad news that seems to have surrounded us lately.

I do have a theory though about why the educational part turned out as well as it did though. In general I’ve always enjoyed lightning talks and I honestly, think they’re among the hardest type of talk to give. Sometimes people promote them as a good introduction to speaking for novice speakers, but I’m not so sure. To give a successful lightning talk, one really has to strip a presentation to the bare essentials and really focus on just one or two key concepts. This can be difficult. But done well I think it really makes those concepts stick.

Now, combine that with topics only being given out 10 minutes in advance, I think that really forces a presenter to focus on key concepts even more. I wouldn’t give an inexperienced presenter a random topic, and even with an experienced presenter, I’d give them a chance to decline a topic if they feel it’s completely outside their wheelhouse. But otherwise, give them a chance to see what they can do. It might surprise you. Heck, it might surprise them.

So, to go back and answer a question from above: Best Presenter… at least last night Deborah Melkin, who if nothing else proved her Google-foo was impressive.

And I think if I can find volunteers, I will definitely try to do an in-person version of this at a future SQL Saturday or Data Saturday or other conference.

Thanks to all who participated and joined us. It was a blast. But honestly, next year, I hope to see you all in person at our holiday party!

The World Wonders

I mentioned recently that I had picked up a copy of the book The Last Stand of the Tin Can Sailors. I just finished it and would highly recommend it. The author, James Hornfischer does an excellent job of interweaving the fates of the ships and their crews over the course of several chapters. There’s an excellent sense of the fear and sense of duty among the sailors. He also includes several maps to help one orient themselves as they read about the battle unfolding. He appears to have done his research, which includes numerous interviews with the survivors, reading of the ships logs and more. The one area of missing information, and he admits it, is an adequate understanding of the Japanese side of the battle. This appears in part to be due to a lack of access to such logs and I suspect a language barrier and the difficulty of travelling to Japan.

I mention this because it’s important to understand that the story he writes, nearly 60 years after the battle gives a far fuller picture of what happened than any of the participants had that day. But even now that story is missing pieces.

To quickly recap, the Imperial Japanese Navy was given the mission of breaking up MacArthur’s landings on Leyte in order to reclaim the Philippines. Like many Japanese naval plans it was audacious but also required meticulous planning and timing. And it involved a decoy fleet. This is an important element to what precipitated the last stand. At this point in the war (late 1944), the Japanese Navy had few planes and few experienced pilots, so their aircraft carriers were not an effective force. This despite the fact that the Japanese had shown at Pearl Harbor that the future of surface naval warfare was almost exclusively to be done via aircraft. So they decided to use their aircraft carriers as bait for the Third Fleet commanded by Admiral Halsey. A bait he took; hook, line and sinker.

This left the northern edge of the Seventh Fleet, guarding the San Bernardino Strait basically undefended except for 3 task forces, Taffies 1-3, with just a slew of “jeep” carriers and destroyers and destroyer escorts. Taffy 3 was the northernmost of these and the ones directly engaged by the Japanese fleet. They were soon to be met be the IJN Yamato and and the rest of Admiral Kurita’s fleet of battleships and cruisers. By any measure, Taffy 3 was outgunned and outmatched. Yet, by the end of the day, despite the loss of 2 destroyers, 1 destroyer escort, and 2 escort carriers, the Japanese fleet had lost 3 heavy cruisers, 3 more damaged, a destroyer damaged and the loss of 52 aircraft (compared to the US losing 23) and was in full retreat.

At this point, and for the last 77 years one could reasonably ask, “why?” What drove Admiral Kurita’s decision to withdraw. Unfortunately, most of the answers are predicated on guesswork, educated guesswork, but still guesswork all the same. The simple answer appears to be two fold. For one, he didn’t know if Admiral Halsey had taken the bait, and in fact it appears that he didn’t think Halsey had, and that he was in fact attacking the fleet carriers, not escort carriers, and hence a much larger American fleet than was actually present. But despite his erroneous belief about the American Third Fleet’s position, he was most likely correct in his appraisal of the future of the mission: he did not believe he could continue forward and disrupt the landings. Since that was the primary goal of his mission and it most likely would fail, it appears he saw no point in risking the rest of his fleet and withdrew.

One can speculate what would have happened had he continued on with the battle. My personal, and mostly uneducated guess, is that he probably would have succeeded in sinking the other 2 carriers of Taffy 3 and perhaps the rest of the destroyers and destroyer escorts. However, his position was extremely precarious with the growing number of American aircraft starting to make sorties from Taffy 2 and from an improvised airstrip the Army had prepared and the pilots from Taffy 3 had basically taken over. It’s most likely he would have ended up with several more of his own ships on the ocean floor, including the Yamato.

So, he made what he thought was the best decision based on the information he had at the time. As did Halsey when he took the bait of the Northern Force of the basically defanged Japanese carriers.

So why do I recap all of this? Because I think it’s topical to a lot of what we do at times. This past weekend I was upgrading a SQL Server for a customer. Fairly routine work. And I ran into problems. Things I wasn’t expecting. It threw me off. Fortunately I was able to work around the issues, but it got me thinking about other upgrades and projects I’ve done.

The reality is, in IT (as well as life) we make plans to get things done. Sometimes they’re well thought out plans with lots of research done prior to the plan and everything is written down in detail to make sure nothing is forgotten.

And then… something unexpected happens. The local internet glitches. It turns out there’s a patch missing you had been told was there. Or there’s a patch there you didn’t know was there. Or a manager unexpectedly powers down the server during your data center move without telling you (yes, that happened to me once).

When things go majorly wrong, we’ll do a post-mortem. We’ll look back and say “Oh, that’s where things went wrong.” But we have to remind ourselves, at the time, we didn’t know better. We may not have had all the information on hand. When reviewing decisions, one has to separate “what do we know now” from “what did they know then.”

Now we know, “…Halsey acted stupidly” to quote a famous movie. He shouldn’t have taken the bait. We know Kurita probably should have turned back earlier (since the other half of the pincer had been turned back by the Seventh Fleet, putting the Japanese plan in serious jeopardy, or perhaps pressed on a bit longer before turning back (and taking out a few more escort carriers). But we shouldn’t judge their decisions based on what we know, but only on what they knew then.

Finally, I’m going to end with a quote from the battle. Spoken by Lieutenant Commander Robert W. Copeland of the USS Samuel B. Roberts (DE-413) to his crew over the 1MC “This will be a fight against overwhelming odds from which survival cannot be expected. We will do what damage we can.” And that they did. Among other things they launched their torpedoes at the IJN heavy cruiser Chōkai, hitting and disabling it and then took on another Japanese cruiser with their 5″ guns until finally a shell took out their remaining engine room and they ended up dead in the water.

I can’t begin to fathom the heroism and bravery of the men of Taffy 3 that day. If you can, find the time to get a copy of the book and to read it.

P.S. The title of this post has an interesting story of its own, and I know at least one reader will know it all to well.

Time Flies

It was either only 20 years ago or a lifetime ago that I had received the news. Peter was on Flight 175. That’s all I needed to hear. That was all anyone who knew anyone on any of the 4 flights needed to hear. There was no hope, no questions that followed. My best friend from high school had been killed because a man in a far away land had hatched a plan to turn four airliners into deadly missiles.

I have to be honest, Peter and I hadn’t really kept in touch after high school. I can’t really say why. But I had finally reached out to him a few weeks before 9/11 and we had made plans to get together in the next month. That moment, like all my memories of him is now frozen in time. His smile that lit up a room will always be in my mind.

On this 20th anniversary, I have mixed feelings on how much 9/11 has been played out as a national tragedy for most of the last 20 years. It was no doubt a horrible day for many. Friends and family were lost that day. And yet, it seems to have taken a special hold in our national consciousness for two decades. Like Pearl Harbor, the attack was a complete surprise and caused the US to launch a war overseas. But unlike Pearl Harbor, it seems as if at times we are stuck in time. I think this is perhaps because in this case, our own planes and passengers were turned on us and because unlike WWII, there has been no distinct victory. There is no simple closure. But, thanks to people like Peter’s family, there is hope.

It was tempting for many after 9/11 to want revenge, to strike back. Some I think lost the distinction between justice and vengeance. Peter’s family did something different and I think unique. And that has been what has been on my mind.

In their own way, and a way that the Peter I knew from high school would have approved of 100%, they struck back at the Taliban. They didn’t go on the warpath. They didn’t call for attacks or bombings or even deaths in return. Instead, they opened a school for girls in Afghanistan. They setup a scholarship program for students from Afghanistan to attend the private high school, Berkshire, where Peter and I met. They decided to fight hatred and ignorance with lovingkindness and education. They fought for a future. Peter was gone, but they fought for a better world, despite him not being in it.

As the Taliban slowly regained control of parts of Afghanistan over the past years and especially the past months, I was saddened. With the fall of Kabul, I was nearly in tears. While I grieve at times for Peter, I grieve more for the dying of the dreams inspired by his murder. And this happening near the 20th anniversary of 9/11 has only made it more poignant.

That said, I actually have hope. I think it’s a dark time in Afghanistan, the current promises of their leader not withstanding. Currently it appears they will continue to allow the education of girls, but I don’t know for how long and how well.

The land, like the country is a harsh environment, but yet things grow. His family and countless others I believe have planted seeds in Afghanistan. Seeds that when the time is right will sprout and grow. So, I have hope. His death may have led to just one school and a few students coming to Berkshire, but I know his family wasn’t alone.

It may take years, perhaps decades, but I think have to believe that Peter’s death was not in vain and that more good will ultimately come of it.

Peter Morgan Goodrich
Peter’s smile as I remember him

More on the foundation setup by his family: The Peter M. Goodrich Memorial Foundation

Paywalled (sorry) recent article on him: The Berkshire Eagle

From his college: Bates

About his mother: a powerhouse of a woman that cancer took far too soon

P.S. One last comment about Peter himself. I think one reason we got along so well was because he was so inquisitive and always learning. At his memorial we were all told how among his possessions was found a copy of an English copy of the Qur’an, replete with many dozens of bookmarks. While we were all looking for solace and understanding the preacher reminded us, “For the love of God, he read the Qur’an.” That was Peter, always wanting to learn and understand. And he would have appreciated the wordplay in that statement.

#YesAllMen

For over two years I’ve been wanting to put together a speaking topic using the above as a title or as a subtitle. The reason is because the alternative, #NotAllMen is NOT a good thing to use.

Yesterday I came across an article that said it better than I could. I would recommend you read it first: Buzzfeed Article.

It brings up several great points, including ones I had not given much thought to. Look, I know when a friend of yours is upset that a guy just made a pass at her in a professional setting, one of your first instincts is to think “I’d never do that” and are tempted to say “#notallmen” you’re not being helpful. In fact, you’ve just made it about yourself. Just don’t. That’s not what is needed.

Look, I’m pretty confident that all my male readers are pretty decent guys. I work with many of you professionally, some of you in volunteer positions, some are simply friends, and some readers, I suspect I don’t know, but you’re probably ok too. None of you are outright sexist or racist. If you were, I wouldn’t be associating with you. But all of us are still a product of our environments. We make the off-handed comment without thinking about it. Or someone around us makes a comment and we don’t react. This is also why I suggest when it comes to calling yourself an ally, just don’t.

Several years ago I helped organize and then participated in a Women in Tech panel for our local SQL Server User Group. I was the only man on the panel and expected to be asked what was the best thing I thought we, as men could do. The answer was of course somewhat ironic: “Sit down and shut up.” I of course expanded upon this. No, we can’t nor should we ever completely shut up. That wasn’t my point of course. My point was to make sure not to center the discussion about us. When a friend complains about a sexist incident, replying #NotAllMen is doing just that. Centering the discussion on us. Sorry, that’s a time to shut up and listen.

But when others make sexist comments, that’s a time when it may be appropriate to say something. And if someone calls you out, take it in stride. We make mistakes. And if someone takes you aside and says something (I’ve now heard that called a “call-in”) thank them. It means they think well enough of you to help you be a better person.

At the end of the day guys, we’re all still part of the problem, even when we do our best. That doesn’t make us evil. It simply means we have space to grow into. Let’s do that. Let’s grow.

… Other Duties as Assigned

I’ve mentioned once before that at one of my clients I describe my job as “DBA and other duties as assigned.”

This phrase has really been on my mind this week, especially during a phone call with another client yesterday. This second client is a local consulting company that has hired me a few times to back them with my skills in SQL Server and MS Access. This time around the work they’re looking for is definitely SQL Server related. It was refreshing.

But it reminded me of my last two weeks with two of my other clients. One is having an issue with their app (that they always call “the database”) that is most likely a design issue that I need to dig into. This is a perfect example of what I call “software archeology” where I at times have to shift through “pot shards” to determine what the original developer was thinking. At times it can be fun and interesting, at other times, frustrating. I’ll be shifting through more pot shards in the near future to get to the bottom of this problem.

For my largest client, I spent most of my hours with them last week trying to true up a file with some financial data in it. In this case it’s part of an ETL process where I receive data, compile it and send it to a vendor. The process uses a combination of PowerShell and Pentaho. So while they interact with the database, the work I was doing wasn’t in T-SQL or directly on the database server.

The numbers weren’t adding up. There was an undercurrent of “Greg, your numbers are wrong” or “You’re filtering on the wrong criteria.” I kept pointing out that “I simply add up the numbers you give me.” Eventually the problem was narrowed down to the fact that in the source system, which is the system of record, they had deleted rows. Arguably, one should never be deleting rows in such a system, but rather issuing a 2nd row (a credit if you want to reverse a debit, or a debit to reverse a credit) and this was typically what was done. But in this case the maintainers of the source of record decided to wholesale delete these rows. I explained that from day one, since deletions are never supposed to happen (and given the way the system works, extremely hard to detect) all I do is either insert new rows, or update existing rows. In any event, with one minor schema change, some updates to the rows in question and an updated PowerShell script, I was able to make the numbers come out to match with theirs. So, is that really DBA work? Not in the traditional sense. But it’s definitely other duties as assigned.

Now that’s not to say I didn’t do what some might consider actual DBA work. On Saturday morning I patched one of their servers. And at one point during the week, I deployed a script to production. So, out of 18 hours of work for the customer last week, I think I can say maybe 1-2 total was “dba work” or about 5%.

Now, I want to be clear. This is not a rant or a complaint. I’ll admit I tend to prefer to work directly with SQL Server, but I was reminded of a quick discussion I had with a fellow DBA over the weekend about how they probably needed to start to learn PowerShell for their job.

I’ve been arguing for years that the role of a DBA has changed, and will continue to change dramatically over the next few years. Once where we might spend days head down slinging T-SQL code, setting up backups and restores, tuning indices, etc. now much of that is automated or at least far easier to do. Which is a good thing. In years past, a DBA might be responsible for a dozen machines or so at the most. If it was more than that, we’d feel sorry for them. That’s no longer uniformly true. I know a DBA who is responsible for over 100 machines. They’re the soul DBA. But, through PowerShell and other modern tools, it’s generally not an overwhelming job.

However, like the online presentation from the Atlanta Azure Data User Group I attended last night on SQL Database Edge, there is a growing list of things DBAs need to learn. Steve Jones recently posted about whether DBAs need to learn Linux? The short take away is not necessarily, but it’s probably a good idea, but we definitely need to learn about containers.

I have heard for years, “Microsoft will automate everything and the DBA’s job will go away.” Not only is that not true in my experience, the exact opposite is. I think being a successful DBA is in some ways harder than it was a decade ago. There’s so much more to be aware of and to learn.

Off the top of my head, without any real priority I came up with the list below of technologies that a modern DBA might find useful to know. This is not to say I know them all, or that one has to be an expert in all of them. And I will note, this is far from an inclusive list. I also left out third-party tools which are so common place. But I think it illustrates just how broad the required skillset of a good DBA is these days.

  • T-SQL
  • PowerShell
  • Query Store
  • Linux – at least at the most basic level
  • Containers
  • SSIS
  • SSAS
  • SSRS
  • Storage – (at least how different types can impact performance and the advantages and disadvantages of each)
  • Azure
  • SQL Database Edge
  • git or some form of version control

In conclusion, I’ll say, I’m not going to make any predictions about where the Microsoft data platform will be a decade from now, but I can tell you that DBAs will still be needed but their skillset will be as different from today as today is from a decade ago.

And post conclusion, I’ll add I’ll continue to rely on #sqlfamily and all my fellow DBAs to help me out. And continue to help them.

“We’re up to plan F”

I managed to skip two weeks of writing, which is unusual for me, but I was busy with other business, primarily last week leading an NCRC weeklong class of cave rescue for Level 1 students. I had previously lead such a class over three weekends last year, and have helped teach the Level 2 class multiple times. Originally this past week was supposed to be our National weeklong class, but back in February we had agreed to postpone it due to the unknown status of the ongoing Covid pandemic. However, due to a huge demand and the success of vaccinations, we decided to do a “Regional” Class just limited to Level 1 students. This would help handle the pent up demand, create students for the Level 2 class that would be at National, and to do sort of a test run of our facilities before the much larger National.

There’s an old saying that no plan survives the first contact with the enemy. In cave rescue this is particularly true. It also appears to be true in cave rescue training classes!

The first hitch was the drive up the the camp we were using. The road had been stripped down to the base dirt level and they were doing construction. Not a huge issue, just a dusty one. But for cavers, dust is just mud without the water. But this would come into play later in the week.

Once at the camp, as I was settling in and confirming the facilities, the first thing I noticed was that the scissors lift we had used to rig ropes in the gym last time was gone. A few texts and I learned it had only been on loan to the camp the past two years and was no longer available. This presented our first real challenge. How to get ropes up over the beams 20-30′ in the air.

But shortly after I realized I had a far greater issue. The custom made rigging plates we use to tie off the end of the ropes to the posts were still sitting in my garage at home. I had completely forgotten them. This was resolved by a well timed call to an instructor heading towards the camp, who via a longer detour then he expected, was able to get them. Fortunately, had that call waited another 5 minutes, his detour would have probably doubled. So the timing was decent.

I figured the week was off to a good start at that point! Honestly though, we solved the problems and moved on. I went to bed fairly relaxed.

All went well until Monday. This was the day we were supposed to do activities on the cliffs. Several weeks ago, my son and I, along with two others had gone to the cliffs, which were on the same property as the camp, but accessible only by leaving the camp and accessing from a public road, in order to clear away debris and do other work to make them usable. I was excited to show them off. Unfortunately, due to the weather forecast of impending thunderstorms all day we made the decision to revise our schedule and move cliff day to the next day. There went Plan A. Plan B became “go the next day.”

On Tuesday I and a couple of other instructors got in my car to head to the cliffs in advance of the students so we could scope things out and plan the activities. We literally got to the bottom of the road from the main entrance to the camp where we were going to turn on to the road under construction, only to find a the road closed there with a gaping ditch dug across it. So much for Plan B. We went back to the camp, told students to hang on and then I headed out again, hoping to basically take a loop around and approach the access road to the cliffs from the opposite direction. After about a 3 mile detour we came to the other end of the road and found it closed there. Despite trying to sweet talk the flag person, we couldn’t get past (we could have lied and said we lived on the road, but after 8-10 other cars would have arrived in a caravan saying the same thing we thought that might be suspicious). There went Plan C. We called an instructor back at the camp and headed back.

We got there and turns out an instructor had already come up with Plan D, which was to see if we could access the cliffs by crossing a field the camp owned and going through the woods. It might involve some hiking, but it might be doable. While there are dirt-bike paths, there’s nothing there that worked for us. So that plan fell apart. We were up to Plan E now. Plan E was proposed to further swap some training, but we realized that would impact our schedule too much. Now on to Plan F. For Plan F, we decided to head to a local cave which we thought would have some suitable cliffs outside.

That worked. It would out quite well actually. We lost maybe an hour to 90 minutes with all the plans, but we ultimately came upon a plan that worked. We were able to teach the skills we wanted and accomplish our educational objectives.

Often we wake up with a plan in our heads for what we will do that day. Most days those plans work out. But, then there are the days where we have to adapt. Things go sideways. Something breaks, or something doesn’t go as planned. In the NCRC we have an unofficial motto, Semper Gumby – “Always be Flexible”. Sometimes you have to completely change plans (cancelling due to the threat of thunderstorms), others you may have to try to adapt (finding other possible routes to the cliffs) and finally you may need to reconsider how to meet your objectives in a new way (finding different cliffs).

My advice, don’t lock yourself into only one solution. It’s a recipe for failure.

This Post is Free!

Yes, seriously, other than a bit of your time, it will cost you nothing to read this post. And you might gain something from it. That can be a good value.

As I’ve mentioned in the past, one of things I do when I’m not doing SQL Server is perform training for those interested in Cave Rescue. I also sometimes blog about it. I have also mentioned that this year I’m organizing the National Cave Rescue Commission‘s national weeklong training class. In addition, since apparently I’m not enough of a masochist I’m also organizing a regional Level 1 only weeklong training class.

Due to generous contributions the NCRC is able to offer scholarships. For the regional weeklong, we are able to offer 4 scholarships of a value of up to $375 each. This covers 1/2 the cost of training. Applications were due Saturday. Now, we’re hoping for 12-20 students, so this means if everyone applied, they’d have between a 1/3-1/5 chance of getting scholarship. Can you guess how many had applied as of Saturday?

Before I answer that, I’ll note my wife used to work as a financial aid director at a local nursing school. They too sometimes offered scholarships. There was one worth I believe $500 that often went unclaimed. Yes, it required a one page essay to be judged to apply. That one page apparently was too high of a barrier for many folks and as a result sometimes it was never awarded. Quite literally a person could have written. “I would like to apply for the scholarship” as their essay and gotten it.

The same thing happened with our regional scholarships. Out of 11 students so far, none applied. This was literally free money sitting on the table. We have decided to extend the scholarship application process until April 23rd and reminded folks they could apply.

Now, some of the students probably can NOT apply, because they are employees of government agencies that sometimes have rules on what outside funds or gifts can be accepted. This actually increases the odds for the other students. And some may feel that their economic status is good enough that they don’t need to and fear they’d take a scholarship away from someone who has more of a need for it. And that’s a position I can definitely appreciate. But my advice to them, “let the scholarship committee make that decision.” If they determine someone is more needing the money, or your need is not enough, they will let you know. And if they do give you a scholarship and you feel guilty, pay it forward. Donate to the fund later on, or give the money you saved to other causes.

Besides essentially free money at the NCRC, I got thinking about the amount of free training I’ve received in the SQL Server community. Yes, I’ve paid for PASS Summit a few times, but even if I had never gone to that, the amount of knowledge I’ve gained for free over the past several years has been amazing. Between SQL Saturdays and User Group meetings, the body of knowledge I’ve been exposed to has been absolutely amazing.

And yet, I know folks who shun such activities. I’m not talking about folks who say, “I can’t make it this month because it’s my kid’s birthday”. I’m talking about folks who claim they never learn anything. I don’t understand how that’s possible given the HUGE range of topics I’ve seen at SQL Saturdays and oh so many other free events. Some folks seem to think only the paid events are worth it. And while PASS Summit had certain unique advantages, the truth is, you can listen to almost all the presenters at various free events too.

Yes, time is not free, and I recognize that. But overall, it still amazes me at the number of folks who overlook the value of free events, or easy to gain scholarships to events. Don’t turn your nose up at free. It can be valuable.

P.S. – for the parents of college bound kids out there, one thing I did in college which netted me a bit of free money. A few days after the semester began, I’d stop by the financial aid office and ask if there was any unclaimed scholarship money I was eligible for. I never netted much, but I did net a few hundred dollars over the years. For 15 minutes of my time, that’s a pretty decent ROI.

Stuck, with Responsibility

So, by now, you may have all heard about the vehicle that got stuck trying to go through a somewhat narrow passage. No, I’m not talking about the container ship known as Ever Green. Rather I’m talking my car and the entrance to my garage!

Yes, due to circumstances I’ll elucidate, for a few minutes the driver’s side of my car and the left side of my garage door opening attempted to occupy the same spot in space and time. It did not end well. The one consolation is that this mishap was not visible from space!

Now I could argue, “but it wasn’t my fault! My daughter was driving.” But that’s not really accurate or fair. Yes, she was driving, but it was my fault. She’s still on her learner’s permit. This requires among other things, a licensed driver (that would be me) in the vehicle and observing what she was doing. She did great on the 8 mile drive home from high school. So great in fact that when she paused and asked about pulling into my garage, I said “go for it.”

To understand her hesitation, I have to explain that the garage is perpendicular to the driveway and a fairly tight turn. It’s certainly NOT a straight shot to get in. I’ve done it hundreds of times in the last 5 years (when the garage was added to the house) and so I’ve got it down. Generally my biggest concern is the passenger side front bumper “sweeping” into the garage door opening or the wall as I enter. I don’t actually give much thought on the driver’s side.

So, I gave her the guidance I thought necessary: “Ok, stay to the far right on the driveway, this gives you more room to turn.” “Ok good, start turning. Great. Ok. Ayup, you’ve cleared the door there, start to straighten out.” “Ok you’re doing…” Here the rest of the cockpit voice recorder transcript will be redacted other than for the two sounds, a “thunk” and then a “crunch”. The rest of the transcript is decidedly not family friendly.

The investigator, upon reviewing the scene and endlessly replaying the sounds in his head, came to the following conclusions:

  • The “thunk” was the sound of the fold-way mirror impacting the door frame and doing as was intended, folding away.
  • The “crunch” was the sound of the doors (yes, both driver’s side doors) impacting the said door frame.
  • Both the driver and the adult in charge were more focused on the front passenger bumper than they were on distance between the driver’s side and the door frame. Remedial training needs to be done here.

Anyway, I write all this because, despite what I said earlier, in a way this is a bit about the Ever Green and other incidents. Yes, my daughter was driving, but ultimately, it was my responsibility for the safe movement of the vehicle. Now, if she had had her license, then I might feel differently. But the fact is, I failed. So, as bad as she felt, I felt worse.

In the case of the Ever Green, it’s a bit more complex: the captain of a ship is ultimately responsible for the safe operation of their vessel. But also, in areas such as the Suez Canal, ships take on pilots who are in theory more familiar with the currents and winds and other factors that are local to that specific area that the captain may not be. I suspect there will be a bit of finger pointing. Ultimately though, someone was in charge and had ultimate responsibility. That said, their situation was different and I’m not about to claim it was simply oversight like mine. My car wasn’t being blown about by the wind, subject to currents or what’s known as the bank effect.

What’s the take take-away? At the end of day, in my opinion and experience, the best leaders are the ones that give the credit and take the blame. As a former manager, that was always my policy. There were times when things went great and I made sure my team got the credit. And when things went sideways, is when I stood up and took the blame. When a datacenter move at a previous job went sideways, I stepped up and took the blame. I was the guy in charge. And honestly, I think doing that helped me get my next job. I recall in the interview when the interviewer asked me about the previous job and I explained what happened and my responsibility for it. I think my forthrightness impressed him and helped lead to the hiring decision. The funny part is, when I was let go from the previous job, my boss also took responsibility for his failures in the operation. It’s one reason I still maintained a lot of respect for him.

So yes, my car doors have dents in them that can be repaired. The trim on my garage door needs some work. And next time BOTH my daughter and I will be more careful. But at the end of the day, no one was injured or killed and this mistake wasn’t visible from space.

Stuff happens. Take responsibility and move on.

Stop! Basic vs Deep Understanding

As an NCRC instructor, it turns out I’m eligible for steep discounts on equipment from a company called Petzl. I decided to take advantage of this a few weeks ago to get some new equipment for caving and just for practicing in general. One of the pieces, a new helmet was a no-brainer (in order to protect my brain). And I must say it’s so much more comfortable than my old helmet that I’m quite happy with it and has become my new default helmet. Well worth it.

Background (cavers (or anyone really) can skip this!)

But one of the other pieces I bought is a bit different. It’s called a Stop. For those who aren’t familiar with caving, first some background. Excluding cave-diving, which is a very specialized activity, caving is pretty much divided into horizontal and vertical. Horizontal caving doesn’t mean it’s perfectly flat, but does mean you can basically move through the cave using just your hands and feet and maybe a piece of webbing or short rope as a handhold.

That said, at some point, many cavers want to start to explore more caves that have more vertical relief and that require ropes to descend into. Unlike rock-climbers, cavers don’t actually climb the rocks (as a general rule) but the rope itself.

The general techniques used by cavers fall into a category known as Single Rope Technique (SRT). The emphasis here is that a single rope is used to ascend and descend. This article won’t go into all the different ways of ascending the said rope, but among the systems are what are known as Frog, Texas, Mitchell, Rope-Walker and homegrown ones. Cavers will argue infinitely over which one is better, but at the end of the day, much of it comes down to personal preference. (That said, the Frog system is by far the most common one used in Europe and the US tends to be far more varied.)

Generally the most common way of descending is to use a device that generates friction with the rope. Here is perhaps the biggest difference between European Frog users and American Frog users.

In the US, most Frog users (in my experience, I’m not sure I’ve seen a great poll) use what’s known as a micro-rack. (And yes, this does mean there’s a non-micro-rack. These are still used in some cases, but far less common).

Image shows a micro-rack on 10mm rope on the left and on the right, the fore-arm/palm of a left hand for scale,
Micro-Rack (left on rope in position of use, on right to show scale)

These are fairly simple devices that are durable and given the design, generally can provide a wide range of friction. Generally in American SRT work, once you start descending, you stay on a single rope and don’t need to move to another rope. I love my micro-rack and can, while hanging on the rope (from my climbing devices) change over safely to be able to rappel in well under a minute and I can do it blindfolded (that’s not an exaggeration, I’ve tested myself.) It’s a great device and it works.

But as I mentioned, this is in the US. In Europe, most cavers would look at me twice and wonder what the heck I was thinking. Over there a different device, generically known as a bobbin is used. In my case what I bought was a version from Petzl known as a Stop (among other things, it has a handle to help move one of the internal “pulleys” to vary friction)

Open Petzl stop on left, attached to rope on right

Stop! This is the part to read!

And now after all the long-windedness I’m finally getting to the meat of this post.

As I mentioned above, both devices rely on friction. Both require some device specific knowledge to use. For example, with the micro-rack you need to know which way to thread the rope. With the Stop, you need to be aware of the requirement of what’s known as a braking carabiner in addition to the Stop itself. In this case I’m using a specific carabiner Petzl sells called a Freino Z. Each device also has a specific way of doing what’s known as a hard tie-off. This is essentially a method of tying the rope around the device such that if you release both hands from the device and rope you will not descend. This is a critical skill to have.

So, after playing with the Stop on the ground a bit, I decided I had to try it as I would use it, i.e. 10′ in the air off the floor of my office while attached to a rope. I struggled a bit, but changed over from my ascent to descent safely and made it back down.

I mention this because I didn’t have anyone there to teach me or show me. I was reminded again that there’s a difference between what I’d call rote or a basic understanding and a deep understanding. I teach a lot of beginners how to change over from their climbing system to their descent devices. And it’s obvious at first that they are simply replicating the motions taught to them. I know I did when I started. Put this here, put that there. It works, they technically pass the requirements needed to take the class I’m teaching. But, if suddenly in the middle of a trip their equipment failed or they lost it (it’s not entirely unheard of for someone to drop their rappel device down the shaft) and had to change to a different piece of equipment, they quite honestly would be lost.

Their basic understanding is limited to the original device. They don’t fully understand how it operates as much as “how to do these steps to make it work”. Only with time and lots of practice does the basic understanding become deep understanding. This is to me, the fun and interesting part. I’m not saying you could hand me any device and I’d automatically understand how to use it. For example, unless someone tells you a braking carabiner is a required part of a bobbin setup, you wouldn’t know that just from looking at it. But if someone said, here’s the basic operations and here’s some details you’d need to know, then yes, you feel confident I could use a new device.

In the case of SRT, proper knowledge is literally a life safety issue. But what about databases. (Yes, I almost always find a way to tie my caving activities to databases!)

I saw a question on Quora the other night asking “How do I do a backup/restore in SQL Server.” The basic answer is readily apparent, even from a casual reading of the documentation. BUT, the deeper understanding should be to the point, where among other things in my opinion, when doing a restore with NO RECOVERY automatically flows from your fingertips. Sure, you might find that you’ve recovered exactly what you need with the first file and no additional logs are necessary, but how many of us have finished a multi-hour restore only to realize we forgot the NO RECOVERY and now can’t apply our logs and have to start over? This may seem annoying, but if it’s the production database, you’ve just more than doubled your recovery time and hence your outage. That’s not a good thing to happen.

Similarly, many of us have seen things like NOLOCK used in queries. We almost always cringe. Sure, the syntax may be correct, but 99 times out of 100, the usage shows the person didn’t have a deeper understanding of the implications.

So it’s about more than simply knowing the syntax (which I’d argue is similar to the rote or basic memorization on how to put a micro-rack or bobbin on a rope) as much as knowing implications of the syntax and why certain things are done.

I’m still working on getting as good with the Stop as I am with the micro-rack, but honestly, if you stuck me in a dark cave tomorrow, I think I’d do just fine.

And next time I restore a database, I think I’d do fine. Will you?