Trackpad Disabled After Sleep/Suspend Following Upgrade to Ubuntu 20.04

Photo by Andrea Piacquadio from Pexels

As you may have guessed by my previous article, I recently upgraded to Ubuntu 20.04. Since the upgrade, I’ve had an issue where my laptop’s trackpad is disabled until I reboot–which is very annoying.

Today I set out to tackle the problem and found that this has been a recurring problem since at least 16.04, and it actually seems more surprising that I haven’t seen the issue until now! Luckily, there’s an easy solution.

I’m using a T440s, and this article about fixing the trackpad on a T450s was perfect. In this article, I’ll walk through my steps for confirming and fixing the issue.

First, I wanted to assert that I could reproduce the problem by performing the following steps:

  1. Reboot
  2. Confirm trackpad works
  3. Close laptop lid
  4. Open laptop lid
  5. Confirm trackpad is no longer working

Next, per the referenced article, I ran the following two commands to verify that they would re-enable a disabled trackpad:

$ sudo modprobe -r psmouse
$ sudo modprobe psmouse

Yay it worked! So, now I could put the permanent solution into place. I modified /etc/default/grub so that the GRUB_CMDLINE_LINUX_DEFAULT property included psmouse.synaptics_intertouch=0, then ran update-grub. These two tasks can be accomplished by running the following:

$ sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="\(.*\)"/GRUB_CMDLINE_LINUX_DEFAULT="\1 psmouse.synaptics_intertouch=0"/g' /etc/default/grub
$ sudo update-grub

That’s it! I rebooted, repeated my repro steps, and confirmed that the trackpad was no longer disabled. Wonderful!

Custom Background in Microsoft Teams

Microsoft Teams has had the ability to blur your background for a while, but they just expanded this to allow the use of a background image instead of just the blur effect. Out of the box, you’re only allowed to choose from a selection of Microsoft-provided images, but support for custom images is there–you just have to know where to drop your images.

So, here it is. Copy your images to the following directory, and they’ll show up in Microsoft Teams when you enable background effects:


If the Backgrounds\Uploads path doesn’t exist on your computer, it might be because you haven’t used the background effects feature yet. Turn on your camera, pick a background image, and the folder should get created. Or just go create it yourself.

Microsoft’s images use 1920×1080, so I recommend following suit for best results.

Upgrade to Ubuntu 20.04

Image by rockiger from Pixabay

The newest LTS version of Ubuntu is scheduled to release on April 23. Once it’s released, upgrading is as easy as running a few commands. In this article, we’ll walk through the process of updating the current system and then performing the upgrade.

Before you upgrade, make sure your system is as up to date as possible. Do this by running the follwing commands:

sudo apt update 
sudo apt upgrade
sudo apt dist-upgrade
sudo apt autoremove

Now that you’ve confirmed you’re up to date, it’s time to do the upgrade.

sudo apt install update-manager-core
sudo do-release-upgrade

If you receive a No new release found message, it means the upgrade hasn’t been made available to you. It’s been noted that the upgrade path from 19.10 will not be enabled until a few days after release, and the upgrade from 18.04 LTS will not be enabled until a few days after the 20.04.1 release expected in late July. However, you can force the upgrade at your own risk by using the -d flag.

sudo do-release-upgrade -d

Change Default Application For File Type Via Command Line

While I was setting up Windows Terminal, I found that trying to modify settings would open a new instance of Visual Studio since that was my system’s default application for .json files. That’s a pretty heavy choice for what amounts to a text editor, so I thought I’d change my default app to Visual Studio Code. Should be easy, right?

The usual way to do this is through Windows Settings:

Settings > Default Apps > Choose default apps by file type

The problem is, when I did that, Visual Studio Code wasn’t an option!

That’s okay, though. We can change the default app through the command prompt. Open a command prompt in Windows Terminal (note: Command Prompt, not PowerShell) and run the following:

assoc .json=jsonfile
ftype jsonfile="%AppData%\Local\Programs\Microsoft VS Code\Code.exe" "%1" %*

Solution credit, here.

Windows Terminal, For a Handsome Command Line Experience

A co-worker was giving a demo a few weeks back, and my key takeaway wasn’t what it should’ve been. I left with, “Why did their command prompt look so much better than mine!?”

Now, I’ve admittedly done zero customization with my command prompt. I’ve been using the plain blue default PowerShell prompt for as long as I can remember. I learned they were using the new Windows Terminal. I invested a little time in setting it up & customizing, and I feel super cool now.

