4 Timeless Ways to Improve the Quality of your Writing

The craft of writing has lots more to it than just scribbling a few paragraphs in your wordpress or blogger editor and hitting the “upload” button. In the good old days when dinosaurs roamed the earth, writers used to bury themselves in their sacred libraries for days before arriving at an original research worth penning about. Publishers had dedicated editors and proof readers to correct any anomalies or spelling mistakes in an author's work before delegating it to the printing press.

Technology has, no doubt, seamlessly clubbed the entire process and handed the powers of writer, publisher and editor to a single creative being called Blogger who can perform the multiple roles while sipping her cup of hot coffee sitting at home. At the same time, it has made her lose the significance and elegance of a process that is proven to produce great arts of writing.

So let us understand some research and writing methods first before rushing to blog about any random topic in a random manner. Appraising these methods will not only help you produce a better quality content, but it will also ensure that you have a steady stream of research and ideas always flowing even when you don't seem to have anything to write about.

  1. Ask analytical questions: When a journalist starts work on a new assignment, he is encouraged to first ask the following six questions: What? Where? When? Who? Why? and How? Aptly called the journalists' questions, probe your subject using them and you will come up with a goldmine of topics for your chosen subject.

    For instance, you are to write an article on “Impact of IPL Cricket on the nation”. You might start asking questions like these for starters:
    1. What is this game of IPL cricket? What is the commercial angle in it?
    2. Who organizes it?
    3. Why do businesses fund it? What is the capitalization model?
    4. How cheer-girls and glamour impact the minds of would-be cricket players?

  2. Perform a cube analysis: Like the six sides of a cube, a subject or a topic can be analysed from six different angles. Supposing that we want to write an essay on apple, here is how you can perform a cube analysis:
    1. Describe: Describe how an apple looks, feels, tastes, what are its features.
    2. Compare: Do a comparison of difference types of apple: cachew, custard, oak, rose.
    3. Analyse: Analyse the apply by breaking its constituents: skin, flesh, seeds – how are they useful?
    4. Associate: Associate apple with things like gardens, agriculture, markets, economics, etc.
    5. Apply: Apply the concept of apple to cooking (fruit salad, recipes, etc) and medicine.
    6. Argue (for and against): Argue for and against the health effects of eating an apple.

  3. Have a brainstorming session: Though quite obvious, its usefulness is often overlooked because of its simplicity! We have been always taught by our school teachers to learn in a text book fashion - From start to end, visiting each chapter in a sequential manner.

    Our brains, on the other hand, are designed to grasp information in a totally different manner. They start from a central idea and fire neurons in all directions. Open up your mind and see where it leads you. You will be surprised what an idea generation factory you already have within you! Brainstorming is nothing but this process of opening up your mind and letting it run in all directions.

  4. Have a handy grip on Word power, Grammar, Usage and Style: Word power is the ever expandable database in your mind that you can constantly increase in size by daily practice. It supplements your imagination and expands your scope of writing.

    Grammar defines the rules of the language game and they are pretty much fixed. It consists of the basic elements of the language like nouns, verbs, adjectives, etc. and sets the constructs governing the structure of sentences.

    Usage is similar to grammar, but unlike grammatical rules which are fixed, usage is more of a convention adopted relative to culture and time. For instance, the sentence “She dressed beautiful” is grammatically correct, but usage convention states that an adverb should end with “ly”.

    Style, on the other hand, pertains to how you treat your writing. It is your way of structuring and organizing your content. It involves things like grace, clarity and many other undefinable qualities that separate good writing from bad.



References:
The Scott Foresman Handbook for Writers
andromeda.rutgers.edu/~jlynch/Writing
andromeda.rutgers.edu/~jlynch/Writing/s.html#style
en.wikipedia.org/wiki/Word_Power

10 Places to earn money online

If you are a professional writer or good at any particular craft or technology, then the ideal places to look for are Elance, oDesk, Guru and Freelancer.
Many jobs are outsourced every day and awarded to the most suitable bidders. The trick is to convince the clients that you are the best. You can do this in many ways like giving free exams on these jobsites, creating lucrative portfolios and providing examples of past work done.


If you already have a blog or any other traffic attracting site, you can use Google Adsense or  Infolinks to earn money through adverts. The mechanism is simple - You allow these sites to place their ads in your blog/website content, and in return they pay you on the basis of pageviews or number of clicks or both.

