I’m Hating it!

Humanity has a love-hate relationship with technology. Geeks like to take it to the extreme. Take the recent hub-bub in the blogosphere about the aptly named: Linux Hater’s Blog. In that blog, the anonymous blogger (or bloggers) rants about how BAD Linux is. Its entertaining and educational! Entertaining because rants and rabble-raising is fun… in a perverse sort of fashion.

This is not just a simply a rehash of Microsoftian propaganda; a machination of an ingenious marketing machine feeding FUD to an ignorant public. Rather the Linux Hater’s Blog (LHB) looks at the issues that Linux suffers from. Just like the Unix Hater’s Guide (thanks LH) before it, LHB satires the attitudes of the community, developers and companies in the Linux landscape. And hopeful as satire has done before, maybe better the Linux, Open Source and Software Libre ecosystem as a whole. Don’t be fooled. The Linux Hater is most likely an experience developer in the Linux world, and knows damn well what he is talking err… ranting about. And deep down inside he loves it.

I read both of the Linux Hater’s Blog and Unix Hater’s Guide in their entirety. It changed my perspective. Linux and UNIX are not perfect. The design and implementation of both of them aren’t the shining gems of computer science. And for historical reasons, and laziness on the part of Linux/FOSS developers, just doesn’t cut it anymore.

I admit it. I still prefer Linux. I’ll continue using Linux with all its wrinkles and weirdness because it’s still the best OS out there. I’ll still think freedom in software is paramount. I’ll still advocate open source as the most ethical and efficient way of doing business in the software industry. And I’ll still write in C, C++ and its spawn Java. Cause Lisp is way too hard to do in my head.

Thanks Linux Hater.

Symlink Mirror – A Useful Python Script

Just wanted to share a useful little python script I crafted. I creates symlinks from the top level directories in a specified source folder to a target folder. Its a neat little tool for linking between two distant directories under UNIX. Share and enjoy!

#! /usr/bin/env python
"""    Symlink Mirror -----------------------------------------------------------
       Author: Dorian Pula    Version: 0.1    Date: 2008 May 29
       --------------------------------------------------------------------------
       Creates symlinks in the current directory to the top level folders inside
       a specified directory.  Its a great utility for linking a user's home
       directory with a directory holding files shared between users on the same
       system.

       Usage: python symlink_mirror.py [source of links] [target for links]
      --------------------------------------------------------------------------
       This program is free software: you can redistribute it and/or modify
       it under the terms of the GNU General Public License as published by
       the Free Software Foundation, either version 3 of the License, or
       (at your option) any later version.

       This program is distributed in the hope that it will be useful,
       but WITHOUT ANY WARRANTY; without even the implied warranty of
       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       GNU General Public License for more details.

      You should have received a copy of the GNU General Public License
      along with this program.  If not, see <http://www.gnu.org/licenses/>"""

import re, os, sys, stat

verbose = "True"

def main():
    """ The main function of the program. """

    'Check if there are enough arguments supplied.'
    if checkNumberOfArgs():
         'Make the path directories.'
         sourceDir = os.path.abspath(sys.argv[1])
         targetDir = os.path.abspath(sys.argv[2])

         'Get all the names of the directories.
         sourceEntries = os.listdir(sourceDir)

         for toLink in sourceEntries:
             source = os.path.join(sourceDir, toLink)
             target = os.path.join(targetDir, toLink)
             dirCheck = os.path.isdir(source)

             if((os.path.isdir(source)) and not (os.path.islink(source)) and not (os.path.exists(target))):
                  os.symlink(source, target)
                  if(verbose == "True"):
                        print "Linking " + source + " to " + target + "."

def checkNumberOfArgs():
    """
    Checks if there are enough arguments to work on.  There should be two
    arguments, the directory from which we generate the links from, and
    the directory in which the links appear. """

    argNum = len(sys.argv)
    if argNum < 1:
        print("I need a source directory to mirror.")

    elif argNum < 2:
        print("I need the directory to store the created symlinks.")

    if argNum < 2:
        print("nUsage:")
        print("python symlink_mirror.py [source of links] [target for links]n")
        return False

    else:
        return True