Scott Hanselman has a great article on how to get it & make it look good, and that’s a great place to start.

My journey deviates from his a little, though, for unrelated reasons. First, my Windows Store doesn’t load. Not a problem, though, since you can also install it using Chocolatey.

$ choco install microsoft-windows-terminal 

You can follow Hanselman’s steps for installing posh-git:

$ Install-Module posh-git -Scope CurrentUser
$ Install-Module oh-my-posh -Scope CurrentUser

And for updating your profile (run notepad $PROFILE) to include the following. Note that I prefer the Sorin theme for Oh My Posh:

Import-Module posh-git
Import-Module oh-my-posh
Set-Theme Sorin

I also installed his suggested font, Cascadia Code PL, which can be obtained here.

My last step was to make a few more customizations via Windows Terminal’s profile settings (ctrl+, from Windows Terminal). I adjusted the color scheme, font size, and starting directory by adding the following:

        // Put settings here that you want to apply to all profiles
        "colorScheme": "One Half Dark",
        "fontFace":  "Cascadia Code PL",
        "fontSize": 10,
        "startingDirectory": "c:/source"

Multiple Chat Windows in Teams (Workaround)

My company recently made the full switch from Skype for Business to Microsoft Teams. For calls, it’s fine and mostly feels the same if not better since I prefer the aesthetic of Teams. The one thing that drives me insane about Teams is that I can’t have more than one chat window.

This is particularly irksome when I’m on a call where somebody’s screensharing, and I want to have a side-chat or ask/answer a question from somebody outside the call. As soon as you open another chat, the screenshare is reduced to an unusably-small size, and switching back makes the other chat go away. There’s a similar problem with managing multiple conversations or team chats at the same time.

Here’s an easy workaround: use the Teams web client. Just login at, and you can have as many windows as you want. This works pretty well for side-chats on a conference call, for example if you want to have a parallel internal conversation while speaking to a client or customer. If you have frequent contacts, you can even create bookmarks to specific conversations.

Use bookmarks for conversations or contacts you access frequently

Featured image photo by 🇨🇭 Claudio Schwarz | @purzlbaum on Unsplash

Tech For Kids: Mighty Music Player


I don’t remember how old I was when I got my first Walkman, but I remember everything about it. I got it along with three cassette tapes: Beach Boys – Endless Summer, Heavy D & The Boyz – Now That We Found Love (single), and C+C Music Factory – Things That Make You Go Hmm (single). What a great collection.

My kids are getting old enough that I want to give them the same gift of music and control over what they listen to, but I wasn’t sure how to do it in the age of no-physical-media without also giving them access to all kinds of music that might not be appropriate for kids. (In other words, I didn’t want to given them access to all of Spotify.) However, it also feels silly to invest in something like a CD player and all the things needed to provide music on CDs.

The Mighty music player is exactly what I was looking for. It lets me select which playlists to sync to the device, and play all the songs offline. So I’m able to put music from Frozen 2, Tangled, The Descendants, and Weezer (my daughter’s favorite) all on the device, and she has all the freedom to play her own music. She uses it all the time.

You use the Mighty app to sync to your Amazon Music or Spotify account (subscriptions required) and choose which playlists to transfer. The device is then connected to your phone via Bluetooth to transfer data. The experience of syncing music wasn’t great. It would hang or stall a lot, and I needed to restart it. But once I got it set up, it was exactly what I wanted.

Once synced, the songs are good for offline play for a month at which point you need to re-sync the device. I’ve only done this once so far, and the experience was similar to that first sync. It stalled once, and I needed to restart, but once it was done we were back to good.

Despite the sync problems and frustrations I’ve had with the app, the device itself is really awesome. It holds something like 1000 songs, and having all of Spotify’s library to choose from is pretty incredible. My daughter loves it!

6 Tips For Remote Team Success!


I’ve been a full-time remote employee for more than five years now. There are lots of benefits to working from home, but it’s also easy to lose transparency or negatively impact the productivity of your team. Today I’m sharing my best tips for being successful as a remote team.

1. Be Visible

The most important thing you can do while working remotely is to be visible! Don’t make your team wonder if you’re showing up or question your contribution. In my opinion, the single best way to do this is to favor open channels of communication over private ones.