PayPerPost is not a model that many would agree with, but advertisers pay you here to write about their products on your blog.


If you are quite tech savvy and adventurous with desktop and mobile apps, then UserTesting is the place for you to visit. Here you can earn money for beta testing software. Along the same lines, Software Judge will pay you to review a Software.

Ether is the place to visit, if you don't mind helping users with their tech issues on phone. You get an ether number when you register which is directly linked to your mobile/other phone number. You can pre-inform the most suitable time you can take calls at the time of registration.

In case you are interested to earn easy money by taking online surveys, then PaidViewPoint is quite a good one. Most companies conduct paid surveys in order to reduce the statistical bias in their results. You should be wary of scams though while dealing with any company that promises to pay for online surveys. SurveyPolice is a good place to visit in this regard.

 OnlineProfits is a place to learn about the various concepts, tips and tricks of earning money online through content marketing. It covers topics like SEO, Advertising, Keyword research, Niches, etc.





References:
http://www.dumblittleman.com/2006/10/40-ways-to-make-money-on-internet.html

7 Reasons to be a Vegetarian - A Logical argument

  1. Meat is not a vital food: Though meat is typically marketed as being one of the four pillars of a balanced diet, in reality it is not. There are billions of people in the world who don't eat meat, yet live lives extraordinarily filled with vitality.

  2. Meat is dead food: It is stale by the time it hits the food malls. Most vendors add preservatives and dyes (to hide the fact that it turned brown in colour). Vital energy leaves body the moment an animal dies, so the food is devoid of any vital nutrition. The same thing applies to canned food and (to some extent) frozen food as well.

  3. Meat is toxic: Food consumed by humans is stored in the body for about a day before it is eliminated. Being already days old, meat has to spend one more day in the digestive track. To get an idea of toxic effect this might have, do a simple experiment: Take two glasses of water, then fill one with fresh vegetable, and another with some steak. At the end of three days, see what happens to both!



  4. Even doctors say so: Western medicine has long since recognized the correlation between meat consumption and rise of toxins in the body. If a patient has any kidney problem, most doctors will tell him to abstain from meat.

  5. We are not “designed” for this: Carnivores have powerful metabolism with short and simple intestines. This allows them to process meat faster. Even so, most carnivores sleep about 10 to 24 hours after a full meal to concentrate all energy on digestion. Again, the meat that carnivores eat is fresh and not days old. With their specialization, carnivores have no other option but to predate on other animals for survival. But for us humans, it is not necessary to eat meat to survive. The fact that billions do should provide ample evidence.

  6. Carnivores kill for ecological reasons: Ecologists know the fact that carnivores kill other animals only to help their race survive. When a panther hunts a deer, the process ensures that only the oldest and weakest of the deers are killed. In other words, only the best and the most agile ones survive – Darwin's principle of survival of the fittest. In contrast, humans don't have any such reasons to kill other beings. They only disturb the natural ecological equilibrium by doing so.

  7. Meat has “stress hormones”: Animals do have emotions as any pet owner can verify. Now typically a prey in the woods to which death comes suddenly doesn't have time for fear or emotions. Contrast this to the slow and gradual process an animal undergoes in the modern day slaughterhouse prior to being killed. Amid the terrified and painful shrieks of its fellow beings, it knows long before that it will shortly be butchered. Now consider the vast amount of stress hormones that the hypothalamus triggers in this state of extreme fear and panic. Guess what? All these stress hormones are soon going to be a part of your food adding to your own stress!

Note: If you are serious about switching from meat-eating in favour of pursuing a vegetarian diet, then you should research it thoroughly beforehand. Apart from googling and reading the below links, visiting your doctor or dietician is also recommended.


References:
“Dhanwantari” by Harish Johari.

How to share your Windows-7 Laptop's Internet with your wifi enabled mobile, and avoid costly fees in GPRS charges.


Since we purchased a brand new Samsung 5380K Wave mobile last month, I started exploring some of its cool features such as the ability to download and install new apps, multi-tasking and wifi connectivity. However, to take advantage many of these features one needs a good internet connection, and the one provided by your service provider incurs high costs. So, I thought why not leverage my current Tata-photon internet connection on my Windows-7 laptop, and use it on my mobile through the wifi feature it provides me: absolutely free of charge!!

