When I was in Std. 8 many centuries ago, I swore on my own grave that I would never touch a computer since I hated it. Somewhere during that year I started breaking that promise and became more and more involved with computers. Today I realized I am back at that day - the day I swore I'll never touch a computer...
There are too many reasons to mention them all. Let me discuss a typical day - today.
I just bought a new Apple Cinema 23" display for my brand new MacBook Pro 15.4" notebook. I eagerly unpacked them and connected them up. I almost fried my eyes with the 23" LCD panel - its brightness was just way too high. So I adjusted it to its lowest setting. Lo and behold - at the lowest setting it is as bright as my MacBook Pro at its highest setting. For any other environment than a public office building with a bright window behind you, that is just too bright to work comfortably with. And I have 4 dead pixels. So I spent R11,000 on a display that is too bright to be usable for extended periods and has 4 dead pixels. Fine - I can live with that... For now.
So I started prepping my MacBook Pro - copying 3GB of data across the network via the 1Gbps LAN from my G5. Whilst waiting for that process to complete, I started installing XCode. Then I remembered while XCode was installing and the network copy ongoing, that I needed to check something on the Internet. So I opened Firefox. Just after I clicked the icon in the doc the UI froze - I could move the mouse cursor, ping the machine, even ssh into it - but the UI was dead. Waiting for the network copy to finish did not help either. Still stuck. So after trying to kill the offending process(es) I resorted to hard rebooting the machine. Fine - I can live with that.
I started all my applications again and continued installing and customising the new notebook. I quickly went to fetch a cup of coffee to try and calm me down. Just as I was sitting down and clicking on NetNewsWire Lite to read the new RSS feeds, I received the ever-welcome MMSOD (Multilingual Mac Screen Of Death). Just like that. By clicking on NetNewsWire's icon in the Dock. Fine... I rebooted. Before the grey boot screen disappeared, the system died again with the same MMSOD. Fine. So I tried a second time to boot - now it just hung at the grey boot screen. Finally I decided to pull the AC cable, taking out the battery and performing a PMU reset. Rebooting saw a glimmer of hope approaching as the friendly welcome screen is displayed. Cool. Issue fixed. I can live with that...
So I decided to start on my Web Services project. After having countless stability issues with my AMD XP 64 3200+ system (such as CPU reaching temperatures of 90C+ even with massive copper heatsink), I decided to replace it with a nice, fast Pentium D 3.2GHz. Since the machine is quite high spec, I assumed it would run most applications with ease. So I have installed WebSphere 5.0.2, MQ, DB2 and WSED 5.1. Ignoring the fact that MQ was complaining about some undetermined error and could not start, I loaded the WSED IDE to execute one of the example Web Services. Ok so it takes about 1 minute 10 seconds to launch WSED - on a Pentium D 3.2GHz with 1 GB RAM... After it launched I located an example and loaded it. So I went through the whole process of deploying the application - just to receive a "NoClassDefFoundError: javax/xml/rpc/ServiceException" error. It is supposed to be in the jaxrpc.jar file.. So I added it to the project but it still does not work. So I decided I'll browse through the Request.jsp page to see how they have implemented it. I double clicked the file and waited a whopping 25 seconds before the page loaded. The system was not swapping. I double checked this. Nice.
All this and I am not evening mentioning the patheticness of IBM's software. Where in your life have you seen a Install CD come with a stupid HTML page with directions on how to locate and find the setup.exe file somewhere in the file hierarchy? Or the stupid layout of WSED (Eclipse)? Nothing is logical in that GUI. At least IntelliJ IDEA has an intuitive layout... Or the fact that WSED is 3.2GB and requires a whopping 2 GB of disk space to install? I mean come on! If you are supposed to work in an IDE every day of your life as a Software Developer but have to wait more than one minute for the tool to load, and the stupid IDE taking up 2 GB of disk space - that is downright ridiculous. IntelliJ ships as a 58MB install image and that includes JRE 1.4.
What about implementing a Web Service in Java? Using Axis or similar frameworks usually require reading about 10-15 pages of information to understand how to write a basic Web Service - then 10 more to understand how to actually deploy the Web Service in a production environment. Using .NET (and no I am not a Microsoft evangelist) is how it is supposed to be done - writing a Web Service is as simple as tagging a method and a class with two annotations (attributes) and voila! No stubs, ties, skeletons, etc.
So I decided to leave the WSED frustration for tomorrow. In the mean time I thought I'd do some work on my Acer Travelmate 8204 notebook. After logging in I saw a notification window from Automatic Updates stating that new software is ready to install. So I went ahead clicking the baloon to have the updates install. Once done, I got a nice reminder that I need to reboot for the changes to take effect. Since I usually have between 10-15 applications running at any given moment, I am usually reluctant to accept these kind of options - I usually prefer to defer them until such time that I actually need the update and thus have to reboot. At least Mac OS X warns you before installing that it will require a reboot. So I clicked the "Restart Later" button. After working for 5 minutes a popup suddenly appeared on my screen:
No matter what you do - it always appears after 5 minutes of clicking "Restart Later". I mean does Microsoft really think I am such a baby that I need such constant reminding? I cannot tell you how annoying that message is!
So I rebooted and the message went away. Microsoft 1 - Waldo 0. Since I needed to do some .NET development as well, I tried to get Reporting Services working but to no avail. It kept on complaining about not finding an active IIS instance. So I checked it out and discovered that even though the WWW Publishing service was running, in IIS Management Console the Web sites node was not active - it had a red cross over it. I tried to start it but it failed with the most informative message I have ever seen:
I googled for it but only got vague answers. One entry suggested that it could be network related. So I performed a telnet on port 80 and what do you know - there was an answer. Even though IIS could not start. Hmmmm... I fired up TCPMon from SysInternals and located the culprit - Skype. For some strange reason Skype believes it has to listen on port 80. Don't ask why. But that is not the reason I am pissed off. It is because the developers who wrote IIS were too lazy to translate error code 0x8ffe2740 to a simple, yet obvious message "IIS cannot start right now since another application is bound to port 80". Is that too much to ask?
So after these issues I am a bit fed up. All in one day... Just a short while ago - as I was typing this blog entry - my wife came ask me to export our daughter's pictures from Aperture 1.1. She wanted to design a book of her life so far. I clicked on the smart album containing all star rated images of her, but after about 5 pictures were loaded Aperture just crashed - no error. I launched it again but only after the fifth launch did it load all the pictures properly. Aperture 1.1 was supposed to be a bug fix release as well... Sigh.
I hate computers. I believe commercial software are fundamentally flawed since the developers behind those systems are ALWAYS pressured for time - like I had one company tell me recently, they had a choice between Quality, Features, Cost and Time. Time was fixed, cost was fixed so quality and features went out of the door. Since commercial software are by definition competative, time and money will always be constraints. It is much easier to let go of quality. Features usually are also non-negotiable.
OSS (Open Source Software) are also by definition flawed. The developers are not usually constrained by time or features or quality, however they are always constrained by cost. Most OSS projects that are non-commercial have freelance developers behind it. People who spend their evenings and weekends coding. People like Linus Torvalds etc. do not count since they are being paid by commerical companies to work on the open source software - they usually fall into the category of commerical software. The problem is that if you spend your free time on a project you cannot put in consistent effort over a long duration - something that is crucial to the success of most projects. So either the software end up being buggy or major features are missing - not yet developed. Also, most smaller OSS endevours do not have the luxury of a proper QA phase - so the code quality sucks.
Look at Linux kernel - I notice every couple of days a new "stable" release of the kernel - now at 18.104.22.168. Yes I do understand it is bug fixes that goes into the .11 release, however bug fixes also need testing. So how can a bug fix be tested and included in only a couple of days?
The gist of the matter is that software will never be reliable, and it will never operate as we expect them to for as long as we design and develop software in the way we currently do. Humans can't cope with the complexity of today's systems - that is why a new version of Windows (Vista) takes 5-6 years to be developed and software such as IBM WebSphere is so uselessly slow and buggy. How will we ever test a system complex enough to handle the intercontinental commerce of the 21st century with current techniques? We need a drastic change in technology and a paradigm shift for all developers.
Till then I'll be struggling forward through the mess of other people's code.