Beginner MySQL, PHP and Perl tutorials in pictures

June 11, 2007 2 comments
Inpics - short for In Pictures is a website with a difference. While most websites provide tutorials and howtos which are quite verbose, Inpics takes a different path to teach the basics of technology related subjects. It explains things in pictures. And indeed, a picture is worth a 1000 words. The pictures are simple black and white photos.

They have a growing collection of tutorials which are quite easy for beginners. Inpics began as part of a research study conducted for the U.S. Department of Education. The goal was to make it easier for people with learning disabilities to grasp computer subjects.

As part of the study, they created simple, illustration-based tutorials. Everyone who tested them—not just people with learning disabilities— are claimed to have said the new tutorials enabled them to learn faster and easier than conventional text-heavy books.

For the Linux enthusiast, they have a couple of tutorials on MySQL,PHP and Perl which are quite refreshing to follow. Do check them out.

Book Review : The Linux Programmer's Toolbox

June 08, 2007 2 comments
What does it take to start writing programs for Linux ? Most people will guess a text editor, knowledge of a programming language and the compiler and libraries of that language would suffice. But ask a professional programmer who has been writing code for Linux and he will differ with you and insist that while the three things stated above can very well help kick start ones programs, other things also come into play in writing efficient programs such as a debugger, memory profiler tools and above all a good understanding of the inner working of Linux kernel and its processes.

The book titled "The Linux Programmer's Toolbox" authored by John Fusco is a book which is a store house of knowledge which aims to make the average Linux/Windows programmer aware of the tools at his disposal which can help him write better programs for Linux.

The book is divided into 10 distinct chapters with the first 4 chapters describing various ways of boosting ones productivity while embarking on writing code for Linux as well as getting to know the various tools at ones disposal.

In the very first chapter titled "Downloading and Installing Open source tools", he talks about the different archive formats commonly used in Linux, various package managers such as Debian's own apt-get, Red Hat's Yum and how to properly authenticate the packages you download to ensure that they are not tampered.

The second chapter deals with building tools from source. Here apart from describing the actual steps involved in compiling the sources, the author also delves into explaining the concept behind the MakeFile, the common variables used in implicit rules and so on. In this chapter one also gets to acquire an understanding of the tools used to create projects as well as examine how these tools work together in the build process.

The book has a chapter exclusively devoted to explaining ways of ambulating through the myriad of documents; tools such as man, info, as well as some of the not so obvious ones. One thing I like about this particular chapter is how the author has provided tables which list a number of recommended manual pages with a short description of each of them.

Linux doesn't have a comprehensive IDE on the lines of Microsoft Visual Studio to develop programs - at least not yet. Most Linux programming gurus are perfectly at home with coding using their favorite text editor. And any book of this stature will be incomplete without a mention of the different editors available for coding in Linux and their pros and cons. The 4th chapter of this book introduces the different editors including Vim and Emacs and discusses their pros and cons. There are numerous tips in this chapter which aims to make writing code much more efficient, productive and a pleasant experience for the average Linux programmer. As a Vi enthusiast, I couldn't help but admire how one can convert Vim editor to work as a code browser with the help of Ctags which is explained in detail.

The fifth chapter titled "What every developer should know about the kernel" is a turning point in the book and gives a comprehensive understanding of the working of the Linux kernel. It is by far the largest chapter - with nearly 100 pages devoted to this topic - in this book. In this chapter the author talks in lucid detail about the different modes in Linux, the process scheduler, device drivers, the I/O scheduler and the memory management in user space, understanding all of which is instrumental in writing better programs for Linux.

The next two chapters deal with Linux processes and the communication between processes. Here one gets to know more about the technical vagaries related to processes such as forking, cloning, process synchronization and the basics of inter process communication. The author has introduced several APIs and basic examples of each.

In the 8th chapter, the author introduces many tools which are installed by default in most Linux distributions which aid in debugging communication between processes. The tools include (but are not limited to) lsof, fuser, stat, hexdump, strace and so on. And each tool is accompanied by its usage and its output with a short discussion of the output.

In the 9th chapter titled "Performance Tuning", one gets to know more about fine tuning ones Linux program. Here the author explains the factors affecting system performance as well as the tools for finding system performance issues.

Finally, the last chapter of this book explores some of the most common debugging tools and techniques for Linux. More specifically, I found the discussion on the use of GNU debugger quite informative.

At the end of each of the 10 chapters in the book, the author has provided a short synopsis of the tools that are used. Also many additional online resources have also been listed where one can acquire more knowledge about the topic being covered. Through out the book, noteworthy sections have been highlighted in dark background which makes it quite eye catching and also easy for quick reference.

The book is written with a slant towards the C language especially when depicting the examples in the latter half of the book. But that is something which can be understood considering that the bulk of the Linux kernel has been written using C language.

Book Specifications

Name : The Linux Programmer's Toolbox
ISBN No: 0-13-219857-8
Author : John Fusco
Publisher : Prentice Hall
No of Pages : 600
Price : Check the latest price at Amazon.com
Verdict : An excellent resource for those who are interested in improving their productivity as a Linux programmer.

Most programmers with Windows background will be forced to make a paradigm shift while embarking to program for Linux. While the Windows programmers could take deceptive comfort within the cozy confines of a Visual IDE, when they make the shift to write Linux programs, they are suddenly faced with the hard facts of programming as it really is. And this book could be an ideal companion for this set of programmers who wish to lessen their learning curve and make programming for Linux a much more pleasurable experience.

Having said that, I found this book to be an ideal companion for any programmer (not necessarily only of Windows background) who wish to develop programs for Linux.

Anatomy of the GNU/Linux kernel