if __name__ == "__main__": main()

My Head in the Clouds – Cloud Computing

After much resistance, I extended part of my life on-line.

The reality is that technology plays an important role in my life. I organize, communicate, create, distribute and entertain through computing. But even with Palm, a decent Linux workstation and the web to my disposal much of this technology and its benefits are separate. While I can connect remotely to my desktop and let my groupware, Kontact handle my e-mails, RSS feeds, etc., its not convenient.

Here is where Google enters in. They have the storage and online applications that keep me and my data connected. Its not perfect. I rather using the Internet as a conduit, and maintaining everything locally. But its not realistic for me to do so. In theory, I could produce, store and transmit electricity myself (obviously with the right equipment) too. In practise, I pay a utility company to do so.

So why not do the same with computing? Thats the promise of cloud computing. Think of it as hosted web applications on steroids. Cloud computing would change computing into a utility. Use only as much as you need. Have it accessible all the time, everywhere. Imagine your desktop, mobile device, workstations and servers all communicating seamlessly with each other.

Of course, Google is not exactly cloud computing. Its close. But Google serves you and me, so that we are a captivated audience for advertisers. But I can’t complain about Google… they do host this blog after all… and a bunch of my data. However a number of companies are moving forward with utility/cloud computing: Amazon, Salesforce.com and Sun Microsystems to name a few. Exactly in what form, how and who will create a stable platform in the Internet cloud, remains to be seen. We do live in times with interesting possibilities.

Task Oriented Architecture

As neotechnophiliac (a.k.a. person crazy enough to run alpha releases of software), I love to experiment with different technology. And these tests are often for the pursuit of pointless knowledge and killing time. Technology and engineering are a lifestyle for me.

Most people don’t see technology that way. Technology comes in two flavours: toys and tools. Developing a tool is a challenge of engineering. However users don’t care about tools. (How many people care about carpentry tools?) Users want tasks done. The challenge of usability design is to create task-oriented user interfaces.

Simplicity is important in UIs. The Palm OS (IMHO) designers created one of the best UIs out there. Practically everyone (except Microsoft) in the smartphone, handheld and ultraportable market copied their design. The Zen of Palm, as a primary “pamphlet” for Palm programmers, emphasizes the importance of using a simple UI for getting a particular task done. Compare that with the desktop world, with applications looking like something out of configuration and accessibility hell. The cockpit of a jetliner often looks less daunting than a desktop office suite.

Efficient and reusable workflow helps users greatly getting their work done. A UI that lets you perform a task with 3 interactions works better than one with 5. Burning a CD under Nero, requires you either to click-through 8 screens on a wizard or navigate a massively clustered UI. Under K3B it takes a drap and drop, clicking the “Burn” button, throwing in a CD and you’re done. Neither you have to crawl through a wizard ever time. Nor do you have to deal with a clustered, non-trivial UI.

Remarkably, the most usable UI I’ve worked with, originated in the software libre world. Thats because the end-users of the programs, built those programs. Also open source, allows people to “fork” software. Forking let you take a software libre application that doesn’t meet your requirements, and built something that does from the same code base. In such an environment, software components such as UIs evolve much faster than in the proprietary world.

With my own life, I prefer using open source applications because they give me more freedom, and hence work better for me. Its amazing how much simpler, streamlined and usable most free software is. And it only gets better. I like my KDE 3 applications, but the KDE 4 applications once stablized will work even better for me. Thats because usability designers such as Celeste Lyn Paul work with the KDE developers on making better task-oriented UIs. A big thank you to all the KDE 4 developers, designers and contributers.

A New Hope

Ok, I just had to take that title. While I’m not a huge Star Wars fan, light sabers and X-wing fighters are cool. So why the title? And why the enthusiasm?

First, I have a job! Thats right, I now work as a software consultant for VisionMAX Solutions. I get to build neat web applications in Java for clients. Its not exactly open source, but the mode of work is very similar. I am pretty excited about the job. I just need to get used to the new schedule.

Second, I started writing again! Yup, I am working on a science fiction novel. First chapter done in rough, and the second chapter progressing well. Lets see if I can keep it up to finish the novel.

