Are you a programmer trying to figure out how to use a Windows computer for your work? Here are the programs I’ve been using for the past few years that have served me pretty well over the years.
Linux Shell – Windows Subsystem for Linux
If you are developing native Windows apps, then this section does not apply, but if you are like the majority of programmers out there, you will probably be developing programs in a Linux shell. If you are a veteran software developer using a Windows machine, then in the past you might have had many issues trying to work with the limitations of Windows programs like MinGW, Git Bash, or even using a virtual machine. Recently in 2016, developers at Microsoft finally released an official way of using a Linux shell in Windows 10. Windows Subsystem for Linux is now the easiest and most compatible way of running Linux on a Windows machine.
If you already have WSL, WSL 2 is an even more recent version coming out in May 2020, so you can check that out as well. Here are installation instructions for both if you are interested.
SSH Client – MobaXterm
There are many different SSH clients available for Windows, but my personal favorite is MobaXterm. Using an SSH client like MobaXterm makes it much easier to login and access your lab computer or cloud compute like AWS that may be better for doing compute heavy analysis.
MobaXterm is free for personal use, but costs $69 for professional use if you want to use it at your company. Here is their download link.
Text/Code Editor – Sublime Text and Visual Studio Code
I personally use both Sublime Text and Visual Studio Code since they both have benefits and drawbacks. However, either have plenty of features for your workflow if you don’t want to learn two different development environments. You can’t go wrong choosing either. Both have plugins/extensions that you can use to customize your editor to match your workflow. Sublime Text is a lightweight text editor that I use to store notes or make quick edits to scripts I write. VS Code is more of an IDE or integrated development environment since it offers better plugins and features for actual software development.
Sublime Text has a feature that I have not been able to give up. That feature is multiple selections. Holding Ctrl and clicking with the mouse will make additional cursors, which you can use to edit multiple lines or locations at once. There are many ways to make these selections including using “find”, holding ctrl+alt and moving arrow keys, or ctrl+d to select the next occurrence of the selected string. Overall, I prefer using Sublime Text for editing local files due to the responsiveness and this killer feature.
Visual Studio Code
VS Code has a plugin that I find absolutely necessary for working with files in a remote location called SSH FS. This stands for SSH File System, which lets you use SFTP to access all the files on your remote computer within VS Code. This prevents the need for you to copy files back and forth between the computer you’re working on and your remote computer with the code and data. I prefer to use VS Code whenever I edit files remotely.
Remote File Explorer – WinSCP
Sometimes, using command line to view your files isn’t very efficient or practical, for example if you are plotting graphs and need to view the image. Or, maybe you have a few files you need to copy to your local machine to view visually. In these cases, I recommend using WinSCP to download or open these files on your local machine.
There are many other pieces of software that I use and recommend that may be more useful to some people than others.
Jupyter Notebook / Jupyter Lab
Have you ever wished you could run your code one line at a time? Well with Jupyter Notebook, you can do exactly that. This program is more targeted at data scientists and data analysis. This is the industry standard for data science since it lets you essentially save your progress between lines of code and benefits people who may only run a piece of code a single time.
VirtualBox is a free virtual machine program for Windows that lets you make set-up scripts that install all required dependencies. If you try to develop this kind of installation script on your own computer, it is difficult to tell what dependencies your program actually needs. Therefore, using a virtual machine with a clean install of the operating system lets you find missing dependencies more easily.
Now that you have the tools you need to efficiently write code and perform data analysis, go on and show the world what you’ve got. If you have any suggestions, please let me know if there are any better alternatives out there.