A few days ago, I decided to let the trusty, also rusty, yellow-stained Vaio go. Having served me for over three years and a half, the laptop had reached the end of its usefulness as circumstances demand that I have a new system to meet with my new interest: app development. Plus, I had finally had enough with low-ended equipment that have been the bane of my D&D player, graphic designer and Wikia editor life. Within an hour, I smashed the piggy bank and brought home the latest gears in store.
Price tag asides, the new Dell computer comes with Ubuntu pre-installed. In the next six hours, I quickly got almost everything I needed up and running in a foreign environment. The installation was quick, and it was as intriguing as it was challenging. At least, to me, I find the open-source nature of the system pretty darn appealing.
Ubuntu, like many other Linux-based OSs, runs on its own unique file hierarchy. It has a unified partition for user-generated contents and system files. The files are organized based on their attributes and not their ownership. In Windows, there are system partition and user data partition and within the system partition, there are system-protected folders and application folders. In Ubuntu, system and applications are put in one place and the relationships between individual files are governed by a Software Center which acts, in a way, like the registry in Windows.
There are many things in common between the two systems. They both have their own Command Prompt or Terminal for advanced users. While the use of Command Prompt in Windows is entirely optional, Terminal is an essential tool in Ubuntu.
I might be making an overgeneralization but from my experience, while installers in Windows rarely fail, when they do, even the command prompt cannot be of any help. The primary debug option in Windows, particularly when there is no error message due to the lack of exception handler in some programs, is a prompt “Send data to Microsoft” and “Don’t send”.
On the other hand, Terminal provides a powerful debugging interface. An installer initiated by Terminal will be tracked and any error messages will appear in great details in the command line environment. This sounds impressive and indeed seeing the Terminals springing into action reminds me of Hollywood hackers.
I still have to use the spacebar so I’ll refer to the Matrix instead.
Any advantage Terminal has over its Windows counterpart was countered by the lack of reliable, or user-friendly, installer in Ubuntu. Applications are open-sourced and they come with limited customer support. Deployment of an application is a fest of trial and error. There are so many ways to deploy an app on Ubuntu that it becomes confusing to the novice users.
The standard way involves downloading via app center. This is not without a catch as all dependencies; libraries in other words; must be preinstalled independently by the user. By dependencies, I mean things like DirectX and .Net Framework in Windows, except that the list for each application in Ubuntu is much longer. The easiest places to get these dependencies are the app’s respective git repositories. No surprise there as I knew git was designed specifically for Linux. This graphical approach works, to an extent, for casual users but it’s still much more annoying than what they have in Windows.
Considering the trouble one has to go through to set up a source repository, even this might be too much work for connoisseurs such as my parents.
The not-so-graphical way is to directly deploying the app, possibly, to root—the scary-looking equivalence of Windows’s system32 folder—with admin right and Terminal. It was the same procedure as the other approach: run the package, read the error, get the according dependencies, and try first step again until either it works or the user gives up. As mentioned above, the Terminal provides excellent debugging information, which helps with the process.
Being well-versed in programming myself, I find the procedure painstakingly similar to what all developers must endure during test builds. Compiler errors are what the users of Ubuntu must go through in order to acquire a piece of software. It explains the necessity of Terminal as a debugger.
Ubuntu is a charmer, malleable and young. As fast as she is, she can trip and fall easily but youth allows her to get back on her feet quickly. She is shy to strangers but warm to her friends. She knows how to choose friends and as they are capable, she can always count on them when she falls down.
Windows is a senior, intricate and calm. As she walks slowly, she keeps herself from falling down as she knows there would be bruises even if she could get back on her feet. She is polite to everyone but she trusts no one. She maintains a safe distance from everyone; after all, she will never know who out there would want to push her down.
Of course, becoming exposed to all these programming aspects would benefit me greatly. Plus, the speed and regenerative power of the system suits my taste well. I have been through one IT disaster after another in recent days and I know all too well that when disasters strike, no amount of preparation can stop them.
But, I have an unfinished app to develop and I need Windows 8.1 to continue with the project. So, after a swift and remarkable date with Ubuntu, I bade her farewell and welcomed back my long-time mate in her new dress: Windows 8.1. It was a time-consuming, mentally draining and physically exhausting two-day made-up process to get the emulator and compiler up and running. Now I can resume my work and play more Touhou games with motion controller.
One day though, one day…I would love to have another spin with Linux.