ubuntu 14, the best linux release ever

Yesterday I updated to Ubuntu 14.04 LTS, or simply Ubuntu 14. For the first time in all the years of my experience with Ubuntu, I’m moving to a long term support (LTS) release with every intention of staying there. Whether I’ll stay with 14.04 for the full five years that Canonical guarantees security updates, or update to 16.04, depends on how much progress is made at the next LTS release two years from now in 2016. But as for installing the latest every six months, I think I’ve moved well past that point. And that’s actually a good thing. I’ve been a long time user of (and at times, battler with) Ubuntu going back to 2007 and Ubuntu 7.04. I started trying Ubuntu with the first alpha release of 7.04, and ended my first attempts at using Ubuntu with 7.10. That was the year I also wrote “It isn’t worth the trouble anymore” due to my experiences upgrading to Ubuntu 7.10 and openSUSE 10.3 on two home systems. I’d had all I could stand upgrading and then fighting introduced hardware support regressions. I was also using Windows XP at the time, and in spite of the fact Vista had been released nearly a year prior, I wasn’t going to dive into that “bag of hurt” while running away from the Linux bags of hurt. Nope, no way. But time heals all wounds, and even Linux can show improvements. In the case of Ubuntu the improvements are substantial and world class. Where I have, in past critiques, been quite brutal in my assessments, I have to say now that Ubuntu is one of the best, if not the best, Linux distributions you can get get. Period. In fact, I’ll make the following statement for the record;

Ubuntu is one of the best, if not the best, operating systems (including Windows 8.1 and Mac OS X Mavericks) you can install on any personal computer. Period.

If you’re considering an upgrade from Windows XP and don’t want Windows 7 or later, and further assuming you’re not beholden to some very specific software application that must run on Windows XP, then you should consider Ubuntu 14.04 LTS. It really does have what it takes to challenge Windows, especially anything older than Windows 8.

I upgraded my Samsung R580 notebook that had been running 13.10 to 14.04 without any incident. When it finished it came up with all my settings intact and everything functioned exactly as it did before the upgrade. I was quite impressed, since I haven’t had any major Linux upgrade that successful, and I’ve been a user of Linux since the very early days of S.u.S.E., when it was sold and shipped from Germany.

I’ve installed and upgraded it on both hardware and virtual machines, and it’s only on virtual machines that Ubuntu stumbles, and not because of Ubuntu. Ubuntu, as well as Fedora 19 and 20, and any distribution that uses a Linux kernel 3.13 or later, will not allow VMware Tools (from VMware 6.0.1) to install cleanly. Specifically the filesystem sharing driver, allowing a VM client to share a Window’s folder, fails to build due to arbitrary changes in how certain group and user permission data types are represented in the kernel vs how they’re represented around the rest of userspace. Normally, with my other VMs, I share common data via that shared folder, which makes development and testing across a heterogeneous environment rather easy. Failure to share and work well together is not a Good Thing. The only saving grace (or graces) are these: I can drag and drop bidirectionally between 14.10 and Windows 8.1. It’s slower, and I have duplication of files which I have to remove when I’m done, but it’s what I have to do for the time being. And because it works so well and looks so good I’m willing to put up with it until VMware pushes out an update adding support for this latest kernel.

The system does look really good. It’s a handsome looking environment. Ubuntu 14.04 shows even more subtle visual refinements over 13.10, and I was (and still am) very happy with Ubuntu 13.10. In spite of running into the folder sharing issue, installing a bog-standard new Ubuntu 14.04 virtual machine took all of ten minutes from start to finish. Yes, I dinked around with the background, but really, if you want something that you can load and go with RIGHT NOW, you can’t beat Ubuntu at this point in time. I have come to enjoy working with Unity. I’ve had my mixed reactions to Unity along with everybody else, but after 12.04 was released all those issues were addressed and I never looked back. What has made Unity the #1 desktop choice for me is the final tweak of allowing me to put the application menus back on each application, instead of leaving them at the top left corner of the desktop control bar, à la Mac OS X. The solution of having application window menus in-line with the window top is a reasonable and clean compromise. Windows 7 and 8 have tried to tackle the waste of screen real estate with the ribbon task bar (see Windows file explorer, for example), to the complaints of many. I actually liked that idea, but then I liked the original Metro look and I like Unity, so I guess there’s no accounting for taste. This last screen shot is my farewell to Ubuntu 13.10. It’s running Java 8 update 5 and  the JavaFX demo Ensemble. It’s interesting in that IMHO the JavaFX demos run better on Ubuntu 13.10 and 14.04 than they currently do on Windows 8.1 update 1. This leads me to my final prediction: my next notebook, the one I buy after my Samsung Series 7 Chronus running Windows 8.1 update 1, will be a notebook running Ubuntu 14.04 LTS. Yes, Ubuntu’s that good. Update Some folks have asked about Ubuntu vs Arch Linux for Arm. They’re wondering if Ubuntu can be installed on the Raspberry Pi instead of Arch Linux Arm. The answer was “NO.” The last version that was installed on the R-Pi was Ubuntu 9.06 cross-compiled to run on the ARM V6 architecture of the R-Pi. After that release (starting with 10.04) Ubuntu was optimized to run on more advanced ARM architectures. The 14.04 release is optimized to support 64-bit ARM V8, such as the ARM Cortex A57 used in AMD’s Opteron A1100 processor. I’ve modified my declaratory statement above with one world; personal. Personal is primarily my notebooks and desktop systems running with Intel processors. That may change to include tablets running more capable ARM processors, but only if you want a complete end-to-end solution. For R-Pi work I still recommend and support Arch Linux Arm. The Arch ARM distribution is highly granular, more easily granular, and works quite well on the Raspberry Pi as they’re currently shipping. Even if there was a Raspberry Pi that was released with a 64-bit processor, I’d still stick with Arch Linux ARM if for no other reason than the body of experience and good will I’ve built up with this distribution on the Raspberry Pi. I’d be a fool to abandon that.