Lastly, Ubuntu 8.04 came out recently. I have been running the KDE 4 desktop on it, and its fairly stable. Recently I’ve had some issues with the performance KDE 4. So its back to KDE 3, which is still rock solid. I might get into KDE 4 development and help progress KDE 4 towards the same stability as KDE 3.

Kubuntu Dev Tips?

Decided that I want to get more involved with the Kubuntu project. Filling bug reports and answering forum questions is one thing. Being involved with the desktop you will be using is another. Besides I want to get my hands dirty in some KDE coding. Maybe gleen off a few tricks on how to create an environment where developers, and the community in general contribute.

I am a firm believer that developers should eat their own dog food. So for starters, I am making room to install the new KDE 4 version on Hardy Heron. After that I guess I will try to become a Kubuntu developer. Any tips on how I should get started?

Spreading Linux as a Scientific Endeavour

I just read Vlad Dolezal’s blog entry about why Linux doesn’t spread. The debate about the reasons why people don’t adopt Linux and a free open source desktop, has gone on for years. Vlad just dredged up the old its free therefore not useful argument. An easy counterexample are what mobile providers: get a free cellphone, pay for the service. Most Linux/open source companies make money from Saas (software as a service) too. In fact most large scale enterprise deployed software firms, do SaaS or SOA (service-oriented architecture). So while I wish Vlad luck with selling copies of Linux, a far more interesting comment turned up.

One commenter on Vlad’s site mentions their luck with “selling” the idea of a free open source Linux desktop as a scientific endeavour. Linux and software libre started off as ventures of interest only to computer scientists. Look here is a neat little OS I wrote on top of Minix (Linus Torvalds). And look here is a way we can run a UNIX system without NDAs, and restrictions of proprietary vendors (Richard Stallman). It was only until Eric S. Raymond started working on convincing developers and business decision people, that free software named as open source, that Linux started into its present course of wider adoption. A good chunk of open source projects are initiated by academics in computer science and communication fields.

The term open source was invented to defeat the argument which Vlad reiterates. Read Eric Raymond’s book, The Cathedral and the Bazaar for more about the idea behind “open source”. Removing the word “free” helps to lift the semantic confusion around the term free software. And treating the open source eco-system as part scientific community, part computer hobbyist club, and part client-oriented commercial paradigm, will all help remove the negative aura that sometimes surrounds Linux and the open source desktop.

The idea of getting involved in a grand experiment in science, appeals to some individuals. But probably only to those affiliated with academia, or in love with the romantic vision of science. Neither this idea of Linux a child of “computer science love” or any one thing will increase Linux adoption overnight. There will not be any mass exodus from Windows to Linux. However we can lower the cost of entering into the world of Linux.

Far more difficult issues face Linux and the open source desktop other than what Vlad mentions. The open source desktop lacks in ease of use, marketing and third party support. Dealing with these issues, will lower the cost of entry to the open source desktop for more computer users. More about this in future articles.

Menacing Migraines Ahead

Scientist should start classifying migraines in scale based on the pain inflicted upon an individual. Perhaps they should count number of perceived neuron deaths. At least I think they should. I rate mine a 4 out of 5.

But my headaches can not be as severe as the ones in Redmond. Since everyone (and their pet dog) has a prediction of what the potential takeover of Yahoo by Microsoft means, I decided to add my own opinion to the mess. As Matt Assay points out, lots of money will be thrown around for this acquisition. But rather than the high risks, it sounds like Microsoft has a waken up to a painful realization: no one actually cares about operating systems. This acquisition may actually signal Microsoft’s weakness.

Just look at the way Linus Torvalds views Linux. An operating system should be invisible to a user. The user shouldn’t care about what the operating system does, only that it works. Users only start caring when something goes wrong, software or hardware wise. If it works great.

Hardware manufacturers don’t care either. And the open sourceness of Linux lends well with manufacturers too. Here is a stable ready made platform, not controlled by any organizations. No need to pay per device royalties. No need to purchase expensive development kits to write drivers for. If the manufacturer decides to open source their drivers, they get the added benefit of the community donating fixes too.