If you have a question, and you know who you want to ask, it’s easy to direct message them and have a private conversation. However, you could also ask that person in a team channel so that everybody can see. Having these conversations “in the open” is great for team engagement and knowledge-sharing. It can also lead to you getting your question answered sooner–for example, if the person you’re asking is away but there’s someone else who can answer. Before you direct message someone, think about what you’re asking. Is it something that needs to be private? If it’s not, consider asking in a more-public way that will benefit everyone!

Slack is my preferred “open channel” for these sorts of things, but you could just as easily use Teams or even Discord. It helps me keep track of what my team is doing, and it also gives me an opportunity to jump in on a conversation when I have additional context. It also helps with socialization so I don’t feel isolated, and the mix of work-related and non-work-related conversations help to build and strengthen relationships.

If your team doesn’t do formal daily standups, implementing “virtual standups”–as an individual or a team–can be another good way to keep your contributions visible. At the beginning or end of your day, send a summary of the things you accomplished, what you plan to tackle next, and highlight any roadblocks that are getting in your way.

2. Use a Webcam

Webcams are one of those things that everybody says is a good idea for working remotely but that nobody likes using. It’s easy to be self-conscious, and it can definitely be awkward to be on a call where you’re the only one on camera. I try really hard to embrace the cam, though, because the benefits are so important.

One great benefit is that it opens up a whole world of nonverbal communication. You can see when another participant is shaking their head, making a confused face, or raising their hand to get a word in. These cues make meetings more productive by providing feedback about the pace of content and helping to moderate the discussion. You can also see when somebody is talking while muted–because everybody stays muted when not speaking, right? (More on that in a minute.)

The thing I like most about webcams is that keeps me honest about paying attention. It’s hard not to get distracted by laptops and cell phones in regular, in-person meetings when everybody can see you, and it’s even harder when you’re sitting at your computer with all its alerts and notifications plus your phone’s right there and nobody can tell what you’re doing! Being on camera helps me resist the temptation to multi-task, and it turns out meetings are more productive when everybody’s engaged. Who knew?

3. Mute Your Mic

This one’s more about being courteous than productive, but as a remote team member you’ll likely find yourself on a lot of conference calls. Stay muted by default so people don’t have to listen to things like you munching on potato chips, your dog barking, or you yelling at your kids. I prefer to use a headset that has a hardware mute button on it so I can quickly mute & unmute when I have something to say. It’s a small thing, but it can be annoying to have “that person” on a call. Don’t wait to get shame-muted by someone else!

4. Keep Normal Hours

Keeping normal hours while working from home is an important anti-productivity preventative measure. Similar to the webcam, part of the benefit is just that it keeps you honest about your day and helps you resist all the temptations from things you’d rather be doing. More importantly, though, keeping sporadic hours poses a big threat to the team’s productivity, especially when there are multiple people doing it. It’s incredibly frustrating when there’s one person who has the answers you need, but nobody knows where they’re at or when they’ll re-surface, and it’s easy to lose a day when “the early person” needs something from “the late person” and the two don’t connect.

Be honest with yourself about how you should be spending your time, and hold yourself accountable. Have a predictable schedule so teammates know when you’ll be available, and say something if you do need to be a way for a bit. Be visible!

5. Virtual Office

The concept of a virtual office, or persistent team call, is something that’s becoming more prevalent at my work. One of our teams has a recurring all-day meeting, and people just join it throughout the day. Usually someone shares their screen regardless of whether others are actively working on the same thing or not. It’s great for socialization and relationship-building, and it also drives engagement through knowledge-sharing and collaboration.

Another team uses Slack to create open calls when they’re working on things. I love Slack calls for this because you can set a title or topic that’s visible in the channel allowing people to pop in & out. Slack calls are also great because they give the ability to draw on a screenshare. It’s fun for doodles but also great when you need to say, “Right HERE!”

6. Have Fun!

Fun’s important for in-office and remote workers, but it can be harder to find the fun when you’re on an island. You can’t walk around and look for a conversation, and you can only see what others choose to make visible. So, how can you keep it fun?

Slack is a great way to spread some fun with its emojis, reactions, and gifs (used sparingly!). It’s easy to share a joke or tell a funny story about your kid that’s melting down upstairs.

My team used to use Skype’s whiteboard feature to make the most ridiculous drawings before our daily standup. Somebody would make something, and everybody else would just keep adding. It was a good way to flex creativity and almost always made us laugh.

Webcams can also be good fun. We have a few people that use green screens to replace their backgrounds or apps like FaceRig to replace themselves with avatars. Even just holding up a hand-written note at the right time can be hilarious.

