I don’t think I have to make the point of how important tools are. What would we do without IDEs like Visual Studio? Or without good email clients like Gmail and Outlook? For power users like software engineers, good tools can 10x your productivity. Everyone got their favorite tools, and I think I gathered a pretty good list. So here’s my list of tools that I use every day and highly recommend.
IDEs and Extensions
Visual Studio - I’m pretty uncreative with IDEs, opting for the most popular ones. Not for lack of trying though. I saw colleagues work wonders with Rider and ReSharper, doing all sorts of refactoring magic in seconds. I tried making the switch several times, but I always find myself going back to good old Visual Studio.
winget install -e --id Microsoft.VisualStudio.2022.Community choco install visualstudio2022community
winget install -e --id Microsoft.VisualStudioCode choco install vscode
Notepad++ - remains the best basic text editor I know.
winget install -e --id Notepad++.Notepad++ choco install notepadplusplus
GitHub Copilot is an amazing productivity booster. I do find the AI does a lot of mistakes, or at least things I didn’t intend to write, so it’s by no means any sort of magic developer replacement. But a lot of times it really does read my mind, and if nothing else, it saves a lot of typing.
code --install-extension GitHub.copilot
Bookmarks - I got used to Visual Studio’s Bookmark feature, and this neat little extension adds the same functionality in VS Code.
code --install-extension alefragnani.Bookmarks
Markdown Preview Mermaid Support - Occasionally, you have to draw flow charts or sequence diagrams for design reviews and whatnot. I tried many tools including Visio , draw.io , and LucidChart . Some of those are really good, but I always feel like I’m doing something wrong if I have to use a mouse. Imagine my joy when I discovered Mermaid , a syntax that can describe charts and diagrams in text. This extension allows you to write and preview Mermaid right in Visual Studio Code.
code --install-extension bierner.markdown-mermaid
GitLens adds git history annotations within Visual Studio Code editor, showing the last editor for each line of code. Helps me to quickly discover who to ask questions or blame.
code --install-extension eamodio.gitlens
Source Control (git) Management
Thankfully, I’ve been using git exclusively as my source control system for the last year. Not an obvious thing to say as a Microsoft employee, but that’s a matter for another blog post. For git, I alternate between using the command line and a GUI client. The command line is more satisfying to use, but nothing beats visualization when you need to browse through history, compare branches, or review staged files. There are many great tools for this, but I got used to the following ones and I’m very happy with them.
- Git Extensions
is an open-source UI client for git. One of many, but it’s very good. It can be used as a standalone desktop app or a Visual Studio extension. I use just the standalone app.
winget install --id=GitExtensionsTeam.GitExtensions -e choco install gitextensions
- Beyond Compare
is a comparison tool that shows side-by-side differences of files or directories. It can be integrated with Git Extensions, Visual Studio, VS Code, or git itself. You can use it to see commit changes, history, or resolve conflicts. I highly recommend it.
choco install beyondcompare winget install --id=ScooterSoftware.BeyondCompare4 -e
C# Development Tools
Interactive C# apps
- SharpLab.io is an online C# playground. You can write code, run it, and see the Roslyn syntax tree or the compiled IL code, along with other cool features.
- is a C# playground desktop app. It supports querying your database via LINQ, IntelliSense, debugging, and powerful object visualization (dumps). Compared to SharpLab, it’s faster, more mature, and more feature rich. But it’s limited to the .NET runtimes installed on your PC, whereas SharpLab isn’t because it runs on the cloud. With SharpLab, you can quickly switch between different .NET and C# versions, including experimental branches.
winget install LINQPad.LINQPad.7 choco install linqpad
.NET analysis and debugging tools
There are some great analysis tools for .NET, which I know intimately after writing a book about them. Here are the ones I can recommend:
dotTrace - A .NET performance profiler by jetBrains. It can help find performance problems in your locally running app or work as an agent in the cloud. In this category of tools, it’s the most user-friendly I tried.
choco install dottrace
PerfView is a free profiler for .NET by Microsoft. It’s extremely customizable, and as such it is difficult to use. However, this same customization makes it powerful. It can be used as a performance profiler, memory profiler, to open dumps, produce GC reports, and for a million other things.
winget install --id=Microsoft.PerfView -e choco install perfview
dotMemory is a memory profiler by jetBrains. Like with their performance profiler, this one is really intuitive and user friendly . You can see your memory allocations, explore the heap, and find memory leaks.
choco install dotmemory
SciTech’s .NET Memory Profiler is a powerful memory profiler. It’s less intuitive that dotMemory in my opinion, but it has more features and I found that some things work better there than in other profilers.
choco install memprofiler
dotPeek is my decompiler of choice. Whenever I want to find out what’s inside some dependency DLL file that I’m using, I’ll just open it with dotPeek and see the decompiled code.
choco install dotpeek
dnSpy is a decompiler based on ILSpy, but it’s also a debugger. You can attach it to any running .NET process and debug it even if you don’t have the source code or symbols for that process. Though it’s tricky because it requires suppressing JIT optimization. Here’s the latest dnSpyEx version.
winget install --id=dnSpyEx.dnSpy -e choco install dnspyex --version=6.1.9
Free Commander XE - This is one of many file explorer alternatives that are way better than the one built into Windows. It features a dual display, tabs, favorite directories, filtering, and more. I know, there are other good ones like OneCommand and Total Commander , but I got used to this one and it’s pretty good.
winget install -e --id MarekJasinski.FreeCommanderXE choco install freecommander-xe.install
f.lux adjusts screen colors to a comfortable yellowish light, minimizing the amount of blue light. For most people, it can improve sleep, especially if you’re using the computer at late hours, but my eyes are more sensitive than normal this is a lifesaver for me.
winget install --id=flux.flux -e choco install f.lux
Everything indexes your drives and provides instant file search with support for wildcards and Regex. Priceless.
winget install -e --id=voidtools.Everything choco install everything
IrfanView is one of the best image viewers in existence. Fast, has great UX, and has a million useful features. Don’t settle for Windows Photos.
winget install -e --id IrfanSkiljan.IrfanView choco install irfanview
VLC Player is one of the best video players in the world.
winget install -e --id VideoLAN.VLC choco install vlc
Krita is a free graphics editor. I’ve been looking for a free Photoshop-like app forever, and Krita is the best I found. Yes, I tried Paint.NET and GIMP, but they had such bad UX that I couldn’t bring myself to learn to use them.
choco install krita
AutoHotKey is a scripting language for Windows that allows mapping keyboard shortcuts to any Windows action. For example, configure
Ctrl + Jto type your signature text when in Outlook. Or launch Visual Studio with your project open when you hit
Ctrl + WinKey + V. Or write “as far as I know” every time you type “afaik”. Very cool.
winget install --id=AutoHotkey.AutoHotkey -e choco install autohotkey
Process Explorer is Task Manager on steroids. Besides the same functionality of showing running processes, it can create dump files, show performance counters, find processes by handles, and much more.
winget install --id=Microsoft.Sysinternals.ProcessExplorer -e choco install procexp
winget install --id=9NBLGGH5G2XH -e
Notion - I’ve tried many note-taking apps in my life, and haven’t been happy with a single one until I discovered Notion. It supports markdown, unlimited device sync, coauthoring, and an awesome Excel-like feature they call databases . Available as a web app or a desktop app :
winget install -e --id Notion.Notion choco install notion
OneNote is of course Microsoft’s note-taking app. Frankly, it’s fine. Not amazing like Notion, but good. I use it with my organization’s Microsoft 365 account to save work-related stuff.
Typora - After trying many different ways to write blog posts (and a book), and enduring WordPress text editor for years, I opted to use Markdown only. I tried several tools for that, and Typora was hands down the best one. It costs 15$, after a 15-day free trial, and it’s worth it if you’re writing a lot.
choco install typora
HUGO - My blog has been on WordPress for a long time until about a year ago when I switched to static site generation (SSG) and it made a huge difference. Instead of having to do 20 steps in [a very slow] WordPress dashboard to publish a post, I’m basically just pushing to git. And site speed is light years better. With SSG, the host is just serving static HTML/JS from a CDN, which means it has the best possible performance. My SSG framework is Hugo , which has been mostly great. My only complaint is its templating language, which I don’t get along with.
Netlify - If you’re going with a static site, Netlify is a great hosting service. It’s ridiculously easy to connect to a Git branch on your GitHub account and turn it into a website. And it’s free for up to 100,000 monthly page views.
Discovering new tools is one of the most fun things about PC work, so I hope you found out something new and useful in these. If you have a great additional tool to recommend, go ahead and write it in the comments.
I’ll also recommend Hanselman’s developer list of tools if you didn’t read it already.