Roll With The Punches – #opentowork #sqlfamily #datafam

For a lot of Salesforce employees, January 4, 2023 was not a good day. I was standing in my kitchen, getting my kid ready for school when I got the email at 6:16 AM EST.

Hi Stuart,
As we announced earlier today, we’re reducing our workforce by about 10 percent, mostly over the coming weeks. Unfortunately, as part of this reduction your role is being eliminated.

Shock. Confusion. Acceptance. Thankfully, the severance package is good, and I have time to find the next opportunity.

I had only recently joined Salesforce (on February 7, 2022) after a lengthy career at Jack Henry. I had big plans. I was going places. I liked my job with Tableau on the CI Infrastructure team, and had been exposed to some great ideas, and had big plans to tackle some interesting challenges this year. In fact, I was already planning on writing a version of this blog post in preparation for the upcoming V2MOM process. One of my values can be summed up with the quote from Mike Tyson:

Plans change. They sometimes shatter like glass. But how do you recover when you’re reeling in pain from something? You go back to the fundamentals.

The fundamentals are those skills you’ve built over the years through practice. They should be automatic in times of crisis. Boxers constantly work on the fundamentals of their craft well before a big fight. They can walk into a ring with big plans, but when the blows start landing and the plans fall apart, what saves them is always going to be how well they can marshal the fundamentals.

As a manager in the technology space looking for my next opportunity, I’m going to sharpen the three following fundamentals:

First, my network of peers is large, and filled with good people. I was frankly overwhelmed by the number of people that reached out to ask how they could help and offered up leads. I am grateful, and it just makes me want to continue to invest more in building relationships.

Second, my technical expertise is T-shaped; I’ve got some in-depth knowledge of database architecture and performance tuning, and I’ve been exposed to a lot of ideas for software deployment across the lifecycle. I’m going to continue to work on some weaker areas (Git, Linux, Powershell) while I search for the right opportunity.

Third, I’m a Work From Home master. I’ve been working from home for the last 17 years of my career. You want a manager who understands how to motivate a remote team and build a remote culture? Boom, I can do it. You need somebody who can set deadlines and expectations around work\life balance? That’s me.

I got this.

If you wanna see what my career looks like, add me on LinkedIn: Stuart Ainsworth | LinkedIn

Affirmations

Recently, I’ve been thinking about the power of positive self-talk and motivational thinking. I’ve started reciting the following message in the morning to frame my thinking for the day ahead; thought I would post it here in case it helps someone else.

Today is a good day; today is my day.
I have all I need to be the best I can be.
I will overcome my fears, I will learn from my mistakes. I will enjoy today.
Today is a good day; today is my day.

Powershell – parameters & credentials

Just a quick blog; am working on a script that requires credentials to run against a REST API, and a developer wanted to convert that script to use command-line parameters. I built this script (and quick test) to show that the command-line parameters create the same object as the Get-Credential object.

#define command line parameters
param (
    [string] $User,
    [string] $PWordClearText
)
#assign paramter values to appropriate objects, including creating a credential

$PWord = ConvertTo-SecureString -String $PWordClearText -AsPlainText -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord

#Get credential from prompt
$Credential2 = Get-Credential

#compare the two credentials to validate
Compare-Object $Credential2.GetNetworkCredential().Password $Credential.GetNetworkCredential().Password -IncludeEqual

Nothing exciting or in-depth, but this is the foundation for automating a script I wrote to run under specified credentials.

Kanbanly & Google Tasks

As I’ve previously posted, I recently made a job switch. Frankly, it feels like I’m drowning most days. There’s a lot of processes and procedures to learn, as well as getting intimate with a new technology stack, and it’s been tough to maintain good workflow hygiene both personally and professionally. Part of that stems from a shift from Microsoft Office to Google Workspaces; I lost touch with many tools that I was using to capture to-do items.

I started using Google Tasks again, but the visualization is limited; it’s a checklist, and that’s ok for most tasks, but I love Kanban and the organization of workflow to help structure future items as well as current items. However, I haven’t had much success with mobile Kanban apps. They’re usually hard to work with on the smaller screen space.

Enter Kanbanly. It’s a Chrome Web app which transforms Google Tasks into a Kanban board by adding metadata. This allows me to use a Kanban interface on the desktop, and the Google Task client on my iPhone. It’s clunky at times (the metadata tags in the iPhone app can be distracting), but so far it seems to be working; it even has WIP limits per column for visual reminders when I’m overcommitted.

a post about nothing

I really need to rethink the purpose of this blog. In case you haven’t noticed, I’ve not been good about keeping it up to date. Honestly, I’ve slowly started disengaging with pretty much everything online. I don’t post about politics on Facebook anymore, and I’ve stopped talking smack on Twitter. I just… well.. have faded away.

But I need to do something creative. I’m just not sure what that is at the moment.

So I’ll post nothing here, for now. And maybe tomorrow, that nothing will be a little bit more.
And maybe it’ll turn into something.


Dual Monitors for the MacBook Pro

I’ve recently started using a MacBook Pro for work after years of working with Windows systems. Really, it’s not been that difficult of an adjustment; the most noticeable working adjustment has been shifting from using the CTRL key (Windows) to a COMMAND key (Mac). Copying and pasting code from StackOverflow was quite the adjustment.

