Often ‘Technically, hands-on’ becomes a critical skill to have no matter the type of role/responsibility an individual is handling in an organization. Bitten by the same bug I thought of making my hands ‘dirty’ by working on some of the older Linux programs I have created. Long time back Yahoo used to offer their Geocities services, where individuals can create their personal websites. There were no automated wizard those days, where I ended up creating HTML pages on my own and uploaded into particular location (provide by Yahoo) by keeping all my older projects in ‘cloud’. Eventually Geocities services was discontinued by Yahoo, luckily a replica maintained by *.ws domain. I was able to retrieve all my old projects and corresponding data from this updated domain. Here is the URL, where I learned my first baby steps about personal website development and writing: http://geocities.ws/b_jayakumar2002
Cut to Linux! I have downloaded two of my older projects which perform the following functionality:
- Message queue implementation in Kernel as new system calls
- Implementation of TFTP protocol using datagram sockets
Both programs were written in older version of Kernel (2.4.2) whereas current mainline is running with 3.11. In the mean time the Glibc (GNU C library) also gone thru significant changes, some of the older routines and data types may not work as expected. Since I have been out of programming for years together, I had some initial difficulty to get these programs working. However I was taken by surprise the way open source help system has evolved over years. Let me state my key observations as follows:
- Thanks to Virtualization, I was able to get a development machine up and running in a matter of 30 minutes using VMware. After trying out multiple distributions (Suse 11, Open Suse 12.3 and Ubuntu 12.04) I decided to go with Open Suse 12.3 as it offered all pre-built libraries. No doubt, Ubuntu offers excellent user interface, suites more to a desktop users than programmers
- Compiling kernel and booting up new image has become much simple. There are very less manual steps to be followed as some of them (ex: making entry into grub) is created automatically. I still remember how much challenging it was to get kernel 2.4.2 image with lilo loader up and running!
- There are tons of Linux related documentation, help sites and real-time experience sharing happening which makes getting help much easier. Especially Stackoverflow (http://stackoverflow.com/), TLDP (http://www.tldp.org/) and Linux-cross reference (http://lxr.free-electrons.com/) seem to provide anything ranging from syntax to data structure tracing inside Kernel
- For any theoretical reference, Slideshare (http://slideshare.net) is having excellent presentations, where I was able to quickly refer back in case any theoretical questions
- Linux Kernel debugging ecosystem also matured as lot. There are a bunch of diagnostics tools available (I only used strace, printk though), which makes Kernel debugging much easier. Need to explore more on both user and kernel space Linux debugging tools
It was fun to catch-up with programming after a long time. Will share more ,as I explore more into the world of Linux, Kernel and Open source!