An Overview of Developer Tools for Windows

An overview of tools that will help you program faster and become a code summoning wizard

Vitali Zaidman
Welldone Software
11 min readJul 28, 2017

--

The links and comments sections of this article are an integral part of it. If you have anything to add, please leave a comment.

A long and steady procrastination led me to program without using any special tools- I used the WebStorm IDE, with the terminal and source control tools it comes with, and Notepad++ to keep passwords, commonly used commands, a TODO list, and a list of random data I needed.

A while ago, I saw some tools my friends are using and decided to go for a quest. A quest to become a code summoning wizard. I wrote this overview to summarize my findings.

be a wizard

Most of the topics we will be discussing are highly open to modifications and personal preferences, so I will try to mostly provide you with the latest features and tools that are available in the market and add links for more info so you can read in depth about whatever you find interesting.

Oh… and the comments. Don’t forget to look at the comments. People will probably add a lot of interesting info there.

Save Your Settings

A real wizard keeps his crafts in a safe place. (OK, I’ll stop doing the whole wizard thingie.) Because what’s more devastating than recreating your environment after an unexpected hard disk format?

Most of the programs we will discuss in this guide have an option to export user settings to a file. DO IT.

Save all these files in a safe place of your choice. Don’t be lazy to rename them after the program they keep settings for.

This way, your next format will be all sweet, fun and fresh instead of a hellish burden.

IDE

This part can probably save you more time than anything in this guide.

I’ll use WebStorm as my favorite IDE to example some things it can do, but most IDEs has equivalent features. There’s even a course (not a free one) in udamy about productivity in WebStorm.

Live Templates

We will start with the following cool feature- Create your own templates that include indents and a list of places to place your mouse in after pasting.

Live templates can be found under preferences > editor > live templates.
There are also some ready-made live templates on the internet, for example.

WebStorm also supports Emmet abbreviations for HTML and CSS. You can also expand them with TAB so lh, for example, will become line-height:; and place your cursor before the ; in css-like files, for example.

Shortcuts

Chunks of code can easily be moved around the code with
Ctrl + Shift + Arrows:

I took this GIF from this great guide, that examples more of WebStorm shortcuts, tips, and tricks.

You can move back and forth between files and lines you worked on with
Ctrl + Alt + Arrows.

Try navigating in your code with Ctrl + Arrows and Alt + Arrows (both left, right, top, and down).

Pressing Shift Twice will open file searching by name.

Make sure to visit WebStorms shortcuts cheat sheet for a full list of shortcuts.

Here is one more useful guide about them.

Plugins

Plugins in IDEs can make your life much easier. From easily integrating services like docker, node, and jest, to adding highlight support to languages, and to linting and testing your code in real time just beside the code itself.

Here is a list of most popular WebStorm plugins, for example.

If you find yourself doing something over and over again out of the context of the IDE, check if a plugin is available to do it alongside the code or consider writing your own plugin.

I strongly encourage everybody to consider writing IDE plugins. It takes some afford but in some cases, it could be beneficial in the long run.

Making them open source would also be useful for receiving feedback and contributions from the community and making our world a better place :)

A good example for a useful plugin would be a plugin I mentioned In my previous overview about JavaScript testing- Wallaby tests your code in real time and highlights what fails alongside the code:

The Terminal

The right term is actually “Command-line interpreter” but I’ll use the term “Terminal” for simplicity.

Let’s first discuss the features you will get if you would choose to invest in improving your terminal.

  • Colors- coloring commands, arguments and various information, can prevent you from making stupid mistakes and be much more productive.

For example, the following article by Phil Haack would teach you how to make git commands colorful in PowerShell. Notice the colors of commands, arguments, and the red “>” upon an invalid command:

  • Autocomplete- auto complete git, cd commands and many more.

The following GIF is from the great article mentioned before that shows how to improve your git integration in PowerShell.

Think how much time git branch auto completion can save you.

Fish auto-completes can be very useful as well. It remembers previous commands and allows completing to the nearest using tab.

Also Smart navigation commands, auto-completion, and glob support. (This screenshot was made using babun)

