We are starting a new series here about the tools we use at ArrayFire to make writing better code more productive.
We will be talking about hardware, linux distros, IDEs, editors, debuggers, miscellaneous software or anything that we believe helps us in increasing our productivity.
You will hear the eternal developer battles of Vim vs Emacs, Visual Studio vs Eclipse, dual vs single monitor, even lights on vs lights off (and more recently controllable smart lightning).
So sit tight for what is going to be an exciting series of posts.

I'll be taking the first shot at this.

I had to give it a long thought about what I really wanted to write about as the first post. I was in a dilemma between my Vim setup, Screen, gDebugger and my Visual Studio setup.
After a long thought, I decided to write about <strong>my favorite Visual Studio Extensions</strong>.

Here is a list of Visual Studio Extensions I use:
Productivity Power Tools
VsVim
CodeMaid
Brace Completer
Code Alignment
Indent Guides

<strong><a href="https://visualstudiogallery.msdn.microsoft.com/dbcb8670-889e-4a54-a226-a48a15e4cace" target="_blank">Productivity Power Tools</a>
</strong>This is by far my most used extension. It is the first thing I download whenever I install Visual Studio.
I can across this extension when I saw someone using the "Full Map Mode" on sublime text and wanted the same thing for Visual Studio. And voila, Productivity Power Tools.
When I installed it, I had no idea of how useful this was going to be. I started off using the Map modes for all sorts of navigation.
One of the most useful things from PPT is that it highlights all the places where there is a syntax errors in the full map mode using red dots. Simply howering over these red dots will show you the line of the error and clicking it will take you to that line. Similarly, warnings are indicated by yellow dots.
Another useful part is where the full map mode can be handy in showing a line elsewhere in the file that you may need to refer to for something like function arguments.

Another favorite of mine is the "Ctrl + Click" Peek Definition. When working with a code base as big as ArrayFire, this comes in really handy. When you have a function that you want to peek into, ie. see its definition, simply Ctrl + Click this function. Not only functions, but any definition. If it is overloaded, then it will give you the option to click and select the definition you wish to see.

I can write a whole blog post on Productivity Power Tools on its own. To simply summarize: if you do not have Productivity Power Tool, install it right now!

<strong><a href="https://visualstudiogallery.msdn.microsoft.com/59ca71b3-a4a3-46ca-8fe1-0e90e3f79329/" target="_blank">VsVim</a></strong>
For a vim user, this is a must have. This extension provides all the best parts of Vim modes with the power of the Visual Studio environment. Simply copy your existing vimrc or configure VsVim manually. Either way, you are bound to make an extreme boost in productivity.
One of the things I have a love-hate relationship with, is the option to configure which Visual Studio shortcuts to use vs. which Vim shortcuts to use. For example, Ctrl+V in Visual Studio is for paste where as in Vim its for visual selection. Because the options are given to the user about which mode to choose for each shortcut, I am eternally confused about which shortcut I configured for which mode and and which computer (you have to manually configure each set of of shortcuts on each system and each version of Visual Studio).
This is just me ranting about one bad thing out of a thousand good ones.
Whether you are a Vim user or not, VsVim is bound to make you write faster code by giving you the editing powers of Vim.

<strong><a href="https://visualstudiogallery.msdn.microsoft.com/76293c4d-8c16-4f4a-aee6-21f83a571496" target="_blank">CodeMaid</a></strong>
CodeMaid was a extension I discovered by experimentation. I went about installing all the popular extensions. When I found CodeMaid, it was love at first sight.
There isn't a single thing that I don't love about CodeMaid. I use practically every feature they provide. Code cleaning, navigation ("digging"), reorganizing just by drag and drop in the panel, formatting, wrapping code. I could do on and on about CodeMaid. But I can never do the justice that <a href="http://www.codemaid.net/documentation/" target="_blank">CodeMaid's Documentation</a> can do to its power. So check the documentation out and see how useful it can be.

<strong><a href="https://visualstudiogallery.msdn.microsoft.com/0e33cb22-d4ac-4f5a-902f-aff5177cc94d" target="_blank">Brace Completer</a></strong>
This is a simple extension with one purpose. Always close the bracket.
You can configure this extension about which brace style you follow, inline, tabbed, new line always etc.
Configure it once, and reap the benefits forever.

<strong><a href="https://visualstudiogallery.msdn.microsoft.com/0e33cb22-d4ac-4f5a-902f-aff5177cc94d" target="_blank">Brace Completer</a></strong>
This is a simple extension with one purpose. Always close the bracket.
You can configure this extension about which brace style you follow, inline, tabbed, new line always etc.
Configure it once, and reap the benefits forever.

<strong><a href="https://visualstudiogallery.msdn.microsoft.com/7179e851-a263-44b7-a177-1d31e33c84fd" target="_blank">Code Alignment</a></strong>
I would confess that I have an OCD when it comes to code symmetry and alignment. I was everything to be aligned. And this extension does just that.
Tell it what to align by - commas, equal sign, dot, arrow, and even custom text. It will do all the spacing for you.
When writing kernels with SIMD, where you are writing multiple lines of the same operation, this is one of the most useful extensions to use.

<strong><a href="https://visualstudiogallery.msdn.microsoft.com/e792686d-542b-474a-8c55-630980e72c30" target="_blank">Indent Guides</a></strong>
A lot of people do not like indent guides. In their opinion, it makes the code look "crummy", with all those characters/lines showing spaces/tabs.
But given my association with alignment, I find it useful. I do share the opinion that its not the cleanest bit of code to look at, but then you are writing 4 levels of nested for loops, it has its perks.

Comment below to share your opinion on your favorite extensions. And keep a watch out for our next Tools at ArrayFire blog.