Wednesday, May 28, 2008

Free Praxis...

I happened to start my summer internship program in AMI-Partners Inc, Bangalore. The project assigned was “Indian ISVs on Open Source Software”. As a part of the project, we are expected to interview some of the Independent Software Vendors of the country, after done with enough secondary research. Some of the facts were really shocking… there are companies who won’t pay a penny for buying software. When you struggle sourcing money for potential investments, why the hell paying damn software companies?

No, I am not preaching software piracy!!!

Let’s see what are the essential (something very subjective) tools needed in your computer for day to day activities. Operating system, Word processing tools, Spreadsheets, Presentation tools, Internet browser, Image manipulation tools, Audio-Video processing tools, Security and software…what else?

Traditionally when we buy a PC or laptop, it will have pre-installed version of Microsoft windows. And mostly the buyer will be given with a pirated CD of Microsoft Office and other packaged applications.

Windows Vista: It has gained another “f” word as adjective! You pay (approximate) Rs. 6,000 (Basic Edition) to Rs. 12,000/- (Vista Ultimate) for it, which will force you to add another 1GB RAM. Whatsoever your configuration is, your machine will resemble a mollusk in an year’s time…. Why the heck should one pay for Microsoft for these??? Why can’t we have Linux???

I have tried RedHat Linux on my PC as a secondary operating system sometime back (1998-2002). I dropped the idea later for two reasons. (A). increasingly complex installation process (B). Frequent crashes. The text based installation system demanded a good knowledge on PC file system, hard disk structure and a lot of trial and error to get the system running. It was way too complex. Yet, I was forced to do it as I had to implement my curriculum project (Protocol Analyzer for Linux based systems – developed using Unix, C and GTK+) on Linux.

The scenario has been changed a lot. Linux has many more versions and brands, most of them are amazingly reliable and much simpler than Windows Operating System. Ubuntu Linux installation files occupy only less than 300 MB on your hard disk. After all, it has no “adipose tissues” to add weight on your hardware.

Why not we go for the combination of Linux (OS – instead of Windows Vista), Open Office (Word processing tool – instead of MS Office), Mozila Firefox (Web Browser – instead of IE), GOMPlayer (Media player – instead of Windows media player), Winpooch (Open source anti-virus: instead of any damn anti-virus package)… you name the application and we can find an alternative for them…except for higher end engineering design and simulation tools – for which you may have to wait. It is happening in the industry.

No software cost!!! No need to upgrade hardware!!! There is an alternative for any licensed application!!!

Why not we start from Praxis… Let’s free Praxis from licenses and bindings!!!

Rants and raves and abuses are welcome!!!

Thursday, May 22, 2008

Something bothered me then….

I started using computer in 1997, HCL-HP Desktop PC with 80486 100MHz processor (not Pentium), less than 100 Kilobytes of cache, 16MB RAM, 640MB hard disk and Windows 95 Operating System. I used to run applications like WordStar, then installed office 97 and AutoCAD 14 and some DOS based games.
With a 16 MB RAM, my computer used to take a couple of seconds to boot, another two or more seconds second to load AutoCAD despite it's graphical interfaces and complex algorithms. So what????
One issue started puzzling me off late... the minimum configuration available now is a 2 - 2.6 GHz Core 2 Duo, 2 GM RAM, 120 GB hard disk and Windows Multimedia (read it as vista - when you need a powerful OS, they will give a multimedia package). Surprisingly, the time taken for the programs to get started is increasing exponentially!!!... What went wrong???
As a basic impulse, there is a tendency to point an accusing finger to the added features of the Operating Systems and applications running in the computer. I took some time to compare the features of the OS and applications. Say win95 vis-à-vis Windows vista, Office 97 vis-à-vis Office 2007, AutoCAD 14 vis-à-vis AutoCAD 2008 etc. The features and tools have undergone a marginal change.... the functionalities are the same!!!
If not the added features that loads my PC, what is it??? It is nothing but the heavy graphics...
I vividly remember, when I used a 3D window OCX tool for Visual Basic, it increased my application size by about 50% and started slowing down my video memory significantly!
Consider a 2 second delay in loading a window in Windows Vista. Multiply it by number of Days X Months X Years and divided by hours... you will realize that Microsoft has kept us waiting for hours... multiply by the 20-25 million Windows Vista licenses sold ... that much of man hours wasted in front of PCs... sheer wastage of invaluable human resources!!!
Have you ever thought why Microsoft is making anything and everything animated? That too with heavy 3D graphics! Is that merely to give a "feel good" for users? What if I don’t want my Windows in 3D frames animated? Why can’t I opt for a "flat" operating system and application window? Why can’t I customize my operating system for better performance when it is a cakewalk to add customizations while programming the system?
Who are the other players benefit when Microsoft is loading it's systems with heavy graphics and animations? Intel is there in the first place, NVidia and ATI benefit from graphics accelerators, Hyundai and Samsung are the leading players in the run to increase the RAM speed and capacity...and there are a lot of players who welcome heavier application from vendors like Microsoft... If Microsoft makes the operating system “thin”, most of these companies will end up with a “thin” bottom line!
Is there any reason for not believing that this is part of collusion??? End of the day, who is the loser???

