I’m writing this post late in the third week of November, 2020. Over the last couple of months, COVID-19 case counts in the US have grown significantly. The experts have been warning that we might be in for a rough winter. Looking at the current case count data, that seems to be the direction we are heading.

Source: Screen capture of the data from the CDC link above as of 11/17/2020.

While the scientific community has some very promising vaccines on the way to help, realistically those are going to take time to arrive and meaningfully start to improve the situation. Until then, the only tools we really have are the behavioral changes we have all heard so much about these last few months (masks, social distancing etc.).

While I remain optimistic that long term we will beat COVID-19, I’m pretty pessimistic about our near term trajectory. For the last couple of weeks, my level of pessimism has been growing. Amid my pessimism, I’ve been thinking about what I could choose to focus my attention on instead. I really don’t want to spend this next season heavily focused on COVID-19. I want to make progress in my life despite COVID-19. So…

I’ve decided to work on improving my own habits.

A year or so ago, I read the book Atomic Habits by James Clear. It’s very well written. My knowledge around habit change certainly increased as a result of reading this book. However, at the time, I did not put what I learned into practice in my own life.

I’ve decided over this next season, I’m going to re-read and carefully study this book. Then, I’m going to work to implement some of the techniques the book explains to establish some better habits in my own life.

Image Source: https://jamesclear.com/atomic-habits

I’ve observed the power habits have in my life and the lives of others. Fortunately, over the years I have accumulated some good habits that have lead to good results in some areas of my life. However, I’ve also accumulated some poor habits in other areas that have lead to poor results over time.

During this next season, I want to develop habits that will help me become:

A better software developer.

Currently, I’m a competent I.T. Infrastructure Engineer, with a strong background in I.T. security. Over the last five years or so, I’ve started to write some infrastructure automation code with PowerShell and Python. I want to create and sustain some new habits that will help me take my current software development skills to the next level.

A physically healthy person.

Perhaps nowhere in my life do bad habits and the lack of good habits show up more than in my physical health. Currently, I’m overweight. I don’t get sufficient exercise and I’m not careful enough about what I eat and when. None of that is new. I’ve made progress in this area before through short term (1-3 months) bursts of highly focused effort. However, over time I’ve always slowly drifted back into poor eating and exercise habits, only to have the weight creep back on slowly over time. I want to turn that around and get my physical health headed back in a better direction.

What does success with habits look like?

Previously, when trying to change, I’ve focused on traditional goals associated with the outcomes I’ve wanted to achieve. Sometimes, that has worked quite well. However, in other cases it might have worked well short term, but it has ultimately failed to produce positive, sustained, long term results.

During this next season, I’m going to be paying more attention to habit changes I can initiate and sustain. If I am successful establishing even just a few new habits in each of the areas I am focusing on, the outcomes I’d like to see and ultimately the person I would like to become will follow.

How about you?

My hope is perhaps reading this might encourage you to also think about what you can do to continue to move your life forward in spite of COVID-19.

Hopefully by the spring of 2021, the worst of COVID-19 will be behind us. What are you doing to try to improve your life and the lives of those around you until then? If you are reading this on social media, I’d love for you to comment and share what you are doing.


I realize I’m very privileged to even be in a position to think and write about this. While my career and business have certainly been impacted by COVID-19, the overall impact has been less severe than it has been for so many other people and businesses. I don’t in any way mean to minimize the suffering this horrible virus has caused so many. My goal is simply to share what I am doing to control what I can, and move my life forward as best I know how.

When you screwup, own it.

Everyone makes mistakes. We try not to, but screwups happen anyway. We live and work in a world of ever increasing complexity. We humans, don’t get everything right 100% of the time. None of us. Given that, how we respond when we screwup is quite important. Ultimately, when you screwup, you have one fundamental choice. How are you going to respond? The screwup is over…you can’t go back in time.

Try to hide the truth?

Blame others?

Make excuses?

Nope. None of those.

My suggestion: Own it.

I’ll explain why in a moment, but first a story about one of my worst screwups. I hate this story.

20+ years ago, I was a nineteen year old kid starting out in an I.T. career. I worked in an office with ~40 people. It was my job to manage an email server. Pretty cool job for a 19 year old kid…right? I was young, eager and awfully green. When you are young and green in I.T. you have a lot of blind spots you aren’t even aware of yet.

One day, the email database on the email server (NT4 / Exchange 5.5) I managed got corrupted. That makes for a pretty bad day generally for the email server guy. Server down. No email for anyone etc. So, I started working to restore it. We had backup software that I faithfully checked each day. However, when I went to use it to recover the data, the restore failed. Uh oh.

After a long painful call with the backup software tech support folks, I learned that the type of backups we were doing were not actually suitable and I was essentially out of luck from a restore standpoint. Such a total noob mistake. At that time, I honestly had no idea. Some consultant had popped in before I was hired, setup the server and gone away. However, it was ultimately my responsibility to manage it, and I had a blind spot I was not even aware of that hit me and my employer hard.

By this point, it was after normal work hours. So, I did what every desperate Exchange server admin did back then. I called Microsoft for help. They helped as much as they could. We ran some low level database tools (eseutil and isinteg) that wiped out a bunch of corrupted database pages, but left me with a database that would mount. We saved some of the data, but not all of it. We finished up in the wee hours and I went home to grab a couple of hours of sleep.

