Pick Your Development Tool: ConEmu – switch to consoles for more productive programming

Posted by InterVenture on January 27, 2015

Developers in my company (and most senior developers in general) are power users. Power users often need to access functionality of OS that is not available in GUI (or meant to be). On the other hand, they want to automate repetitive tasks.

This is the place where consoles step in. A typical developer uses consoles to do work at least some of the time. It can include cmd or PowerShell for starting applications and debugging their output, git bash console or other. Solutions included with Windows are often lacking ease of use, many features and possibility for customization.

ConEmu is a great host for console applications on Windows. It means it can display output of consoles (and other applications) through it’s own UI. And it adds a lot of value while doing so.

It uses term task to refer to hosted applications. It offers an option to set up predefined tasks (hosted applications) and many of the usual ones come already set up. These include most of one’s needs like: cmd, PowerShell, Git bash or Chocolatey. It can host standard permissions and administrator level running tasks. And it’s not only about consoles. You can also include file managers like TotalCommander or FarManager, Filezilla, stand-alone source control clients, text editors or any other application. Tasks are displayed and navigated as tabs or separate windows depending on settings.

As far as using it with consoles, main idea is that it hooks up to a process, uses its console output and displays it in own window. This window is customized in terms of background, fonts, colours, width and height and length of logged output. This log is easily searchable and scrollable. It has fine performance with high frequency logging and can host console GUI applications like Git bash in some modes, Far Manager, Vim editor and similar.

Using ConEmu helps you by having all the utility consoles in one place, formatted to your liking. It automatically remembers the list of tasks and can restart them when you start ConEmu.

The author of this article is using ConEmu in more than few scenarios:
One PowerShell console with administrator privileges to execute tasks in Windows related to configuration, mounting drives, copying or setting up IIS. Another one as a support for programming and building solutions in Visual Studio – it is easy to run MSBuild to build multiple solutions (build scripts) of your source code. I actually run the same scripts that the build server is running, but in my console. This way I don’t break builds on build server any more. I also use one Git bash console for local git repository, more if working on different projects at once. I use it for reviewing status, changes, staging and committing, as well as analysing history. Other source control options such as TFS, or SVN also support this way of working. In general, most have a set of options that are only available through command line use. From non-console applications, I embedded Far Manager and FileZilla for copying, moving, archiving and backups. This way I have streamlined my build, test and deploy process.

The author and his colleagues recommend switching to consoles for performing some tasks. Once you get hooked up, it is hard to go back to GUI.

As another great recommendation Scott Hanselman, well known developer, blogger and speaker, has included ConEmu in his list of top developer / administration tools, which is available at: http://www.hanselman.com/blog/ScottHanselmans2014UltimateDeveloperAndPowerUsersToolListForWindows.aspx

References:
ConEmu: https://conemu.codeplex.com/
PowerShell: http://technet.microsoft.com/en-us/scriptcenter/default
Git: http://git-scm.com/
TotalCommander: http://www.ghisler.com/
Far Manager: http://www.farmanager.com/index.php?l=en
Filezilla: https://filezilla-project.org/
Vim: http://www.vim.org/
Scott Hanselman: http://www.hanselman.com/

No Comments »

No comments yet.

Leave a comment

Your e-mail address will not be published. Required fields are marked *