I have not used Microsoft Windows for my main operating system for developing software in just over five years. On a daily basis, I have been using Linux (Fedora) or OS X on my 15 inch Macbook retina. You see, I have spent a good portion of my time over the last few years developing mobile applications and backend services that are deployed to both the Android and iOS platforms. For this reason, I had to keep an OS X box handy in order to build the application for the iOS devices.

Since I was using a laptop (Macbook) as my primary computing device, I went all in on the Apple ecosystem. I even bought dual fancy 27 inch thunderbolt displays so I could dock my laptop when not traveling on the road. I was in dual screen heaven. I have also been a big fan of the iPhone since it originally came out so using a macbook made sense.

I don’t know when the breaking point was but I eventually started to have distaste for apple products over the last year or so. I think it mainly had to do with the launch of the Apple Watch and how they lock you into their ecosystem tighter than an inmate at the legendary Alcatraz prison. I was tired of my having my freedom taken away to allow the use of monitors I paid 1000.00 each with a standard VGA/DVI or heaven forbid a HDMI connection. I finally decided to sell my Apple displays and purchased a LG ultrawide monitor that supports both thunderbolt and HDMI. A small bit of freedom back.

I was recently (1 month ago) eligible for an upgrade of my mobile device and I opted to ditch the iPhone in favor of the Samsung Galaxy S6 Edge. For those not in the know, Red Hat and Samsung recently announced a partnership for providing enterprise solutions to the Samsung ecosystem. Having a Samsung phone in my pocket brought a smile to my face when I heard the announcement. Switching to Android was a painful process the first week as I learned how to navigate the new mobile OS. However, I can confidently say that switching to Android is one of the best computing decisions I have made in the last 10 years. I love the openness of the ecosystem and the ability to have more freedom over controlling and managing the device. In fact, I loved the Android OS so much that I even purchased a LG Urbane watch to keep track of my calendar and notifications without having to pull my phone out of my pocketing while coding.

So, why I am telling you all of this? Well, late last week I decided to finally ditch the Macbook! One of the greatest pleasures in life is ordering new hardware and assembling a new box. For those curious, I went with the current gen i7 4ghz CPU, 32gb of ram, etc etc. Having this new box I decided to install both the Windows and Fedora Linux operating systems. The point of this blog post is to let others who are thinking of moving back to Windows after a hiatus over to OS X get a glimpse at some of the tools I have installed in order to feel productive as a developer who mainly pushes code to the OpenShift platform.

Command Line?

Ok, I will be honest here. I love working on the console and am not afraid to admit it. The biggest downfall of the Windows Operating System is the complete lack of a useable command line environment out of the box. You basically have two choices if using stock software, cmd.exe or Windows Powershell. In my opinion, both of these are severely lacking when compared to the console that ships with Gnome or the iTerm2 OS X command line environment. The first order of business I had was to find and install a great command line tool. I decided to settle on ConEmu because it looks great and also supports the ability to have multiple tabs open. Here is a quick screenshot of what the program looks like while running after having just issued a vagrant up command to start my local deployment of OpenShift 3.

ConEmu

What about SSH?

Any developer will need to use SSH at same point in the development lifecycle, especially if you want to connect to your remote OpenShift containers. For many years, Putty has seemed to be the default go-to SSH client for Windows. That being said, I have personally opted for another choice that I find a pleasure to work with. The client that I decided on is called SmartTTY and it supports many great features including multiple tabs, built in SCP gui, etc. Take a look at it in action:

SmartTTY

VI or Emacs?

Okay, I shouldn’t even have to answer this one. The answer is VI. As I mentioned earlier, I love working on the command line. Just because I am using Windows as my operating system, this doesn’t impact my need to blaze through directories and to quickly edit a file without having to open up file explorer and then right clicking a file to select to open it in Notepad. I have been using VI for roughly 20 years and I want to continue to use it. Fortunately, VIm is available for the Windows operating system in both command line and GUI variants. Once you have VIm downloaded and installed, making sure it’s included on your path, pairing it with ConEmu is a real treat. You can simply enter in the following command to start editing a new file called PrettyNeat.txt:

 C:\ vi PrettyNeat.php

Note: I made an alias for vi that really just invokes the VIm command.

And guess what? It even has built in support for syntax highlighting:

Vim

Here is a screen showing the graphical tool gvim:

gvim

Music? We don’t need no stinkin music.

When I am coding, I love listening to music. I am a subscriber to Spotify but I also have a pretty large collection of lossless audio that I have ripped from my CDs or purchased from HDTracks. Luckily, the Clementine player that I used on both Fedora and OS X is available for Windows and even supports Spotify so I can switch between my local collection and streaming without having to load up another application. Take a gander:

Clementine

IRC

On the OpenShift team, most of us work remotely so having access to a good IRC client is a must. I have been using HexChat but am open to other suggestions if you a have Windows based client that you love. I have tried a few out there and so far, this is my favorite. Here is a quick screenshot of the #openshift-dev channel taken a few minutes ago:

HexChat

The usual suspects
I haven’t covered all of the tools I use as most people are already familiar with them. Some of the other tools that were installed on Day 0 for my new box are as follows:

  • Eclipse Mars edition with JBoss Tools
    • I use eclipse for working with Java based projects and love the OpenShift plugin that comes with JBoss Tools. The plugin supports both the V2 (OpenShift Online and OpenShift Enterprise 2.2) and V3 versions of OpenShift. V3 is our new platform that we officially released recently with full support Docker based images and uses Kubernetes for orchestration.
  • JetBrains IntelliJ 14.1 Ultimate
    • I use this for working with non-Java based projects as they also provide a great OpenShift integration.
  • Sublime Text
    • You are already using this one, right?
  • Git for Windows
    • Still stuck on CVS or subversion? Time to switch!
  • Google Chrome
  • PostBox email client
  • Ruby 1.9.3
    • This is required for the installation of the RHC client tools (v2). I have found already that the latest version of Ruby for Windows is not compatible with the latest RHC gem.

So, Why am I using Windows -- Really?

Okay, you caught me. I am a die-hard Linux fan and those that know me can attest to this. That being said, I have decided to use Windows as my primary operating system in order to ensure that OpenShift has a great developer experience for Windows users. As I am using Windows as my sole operating system and find areas that developers can see productivity gains from while using the OpenShift platform I will be filing request for enhancements to ensure they get added to the project. I will also be on a bug hunt lookout to ensure that all developers using Windows has a consistent experience with users of OS X and Linux.

Summary

Windows can be a great environment for developing applications. In order to be the most productive, I have found installing the above mentioned tools is the sweet spot for me. Do you have suggestions that I haven’t tried out that will increase my efficiency as I continue the migration over the Windows Operating System?

Are you a Windows user and have suggestions on how we can make things better? Let us know at http://ideas.openshift.com If you find a bug on Windows before I do, please help us out by creating a bugzilla to ensure that we can it fixed as quickly as possible by going to http://bugzilla.redhat.com