Linux Re-revisited

I have long been a Windows user, but I have a habit of installing Linux on a home machine every couple years to give it a chance to grow on me. It had never won me over to become my primary machine for various reasons: installation issues, driver issues, unable to run my games, unable to run the software I depended on, and no apparent advantage over what I was comfortable using. Until now.

Motivation

A few months ago I had come across a good Ruby on Rails tutorial, and had started dipping back into Rails on the side. Rails works on Windows, but you always feel like a second class citizen, as there always seem to be a number of tiny workarounds you have to deal with.

Around the same time, Tim Tyrrell had told me how he installed Linux via Wubi. It allows you to dual-boot into linux, without repartitioning your hard drive (very much like the Windows 7 boot to VHD feature), and gives you the ability to uninstall via Windows’ Add/Remove Programs. No commitment required.

A  month ago this weekend, I attended the TXJS conference, and reminiscent of NFJS ‘06, it got me really fired up about the software world outside of my day job. Back in ‘06, it was Ruby on Rails. This year it was node.js. At the time, node did not run on Windows (the homepage now reports that it runs on Cygwin), and I felt like I was missing out.

The night I returned from TXJS, I installed Ubuntu 10.04 (via Wubi) on my primary machine. I downloaded the source for node.js, compiled and installed it, and ran my first”hello world” sample. It was all so much easier than I had anticipated. I suddenly felt there was hope for me, that I would be able to participate in this other side of computing that I had avoided for so long.

Impressions

The only installation/hardware issues I had this time around was trying to get my 2 external monitors working properly when my laptop was docked (and closed). It was incredibly frustrating and led to having to manually edit the xorg.conf – something I had hoped was in linux’s past. The good news is I did get it all working. The other usual suspects, wireless networking and printing, just worked, without any fuss.

On the plus side, it’s hard to overstate how nice it is to work on an operating system where 99% of the software is free and available via a package manager. To give you a sense, compare the experience of attempting to use the Subversion client on a machine where it has not been installed. From a Windows 7 Command Prompt, and an Ubuntu Terminal window, I typed: svn [enter]

Windows 7 response: 'svn' is not recognized as an internal or external command, operable program or batch file.

Ubuntu response: The program 'svn' is currently not installed. You can install it by typing: sudo apt-get install subversion

This is not some special case for Subversion – I was given a similar response any time I tried to use a program that was not installed. Do I have Mono installed? Type msc [enter] and Ubuntu tells me which package I need to install to get the Mono C# compiler. It is so much easier to stay focused on the task at hand when you don’t have to search for a website, download a file, and click through an installation wizard.

I’ve been able to do most of my day-to-day tasks without missing a beat. Gmail, Google Reader, and Google Docs had long ago replaced their installed software equivalents in my life. My personal finance software, Moneydance, can run on Windows and Linux, with the same license. I haven’t used my PC for gaming in years. I currently only boot into Windows for three reasons: upload running data from my Nike+ Sportband (no Linux support in sight), working from home in Visual Studio, and using Windows Live Writer for writing blog posts (although I’m sure I can find an alternative).

On a somewhat relevant note, the one suggestion from The Pragmatic Programmer where I’ve always felt the weakest was “Use a Single Editor Well”. I can zip around C# code with VS/ReSharper, but I would never consider VS for general purpose text editing. So I usually end up in Notepad2 – a nice tool, but not the type of editor a programmer should rely on. Vim has been getting a lot of attention lately, and it seemed a reasonable choice to try. I was well aware of Vim’s steep learning curve, and knew I did not want to try and adopt it for C# editing (I already had a good solution for C#, and I don’t think its an area where Vim’s capabilities would shine), but I knew I wouldn’t “get it” unless I used it for real work. I decided I would complete the entire Ruby on Rails tutorial entirely with vim. With a lot of help from a graphical cheat sheet tutorial and A Byte of Vim, it has been going surprisingly well. Becoming a competent vim user has made the Linux experience even more rewarding.