I came in early the next day, and I spoke to both of the owners of the company I worked for. I explained what had happened and that a lot of email data had been lost. I explained that I had done everything possible to save as much data as could be saved. I sent an email out to the entire company. Oh the irony, here is an email about your email being gone. Some people did not seem to care that much. A few others were pretty mad. I did not blame the mad ones. I was mad at myself too.

Then something crazy happened that I will never forget. One of the owners was discussing it with one of the folks who was still mad. I could hear them across the hall. An odd thing happened. The owner got tired of the pointless complaining, and shut it down. He told the mad person that if some email they had was so important, they should have printed it out. It was their fault really. Wait, what? Printed it out? Ha! I guess when you own the place, you can say stuff like that and get away with it. Basically, I think he did this to get them off my case and stop the pointless complaining. It was amazing. It was totally undeserved. I sure was thankful for it.

Thankfully, it was the mid-90’s so email was less business critical back then than it is now. After a few days, people generally got over it and moved on. I doubt most of the people involved even remember it today, but boy – I sure do.

I’ve learned some lessons from that incident, and other screwups I have watched play out in the 20+ years since then. Here is my personal philosophy at this point on screwups, given what I’ve observed.

When you screwup, own it. Here is why…and a bit of how.

When you screwup and own it, people don’t question your character. Sure, you screwed up. That is bad and there may be consequences. However, you will probably live to fight another day. I went on to work for the company who’s email server I failed to properly protect for about five years total. Over the years, I earned the ever increasing trust of the owners I worked for. Why? In no small part I think because the owners knew even when it would be hard, I’d tell them the truth. I might not be perfect but I was honest and I was working hard to get better. As any business owner or manger knows, you can work with that.

Had I lied, tried to cover it up, or made excuses they would have seen right through it. I would have destroyed their trust in me. Ultimately, protecting that data was my job, and I had failed in this instance at that job. No pile of lies or excuses could change that reality. However, I was honest about my failure which left us both with a foundation of honesty and trust to build from.

Your character and credibility is ultimately what you build your life on. Own it by telling the truth – the raw, sometimes ugly, sometimes painful truth. People will know you are not perfect (hint: they already know that), and they will learn that you are honest, even when it is hard to be.

When you screwup and own it, you can learn from it and do better. Over the years, I took my failure seriously and became a more careful I.T. Professional. I worked to add diligently to my base of knowledge to avoid these sorts of blind spots. I learned to plan projects with the potential for failures and associated roll back / restore plans in mind. When I somehow ended up with responsibility for something I realized I did not adequately understand, I dove in and learned as much as possible as fast as I could.

When you don’t own it and you pretend or make excuses, you can’t learn from your mistakes. You are too busy investing energy in making excuses and pretending everything is fine. If you screwed-up, everything is not fine. Don’t pretend it is. Instead, face it, own it and challenge yourself to do better.

Invest your response energy in something productive, not in making excuses or hiding the truth. Over time, and multiple screwups your ongoing investment in either activity piles up. You either pile up war stories and lessons learned that have made you better, or you pile up excuses and incompetence. Choose your pile wisely, you’ll get to live with it.

When you screwup and own it, do everything you possibly can to make it right. Part of owning your screw-ups is doing everything you can to correct them. In the end, I was not able to bring all that dead email back to life, but I did do everything possible to save as much as possible. I think this is why that business owner stood up for me. He knew I had done all that I or anyone else could have possibly done. There was really no point in anyone giving me a hard time, so he shut Mr. Mad Guy down for me. He knew, I had learned the lesson. I wonder if he realized I’d learned it well enough to be blogging about it 20+ years later?

In my life, this experience helped me learn the importance of protecting data in a visceral way. Protecting data is serious business. That employer never lost a bit more data on my watch. I had learned the lesson. Since then, I’ve configured many backup systems for many clients and I’ve done countless successful restores. I take every single one I touch ultra-seriously. Might I some day lose data again? I guess anything is possible. I do everything possible I can think of to prevent it, but I’m also humble enough to realize I still may have blind spots (unknown unknowns – thanks Mr. Rumsfeld). Now I have the great benefit of 20+ years of experience protecting systems and data, so there are far less of those. I have also gained the benefit of a deeply emotional connection to how important that work is.

When you screwup and own it, the worst is over. Ultimately, sometimes you make mistakes you can’t entirely undo no matter how hard you try. If you’ve done all you can to fix it, and you’ve truly owned it, it’s over. There is nothing to be gained by beating yourself up. Fortunately, by owning it you also have not hidden your error or lied. Doing that only sets you up for trouble down the road.

So, my advice to you, most patient reader, is this: When you screwup, own it. By doing so, you will preserve your character and good name, you will learn from it and get better, you can sleep easy knowing you did all you could to correct it, and the worst will be behind you.

Here’s to avoiding screwups! When that fails, here’s to owning them well.

2020 – Part 2 – Facebook

2020.  Wow.  What a year so far.  I do not need to get into a lot of details, because you all have lived it too.

Generally, I like to think I am a calm, stable, clear headed person.  However, if I am being completely honest, the first half of 2020 has really worn on me mentally.  A few days ago, I realized I needed to make some changes for my own good. I hope to post about several of those in the next few weeks.

The first of these is that I’ve decided to back way off Facebook.  I will never forget the moment it happened.  I was sitting at my desk.  I looked at Facebook on my phone and I saw yet another absurd, clearly false thing someone had posted.  I closed the app, leaned back in my desk chair, and said to myself “Why am I doing this?”

