<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rss [<!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">]>
<rss version="0.92" xml:base="http://www.nirendra.net/cms">
<channel>
 <title>nirendra's blog</title>
 <link>http://www.nirendra.net/cms/blog/1</link>
 <description></description>
 <language>en</language>
<item>
 <title>Communicating with kernel</title>
 <link>http://www.nirendra.net/cms/communicate_kernel</link>
 <description>&lt;p&gt;&lt;html&gt;
&lt;p&gt;According to &lt;a href=http://en.wikipedia.org/wiki/User_space target=_blank&gt; Wikipedia&lt;/a&gt;, an operating system usually segregates virtual memory into kernel space and user space. Kernel space is strictly reserved for running the kernel, device drivers and kernel extensions. In most operating systems, kernel memory is never swapped out to disk. User space is the memory area where all user mode applications work and this memory can be swapped out when necessary.&lt;/p&gt;
&lt;p&gt;A user application cannot access kernel space directly and similarly kernel code cannot access the user space without checking whether the page is present in memory or swapped out. Even though these can not access each other directly, user and kernel space can communicate with each other using variety of ways. This is an effort to summarize those used under Linux:&lt;/p&gt;
&lt;p&gt;&lt;Li&gt;&lt;b&gt;System calls &lt;/b&gt;&lt;/li&gt;
&lt;p&gt;As explained in manual of syscall(2), The system call is the fundamental interface between an application and the kernel.&lt;/p&gt;
&lt;p&gt;A system call is a request by a running task to the kernel to provide some sort of service on its behalf. In general, the kernel services invoked by system calls comprise an abstraction layer between hardware and user-space programs.&lt;/p&gt;
&lt;p&gt;The way system calls are handled is up to the processor. Usually, a call to the kernel is due to an interrupt or exception;  in the call, there is a request to execute something special.&lt;/p&gt;
&lt;p&gt;Actual code for the system_call entry point can be found in /usr/src/linux/kernel/sys_call.S and the code for many of the system calls can be found in /usr/src/linux/kernel/sys.c. Code for the rest is distributed throughout the source files. Some system calls, like fork, have their own source file (e.g., kernel/fork.c).&lt;/p&gt;
&lt;i&gt;Pros:&lt;/i&gt; Well documented, easy to use interface.&lt;/p&gt;
&lt;li&gt;&lt;b&gt; ioctl &lt;/b&gt;&lt;/li&gt;
&lt;p&gt;Even though ioctl is one of the system calls, its usefulness tempts me to talk about it separately. Sometimes referred to as Swiss army knife, ioctl stands for input/output control and is used to manipulate a character device via a file descriptor. ioctl is a catch-all function that takes a device, a request and a variable number of other parameters. The devices, requests and other parameters are then defined in header files.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Pros:&lt;/i&gt; Provides hardware level access to programmers.&lt;br /&gt;
&lt;i&gt;Cons:&lt;/i&gt; device and requests are poorly documented and platform specific.&lt;/p&gt;
&lt;li&gt;&lt;b&gt; procfs&lt;/b&gt;&lt;/li&gt;
&lt;p&gt; The /proc file system (&lt;a href=http://www.nirendra.net/cms/procfs/user target=_blank&gt;procfs&lt;/a&gt;) is a special file system in the Linux kernel. It is a virtual file system, i.e. not associated with a block device but exists only in memory.&lt;/p&gt;
&lt;p&gt;The files in the procfs are there to allow userland programs access to certain information from the kernel (like process information in /proc/[0-9]+/), but also for debug purposes (like /proc/ksyms).&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Pros:&lt;/i&gt; Uniform interface to retrieve process information from command line.&lt;br /&gt;
&lt;i&gt;Cons:&lt;/i&gt; Difficult to figure out required information as too much miscellaneous information exposed through single file system.&lt;/p&gt;
&lt;li&gt;&lt;b&gt;Sysfs&lt;/b&gt;&lt;/li&gt;
&lt;p&gt;Sysfs is a virtual file system provided by the 2.6 Linux kernel. Sysfs exports information about devices and drivers from the kernel device model to userspace, and is also used for configuration.&lt;/p&gt;
&lt;p&gt;Sysfs is designed to export the information present in the device tree which would then no longer clutter up procfs.&lt;/p&gt;
&lt;p&gt;For each object added in the driver model tree (drivers, devices including class devices) a directory in sysfs is created.&lt;/p&gt;
&lt;p&gt;The parent/child relationship is reflected with subdirectories under /sys/devices/ (reflecting the physical layout). The subdirectory /sys/bus/ is populated with symbolic links, reflecting how the devices belong to different busses. /sys/class/ shows devices grouped according to classes, like network, while /sys/block/ contains the block devices.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Pros:&lt;/i&gt; Uniform interface to retrieve/update device specific information&lt;/p&gt;
&lt;li&gt;&lt;b&gt;Netlink sockets&lt;/b&gt;&lt;/li&gt;
&lt;p&gt;Netlink socket is a special IPC used for transferring information between kernel and user-space processes. It provides a full-duplex communication link between the two by way of standard socket APIs for user-space processes and a special kernel API for kernel modules.&lt;/p&gt;
&lt;p&gt;Netlink socket uses the address family AF_NETLINK.&lt;/p&gt;
&lt;p&gt;The standard socket APIs-socket(), sendmsg(), recvmsg() and close()-can be used by user-space applications to access netlink socket.&lt;/p&gt;
&lt;i&gt;Pros:&lt;/i&gt; It is a nontrivial task to add system calls, ioctls or proc files for new features; with the risk of polluting the kernel and damaging the stability of the system. Netlink socket is simple, though: only a constant, the protocol type, needs to be added to netlink.h.&lt;/p&gt;
&lt;li&gt;&lt;b&gt; relay &lt;/b&gt;&lt;/li&gt;
&lt;p&gt;Relayfs is, yet another virtual filesystem implemented by the kernel; it must be explicitly mounted by user space to be available. Kernel code can then create a relay with relay_open(); it will show up as a file under relayfs.&lt;/p&gt;
&lt;p&gt;User space can then open the relay and employ all of the usual file operations - including mmap() and poll() - to exchange data with the kernel.&lt;/p&gt;
&lt;p&gt;To an application, a relayfs file descriptor looks much like a Unix-domain socket, except that the other end is a piece of kernel code rather than another process.&lt;/p&gt;
&lt;p&gt;The interface on the kernel side is a bit more complex. The expected relay_read() and relay_write() functions exist and can be used to move data to and from user space.&lt;/p&gt;
&lt;p&gt;But relayfs also exposes much of the internal structure to kernel code that needs to know about it. So special-purpose code can obtain a pointer into the relayfs buffer and copy data there directly.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Pros:&lt;/i&gt; Easier to pass large amount of information to and from kernel space.&lt;/p&gt;
&lt;li&gt;&lt;b&gt; debugfs&lt;/b&gt;&lt;/li&gt;
&lt;p&gt;debugfs is a in-kernel filesystem just for putting debugging stuff some place other than proc and sysfs, and which is easier than both of them to use.&lt;/p&gt;
&lt;p&gt;debugfs is meant for putting stuff that kernel developers need to see exported to userspace, yet don't always want hanging around.&lt;/p&gt;
&lt;p&gt;To create a file using debugfs the call is just:&lt;br /&gt;
struct dentry *debugfs_create_file(const char *name, mode_t mode, struct dentry *parent, void *data, struct file_operations *fops);
&lt;/p&gt;
&lt;p&gt;To export a single value to userspace:&lt;br /&gt;
struct dentry *debugfs_create_u8(const char *name, mode_t mode, struct dentry *parent, u8 *value);
&lt;/p&gt;
&lt;p&gt;That's it, one line of code and a variable can be read and written to from userspace.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Pros:&lt;/i&gt; Shortens development time with debugging information easily available.&lt;/p&gt;
&lt;li&gt;&lt;b&gt;Firmware loading&lt;/b&gt;&lt;/li&gt;
&lt;p&gt;While most computer peripherals work right "out of the box," some will not function properly until the host system has downloaded a blob of binary firmware.&lt;/p&gt;
&lt;p&gt;&lt;P&gt;The end result is that the recommended way of dealing with devices needing firmware downloads is to have a user-space process handle it.&lt;/p&gt;
&lt;p&gt;In the new scheme, a device driver needing firmware for a particular device makes a call to:&lt;br /&gt;
    int request_firmware(struct firmware **fw, const char *name, struct device *device);&lt;/p&gt;
&lt;p&gt;Here, name is the name of the relevant device, and device is its device model entry. This call will create a directory with the given name under /sys/class/firmware and populate it with two files called loading and data. A hotplug event is then generated which, presumably, will inspire user space to find some firmware to feed the device.&lt;/p&gt;
&lt;p&gt;The resulting user-space process starts by setting the loading sysfs attribute to a value of one. The actual firmware can then be written to the data file; when the process is complete, the loading file should be set back to zero. At that point, request_firmware() will return to the driver with fw pointing to the actual firmware data. The user-space process can chose to abort the firmware load by writing -1 to the loading attribute.&lt;/p&gt;
&lt;p&gt;When the driver has loaded the firmware into its device, it should free up the associated memory with:&lt;br /&gt;
    void release_firmware(struct firmware *fw);&lt;/p&gt;
&lt;p&gt;
Though, this is specific to firmware loading, but is sometimes used for passing large amount of data to the kernel space.&lt;/p&gt;
&lt;/html&gt;&lt;/p&gt;
</description>
 <pubDate>Sun, 07 Jan 2007 20:24:32 -0800</pubDate>
</item>
<item>
 <title>Kernel mode HTML parser</title>
 <link>http://www.nirendra.net/cms/linux/khtmlparser</link>
 <description>&lt;html&gt;
System calls are means through which user level processes can communicate with kernel. Though Linux kernel allows kernel code to invoke system calls.&lt;p/&gt;
This is not generally considered a good idea in terms of debugging, maintaining and porting the code. But if performance or size are absolutely necessary porting applications on kernel seems to have huge benefits.&lt;p/&gt;
The gain of performance comes for costly user/kernel space transition and associated data passing.
&lt;p/&gt;&lt;p/&gt;
In order to measure timing benefits I implemented a rudimentary HTML parser in kernel space and a similar parser in userland.
&lt;p/&gt;
Code snippets from kernel module for reading a html file and removing the html tags is as follows(Complete source available &lt;a href="http://www.nirendra.net/cms/src/khtmlparser.c" target=_blank&gt;here&lt;/a&gt;):
&lt;pre&gt;
	best = ~0;
	measure_time(0);
	tsc = best;
	printk(KERN_INFO "Time taken for no code: %ld\n", tsc);

	/*Measure time of reading a file*/
	/*Prepare to invoke system call*/
	fs = get_fs();	/*Save previous value*/
     	set_fs(get_ds());	/*use kernel limit*/
	/*Call system call*/
	fd = filp_open(FILE_NAME, O_RDONLY, 0600);

	if(fd-&gt;f_op &amp;&amp; fd-&gt;f_op-&gt;read){
	    best = ~0;
	    measure_time(fd-&gt;f_op-&gt;read(fd, html, 1000, &amp;fd-&gt;f_pos));
	    printk(KERN_INFO "Time taken by read: %ld\n", best-tsc);
	    parse_html(html, text); /*Parse html to text*/
	    printk(KERN_INFO "Parsed text: %s", text);
	}
&lt;/pre&gt;
&lt;p/&gt;
This code parses the HTML by calling an ugly parser parse_html(Defined in common.h available &lt;a href="http://www.nirendra.net/cms/src/common.h" target=_blank&gt;here&lt;/a&gt;) which strips out the html tags.
&lt;p/&gt;
While part of similar userland code is as follows(Complete source available &lt;a href="http://www.nirendra.net/cms/src/uhtmlparser.c" target=_blank&gt;here&lt;/a&gt;):
&lt;pre&gt;
	/*time rdsc, i.e. no code*/
	best =~ 0;
	measure_time(0);
	tsc = best;
	printf("Time taken for no code: %ld\n", tsc);
	
	/*Measure time for reading a file*/
	fd = open(FILE_NAME, O_RDONLY, 0600);
	if(!fd){
	    printf("Error opening file\n");
	    exit(1);
	}
	best = ~0;
	measure_time(read(fd, html, 1000));
	printf("Time taken by read: %li\n", best - tsc);
	parse_html(html, text);
	printf("Parsed text: %s\n", text);
&lt;/pre&gt;
&lt;p/&gt;
I collected following read time for first 5 runs:

&lt;TABLE border = "1"&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;B&gt;Clock ticks/run&lt;/B&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;B&gt;1st Run&lt;/B&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;B&gt;2nd Run&lt;/B&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;B&gt;3rd Run&lt;/B&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;B&gt;4th Run&lt;/B&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;B&gt;5th Run&lt;/B&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;B&gt;Kernel HTML Parser&lt;/B&gt;&lt;/TD&gt;
&lt;TD&gt;246&lt;/TD&gt;
&lt;TD&gt;366&lt;/TD&gt;
&lt;TD&gt;245&lt;/TD&gt;
&lt;TD&gt;351&lt;/TD&gt;
&lt;TD&gt;246&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;B&gt;Userland HTML Parser&lt;/B&gt;&lt;/TD&gt;
&lt;TD&gt;675&lt;/TD&gt;
&lt;TD&gt;683&lt;/TD&gt;
&lt;TD&gt;561&lt;/TD&gt;
&lt;TD&gt;683&lt;/TD&gt;
&lt;TD&gt;675&lt;/TD&gt;
&lt;TR&gt;
&lt;/TABLE&gt;
Thus, file read time in kernel outperforms userland code by around 3 times.&lt;p/&gt; 
There are couple of interesting possibilities on porting application requiring high performance to kernel space. There already exists few including a &lt;a href="http://www.fenrus.demon.nl/" target=_blank&gt;Kernel mode web server&lt;/a&gt;. Ofcourse, the crash for a not properly tested module could cost more than their userland counterparts.
&lt;/html&gt;
</description>
 <pubDate>Sun, 23 Jul 2006 03:04:01 -0700</pubDate>
</item>
<item>
 <title>ReiserFS: To be or not to be</title>
 <link>http://www.nirendra.net/cms/linux/reiserfs</link>
 <description>&lt;p&gt;There seem to be quite alot of debate going on &lt;a href="http://lkml.org/" target=_blank&gt;LKML&lt;/a&gt; over whether to include ReiserFS in kernel or not.&lt;br /&gt;
ReiserFS has been into problems over couple of things. Firstly, the way it was pushed by Hans Reiser was not liked by many. &lt;/p&gt;
&lt;p&gt;Then there were talks over reliability of file system. As someone pointed out:&lt;br /&gt;
"The fact that reiserfs uses a single B-tree to store all of its data means that very entertaining things can happen if you lose a sector containing a high-level node in the tree.It's even more entertaining if you have image files (like initrd files) in reiserfs format stored in reiserfs, and you run the recovery program on the filesystem."&lt;/p&gt;
&lt;p&gt;Another problem with ReiserFS is it's quest to integrate everything within filesystem. As an example it has plugins that can  alter the symantics of files, like making files into directories inside which you could see meta-files like file/uid and file/size which contained meta-data and such accessible as normal files to all the unix tools. You could get things like chmod by just doing&lt;br /&gt;
'echo root &gt;file/owner'.&lt;/p&gt;
&lt;p&gt;Whether this is a good idea is quite debatable, as it is being long believed in Unix world that do one thing well and keep it simple. Next step in this direction could to parse the zip archives in kernel space for doing a 'cd linux-2.6.17.tar.bz2'(or is it already implemented) which does not sound like a good idea.&lt;br /&gt;
Moreover, this may require couple of changes in VFS.&lt;/p&gt;
&lt;p&gt;I recently noticed missing &lt;a href="http://www.opengroup.org/onlinepubs/009695399/functions/readv.html" target=_blank&gt;readv&lt;/a&gt; system call in ReiserFS while calling it from kernel space.&lt;/p&gt;
&lt;p&gt;Someone wrote an article on why ReiserFS is not included in kernel:&lt;br /&gt;
&lt;a href="http://wiki.kernelnewbies.org/WhyReiser4IsNotIn" target=_blank&gt;http://wiki.kernelnewbies.org/WhyReiser4IsNotIn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Although there seem to have been quite alot of development going on &lt;a href="http://www.namesys.com/" target=_blank&gt;ReiserFS&lt;/a&gt; and it is installed as part of &lt;a href="http://en.opensuse.org/" target=_blank&gt;SUSE&lt;/a&gt; distributions. It seems some of the ideas implemented by this file system are unique and may be useful to other filesystems implemented in the future.&lt;/p&gt;
</description>
 <pubDate>Mon, 17 Jul 2006 10:16:50 -0700</pubDate>
</item>
<item>
 <title>Java binary on Linux</title>
 <link>http://www.nirendra.net/cms/java/linux</link>
 <description>&lt;p&gt;Recently noticed support for Java binary on Linux kernel which means you can execute your Java applications simply as:&lt;br /&gt;
$ ./HelloWorld.class&lt;br /&gt;
And this can be achieved in following few steps(Assuming JDK is already installed and CLASSPATH properly configured):&lt;/p&gt;
&lt;li&gt; Recompile your kernel with CONFIG_BINFMT_MISC option. This can be achieved as follows:&lt;br /&gt;
#cd /usr/src/linux; make menuconfig&lt;br /&gt;
Select "Executable file formats / Emulations" -&gt; Kernel Support for MISC binaries&lt;br /&gt;
Save and exit. Follow /usr/src/linux/README for further information on compiling the kernel.&lt;br /&gt;
BINFMT_MISC can also be compiled as a independent module and inserted manually. This feature allows you to invoke almost any binary by simply typing it's name in shell. Refer to /usr/src/linux/Documentation/binfmt_misc.txt for more information on this.
&lt;/li&gt;
&lt;li&gt;
Mount binfmt_misc and setup for Java executable:&lt;br /&gt;
# mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc&lt;br /&gt;
# echo ':Java:M::\xca\xfe\xba\xbe::/usr/local/bin/javawrapper:' &gt; /proc/sys/fs/binfmt_misc/register
&lt;/li&gt;
&lt;li&gt;
Now execute the following:&lt;br /&gt;
# cat /usr/src/linux/Documentation/java.txt |grep -m3 -A 195 "Cut here"&lt;br /&gt;
and copy the first script as /usr/local/bin/javawrapper. This script will add the class file to classpath.&lt;br /&gt;
Compile the second C program as follow:&lt;br /&gt;
# gcc -O2 -o javaclassname javaclassname.c&lt;br /&gt;
# cp javaclassname /usr/local/bin&lt;br /&gt;
This executable is required to find the fully qualified class name i.e. for class Test.class in package foo.bar, it will return foo.bar.Test
&lt;/li&gt;
&lt;li&gt;
5. And now the fun part. Just chmod any Java class to execute it.&lt;br /&gt;
# javac HelloWorld.java&lt;br /&gt;
# chmod +x HelloWorld.class&lt;br /&gt;
# ./HelloWorld.class
&lt;/li&gt;
&lt;p&gt;I gathered this from /usr/src/linux/Documentation/java.txt which can be referred for more information.&lt;/p&gt;
</description>
 <pubDate>Tue, 11 Jul 2006 09:26:07 -0700</pubDate>
</item>
<item>
 <title>ISPs in India</title>
 <link>http://www.nirendra.net/cms/india/isp</link>
 <description>&lt;p&gt;&lt;html&gt;
&lt;p&gt;An &lt;a href="http://en.wikipedia.org/wiki/Internet_service_provider" target=_blank&gt;Internet service provider&lt;/a&gt; (ISP, also called Internet access provider or IAP) is a business or organization that offers users access to the Internet and related services. Many but not all ISPs are telephone companies.&lt;/p&gt;
&lt;p&gt;Internet access reached India in the early 90’s. &lt;a href="http://www.ernet.in/" target=_blank&gt;ERNet&lt;/a&gt;, a division of Department of Electronics (DoE), and &lt;a href="http://home.nic.in/" target=_blank&gt;NICNet&lt;/a&gt; (Department of Statistics) were the pioneers for providing this service. Both ERNet and NICNet were Government bodies, though had very different charters and growth histories.&lt;/p&gt;
&lt;p&gt;The ERNet (Educational and Research Network) project was designed to provide Internet connectivity to the premier educational and research institutions of India, while NICNet was assigned the provision of Internet services primarily to Government departments and organizations. ERNet grew from a low-bandwidth, unreliable, shell1 and UUCP2 based Internet service to become the first to provide full TCP-IP3 access to dial-up modem4 customers through SLIP5 accounts around 1993.&lt;/p&gt;
&lt;p&gt;NICNet began with shell-only access, at 2400 BPS, but started providing high speed TCP-IP access through 64 KBPS V-SAT links.&lt;/p&gt;
&lt;p&gt;ERNet and NICNet are thus India’s first ISPs, though their operations have been shackled by the restrictions put upon them by Government regulations and policies of the &lt;a href="http://www.dot.gov.in/" target=_blank&gt;Department of Telecom (DoT)&lt;/a&gt;. Despite this, they were doing quite well in providing the essential Internet services to an Internet-starved India, until the advent of VSNL Internet services and the restrictive clampdown that followed.&lt;/p&gt;
&lt;p&gt;Another provider of Internet services that preceded VSNL is the Software Technology Parks of India (STPI) Internet service. This service was permitted only for a restricted audience, the software exporters falling under the STP scheme of the DoE. STPI has been providing high-end Internet services through leased lines and dial-up links, in and around several of the Parks, including Bangalore, Hyderabad and NOIDA, through the respective SoftNET networks.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;I&gt;Entry of VSNL..&lt;/I&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;On 15th August 1995, VSNL launched the Gateway Internet Access Service, for providing public Internet access. Initially, DoT allowed VSNL the license to operate this service only in the 4 metros. By the VSNL charter, it is supposed to only provide &lt;a href="http://www.ispai.in/guide_international_gateway.htm" target=_blank&gt;international telecom gateways&lt;/a&gt;, not end-user services. Thus the name "Gateway Service" was used to cover up for direct service provision.&lt;/p&gt;
&lt;p&gt;Starting with only dial-up shell and PPP8 access in the 4 metros, VSNL followed with leased-line access to subscribers, followed by the setting up of points of presence (POP) in Bangalore and Pune. The DoT has turned a blind eye to these license violations, and tacitly helped VSNL with post-facto ad hoc permissions along the way.&lt;/p&gt;
&lt;p&gt;VSNL has, since the inception of GIAS, portrayed itself in the press as India’s only legitimate ISP, while forcing many restrictions on the other ISPs through DoT regulations and the telecom policy. The Telegraph Act of 1885, a pre-independence British law, has been repeatedly invoked by VSNL and interpreted to give itself extended powers while forcing the other ISPs to curtail their operations.&lt;/p&gt;
&lt;p&gt;ISP monopoly never ceased to exist even after other players entering Indian market. There have been incidents of individuals facing problems regarding good quality internet connection.&lt;br /&gt;
Quoting an incident from &lt;a href="http://broadbandblog.in/510/tata-broadband-looting-customers/" target=_blank&gt;Broadband blog&lt;/a&gt;:&lt;br /&gt;
"Well, to cut a long story short, this person works with a respectable computer company. He wanted to have a connection of his own to work. Since he lives in a place where there is no other service provider, he chose to trust his money in Tata’s brand name. However, despite repeated calls and efforts, he couldn’t trace the “executive” for his&lt;br /&gt;
connection. "&lt;/p&gt;
&lt;p&gt;These and similar incidents might make one feel to go about opening their own ISPs.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://findarticles.com/p/articles/mi_m0BNG/is_2005_May_19/ai_n13760143" target=_blank&gt;Entanet&lt;/a&gt;, a supplier of business-to-business Internet services, has announced sometime back, that it is to offer a 'Virtual Pipe' option that takes advantage of a company's infrastructure. The Virtual Pipe enables ISPs, companies, societies, local authorities, schools, or any organization, to offer its own independently managed service.&lt;/p&gt;
&lt;p&gt;Aimed at organizations that envisage connecting upwards of 50 users, customers of the service will have their own set of IP addresses and &lt;a href="http://www.freeradius.org/" target=_blank&gt;Radius server&lt;/a&gt; and bill their own customers directly, while Entanet manages all of the traffic and infrastructure behind the scenes.&lt;/p&gt;
&lt;p&gt;Talking about Indian ISP is going to take time. Meanwhile, would like to hear your experiences about it.&lt;/p&gt;
</description>
 <pubDate>Wed, 17 May 2006 11:06:04 -0700</pubDate>
</item>
<item>
 <title>Barcamp Pune</title>
 <link>http://www.nirendra.net/cms/barcamppune</link>
 <description>&lt;p&gt;Foo Camp is an invite-only event for technology luminaries hosted in Sebastopol, CA at the O’Reilly headquarters. Though everyone is not invited in the event.&lt;br /&gt;
In response to criticism of Foo Camp, &lt;a href="http://barcamp.org" target=_blank&gt;BarCamp&lt;/a&gt; was created as an open, welcoming, once-a-year event for geeks to camp out for a couple of days with wifi and smash their brains together.&lt;/p&gt;
&lt;p&gt;It is an intense event with discussions, demos and interaction from attendees. Attendees must give a demo, a session, or help with one.&lt;/p&gt;
&lt;p&gt;There is going to be a barcamp in Pune shortly. Visit this link to register for the event &lt;a href="http://barcamp.org/BarCampPune" target=_blank&gt;http://barcamp.org/BarCampPune&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I will be there, will you be?&lt;/p&gt;
</description>
 <pubDate>Fri, 05 May 2006 22:58:39 -0700</pubDate>
</item>
<item>
 <title>Mobber with online presence launched today</title>
 <link>http://www.nirendra.net/cms/mobber</link>
 <description>&lt;html&gt;
&lt;p&gt;Presence is defined as knowing that a person is online, and on a connected device with a certain device profile. Each part of that definition is critical to fully understanding presence and how it is changing, and will continue to change, the face of business communications.&lt;br /&gt;&lt;br/&gt;
The most common use of presence today is the status indicator displayed on most instant messaging clients. A more simple everyday example is the 'on-hook' or 'off-hook' state of a telephone receiver, resulting in a distinctive ring tone for caller. Some states that offer extended information on the user's availiability are "free for chat", "away", "do not disturb", and "out to lunch", which are often seen on many modern instant messaging clients.&lt;br /&gt;&lt;br/&gt;
AOL Instant Messenger, Antepo, Skype, Microsoft Live Communication (LCS) Server, Lotus Instant Messaging and Web Conferencing, and other products provide facilities for presence management today. They differ in how they deliver this functionality and the audience for which this function is made available. But they are all similar in that presence is only conveyed to those on the same network.&lt;br /&gt;&lt;br/&gt;
However, in order to realize the full potential of presence it will have to be relayed in a consistent manner, regardless of the network that the individual may be connected to. Doing this is going to require new products based on standards, and efforts to make that happen are underway now.&lt;br /&gt;&lt;br/&gt;
There are several groups trying to standardize the presence protocol. XML based &lt;a href="http://www.xmpp.org" target=_blank&gt;XMPP(Extensible Messaging and Presence Protocol)&lt;/a&gt; by &lt;a href="http://www.jabber.org"&gt;Jabber&lt;/a&gt;, was approved in 2004 by the Internet Engineering Task Force (&lt;a href="http://www.ietf.org/" target=_blank&gt;IETF&lt;/a&gt;) as an industry standard protocol, and is used in private enterprise instant messaging systems. Boeing selected XMPP to provide chat and presence services for the U.S. Army's Future Combat Systems (FCS) initiative.&lt;br /&gt;&lt;br/&gt;
&lt;a href="http://www.ietf.org/rfc/rfc3261.txt" target=_blank&gt;SIP&lt;/a&gt; stands for Session Initiation Protocol, and is a signaling protocol used to establish sessions in an IP-based network. The SIP protocol is stewarded by the IETF and is being broadly extended and enhanced to support the requirements of secure instant messaging and presence management (&lt;a href="http://www.softarmor.com/simple/" target=_blank&gt;SIMPLE&lt;/a&gt;) . Another leading standard (&lt;a href="http://www.oasis-open.org/home/index.php" target=_blank&gt;OASIS&lt;/a&gt;), also called the Liberty Alliance Project has released a specification for a presence management Web service within the context of the Liberty Alliance, a federated identity management solution.&lt;br /&gt;&lt;br/&gt;
Presence is a much hyped word in instant messaging domain. One of the startling factoid is that 40 percent of business IM use leads to a phone call. This points out that the core value of IM isn't messaging, but presence, that capability integral to IM systems that lets others know if you are online and available.&lt;/p&gt;
Will Web 2.0 change the definition of online presence? Noticed &lt;a href="http://www.mobber.com" target=_blank&gt;Mobber&lt;/a&gt; today. It shows you who's on a particular web page, allowing you to chat with them privately or in a group. It's their first day and they are already rocking.&lt;br /&gt;&lt;br/&gt;
For anyone who wants to chat with me or with anyone else looking at this page, I've added a Mobber bar to the bottom of the site - it's pretty slick. Talk to each other or ping me.&lt;/p&gt;
</description>
 <pubDate>Fri, 24 Mar 2006 04:54:57 -0800</pubDate>
</item>
<item>
 <title>Entrepreneurs in India</title>
 <link>http://www.nirendra.net/cms/india/entrepreneurs</link>
 <description>&lt;html&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;Who is an Entrepreneur&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
Wikipedia introduces &lt;a href="http://en.wikipedia.org/wiki/Entrepreneurial" target=_blank&gt;Entrepreneur&lt;/a&gt; as a loanword from the French language that refers to a person who undertakes and operates a new venture, and assumes some accountability for the inherent risks. Being in business or being an entrepreneur is about taking risks and confronting challenges&lt;br /&gt;&lt;br/&gt;
Entrepreneurs build companies that are specifically crafted to exploit a particular opportunity. This gives them an advantage over older companies that were designed in response to challenges of the past and must change to adapt to today’s requirements. Entrepreneurs can build new companies. They can also rejuvenate existing companies via buyouts and turnarounds. They can also build new companies inside existing companies, which can be called corporate entrepreneurship.&lt;br /&gt;&lt;br/&gt;
The will to spot opportunities and take risks in order to realize them is part of a person’s overall makeup, which is partly innate and partly a product of his upbringing. The best way to learn how to be an entrepreneur is to work at the side of a successful one. The problem is that entrepreneurs are understandably reluctant to hire those who cannot help them immediately. It appears that the best way to learn this is to work for a startup which offers more opportunities to learn Entrepreneural skills.&lt;br /&gt;&lt;br/&gt;
Risk-taking and opportunism go along with frugality. Really good entrepreneurs squeeze as much as possible out of limited amounts of cash. They leverage the money of others, and never invent the wheel when a good, cheap one is available in the marketplace. By keeping the rate at which they burn cash low, entrepreneurs can try a lot of ideas, most of which do not work, without losing because they ran out of money before they hit upon a workable value proposition.&lt;br /&gt;&lt;br/&gt;
Many "high-profile" entrepreneurial ventures seek &lt;a href="http://www.vfinance.com/" target=_blank&gt;venture capital or angel funding&lt;/a&gt; in order to raise capital to build the business. Many kinds of organizations now exist to support would-be entrepreneurs, including specialized government agencies, business incubators, science parks, and some NGOs.&lt;br /&gt;&lt;br/&gt;
Venture capital investments generally are high risk investments but offer the potential for above average returns. An angel investor (business angel in the UK, or simply angel) is an affluent individual who provides capital for a business start-up, usually in exchange for ownership equity. Unlike venture capitalists, angels typically do not manage the pooled money of others in a professionally-managed fund. However, angel investors often organize themselves into angel networks or angel groups to share research and pool their own investment capital.&lt;br /&gt;&lt;br/&gt;
&lt;b&gt;&lt;i&gt;in India...&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
According to &lt;a href="http://www.gemconsortium.org" target=_blank&gt;Global Enterpreneurship Monitor(GEM) project India Report 2001&lt;/a&gt;, Due to social rigidities, Indian women are half as likely as men to be entrepreneurs. Younger, moderately educated, and reasonably well-off people are more likely to be entrepreneurs. The types of startups encountered (established within the last 42 months) were mostly consumer-oriented, comprising of trading activities; most have just about a handful of employees. Main sources of funds in decreasing order were personal, financial institutions, close family members, and government programs.&lt;br /&gt;
The wheels of India's bureaucracy still turn too slow for entrepreneurs, the educational system is not good at promoting entrepreneurial skills and attitudes, Indian institutes have not been as good as multinationals in R&amp;#038;D transfer, and India's physical infrastructure ranks lowest among the countries surveyed in the report - all prime areas for study and improvement by policymakers, academics and business leaders.&lt;br /&gt;&lt;br/&gt;
According to &lt;a href="http://economictimes.indiatimes.com/articleshow/msid-1206935,curpg-1.cms" target=_blank&gt;Vivek paul, former CEO Wipro&lt;/a&gt; "The stuff that’s been done in India is staggering in terms of range and depth. I don’t think that anyone can say that the work we’re doing is trivial. But the work we’re doing is under somebody else’s direction. Let me put it this way: For an engineer, there’s a big difference between discovering something, versus discovering something that you know somebody else says can be done. That difference is the difference between the service business and the products business. In the service business, what you’re doing is great stuff, but it is in some sense something that someone else told you to do. "&lt;br /&gt;
He further argues "If you look at that service business as leading to innovation and product outcomes, the answer is absolutely not. Frankly, I feel that when people work in a service business like ours, it’s almost like we give them a lobotomy. I don’t think - and I hope I’m wrong - you will see a single successful product startup coming out of people who were working at Wipro or any other similar companies. You’ll find that innovation comes from people who worked for Intel India; they’ll go off and come up with a new chip. Or someone at Cisco India will come up with a new router. Why that is, God knows. But I truly believe that there is some sort of inadvertent lobotomy that we give people. "&lt;br /&gt;&lt;br/&gt;
Is India a right place to start a startup? Following are few interesting observations:&lt;br /&gt;
1. People: India is a land of technologists. It is the best place for techies with similar interests to combine their skills and innovate than in any other countries.&lt;br /&gt;
2. Funding: Indian startups can survive for much longer time than in any other countries looking at the limited amount of cash requirement for running business here.&lt;br /&gt;&lt;br/&gt;
Does India lacks Entrepreneurship skills? India Venture Challenge organized by The Draper Fisher Jurvetson (DFJ) and TiE (The Indus Entrepreneurs) met with a stupendous response and saw participation of 125 budding and aspiring entrepreneurial teams from across India, representing both new ventures and existing early stage businesses.&lt;br /&gt;
According to Tim Draper, Founder and Managing Director of DFJ,“Entrepreneurial talent abounds in India and needs the right atmosphere and encouragement for the skills to be honed and met with success."&lt;br /&gt;&lt;br/&gt;
I believe it is required to create right environment to create successful business builders in India. To do this India should be focusing on following areas:&lt;br /&gt;
1. Create the right environment for success: Entrepreneurs should find it easy to start a business. To do so, most Indians would start slow with capital borrowed from family and friends, the CEO playing the role of salesman, a professional team assembled months or perhaps years after the business was created, and few, if any, external partners. Compare this with a start-up in the Silicon Valley: a Venture Capitalist (VC) or angel investor would be brought in early on; a professional management team would drive the business; a multi functional team would be assembled quickly; and partnerships would be explored early on to scale up the business.&lt;br /&gt;
To a large measure, culture shapes this style. Silicon Valley is abuzz with ideas to build global businesses; deals are continually being negotiated, teams are pulled together and partners are identified. There is almost unlimited access to multiple VCs and angel investors. Critical support services abound, including professional managers, legal firms, venture capitalists, angel investors, and placement agencies. Combine this with excellent infrastructure – connectivity, communication, and office space – and getting started is easy.&lt;br /&gt;
2. Ensure that entrepreneurs have access to the right skills: A survey McKinsey &amp;#038; Company conducted in 2000 revealed that most Indian start-up businesses face two skill gaps: entrepreneurial (how to manage business risks, build a team, identify and get funding) and functional (product development know-how, marketing skills, etc.). In other countries, entrepreneurs either gain these skills by hiring managers or have access to “support systems” such as universities or other institutions that may nurture many regional businesses. In addition, business schools give young graduates the skills and knowledge required for business today.&lt;br /&gt;
3. Ensure that entrepreneurs have access to “smart” capital: For a long time, Indian entrepreneurs have had little access to capital. It is true that in the last few years, several Venture Funds have entered the Indian market. And, while the sector is still in its infancy in India, VCs are providing capital as well as critical knowledge and access to potential partners, suppliers, and clients across the globe. However India has only a few angel investors who support an idea in the early stages before VCs become involved.&lt;br /&gt;
4. Enable networking and exchange: Entrepreneurs learn from experience - theirs and that of others. Much of the success of Indians in Silicon Valley is attributed to the experience, sharing and support TIE members have extended to young entrepreneurs.&lt;/p&gt;</description>
 <pubDate>Sun, 19 Mar 2006 20:01:24 -0800</pubDate>
</item>
<item>
 <title>My experiments with iPod</title>
 <link>http://www.nirendra.net/cms/ipod/linux</link>
 <description>&lt;p&gt;&lt;B&gt;&lt;I&gt;What is this iPod&lt;/I&gt;&lt;/B&gt;&lt;br /&gt;
&lt;a href="http://www.apple.com/ipod" target=_blank&gt;iPod&lt;/a&gt; is a brand of portable digital audio player designed by Apple computer. The first three generations of iPod use two ARM 7TDMI-derived CPUs running at 90 MHz, while later models have variable speed chips with a peak of 80 MHz to save battery life.&lt;/p&gt;
&lt;p&gt;&lt;B&gt;&lt;I&gt;Is this an article on iPod&lt;/I&gt;&lt;/B&gt;&lt;br /&gt;
This article is intended for iPod users on Linux and also for Linux users on iPod. &lt;/p&gt;
&lt;p&gt;&lt;B&gt;&lt;I&gt;Locating your iPod&lt;/I&gt;&lt;/B&gt;&lt;br /&gt;
Before getting started with using iPod on Linux, the first step would be to locate the iPod on Linux. After connecting the iPod with USB port, check the location of iPod:&lt;/p&gt;
&lt;p&gt;# cat /proc/scsi/scsi&lt;br /&gt;
Attached devices:&lt;br /&gt;
Host: scsi0 Channel: 00 Id: 00 Lun: 00&lt;br /&gt;
Vendor: Apple Model: iPod Rev: 1.50&lt;br /&gt;
Type: Direct-Access ANSI SCSI revision: 02&lt;/p&gt;
&lt;p&gt;scsi0 means that iPod is connected to /dev/sda, scsi1 means that iPod is connected to /dev/sdb and so on.&lt;/p&gt;
&lt;p&gt;I am assuming that /dev/sda is used throughout this article.&lt;/p&gt;
&lt;p&gt;&lt;B&gt;&lt;I&gt;Mounting and unmounting iPod&lt;/I&gt;&lt;/B&gt;&lt;br /&gt;
Now is the time to start exploring iPod. For this we need to mount the iPod on Linux:&lt;/p&gt;
&lt;p&gt;# mkdir /mnt/myiPodSongs&lt;br /&gt;
# mount -t vfat /dev/sda2 /mnt/myiPodSongs&lt;/p&gt;
&lt;p&gt;After mounting iPod, the content of iPod can be browsed as a normal file system.&lt;/p&gt;
&lt;p&gt;Once done, iPod can be unmounted as follows:&lt;br /&gt;
#umount /dev/sda2&lt;/p&gt;
&lt;p&gt;&lt;B&gt;&lt;I&gt;Copying and playing music&lt;/I&gt;&lt;/B&gt;&lt;br /&gt;
Ok, this was neat, but what about playing some music.&lt;br /&gt;
On Linux, &lt;a href="http://www.gtkpod.org" target=_blank&gt;gtkpod&lt;/a&gt; can be used to copy and organize your music into playlists .&lt;/p&gt;
&lt;p&gt;After installing gtkpod, mount point of iPod can be specified from "Edit-&gt;Edit Preferences".&lt;/p&gt;
&lt;p&gt;Once the mount point is added, gtkpod let's you create and modify playlists, add or remove songs and even export your thunderbird or evolution data to the iPod.&lt;/p&gt;
&lt;p&gt;&lt;B&gt;&lt;I&gt;Podcasting&lt;/I&gt;&lt;/B&gt;&lt;br /&gt;
Podcasts are radio-style shows for  iPod. Unlike streaming audio, which requires you to listen in real time, podcasting lets you control how and when you hear your favorite shows.&lt;/p&gt;
&lt;p&gt;Some of the podcasting clients available on Linux are &lt;a href="http://amarok.kde.org" target=_blank&gt;amaroK&lt;/a&gt; or &lt;a href="http://linc.homeunix.org:8080/scripts/bashpodder/" target=_blank&gt;BashPodder&lt;/a&gt;, a command line utility to download podcasts.&lt;/p&gt;
&lt;p&gt;&lt;B&gt;&lt;I&gt;Installing Linux on iPod&lt;/I&gt;&lt;/B&gt;&lt;br /&gt;
Now that we know how to use iPod on Linux, it's time to use Linux on iPod.&lt;/p&gt;
&lt;p&gt;But why bother to install Linux on an iPod? because it includes loads of new games, movie player, voice recorder and the freedom to write new applications.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ipodlinux.org" target=_blank&gt;iPodLinux&lt;/a&gt; can be used to install Linux on iPod. First, second and third generation of iPods are officially supported by iPodLinux. &lt;/p&gt;
&lt;p&gt;After playing with installer a bit I was able to install Linux on my 60GB photo iPod.&lt;/p&gt;
&lt;p&gt;The port uses uClinux, a Linux flavor designed for devices that lack a memory management unit (MMU). While the iPod has some MMU-type capabilities, they are not sufficient to support the Linux kernel. &lt;/p&gt;
&lt;p&gt;Before installing Linux, it will be a good idea to take backup of iPod boot loader and OS, which can be restored if something goes wrong:&lt;/p&gt;
&lt;p&gt;# dd if=/dev/sda of=ipod_boot_sector_backup count=1&lt;br /&gt;
# dd if=/dev/sda1 of=ipod_os_partition_backup&lt;/p&gt;
&lt;p&gt;After the backup is done, next step would be to create a new partition on iPod to hold root file system for Linux.&lt;/p&gt;
&lt;p&gt;Partition can be created using "fdisk /dev/sda", I created following partitions for a 60GB iPod.&lt;/p&gt;
&lt;p&gt;   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/sda1   *           1           1        8001    0  Empty&lt;br /&gt;
/dev/sda2   *           6        7296    58564957+   b  W95 FAT32&lt;br /&gt;
/dev/sda3               2           5       32130   83  Linux&lt;/p&gt;
&lt;p&gt;Once partition is done to hold root filesystem, create the filesystem with an ext3 journal:&lt;/p&gt;
&lt;p&gt;# mke2fs -j /dev/sda3&lt;/p&gt;
&lt;p&gt;and adjust the maximal mount count between two filesystem checks to never:&lt;br /&gt;
# tune2fs -c 0 /dev/sda3&lt;/p&gt;
&lt;p&gt;To install Linux kernel and boot loader, download either&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sourceforge.net/project/showfiles.php?group_id=73079&amp;#038;package_id=101451&amp;#038;release_id=226112" target=_blank&gt;Official Boot loader(for 1,2 and 3 generation iPod)&lt;/a&gt;&lt;br /&gt;
or&lt;br /&gt;
&lt;a href="http://www.fivefiftyone.com/newsite/ipodbootloadercvs.tar.gz" target=_blank&gt;Boot loader for 4G photo iPod&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Also, download the latest kernel from &lt;a href="http://www.ipodlinux.org/builds/" target=_blank&gt;nightly build&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Extract the kernel and boot loader in a directory. Assuming that name of the kernel is: uclinux-2.4.24-ipod2.bin&lt;/p&gt;
&lt;p&gt;Now extract the apple image from the boot loader and create a new image including Linux and Apple OS:&lt;/p&gt;
&lt;p&gt;# ./make_fw -3 -o apple_os.bin -e 0 ipod_os_partition_backup&lt;br /&gt;
# ./make_fw -3 -o my_sw.bin -i apple_os.bin -l uclinux-2.4.24-ipod2.bin loader.bin&lt;/p&gt;
&lt;p&gt;NOTE: -3 is required in make_fw only for 4G iPods.&lt;/p&gt;
&lt;p&gt;Once this is done, we can copy the new image and Kernel modules into iPod:&lt;/p&gt;
&lt;p&gt;# dd if=my_sw.bin of=/dev/sda1&lt;br /&gt;
# mkdir /mnt/ipod&lt;br /&gt;
# mount -t ext3 /dev/sda3 /mnt/ipod&lt;br /&gt;
# cp -r lib /mnt/ipod&lt;br /&gt;
# umount /mnt/ipod&lt;/p&gt;
&lt;p&gt;For userland installation, I downloaded the &lt;a href="http://168.234.106.10/linuxos-2005-08-28-+extras.tar.bz2" target=_blank&gt;iPodLinux compress FS&lt;/a&gt; and performed the following steps to install filesystem:&lt;/p&gt;
&lt;p&gt;Mount iPod root partition&lt;/p&gt;
&lt;p&gt;# mount -t ext3 /dev/sda3 /mnt/ipod&lt;/p&gt;
&lt;p&gt;Extract the filesystem&lt;/p&gt;
&lt;p&gt;# mkdir /mnt/linuxos&lt;br /&gt;
# mount -o loop \&lt;br /&gt;
floydzilla-2005-08-28-ipod+iboy+doom.img /mnt/linuxos&lt;br /&gt;
#cp /mnt/linuxos /mnt/ipod&lt;/p&gt;
&lt;p&gt;and finally, unmount the iPod partition&lt;/p&gt;
&lt;p&gt;#umount /mnt/ipod&lt;br /&gt;
#umount /mnt/linuxos&lt;br /&gt;
#eject /dev/sda&lt;/p&gt;
&lt;p&gt;And we are done. But before you start playing Doom on iPod, it needs to be rebooted.&lt;/p&gt;
&lt;p&gt;To reboot disconnect your iPod from the USB port. If the iPod did not automatically reboot hold down the menu and the play buttons for 3 seconds to reboot it.&lt;br /&gt;
After reboot keep the back button pressed to boot Linux, otherwise the default interface will load.&lt;/p&gt;
&lt;p&gt;&lt;B&gt;&lt;I&gt;Programming your iPod&lt;/I&gt;&lt;/B&gt;&lt;br /&gt;
First thing required to compile hello world on iPod would be ofcourse a compiler.&lt;br /&gt;
But why a new compiler? because iPod have ARM processors and a cross compiler is required to compile programs for this architecture. Download the compiler for uclinux from &lt;a href="http://www.uclinux.org/pub/uClinux/arm-elf-tools/" target=_blank&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After the cross compiler is installed, next thing to do would be to write a hello iPod program.&lt;/p&gt;
&lt;p&gt;Once done, compile the program:&lt;/p&gt;
&lt;p&gt;# arm-elf-gcc -o hello hello.c -elf2flt&lt;/p&gt;
&lt;p&gt;copy the program into iPod:&lt;/p&gt;
&lt;p&gt;# mount -t vfat /dev/sda2 /mnt/myIpodSongs&lt;br /&gt;
# mkdir /mnt/myIpodSongs/myprogs&lt;br /&gt;
# cp hello /mnt/myIpod/myprogs&lt;/p&gt;
&lt;p&gt;and reboot the iPod(After unmounting the partition)&lt;/p&gt;
&lt;p&gt;# cd $HOME&lt;br /&gt;
# umount /mnt/myIpodSongs&lt;br /&gt;
# eject /dev/sda&lt;/p&gt;
&lt;p&gt;After booting into floydzilla, goto "File browser-&gt;/mnt/myprogs" and click on the "hello" to see output of hello world on iPod.&lt;/p&gt;
&lt;p&gt;Click on read more to view some of the images.&lt;/p&gt;
</description>
 <pubDate>Sun, 25 Sep 2005 14:21:55 -0700</pubDate>
</item>
<item>
 <title>Rainy Amsterdam</title>
 <link>http://www.nirendra.net/cms/Europe/amsterdam</link>
 <description>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Amsterdam" target=_blank&gt;Amsterdam&lt;/a&gt; is often referred to as one of the most colorful cities in the world. And rightly so where else do you find so many places of interest, famous museums, cozy pubs and flower markets.&lt;br /&gt;
Amsterdam is an unusual city in that it has all the advantages of a big city – culture, history, food, entertainment, good transport – with relatively few of the disadvantages: it is physically small, beautiful, relatively quiet, and largely thanks to the canals, has relatively little traffic.&lt;/p&gt;
&lt;p&gt;I reached Amsterdam last week. &lt;a href="http://www.nationsonline.org/oneworld/netherlands.htm" target=_blank&gt;Netherland&lt;/a&gt; is part of &lt;a href="http://en.wikipedia.org/wiki/Schengen_treaty" target=_blank&gt;Schengen&lt;/a&gt; countries so it is possible to visit most of the &lt;a href="http://www.visiteurope.com/" target=_blank&gt;Europe&lt;/a&gt; now. &lt;/p&gt;
&lt;p&gt;Went to Belgium this weekend, the home town of &lt;a href="http://www.lambiek.net/magazines/tintin.htm" target=_blank&gt;Tintin&lt;/a&gt;. Here are some of the pics of &lt;a href="http://www.nirendra.net/gallery/main.php?g2_view=slideshow.Slideshow&amp;#038;g2_itemId=73" target=_blank&gt;my trip to Belgium&lt;/a&gt; this weekend.&lt;/p&gt;
</description>
 <pubDate>Sun, 15 Jan 2006 18:09:14 -0800</pubDate>
</item>
<item>
 <title>Google on command line</title>
 <link>http://www.nirendra.net/cms/gcmd</link>
 <description>&lt;p&gt;In my quest for writing webservices in C, I wrote a small command line utility for collecting information from Google.&lt;/p&gt;
&lt;p&gt;Released the first (0.1) version of Gcmd this weekend. Project home page is located at  &lt;a href="http://gcmd.sf.net" target=_blank&gt;http://gcmd.sf.net&lt;/a&gt;. Being POSIX compliant as of now, it should work under variety of UNIX like Operating systems and Cygwin.&lt;/p&gt;
&lt;p&gt;Following features are currently included:&lt;/p&gt;
&lt;li&gt;Google command line search for a keyword.&lt;/li&gt;
&lt;li&gt;Compare search results for two keywords in Google.&lt;/li&gt;
&lt;li&gt;For a given URL collect the following statistics:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i.  Websites having link to this URL.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ii. Websites similar to the given URL.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iii.Website containing this URL in their page.&lt;/li&gt;
&lt;li&gt;Spelling suggestion for a word or phrase.&lt;/li&gt;
&lt;p&gt;and I am planning to add few more features.&lt;/p&gt;
&lt;p&gt;So download this utility from &lt;a href="http://prdownloads.sourceforge.net/gcmd/gcmd-0.1.tar.gz?download" target=_blank&gt;here&lt;/a&gt; and let me know what you think about it.&lt;/p&gt;
</description>
 <pubDate>Sun, 26 Jun 2005 07:52:33 -0700</pubDate>
</item>
<item>
 <title>My article in linuxgazette</title>
 <link>http://www.nirendra.net/cms/lg/proc</link>
 <description>&lt;p&gt;My article on &lt;a href="http://linuxgazette.net/115/nirendra.html" target=_blank&gt;Proc file system&lt;/a&gt; has been published in &lt;a href="http://linuxgazette.net/115/index.html" target=_blank&gt;Linux Gazette's June Issue&lt;/a&gt;.&lt;/p&gt;
</description>
 <pubDate>Fri, 03 Jun 2005 10:51:11 -0700</pubDate>
</item>
<item>
 <title>Future of blogging</title>
 <link>http://www.nirendra.net/cms/blog/future</link>
 <description>&lt;p&gt;According to &lt;a href="http://news.com.com/The+future+of+blogging/2030-1069_3-5654288.html" target=_blank&gt;news.com&lt;/a&gt;, a new blog is created every 7.4 seconds. That adds up to 12,000 new blogs a day, 275,000 posts a day and 10,800 updates an hour. &lt;a href="http://www.technorati.com" target=_blank&gt;Technorati&lt;/a&gt;, a search engine that monitors blogs, tracked more than 8 million online diaries as of March 21, 2005, up from 100,000 just two years ago.&lt;/p&gt;
&lt;p&gt;Blogging is really catching up. Indian government is also planning to &lt;a href="http://timesofindia.indiatimes.com/articleshow/1112368.cms" target=_blank&gt;open doors&lt;/a&gt; to Indian bloggers.&lt;/p&gt;
&lt;p&gt;I was wondering on how future of blogging will look like. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.blogweblog.com" target=_blank&gt;Blog Weblog&lt;/a&gt; wrote that &lt;a href="http://www.blogweblog.com/index.php?p=65" target=_blank&gt;Autoblogging&lt;/a&gt; will be the wave of future. According to them, some examples of autoblogging could be :&lt;br /&gt;
1. autoblogging by email&lt;br /&gt;
2. autoblogging via mobile phone&lt;br /&gt;
3. autoblogging in a supermarket with a PDA&lt;/p&gt;
&lt;p&gt;A new term &lt;a href="http://en.wikipedia.org/wiki/Moblog" target=_blank&gt;Moblog&lt;/a&gt; is emerging in blogging these days.&lt;br /&gt;
Recent interest in wireless blogging seems to revolve around SMS. Essentially this is e-mail blogging from a cellular phone using an SMS to E-mail gateway.&lt;br /&gt;
Though, &lt;a href="http://radio.ntwizards.net/stories/2002/03/06/bloggingAnywhere.html" target=_blank&gt;Blogging using PDA&lt;/a&gt; is also becoming common. People have started blogging using Camera phones, and there are products to even &lt;a href="http://www.intldeveloper.co.uk/news/news+for+thought/two-way+blogging+for+camera+phones.asp" target=_blank&gt;update a blog&lt;/a&gt; using phones.&lt;/p&gt;
&lt;p&gt;People are finding &lt;a href="http://radio.weblogs.com/0100368/stories/2002/09/13/whatIsAudioblogging.html" target=_blank&gt;Audio blogging&lt;/a&gt; as interesting. I recently noticed a site &lt;a href="http://www.audioblogger.com/" target=_blank&gt;audioblogger&lt;/a&gt; which seems to be an extension of &lt;a href="http://www.blogger.com" target=_blank&gt;Blogger&lt;/a&gt; and provides unlimited audio posts. Another site &lt;a href="http://www.audblog.com/" target=_blank&gt;audblog&lt;/a&gt; allows bloggers to post audio to their blogs using any phone.&lt;/p&gt;
&lt;p&gt;Talking about expressing ideas, &lt;a href="http://en.wikipedia.org/wiki/Vlog" target=_blank&gt;Video blogs&lt;/a&gt; seems to be the next extension to audio blogging. &lt;a href="http://www.vidblogs.com/" target=_blank&gt;Vidblog&lt;/a&gt; contains a collection of video blogs, and the number seemed fairly surprising to me. Search engine giant Google is also &lt;a href="http://news.bbc.co.uk/1/hi/technology/4412125.stm" target=_blank&gt;looking towards video blogging&lt;/a&gt;, they have already started &lt;a href="http://video.google.com/" target=_blank&gt;accepting videos&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;There are so many blogs on web that it becomes difficult to keep track of them. &lt;a href="http://www.rss-specifications.com/" target=_blank&gt;RSS&lt;/a&gt;, &lt;a href="http://www.atomenabled.org/" target=_blank&gt;ATOM&lt;/a&gt;, &lt;a href="http://www.w3.org/RDF/" target=_blank&gt;RDF&lt;/a&gt;,  &lt;a href="http://www.opml.org/" target=_blank&gt;OPML (Outline Processor Markup Language)&lt;/a&gt; are few of the popular specifications of syndicating and sharing weblogs. OPML is a file format which can be used to share RSS subscriptions. It can be used in RSS aggregators like &lt;a href="http://www.bloglines.com/" target=_blank&gt;Bloglines&lt;/a&gt; or &lt;a href="http://akregator.sourceforge.net/" target=_blank&gt;Akregator&lt;/a&gt; to import an OPML file to subscribe to all the feeds. &lt;/p&gt;
&lt;p&gt;Lot of &lt;a href="http://www.corporateblogging.info/" target=_blank&gt;Companies&lt;/a&gt; are encouraging their employees to blog. &lt;a href="http://googleblog.blogspot.com/" target=_blank&gt;Google&lt;/a&gt; was probably the first one to create a corporate blog, and now there are others including &lt;a href="http://blogs.msdn.com/" target=_blank&gt;Microsoft&lt;/a&gt;, &lt;a href="http://weblogs.macromedia.com" target=_blank&gt;Macromedia&lt;/a&gt;, &lt;a href="http://ysearchblog.com/" target=_blank&gt;Yahoo search&lt;/a&gt; and &lt;a href="http://blog.ask.com/" target=_blank&gt;Ask Jeeves&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With all these new changes taking place in blogging, it makes me think how it will look like in future. Adding few more points on what &lt;a href="http://weblogs.asp.net/fmarguerie/archive/2004/02/26/80366.aspx" target=_blank&gt;Fabrice&lt;/a&gt; wrote on this:&lt;br /&gt;
&lt;LI&gt;Blogging and social networking softwares will converge.&lt;/LI&gt;&lt;/p&gt;
&lt;p&gt;&lt;LI&gt;websites will become more blog like.&lt;/LI&gt;&lt;/p&gt;
&lt;p&gt;&lt;LI&gt;Corporate blogging will grow. Companies are already finding it as a way for the employees to express their thoughts and concerns.&lt;/LI&gt;&lt;/p&gt;
&lt;p&gt;&lt;LI&gt;There will be areas other than technology and politics emerging in blogs.&lt;/LI&gt;&lt;/p&gt;
&lt;p&gt;&lt;LI&gt;Based on blogger's interests, new blogging groups will start emerging.&lt;/LI&gt;&lt;/p&gt;
&lt;p&gt;&lt;LI&gt;New business models for blogging will emerge. Companies like google, yahoo, msn, bloglines are already working on providing blogging services, and it might take form of something similar to having a premium blogging account with more space and more features with some extra charges.&lt;/LI&gt;&lt;/p&gt;
</description>
 <pubDate>Wed, 17 May 2006 11:17:14 -0700</pubDate>
</item>
<item>
 <title>Harmony in Java community</title>
 <link>http://www.nirendra.net/cms/apache/harmony</link>
 <description>&lt;p&gt;Apache came up with a &lt;a href="http://mail-archives.apache.org/mod_mbox/incubator-general/200505.mbox/%3CCA4BEB82-3D84-457D-9531-1477DD749919@apache.org%3E" target=_blank&gt;proposal&lt;/a&gt; to develop a open source implementation of Java called Harmony. &lt;/p&gt;
&lt;p&gt;Though, &lt;a href="http://mail-archives.apache.org/mod_mbox/incubator-general/200505.mbox/%3CE3603144-2C26-4C31-896D-6CC7445A63EB@apache.org%3E" target=_blank&gt;Harmony FAQ&lt;/a&gt; shows that they are going to have tough time making sure that they are not voilating Sun's license.&lt;/p&gt;
&lt;p&gt;Talking about license, there have been lot of &lt;a href="http://www.gnu.org/philosophy/java-trap.html" target=_blank&gt;discussions&lt;/a&gt; on Sun's license earlier also. There were efforts to develop a free Java implementation including &lt;a href="http://www.gnu.org/software/classpath/" target=_blank&gt;GNU classpath&lt;/a&gt; and &lt;a href="http://www.kaffe.org/" target=_blank&gt;Kaffe&lt;/a&gt; but both of these were licensed under GPL.&lt;/p&gt;
&lt;p&gt;The special thing about Harmony is that it is going to be released under Apache's license. &lt;/p&gt;
&lt;p&gt;Though initiative of developing a free VM raises few thoughts:&lt;/p&gt;
&lt;p&gt;&lt;LI&gt; Will it always be released at the same time as a new release of Java by Sun?&lt;br /&gt;
I think not for now atleast. As it appears that development of Java VM is not a small task and to catch up with current state Java VM should take &lt;a href="http://wiki.apache.org/harmony/" target=_blank&gt;quite alot of time&lt;/a&gt;.&lt;/LI&gt;&lt;/p&gt;
&lt;p&gt;&lt;LI&gt;Can it be better than Java?&lt;br /&gt;
No, as a &lt;a href="http://www.mail-archive.com/general@incubator.apache.org/msg04779.html" target=_blank&gt;mail archieve&lt;/a&gt; indicates, it has to confirm to J2SE specification or it can not be called "Java". &lt;/LI&gt;&lt;/p&gt;
&lt;p&gt;&lt;LI&gt;What will be the future of Java if this really "catches" up?&lt;br /&gt;
There will be lot of diverse implementation of Java "like" platforms, each taking up code base of Harmony and implementing their own VM.&lt;/p&gt;
&lt;p&gt;Surely, this puts Sun into a &lt;a href="http://weblogs.java.net/blog/kgh/archive/2005/05/thoughts_on_the_1.html" target=_blank&gt;interesting position&lt;/a&gt;.&lt;br /&gt;
Sun has been trying to improve relationship with Open source people, inviting others to &lt;a href="http://jcp.org/en/jsr/detail?id=270" target=_blank&gt;develop specification&lt;/a&gt; for their next java release, or &lt;a href="https://mustang.dev.java.net/" target=_blank&gt;contribute to it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I personally feel development of Harmony will create more diversification of Java community.&lt;/p&gt;
</description>
 <pubDate>Wed, 17 May 2006 11:14:56 -0700</pubDate>
</item>
<item>
 <title>Google suggest shows incorrect result</title>
 <link>http://www.nirendra.net/cms/google/suggest</link>
 <description>I was impressed by the intersting user interface of &lt;a href="http://www.google.com/webhp?complete=1&amp;hl=en" target="_blank"&gt;Google suggest&lt;/a&gt;. It uses XMLHttpRequest for making callback to Google and updates the search results on every key press. 
&lt;p&gt;
The JavaScript code within it, calls a routine callGoogle, which makes call in the following format (On typing goog in English locale):
&lt;a href="http://www.google.com/complete/search?hl=en&amp;js=true&amp;qu=goog" target="_blank"&gt;http://www.google.com/complete/search?hl=en&amp;js=true&amp;qu=goog&lt;/a&gt;.
The URL returns two arrays, one with possible results and another with number of results.
&lt;p&gt;
This interface was developed by one of the &lt;a href="http://www.google.com/googleblog/2004/12/ive-got-suggestion.html" target="_blank"&gt;Google’s employee&lt;/a&gt; in his 20% time, which is a program where Google allows their employees to devote 20% of their working hours to any project they choose.
&lt;p&gt;
But does this really shows the right results.
&lt;p&gt;
Screenshot below shows 155,000,000 results for keyword "google" in Google complete and 281,000,000 results when searching the keyword in google.com itself.
</description>
 <pubDate>Sun, 26 Jun 2005 07:51:39 -0700</pubDate>
</item>
</channel>
</rss>
