I Love Vim

I have used Vim for a number of years now.  I love its simplicity.  I love its flexibility. I love that it is cross-platform.  While its controls can be somewhat complicated, I love that you can just do so much with it.

It was only once I started configuring the .vimrc file that I really started to appreciate everything that it could do.  Integrating select plugins can really make a difference to how it works and how you will use it.

My primary platform is OS X.  I run iTerm with ZSH, Tmux and Vim to edit 90% of my files.  As a developer, flexibility and speed are important.  Being able to do something in 2 keystrokes, as opposed to 4 keystrokes, mouse movements and another 3 keystrokes really cut down the time tasks take to do.

I have a friend.  I’ll call him Glen… because that is his name. He absolutely detests Vim.  In fact, it appears to make him slightly nauseous.  But, I am certain that if he took a little time to investigate how to make it work for him, then even he would fall in love with Vim because of how it could improve his workflow.

I doubt there are two people who would have the exact same use-case for Vim, but this is where it scores over many other editors.  You can configure it to do what you want, and not what the editors developers want you to do.

Sure, it’s not as easy to configure as ticking a box in a GUI, but it’s not that difficult either.  Having been around for so long, there are many examples available.

Don’t get me wrong, I’m not an expert by any means, and I am still learning.  I do forget keystrokes sometimes, but for the things I do all the time, it has become almost subconscious.

Try it, you might just like it… and that means you too, Glen!

Back to Go

It’s been a while since I played around with Go, but I have decided that I have the need for a command line tool, and thought that Go would be the best tool for the job. It’s going to be a command line tool for interfacing and managing a GitHub Enterprise instance.

As a developer, I became fond of using TDD for development. I have previously done this in Java, having spent so many years developing in Java. I was comfortable with Java, but it’s not really suitable for creating a command line tool. I’m always for developing new skills and having moved to DevOps for the past 2 years, I’m still keen to keep my software engineering skills sharp.

Go has many useful libraries that can really help with the development of a professional feeling command line application, and will help to cut down a lot of the boilerplate development. I have found the following libraries that I will be investigating for this project.

Cobra

A highly configurable command line parsing library that allows me to configure the commands that I want my tool to have.

Viper

Pairs nicely with Cobra and allow for configuration through a config file to specify defaults or custom values to configure your tool.

Go-Octokit

A wrapper for the GitHub API which will allow me to make calls and handle the responses from the GitHub instance.

Others

I am still investigating libraries for Testing and Logging.  There are many options, but I need to check out more of these to find out the ones that work for me.

I will post progress and any details that I find interesting… stay tuned