This screen is also from babun. Here you can see a list auto completion when pressing tab twice that allows you to navigate through completions with arrows.

  • Alias- Lunch common commands with shortening.

Here is launching git push by executing the alias gp. More complex commands can easily be aliased. For example: gfdd can run git fetch origin develop:develop

Babun and many terminals come with a huge list of ready-to-use aliases.

Here is an article about advanced git alias.

More zsh features can be found in this blog post and google :)

Now let’s discuss the various terminals you can use to achieve these goals.

Command Prompt

Also known as cmd (after its executable file name, cmd.exe) is the default windows terminal. cmd is a simple command line interpreter with rudimentary scripting capabilities bolted on.

In short, cmd’s philosophy is borrowed from DOS where you’d initially just use the command line to do very, very basic file management and to launch applications to do the real work. In Unix, on the other hand, the shell was an integral part of doing the actual work from the beginning.

The Command Prompt is not very strong, and it’s strongly suggested to choose any other terminal.

Microsoft PowerShell

Many will be surprised by how good the PowerShell is. In last years, Microsoft understood the potential of appealing to sysadmins that are used to work with “bash” that will be discussed later and created this great tool.

Actually, it’s so good that a real need emerged to be able to run it on Linux and on 18 August 2016 Microsoft decided to make it open-source and cross-platform.

Since it’s open-source now, it can be endlessly modified and adjusted.

In short, the PowerShell is a good substitution to the cmd.

Ubuntu on Windows

As said before, since the shell is an integral part of UNIX systems, UNIX terminals evolved to be traditionally considered better than in Windows.

Lately, Microsoft decided to provide its users with an environment in which they can run most Linux command-line tools, directly on Windows, unmodified, without an entire Linux virtual machine.

This tool is mostly useful for running UNIX tools that cannot be easily run on Windows.

Regular developers should probably use one of the other tools suggested in this guide because this tool is still relatively fresh and its installation is not trivial.

A guide on installing and using it can be found here.

Third Party Applications

Both emulators of famous UNIX shells and custom written command lines offer endless modification options and opportunities. Some of them are open source and can be modified for specific needs as well.

Here is an article that compares PowerCmd, Console2, ConsoleZ, ConEmu, and Cmder.

Here is an article that compares Powershell, Cygwin, Babun, and git bash.

This article compares Mintty, ConEmu, Terminator, The console, GNOME Terminal, Powershell, Cygwin, and KiTTY.

An article about the CASH terminal.

We suggest going with PowerShell or Babun (A pre-configured Cygwin).

If you become obsessed with improving your terminal, check out the other once.

Clipboard Management

There are plenty of clipboard management tools out there. They usually allow you to inspect and modify your clipboards’s history.

But these tools tend to be even more useful.

ClipboardFusion, for example, allows you to smartly paste HTML as text, to preview copied images, to create hot keys, and to run macros on texts.

It even allows you to download macros from a bank of pre-made macros that you can run on your test! See more of it’s features here.

A bank of pre-made macros

ClipboardFusion also features clipboard syncing that allows you to keep one clipboard between devices. For example, you can copy a customer’s address on your desktop computer, turn around and paste it on your mobile phone.

There’s also PhraseExpress.

It offers smart auto-completion anywhere on Windows in case you have phrases you often use as well as clipboard management.

Its functions can even be activated in the middle of writing.
Simply write “__PS” to open PowerShell, for example. (It will be deleted from the document you wrote it on)

Another clipboard manager you should check out is Ditto.

Desktops

(On windows 10,) Please press on Windows Key + Tab (twice).

You probably already understand the potential of this feature. It allows, for example, working on different projects, or just multiple maximized windows.

Other keys that will help you are:

Win Key + Ctrl + D — Add a desktop.

Win Key + D — Show desktop.

Win Key + Ctrl + Arrows — Navigate through desktops.

Win Key + Ctrl + F4 — Close the current desktop.

Here is Microsoft’s blog post about it.

If you like this feature, you can also google for tools to enhance it.