However, from a hardware perspective, the biggest struggle was just getting dual monitors running. My MacBook is an older model (2019) with 4 USB-C connectors (2 on each side). Finding a USB-C dock with dual HDMI outputs was easy, but I was shocked when I connected both of my monitors up, and had no option to extend to both monitors. In other words, both monitors showed the same information. If I left the laptop screen up, I could extend the desktop to the monitors, but the external monitors mirrored each other, even if the laptop showed a different screen. This is not the default behavior for Windows laptop docks; every monitor has the option to be handled separately.

After much digging and reading, I discovered the one option that worked for me; plugging a separate USB-C video connector into the ports on the other side of the MacBook. I have a USB-C dock on one side of my MacBook with an HDMI connector; to be on the safe side, I went with a USB-C to DisplayPort on the other side. Works like a charm, but it was pretty frustrating to figure that out. Blogging this to make it simpler for someone else.

Code Complete

19 years, 3 months.

My last day at Jack Henry and Associates will be February 4, 2022. I am extremely grateful for the opportunities I’ve had. Jack Henry has been very supportive of working from home for the last 14 years, and they’ve fostered me as a learning-center manager. The work-life balance and benefits were extremely tough to beat over the last 19 years. I’ve built and supported some really cool things in the managed security services space. I’ve grown up here.

Here’s a selfie (now) next to a photo of me from 2002 (when I joined JHA).

I’m a dinosaur by IT career standards; honestly, I didn’t think I’d write this blog post anytime soon. However, COVID-19 has changed the way we work, and more companies are creating remote leadership positions.

On February 7th, 2022, I’ll start a new position at Salesforce, working as a Senior Manager of Systems Engineering, supporting the CI/CD infrastructure for Tableau. I’m ecstatic about the opportunity, but I will greatly miss all of my colleagues from JHA (Gladiator), particularly my direct reports.

I still plan on blogging intermittently, and I’ll be active and involved in the community (in fact Salesforce actively encourages volunteerism), so I’m not going anywhere. But yet, I’m moving up, and am looking forward to figuring out the next few challenges in my career.

Let’s build something awesome.

#WFH – Commute Time

Somewhere over the last year, I’ve let go of a good practice for working from home: commute time. We all need time to make the adjustment from life outside of work to work made and back. I used to take 30 minutes before work started to read a book, do some chores, exercise… anything BUT work. Likewise, at the end of the day, I’d try to wrap up work before my family got home.

I stopped doing that and have realized how long my workdays have become.

This morning, I started up again. This blog is part of my commute time. I’m also prepping my electric smoker for its first use.

What’s your commute time activities?

Destroy, Build, Destroy! #DevOps lessons

Currently hanging out on a boy’s weekend with my 8 year old son (while my wife is out of town), and we’ve been spending some quality time watching a classic kids’ engineering show: Destroy, Build, Destroy! If you haven’t seen the show (and I’m pretty sure most of you haven’t given the limited two year run and subsequent horrible reviews), the premise is interesting. It’s a game show that pits two teams of teenagers against each other in an engineering challenge. The general set up is something like the following:

  1. The teams are given an end goal, like build an air-cannon assault vehicle and shoot more targets than the other team in a time-limited window. They’re presented with resources (like an old SUV), which is then destroyed for parts.
  2. Each team is then given time and additional resources to build their project. Halfway through the build, there’s another mini challenge (the setback) which allows for one team to sabotage the other.
  3. Teams continue the build after the setback challenge, and then compete. The winner gets to destroy the losing team’s creation.

It’s a fun watch, and great for kids with both problem-solving and destructive mindset. For adults, there are some additional lessons that come to mind, particularly for those of us in the software industry. Below, in no particular order, are some of my observations and inspirations.

Start with end concept in mind. Concepts are functional, but aren’t perfect. The ultimate goal is to build something that achieves a a specific set of objectives (delivering value) within a certain time frame. Identifying the objective first, and then starting with a simple design, allows for flexibility based on whatever resources you have.

You’re not always going to have ideal resources. In the show, the teams are given the remnants of a previously successful project and a few additional resources; however, they’re always starting with less than ideal circumstances. Designs have to be a minimal viable product (MVP) in order for them to succeed in the competition.

Good communication skills can often compensate for technical limitations. They’re not a complete replacement, but teams that communicate well with each other can often work their way through technical challenges faster than teams that have strong technical skills but poor communication.

Small fixes often add up to big solutions. Usually on each team, there’s at least one person that is slow to contribute. Encouraging them to “do something… anything” often helped lead the team to victory. They may not have contributed as much to the build as other people did, but participating the whole time often gave them the opportunity to perform best when it really counted.

Setbacks happen. Sometimes they’re avoidable, but sometimes they’re not. Sometimes they give you the opportunity to rethink the MVP, and come up with alternative solutions. Sometimes they derail you completely. Figuring out how to handle a setback mentally is just as important as handling it technically.

Have fun. It’s a competition, and there’s money on the line for these kids. However, there’s something unabashedly FUN about both the creation and the destruction of engineering. No matter the outcome, enjoying the moment is a wonderful activity.

You can watch the show on YouTube; hope you enjoy this lost classic. https://youtu.be/77atHNtNcwY

Struggle bus

I’ve been struggling recently with feelings of burnout. I’m sure many of you are as well. The world is a scary place right now, and it’s been tough to find purpose and meaning in a my job (which was often the refuge for a scary world).

I don’t have any real advice. I don’t really know what to do, but I’m not giving up hope. The only piece of advice that has ever worked for me is to talk about the issues, and try to get one thing accomplished each day. So today? I’m writing a short blog, which is something I haven’t done for a while. After that, I’m canceling most of my meetings, and going to write some code.

Today is going to be a good day.

See the source image