I did some google-search to check if this was even possible. Though the procedure was a bit tricky, it was possible and many people seemed to be doing this already. That a network connection in Windows OS can share internet with other users in the same network was known since ages, but that was strictly between Windows machines. I was initially sceptical, as I could not fathom how a Microsoft proprietary OS (Windows-7) can be compatible with another Samsung proprietary OS (bada 2.0)! But as I found out later, this is actually possible. Here is the procedure of first creating an ad-hoc network between your Windows PC and your mobile handset, and then sharing your Windows connection:

On your Windows machine:

Step-1: Start the wifi and create the ad-hoc network: Press the wifi button to make it on.

Step-2: Go to:
Control-Panel=>Network and Internet=>View Network Status and Tasks. Then click on “Set up a new connection or network”.





Step-3: In the connection options, select “Set up a wireless ad-hoc (computer-to-computer) network” as shown above. Keep pressing Next button when asked. Give a suitable network name such as “prahladnet”. This will be the ssid of your newly created network.

Step-4: For security-type select WEP if your handset may not support WEP2 (all wifi mobiles will support at least WEP). Enter a security key of 10 digits. Check the option “Save this network” as you may have to connect to this network multiple times.

Thats it, your network is now established. Now click the Connections icon in your taskbar on the bottom right corner to see that your new network is waiting for connections as shown below:






On your smart-phone:

To complete the network from your smart-phone perspective, start wifi on it. Depending the model of your phone, you might have to browse through different menu settings to search the available networks. In the list of results, you should see the ssid of your ad-hoc network displayed (“prahladnet”).

Just select your network from the list, and provide the security key that you had entered in Step-4 of previous section. Once you do so, wait for some time, as Windows will take a few seconds to identify the new connection.
Remember, there is no need to change any ip-address settings or assign a static-ip to your phone. By default, your phone will be assigned a dynamic ip-address by your network which is just fine. To verify the device ip-address, you might again have to browse through some wifi-settings menu. On a Samsung Wave based phone, you will see something like this:


On your Windows machine:

[1] Now that your network is established, verify it by going back to your windows machine and typing the following in your DOS prompt: “ping ”. If you get a reply, all is going well.

[2] Secondly, make your new ad-hoc network the part of your Home-network group. You can do this by again going to the below menu:

Control-Panel=>Network and Internet=>View Network Status and Tasks.

There you can see your ssid in the “View your active networks” section. If it is not already a part of Home network, then click the link below the ssid to change the group.

[3] Since you are using Windows-7, it is a bit extra cautious about your security. Though you have established your network, you will have to explicity allow the WWW (world-wide-web) service in your firewall so that your smart-phone can access it. To do so, go the the following menu:

Control Panel=>System and Security=>Windows Firewall=>Allowed Programs.

Move to the bottom of the list to find the WWW service and check it on allowing access to Home/Private network only.

[4] Now for the last step. Make sure that your internet connection is shared with your wireless network. To do so, go to:

Control-Panel=>Network and Internet=>View Network Status and Tasks=>Change adapter settings.

[5] Right-click on the adapter providing your internet connection, and say “Properties”. Click the last tab for sharing and make sure that the “Allow network users to connect...” setting is turned on, and “Wireless Network Connection” is below it.

Thats it. Your ad-hoc network is established now. Whenever you connect to the internet, you will be able to access it on your mobile too through your ad-hoc connection. Before browsing on your mobile, make sure you have disabled packet data and removed any GPRS settings sent by your service provider. This will ensure that you are using free and pure wifi internet. Once you have ensured that, start the browser on your mobile.

Note:
[1] If you are visiting secure sites (https:), you will have to allow the “Secure www” service too through your windows firewall.

[2] The auto-assigned IP addresses of both device and wireless card should be in the range of 192.168.x.x. On the other hand, if the addresses are in the range of 169.254.x.x, then something is wrong – perhaps Windows is treating your device as a part of Public network instead of your Home network.


