Getting Productive with OpenShift on Windows

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

Categories
OpenShift Container Platform, OpenShift Dedicated, OpenShift Online, OpenShift Origin, Products
Tags
, , ,
  • James Hadfield

    Did you ditch your iPod, if so how did you migrate everything over?

    • Grant Shipley

      I still use an old iPod but have it running rockbox. :)

  • Markus Eisele

    Hey Grant,

    awesome write-up! And I am happy to see some more people looking after the Enterprise Developers who are mostly forced to use Windows. Actually, I have some more ideas and tips from my daily experience:

    Command Line:
    I can recommend two other approaches hier.
    1) https://msysgit.github.io/
    2) http://babun.github.io/
    The first is a very simple setup which doesn’t actually provide a lot of cmd-experience but more features like git, ssh, etc.)
    The second is a complete packaged and ready to use cygwin environment with update services and a build in python. I actually use it, when I can’t just only use windows cmds. One example is, docker-compose which only runs in babun/cygwin .. See here: http://blog.eisele.net/2015/06/docker-compose-on-windows-with-python.html

    Editor:
    Notepad++ is a good alternative for many. It has some syntax highlighting and is also capable of opening LARGE files.
    Another option, I am looking into lately is github atom https://atom.io/ but I’ve never really enjoyed vi or emacs at all.

    IRC:
    http://xchat.org/ is my fav so far. But I haven’t tried many.

    Even More:
    – I actually use NetBeans as my favorite IDE. There is an OpenShift integration available: http://plugins.netbeans.org/plugin/56913/openshift
    – Office 365 (Because they have a subscription and I am just used to it)
    – Photoshop/Lightroom (everybody needs graphics works sometime)
    – Docker on Windows: http://blog.eisele.net/search/label/Windows
    – Oracle VirtualBox (because I need fedora from time to time)
    – Google Drive / Dropbox for Windows.

    – And instead of native Ruby (which is a pain on Windows) I totally recommend JRuby.

    Keeping my fingers cross. And happy to file some Windows issues :)

    Cheers,
    Markus

    • tari-manga

      Voting up because IMO on Windows having Notepad++ installed is a must =)

      • Maciej Lelito

        I am using VS Code and I am very satisfied.

  • c_world_poster

    I guess the question is – What windows laptop did you buy? There isn’t a Windows laptop that i’ve bought that i didn’t hate. And I have had a bunch. Either the keyboard or trackpad is horrible – and usually both. Almost always the trackpad was horrible. I use to go into best buy and try all the laptops. Same result. I have a lenovo yoga 3. Keyboard is ok. Trackpad? arrrrrgh! I wish i had bought a MBA. Sadly, nothing comes close to my MBP in either the keyboard or trackpad. And don’t get me started on how short of lifespan my Windows laptops have. I am thinking of just installing windows on my MBP in the future.

    That being said, I look forward to hearing about OpenShift on Windows. Some of us are stuck on it for somethings.

    FYI – i have been using http://sourceforge.net/projects/console/ . It is ok. just be careful about downloading stuff from sourceforge now.

    • Grant Shipley

      I actually didn’t buy a new laptop. Just a desktop. I installed Windows 8.1 on my macbook as well though.

      • c_world_poster

        :) Ok. That i can understand. Although I did buy my wife a mac mini a few years back because i got tired of buying a windows pc for her all the time. :) If Chromeboxes had been available at the time, she’d have gotten one of those.

        I am REALLY tempted for that (mac mini) to be my next desktop and just put windows on it.

  • You must really hate yourself to switch from linux to windows voluntarily. I admire your bravery!

  • JΟΝ GΛLΞ

    You know I love you man, but really? Windows?! As promised, a counterpoint to your point: https://medium.com/@jgaleforce/why-i-doubled-down-on-apple-products-d8704fb86e94

  • John Matthew

    GREAT ARTICLE – It’s interesting to hear another person tired of the direction Apple is going, several friends who are long time Apple users are switching just like you did. Apple isn’t the same for the last few years :(.

    I’ve used both Mac and Windows, and came back to Windows. The Apple products are super nice, but I just can’t re-train myself to use the keyboard shortcuts. The lack of Home and End keys for my editing was the kicker. May seem small, but it’s a free country.

    For Windows and OS, I use the following:
    – Cygwin (covers SSH, VI, Python if i want, covers most Linuxy things I need on Windows)
    – PyDev (very heavy though)
    – Atom from Github, very fast and easy launch (“atom” from CLI)

    I’ve not found anything that I can’t do on Windows that the MAC can do (yea, I know there are you Windows haters, but chill). I use Virtualbox for any real hard core Linux testing / requirements.

  • Grant Shipley

    Thank you for the tip. I installed it tonight and I gotta say, so far it is pretty dang nice. I just wish it supported multiple tabs.

  • Grant Shipley

    Ok, just following up on this after playing around with it for an hour or two. I think Babun is the sweet spot I was looking for. However, I hate the default default so I integrated with ConEmu that will allow me to use tabs etc. Pretty sweet setup.

  • Nadav S.

    ConEmu is great. Though I usually use the terminal in IntelliJ which also supports tabs, and if I replace cmd.exe with Git Bash it’s fantastic. Also when using ConEmu with Git Bash there’s no need to use any SSH tool… It’s integrated.

  • Nir Getter

    Great article, thanx.
    Personally I am a very hard dying Linux fan.

    splitting my work between developing and data analysis on Linux and all other computer stuff on windows is counterproductive.

    This command-line tool and smartTTY might actually push me into leaving my Linux vm’s behind.
    The remaining issue still is the http server for testing. I do not want to run Appache on my windows session.