Converting Windows to Linux

Windows based Java Developer’s journey to the other side

 You must be proficient in Linux to go from Mediocre to Excellent.

Mediocre to Excellent

I am a Java developer who’s generally done all of my development on a Windows machine.
I frequently use Putty to SSH to a Linux server and issue commands and FileZilla as an FTP client.  I was (am?)  content and quite mediocre (average) in the Linux arena.  I rely on books, Google, and co-workers to facilitate Terminal command knowledge beyond “cd” and “ls”, sometimes “ren” or “mv”.  I am dangerous enough to start “vi” (using editing commands via {“:”} or “tail -f filename.log” a log file too.

I desire to go beyond mediocre to at least proficient in Linux.

If someone is a non-Microsoft Developer (not Dev’ing in any .Net Variation or having a runtime primarily hosted on windows server) that Developer MUST be proficient in a Linux environment if they too want to go from mediocre to excellent.

Do you hear me non-Windows developers?  Let me repeat: You MUST be proficient in a Linux environment to go from mediocre to excellent.

This blog is a recalling of my journey – from beginning (January 2014) to the current point in time (May 2014).


In the Beginning (December 2013 – February 2014)

While all development is done on a Windows 7 laptop, I’ve recognized for a while I’ve been in the Linux environment more are more through work, requiring knowledge but lacking.

Peers (and sometimes managers) were talking circles around me and I was becoming a bit of a slowdown in the process to getting things done.  I’ve been lazy to growing my Linux base, and the work I had been doing to that point was not pushing me further.  I found myself somewhat handicapped in my knowledge and therefore abilities.  Time to upgrade myself!

Approximately December 2013 I began mentally mapping my road to whacking windows and home and switching to Linux.  My iPhone and iPad were not have friendly handshakes with iTunes synchronizing on Windows.  As an avid Podcast listener, this was no good.  I needed to sync without a hitch.

Being a single income family of four, running down to grab a MacBook Pro is just not on option yet.  Pushed over the edge through this i-Failure, I finally took the plunge with my plan in place after a couple months of mental mapping:

  • Linux as the host OS
  • Windows as the guest OS through Oracle Virtualbox

Why keep Windows as a guest OS you may ask? Keep reading.


Choosing a Distro

After reading many forums, a plethora of documentation, and several comparison sites, I chose Ubuntu.

I Learned:

  • they are an active company pushing regular software updates to my machine, keeping it  up-to-date.
  • it is Debian compatible (majority of Linux software is Debian compatible ::  Ubuntu and Mint)
    • Fedora (Red Hat) distros are not compatible with Debian, so I went with the large software library.
  • OS Version upgrades (generally every few months) and are done in-place.
    • Ease of upgrading was a consideration:
    • Linux Mint discourages upgrading every six months (see upgrade instructions) in favor of a fresh re-installation for each release.
      • Backup time for all data and applications.
      • Ubuntu does recommend backing up before upgrading but has an easier upgrade flow with its Update Manager software that is pre-installed.

– Linux Mint vs Ubuntu  (


Git’ er Done

I busied myself copying all my data files: projects, documents, iTunes library (this is a key item) to my spare 2TB internal drive.

I then wiped my legally owned 64-bit Professional Windows 7 off my new 3TB drive and installed Ubuntu Linux.

My next immediate task was to get Virtualbox installed, then Windows 7 up and running.


Why Windows???

Simply put: iTunes and Quicken.  That’s it.

It turns out other software like, DVD to iPad conversion and other ‎ software didn’t like executing under “Wine“.  Kudos to the guys supporting Wine, but it has it’s challenges.


Once the install was complete, I was now fully immersed in a Linux X-Windows adventureland.  Not the Terminal SSH command-line boot camp I was expecting.  I have started forcing myself to do simple tasks through the command line just so I could get familiar: moving files, renaming files, changing permissions (with one user – me – this is an exercise in ‘exercising’) etc.

It turns out the iPad and iPhone synch much more reliably when running in Windows7 in Virtual box.
I also took a new job requiring me to exercise Linux commands quite a bit more  and having a Linux ready sandbox at home has facilitated me in certain functions at work, while applying even more knowledge learned from those who know more than I do.

While I have some questions about Linux in-general – it’s not the wonder operating system some hard-core guys claim it to be -I have great confidence I have shifted my value in my organization to a higher quality Dev just by deep diving myself into Linux-world at home.  I am moving from mediocre to high quality.


Up next

Upcoming blogs will detail the actual steps and commands I performed to make the transformation complete.   I hope you find this useful information.

Part 2: Installing / Uninstalling software