Update 13 May 2015

I have upgraded to Ubuntu 14.10 (see October) and now Ubuntu 15.04. Still feel the same way about Ubuntu. The fact that a five year old Samsung notebook is running the current Ubuntu release without issues is amazing. This notebook originally came installed with Vista, then was upgraded to Windows 7. It reached a point where Windows 7 was very unstable, which is why I switched to Linux, Ubuntu 13.10 specifically, December 2013 (read here).

Trust me. It’s all still very, very good. In spite of its noisy and noisome critics.

happy birthday raspberry pi

Yesterday marked the second birthday of the Raspberry Pi. It was two years ago on 1 March 2012 (well, actually, 29 February, as 2012 was a leap year) that the Raspberry Pi was officially released (after months of speculation and pre-release ordering). It was an instant hit, selling 100,000 on its first day. Since that inaugural date it’s passed the 2.5 million mark, and continues on at a healthy pace. Mine were purchased a year ago March, but due to my circumstances I didn’t really start to dig in with the R-Pi until around Christmas.

Most of my time has been spent on “loftier” goals, such as building a development environment on the R-Pi using Arch Linux Arm. Arch Linux has turned out to be a good choice for me, better than the others originally presented for the R-Pi. I’ve also installed and gotten used to writing applications in Javascript on the R-Pi using Node.js. Using all that I’ve learned so far I wrote the following little script to flash four LEDs back and forth using the GPIO pins. I would have used two, but it looked a bit silly with just two LEDs going back and forth, so I added two more.

// NOTE: Code written for Raspberry Pi Model B.// NOTE: Pin 13 is GPIO 27//var Gpio = require('../onoff').Gpio,led1 = new Gpio(17, 'out'), // Header pin 11led2 = new Gpio(18, 'out'), // Header pin 12led3 = new Gpio(27, 'out'), // Header pin 13led4 = new Gpio(22, 'out'), // Header pin 15iv1,shifter = 1,multiplier = 2;// LEDs have 50 ms on period. Loop period is 200 ms.//iv1 = setInterval(function() {led1.writeSync(shifter & 1 ? 1 : 0); // 1 = on, 0 = offled2.writeSync(shifter & 2 ? 1 : 0);led3.writeSync(shifter & 4 ? 1 : 0);led4.writeSync(shifter & 8 ? 1 : 0);shifter *= multiplier;if (shifter > 4) multiplier = .5;if (shifter < 2) multiplier = 2;}, 50);// Stop blinking the LEDs and turn them all off after 10 seconds.//setTimeout(function() {clearInterval(iv1); // Stop blinkingled1.writeSync(0);  // Turn LED 1 off.led1.unexport();// Unexport GPIO and free resourcesled2.writeSync(0);  // Turn LED 2 off.led2.unexport();// Unexport GPIO and free resourcesled3.writeSync(0);  // Turn LED 3 off.led3.unexport();// Unexport GPIO and free resourcesled4.writeSync(0);  // Turn LED 4 off.led4.unexport();// Unexport GPIO and free resources}, 10000);

Following is a sample video clip showing the LEDs in action. I apologize in advance for requiring Flash to view this. I uploaded this to Flickr, and I guess Flickr hasn’t gotten the memo yet on HTML5 video.

The key to flashing back and forth is lines 17, 18, and 19. Line 17 shifts a single bit left or right depending on the multiplier, which can either be 2 or 1/2 (.5). Lines 18 and 19 decide when to set the multiplier to either shift right (2) or left (.5). I tried to use the bit operators in Javascript, but found that the code would have been a bit clunkier and longer if I had. I could have also put an ‘else’ clause in front of the second if statement, but decided not to. We’re not dealing with time critical testing here, and I preferred short, simple statements in this example.

If the code looks a bit familiar, it should. I started with the flash_led.js example in the onoff examples directory, and hacked it from there. It took me about 30 minutes of tinkering and hacking to get it to work. I would have done it in half the time except I was switching my attention between this and “Gravity” on the Blu-ray player.

I also decided to use a simpler breadboard as apposed to the larger, more sophisticated Parallax Professional board. I’m using the board for which it was intended, as a Propeller development board, and using I2C to tie the R-Pi to the Propeller, with the Propeller and the R-Pi working together, doing some interesting things for me.

Here’s hoping I don’t get bored with the R-Pi or allow some other major event to stop me from working with it.

Camera Used

I used my Olympus E-M5 with the Panasonic 1.4/25mm sitting on a Gorilla Hybrid. It was a nice compact rig that allowed me to set the camera fairly close to the R-Pi and the LEDs. I was generally pleased with the output (we’re not talking Oscar material here), but I was somewhat annoyed with the very minor shaking I see going on in the video. I thought I had the vaunted five axis stabilization enabled when I hit the video record button. I need to go back and see just how all that is set up.