What are some things you do to keep it fun while working remotely? And what other tips do you have for being a successful remote worker? I’d love to hear your ideas and experiences!

Everyday Automation With Microsoft Power Automate

One of my favorite tools these days is Microsoft Power Automate (formerly Microsoft Flows). Power Automate lets you visually construct workflows for all kinds of things, and I’ve found it to be an incredibly powerful way to automate tasks. Here are some examples:

  • Post in Slack when an email is sent to a shared mailbox
  • Post status tweets from a SaaS provider’s Twitter account in Slack
  • Send an SMS text message when a critical process fails

The thing I love most about Power Automate is that you can make sophisticated workflows very quickly, and they don’t require hosting or deployment. You just create, save, and it’s live.

Many of my workflows start by me realizing that I didn’t notice a certain category of emails quickly enough or that I need to give my team better awareness of an event. For example, I wanted to ensure that expense reports get approved right away so that employees get reimbursed, so I created a workflow to send a direct message in Slack whenever I get an approval request email from the expense system. Another common example has been to notify my team when applications report failures through various means.

Power Automate boasts a “low code” experience, but most of the workflows I’ve created have required coding skills and creative troubleshooting to figure out. That said, you can still do useful things with pretty much zero code as long as you’re not trying to get too fancy. In this post, we’ll build a simple workflow that posts a notification to Slack when an email comes in.

We begin by creating a new automated workflow. Automated workflows always start with a trigger, so I’m going to pick “When a new email arrives.” Another option that’s been useful to me is “When an email arrives in a shared mailbox,” but as you see in the screenshot below, there are many options to explore–and many that have nothing to do with email, as well.

If you’re automating something for an unmonitored mailbox, you may not want additional criteria, but I’m usually looking for something like an email from a specific sender with a certain subject. So, the next step in our workflow will be a Condition so we can specify which criteria we care about.

The last step in our workflow will be to define what happens when the condition is met or not met. We want our sample workflow to send a private message in Slack. To accomplish this, I’ll add the “Post message to Slack” step and enter my Slack username for the channel and some text for the message. Instead of hard-coded message text, you could also include attributes from the email message entity, similar to those used in the condition step.

The final step is simply to save it. That’s it. When an email arrives, the workflow checks it against the conditions you’ve defined, and performs the corresponding Yes/No actions–in this case send ourselves a message in Slack.

Clean-up Your Inbox With Retention Policies

I get a lot of email, and I can’t always keep up with it. My first line of defense is rules. Rules help me filter out a lot of noise and tag messages in meaningful ways, but I find that if I move things out of my inbox, they slip into the out-of-sight, out-of-mind void that is everywhere-except-my-inbox.

I get a lot of notifications from Azure DevOps for things like pull request reviews. These are things that I want to know about, but it’s not something I’m realistically going to get back to if I put it off for a few days. I wanted to create a rule that was something like “delete messages that match [whatever criteria] that are more than [x] days old,” but I couldn’t find a way to do it other than by moving the messages away from my inbox to a folder with a custom archiving policy (i.e. into the void where I won’t see them) or by doing some custom development.

But then I found them: retention policies.

Retention policies control how long messages messages are kept, and they’re perfect for these sorts of highly-relevant-but-only-for-a-short-while messages. You apply the policy to a message, which can be done quite easily with inbox rules, and Office 365 takes care of the rest.

Sounds awesome; sign me up, right? It took me an embarrassingly long time to figure out how to add the policies to my account and use them. I’m talking 2 or 3 sessions where I gave up, defeated. Fear not, though, friends! For I have figured out the path forward and present it to you here in just four easy steps.

1-3. Add Policies to Your Account

This was the part that escaped me for so long, and the issue is that I was trying to do it from Outlook instead of through the Outlook Web App.

  1. Log into O365 > Outlook
  2. Settings > View all Outlook settings > Retention Policies
  3. Add new policy > (add some policies)

Alternatively, you can jump directly to the following URL:

4. Make a Rule

Now that you’ve added some retention policies, you can apply them to messages with rules. As mentioned earlier in the post, I want to delete messages from Azure DevOps after a few days, so I created a rule that applies the “1 Week Delete” policy to them.

When these messages come in, they can sit comfortably in my inbox and compete for my attention. If I happen to get a behind–which happens frequently enough for me to have pursued this several times and then write a blog post about it–these stale messages will conveniently self-destruct and go away all by themselves. Wonderful!