Now Microsoft have a problem. They can’t compete with Linux on price. They can’t compete on developer freedom. So they get no love from manufacturers. And most user surf the web most of the time anyways. Almost everyone hates Vista anyways. Some users even find installing Linux sounds less painful than using Vista daily.

In fact this past year has been a headache for Microsoft. The lack luster performance of Vista. Nintendo trouncing both Microsoft and Sony with their Wii. Resistance of the ISO to standardize OOXML. And the year ahead does not look much nicer.

So what to do? Buy Yahoo. Try gaining solid dominance of the web in terms of personal web services. And hope that the cash cows called Windows and Office hold out against the steady march of open source and the web. Maybe the evil smiling duo of Google and Tux will go away by themselves.

Suddenly my migraine does not seem as a bad.

Calendars and TODOs Are Only Useful If You Use Them

You know those commercials for productivity suites/PDAs/etc. where the protagonist wants to go to an event… and then finds out it happened last week. Well that happened to me today. Just going through my “TODO” list, and wanting to check out when that expected event was gonna happen. And it already did.

The moral of the story, if you don’t want to look silly, check your todo list on a regular basis. And use a calendar. Sigh.

On a better note, KDE 4.0.1 came out yesterday. Upgraded today, works like a charm. Applications don’t crash and burn so far. But HAL is still kinda wierd. And not everything integrates as smoothly as one would expect of a Kubuntu release. I guess I will just have to wait until the Kubuntu 8.04 release. Just a few more days.

The Masses Don’t Exist

Some food for thought: If Linux/open source is so great why hasn’t it reached the mass market?

It’s an interesting question, especially for someone like myself who wants the open source/software libre movement to succeed both socially and economically. This question should interest even people who don’t really care about software or programming. Because if the FOSS community and companies could demonstrate that doing business in an ethical manner, and even show that ethical business can do perform better than “ethically neutral” business; this would have a huge impact on society.

However the term mass market is actually confusing. The mass market does not actually exist. In business, you don’t actually sell for the “masses”, but for a wide aggregated market of various consumers. A word processor (like Microsoft Word or OpenOffice or KOffice) works well for teachers, students, writers, office workers, secretaries, et cetra. But each of these kinds of individuals is actually a narrow (vertical in bizspeak) market. The word processor as a product just spans such a wide market, because its similar functions work a vast number of these vertical markets. Would you call a tool like a screwdriver or hammer as a mass market utility tool? Probably not.

So where does the so-called “mass market” exist? Only in the minds of individuals. The masses are a derogatory term used for a group of people whose lack of judgement makes them a prime target for exploitation by unscrupulous individuals. Even the wisest of people, act without reasonings things through. Some of us do so more than others. But humans are not herd animals and we should not be treated that way.

Unfortunately some people, organizations and companies want the mass market to exist. The mass media wants it for profit and power. Tyrants want it for profit and power. Seeing a pattern here? Nothing good for the majority of the human race can come of this kind of thinking. These organizations and individuals simply want to exploit the most vulnerable. It’s a good to see a tyrant brought down by the so-called “masses”. And it’s a good when we see the mass media, the mass publishers, and other mass market companies to suffer when their “mass market” leaves them and punishes them economically.

The truth is everyone a unique individual with unique talents, a unique background and unique needs. When you view persons as individuals and not as members of some “group”, then the masses simply don’t exist. Modern societies, law, technology and business theory are all based on the concept of individualism. And those who refuse to treat people, be they citizens, clients or end users with individual human dignity should be and will be punished for their folly.

Getting back to the commercial adoption of open source and Linux. Since the masses don’t exist, no single effort of the open source community is going to replace all the world’s computers operating systems with Linux and a free desktop. Rather Linux as a platform needs to suit the needs of the end users or clients. The business opportunities around open source and Linux are myriad. The real issue for open source business is to come up with a sane business model.

There will be no “Year of the Linux Desktop”. For some it already has happened. For some it still has not yet come. And for others Linux and open source will never work. Wide adoption of Linux will only occur if it meets the needs for a wide variety of individuals.