I decided then and there to take a break.  I posted a short message letting people know I was going to be off Facebook for a while.  I deleted the app from my phone.  I changed my Facebook password to a random long string of characters to make it a pain for me to log back on if I was tempted.  I printed that out, stored it and logged off.  I have not been back on since.

Over the years, I have really enjoyed Facebook.  I think generally it is a great tool.  It has enabled me to keep up with friends and family who I would otherwise not really be able to keep up with.  However, as time has gone on in my life somehow my Facebook use morphed into something that I was spending WAY too much time on. 

According to the Screen Time tool on my iPhone, for the last couple of weeks before I quit, I was spending 2-4 hours per week on Social Networking.  Initially, that does not sound like much.  However, if you split that time up into a bunch of tiny bite sized chunks that means I was checking it a lot.

Wake up…lay in bed and check Facebook.

Eat…check Facebook.

Stop at a stop light…pull out phone…check Facebook.

Waiting on some long running computer process to run…check Facebook.

Sitting in a group and the conversation gets boring and the group is large enough to get away with it…check Facebook.

Watch TV…check Facebook.

Go to bed…check Facebook.

Writing that and reading it…it just sounds so totally absurd.  I cannot believe I let it get to that point, but I did.

Take that level of Facebook use and combine it with the events of the first half of 2020.  Then take that raging dumpster fire and multiply it by the level of division in our society.  What I personally ended up with was a stream of partially toxic information that was constantly burning CPU cycles in my brain throughout my day.  For me it got to the point where I would say it was not healthy.  Unfortunately, there was a lot of good stuff mixed in too that stream that I do honestly miss.  However, the only way to escape the bad parts was to walk away from that good stuff too.  So, I did.

Once I quit, my brain did some strange stuff that I think ultimately confirmed that doing this was the right thing for me to do.  The first day, I found myself multiple times pulling my phone out of my pocket, going to open the Facebook app and realizing it was gone.  Oops.  On the second day, standing in front of the Microwave waiting on something, I pulled out my phone, opened my browser and typed www.facebook.com into the browser.  When I hit the login page, I realized what I had done.  I am no Neuroscientist, but those actions can’t be signs of a healthy use pattern.

Will I ever use Facebook again? Yes, absolutely.  However, at this point, I think I am going to stay totally off until at least August 1st 2020.  When I start to use it again, I will start slow and strictly limit my use.  Perhaps I will check it once a day in the evening, after my important work is done.  At this point, I cannot imagine ever putting the app back on my phone.

This is one of several changes I am working to make in what I am calling 2020 – Part 2.  I look forward to writing about a few of the others in the next few weeks.  What about you?  What are you doing differently to deal with the unique challenges this year has brought us?

Protecting your kids online: What worked for our family.

TL;DR:  If you are a parent who wants to better manage how your kids use the internet – go buy a Circle with Disney box.  You can thank me later.

Back Story: One night last month just before going to bed I decided to review my nine year old daughters iPad browser history.  We are not some sort of crazy – spy on everything your kids do – sort of folks.  In fact in retrospect, we may have been too permissive on this previously.  However, I do think as parents monitoring and managing how your kids use the internet is part of your job as a parent.  So, periodically I check the kids internet history.

It had been a while since I had done that on my daughters iPad.  On this night, I was horrified by what I found.  Earlier that very evening she had been watching some generally kid friendly stuff on YouTube.  However, looking back through the history you could see how her curiosity led her down a bad path.  That bad path ended with her on the web site of a hate group, “learning” about a very sensitive topic.

Waves of emotion washed over me – anger, sadness, and a lot of determination to do something to prevent this in the future.  I showed my wife the iPad history and I went and got my daughter.  She came down to our room and we sat on our bed together.  For the next half an hour or so, my wife and I unpacked the topic she was curious about, shared our feelings and beliefs on the subject and explained that she had gotten some really bad information from a really bad source.  After a long, emotional discussion – we prayed together and she went on back up to her room to sleep.

I felt so bad.  How could I – a dad who is I.T. Infrastructure Engineer for a living – not have done a better job of protecting her from some of the awful stuff online.  After all, I install enterprise grade equipment for corporate clients that filters out this sort of stuff.  My first inclination was to buy a smaller version of what I generally deploy for clients and install it in my home.  However, even smaller versions of that equipment are very expensive and honestly total overkill for home use.  Then I remembered a friend mentioning that he had purchased and deployed Circle with Disney on his home network.  From what he had told me previously – it was working great for him.  So – at  11:43 PM on Saturday night, desperate to take some sort of action to solve this, I fired up my phone and ordered a Circle device for $99 from Amazon.  My expectations were pretty low.  So much consumer I.T. equipment is total garbage.  However, I was determined to do something.

Progress: A couple of days later, the Circle box arrived and I unpacked it.  Setting it up was very easy.  It would be easy for those of you who are less technical as well.  If you are comfortable with using an app on your phone, and you know your home wireless network name and associated password – you can do it.   You simply add the Circle app to your phone, and follow the directions.  The initial process is very well designed and the initial connection process is very easy.  Within a few moments, I had the device on my home network.

Circle App – Home Screen

