<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9097809789340019253</id><updated>2011-10-19T23:35:32.616+05:30</updated><category term='ruby'/><category term='censor'/><category term='nio'/><category term='block'/><category term='proxy'/><category term='airtel'/><category term='poem'/><category term='icons'/><category term='wireless dongle'/><category term='connection'/><category term='one-liner'/><category term='registry'/><category term='avatar'/><category term='pune'/><category term='allahabad'/><category term='asus'/><category term='explorer'/><category term='maven'/><category term='elune'/><category term='nature'/><category term='hd2'/><category term='ByteBuffer'/><category term='http'/><category term='curl'/><category term='lion'/><category term='inauguration'/><category term='win32'/><category term='pure java'/><category term='warcraft'/><category term='bangalore'/><category term='mingw'/><category term='delhi'/><category term='fantasy'/><category term='extends'/><category term='IRC'/><category term='internet'/><category term='night elf'/><category term='MINA'/><category term='windows'/><category term='science fiction'/><category term='eclipse'/><category term='bannerghatta'/><category term='oplay'/><category term='undernet'/><category term='apache'/><category term='http server'/><category term='java'/><category term='programming'/><category term='cifs'/><category term='pythong'/><category term='elf'/><category term='bear'/><category term='tiger'/><category term='language'/><category term='india'/><category term='native'/><category term='D'/><category term='extensible'/><category term='space opera'/><category term='ntlm'/><category term='wireless'/><category term='html'/><category term='sucks'/><category term='adapter'/><category term='icon'/><category term='wireless adapter'/><category term='n10'/><category term='samba'/><category term='collections'/><category term='verse'/><category term='libcurl'/><category term='dongle'/><category term='limerick'/><category term='wildlife'/><title type='text'>Verse #  Vitriol ^ Code # Commotion</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lenkite.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lenkite.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tarun Elankath</name><uri>http://www.blogger.com/profile/16569074120665954195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_Da6pxiJweBs/TUUDkMhWMYI/AAAAAAAABXM/88r2VSsa80c/s220/normal_picture_1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9097809789340019253.post-4654066871876715970</id><published>2011-02-26T17:07:00.000+05:30</published><updated>2011-02-26T17:07:58.396+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='n10'/><category scheme='http://www.blogger.com/atom/ns#' term='dongle'/><category scheme='http://www.blogger.com/atom/ns#' term='oplay'/><category scheme='http://www.blogger.com/atom/ns#' term='asus'/><category scheme='http://www.blogger.com/atom/ns#' term='wireless'/><category scheme='http://www.blogger.com/atom/ns#' term='hd2'/><title type='text'>Wireless on the OPLay HD2</title><content type='html'>Bah..Just after I struggled and figured out how to configure a wireless dongle for my OPLay HD2, Asus comes out with a firmware that makes this a snap.&lt;br /&gt;&lt;br /&gt;So you only need to do two things now:&lt;br /&gt;&lt;br /&gt;1) Buy a wifi dongle. Choose an Asus one just to be safe.&lt;br /&gt;2) Download the firmware zip from &lt;br /&gt;ftp://ftp.asus.com.tw/pub/ASUS/Digital_Media_Player/HD2/firmware/ and follow the install instructions mentioned in the PDF inside.&lt;br /&gt;&lt;br /&gt;Thats it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9097809789340019253-4654066871876715970?l=lenkite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenkite.blogspot.com/feeds/4654066871876715970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9097809789340019253&amp;postID=4654066871876715970' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/4654066871876715970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/4654066871876715970'/><link rel='alternate' type='text/html' href='http://lenkite.blogspot.com/2011/02/wireless-on-oplay-hd2.html' title='Wireless on the OPLay HD2'/><author><name>Tarun Elankath</name><uri>http://www.blogger.com/profile/16569074120665954195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_Da6pxiJweBs/TUUDkMhWMYI/AAAAAAAABXM/88r2VSsa80c/s220/normal_picture_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9097809789340019253.post-6975732038876167066</id><published>2011-01-30T11:52:00.007+05:30</published><updated>2011-01-30T20:34:32.969+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='adapter'/><category scheme='http://www.blogger.com/atom/ns#' term='dongle'/><category scheme='http://www.blogger.com/atom/ns#' term='oplay'/><category scheme='http://www.blogger.com/atom/ns#' term='asus'/><category scheme='http://www.blogger.com/atom/ns#' term='wireless dongle'/><category scheme='http://www.blogger.com/atom/ns#' term='wireless adapter'/><category scheme='http://www.blogger.com/atom/ns#' term='wireless'/><category scheme='http://www.blogger.com/atom/ns#' term='hd2'/><title type='text'>Making Wireless work on the Asus O!Play HD2</title><content type='html'>WARNING: There might be side effects to the below that i am yet to discover.&lt;br /&gt;&lt;br /&gt;The Asus OPLay HD2 runs Linux! (2.6.12 kernel/MIPS). Woot!&lt;br /&gt;&lt;br /&gt;Power on your oPlay,  get a RJ45 cable and connect the HD2 to your wireless router. You can even take the HDMI cable and connect it to your  computer monitor (if you have an HDMI port), but this isn't really necessary.&lt;br /&gt;&lt;br /&gt;Figure out the IP Address of OPlay from the setup. Now open up a command shell in your OS and telnet to this IP address.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ telnet 192.168.10.101&lt;br /&gt;Trying 192.168.10.101...&lt;br /&gt;Connected to 192.168.10.101.&lt;br /&gt;Escape character is '^]'.&lt;br /&gt;OPLAYF9 login: root&lt;br /&gt;warning: cannot change to home directory&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BusyBox v1.1.3 (2010.06.24-09:31+0000) Built-in shell (ash)&lt;br /&gt;Enter 'help' for a list of built-in commands.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Now, plug in your wireless dongle. (I use an Asus N10). If you have your HDMI cable connected to your TV/comp monitor, it should say 'wifi-plugin detected'. But you can check this using 'ifconfig'&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/ # ifconfig&lt;br /&gt;.........&lt;br /&gt;&lt;br /&gt;wlan0     Link encap:Ethernet  HWaddr 00:26:18:A1:57:4B&lt;br /&gt;UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;RX packets:0 errors:0 dropped:10 overruns:0 frame:0&lt;br /&gt;TX packets:28 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;collisions:0 txqueuelen:1000&lt;br /&gt;RX bytes:0 (0.0 B)  TX bytes:1176 (1.1 KiB)&lt;br /&gt;..........&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Ifconfig &lt;span style="font-weight:bold;"&gt;must&lt;/span&gt; show a wireless interface or there is no point in progressing further!&lt;br /&gt;&lt;br /&gt;Now we need to make a &lt;a href="http://linux.die.net/man/5/wpa_supplicant.conf"&gt;wireless configuration file&lt;/a&gt; that provides details of our SSID, authentication, etc. The tool that reads this on Linux is called &lt;a href="http://linux.die.net/man/8/wpa_supplicant"&gt;wpa_supplicant&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now, I first take a look at whether I have some free space to put this file anywhere. (I haven't attached a USB/internal hard disk to my OPlay yet so that option is ruled out)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/usr/local/etc # df -h&lt;br /&gt;Filesystem                Size      Used Available Use% Mounted on&lt;br /&gt;/dev/root                46.9M     46.9M         0 100% /&lt;br /&gt;/dev/mtdblock/2          60.0M      2.6M     57.4M   4% /usr/local/etc&lt;br /&gt;/dev/rd/0                40.0k     40.0k         0 100% /mnt/rd&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Ok, so there is space available under '/usr/local/etc'. Teeny 'vi' is available everywhere, so I use that&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# vi /usr/local/etc/wpa.conf&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;and fill in the contents below. This is just an example, study the wpa_supplicant manual and adjust the configuration according to your specific authentication method, etc.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;network={&lt;br /&gt;ssid="mySSID"&lt;br /&gt;scan_ssid=1&lt;br /&gt;key_mgmt=WPA-PSK&lt;br /&gt;psk="myPassKey"&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Let check whether the configuration is valid. Launch wpa_supplicant in debug model with this configuration in the foreground.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# wpa_supplicant -c/usr/local/etc/wpa.conf -iwlan0 -d&lt;br /&gt;Initializing interface 'wlan0' conf '/usr/local/etc/wpa.conf' driver 'default' ctrl_interface 'N/A'&lt;br /&gt;bridge 'N/A'&lt;br /&gt;....loads of stuff&lt;br /&gt;CTRL-EVENT-CONNECTED - Connection to 00:14:bf:93:84:80 completed (auth) [id=0 id_str=]&lt;br /&gt;...&lt;br /&gt;EAPOL authentication completed successfully&lt;br /&gt;...&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Ok, let us CTRL-C and return to the command prompt. Let us ensure that that 'wpa_supplicant' is started at boot time.  The way I suggest here isn't very clean but I can't be bothered to think of a better approach now. &lt;br /&gt;&lt;br /&gt;Open up '/usr/local/etc/rcS', look for this line at the end&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/usr/sbin/initsys&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Change it to&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/usr/sbin/initsys &amp;amp;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And now adds line to start wpa_supplicant and the dhcp client (to get your wireless IP) after sleeping for 12 seconds. Modify the sleep value to whatever you think is appropriate - I found that a value of less than 12 seconds caused problems for me.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/usr/sbin/initsys &amp;amp;&lt;br /&gt;sleep 12&lt;br /&gt;/usr/local/bin/wpa_supplicant -c/usr/local/etc/wpa.conf -iwlan0 -P /var/run/wpa_supplicant.pid -B&lt;br /&gt;sleep 6&lt;br /&gt;/sbin/udhcpc -p /var/lock/udhcpc_wlan0.pid -iwlan0 -t15 -b -s /etc/udhcpc.script&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Note:&lt;/b&gt; If someone can suggest a better method, &lt;i&gt;please&lt;/i&gt; leave a comment. I am really uncomfortable about launching initsys in the background!&lt;/blockquote&gt;&lt;br /&gt;Perform a reboot.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/usr/local/etc # reboot&lt;br /&gt;/usr/local/etc # Connection closed by foreign host.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Telnet in again and check that the processes are really running&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/ # ps | grep wpa&lt;br /&gt;476 root        796 S   /usr/local/bin/wpa_supplicant -c/usr/local/etc/wpa.co&lt;br /&gt;1168 root        304 S   grep wpa&lt;br /&gt;/ # ps | grep ud&lt;br /&gt;433 root        368 S   /sbin/udhcpc -p /var/lock/udhcpc_eth0.pid -t 15 -b -s&lt;br /&gt;731 root        368 S   /sbin/udhcpc -p /var/lock/udhcpc_wlan0.pid -iwlan0 -t&lt;br /&gt;1170 root        304 S   grep ud&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Check that ip assignment to wlan0 has occurred correctly.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/ # ifconfig wlan0&lt;br /&gt;wlan0     Link encap:Ethernet  HWaddr 00:26:18:A1:57:4B&lt;br /&gt;inet addr:192.168.10.103  Bcast:192.168.10.255  Mask:255.255.255.0&lt;br /&gt;UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1&lt;br /&gt;RX packets:685 errors:0 dropped:194 overruns:0 frame:0&lt;br /&gt;TX packets:52 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;collisions:0 txqueuelen:1000&lt;br /&gt;RX bytes:97537 (95.2 KiB)  TX bytes:7774 (7.5 KiB)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Check that you can ping the inet address assigned to wlan0 from another comp in your home network&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ ping 192.168.10.103&lt;br /&gt;PING 192.168.10.103 (192.168.10.103): 56 data bytes&lt;br /&gt;64 bytes from 192.168.10.103: icmp_seq=0 ttl=64 time=1 ms&lt;br /&gt;...&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Finally, disconnect your RJ45 cable, power off/on and check that you are able to still telnet into O!Play. See the wireless client list in your router to figure out the IP. (since the OPLay UI only shows wired IP's)&lt;br /&gt;&lt;br /&gt;Now I can carry my O!Play away from my router and towards my TV! &lt;span style="font-style:italic;"&gt;Woot!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9097809789340019253-6975732038876167066?l=lenkite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenkite.blogspot.com/feeds/6975732038876167066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9097809789340019253&amp;postID=6975732038876167066' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/6975732038876167066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/6975732038876167066'/><link rel='alternate' type='text/html' href='http://lenkite.blogspot.com/2011/01/making-wireless-work-on-asus-oplay-hd2.html' title='Making Wireless work on the Asus O!Play HD2'/><author><name>Tarun Elankath</name><uri>http://www.blogger.com/profile/16569074120665954195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_Da6pxiJweBs/TUUDkMhWMYI/AAAAAAAABXM/88r2VSsa80c/s220/normal_picture_1.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9097809789340019253.post-2376419163740488649</id><published>2010-10-31T02:10:00.005+05:30</published><updated>2010-10-31T05:11:47.990+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='D'/><category scheme='http://www.blogger.com/atom/ns#' term='native'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='language'/><title type='text'>The D Programming Language Rocks</title><content type='html'>Right now I am parsing my way through Andrei Alexandrescu's 'The D programming language' and so far I am loving everything in it. This language hits a real sweet spot for a developer - tight, native executables, good integration with C libraries, a nice functional programming paradigm, generics support (*real* generics not the pseduo crap that we have in Java), support for modular programming, the no-shared-data way of doing concurrency and all the above in a clean, readable even elegant syntax. &lt;br /&gt;&lt;br /&gt;Wow - just simply wow. Of course, I need to do some *real* programming like writing some usable frameworks/apps/libraries in D before jumping the gun, but I do have to say that it looks *really* good. Considering that my beloved Java is sucky and stale nowadays and its providence in Oracular hands is murky at best, D appears to offer a clean and powerful alternative.&lt;br /&gt;&lt;br /&gt;VIM D editing support:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.vim.org/scripts/script.php?script_id=379"&gt;Syntax File&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.wikiservice.at/d/wiki.cgi?EditorSupport/VimEditor"&gt;Make and error formats&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9097809789340019253-2376419163740488649?l=lenkite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenkite.blogspot.com/feeds/2376419163740488649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9097809789340019253&amp;postID=2376419163740488649' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/2376419163740488649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/2376419163740488649'/><link rel='alternate' type='text/html' href='http://lenkite.blogspot.com/2010/10/d-programming-language-rocks.html' title='The D Programming Language Rocks'/><author><name>Tarun Elankath</name><uri>http://www.blogger.com/profile/16569074120665954195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_Da6pxiJweBs/TUUDkMhWMYI/AAAAAAAABXM/88r2VSsa80c/s220/normal_picture_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9097809789340019253.post-8537974000382057086</id><published>2010-05-28T11:03:00.001+05:30</published><updated>2010-05-28T11:05:35.772+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='one-liner'/><category scheme='http://www.blogger.com/atom/ns#' term='pythong'/><category scheme='http://www.blogger.com/atom/ns#' term='http server'/><title type='text'>Simple One Line Http Server</title><content type='html'>&lt;ul&gt;&lt;li&gt;Get Python 3.1.x.&lt;/li&gt;&lt;li&gt;Navigate to the directory that you wish to server.&lt;/li&gt;&lt;li&gt;Issue this command &lt;i&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;python -m http.server&lt;/span&gt;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; font-style: normal; "&gt;Enjoy&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9097809789340019253-8537974000382057086?l=lenkite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenkite.blogspot.com/feeds/8537974000382057086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9097809789340019253&amp;postID=8537974000382057086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/8537974000382057086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/8537974000382057086'/><link rel='alternate' type='text/html' href='http://lenkite.blogspot.com/2010/05/simple-one-line-http-server.html' title='Simple One Line Http Server'/><author><name>Tarun Elankath</name><uri>http://www.blogger.com/profile/16569074120665954195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_Da6pxiJweBs/TUUDkMhWMYI/AAAAAAAABXM/88r2VSsa80c/s220/normal_picture_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9097809789340019253.post-4484574161256812093</id><published>2009-06-12T19:02:00.005+05:30</published><updated>2009-06-12T19:17:50.617+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='space opera'/><category scheme='http://www.blogger.com/atom/ns#' term='fantasy'/><category scheme='http://www.blogger.com/atom/ns#' term='science fiction'/><title type='text'>Space Opera by David Drake</title><content type='html'>I have always been a  science-fiction/fantasy addict - it's a wonderful 'escapist' way to leave the real world behind and literally 'live' in another's imagination.&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;Having always been an "&lt;a href="http://en.wikipedia.org/wiki/Honorverse"&gt;HonorVerse&lt;/a&gt;" fan, I only recently commenced the "&lt;a href="http://en.wikipedia.org/wiki/David_Drake#RCN_Series"&gt;RCN series&lt;/a&gt;" by David Drake. It's highly enjoyable space-opera - not anything that makes a deep impact in the SF/fantasy world, but just plain fun nevertheless.&lt;/div&gt;&lt;div&gt;The books describe the adventures of Lt Leary (who gets promoted over time) and his signals officer Adele Mundy.  Adele Mundy, who is described in the books (by her peers) as the best  'information specialist' in the galaxy, is actually a hacker - and she has to be the best 'space-age' hacker that I have seen described in any space-opera fantasy. Not only that - she is an expert shot with her pistol. (And yeah - I have a small crush on her)&lt;/div&gt;&lt;div&gt;I can't help admit that I devoured all the books in the series within a fortnight and now need to wait for a l-o-o-ng time till Mr Drake comes up with something new.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9097809789340019253-4484574161256812093?l=lenkite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenkite.blogspot.com/feeds/4484574161256812093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9097809789340019253&amp;postID=4484574161256812093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/4484574161256812093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/4484574161256812093'/><link rel='alternate' type='text/html' href='http://lenkite.blogspot.com/2009/06/space-opera-by-david-drake.html' title='Space Opera by David Drake'/><author><name>Tarun Elankath</name><uri>http://www.blogger.com/profile/16569074120665954195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_Da6pxiJweBs/TUUDkMhWMYI/AAAAAAAABXM/88r2VSsa80c/s220/normal_picture_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9097809789340019253.post-721086697577647937</id><published>2008-09-13T12:46:00.007+05:30</published><updated>2008-09-13T13:11:41.491+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='airtel'/><category scheme='http://www.blogger.com/atom/ns#' term='IRC'/><category scheme='http://www.blogger.com/atom/ns#' term='allahabad'/><category scheme='http://www.blogger.com/atom/ns#' term='bangalore'/><category scheme='http://www.blogger.com/atom/ns#' term='india'/><category scheme='http://www.blogger.com/atom/ns#' term='censor'/><category scheme='http://www.blogger.com/atom/ns#' term='connection'/><category scheme='http://www.blogger.com/atom/ns#' term='block'/><category scheme='http://www.blogger.com/atom/ns#' term='undernet'/><category scheme='http://www.blogger.com/atom/ns#' term='delhi'/><category scheme='http://www.blogger.com/atom/ns#' term='pune'/><title type='text'>Airtel India blocks IRC Undernet</title><content type='html'>The Undernet group of servers in the IRC (Internet Relay Chat) system, (us.undernet.org/eu.undernet.org) has been inaccessible &lt;span style="font-style: italic;"&gt;since the last week of Augus&lt;/span&gt;t for Airtel India users. Despite many complaints by many users to Airtel India over the last 20 days, they are still in denial mode and refuse to acknowledge a problem.&lt;br /&gt;&lt;br /&gt;For the uninitiated, The Undernet is  one of the &lt;span style="font-style: italic;"&gt;oldest&lt;/span&gt; and largest realtime chat networks in the world, with approximately 19 servers connecting over 35 countries and serving more than 1,000,000 people weekly. See http://www.undernet.org/ for further information.&lt;br /&gt;&lt;br /&gt;The problem is faced by all Airtel ISP users in India across all Indian cities - Delhi, Bangalore, Allahabad, etc.&lt;br /&gt;&lt;br /&gt;Since the undernet group of servers generally has a community of vocal and gifted programmers/hackers, it is possible that Airtel has decided to 'silently' block this and claim otherwise. If so, this goes against our right to free speech and expression: http://en.wikipedia.org/wiki/Fundamental_Rights_in_India&lt;br /&gt;&lt;br /&gt;If you are an Airtel user, please register a complaint by e-mailing Airtel at your city's customer care address, the list of which are available from:&lt;br /&gt;http://www.airtel.in/wps/wcm/connect/airtel.in/Airtel.In/Home/ForYou/Broadband+Internet/Reach+Airtel#&lt;br /&gt;&lt;br /&gt;For example, the complaint e-mail for Bangalore is: &lt;a href="mailto:care.ncr@airtel.in"&gt;care.ncr@airtel.in&lt;/a&gt;&lt;!-- e --&gt;&lt;br /&gt;Please note - that page DOES NOT WORK in firefox (or any other browser apart from Internet Explorer) - another minus mark against Airtel.&lt;br /&gt;&lt;br /&gt;Users have a on-going discussion page at the Undernet forums http://forum.undernet.org/viewtopic.php?f=2&amp;amp;t=9536&amp;amp;st=0&amp;amp;sk=t&amp;amp;sd=a , but are unsure on what to do.&lt;br /&gt;&lt;br /&gt;I am a 2Mbps, un-limited download Airtel user. For India, which has poor broadband facilities, that falls into the top segment of broad-band users and I pay a bucket of money for the service.&lt;br /&gt;&lt;br /&gt;After Airtel's well known policy of padding your bills with ringtone costs you never use - (and calling them up to fix this never works), this is personally pretty much the limit for me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9097809789340019253-721086697577647937?l=lenkite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='' href='http://forum.undernet.org/viewtopic.php?f=2&amp;t=9536&amp;st=0&amp;sk=t&amp;sd=a' length='0'/><link rel='replies' type='application/atom+xml' href='http://lenkite.blogspot.com/feeds/721086697577647937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9097809789340019253&amp;postID=721086697577647937' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/721086697577647937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/721086697577647937'/><link rel='alternate' type='text/html' href='http://lenkite.blogspot.com/2008/09/airtel-india-blocks-irc-undernet.html' title='Airtel India blocks IRC Undernet'/><author><name>Tarun Elankath</name><uri>http://www.blogger.com/profile/16569074120665954195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_Da6pxiJweBs/TUUDkMhWMYI/AAAAAAAABXM/88r2VSsa80c/s220/normal_picture_1.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9097809789340019253.post-500030582501589253</id><published>2008-06-28T23:32:00.002+05:30</published><updated>2008-06-28T23:34:58.987+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='extensible'/><category scheme='http://www.blogger.com/atom/ns#' term='sucks'/><category scheme='http://www.blogger.com/atom/ns#' term='MINA'/><category scheme='http://www.blogger.com/atom/ns#' term='ByteBuffer'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='nio'/><category scheme='http://www.blogger.com/atom/ns#' term='extends'/><title type='text'>Can't extend ByteBuffer</title><content type='html'>&lt;p&gt;java.nio.ByteBuffer is &lt;u&gt;&lt;strong&gt;not&lt;/strong&gt;&lt;/u&gt; extensible and this really &lt;em&gt;&lt;strong&gt;sucks&lt;/strong&gt;&lt;/em&gt; badly. I didn't realize that till today when I thought to write a custom ByteBuffer implementation and then realized that all the constructors had only package visibility.&lt;/p&gt;  &lt;p&gt;The thing is that there are many good reasons why you would want a custom implementation of ByteBuffer . Maybe you want to &lt;em&gt;proxy&lt;/em&gt; over another ByteBuffer for example; have an optimized view over a larger ByteBuffer to reduce data copying.&lt;/p&gt;  &lt;p&gt;It seems that I was not the only one to feel this way. Check out &lt;a title="http://forum.java.sun.com/thread.jspa?threadID=693259&amp;amp;messageID=4028590" href="http://forum.java.sun.com/thread.jspa?threadID=693259&amp;amp;messageID=4028590"&gt;http://forum.java.sun.com/thread.jspa?threadID=693259&amp;amp;messageID=4028590&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It appears that not just a few people, but also whole frameworks like Apache MINA have gone ahead and constructed their own ByteBuffer replacements. Check out &lt;a title="http://mina.apache.org/report/1.1/apidocs/org/apache/mina/common/ByteBuffer.html" href="http://mina.apache.org/report/1.1/apidocs/org/apache/mina/common/ByteBuffer.html"&gt;http://mina.apache.org/report/1.1/apidocs/org/apache/mina/common/ByteBuffer.html&lt;/a&gt; which is extensible.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9097809789340019253-500030582501589253?l=lenkite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenkite.blogspot.com/feeds/500030582501589253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9097809789340019253&amp;postID=500030582501589253' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/500030582501589253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/500030582501589253'/><link rel='alternate' type='text/html' href='http://lenkite.blogspot.com/2008/06/can-extend-bytebuffer.html' title='Can&amp;#39;t extend ByteBuffer'/><author><name>Tarun Elankath</name><uri>http://www.blogger.com/profile/16569074120665954195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_Da6pxiJweBs/TUUDkMhWMYI/AAAAAAAABXM/88r2VSsa80c/s220/normal_picture_1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9097809789340019253.post-8121414334703046416</id><published>2008-05-31T14:44:00.003+05:30</published><updated>2008-05-31T14:49:15.529+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='win32'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='registry'/><category scheme='http://www.blogger.com/atom/ns#' term='explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>Access Windows Registry using 'pure' Java</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;i&gt;(rehash of my old post since all those wonderful blog post drafts I was planning to publish are unfortunately out-dated or irrelevant)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;One can use the private code of Sun's &lt;code&gt;Preferences&lt;/code&gt; API to access values of type &lt;code&gt;REG_SZ&lt;/code&gt; in the Windows Registry. Stupid hack. Maybe I should make a library out of this. I have used this soooo many times.&lt;br /&gt;&lt;/p&gt;The &lt;code&gt;java.util.prefs.WindowsPreferences&lt;/code&gt; is the concrete implementation of &lt;code&gt;AbstractPreferences&lt;/code&gt; in the Windows platform. This class provides methods like &lt;code&gt;WindowsRegQueryValueEx&lt;/code&gt;, etc. Using Reflection, one can use the methods in this class to query string values under &lt;code&gt;HKEY_LOCAL_MACHINE&lt;/code&gt; and &lt;code&gt;HKEY_CURRENT_USER&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Given below is a code-snippet that demonstrates how to get the &lt;code&gt;ProxyServer&lt;/code&gt; setting on Windows (this is what IE uses/sets) and the Internet Explorer version&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import java.lang.reflect.Method;&lt;br /&gt;import java.util.prefs.Preferences;&lt;br /&gt;&lt;br /&gt;public class JavaRegistryHack {&lt;br /&gt;&lt;br /&gt;  private static final int HKEY_CURRENT_USER = 0x80000001;&lt;br /&gt;  private static final int KEY_QUERY_VALUE = 1;&lt;br /&gt;  private static final int KEY_SET_VALUE = 2;&lt;br /&gt;  private static final int KEY_READ = 0x20019;&lt;br /&gt;&lt;br /&gt;  public static void main(String args[]) {&lt;br /&gt;      final Preferences userRoot = Preferences.userRoot();&lt;br /&gt;      final Preferences systemRoot = Preferences.systemRoot();&lt;br /&gt;      final Class clz = userRoot.getClass();&lt;br /&gt;      try {&lt;br /&gt;          final Method openKey = clz.getDeclaredMethod("openKey",&lt;br /&gt;                  byte[].class, int.class, int.class);&lt;br /&gt;          openKey.setAccessible(true);&lt;br /&gt;&lt;br /&gt;          final Method closeKey = clz.getDeclaredMethod("closeKey",&lt;br /&gt;                  int.class);&lt;br /&gt;          closeKey.setAccessible(true);&lt;br /&gt;&lt;br /&gt;          final Method winRegQueryValue = clz.getDeclaredMethod(&lt;br /&gt;                  "WindowsRegQueryValueEx", int.class, byte[].class);&lt;br /&gt;          winRegQueryValue.setAccessible(true);&lt;br /&gt;          final Method winRegEnumValue = clz.getDeclaredMethod(&lt;br /&gt;                  "WindowsRegEnumValue1", int.class, int.class, int.class);&lt;br /&gt;          winRegEnumValue.setAccessible(true);&lt;br /&gt;          final Method winRegQueryInfo = clz.getDeclaredMethod(&lt;br /&gt;                  "WindowsRegQueryInfoKey1", int.class);&lt;br /&gt;          winRegQueryInfo.setAccessible(true);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;          byte[] valb = null;&lt;br /&gt;          String vals = null;&lt;br /&gt;          String key = null;&lt;br /&gt;          Integer handle = -1;&lt;br /&gt;&lt;br /&gt;          //Query Internet Settings for Proxy&lt;br /&gt;          key = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings";&lt;br /&gt;          handle = (Integer) openKey.invoke(userRoot, toCstr(key), KEY_READ, KEY_READ);&lt;br /&gt;          valb = (byte[]) winRegQueryValue.invoke(userRoot, handle.intValue(),&lt;br /&gt;                  toCstr("ProxyServer"));&lt;br /&gt;          vals = (valb != null ? new String(valb).trim() : null);&lt;br /&gt;          System.out.println("Proxy Server = " + vals);&lt;br /&gt;          closeKey.invoke(Preferences.userRoot(), handle);&lt;br /&gt;&lt;br /&gt;          // Query for IE version&lt;br /&gt;          key = "SOFTWARE\\Microsoft\\Internet Explorer";&lt;br /&gt;          handle = (Integer) openKey.invoke(systemRoot, toCstr(key), KEY_READ, KEY_READ);&lt;br /&gt;          valb = (byte[]) winRegQueryValue.invoke(systemRoot, handle, toCstr("Version"));&lt;br /&gt;          vals = (valb != null ? new String(valb).trim() : null);&lt;br /&gt;          System.out.println("Internet Explorer Version = " + vals);&lt;br /&gt;          closeKey.invoke(Preferences.systemRoot(), handle);&lt;br /&gt;&lt;br /&gt;      } catch (Exception e) {&lt;br /&gt;          e.printStackTrace();&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;   private static byte[] toCstr(String str) {&lt;br /&gt;       byte[] result = new byte[str.length() + 1];&lt;br /&gt;       for (int i = 0; i &amp;lt; str.length(); i++) {&lt;br /&gt;           result[i] = (byte) str.charAt(i);&lt;br /&gt;       }&lt;br /&gt;       result[str.length()] = 0;&lt;br /&gt;       return result;&lt;br /&gt;   }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9097809789340019253-8121414334703046416?l=lenkite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenkite.blogspot.com/feeds/8121414334703046416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9097809789340019253&amp;postID=8121414334703046416' title='31 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/8121414334703046416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/8121414334703046416'/><link rel='alternate' type='text/html' href='http://lenkite.blogspot.com/2008/05/access-windows-registry-using-java.html' title='Access Windows Registry using &amp;#39;pure&amp;#39; Java'/><author><name>Tarun Elankath</name><uri>http://www.blogger.com/profile/16569074120665954195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_Da6pxiJweBs/TUUDkMhWMYI/AAAAAAAABXM/88r2VSsa80c/s220/normal_picture_1.jpg'/></author><thr:total>31</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9097809789340019253.post-1135309894795869383</id><published>2008-05-31T13:16:00.004+05:30</published><updated>2008-05-31T13:34:10.914+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='collections'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>Google Collections now in Maven repository</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span style="font-family:arial;"&gt;(This blog has been dead for like forever - so many draft entries that were never turned to posts over the last year, but *shrug*)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Google Collections has now been &lt;i&gt;mavenized&lt;/i&gt;, or to be more precise - the artifacts are present in the maven repository.  Check out &lt;a href="http://repo1.maven.org/maven2/com/google/code/google-collections/google-collect/snapshot-20080321/"&gt;Maven Repo1 &lt;/a&gt;and the &lt;a href="http://code.google.com/p/google-collections/issues/detail?id=24"&gt;issue&lt;/a&gt; that reports this.&lt;br /&gt;&lt;br /&gt;Just add the below to your &amp;amp;lt;project&amp;amp;amp;gt;.pom and you are good to go.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;           &amp;lt;groupId&amp;gt;com.google.code.google-collections&amp;lt;/groupId&amp;gt;&lt;br /&gt;           &amp;lt;artifactId&amp;gt;google-collect&amp;lt;/artifactId&amp;gt;&lt;br /&gt;           &amp;lt;version&amp;gt;snapshot-20080321&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(Google collection's is like the Apache commons collections but &lt;i&gt;generified&lt;/i&gt;)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9097809789340019253-1135309894795869383?l=lenkite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenkite.blogspot.com/feeds/1135309894795869383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9097809789340019253&amp;postID=1135309894795869383' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/1135309894795869383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/1135309894795869383'/><link rel='alternate' type='text/html' href='http://lenkite.blogspot.com/2008/05/google-collections-now-in-maven.html' title='Google Collections now in Maven repository'/><author><name>Tarun Elankath</name><uri>http://www.blogger.com/profile/16569074120665954195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_Da6pxiJweBs/TUUDkMhWMYI/AAAAAAAABXM/88r2VSsa80c/s220/normal_picture_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9097809789340019253.post-4176225457551218779</id><published>2008-01-25T22:03:00.000+05:30</published><updated>2008-01-25T22:18:32.252+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='icons'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='icon'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>My first Ruby Program - the Icon Indexer</title><content type='html'>Well.. I work a lot on eclipse and I always wanted to get the complete eclipse icon set from my eclipse directory (for my eclipse rich client applications) and have a nice index.html file to view the same. Decided to spin a ruby program to do the job.&lt;br /&gt;&lt;br /&gt;(Yeah...I &lt;span style="font-style: italic;"&gt;do&lt;/span&gt; know about &lt;span style="font-family:courier new;"&gt;ISharedImages..&lt;/span&gt; but that doesn't give everything) &lt;blockquote&gt;&lt;/blockquote&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;require&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;find&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;class &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;b&gt;IconIndexer&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;def &lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;index&lt;/span&gt;(base_dir)&lt;br /&gt;idx_path = base_dir + &lt;span style="color: rgb(128, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;\index.html&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;'&lt;/span&gt;&lt;br /&gt;idxh = &lt;span style="color: rgb(128, 0, 128);"&gt;File&lt;/span&gt;.new(idx_path, &lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;w&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;)&lt;br /&gt;puts &lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Created index file at &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt; + &lt;span style="color: rgb(128, 0, 128);"&gt;File&lt;/span&gt;.expand_path(idx_path)&lt;br /&gt;puts &lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Scanning image files (.gif/.png) from &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;#{base_dir}&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; ...&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;br /&gt;idxh.puts &amp;lt;&amp;lt;-&lt;span style="color: rgb(128, 0, 0);"&gt;EOS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;    &amp;lt;html&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;      &amp;lt;head&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;      &amp;lt;title&amp;gt;Icon Index generated for &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;#{base_dir}&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; on &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;#{Date.today()}&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;      &amp;lt;/head&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;      &amp;lt;body&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;      &amp;lt;table&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;EOS&lt;/span&gt;&lt;br /&gt;cnt = &lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt;;&lt;br /&gt;ncols = &lt;span style="color: rgb(255, 0, 255);"&gt;3&lt;/span&gt;;&lt;br /&gt;icon_size = &lt;span style="color: rgb(255, 0, 255);"&gt;3&lt;/span&gt; * &lt;span style="color: rgb(255, 0, 255);"&gt;1024&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: rgb(128, 128, 128);"&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;# Scan base_dir get all gifs/png's less than 'icon_size' kb and&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(128, 128, 128);"&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;# create index html consisting of 'ncol' sized table with these images.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(128, 128, 128);"&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;# ofcouse this is a dumb program since it doesn't take img dimentions into account&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(128, 128, 128);"&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;# but nvm.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;Find&lt;/span&gt;.find(base_dir) &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;b&gt;do&lt;/b&gt;&lt;/span&gt; |&lt;span style="color: rgb(128, 0, 128);"&gt;path&lt;/span&gt;|&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;File&lt;/span&gt;.extname(path) =~ &lt;span style="color: rgb(128, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;(.gif|.png)&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;/&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;b&gt;and&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;File&lt;/span&gt;.size(path) &amp;lt; icon_size&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; cnt % ncols == &lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt;&lt;br /&gt;      idxh.puts &lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;b&gt;end&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;    img_path = &lt;span style="color: rgb(128, 0, 128);"&gt;File&lt;/span&gt;.expand_path(path);&lt;br /&gt;    html = &lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&amp;lt;td&amp;gt;&amp;lt;a href='&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;#{img_path}&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;'&amp;gt;&amp;lt;img border='0' src='&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;#{img_path}&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;'/&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;br /&gt;    cnt+=&lt;span style="color: rgb(255, 0, 255);"&gt;1&lt;/span&gt;&lt;br /&gt;    idxh.puts(html)&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; cnt % ncols == &lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt;&lt;br /&gt;      idxh.puts &lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;b&gt;end&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;b&gt;end&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;b&gt;end&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;idxh.puts &amp;lt;&amp;lt;-&lt;span style="color: rgb(128, 0, 0);"&gt;EOS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;      &amp;lt;/table&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;      &amp;lt;/body&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;      &amp;lt;/html&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;EOS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;indexer = &lt;span style="color: rgb(128, 0, 128);"&gt;IconIndexer&lt;/span&gt;.new()&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;ARGV&lt;/span&gt;[&lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt;]&lt;br /&gt;indexer.index(&lt;span style="color: rgb(128, 0, 128);"&gt;ARGV&lt;/span&gt;[&lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt;])&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;script_name = &lt;span style="color: rgb(128, 0, 128);"&gt;File&lt;/span&gt;.basename(&lt;span style="color: rgb(0, 0, 128);"&gt;__FILE__&lt;/span&gt;);&lt;br /&gt;puts &lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Usage: &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;#{script_name}&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &amp;lt;search_dir&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;b&gt;end&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9097809789340019253-4176225457551218779?l=lenkite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenkite.blogspot.com/feeds/4176225457551218779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9097809789340019253&amp;postID=4176225457551218779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/4176225457551218779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/4176225457551218779'/><link rel='alternate' type='text/html' href='http://lenkite.blogspot.com/2008/01/my-first-ruby-program-icon-indexer.html' title='My first Ruby Program - the Icon Indexer'/><author><name>Tarun Elankath</name><uri>http://www.blogger.com/profile/16569074120665954195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_Da6pxiJweBs/TUUDkMhWMYI/AAAAAAAABXM/88r2VSsa80c/s220/normal_picture_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9097809789340019253.post-5958033232687401183</id><published>2007-11-08T00:20:00.000+05:30</published><updated>2007-11-08T00:24:57.181+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='cifs'/><category scheme='http://www.blogger.com/atom/ns#' term='ntlm'/><category scheme='http://www.blogger.com/atom/ns#' term='samba'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='pure java'/><title type='text'>Samba in Java</title><content type='html'>I have known about this great open-source library for a long time and have utilized it in just about every java application deployed on a windows corporate intranet - and I am always surprised that so few people know about it. I am referring to the &lt;a href="http://jcifs.samba.org"&gt;JCIFS&lt;/a&gt; library that implements the CIFS/SMB networking protocol in 100% Java. &lt;br /&gt;&lt;br /&gt;Windows (NTLM) authentication against a domain controller is as simple as specifying a servlet filter and configuring its properties. ( The below is shamefully :-) copied from the FAQ )&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;filter&amp;gt;&lt;br /&gt;    &amp;lt;filter-name&amp;gt;NtlmHttpFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;    &amp;lt;filter-class&amp;gt;jcifs.http.NtlmHttpFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;init-param&amp;gt;&lt;br /&gt;        &amp;lt;param-name&amp;gt;jcifs.http.domainController&amp;lt;/param-name&amp;gt;&lt;br /&gt;        &amp;lt;param-value&amp;gt;192.168.2.15&amp;lt;/param-value&amp;gt;&lt;br /&gt;    &amp;lt;/init-param&amp;gt;&lt;br /&gt;    &amp;lt;init-param&amp;gt;&lt;br /&gt;        &amp;lt;param-name&amp;gt;jcifs.smb.client.logonShare&amp;lt;/param-name&amp;gt;&lt;br /&gt;        &amp;lt;param-value&amp;gt;JCIFSACL&amp;lt;/param-value&amp;gt;&lt;br /&gt;    &amp;lt;/init-param&amp;gt;&lt;br /&gt;&amp;lt;/filter&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;filter-mapping&amp;gt;&lt;br /&gt;    &amp;lt;filter-name&amp;gt;NtlmHttpFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;    &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Arbitrary java clients (other than webapps) could use something similar to:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;UniAddress mydomaincontroller = UniAddress.getByName( "192.168.1.15" );&lt;br /&gt;NtlmPasswordAuthentication mycreds = new NtlmPasswordAuthentication( "ntdom", "user", "pass" );&lt;br /&gt;try {&lt;br /&gt;    SmbSession.logon( mydomaincontoller, mycreds );&lt;br /&gt;    // SUCCESS&lt;br /&gt;    return true;&lt;br /&gt;} catch( SmbAuthException sae ) {&lt;br /&gt;    // AUTHENTICATION FAILURE&lt;br /&gt;    return false;&lt;br /&gt;} catch( SmbException se ) {&lt;br /&gt;    // NETWORK PROBLEMS?&lt;br /&gt;    se.printStackTrace();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Accessing shared files is as simple as:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;try {&lt;br /&gt;    SmbFile dummy = new SmbFile( "smb://domain;username:password@server/share/path/to/file.txt" );&lt;br /&gt;    SmbFile dest = new SmbFile("smb://server/share/path/to/dir/");&lt;br /&gt;    dummy.copyTo(dest);&lt;br /&gt;&lt;br /&gt;} catch( SmbAuthException sae ) {&lt;br /&gt;   sae.printStackTrace();&lt;br /&gt;} catch( SmbException se ) {&lt;br /&gt;    // NETWORK PROBLEMS?&lt;br /&gt;    se.printStackTrace();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9097809789340019253-5958033232687401183?l=lenkite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenkite.blogspot.com/feeds/5958033232687401183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9097809789340019253&amp;postID=5958033232687401183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/5958033232687401183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/5958033232687401183'/><link rel='alternate' type='text/html' href='http://lenkite.blogspot.com/2007/11/samba-in-java.html' title='Samba in Java'/><author><name>Tarun Elankath</name><uri>http://www.blogger.com/profile/16569074120665954195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_Da6pxiJweBs/TUUDkMhWMYI/AAAAAAAABXM/88r2VSsa80c/s220/normal_picture_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9097809789340019253.post-8213761998158505611</id><published>2007-11-07T13:37:00.000+05:30</published><updated>2007-11-08T00:26:04.393+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='curl'/><category scheme='http://www.blogger.com/atom/ns#' term='mingw'/><category scheme='http://www.blogger.com/atom/ns#' term='libcurl'/><title type='text'>Quickstart: libcurl and mingw (plain http)</title><content type='html'>The win32 builds of libcurl available on the &lt;a href="http://curl.haxx.se/download.html"&gt;Curl download&lt;/a&gt; page have way too many library dependencies (openldap/zlib/openssl etc). That makes sense since curl supports fetching resources using any of those those protocols. However, if all you want to do is just use curl for http use in your program, its simply better to compile the libcurl source to get the tiny libcurl library you need.&lt;br /&gt;&lt;br /&gt;The below assumes that you have downloaded and installed mingw and you have mingw32-make in your PATH.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Grab the libcurl source from the download page. I took curl-7.17.1.zip.&lt;/li&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_Da6pxiJweBs/RzFKjxEFtoI/AAAAAAAAA00/Zx3XvuRNRY8/s1600-h/simple_libcurl_mingw_step1.GIF"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; cursor: pointer;" src="http://bp3.blogger.com/_Da6pxiJweBs/RzFKjxEFtoI/AAAAAAAAA00/Zx3XvuRNRY8/s320/simple_libcurl_mingw_step1.GIF" alt="" id="BLOGGER_PHOTO_ID_5129963428878071426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;li&gt;Extract to a directory (preferably without spaces). We'll call this LIBCURL_HOME&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Open LIBCURL_HOME/lib/setup.h. Add a "#define HTTP_ONLY" (minus quotes ofcourse) just before the first line in the file. This disables all protocols except http. Read LIBCURL_HOME/docs/INSTALL for further information. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Open a command shell, change to this directory and use command "mingw32-make mingw32". (Read LIBCURL_HOME/docs/INSTALL for more info on this)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;After compilation is finished, you should have 'libcurldll.a' and 'libcurl.a' present in LIBCURL_HOME/lib &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Change directory to LIBCURL_HOME/docs/examples. We'll now attempt to compile and run the simples libcurl example program 'simple.c' &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Run "gcc -DCURL_STATICLIB -I ..\..\include simple.c ..\..\lib\libcurl.a -lws2_32 -lwinmm -o simple" at the command line. Alternatively you can run&lt;br /&gt;"gcc -DCURL_STATICLIB -I ..\..\include simple.c -L..\..\lib -lcurl -lws2_32 -lwinmm -o simple.exe".(See &lt;a href="http://curl.haxx.se/docs/faq.html#Link_errors_when_building_libcur"&gt;Curl FAQ&lt;/a&gt;) &lt;/li&gt;&lt;br /&gt;&lt;li&gt;A file 'simple.exe' should be produced. Running this dumps the home page of curl to stdout as shown below&lt;/li&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_Da6pxiJweBs/RzFMXBEFtrI/AAAAAAAAA1M/NYdxWSwYWFE/s1600-h/simple_libcurl_mingw_step2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_Da6pxiJweBs/RzFMXBEFtrI/AAAAAAAAA1M/NYdxWSwYWFE/s400/simple_libcurl_mingw_step2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5129965408857994930" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;li&gt;ws2_32 is the winsock library (you can also do -lwsock32), winmm is a library for windows multimedia - as far as I can see there is only one time function used from this library&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9097809789340019253-8213761998158505611?l=lenkite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenkite.blogspot.com/feeds/8213761998158505611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9097809789340019253&amp;postID=8213761998158505611' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/8213761998158505611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/8213761998158505611'/><link rel='alternate' type='text/html' href='http://lenkite.blogspot.com/2007/11/quickstart-libcurl-and-mingw-plain-http.html' title='Quickstart: libcurl and mingw (plain http)'/><author><name>Tarun Elankath</name><uri>http://www.blogger.com/profile/16569074120665954195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_Da6pxiJweBs/TUUDkMhWMYI/AAAAAAAABXM/88r2VSsa80c/s220/normal_picture_1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_Da6pxiJweBs/RzFKjxEFtoI/AAAAAAAAA00/Zx3XvuRNRY8/s72-c/simple_libcurl_mingw_step1.GIF' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9097809789340019253.post-744274152168704236</id><published>2007-11-07T10:58:00.000+05:30</published><updated>2007-11-08T00:06:04.423+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='tiger'/><category scheme='http://www.blogger.com/atom/ns#' term='nature'/><category scheme='http://www.blogger.com/atom/ns#' term='bangalore'/><category scheme='http://www.blogger.com/atom/ns#' term='bear'/><category scheme='http://www.blogger.com/atom/ns#' term='wildlife'/><category scheme='http://www.blogger.com/atom/ns#' term='bannerghatta'/><category scheme='http://www.blogger.com/atom/ns#' term='lion'/><title type='text'>A trip to Bannerghatta National Park</title><content type='html'>This is one of the VERY few places near to Bangalore that still has some wildlife and greenery left - and as a result is a standard weekend destination.&lt;br /&gt;&lt;br /&gt;I work in SAP Labs and some colleagues of mine from Walldorf wanted to see some tigers and ride some elephants. This was the closest place around where they could get to see some wildlife. Unfortunately for them, the elephants were 'tired' and so there were no rides scheduled that day. However, we opted in for the wildlife safari and could see some critters. They were happy. :)&lt;br /&gt;&lt;br /&gt;Here is a cute tiger!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_Da6pxiJweBs/RzFQ-xEFtsI/AAAAAAAAA1U/7YJ31w_eV1w/s1600-h/IMG_0317.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_Da6pxiJweBs/RzFQ-xEFtsI/AAAAAAAAA1U/7YJ31w_eV1w/s400/IMG_0317.JPG" alt="" id="BLOGGER_PHOTO_ID_5129970489804306114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The more-or-less full album at &lt;a href="http://picasaweb.google.co.uk/lenkite/BannerghattaBiologicalPark"&gt;Bannerghatta Pics&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Non-optimized videos at:&lt;br /&gt;&lt;a href="http://video.google.com/videoplay?docid=-4223498689807429796"&gt;White Tiger&lt;/a&gt;&lt;br /&gt;&lt;a href="http://video.google.com/videoplay?docid=786366147639563528&amp;hl=en"&gt;Bengal Tiger&lt;/a&gt;&lt;br /&gt;&lt;a href="http://video.google.com/videoplay?docid=5664635116958796382&amp;hl=en"&gt;Lazy Lionesses&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9097809789340019253-744274152168704236?l=lenkite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenkite.blogspot.com/feeds/744274152168704236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9097809789340019253&amp;postID=744274152168704236' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/744274152168704236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/744274152168704236'/><link rel='alternate' type='text/html' href='http://lenkite.blogspot.com/2007/11/trip-to-bannerghatta-national-park.html' title='A trip to Bannerghatta National Park'/><author><name>Tarun Elankath</name><uri>http://www.blogger.com/profile/16569074120665954195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_Da6pxiJweBs/TUUDkMhWMYI/AAAAAAAABXM/88r2VSsa80c/s220/normal_picture_1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_Da6pxiJweBs/RzFQ-xEFtsI/AAAAAAAAA1U/7YJ31w_eV1w/s72-c/IMG_0317.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9097809789340019253.post-6501582277321349954</id><published>2006-11-16T02:51:00.000+05:30</published><updated>2006-11-16T13:18:36.535+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='avatar'/><category scheme='http://www.blogger.com/atom/ns#' term='verse'/><category scheme='http://www.blogger.com/atom/ns#' term='night elf'/><category scheme='http://www.blogger.com/atom/ns#' term='elf'/><category scheme='http://www.blogger.com/atom/ns#' term='poem'/><category scheme='http://www.blogger.com/atom/ns#' term='warcraft'/><category scheme='http://www.blogger.com/atom/ns#' term='fantasy'/><category scheme='http://www.blogger.com/atom/ns#' term='elune'/><title type='text'>Elune Evensong/Moonsong - Avatar of Elune, Moon Goddess  (Fantasy)</title><content type='html'>&lt;span style="font-style: italic;"&gt;&lt;br /&gt;Anybody &lt;/span&gt;who has played Warcraft / World of Warcraft knows who is &lt;span style="font-weight: bold; font-style: italic;"&gt;Elune&lt;/span&gt;.  For the un-initiated, please do refer &lt;a href="http://www.wowwiki.com/Elune"&gt;WoW &lt;/a&gt;or &lt;a href="http://en.wikipedia.org/wiki/Elune"&gt;Wikipedia&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;I &lt;span style="font-style: italic;"&gt;do &lt;/span&gt;doubt however, that any male is &lt;span style="font-style: italic;"&gt;so&lt;/span&gt; terminally affected with fantasy that he would day-dream about a goddess's &lt;span style="font-style: italic;"&gt;avatar &lt;/span&gt;- and an &lt;span style="font-style: italic;"&gt;imaginary&lt;/span&gt; one at that! I &lt;span style="font-style: italic;"&gt;do &lt;/span&gt;have the small saving grace that her picture in my mind is &lt;span style="font-style: italic;"&gt;not&lt;/span&gt; the conventional one of a beautiful Night Elf.  No, not at all.. it's one of a &lt;span style="font-style: italic;"&gt;spectacular&lt;/span&gt; High Elf - one whom I keep dreaming about.&lt;br /&gt;&lt;br /&gt;Goddess, &lt;span style="font-style: italic;"&gt;Hear&lt;/span&gt; my call ! (&lt;span style="font-size:78%;"&gt;thats one of the game character voice bites&lt;/span&gt;)&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;Her mane is spun from fair moonlight,&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;Her eyes are a mirror to the artic sky!&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;Her voice - a blend of crystal chimes,&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;Her smile can melt the Sun to cry! &lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;Her verve - the vigor of monsoon wind,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;Her art - the height of arcane skill!&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;Her sight can make any pain rescind!&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-size:130%;"&gt;Her love - the promise of trust fulfilled&lt;/span&gt;!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;&lt;span style="font-size:85%;"&gt;...and her kiss can cause burns on skin!.. :-) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(to be filled in)&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9097809789340019253-6501582277321349954?l=lenkite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenkite.blogspot.com/feeds/6501582277321349954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9097809789340019253&amp;postID=6501582277321349954' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/6501582277321349954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/6501582277321349954'/><link rel='alternate' type='text/html' href='http://lenkite.blogspot.com/2006/11/elune-evensongmoonsong-avatar-of-elune.html' title='Elune Evensong/Moonsong - Avatar of Elune, Moon Goddess  (Fantasy)'/><author><name>Tarun Elankath</name><uri>http://www.blogger.com/profile/16569074120665954195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_Da6pxiJweBs/TUUDkMhWMYI/AAAAAAAABXM/88r2VSsa80c/s220/normal_picture_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9097809789340019253.post-18974177422668509</id><published>2006-11-16T02:02:00.000+05:30</published><updated>2006-11-16T04:25:00.585+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='verse'/><category scheme='http://www.blogger.com/atom/ns#' term='limerick'/><category scheme='http://www.blogger.com/atom/ns#' term='inauguration'/><title type='text'>Limerick of Inauguration</title><content type='html'>&lt;br /&gt;&lt;br /&gt;I have been an on-off blogger for quite some time now, but of the, um.. &lt;span style="font-style: italic;"&gt;academic &lt;/span&gt;kind using services such as what &lt;a href="http://jroller.com/page/lenkite"&gt;jRolle&lt;/a&gt;&lt;a href="http://jroller.com/page/lenkite"&gt;r&lt;/a&gt; , et al offer. I never felt comfortable making posts of a &lt;span style="font-style: italic;"&gt;personal &lt;/span&gt;nature using those services - I always felt that was the privilege of , ah , &lt;span style="font-style: italic;"&gt;rather &lt;/span&gt;more accomplished professionals.&lt;br /&gt;&lt;br /&gt;And hence this very late blogspot registration, where I can comfortably sink into mass mediocrity without even the slightest twinge of guilt or sentiment.&lt;br /&gt;&lt;br /&gt;A toast imaginary readers! A toast to yet more wasted bytes 'an bandwidth ...so  &lt;span style="font-style: italic;"&gt;please do&lt;/span&gt; chant this limerick with me! (which like nearly every other limerick has been begot by reality)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;There once was a techie in the city,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Who blogged every little itty-bitty,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;He posted thrice every day,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Even with nothing to say,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Till he was hired by a union committee!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9097809789340019253-18974177422668509?l=lenkite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lenkite.blogspot.com/feeds/18974177422668509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9097809789340019253&amp;postID=18974177422668509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/18974177422668509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9097809789340019253/posts/default/18974177422668509'/><link rel='alternate' type='text/html' href='http://lenkite.blogspot.com/2006/11/limerick-of-inauguration.html' title='Limerick of Inauguration'/><author><name>Tarun Elankath</name><uri>http://www.blogger.com/profile/16569074120665954195</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_Da6pxiJweBs/TUUDkMhWMYI/AAAAAAAABXM/88r2VSsa80c/s220/normal_picture_1.jpg'/></author><thr:total>0</thr:total></entry></feed>
