My Coding Tools

Introduction

I feel like every programmer, sooner or later writes something like this on his blog. For some, it might not be very interesting read, but I personally like to see, what others use. I’ve found plenty of really useful tools on blogs like this one, and for that exact reason, this article is a quick run-down of everything I use daily for programming. Everything from text editor, extensions to services, servers and what not.

What I Actually Do

I don’t work for any company (yet) that focuses on programming, I do it as a hobby mainly. Most of the time, I use JavaScript, specifically on NodeJS with various frameworks. It is really simple and powerful for building beautiful and functional apps, interfaces and tools. Next, I use Python a lot, in 99% of cases for writing up quick scripts to help me with various tasks, automating stuff or just calculating something. Of course I also use C/C++ for Arduino, I actually have a tutorial (in Slovak) on YouTube that teaches Arduino basics. Lastly, I do a bit of C#, if I need Windows specific app or something very specific to OS that JS can’t do.

Text Editor

This probably interests most of you. For almost everything, I use Visual Studio Code, which is awesome FOSS text editor, with a LOT of expandability. It’s notorious for great performance, built-in Intellisense (that I personally love), and support for 3rd party extensions, which makes this truly versatile tool.

Extensions

Workbench is awesome extension, that allows you to group files into a workbench, so I can save whatever tabs I have open now, do something else, and then reopen everything with one click. It’s really good if you work on multiple projects at once.

Obviously, Git for versioning. I store everything on GitHub, and this is essential for anyone that do versioning.

Vue 2 Snippets, Vue and Vetur is a must for anyone developing Vue apps. It provides snippets, syntax highlighting and various other useful tools you might need while doing Vue.

Todo Tree, Better Comments, Bracket Pair Colorizer and Log File Highlighter are probably my favourite ones. Todo tree gives you a new tab, where you can list all TODOs in all files, and they are highlighted based on syntax (different colour wheter it is a TODO, BUG or FIXME). Better comments allows you to format your comments (with bold text for example) and most importantly, colour them, which is really good when commenting for example Express routes. Bracket colorizer is also very good, especially in JS, where you can get very quickly lost in all the brackets. This colors each pair with different colour, so you know exactly which bracket belongs to which.

If you do JS, then you probably at least once visited an online JSON formatter. Well, you don’t have to anymore, if you have installed JSON editor or Beautify. JSON Editor creates a nice tree view that you can edit, similar to a tool linked above. Beautify formats basically anything, from HTML to JSON, JS, C and even Assembly. With one shortcut, you can have nicely formatted code, with proper indents and spacing.

Before I used Texmaker, I used to write LaTeX in VSC, and LaTeX Workshop and Snippets proved very useful for that.

Markdown All in One is great for writing in markdown. I actually write notes from classes in school in markdown (if I can), and every blog post on this page is written in markdown. This extension simplifies it a lot.

And last tools for JS devs, ESLint is a MUST, as it analyses your code and gives you recommendations on how to make your code better. And lastly, if you are working with GraphQL, then GraphQL extension is also very useful. On the other hand, if you use MongoDB, MongoDB for VS Code is very cool extension that I’ve discovered recently, and it allows you to browse your databse directly in VSC.

For remote deployment/testing, I have Docker with Docker Explorer and Remote WSL. Both manages what they have in name - one Docker containers, and other one remote connection to your WSL. Both are very, very useful.

Obviously, I install language snippets for any language that I use, so Python, C/C++, JavaScript, Pug/Jade, C# and Arduino. Arduino plugin also gives you access to avrdude, so you can directly choose you board, manage libraries and upload code to Arduino without needing to use terminal or an Arduino IDE. It also comes with Serial Monitor, which is very cool.

And lastly, design, I love material themes. So naturally, Material Icons, Material Theme. I have everything on dark grey, with lime accents.

Operating System(s)

I run Windows 10 2004 update on my desktop PC, which used to dual boot Xubuntu 18.04, before I started to heavily use WSL. It is much more convinient, saving me an SSD and time in between reboots. On laptop, I drive Manjaro with KDE and Plasma DE. My server uses FreeNAS (you can read more about it in this article), which virtualizes many different OS’s.

Servers

I’ve created 3 dedicated VMs that I turn on when necessary. All of them are running Ubuntu Server edition 18.04 (LTS) as base OS, but differ in use case. First one have Apache server, that I use mainly for test deployments and learning. Second runs all of my dev databases, currently only MongoDB and MySQL. Third one is spare, but a few months ago I’ve started to learn Docker, so I use this VM for containers.
Obviously, I create VMs on demand. When I need clean OS install, or different server for whatever I’m working on, I can just add a new one on the server and use it under 10 minutes.

Other software

Before I had a server, I used Oracle’s VM VirtualBox for virtualization. Nice and free piece of software, not so powerful and sometimes painful to use, but it gets the job done. PuTTY is also my go-to SSH client for Windows, with simple UI yet powerful features. GitHub Desktop is also among first pieces of software that I install, because, let’s be honest, it’s much simpler to use that CLI git. I use FileZilla for (S)FTP connections, and WinSCP for.. well SCP. And if you do APIs, you’re gonna love this one. It’s called Postman, and basically it is a API client, that allows you to send requests to your server. It has beautiful UI, sessions, tabs, and you can set basically every existing HTTP(S) parameter.

Honourable mentions

Nodemon if you’re Node developer - basically reloads your server everytime you save a file. Visual Studio for C# WinForms and WPF development. Code:Blocks for painless C/C++ development. Arduino IDE if VSC fails. MongoDB Compass for viewing and editing my Mongo databases. ffmpeg for easy video/audio manipulation. Firefox which drives me everyday on the internet and is the only true functional and useful browser.

Get Inspired…

That’s, at least I think, everything. It’s not much for someone, but I choose my tools based on necessity. If I don’t need it, then I won’t use it. I’ve learned to use one environment (VS Code) for everything in about a year. Before, I was using multiple IDEs and editors for various languages, but every time I reinstalled my PC, it was painful to install it all back again. This way, I need to install just VS Code, import extension list and I’m basically ready to do anything.

So, what was this for again? Welp, for you to get inspired and discover new tools that you might have never heard of. Some are just for easy-of-life, some are actually necessary for high quality code production.