This blog post describes the various tools that I use for both work and hobby projects on my development PC.
Most people already have their own go-to tools for each new computer they start working with, but I hope that experienced users will at least find one new or interesting tool that may prove to be helpful in the future.
The tools on this list have been used and tested for years, as I only upgrade them if there is clearly a better alternative. Therefore, any tool on this list can be considered reliable and carefully picked.
Many of these are also power tools in the sense that they provide more functionality than their potential open-source alternatives.
Comprehensive list with the links to software is here
Gestures for Google Chrome: Adds the power of mouse gestures to your browsing experience.
uBlock Origin: An efficient ad blocker.
Reddit Enhancement Suite: I am a big fan of Reddit so this is very useful.
LastPass: Used with the LastPass subscription, see below. Make sure to uncheck Chrome’s internal password sync.
Evernote: A web clipper used with Evernote subscription, see below.
This is an excellent password manager and I’ve found it well worth to pay to be a Premium user. Besides providing a Chrome extension that takes care of auto filling in passwords for sites you have registered, you can also install an Android app to access the vault from a mobile device.
This application is my central depository and a trusted and reliable keeper of notes, ideas, to-do items, and clippings. Neatly categorized and groomed, it is what David Allen says in his Getting Things Done, a “trusted system”. If something is not there in one way or another, it is not on my radar and for all practical purposes it does not exist.
Evernote is as powerful tool as you make it, and the more stuff you put on it, better it becomes. However, at the end of a day, it simply reflects your own organization of ideas without being in the way. Highly worth its yearly subscription price of $35.
In addition to the expected document store which is synchronized across various PCs, I also use it to store many small utilities and tools in a subfolder named “bin”. Whenever possible, I select a portable version of a tool which I place in there. That way it is automatically updated across PCs when I drop in a newer version.
Ditto for custom fonts, PDF reference manuals etc.
Windows should ship this software instead of its built-in Notepad!
Sumatra PDF Reader
This lightweight and free PDF reader will do everything you need to do. In those rare instances when you need to fill in an editable PDF form, google for some websites that will let you do that.
You can either install it or run it as a small portable executable.
Basic System Software
Pick one. Gotta have something.
Formerly known as TrueCrypt, this free disk encryption tool is the only one you will ever need to safeguard your backup data and laptop drives. Being the open source, there are (presumably) no back doors carved in by either a hacker group or various governments because there are many developers keeping a close watch on it. Although the software implements many interesting security features, for most of us who don’t have much shady businesses to hide, a simple whole drive encryption suffices to prevent data being readable if a disk is lost or stolen. Use a nice, long password and rest assured nobody on earth can get to it without a password (and that includes you if you forget it).
This is again one of those tools that should have been built into the Windows 7 OS (Windows 10 does have a support for mounting ISO images). PowerISO supports several image formats, including those with data being compressed and rearranged for the fastest read access. It integrates with the explorer and you can quickly mount drives or create disks from a content of any folder.
I always map a virtual disk to drive “O:” (a letter that visually resembles a disk).
Good for the occasional use; watch what it is cleaning since sometimes it does too good a job and wipes more than you'd like it to.
SoftPerfect RAM Disk
If you have a sufficient amount of RAM memory in your PC (16GB at a minimum; 32GB being the best) you can dramatically speed up a lot of what you are doing by setting aside some of that RAM to “pretend” it to be a physical drive.
I normally map RAM disk to drive “R:” (as in “RAM Disk”) and allocate 1/8th of the available RAM to it (so for a box with 16GB RAM I would have a 2GB RAM disk).
These are the kind of operations that I always use RAM disk for:
- Default Chrome download location (except when downloading large images); ensures the most efficient unzipping of downloaded files into the same RAM disk
- Setting up quick projects for development: whether it be in Visual Studio or Qt, this is the ideal place to quickly test things
- Files that are being processed by some scripts or process
- Most temporary files
This software used to be free, but some time ago they put a price tag on it. I use the older, free version and it still does everything I need. Part of its functionality is to save and restore the RAM disk image across PC reboots, so what I put in that virtual disk stays there. I rarely, if ever, have my Windows PC crash and reboot on me – if that happens, the content of the RAM disk is permanently lost. Anyhow, I don’t place anything on it that is critical.
There are other RAM disk solutions but I’ve found this one to be the best one fundamentally doing the job right. It starts automatically with Windows and simply works as expected.
This little directory mapping tool is free and needs no installation. It lets you map any local folder to a virtual drive letter. It starts automatically with Windows and simply works as expected. This is not a RAM Drive but just a mapper: you will still see files and folders -- that you mapped to a drive letter -- at their original location.
In my workflow, I consistently store all my projects in drive “P:” (as in “Projects”).
This consistency helps me building them across various PCs as some tools and scripts can be simplified by having a known path. Note that it is a Very Bad Thing to have your builds depend on a location, but some 3rd party tools that I use in some projects annoyingly require hardcoded paths.
This software is more than a simple dual pane explorer replacement. For more than 10 years, it is my default folder navigation and file exploration tool. With its elegant options and functions for everything you’d ever want to do with folders and files, it is well worth its small price Nikos charges for a professional version. You can also get a free version as well, but I believe it is somewhat limited.
Sysinternals’ Virtual Desktop
If you are a Windows software developer, you’ve already used some of Mark Russinovich tools even before his company Winternals was acquired by Microsoft. Many of these small system level tools should already be in your toolbox. They are simple (as in “not cluttered”, nothing about those system tools is simple from the technical standpoint), each of them does one and only one task, and does it well.
The virtual desktop tool follows that philosophy. While other desktop managers add a lot of fluff, this one uses native Windows desktop objects and avoids all subtle problems (and workarounds) other desktop managers have to use when they manipulate with user windows’ location and size properties (that is, they don’t use the same underlying API). The software is very lightweight, quick and indispensable even if you have a multi-monitor setup.
Although the technology behind Windows gadgets has been deprecated by Microsoft, many of the existing gadgets will still work on Windows 7. I’ve found a couple of them very useful on a PC desktop: Clock, Calendar, CPU usage and Network Meter. There are plenty of gadgets to choose from at their site. Windows Live Calendar gadget can link to your google calendar and display events from it.
Various Shell Extensions
This list comprises of many small, system-level specific plugins and tweak tools listed in the reference section below. Both NirSoft and SysInternals sites provide some of the best in the industry class system level tools.
The following few apps are mainly eye-candies but they are still necessary since we look at our desktops for countless hours each day.
John’s Background Switcher
Some people prefer static color desktop backgrounds or they put some image on it and leave it there. I love the beauty of professional photographs and that first moment of seeing one that makes you say, “Wow!”.
I had used Bing Desktop because of its feature to cycle random background images, but after I stumbled on to John’s Background Switcher, I haven’t looked back. John’s image switcher can pull random images from various sources and is very customizable. It is also free. Kudos to John!
USB Safely Remove
I purchased this small add-on because I liked its look and feel. It replaces a default Windows’ USB device removal widget. It’s one of those visual enhancement tools for which you pay a small fee once and then it lasts you a lifetime.
This is a relatively old program, but if it works, why change it? Stardock has been on the forefront of Windows desktop add-ons but most of their packages I’ve found to be visually over the top. This one is little subtler. It lets you organize desktop icons in groups and nicely fade them out when not selected. It adds a nice, gentle touch to how the desktop looks and feels, and for a one-time fee, I’ve found it worth owning.
Yet another application launcher you can easily do without, but it’s easy to get used to it and start liking it due to its visual beauty and smooth animations.
This free desktop customization software is a very powerful toolkit which is actively updated. If you are into customization, you can spend hours trying various widgets and themes. After doing exactly that, I simply settled on a custom Trash and Volume knob: trash because of it’s pretty icon, and the volume knob because of its usefulness. Sometimes small things in life matter.
Imaging and Media Tools
A very versatile screen capture tool. I use an older version since the new ones became bloatware. In addition to this one, Windows 7 comes with a much simpler capture tool called "Snipping Tool" which is great when you just need to quickly capture something but not necessarily keep the image.
Free and open source vector graphics editor program that you can use to design your application icons and artwork.
Between Gimp and InkScape, you should be able to create or edit any kind of graphics needed by your software.
When dealing with pictures taken with a camera, this rather simple shell extension also turns out to be the most frequently used one. It does only one thing but does it well and in a very convenient way: simply right click on one or several images and select an option to resize them in place.
Run Linux on a Windows PC (or the other way around). Indispensable.
This is a wonderful package of UNIX tools that include SSH client, managed sessions and integrated X11 server. For example, you can SSH to a remote Linux machine (think RaspberryPi) and open xterm on your local desktop. It also has a built in Cygwin shell. It is a well done, comprehensive package which is free for home use.
Whether you work with SQLite databases or you only want to run a few queries on one, this open source tool will take care of all those needs.
Python 2.7, 3.x
It’s hard to do any serious project development these days without using Python in some way.
Source Control Management
This is arguably one of the best, if not the best, file and directory compare tool around. It is not free, but the Standard version is worth buying: unless you do 3-way compare, you don’t need the Pro version (which costs twice as much).
I use this tool dozens of times each day to compare source changes before checking them in, or to compare directories and sync folders and files during the backup etc.
It integrates into the explorer menu so it’s always available to select the “first” and “second” folders or two files to compare.
This is a visual front end to the git source control which I use every day for all of my projects and at work. I wrote GitForce to have a nicer UI for git and to not have to deal with git command line, ever.
Editors / IDEs:
As you might have already guessed it, I spend a lot of my time configuring the environment so that it “just feels right”. For someone writing code day in and day out, not only the editor needs to be right, but also the font it uses.
This is not software, but a website which provides a very elegant way to precisely configure (create) and then download your own fixed-pitch font; you can set various attributes and dimensions, preview it on a real-world source code examples and then download it once you are happy with its looks.
After downloading it, configure every editor to use it and then enjoy a consistent and personalized feel.
MS Visual Studio 2015
Unless you have an MS Developer License, there is a lighter version of this seasoned IDE available as “Community Edition”.
Every few years Microsoft comes out with a new version and it's a mixed bag: at times they appear to take a step backwards but developers eventually accept each new version since there are usually significant improvements to be gained. Anyhow, nobody wants to be left using old tools for too long.
I prefer to have important tools like this one-version behind. Secondly, I update all my personal projects, even the old ones, to the same version of tools. That prevents code rotting and a need to keep more than one active tool chain around.
The 2015 IDE takes a very long time to start, especially after you have added a few add-ons. You can start it much faster in safe mode by creating this shortcut:
"C:\Program Files\Common7\IDE\devenv.exe" /SafeMode
Plugins for Visual Studio:
Use this plugin when working on C# applications. It makes Visual Studio even better; the C# code simply writes itself at this point!
Qt Visual Studio Tools (Add-on for VS)
Although you can use QtCreator for everything Qt related, sometimes debugging a Qt application may be more effective when done within Visual Studio. This free add-on will import your Qt projects and completely switch your workflow over to Visual Studio IDE for writing, building and debugging your app. Since the two projects are now independent of each other, you can still use QtCreator but if you add or remove any files, you will need to synchronize that between project configurations. This add-on only supports building desktop applications, though.
Sublime Text 3
This is a sophisticated and snippy source code text editor with tons of plugins available to speed up your work. I use it for every project for which I don’t explicitly need Visual Studio.
This is a great IDE when working with Python. It is also the best Python visual debugging tool you can find. It can help you with other languages as well (including write-only languages like Perl.)
I’ve been using Qt since 2010 and love that framework! Having written a couple of Android apps and a number of apps and tools at work (I worked on tools and managed several tools teams at NVIDIA), I feel really comfortable with the extensive cross-platform API that Qt provides. Qt comes with a nice IDE (QtCreator) although you will probably also want to install a Qt add-on to Visual Studio to get a better debugging capability.
Although the official Android application development tool is Google’s Android Studio, I prefer using Qt mobile framework because it is cross-platform and I already know its framework quite well.
Simple IDE to hack small projects and test new peripherals and sensors.
If you own any PJRC’s Teensy board, you will also install their Arduino IDE add-on so you can compile and upload sketches to it. (https://www.pjrc.com/teensy)
Atmel MCU development
Many times the selection of a microcontroller for a project is based on the quality (and price) of the supporting tools. Atmel scored a touchdown with their development tools. This powerful IDE is based on a proven Microsoft IDE backbone and it adds everything you will need to develop, deploy and debug any project based on Atmel MCU.
There are not many choices when selecting tools for the FPGA development because those are proprietary to each vendor. Quartus/Modelsim and Xilinx ISE are IDEs for Altera and Xilinx products.
HW and Electronics
Saleae builds and sells some good, low-end, USB-connected logic analyzers targeted to students and hobbyists. The software they provide is also very intuitive and easy to use.
JTAG programmer and debugger for Atmel MCUs. It can be used with AtmelStudio.
This is a good PCB design tool. I used Eagle for many years but now avoid all newer versions published after Autodesk purchased the software from CadSoft.
The sense of fulfillment when working on a project includes the pleasure (or pains!) of using a range of related tools during that process.
If you know any other interesting or useful tools that should be added to this developer’s toolbox, please share (either by a post or by emailing me directly).
Which tools do you use and like?
Do you know of a better one instead the one listed?