Update as on 10-02-2013: As of today, I'm dual booting my machine with both Win7 and Fedora18 (Linux) installed on separate partitions. Just out of curiosity, I decided to share the internet connection while Fedora was running. Trust me, sharing internet over wifi connection is a breeze in Fedora compared to Win7. All you have to do is go to the network applet in system-settings and open wireless tab. There is a nifty switch called "Wireless Hotspot". If you turn it on, you can share your internet through wifi to as many wireless devices as you want - smartphones or laptops!! No need to create a ad-hoc network between just two devices (as happens in Win7). Connectivity is also stronger and more reliable in Linux compared to Win7.

How to remove useless daemons and "memory-parasites" to speed up your new Linux Distro

Whether you installed a latest Linux distribution on a PC with modest configuration, or you installed it  on a "not so juiced-up" netbook, or like many others, you installed it on a high-end computer but your Distro was a bit clunky, there are always techniques to tune-up your tux machine in ways that will drastically reduce your memory consumption and CPU usage.

This will not only speed up your machine, but also help you to improvise your knowledge on the subject and find the root cause of the performance issues you are facing. For instance, I am certain that I am never going to use bluetooth service on my old 2002 Zenith PC having a modest RAM of 384 MB. Yet, the distribution I installed was Ubuntu 11.10 that comes pre-installed with such modern featues, so one of the first things I had to do was get rid of the bluetooth daemon! Nor did I have any need for the braille language add-ons, so the brltty daemon was the second to go.

If you have been working on Windows OS previously, then daemons are called services in your lingo. We will use the words daemons and services interchangably.

