Self-Taught IT?

I love the premise of this article: Just because you are a Self-Taught Developer/IT Guy doesn’t make you any less authentic in your field than someone with a BS or an MS.

Planning vs. Acting is procrastination.  Just go after it.

via @DZone: 

With the high cost and low quality of College courses these days, it has surpassed the threshold of not being with the value it once offered.


Coverting From Windows to Linux: Part 2

From Parent Post:

Finding the Linux equivalent to my windows world: Program Install / Uninstall

Continuing the Windows-based Java Developer’s journey to the other side

There are many things in the windows environment at which I’ve become proficient enabling me to move around with relative easy.   I can zip and unzip compressed file, create new directories (folders), share them on a network path, add users, etc. Well, I did some research & discovery via Google, my best friend on this journey, and found some of what I was seeking.


Some words about sudo

Before delving in, one thing I NEED to share – all install and uninstall processes need to occur as ROOT.
Since Linux is “all about” security, you are probably logged in as a “user” in  the user group.  You should be logged in as just a simple user.  This by nature discourages and even prevents a system disabling attack.

To gain ‘root’ user access to install apps you need to acquaint yourself with the ‘sudo’ command.

userid@linuxdesktop:~$ sudo apt-get install wine
[sudo] password for userid:

Using ‘sudo’ gives you the necessary power without you needing to live as ‘root’.

When the process is complete, the sudo power is relinquished by the target process and you are running as you simple ol’ user-id again.


How to install and uninstall a program in Linux

The Ubuntu (Debian) style to remove a program is as follows:

sudo apt-get remove {package-name}

This command will fire up a terminal and show the verbose steps Linux goes through to remove a program.

Alternatively exists:
sudo apt-get purge {package-name}

According to this Ubuntu Forums Blog, it not only removes the packages, but also the configuration files.

sudo apt-get install {package-name}

Does what it says: installs.

Installing packages not part of the standard Ubuntu repository:

 1. `sudo add-apt-repository ppa:george-edison55/george-edison`
 2. `sudo apt-get update && upgrade`
 3. `sudo apt-get-install stackapplet` (name of application that you want to install)

Lessons learned

  1. Use Canonical Repository versions of 3rd Party Software
    I chose Ubuntu for a real good reason – support.  I tried to install PPA:Virtualbox and it was unstable (syncing my iPad) freezing the entire guest OS (windows 7)
    I reverted back to the Virtualbox included in the OS bundle and it has been much more reliable every since.
  2. Use the Ubuntu Software Installer first.
    I know there are some of you out there who are just terminal nerds and will frown on me with my Mouse and GUI.
  3. Figuring names to install from the repo is a constant learning experience. I chalk this up to familiarity.
    As I persist in working in this environment I will more readily know the package names.

Useful reference sites


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