June 07, 2007 0 comments
M.Tim Jones an embedded software engineer and the author of several books has written a short but very informative article explaining the anatomy of the GNU/Linux kernel. He starts with a short history of Linux and moves on to giving a brief introduction of Linux kernel and its properties.

Then we get to know the major sub systems of Linux kernel such as the System call interface, Process Management, Virtual File System (VFS), Memory management, Network stack, Architecture and device drivers. Finally there is a short synopsis of the interesting features of Linux kernel.

I found it a very nice read especially with the accompanying images which makes it quite easy to visualize what is explained. After all don't they all say - a picture is worth a 1000 words ?

Read the article on the Anatomy of the Linux kernel at IBM Developerworks to know a little about the working of Linux.

Download Netscape Navigator ver 9 for Linux

0 comments
Remember Netscape - the very web browser which once enjoyed a major browser market share and which was nearly killed by Microsoft's anti-competitive practices by its release of Internet Explorer ? The very Netscape navigator whose code base was then released as open source and which lead to the eventual development of the stable and increasingly popular Mozilla and then Firefox? Guess what, it has re-incarnated as Netscape Navigator ver 9.0.

Contrary to popular belief, Netscape Navigator was not dead though its popularity was severely diminished. One of the reasons for it to fall out of favor with the net users was because its succeeding versions accumulated a lot of unnecessary bloat. I remember using Netscape navigator ver 4.0 which was really sleek and then when I upgraded to the next major version, it some how did not live up to the mark of its predecessor.

The new Netscape navigator has shed a lot of fat and is now much sleeker. It is based on Firefox and has a couple of unique features built-in such as :
  • Integration with Netscape portal which is now a social bookmarking site (Yes Netscape website is now a social bookmarking/voting site aka digg.com ). From within the web browser without visiting Netscape, you can share and vote for web pages that you find interesting.
  • Read the latest news directly from your browser.
  • Netscape navigator fixes commonly mis-typed URLs for you.
  • And the highlight of ver 9 release is a link pad (Similar to what you have in Opera) which allows you to save interesting links without cluttering your bookmarks.
Netscape ver 9 is available for Linux apart from that for Windows and Mac OSX and is a modest 8.9 MB download. The minimum system requirements are 256 MB RAM and around 100 MB disk space.

If you are interested, you can download Netscape Navigator 9 and take it for a test drive.

Google Talk - Instant messaging client for Linux

June 06, 2007 11 comments
Roughly one year back, Google released its popular instant messaging application called Google talk which allows one to communicate with others, similar to the ever popular Yahoo Messenger. Initially Google talk client was available for Windows users only and people using other operating system such as Linux had to do with using the window which was embedded in their Gmail account. The problem was that to use Google talk, you had to log into your Gmail account.

Google has not yet released a native build of Google Talk for Linux. But what has changed is that it has now released a flash version of Google Talk which works in the same manner that an Instant messaging client is meant to work. The convenience for the Linux end user is that now in order to send text messaging using Google talk, one need not log into ones Gmail account but can directly access the Google talk interface as shown in the images below.

Fig: Google Talk web interface (Flash version)

Fig: Google talk - main view.

Fig: View once I have logged in.

Google Gears : Your Web applications can now be used even when not connected to Internet

June 04, 2007 0 comments
Microsoft has had a definite advantage in being a virtual monopoly in the PC market. In the past few years Google has been trying to grab this enviable market share enjoyed by Microsoft by releasing web applications which have similar features of popular Microsoft software products. Thus you have Google spreadsheet as a potential replacement for MS Excel, Gmail, Google Docs as a replacement for MS Word and so on. But till now Google applications lacked a fundamental feature which was that none of the Google products could be used while you are offline. In other words, you needed an Internet connection to use any of the Google offering except Google Desktop search.

Now this is bound to change for once and all and you can look forward to Google storming one of the bastions of Microsoft which is the PC Desktop. Google has just released what they have named as Google Gears. Simply put, Google gears is a web browser extension which makes it possible to make web applications run while you are offline.

Google Gears provides three key features which are :
  1. A local server, to cache and serve application resources (HTML, JavaScript, images, etc.) without needing to contact a server.
  2. A database, to store and access data from within the browser.
  3. A worker thread pool, to make web applications more responsive by performing expensive operations in the background.
Google has released Google Gears as a open source product which means, interested webmasters can use the API to develop their own web applications which work offline. You can go through a Google gears tutorial as well as access some sample applications to whet your appetite.

But what I find most enticing is the fact that Google has simultaneously released the web extension for Linux too along with that for Windows and Mac OSX. If you are interested in say, writing an email in your Gmail account while offline and then connecting to internet just to send the mail, then you can download and try out Google Gears.

Create a Linux Desktop application In 14 minutes flat using QDevelop and Qt

June 03, 2007 0 comments
Who said creating gui applications for Linux were difficult, tedious and mind numbing ? Ok, perhaps this was true 10 years back or so. But now Linux has a plethora of tools which make it possible to create GUI applications - I dare say as easily as programming in Visual Basic for Windows.

You can literally drag'n'drop, move and resize all the widgets such as buttons, text areas, radio buttons and so on and design a very good GUI in minutes. And in the forefront of ease of use is QDevelop which acts as a visual integrated development environment (IDE) for developing Qt applications for Linux.

Clive a 54 year old programmer who has over 25 years of developing experience walks one through the nuts and bolts of creating a GUI application from scratch. What is really interesting is that he uses QDevelop to design the application and also walks one through the steps involved in installing Qt & QDevelop, the different layouts in Qt as well as the final finished product. A very informative tutorial targeted at beginners.