The way the device works is by discovering devices on your network, and associating those devices with either a particular person, or the house in general then associating each of those entities with some basic use controls.  In our house we ended up with a lot of devices either associated with my wife, myself, or our house generally.  Those profiles and therefore those devices don’t have any sort of filtering or controls applied.  If my wife wants to look at crazy stuff online – who am I to stop her?  Ha!  Seriously – the device just ignores traffic from those devices.  This is great.  The last thing I needed was a consumer grade device interfering with my work use of our home internet connection.

I then associated the devices my kids use to profiles I setup for them.  Circle has some great pre-built filtering profiles that were very easy to customize.  Currently, both of my kids are setup with minimally customized versions of the “Kid” profile.  I turned all of this on without telling either of them.  I wanted to see if they would even notice.  They noticed.

Circle App – Profile Settings Screen

Issues: Shortly after the next time my daughter went online, she noticed that she could no longer see videos from one of the YouTube channels she was watching previously.  Circle was forcing her YouTube views into YouTube Restrictive Mode.  So, as far as she could tell – these videos were just totally gone.  Being the extremely reasonable parent that I am – ahem –  I explained that I had added some filtering and I asked her to come down so we could watch the video in question together.  We made it about five minutes in, and after being subjected to a good bit of profanity and a lot of generally tasteless content – I told her we would not be unblocking this.  This was a catalyst for a good follow up discussion with her about being careful what content you consume online.  Being the generally reasonable daughter she is, and knowing there is no way on earth I would change my mind, she went back to watching kid appropriate stuff.  Bingo!


Circle App – Per Profile – Filter Settings Screens

A bit later my son came down.  He is a bit older than my daughter, and he has a good history of being very reasonable with what he watches online.  We have had a lot of discussions about this.  He was incensed because he could not watch some of the YouTube gamer videos he likes to watch.  Given the age difference, and his generally good history of managing what he watches well – I turned YouTube Restrictive Mode off for him.  However, I reminded him we could and would monitor his activities online.  Him knowing this encourages reasonable use.

The only other issue we have run into since we installed Circle about a month ago was with a site my son uses for school.  Circle was blocking it.  I simply went in and added the site domain to his custom filter and allowed it – problem solved – all from my phone within a few seconds.

Circle App – Per Profile – Custom Filter Screen

Unexpected Benefits: One other issue this has solved for us is device use near bedtime.  We have times of day set (different on school days and weekend) where the kids internet access just turns off.  The kids are welcome to read, draw, whatever but screen time is over for the day.  Previously, each night we would tell the kids “Time for bed…” and they would reply with “Four more minutes please!” or something like that.  Now they know – at 8:45PM on school nights the devices just stop being able to get online, so they plan accordingly.  Bedtimes around here have gotten a bit easier.

Circle App – Per Profile – Bedtime Screen

We also have a setting in place that only allows the kids to be online one hour per day – unless my wife or I add more time by hitting the reward button.  To be honest – we hit that button quite a lot.  The way we use this currently is to make sure they do their school work etc before we add more time.  So – they can come home from school and chill online for an hour if they want – then it’s time for them to get homework etc done before they ask us for more time.

Circle App – Per Profile – Time Limits Screen

Summary: The end result of deploying Circle has been nearly ideal.  The kids are protected from a lot of content that is not appropriate for them.  In addition my wife and I have dramatically better control of how they use the internet in general.  We are also well positioned to manage this in the future.  As they get older – we can easily open this up further and further.

Caveat Emptor: I have no illusion that we are perfect parents.  Perfect parents would have managed this whole thing better from the beginning.  My goal here has been to be transparent and share what I’ve learned in the hopes that sharing this will help others.  What works for our family may not work well for your family.  I totally get that.  However, I will humbly suggest that if you are a parent who believes that its part of your responsibility to manage your kids internet use, that this would be a great tool for you to consider.

Oh yeah – one last thing: You know what my little girl sees when she goes to hate speech sites now?  This:


To the team of engineers and developers who built and manage the Circle platform: You all are awesome!  Great work!  Thank you!

Automating Google Cloud Platform Snapshots with PowerShell

As part of a project I am working on, I needed a way to automate disk snapshot creation and retention on Google Cloud Platform.  I found several good examples of how to do this in BASH scripts etc.  However, I was unable to find anything in native PowerShell that I liked.  So, I wrote some scripts and decided to publish them here and on GitHub in the hope of helping someone else.

  • create-snaps.ps1 automates snapshot creation.
  • remove-snaps.ps1 automates snapshot cleanup based on the age of the snapshot.

Obviously, you will need to schedule these to run at some interval.  I’ve used Windows task scheduler for that purpose, and it seems to work great.

Obvious Warning: Please use these scripts at your own risk. I accept no responsibility for your use of them. However, if you run into any issues please let me know so I can work to improve them.


# Set the path and file name for PowerShell transcripts (logs) to be written to.
$LogPath = "c:\logs\powershell\snaps\"
$LogFile = Get-Date -Format FileDateTimeUniversal
$TranscriptFileName = $LogPath + $LogFile +".txt"

# Start the transcript.
Start-Transcript -Path $TranscriptFileName

#Set the GCP project.
$Project = "put-your-gcp-project-here-12345"

#Set the zone(s) where the disks are that you would like to take snapshots of.
$Zones = "us-east1-d", "us-central1-c"

#Record the date that the snapshots started.
$StartTime = Get-Date