The System Architecture as i see it…

When we are asked to explain System Architecture as a conversation, one of my many bitter experiences in life came to mind. I belong to a town near “Kaladi”, the holy land where Jagadguru Adi Sankaracharya took birth in 788 A.D. I used to visit the Advaitha Ashram for attending their classes and yoga sessions and accessing their huge library. That was the time I was doing my Masters in Computer Science. Once one of the monks, out of curiosity, asked me about my background and shot a pertinent question.

“I have a master’s degree in Vedanta and a visiting faculty of Sanskrit University of Kalady. I have never used a computer in life. What is a computer and what are those programs you are writing for?”

It was one of “The most difficult” questions I have faced and failed to answer in life… I can very well write an essay on it if it comes as a 15 marks question for my exam…but explaining it to a man who has never used a computer system is a challenge…

So I decided to explain System Architecture to a monk… conveniently making the monk technology literate.

Monk: You talk about some information systems…What does it mean??

Me: (In a single breath) Information system is a system that comprises people, machines, and methods organized to collect, process and disseminate data that represent user information.

(The monk was insatiable with my text book answer and decided to screw me…)

Monk: What are the components of an information system?

Me: We can segregate them as Hardware and Software. The Hardware part consists of computers, large servers, storage devices and connection network. The software part is the applications that process and distribute the data.

Monk: I often here the jargon Single Tier, Two Tier and Multi-Tier architecture…what are they?

Me: They represent the way in which data and application are kept in the system. It can be an integrated system, or Client-Server architecture…

Monk: Integrated systems means?

Me: See, when you have the data and application kept in the same computer, it is called an integrated system or a Single Tier system. For an example, when you use Tally in office, you can have a single computer with the software and the database installed in it.

Monk: Is that the way it is organized in large systems?

Me: Not necessarily. When it comes to a higher set of computers and applications, we will go for a Two-Tier System. In a two tier system, we can store data in one central database and applications can be run in individual systems connected to it through a LAN. This is called Client-Server architecture. Wherever there is an electronic communication, we have to have a protocol. The LAN uses TCP/IP protocol for the communication. The client machines take data from the server, process it and stores back to the server.

It has its own pros and corns. While it reduces the burden on the server machines, it requires higher data flow in the network. Another issue is when we have to make any change in the client application; we have to go around and do for all the systems. When I have a large network, it will become a strenuous task.

Monk: So how do you get rid of this problem?

Me: Here we can go for Three-Tier architecture. In Three-Tier architecture, we will have a Data Server, which stores all the data and an Application Server which do the processing of data. The client machines are installed with user interface applications. This reduces the processing burden on the client machines and reduces data traffic in the network.

Monk: What do I do when I have client machines across the globe? How can I go and install client software in each system?

Me: When you have client machines across the globe and connected through internet, we will use a multi-tier system. In a multi-tier system, we will introduce a Web Server, which will act as an interface between the servers and the internet. The client machines can access the servers using their web browsers, like Internet Explorer. The Web Server will process the request and reply with the information needed. For example, when we do internet banking through Citibank portal, we are accessing their application server and data server using our web browser from any computer connected to internet.

Monk: Alright…this sounds like a complex system. How do we manage it?

Me: In the actual scenario, the system can be a combination of one or many of these architectures. Instead of having a single server with all the data pooled in, we will have different servers with different type of data. For example, the employee information can be kept on a separate system and the financial information is in another one. This helps setting access permission and increasing the efficiency of the system.

(While the monk keeps wondering how simple the IS compared to the intricacies of Advaitha Vedanta, I bid adieu to the Ashram

One question was lingering in mind… what is in common between Spirituality and System Architecture???