Related Articles:

This entry was posted in Uncategorized. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • Steve

    I ran Ubuntu with no problems after being a primary Windows user for years. I did work in VMWare.

    First, as a contractor, my motivation was to do all my contract work on VMs. Ubuntu ran my VM’s much better than Windows.

    Ended up liking it so much I bought a MacBook and run Parallels :)

    What happened with both is it opened up the whole non-MS world – I did the Ruby on Rails, Python, tried out Netbeans and did Grails and Java.

    Great experience.

  • MIndaugas

    Quincidence: I installed Ubuntu 10.04 via Wubi on my machine for similar reasons a week ago. I’m also learning Vim for the same reasons.

  • http://bjarte.com BjartN

    Funny. Same thing here. I just installed Ubuntu on a VirtualBox to play with Node.js. I really like the apt-get command as well.

  • http://www.robertbeal.com Rob

    Ubuntu is great for development. I too use VM’s for any Windows stuff, but can happily write Ruby in Ubuntu.

    Git, Subversion and Mercurial are all in the standard enabled repo’s too.

    It’s worth noting that installing Ruby from the repo’s is a bit crap. Mainly when you come to installing gems, as they get placed somewhere different from where Ruby is looking. So it’s either a case of playing around with environment paths, or like in my case, just compile and install it from source rather than the repo’s. I’ve got a script now that does it for me, http://bit.ly/clVQJ3.

  • Marc

    For vim, I just included this in my startup settings:

    source $VIMRUNTIME/mswin.vim

    . . . and I can use normal windows editor stuffs inside vim (ctrl+c, ctrl+v, shift for select, etc)

    . . . and setting up ruby is easy, I just followed these:

    http://www.hackido.com/2009/11/install-ruby-on-rails-on-ubuntu-karmic.html

  • http://erikzaadi.com Erik

    I hear you, gone through the same curve on my home machine..

    The only thing I haven’t found an equivalent is as you noted Windows Live Writer..

  • http://www.lostechies.com/members/jflanagan/default.aspx Joshua Flanagan

    @Rob – good point, I had forgotten my RubyGems troubles. I ended up adding the gem bin path to my PATH environment – haven’t had an issue since. Any other problems with the distribution ruby I should be aware of?

  • http://twitter.com/jakescott Jake Scott

    Yeah I just got up and running on node.js tutorials too there are some good ones here

    http://howtonode.org/express-mongodb
    http://howtonode.org/volcano-wheat

  • http://blogs.businesssoftwareengineering.com David Martines

    Coincidentally, I pretty much did the same thing (via wubi) a couple months ago, for the same reasons, and with the about the same results. Have fun and let us know how it goes….

  • John Uler

    Sorry but such posts makes me smile. This is typical “I just heard that linux exist but I don’t know nothing about it” post.
    I agree that linux is better alternative but definitelly not for everyone. When you discover that Ubuntu is rather poor os among other linux distributions do not forget to write another post.
    IMO: Do not be fooled, Ubuntu is not pure magic.

  • http://www.lostechies.com/members/jflanagan/default.aspx Joshua Flanagan

    @John – Glad I could make you smile. I certainly did not intend to make it seem like a magical OS – just a refreshing change from what I’ve been working with. But I don’t think we need to host a “which linux distro is the best” discussion here – I think they’ve played out a couple times already somewhere on the internet.

  • http://lazycoder.com Scott Koon

    In the meantime while you get up to speed with Vim, you can try using Pico, for CLI text editing, or GEdit, for graphical editing. They are more Notepad like.

  • http://www.lostechies.com/members/jflanagan/default.aspx Joshua Flanagan

    @Scott – thanks for the suggestions. I intentionally did not want to fall back on a notepad-like crutch, so that I would be forced to learn vim. It has worked out well, and I feel fairly comfortable now – I’m getting what all the fuss is about.