#Go snapshot all of the disks in the zones identified above.
foreach ($Zone in $Zones) {
$DisksInZone = Get-GceDisk -Project $Project -zone $Zone | foreach { $_.Name }

foreach ($Disk in $DisksInZone) {
Write-Host "=========================================="
Write-Host "$Zone "-" $Disk"
Write-Host "=========================================="
Add-GceSnapshot -project $Project -zone $Zone $Disk #In the future we could clean this output up a bit.

#Record the date that the snapshots ended.
$EndTime = Get-Date

#Print out the start and end times.
Write-Host "=========================================="
Write-Host "Started at:" $StartTime
Write-Host "Ended at:" $EndTime
Write-Host "=========================================="

#Stope the transcript.

#Send the PowerShell transcript (log) by email. You can delete this entire section if you don't want log copies delivered by email.
#Google Cloud Platform blocks direct outbound mail on port 25. Reference: https://cloud.google.com/compute/docs/tutorials/sending-mail/

#Mail Server Settings
$smtpServer = "mail.yourdomainname.com"
$smtpPort = "2525" #Don't put 25 here it will not work. See link above.

$att = new-object Net.Mail.Attachment($TranscriptFileName)
$msg = new-object Net.Mail.MailMessage
$smtp = new-object Net.Mail.SmtpClient($smtpServer, $smtpPort)

# Set the email from / to / subject / body / etc here:
$msg.From = "gcpsnapshots@yourdomainname.com"
$msg.Subject = "GCP Snapshot Report"
$msg.Body = "Please see the attached PowerShell transcript."

# Attach the log and ship it.


# Set the path and file name for PowerShell transcripts (logs) to be written to.
$LogPath = "c:\logs\powershell\snaps\"
$LogFile = Get-Date -Format FileDateTimeUniversal
$TranscriptFileName = $LogPath + $LogFile +".txt"

# Start the transcript.
Start-Transcript -Path $TranscriptFileName

#Set the project.
$Project = "put-your-gcp-project-here-12345"

#Record the date / time that the snapshot cleanup started.
$StartTime = Get-Date

#Choose what snaps to remove. Essentially, the script takes the current date / time subtracts 30 days and sets a variable ($deletable). Is delatable even a word? Anyway... Any snaps older than that variable get removed. Obviously, you could tweak this number of days to fit your needs.
$deleteable = (Get-Date).AddDays(-30)

#Log what date and time we set $deleteable to.
Write-Host "Deleting snapshots older than:" $deleteable

#Delete the actual snaps.
$snapshots = Get-GceSnapshot
foreach ($snapshot in $snapshots) {
$snapshotdate = get-date $snapshot.CreationTimestamp
if ($snapshotdate -lt $deleteable) {
Write-Host Removing snapshot: $snapshot.Name
Remove-GceSnapshot $snapshot.Name

#Record the date / time that the snapshot cleanup ended.
$EndTime = Get-Date

#Print out the start and end times.
Write-Host "=========================================="
Write-Host "Started at:" $StartTime
Write-Host "Ended at:" $EndTime
Write-Host "=========================================="

#Stope the transcript.

#Send the PowerShell transcript (log) by email. You can delete this entire section if you don't want log copies delivered by email.
#Google Cloud Platform blocks direct outbound mail on port 25. Reference: https://cloud.google.com/compute/docs/tutorials/sending-mail/

#Mail Server Settings
$smtpServer = "mail.yourdomainname.com"
$smtpPort = "2525" #Don't put 25 here - it will not work. See link above.

$att = new-object Net.Mail.Attachment($TranscriptFileName)
$msg = new-object Net.Mail.MailMessage
$smtp = new-object Net.Mail.SmtpClient($smtpServer, $smtpPort)

# Set the email from / to / subject / body / etc here:
$msg.From = "gcpsnapshots@yourdomainname.com"
$msg.Subject = "GCP Snapshot Cleanup Report"
$msg.Body = "Please see the attached PowerShell transcript."

# Attach the log and ship it.

The infinite value of awesome interactions.

The last few days, I had an interaction with a company that really impressed me.

I was looking for a couple of basic managed network switches for a small project.  Essentially, I wanted basic enterprise switch functionality on a shoe string budget.  I emailed a friend (Jason B.) who does a lot more Cisco work than I do and he suggested I take a look at the Cisco 3750E series.  He event sent me the link below:

I took a quick look and this switch seemed appropriate.  I was about to go out of town, so I moved on to other things without placing the order. I figured I’d order them when I got back in town.

For the next few days I started seeing ads for this exact switch on what seemed like everywhere I went online.  I run a couple of ab blockers so I only see ads on pages that have convinced me to turn them off or in applications where my ad blockers are not effective.  However, suddenly that little Cisco 3750E seemed like it was chasing me all over the internet.  Open Skype – boom – Cables and Kits Cisco 3750E ad.  Open a web page where my ad blockers were off – boom – more ads just like the one below.

I understand at a technical level exactly how this works.  However, I don’t think I have ever been so well targeted all the way down to the specific product level in my life.  These were not generic Cables and Kits ads, or ads for generic Cisco gear – these were ads reminding me to go buy the exact switch I had looked at.  To make this even more impressive – this is not a new switch – they don’t have thousands of these – when I first looked, they had three in stock.

After a few days of this, I was feeling a bit snarky.  So, I tweeted this:

We had some good back and forth, and @cablesandkits mentioned they would be sending me a small gift.  I figured I’d get a sticker etc.  Yawn.

So, I go away on my trip and essentially forget about all of this.  Then I come home one day and there are two boxes from Cables and Kits waiting for me.  They actually sent me the switch, a bunch of great Cables and Kits swag and a handwritten note personally signed by 15+ team members!  How awesome is that!  I was totally blown away.

The Cables and Kits Digital Marketing folks are doing an awesome job.  I’m a busy guy. Most of us who work in I.T. are.  It’s very hard for a sales / marketing message to pop out above the noise. Cables and Kits took one short visit to their site and transformed it into an experience that really got my attention.  It’s a bit ironic that awesome ad targeting led to what was ultimately a very human interaction. The Cables and Kits folks did a great job with both methods of interaction.


  • More than anything else, your reputation matters.  Without my friend having previously had positive interactions with Cables and Kits, he would have never sent me that link in the first place.  If Jason B. said this switch was a good fit for my needs, and that Cables and Kits was a good place to get it, that was good enough for me.
  • Each interaction with a client, or potential client matters.  Cables and Kits took the tiny bit of data they got when I clicked that link, and they used it diligently.  When they had the opportunity to have a deeper interaction through Twitter, they were paying attention and took advantage of it.  They then chose to ramp things up and interact on a more personal level.
  • A culture where you can do cool / non-standard stuff matters.  Over the years, I’ve bought and recommended literally tons of Dell gear.  If my poor Dell rep wanted to send me a hat and a mouse pad, I seriously don’t think he could get it done.  Cables and Kits must have a corporate culture that empowers and encourages people to do this sort of thing.
  • The impact of interactions like this are real, and measurable.  Do you think I’ll buy from Cables and Kits in the future?  Do you think I’ll recommend Cables and Kits to my clients and friends?  Absolutely!

Hats off to the fine folks at Cables and Kits, for the switch, the swag, and the reminder of the infinite value of awesome interactions.

Do what you love.

Disclaimer: I have no idea if this post will ever be helpful at all to anyone else.  Sometimes writing something like this helps me make sense of my own thoughts.  Since I wrote it down, I thought I would share it.

A commonly repeated bit of wisdom is that it is a wise career choice to “Do what you love.”  I’ve heard this advice for years and at first glance, it seems good.  However, as you really dig into it, it can be difficult to figure out what it is that you really love.  What would it look like to actually do what you love for a living?

Is this what I really love?

I love to go to my Aunt’s lake house and ride the SeaDoo around the lake.  It’s one of my favorite leisure activities.  Should I do that for a living?  Is that what I love?  Thoughts like this go through my brain…  Perhaps I can make a living riding a SeaDoo.  Perhaps I could become a SeaDoo racer.  Do what you love – right!  YOLO!

Hang on a moment Mr. YOLO man.  Let’s pause and count the potential cost of doing that.  I might need to move away from my extended family to some warmer climate where you could do this year-round.  I might need to exercise a lot to get in great physical shape to race competitively.  It’s nearly impossible I would be able to earn much of a living doing this in the beginning, so for several years I would need to train to be a SeaDoo racer and work at another job to support my family.  My free time and a lot of my family time would be totally consumed by this.  Hmm.  This is sounding less awesome very quickly.

Once you look at what you think you love in the bright light of reality, the picture changes a bit.  I do enjoy riding the SeaDoo.  However, I don’t love it nearly enough to make all of the sacrifices I would need to make in order to make an actual career out of it.

Now what?  Give up?  Head back to the proverbial salt mine to spend the rest of my days doing something I really don’t love or perhaps even hate?  Nope.  Dig deeper. Here are a couple of things I have observed recently that have made me think differently about this topic.

Observation #1 – Olympic Swimmers

Recently we watched some of the 2016 Summer Olympics.  I was amazed watching the swimmers.  Think about what they did to even make it into that Olympic pool.  They exercised like crazy.  They ate healthy – probably extremely healthy.  The practiced over and over again, nearly perfectly, day after day for years upon years.  They sacrificed a lot of big things in their life only to make it into the Olympics.

Watching them, I sat and thought at first, “Wow.  That is cool. They sure are fast!”  Then I thought a bit deeper about what being that fast must have required and I thought: “You know what – these people are crazy!  Why spend so much of your life for so many years on end to become THAT good of a swimmer?  Who cares!”

I for one frankly do not care nearly enough about swimming to do that.  I would not be willing to invest even a small fraction of the effort that the person who came in dead last must have invested, even if you could assure me that by doing so I could be an Olympic gold medal swimmer.  It’s simply not something I care that much about.  Those swimmers must really love something about swimming.  They have paid a tremendous price to get to this point.  I don’t think it is a price anyone would pay, if they did not love it.

Observation #2 – Wonky I.T. Security Topics

Last week, somehow I came across something that peaked my interest in an I.T. security book called the Art of Memory Forensics.  So, I paid ~$50 and ordered it from Amazon.  It came in on Friday and I proceeded to give it and the great tool that it is written about a ton of my weekend free time.

Why?  Because memory forensics is awesome!  Well – at least I think it’s awesome.  It’s a tool that can help me do something I actually love even better.  It open up another possible angle to attack the problems that I wake up thinking about from.  It is a small piece of a grander puzzle that has had me fascinated for years.

If most of you were to read this same 858 page book, you would hate it.  You would be bored to death.  You would not be willing to invest a fraction of the time that I will happily invest on this topic.  You would probably not do it even if you could become one of the best memory forensics people in the world.  You would nearly die of boredom or confusion or perhaps both during the first few hours.  Why?  Because most of you don’t care at all about this topic.  You don’t care so much that I bet your brain would nearly refuse to focus on this for long enough to really learn much about it.  You don’t care about memory forensics in the same way I don’t care about swimming fast.

What I have learned

Why do I love topics related to Computer Security?  Honestly, I have no idea.  I just do.  Perhaps it is just what God put me on this Earth to do.

Looking back over my life, I can see a clear interest in this topic all the way back to when I was a kid.  I remember one year, my family was at the beach and somehow I ended up reading a bunch of Tom Clancy books.  Perhaps they happened to be at the house we rented for the week.  Spy stuff, military stuff, tapping undersea cables to gather intelligence on the bad guys – all of it seemed so fascinating!  I did not get nearly the amount of sun that my brothers and cousins did that year.

After hearing I was a Tom Clancy fan, my High School Principal pointed me to a book by a guy named James Bamford titled The Puzzle Palace.  I had never heard of the Nation Security Agency before this book, but I read every word.  Again – totally fascinating.

Fast forward my life story a bit and I ended up in an I.T. career.  As my career has progressed, I’ve always gravitated to areas that fit within the broad categories of Information Assurance / Information Security.  I love configuring firewalls.  Seeing an IPS alert on a blocked attack is an actual thrill for me.  I love well planned and well configured backup systems.  Quickly restoring data that was destroyed by a crypto ransomware attack knowing that the capability to do that mean the criminal will not get a dime of my client’s money makes me happy on the inside.  I imagine I love these things as much as those crazy swimmers love swimming.  It’s just IN me.  It’s what I actually love doing.

Could I do something else?  Sure, but I might not enjoy it enough to get really good at it.  For me, this is the area that is so fascinating that I will willingly invest my free time and personal money to learn even more.  For me this is a marker.  It’s a hint.  It’s an indicator.  It’s a pointer that points to what I must really love.

My $.02 worth of advice for you if you are wondering about what you really love.

Sometimes people struggle to figure out what they love.  If you can’t figure out what it is that you love, look at your life and ask yourself this question:  What is it that I am so fascinated with that I will happily spend my free time and my own money learning more about?  For some of you it is music.  For others, it’s real estate.  Perhaps for some of you it is cooking.  For others it’s helping hurting people put their lives back together.

Look for patterns.  If you’ve been fascinated with something for years and you’ve spent your own money and your own free time to learn more about it and/or do more of it – pay attention.  That might be your thing.

If you think you might want to make a career out of it, pause and run it through the sacrifice filter first.  Ask yourself “Do I really love this enough to sacrifice what would be required to become good enough at this to make a living out of it?”  Be warned – the sacrifice required will probably be even higher than you expect upfront.

If you are not willing to sacrifice enough to make a career out of something, that’s ok.  Perhaps whatever it is can still be a great long term interest for you.  For me it has been helpful to have thought of some things and then intentionally set them aside as career options.  Doing this frees you up just to enjoy them as interests without getting stuck thinking about a career move that you know deep down you are not willing to actually make.  Set them aside and over time move on to the next thing you identify.  Rinse and repeat.  Eventually, you might hit on the thing you really enjoy where the cost to actually do it fits with what you are willing to sacrifice.

Back to me for a moment…

Do I do exactly what I love 100% of my work time.  Nope.  I honestly doubt anyone does. However, I get to do enough of it that the sacrifices are worth it.

If I’m lucky, I’ll make it to my Aunt’s place this weekend to ride around on the SeaDoo.  However, when I get home and clean up, I’ll probably be thinking about some  I.T. security related topic while I’m in the shower.

If anyone reads this far – I’ll be amazed.  If you do, I sure hope you can find and do work you love as a career too.  If you want to read more on this topic, here are a few links to folks who have shaped my thinking on this.

Windows 10 – Unintentional Upgrades

In the last week or two I have gotten a significant number of calls from clients who have had PCs unintentionally upgraded to Windows 10.  While I generally like Windows 10, I do not believe that Microsoft should be doing what they are doing and essentially upgrading people automatically by using deceptive practices.  So far, I have not seen this happen on machines that were joined to a Windows Active Directory domain.  However, I have now seen it 10+ times on machines not joined to a domain.  Here is what I think you should know.
Microsoft is misbehaving:
If you receive the free Windows 10 upgrade notification and click the X, rather than simply closing the upgrade offer app, Microsoft considers this your acceptance of the upgrade and scheduled the upgrade.  This is absurd and inexcusable.  Here is an in depth story about this.
How to prevent an upgrade from happening if you wish to stay on Windows 7 / 8 / 8.1 etc:
Simply download and run the Never10 app.  A good description of how to do this can be found here:
How to roll your PC back to Windows 7 / 8 / 8.1 if you have been unintentionally upgraded to Windows 10 against your wishes.
Fortunately, this is very simple and so far seems very reliable.  Here are directions directly from Microsoft.
I hope this is helpful to you.

Google Cloud Platform (GCP) vs Amazon Web Services (AWS) vs Microsoft Azure – Cloud IaaS – Price Comparison

I’ve decided to share some public cloud Infrastructure as a Service (IaaS) compute instance cost analysis that I recently created as part of a project for one of my clients.  When choosing an IaaS provider there are obviously many things to consider beyond just compute instance pricing.  Other factors such as storage, network bandwidth, snapshot and replica options and many other factors (and costs) come into play.  Each of these providers offers many different services that may be of differing value to potential customers.

Conclusions (up front for you TL/DR folks):

  • The commonly accepted wisdom is that these providers are locked in a price war and that they have all closely matched each others pricing.  Nothing could be further from the truth.  Instances from Microsoft Azure are dramatically more expensive that Amazon Web Services and Google Cloud Platform no matter how you slice the data.  Google Cloud Platform and Amazon Web Service pricing looks close if you compare total three year costs.  However, how you get those numbers to be close (write AWS big checks upfront) is dramatically different.
  • Based on the numbers we chose for cost of capital (5%) and likely future IaaS price cuts (15% /yr), AWS does in many cases offer the lowest cost three year option IF you are willing to pay substantial amounts upfront.
  • Google Cloud Platform offers extremely competitive pricing with no upfront purchase needed.
  • Windows is expensive.  In some cases the cost difference in a Linux instance and a Windows instance exceeds the cost of the Linux instance itself.  Think about that for a moment.  The cost of your OS choice can more than double the cost of your instance.  I love Microsoft.  I love Windows.  I hope this changes.

Update – 12/6/2016 – A Microsoft rep posted this comment on my LinkedIn post of this article.  Keep this in mind as you compare prices.

If potential Azure customers talk to their local Microsoft sales rep they can chose to buy via a so called “Compute Pre Purchase” option. It will give you up to >45% savings for modern compute instances depending on the location and instance family. You need to decide for a location, instance type and pay for one year upfront but still might be appropriate for many use cases. Microsoft will very soon offer an easier way to leverage those savings and offer more options as well as longer term periods, etc. very soon.


In order to simplify some of the discussion for this purpose of this post, we’ve made the following assumptions.

  • We will look at only four similar instance sizes.
  • We will not consider storage, bandwidth or other costs.  Perhaps that will be a discussion for another post.
  • We will look at the cost difference between running Linux and Windows instances.
  • We will consider and attempt to model the different purchase options available from each provider.
  • We will compare the costs for running these compute instances for both one and three year terms.
  • We will assume 100% sustained use during the entire period considered.

Instance sizes:

  • Small – At least 1 CPU core / ~4GB of RAM
    • Specific instances we chose to compare: AWS: t2.medium / GCP: n1-standard-1 / Azure: GP A2
  • Medium – At least 2 CPU cores / ~8GB of RAM
    • Specific instances we chose to compare: m4.large / GCP: n1-standard-2 / Azure: GP A5
  • Large – At least 4 CPU cores / ~16GB of RAM
    • Specific instances we chose to compare: AWS: m4.xlarge / GCP: n1-standard-4 / Azure: GP A6
  • Extra Large – At least 8 CPU cores / ~30GB of RAM
    • Specific instances we chose to compare: AWS: m4.2xlarge / GCP: n1-standard-8 / Azure: GP A7

There is no perfect way to compare things that are not identical.  So, we have chosen what we believe to be fairly similar instance types to compare.

Provider Pricing Model Discounts:

Each provider offers ways to purchase instances in order to save some money.

Amazon Web Services: AWS offers a variety of purchase options.  These options can result in significant savings.  Explaining how reserved instances work is beyond the scope of this article.  For more detail on this topic go here: https://aws.amazon.com/ec2/purchasing-options/reserved-instances/ .  In general, the longer term you are willing to commit to and the more you are willing to pay upfront, the higher the discount you can get.

Azure: Microsoft Azure offers a flat 5% discount if you are willing to pre-pay for 12 months of service upfront.  https://azure.microsoft.com/en-us/offers/ms-azr-0026p/.  The 5% Microsoft discount is frankly not very enticing compared to the significant discounts you can get from AWS for prepayment, and compared to the discounts you get from Google for simply using instances on a sustained basis.  Since a three year upfront purchase is not possible, when we modeled Azure three year costs we did so by estimating the cost of three annual purchases.

Google Cloud Platform: Google offers great discounts for sustained use.  You don’t need to pre-purchase anything, you get the discounts automatically.  The discounts are very substantial.

Cost of capital:

For purposes of this post we also wanted to consider the cost of capital.  It is also not reasonable to compare spending a large sum of money upfront with spending no money upfront and simply paying for what you use on an ongoing basis.  So, for purposes of this discussion we are going to assign a relatively arbitrary 5% annual cost of capital to options where prepayments are considered.

Expected future IaaS price reductions:

The costs of public cloud IaaS continue to drop.  For purposes of these calculations, when we look at one year costs we will assume that no price drops will happen during the middle of our one year term.  For purposes of our three year estimates, we will assume that a 15% price reduction will happen at the end of year one, and another 15% price reduction will happen at the end of year two.   Obviously, these are best guess estimates and we could easily be wrong.

Shameless Plug:

If your business needs help figuring out how to best architect public cloud infrastructure, we would love to help.

Raw data:

Linux – 1 Year

Note: A 5% cost of capital has been used for these calculations where an upfront purchase was required.





Linux – 3 Years

Note: A 5% cost of capital has been used for these calculations where an upfront purchase was required.  A 15% annual cost reduction has been estimated.





Windows – 1 Year

Note: A 5% cost of capital has been used for these calculations where an upfront purchase was required.





Windows – 3 Years

Note: A 5% cost of capital has been used for these calculations where an upfront purchase was required.  A 15% annual cost reduction has been estimated.