My tools of trade
Jesse Houwing
Posted on December 21, 2019
Another two-and-a-half years have flown by and that means I've just received my new laptop. My Dell Precision 5520 has been traded in for a Lenovo X1 Extreme Gen 2 and I've just finished putting most op my must have tools on it.
When I got the Dell I had created a Boxstarter script, but I hadn't kept it up-to-date since. I don't re-image my laptop often enough to warrant the creation it seems, but the more time I spend on the command line, the more I'm getting used to all of this.
So far I'm super happy with this new beast. Great screen, lots of power and a lot of memory. Be on the lookout, when I bought this Lenovo had a discount of more than €700.
Inspired by Scott Hanselman's 2014 Ultimate Developer and Power Users Tool List for Windows. This is my list of tools and configuration changes. I'd be interested to hear what alternatives you are using and why. Which tools I should have heard of ages ago and how I might optimize my workhorse even further. Leave a comment below!
Still looking for:
- A better way to combine all my different communication channels into one. Slack, Teams, Mail, Zoom, WhatsApp, Kaizala, SMS... There's just too many of them!
- A really versatile on-screen timer that understands presenter mode for use in training. Set a time-box on my laptop, show it as an overlay on the main screen.
- A soundboard app/device that can play sound effects during classes and presentations.
The OS
- Windows 10 2004 - I need WSL2 to run docker on WSL and since 2004 is essentially finished and no longer shows the watermark; it's a no-brainer. I used the ISO to upgrade upgrade Lenovo's default installation in-place.
- WSL2 - WSL2 is a lot faster than WSL1, comes with full docker support, so you no longer need to run docker inside Hyper-V and adds a whole slew of features to Visual Studio Code.
- Docker Tech Preview - Adds Docker Desktop on Windows and can host itself in WSL2.
Things I change:
- Fix a whole bunch of enabled and disabled features. You need to separate PowerShell commands for that now.
~-WindowsOptionalFeature
and~-WindowsCapability
.
Disable-WindowsOptionalFeature -FeatureName WorkFolders-Client
Disable-WindowsOptionalFeature -FeatureName SMB1Protocol
Disable-WindowsOptionalFeature -FeatureName Printing-Foundation-InternetPrinting-Client
Get-WindowsCapability -Online -Name "XPS.Viewer*" | Remove-WindowsCapability -Online
Get-WindowsCapability -Online -Name "Browser.InternetExplorer*" | Remove-WindowsCapability -Online
Get-WindowsCapability -Online -Name "Print.Fax.Scan*" | Remove-WindowsCapability -Online
Get-WindowsCapability -Online -Name "Media.WindowsMediaPlayer*" | Remove-WindowsCapability -Online
Get-WindowsCapability -Online -Name "App.Support.QuickAssist*" | Remove-WindowsCapability -Online
Get-WindowsCapability -Online -Name "Language.*nl-NL*" | Add-WindowsCapability -Online
Get-WindowsCapability -Online -Name "App.WirelessDisplay.Connect**" | Add-WindowsCapability -Online
Get-WindowsCapability -Online -Name "Hello.Face.*" | Add-WindowsCapability -Online
Get-WindowsCapability -Online -Name "Language.*en-US*" | Add-WindowsCapability -Online
Get-WindowsCapability -Online -Name "Language.*en-GB*" | Add-WindowsCapability -Online
Enable-WindowsOptionalFeature -FeatureName TelnetClient
Enable-WindowsOptionalFeature -FeatureName SmbDirect
Enable-WindowsOptionalFeature -FeatureName Client-ProjFS
- Uninstall a whole bunch of default store apps: Messages, News, Mail (Lenovo hadn't installed many of them in the first place).
Get-AppxPackage *getstarted* | Remove-AppxPackage
Get-AppxPackage *officehub* | Remove-AppxPackage
Get-AppxPackage *3dbuilder* | Remove-AppxPackage
Get-AppxPackage *windowscommunicationsapps* | Remove-AppxPackage
Get-AppxPackage *getstarted* | Remove-AppxPackage
Get-AppxPackage *skypeapp* | Remove-AppxPackage
Get-AppxPackage *solitairecollection* | Remove-AppxPackage
Get-AppxPackage *zunevideo* | Remove-AppxPackage
Get-AppxPackage *bing* | Remove-AppxPackage
Get-AppxPackage *messaging* | Remove-AppxPackage
Get-AppxPackage *Microsoft.people* | Remove-AppxPackage
Get-AppxPackage *ZuneMusic* | Remove-AppxPackage
- Default all my printers to A4 paper size
get-printer | %{ set-printconfiguration -printerobject $_ -Papersize "a4" }
The Web
- 1Password - The company I work for provides free 1Password for Business and Family accounts. I'd be stupid not to use them :). In the past I've been a happy long-time LastPassuser.
- Edge Chromium Beta - Fast, well integrated with Azure Active Directory and constantly improving. Haven't had any issues on the beta channel, can't wait for the stable releases.
Navigate to the Chrome Extension Store to add it as a trusted source to Edge. Then I installed:
- 1Password X - This version of the extension works with Edge Chromium.
- Send to Kindle - Send articles and long docs pages to my Kindle for on-the-go reading or to bring them to an interruption-free device.
- DuckDuckGo Privacy Essentials - Edge Chomium already has pretty good privacy protection built in. DuckDuckGo is my default search engine.
Writing Code
Writing and reviewing code is still a large part of my work. Over time I've collected a large set of tools to make my life easier.
Visual Studio 2019 Enterprise - As Microsoft MVP I get a complementary license for Visual Studio 2019. It has been a long-time friend and the 2019 version has seen many performance, usability and stability improvements.
I extend it with a whole bunch of extensions. The Roaming Extension Manager makes it super efficient to grab them without having to look them all up:
- OzCode - an advanced debugging extension for .NET developers which makes it easier to debug issues through advanced flow analytics, predictions and visualizations.
- Productivity Power Tools 2017/2019 - Somehow I often end up manually editing project files, putting pretty code snippets in articles and presentations etc. More and more of these features are becoming standard features of the IDE, until then I probably can't do without these extensions.
- Web Essentials 2019 - If you're doing Web Development in Visual Studio, these extensions just add so many nice features, it's a must have if you do anything with HTML, CSS or JavaScript.
- .ignore - Makes it super easy to drop a default ignore file into your repository based on the languages and tools you're using.
- Trailing Whitespace Visualizer - "You can't see it, why bother," some people say, but I've had to do some pretty weird merges due to trailing white space or weird white spaces in the code. This just takes away the excuse to leave them in.
- Learn The Shortcut - When you see my new keyboard, you'll understand why I'd want to know how to do stuff with my keyboard. This extension shows the keyboard shortcut in the status bar every time you do something with your mouse while a short-cut would have sufficed.
- Whack Whack Terminal - I've used the Package Management Console inside Visual Studio for a long while to do console operations from within Visual Studio, but it has its issues. This extension solves all of these issues. No more "Command Prompt Here" from the Solution Explorer for me.
- LiveShare - Remote workers are the future for a sustainable world and a sustainable life in the 24/4 economy. Collaboration is key for agility, continuous learning and fast time to recover in case of failure. LiveShare is a key technology which enables development teams to work together over a low-bandwidth connection in a very high fidelity way.
- Git Web Links - Ever had a file open in Visual Studio and wanted to send a selection to a co-worker over Teams? Or drop a link to a problematic piece of code in a Jira issue? This extension can detect many of the code hosting platforms and put a link to your code file or selection straight on your clipboard.
Visual Studio Code - Even with all the power of Visual Studio "Proper" as many tend to call it, I love the speed and simplicity of Visual Studio Code for quick edits, reading files and for working with many non-Microsoft technologies tor which code has almost an unlimited number of extensions. Before switching to Code I used Sublime Text or Atom, even Notepad(++), but Visual Studio Code has replaced all of them for me.
Like Visual Studio 2019 Enterprise, I've extended Code with a whole bunch of extensions to fit my needs even better.
- LiveShare - Remote workers are the future for a sustainable world and a sustainable life in the 24/4 economy. Collaboration is key for agility, continuous learning and fast time to recover in case of failure. LiveShare is a key technology which enables development teams to work together over a low-bandwidth connection in a very high fidelity way.
- Remote Development Pack - WSL, Containers - integrates Visual Studio Code deeply into the Windows Subsystem for Linux and allows you to open the file system of a container, debug processes inside it and do other fancy things for when your containers aren't doing what they are supposed to do.
- REST Client - A postman like client inside of Visual Studio Code which allows you to call and debug REST APIs.
- Azure - Account, CLI, Pipelines, Repos - Azure and Azure DevOps integration inside Visual Studio Code.
- Language support - C#, NodeJS, Fish, PowerShell, Docker, .gitIgnore, JavaScript and TypeScript- Visual Studio Code supports just about any language out there with tons of extensions to make your life easier.
Other Development utilities I can't do without.
- dotPeek - Many of my tools integrate or extend Azure DevOps. Its APIs are somewhat documented, but in many cases I tend to run into the weirder details of how this product works. Digging through the code of the actual thing you're calling into can be a tremendous help. I install a local copy of Azure DevOps Server 2019 to always have the latest binaries at hand. It's not 100% the same as what runs in the cloud, but often close enough. Other options to try: ILSpy, .NET Reflector.
- Tower - I've tried many Git clients over the past few years. When I'm in Visual Studio I tend to use Team Explorer for most Git related things. But outside of Visual Studio I use either the raw CLI or Tower. Tower's interactive rebase features make it much easier to clean up your messes before pushing and Tower seems to strike the correct balance between features and usability. Tower is a paid product, but as a Microsoft MVP I receive a free subscription. Other Git clients I used: Git Kraken, SourceTree. See my blog posts on how to integrate Tower with WSL and Visual Studio 2019.
- Fiddler - A web debugging proxy that works with just about any tool on your system. I use the Chrome/Edge Web Development Tools extensively to understand how the browser communicates with Azure DevOps as part of extension development. But when you're building a task for Azure Pipelines you don't have such a luxury. Until you install Fiddler, that is.
On the Commandline
Windows terminal - I used to be a barebones console user. Firing up cmd
or powershell
was how I did most of my console work. Until I started using WSL. Now all my consoles must look fancy and the new Windows Terminal Preview sure helps with that. I've tried other Consoles like ConEmu, cmder.
- Cascadia Code PL - To enable all the Powerline goodness on the console, you'll need a Powerline enabled font. Support for Powerline was added to Cascadia Code. Or use one of the other Powerline Fonts out there.
Windows Console
- Git for Windows - While I do a lot of work on WSL, I do need Git on the windows side of things as well. And I love how Git for Windows now integrates with the Windows credential and Certificate stores. This makes it so much easier to work with weird enterprise Git servers and web proxies.
- Azure CLI and Azure DevOps CLI - Manage Azure and Azure DevOps from the CLI. Or better yet, use it to setup training and demo environments.
Windows Subsystem for Linux 2
- Ubuntu- Ubuntu was one of the first distros to ship with WSL when it was first released. It has made it my default Lnux distro on WSL and it has stayed that way.
- Git, Git-LFS - These need no introduction.
add-apt-repository ppa:git-core/ppa
apt update
apt install git
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install
- NodeJS, Yarn, NPM - Azure Pipelines extensions run on Node. WSL allows me to quickly test and debug my tasks straight from Visual Studio Code.
curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash -
sudo apt-get install -y nodejs
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt install yarn
- Fish, Ohh-My-Fish, Powerline - While learning WSL I found that lot of bash-bashing was happening. Many people pointed me to Fish. And Powerline adds a lot of context information to your console, especially if you spend your tie inside a git repository a lot.
# Fish
sudo apt-add-repository ppa:fish-shell/release-3
sudo apt-get update
sudo apt-get install fish
chsh -s `which fish`
# OMF
curl -L https://get.oh-my.fish | fish
# Powerline
sudo apt install python3
sudo apt install pip
pip install --user powerline-status
# Integrate Poweline in Fish
set fish_function_path $fish_function_path "/usr/share/powerline/bindings/fish"
source /usr/share/powerline/bindings/fish/powerline-setup.fish
powerline-setup
# Set theme for fish
omf install bobthefish
- Hub - A wrapper for Git that adds whole bunch of commands specifically for GitHub. Create pull-requests, issues and other things straight from the console.
sudo add-apt-repository ppa:cpick/hub
sudo apt-get update
sudo apt-get install hub
- Azure CLI and Azure DevOps CLI - Manage Azure and Azure DevOps from the CLI. Or better yet, use it to setup training and demo environments.
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
az extension add --name azure-devops
PowerShell
Like Fish, PowerShell can be dressed up with support for Git Status and Powerline fonts.
- PowerShell Core 6 - PowerShell has seen a lot of development an improvements with the push for cross-platform availability and .NET core.
- PoSH Git, Oh-My-Posh - Fancy consoles are not unique to the Linux world:
PowerShellGet\Install-Module posh-git -Scope CurrentUser -AllowPrerelease -Force
Install-Module oh-my-posh -Scope CurrentUser
Set-Prompt
Set-Theme Fish
To load this customization by default, update your PowerShell profile.
- Hub - Hub isn't just available on Linux. Manage GitHub just as easily from PowerShell!
Communications
Xpirit can't make up its mind about the best communications tool. Depending on who you ask, they prefer something else. Add to that our mother company Xebia, the partners I regularly work with: Microsoft and Scrum.org and the number of icons in my task tray just explodes to stay in contact with everyone.
- Slack, WhatsApp Web, Teams, Zoom...
Way back when I used a chat client that integrated everything. The end result: you get all of the basic features everywhere and none of the fancy features. But with all of the clients installed it's sometimes impossible to find an old conversation or track a conversation that went from WhatsApp to Slack to email and back.
Office
While everything-as-code is the rule in DevOps,
- Office 365 - Already installed by Lenovo, automatically activated when I joined my machine to Azure Active Directory. It remains the standard. Outlook, Word and PowerPoint.
- Acrobat Reader - While browsers can generally display PDF documents just fine, annotations, corrections, form-filling and other more advanced features still require Acrobat Reader or an alternative to be installed.
Our Amsterdam Office has a ClickShare installed in all the training rooms. A few of my clients I regularly visit to teach Scrum have AirMedia displays, Chrome casts and other wireless display technologies.
- Barco ClickShare Extension Pack - Adds "Extend Display" and PowerPoint Presenter mode. By default ClickShare dongles only let you mirror your screen.
- Crestron AirMedia - Many of the installations I encounter haven't received an update in forever and they serve a pretty old version of the client software when you connect. To always get the best experience I manually install the client from Crestron's support pages.
Tip: I carry a 4K HDMI Mining dongle to create a fake screen to mirror. This will allow yo to use Presenter Mode with many of these devices, even if they don't natively support Extend Display.
Training at a client who has fancy screens with a @Crestron airmedia. This little 4K mining HDMI fake screen dongle allows me to use PowerPoint with presenter view.
It was a little gamble that worked! #trainerslife #consultantslife #sharingknowledge pic.twitter.com/eDFZmkTRND
— Jesse Houwing (@jessehouwing) November 19, 2019
Learning & Relaxing
- Kindle - I'm an avid reader, hitting 50 books/year was normal in the past. 2 kids have reduced my average considerably, unless I count every Miffy book I've read a gazillion times. I also used to be a big hardcover fan and would buy every book to keep it with me... That is, until I got my hands on a Kindle Touch. Which has been upgraded to a Kindle Paperwhite and later, after a carry-on accident, to a Kindle Voyage. I prefer reading on the device itself, but sometimes, when I have a couple of minutes to kill, I may open up Kindle on my PC.
- Send To Kindle - Every Kindle device has a magic email address to which you can send ebooks, documents and other things you may want to read on your Kindle. But with Send to Kindle you also get a special printer and explorer integration, making it a 2-click experience. This allows me to quickly send a document to my Kindle for reading in a silent corner.
- Audible - The same love for reading made me search for ways to be more productive in the car from home to work. There are days I spend 2 to 3 hours a day in my car and it started t irritate me to hear the same news clips 4 times per hour. Kindle's Whisper sync allows me to read a book at night and just put it on the night stand. Then my phone will automatically continue where I left off in the car. It works really well for me for thrillers, fantasy and science-fiction, not as well for work related titles.
- Pocket Casts Desktop - When not listening to a book on my way to work, or when I'm doing shorter commutes I switch to Pocket Casts to listen to podcasts. Pocket Casts neatly syncs positions between the PC app and the android app and can fetch episodes for offline listening (on a plane for example).
- Calibre e-book management - I've owned a Kindle for about 10 years now and collected a whole bunch of free and paid ebooks. I use Calibre to manage my ebook library and to convert ePub books to Amazon's native mobi-pocket format when needed. Calibre supports every ebook format and almost every ebook reader and makes it a breeze to backup your book library in a central place. A short search will also point you to a bunch of plugins that can remove DRM from books.
- Feedly.com - Not something installed to my PC, but it is something I check almost daily. Ever since I started in college I started reading blogs. Feedly became what Google Reader used to be for me.
Graphics & Video
- SnagIt - In presentations, training material, blog posts, StackOverflow answers, product feedback... a picture says more than a 1000 words. And a movie sometimes says more than 100 pictures. SnagIt is a powerful screen capture utility that can capture screenshots of whole web pages, movie clips of your whole screen or an area of it and then allows you to annotate/anonimize these. Other tools exist that do a very similar job, some free like GreenShot. SnagIt is a paid product, but as Microsoft MVP I get a free personal license.
- Camtasia - In online training material, a raw screen capture is usually not enough. When narrating the material you may end up having to speed up or slow down certain areas of your material, highlight other areas and possibly hide some information. Camtasia is a powerful multi-track video editing solution that ticks all of these boxes. It's not as powerful as Adobe AfterEffects or Premiere, yet has a number of specific features that make it ideal for working with training material based on screen captures. Camtasia is a paid product, but as Microsoft MVP I get a free personal license.
- Handbrake - This nifty free utility can convert video files from just about any format to just about any format. Whether you downloaded the file, or are converting a DVD or Blu-Ray. Really useful to convert your Camtasia project to different formats or to put your kid's favorite stories on your laptop while travelling.
- fre:ac - Similar to Handbrake, but this time for audio.
- Creative Cloud Photography Plan - While there are many great free image editors out there, I've been a faithful user of Photoshop and Lightroom ever since I got a license as a student. The Photography plan combines Lightroom and Photoshop in a single package and 500px tends to have a yearly promotion that adds a 1 year plan to it (or vice versa, depending on how you look at it).
- Autodesk Sketchbook - Sketchbook came with a Samsung Galaxy Note 4 I used years ago and is now free for the PC. It's a free-hand drawing tool with many cool features. It works best when you have a pen or Wacom tablet. This Lenovo X1 Extreme can be used with a pen, but I haven't been able to draw with it yet, since the pen is in back-order and isn't expected to ship until February 2020.
- Microsoft Whiteboard - A simplified version of Sketchbook, but with the ability to draw together over the Internet. Super useful for teams and works even when you're using a normal phone-conference system instead of Teams or Slack.
- VLC - Play any video and audio file without fuss. Super simple UI, fast, no nonsense. And most importantly: no need for codec packs.
File Sharing
Many of my clients use OneDrive for Business. Xpirit uses DropBox for Business and Scrum.org stores many of its documents on Google Drive. And before you know it you have all of these clients syncing data. I don't have a clear favorite.
Utilities
- 7-zip - This extremely simple archive compression utility can extract just about any format out there in the world. It can also create a number of different archive formats. Its native 7z format has one of the best compression ratios in the world. Apart from the UI, 7z comes with a powerful command line utility. The one gripe I have with it, is that the command line switches are hard to memorize. I google "jessehouwing recursive extract 7z" too often to get back to my own SuperUser.com answer.
- Tunnelbear - ROAAAAR! Every time you connect this little bear roars to tell you a secure connection has been established. Available for any platform and you get free bytes by tweeting.
- f.lux - To help me sleep and reduce eye strain I use f.lux on my PC and twilight on my mobile. These tools reduce the amount of blue light emitted by the screen to help your body produce enough Melatonin which in turn helps you to fall asleep more easily. Windows 10 has a native Night Light feature, but it isn't as powerful as f.lux. Lenovo Vantage has a Eye Care mode, but I haven't really invesitigated that yet.
- FAR Manager - I grew up with Norton Commander and RAR Archiver on the DOS command line. That RAR archiver came with a Norton commander style UI and the author went on to create a complete Norton Commander clone for Windows. It supports a multitude of file systems, can navigate network drives, FTP servers and more. When I'm not using Windows Explorer to manage my documents, FAR Manager is my go-to solution.
- Unchecky - Viruses and malware are bad, but many "free utilities" are a nuisance too! Unchecky sees when you run an installer and automatically unchecks any optional bloatware that may be trying to sneak its way onto our computer.
- Rufus - Flash a bootable disk image to your USB storage device and use it to install a new operating system, run recovery tools or launch Windows To Go and have your own configuration from a supported USB key.
- SysinternalsSuite - I can't count the number of times Process Monitor or Process Explorer have helped me debug buggy applications, performance issues or other problems; whether they were my own doing or someone else's.
- CDBurnerXP - It doesn't happen very often, but I do need to put music on a CD or burn a video clip to a DVD or create a more permanent backup of the family's photo archive on a blu-ray disk. CDBurnerXP is a very simple application that supports all of that but without too many bells an whistles. It doesn't just burn CD's, but also DVD, HD-DVD and Blu-Ray. I've combined it with a USB Blu-ray drive that hooks up to my workstation or my laptop with ease.
- EarTrumpet - My laptop has its own speakers and headphone jack. My headset is USB powered. My screen has built-in Display Audio and I have a USB soundbar on my desk. Ohh and the dock has a headphone jack too. When my laptop is connected to the dock that amounts to at least 6 different audio devices fighting for control of the volume. The standard Windows volume slider outputs all audio to the device you select. With EarTrumpet you can play children's music on the soundbar, put your conference call on yous headset and adjust the volume of individual applications with ease.
Lego
- Stud.io - A 3D design application for your own Lego creations. I'm currently working on a Lego design for our future home.
Posted on December 21, 2019
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.