Mouse And Keyboard Sharing

Tired of using weird ways of moving files around multiple computers? Try tools like synergy, Multiplicity, Input Director, and Mouse without Borders.

These tools allows you to control several computers with even different operation systems, including copy and paste text and files between them.

Screenshot from the Synergy website

Touch-Pad Gestures

Windows 10 offers an improvement to touch pad gestures- Three fingers swipe left and right, for example, can navigate back and forward in the browser.

Three fingers swipe to top will show applications and desktops
(like Win Key + Tab).

Three fingers swipe to bottom will show the desktop (like Win Key + D).

If you use the touch-pad a lot, it is probably worth looking for programs that add features to it.

Password Management

If you are tired of password recovery, consider using password management tools. These tools allow you to only remember one master password and some of them can also verify they are pasted to the right site and this way prevent phishing. Some also offer password sharing between devices.

There are plenty of password management tools out there. PCMag reviewed them here, and here is a list of free password management tools.

Remember that there are dangers in using these kind of tools. For example:

  • If someone finds out your master password it could be dangerous- You don’t want to put all your eggs in one basket.
  • If your password manager saves your passwords on the internet and also features syncing between devices, there are more points where an attacker can interfere and hack you.

So make your considerations carefully.

TODO Lists, Task Tracking, Temporary Storage

Here is a good guide about the best TODO lists.

Here is a good guide about note taking tools.

Hardware

A convenient work station can make you (or your workers) happier and more focused.

First of all- The bigger the project, the longer it compiles. A strong computer with an SSD can save you a lot of time.

Other things I recommend you to consider upgrading:

  • Multiple screens with large resolutions.
  • A convenient keyboard, mouse, and touch pad.
  • Your table and chair, light in the room, air conditioning, and noise.

Typing Speed

use sites like Speed Typing Online to increase your typing speed. There are plenty of sites that offer all kinds of typing speed training.

Summary

Don’t waste time programming (or doing anything really) inconveniently. Make your environment convenient and your work will be more pleasent and productive.

I hope I saved some of your very very precious time :)

Thanks for reading and happy hacking :P

Links

IDE

Webstorm tips & tricks (March 2017)

10 WebStorm Shortcuts You Need to Know (Updated May 2017)

Emmet Abbreviations Cheat Sheet

WebStorms shortcuts cheat sheet

Terminals

Hipsterising Windows: cygwin vs babun vs git bash vs powershell — the Onion scale (September 2014)

A better Windows command line experience: Comparing PowerCmd vs. Console2 vs. ConsoleZ vs. ConEmu Vs. Cmder (July 2015)

8 Best Terminal Emulator to use (May 2016)

10 best SSH Clients for Windows: free alternatives to PuTTY (November 2015)

Set up a smoking Git shell on Windows (October 2015)

What are the differences between windows bash and cygwin? (August 2016)

My Bash on Windows Dev Environment (March 2017)

Quora- Why is it assumed that Bash is better than the command prompt? (August 2014)

The best terminal emulator for Windows 10’s Bash or how to run X applications (July 2016)

My Favourite Zsh Features (November 2014)

10 Must know terminal commands and tips for productivity (Mac edition) (April 2017)

GitHub Flow Like a Pro with these 13 Git Aliases (July 2014)

Discover the power of Bash on Windows (March 2017)

General discussion about terminals in ycombinator (2017)

General discussion about terminals in reddit (2017)

Desktops

Virtual Desktops in Windows 10 - The Power of Windows… Multiplied (April 2015)

Mouse And Keyboard Sharing

4 Free Virtual KVM Software to Share Keyboard and Mouse on Multiple Computers (Updated January 2017)

Password Management

The Best Password Managers of 2017

The Best Free Password Managers of 2017

Blogs With Focus on Productivity

haacked

Productivity Freak

General Tools For Windows

An awesome & curated list of best applications and tools for Windows.

Other

10 best SSH Clients for Windows: free alternatives to PuTTY (November 2015)

Medium’s articles about productivity

A general discussion about productivity

Another discussion with productivity tips for programmers

--

--