Here is a systematic-way to find out what daemons are eating up your resources when you start your machine, then make a list of those which you do not need after giving it some thought (exercise some caution here though - don't be tempted to remove a lot of daemons, this can have undesired effect on programs that you actually do use), and finally remove them from startup - or, if you are absolutely sure that you don't need it any more (such as bluetooth on an old machine), then remove the serivce entirely by uninstalling it using "sudo apt-get remove " command.

Step-1: Make a list of daemons to get rid of:
Here is how you are going to make it. Open up your terminal and type "service --status-all". This will display a list of all daemons installed on your system that run at the startup. Copy the list by selecting and right-clicking, and paste it into a text-editor. Then go through each one of them, and decide to remove them if and only if, you are absolutely sure that you don't need it. Here is a common list of services that many people would like to remove:

[1] bluetooth

[2] brltty [Braille language add-on]

[3] cups [Common Unix Printing Service]

[4] modemmanager [Modem Manager]

[5] saned [Scanner Access Now Easy Daemon]

[6] avahid [Avahi Daemon - used for file sharing]

Use the below three with a bit of caution. I haven't tried them yet:

[7] rsync [Used for fast file-copying]

[9] pppd-dns

[8] dns-clean


Step-2: Act on your decision:
First check whether the daemon in qestion is already disabled or not by issuing the below command:

service status

This will tell you whether the service is running or not. If yes, then go ahead and remove it from the startup by issuing this command:

sudo update-rc.d -f remove

Reboot and check by reissuing the "service status" command. This will remove the service from startup. If later, you want to change your


Step-3 Remove Virtual Terminals:
A clunky distribuition such as the Ubuntu Oneiric Ocelot provides 6 virutual terminals running at the startup, each one eating up roughly 1000 kilobytes of your RAM. However, I am going to need just two - the one I'm using and one extra for recovery if things mess up on my desktop. So, I can safely go ahead and remove the four that are not needed. The virtual terminals are named as tty1, tty2, ... up to tty6.  You can find their configuration either in a file named /etc/inittab, or in case of some newer distributions, in the /etc/init/ folder named tty1.conf, tty2.conf, etc... To keep the extra terminals from starting up, just edit their configuration and comment (using #) on the lines that start with "respawn..." and "start from run level....".

Some useful packages for the GNOME Desktop Environment

In the world of opensource, we have a variety of choices to accomplish any given task. For instance, to install a package on a Debian based distribution, we can either go to the terminal and say "sudo apt-get install " or use dpkg or aptitude instead. However, having come from a windows background (alas!), my lethargic way of doing things is to start the Synaptic Package Manager, and install or remove the packages I want.

The particular distro I installed (Ubuntu 11.10 - the Oneric Ocelot) turned out to be pathetically bare-bones. It didn't even have a graphical Package Management or desktop configuration tool. But unlike MS which doesn't even provide some good games to play along with the OS that it charges some good amount of money, I was astounded to see the sheer number of packages that an open-source linux distro allows us to download from its repository! My computing creativity that could only be satisfied by using and trying out softwares in all areas of use such as networking, graphics, office applications, programming, etc. was pretty much constrained by the closed-source nature of Windows. This creativity suddenly sprang to a new life and excitement with Linux. Whats more, I was like a child who had an unlimited supply of his favorite toys to occupy him for eternity!

Packages are the Linux equivalent of Windows setup/installation files. Unlike Windows "bloatware" (though it doesn't even ship with some good games to play, ironically it has tons of software that most of us are never going to use!), Linux has a minimalist approach towards package management. All packages come in the form of .deb or .rpm files and can be installed by either console commands such as "sudo apt-get install " in a Debian based distribution or by using graphical tools such as the Synaptic Package Manager. Here are some of the most useful packages commonly used by many of us:

**Note: Packages specifically built for GNOME environment could also be run on KDE desktop environment and vice versa, though with a slight performance penalty. Thats because both desktops are based on the X-Window system but use different graphics libraries, the former using gtk+ library from GNU and the latter using qt from TrollSoft.

[1] synaptic: If your debian-based distro does not include this package, then this is going to be the first package you will be installing. This is an excellent graphical package management tool that makes installing and removing packages a dream. It has several features such as upgrading and downgrading packages, automatically removing the dependencies that are no longer used, setting up of repository, sorting and searching utilities, etc. You will never have to use "sudo apt-get..." again.

Synaptic Package Manager































[2] gnome-shell: The default unity desktop does not appeal to lot of people (including myself). One of the reasons is that there isn't much control over the desktop and panels. If you are one of them, then all you have to do it is install this package. Either search and install using synaptic, or type the below command in a terminal:

sudo apt-get install gnome-shell

[3] gnome-tweak-tool:  You will most certainly going to need this once you start exploring your desktop. As the name suggests this tool allows you to literally "tweak" a lot of gnome desktop settings such as visibility of home/computer, mounted-drives, etc. on the desktop, manage gnome themes/extensions, etc.


[4] compiz-config-settings-manager: This is an excellent tool that allow you to have furthur control over your desktop and graphics. Compiz is the window manager for the x-window server (on which gnome is based). Compiz settings that you can control include how the windows are drawn, shaded and decorated.

[5] ubuntu-restricted-extras: Due to some copyright or legal restrictions in the United States, Ubuntu does not include such things as MPEG Layer 3, DVD codecs and drivers, etc. But you can download and install this as a separate package from their repositories. You may also want to install the vlc package along with this, if you don't like or don't want to use the default GNOME tools to play audio/video.

[6] gimp: The gnu image manipulation program is a high quality graphics editor comparable to adobe photoshop. The entire gtk+ framework came into existence to create this tool. If you are one of the artist types or just want to try gimp for fun, you can try out this package.


[7] extremetuxracer: One of my favorite 3d games. You guide tux the penguin through various hilly and icy scenarios.

[8]  knetwalk: Though it is part of the kdegames package developed for the kde dekstop environment, I can't stop playing it once I start. In fact I didn't even know it is was not built for GNOME until I read about it! Thats when I learned that both KDE and GNOME applications can in fact run on each other's desktop pretty well. There is some performance overhead involved of course, such as loading the other desktop libraries (qt or gtk+ as the case may be) and you must keep that in mind.

[9] build-essential: You will need this if you are into c and c++ programming. This will install the gnu compiler collection consisting of c & c++ language compilers, linker, debugger and other tools.

[10] monodevelop: If you are a developer who is from a Microsoft .NET background, having coded in C# or VB.NET (like me), then this where you want may apply your .NET skills. The entire BCL library is included, only MS proprietary namespaces such as System.Windows.Forms are the ones you are going to miss. For more info, visit the website www.monodevelop.com.

[11] gedit: This package is pre-installed with most distributions. It is the Linux equivalent of the win notepad, albeit with tons of more features.


gedit - Linux equivalent of Windows Notepad



[12] disk-utility: I found this nice program pre-installed with ubuntu 11.10. It is a nice GUI tool that shows disks and partition details on the system. It also allows you to format or repair drives and edit partitions.



disk-utility - A tool showing disk and partition details.



[13] sysvconfig - A text-based tool to start/stop/configure services. One of the things you will need is a tool to start/stop services (a.k.a daemons in Linux) for which you may also use the "sudo service ..." command apart from this tool. However, you may also need to disable some unneeded services from startup that your distro might have included for you, such as bluetooth, scanner, etc. This tool helps you in doing that.

[14] kdevelop - This is a light-weight IDE for writing apps in c, c++ and many other languages. It is light-weight and makes use of your existing build chain such as GNU make and compiler utilities, debuggeres, etc. More information is available on their website, www.kdevelop.org.

Yet another Linux story

This article is aimed at Linux newbies, enthusiasts and developers who are yet to take the plunge.

A big task was pending since a very long time in my todo lists. It was installing and trying out Linux. Having heard about many features and praises about Linux and programming on the LAMP stack from a few of my friends and colleagues, I decided to give it a try myself. So I went about learning and researching Linux & LAMP, formatted my hard-drive, created new partitions and installed Ubuntu 11.10 (a variety of Linux that ships with the GNOME desktop environment). The first emotion I then felt was that of regret – Why didn't I do this earlier? Why was I focused on programming in a closed-source OS environment with bloated software, and a runtime with just two options to code – VB.NET & C#. Being enlightened about the open-source legends and milestones achieved by Linux and the secure way it handles its file-system, I couldn't help but wonder at its marvel.

[Part-1]: What is Linux and LAMP: Linux is a unix-like operating system developed on open-source model. Without going much into its history (you can find it here anyway), suffice it to say that it was an experiment started in the early nineties by Linus Torvalds, its inventor. Since Torvalds made the Linux source-code open on the web, programmers all around the world started contributing to it, and Linux naturally evolved in time to become what it is today. Below are only a few of the advantages of using Linux.

[i] Security and Stability: Having several years of Unix heritage behind it, Linux is known for its security and robustness. That is because, unlike Windows, Linux was designed for security. In a Linux file-system, there is only one root user who can control the system and perform administrative tasks such as installing and removing software. All other users, will only only have privileges to their individual folder. So, even if someone writes a virus or malware program for Linux, the average user running that program won't have any rights to perform any real damage. Contrast this to MS Windows, where a user is free to download and install any bloated software downloaded from a third-rate website, and thus manage to infect his system without even knowing a thing about it! No, in Linux only administrators have that privilege, and they are wise enough to know how to use their privileges.
Another reason for Linux's security and stability is its modular architecture. Linux is not a full-fledged OS, but is the kernel or core of an OS that consists of low-level functions like memory allocation, device management, swapping etc. For high-level functions like the Desktop environments, application software, etc. there are modules or packages which run separately from the core (more about this in part-2 - How Linux Works). So, even if a Linux Desktop crashes altogether due to any reason, its core would still be running and you can recover yourself by using the console commands.

[ii] Quality: Because Linux is an open-source product, all development and bug-fixes are done in front of the masses. These masses include the best of programmers who commit their code in the Linux repository, Technical writers who contribute by writing Linux documentation, and beta-testers who test the latest Linux OS and raise faults on the bug-tracker.
For those who don't know how open-source works, it is very important to get an overview at least. Nowadays since we are using the freely available open-source software such as Subversion, Nunit and Open-office even in corporate environment, it helps to know how their development takes place and whether any new features, or a new software consisting of better features is around by. For competetion and alternatives is what we get from open-source. The principles of open-source hold that all software should, not just be free for everyone's use, but also be alterable (in other words, freedom to use, freedom to change the source-code and freedom to contribute it back!). One advantage of this is that a large user-base will cause a contributing community to thrive and the software quality to improvise and evolve. For more information, visit this Wikipedia link.
The L in the acronym LAMP stands for Linux. The rest are three of the most popular open-source packages that complete a web-developer's toolkit on the fly. These are:
  1. Apache httpd, the web server.
  2. MySQL, the database.
  3. PHP, the scripting language (though it may also stand for the languages perl & python).
[iii] Flexibility: Linux is very flexible due to its modular architecture. For doing almost anything, there is usually more than one option available. For instance KDE, GNOME, LXDE and XFCE are some of the popular desktop-environments in Linux. When you install Windows-XP, there is only one Desktop which is the one provided by XP. But in Linux, you may install as many desktops as you want and depending on your need and performance requirements, switch to one or the other at will. Imagine doing that on a Windows OS! Not only that, any Linux program will run on all desktop environments equally well – you can mix and match.

[Part-2]: How Linux Works:
As explained in the previous section, Linux is not an OS in itself, but the core or kernel of an OS. In fact, this modular architecture of Linux proved its worth so much, that it inspired many other systems. Open source software such as the Firefox (a web-browser) and Eclipse (an IDE for development) follow a modular architecture with a strong core and a set of plug-ins for specialized functionality.

The Linux technology stack could be seen as follows:

The Linux Stack & File-system.

 The Linux file-system does not have drive letters to individual drives and partitions such as C:\ and A:\. Instead, all files and folders in the file system are logically inside the root folder represented by “/” and physically they could be anywhere. Furthur, a user's home directory could be “/home/user1” and your DVD contents could be found in a folder like “/media/dvd123”. The benefit of this file system is that it does not limit your root directories to the 26 alphabets of the English language, but allows you the flexibility to create as many root directories (provided you are the root user), and mount as many partitions to the folder of your choice. In Linux, the process of binding a folder to a specific storage partition is called “mounting”.

Another reason for Linux's stability is that Linux uses a Journalizing file system such as ext3 or ext4 to store data. The advantage of using a journalizing file system is that changes made to the files and folders are not immediately written to the disk, but are written in batches. First of all, this creates a very efficient system of writing to disks since access to disk memory is much costlier than physical memory. Secondly, it never leaves the system in an inconsistent state in case of failures.
Compared to this, windows systems are based on FAT32 or NTFS file systems that write to disk as and when changes occur. Hence, they are very prone to data-corruption when failure occurs. Another problem caused here is that windows file systems tend to bloat over time. This happens because since changes are saved to disk as they are made by the user, the bytes get stored at different places on the disk which causes fragmentation. So the next time your word-document is opened, Windows has to collect all its bits and pieces from different areas of the file system causing inefficiency over time. Hence, a windows system needs de-fragmentation to be performed after a certain period's use. In Linux, there is no concept of de-fragmentation as this inefficiency is not introduced in the first place.

[3] Linux Distributions: As noted earlier, Linux is not an OS, but the kernel of the OS. This allows the flexibility for a variety of customized OS distributions consisting of the Linux kernel and individual packages as per the distribution's requirement or intended use to be developed, and still be compatible with each other. Linux is used in devices ranging from cell-phones to super-computers, but each distribution is packaged and customized according to its own requirement. Yes, even Android is a specialized distribution built on the Linux kernel. For general use such as running desktop applications, surfing the net, playing music (and of course programming!), there are many popular open-source distributions available such as Debian, Ubuntu, Fedora, etc. They are all Linux, just different flavours! The full list and information is available on distrowatch.com. Installing them is relatively easy, depending on the distribution you select. It typically involves downloading the latest version of the distribution and burning it to a bootable disk.

[4] Linux for Developers: As I mentioned in the first paragraph, the world of open-source is open for developers. This is often expressed in the form of the much popular acronym LAMP. However these are only four of the gazillions of packages offered by open-source world. Having said that, these four packages together constitute a development environment to create any powerful web-application in the world. Wikipedia and Google were developed using just these four!
Apart from providing a myriad of language compilers and interpreters ranging from ada to c++ and java to zpl all for free, open-source also has a ton of other software. A few of them are listed here:

IDE: Eclipse, Netbeans, Ajunta, Mono, Pythoncard.
Text editors: Vim, gedit.
Repository management: subversion, git, mercurial.
Testing: Nunit.
Compilers: GNU compiler collection including c, c++, perl, python and many others.
Databases: MySql, Postgre-Sql.
Web-server: Apache httpd.
Scripting: PHP, RoR.
Package Management: Synaptic, APT.



Screen-1: Ubuntu 11.10 Unity Desktop based on GNOME - comparable to XP/Win7.

































Screen-2: Disk Utility: A Linux program showing the details of various disks and partitions on the system.




Screen-3: The Linux File-system being explored using Nautilus – The File management program for GNOME.





Screen 4: gedit – an open-source text-editor similar to notepad, but with tons of more features.