<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Kunal Dua &#187; www</title>
	<atom:link href="http://www.kunaldua.com/blog/category/www/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kunaldua.com/blog</link>
	<description>Laziness. Impatience. Hubris.</description>
	<lastBuildDate>Thu, 11 Aug 2011 12:54:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Of Google Hotel Finder and comparing Apple, Microsoft &amp; Google</title>
		<link>http://www.kunaldua.com/blog/2011/08/of-google-hotel-finder-and-comparing-apple-microsoft-google/</link>
		<comments>http://www.kunaldua.com/blog/2011/08/of-google-hotel-finder-and-comparing-apple-microsoft-google/#comments</comments>
		<pubDate>Thu, 11 Aug 2011 12:54:43 +0000</pubDate>
		<dc:creator>Kunal</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.kunaldua.com/blog/?p=426</guid>
		<description><![CDATA[In an interesting critique of Google Hotel Finder, these lines stood out: As Google grows, its willingness to float bad products is starting to seem a little bit similar to Microsoft, ten years ago. You know what&#8217;s also similar? Its &#8230; <a href="http://www.kunaldua.com/blog/2011/08/of-google-hotel-finder-and-comparing-apple-microsoft-google/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2005/03/google-x-demo/' rel='bookmark' title='Google X (demo)'>Google X (demo)</a></li>
<li><a href='http://www.kunaldua.com/blog/2009/01/join-google-groups-without-google-id/' rel='bookmark' title='Join Google Groups without Google id'>Join Google Groups without Google id</a></li>
<li><a href='http://www.kunaldua.com/blog/2005/08/welcome-apple-to-the-21st-century/' rel='bookmark' title='Welcome Apple to the 21st century'>Welcome Apple to the 21st century</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>In an <a href="http://www.fastcodesign.com/1664743/infographic-of-the-day-googles-hotel-finder-is-doa" title="Google Hotel Finder is Dead on Arrival">interesting critique of Google Hotel Finder</a>, these lines stood out:</p>
<blockquote><p>As Google grows, its willingness to float bad products is starting to seem a little bit similar to Microsoft, ten years ago. You know what&#8217;s also similar? Its dependence on a single cash cow that keeps them from caring whether any single side venture lives or dies.</p></blockquote>
<p>Which leads us to:</p>
<blockquote><p>The direct contrast of course is America&#8217;s best design-driven company, Apple. Steve Jobs would rather die than release any new product that wasn&#8217;t a step-wise improvement over everything that existed before. That&#8217;s the mentality of someone that cares about whether people use a product. It&#8217;s the mentality of a designer. Google&#8217;s mentality is that of an engineer, content to labor over one cool feature at the expense of creating any overarching value.</p></blockquote>
<p>And finally:</p>
<blockquote><p>As the example of Microsoft vs. Apple showed us, the engineer&#8217;s mentality can win early in a product cycle, when new features can create great advantages over competitors. But over time, as the tech gets commoditized, it&#8217;s companies like Apple, which are focused on integrating all the features, that create world-changing products.</p></blockquote>
<div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.kunaldua.com/blog/2011/08/of-google-hotel-finder-and-comparing-apple-microsoft-google/' addthis:title='Of Google Hotel Finder and comparing Apple, Microsoft &amp; Google '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>

<p>Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2005/03/google-x-demo/' rel='bookmark' title='Google X (demo)'>Google X (demo)</a></li>
<li><a href='http://www.kunaldua.com/blog/2009/01/join-google-groups-without-google-id/' rel='bookmark' title='Join Google Groups without Google id'>Join Google Groups without Google id</a></li>
<li><a href='http://www.kunaldua.com/blog/2005/08/welcome-apple-to-the-21st-century/' rel='bookmark' title='Welcome Apple to the 21st century'>Welcome Apple to the 21st century</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.kunaldua.com/blog/2011/08/of-google-hotel-finder-and-comparing-apple-microsoft-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bespin Gotchas</title>
		<link>http://www.kunaldua.com/blog/2010/06/bespin-gotchas/</link>
		<comments>http://www.kunaldua.com/blog/2010/06/bespin-gotchas/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 11:10:23 +0000</pubDate>
		<dc:creator>Kunal</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.kunaldua.com/blog/2010/06/bespin-gotchas/</guid>
		<description><![CDATA[In case of trouble connecting to Bespin from an external machine, try setting the IP address to 0.0.0.0 Either change the file pavement.py: 62 63 64 65 66 67 68 69 70 71 72 server=Bunch&#40; # set to true to &#8230; <a href="http://www.kunaldua.com/blog/2010/06/bespin-gotchas/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2010/05/get-email-updates-when-your-ip-changes-python-dyndns-update-client/' rel='bookmark' title='Get email updates when your IP changes/ Python DynDns update client'>Get email updates when your IP changes/ Python DynDns update client</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>In case of trouble connecting to Bespin from an external machine, try setting the IP address to 0.0.0.0</p>
<p>Either change the file pavement.py:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>62
63
64
65
66
67
68
69
70
71
72
</pre></td><td class="code"><pre class="python" style="font-family:monospace;">server=Bunch<span style="color: black;">&#40;</span>
   <span style="color: #808080; font-style: italic;"># set to true to allow connections from other machines</span>
   address=<span style="color: #483d8b;">&quot;0.0.0.0&quot;</span>,
   port=<span style="color: #483d8b;">&quot;8080&quot;</span>,
   try_build=<span style="color: #008000;">False</span>,
   dburl=<span style="color: #008000;">None</span>,
   async=<span style="color: #008000;">False</span>,
   config_file=path<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;devconfig.py&quot;</span><span style="color: black;">&#41;</span>,
   directory=path<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;../bespinserver/&quot;</span><span style="color: black;">&#41;</span>.<span style="color: black;">abspath</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>,
   clientdir=path.<span style="color: black;">getcwd</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: black;">&#41;</span>,</pre></td></tr></table></div>

<p>Or pass it as a command line argument:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">paver server.address=0.0.0.0 server.port=<span style="color: #000000;">8080</span> start</pre></div></div>

<p>In case you haven&#8217;t noticed, you can even specify the port to start on i.e. run Bespin on a custom port.</p>
<div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.kunaldua.com/blog/2010/06/bespin-gotchas/' addthis:title='Bespin Gotchas '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>

<p>Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2010/05/get-email-updates-when-your-ip-changes-python-dyndns-update-client/' rel='bookmark' title='Get email updates when your IP changes/ Python DynDns update client'>Get email updates when your IP changes/ Python DynDns update client</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.kunaldua.com/blog/2010/06/bespin-gotchas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Talk about UI failure</title>
		<link>http://www.kunaldua.com/blog/2010/05/talk-about-ui-failure/</link>
		<comments>http://www.kunaldua.com/blog/2010/05/talk-about-ui-failure/#comments</comments>
		<pubDate>Tue, 25 May 2010 03:15:36 +0000</pubDate>
		<dc:creator>Kunal</dc:creator>
				<category><![CDATA[wtf]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.kunaldua.com/blog/?p=368</guid>
		<description><![CDATA[So you won&#8217;t let me get to the content just because &#8220;there are no surveys available in my country&#8221;? Thanks Tinypaste! Uploaded with plasq&#8216;s Skitch! Related posts:There&#8217;s bad luck, there&#8217;s rotten luck and then there&#8217;s Rafa&#8217;s luck


Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2009/11/theres-bad-luck-theres-rotten-luck-and-then-theres-rafas-luck/' rel='bookmark' title='There&#8217;s bad luck, there&#8217;s rotten luck and then there&#8217;s Rafa&#8217;s luck'>There&#8217;s bad luck, there&#8217;s rotten luck and then there&#8217;s Rafa&#8217;s luck</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>So you won&#8217;t let me get to the content just because &#8220;there are no surveys available in my country&#8221;? Thanks Tinypaste!</p>
<div class="thumbnail"><a href="http://skitch.com/kunaldua/dfbs1/tinypaste-fail"><img src="http://img.skitch.com/20100525-1whrnpn6iag54eyu76jbca1t7x.preview.jpg" alt="tinypaste fail" /></a><br /><span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080">Uploaded with <a href="http://plasq.com/">plasq</a>&#8216;s <a href="http://skitch.com">Skitch</a>!</span></div>
<div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.kunaldua.com/blog/2010/05/talk-about-ui-failure/' addthis:title='Talk about UI failure '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>

<p>Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2009/11/theres-bad-luck-theres-rotten-luck-and-then-theres-rafas-luck/' rel='bookmark' title='There&#8217;s bad luck, there&#8217;s rotten luck and then there&#8217;s Rafa&#8217;s luck'>There&#8217;s bad luck, there&#8217;s rotten luck and then there&#8217;s Rafa&#8217;s luck</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.kunaldua.com/blog/2010/05/talk-about-ui-failure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get email updates when your IP changes/ Python DynDns update client</title>
		<link>http://www.kunaldua.com/blog/2010/05/get-email-updates-when-your-ip-changes-python-dyndns-update-client/</link>
		<comments>http://www.kunaldua.com/blog/2010/05/get-email-updates-when-your-ip-changes-python-dyndns-update-client/#comments</comments>
		<pubDate>Tue, 11 May 2010 05:15:36 +0000</pubDate>
		<dc:creator>Kunal</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.kunaldua.com/blog/?p=360</guid>
		<description><![CDATA[I use DynDns to map my ISP provided dynamic IP to a static hostname. For some reason, the DynDns provided update clients don&#8217;t always work for me and often leave my hostname pointing to a dead or (worse) someone else&#8217;s &#8230; <a href="http://www.kunaldua.com/blog/2010/05/get-email-updates-when-your-ip-changes-python-dyndns-update-client/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2009/12/reliance-wireless-broadband-auto-login-script/' rel='bookmark' title='Reliance Wireless broadband auto-login (and logout) script(s)'>Reliance Wireless broadband auto-login (and logout) script(s)</a></li>
<li><a href='http://www.kunaldua.com/blog/2005/03/yahoo-mail-reduce-the-spam-you-get/' rel='bookmark' title='Yahoo Mail &#8211; reduce the spam you get*'>Yahoo Mail &#8211; reduce the spam you get*</a></li>
<li><a href='http://www.kunaldua.com/blog/2010/06/bespin-gotchas/' rel='bookmark' title='Bespin Gotchas'>Bespin Gotchas</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I use <a href="http://www.dyndns.com/" target="_blank">DynDns</a> to map my ISP provided dynamic IP to a static hostname. For some reason, the DynDns provided <a href="http://www.dyndns.com/support/clients/" target="_blank">update clients</a> don&#8217;t always work for me and often leave my hostname pointing to a dead or (worse) someone else&#8217;s IP. I decided to take matter into my own hands and write a script that would email me my IP whenever my DHCP lease expired and my ISP issued me a fresh one. This would ensure I know how to reach back home, even if my hostname was pointing to an old IP.</p>
<p>While going through the DynDns API, I realized it was trivial to update the hostname as well, essentially replicating the functionality of the aforementioned client(s). So I decided to add that as well.</p>
<p>I know this functionality can be replicated via curl + sendmail, but Python is my tool of choice, so just live with it. Without further ado, here&#8217;s the script, with an explanation afterwards.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #808080; font-style: italic;"># encoding: utf-8</span>
<span style="color: #483d8b;">&quot;&quot;&quot;
Script to email IP whenever it changes. Also updates DynDns hostname.
Version 1.0
&nbsp;
Created by Kunal Dua on 2010-05-10
http://www.kunaldua.com/blog/?p=360
&nbsp;
This program is free software; you may redistribute it and/or
modify it under the same terms as Python itself.
&quot;&quot;&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> send_mail<span style="color: black;">&#40;</span>subject, content<span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">smtplib</span>
        <span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">mime</span>.<span style="color: black;">text</span> <span style="color: #ff7700;font-weight:bold;">import</span> MIMEText
        SERVER = <span style="color: #483d8b;">&quot;smtpserver&quot;</span>
        PORT = <span style="color: #ff4500;">587</span>  <span style="color: #808080; font-style: italic;">#Use 25 if this doesn't work</span>
        USER = <span style="color: #483d8b;">&quot;username&quot;</span>
        PASS = <span style="color: #483d8b;">&quot;password&quot;</span>
        FROM = <span style="color: #483d8b;">&quot;IPBot &lt;mail@example.com&gt;&quot;</span>
        TO = <span style="color: #483d8b;">&quot;user+folder@example.com&quot;</span>
&nbsp;
        SUBJECT = subject
        TEXT = content
&nbsp;
        message = MIMEText<span style="color: black;">&#40;</span>TEXT<span style="color: black;">&#41;</span>
        message<span style="color: black;">&#91;</span><span style="color: #483d8b;">'Subject'</span><span style="color: black;">&#93;</span> = SUBJECT
        message<span style="color: black;">&#91;</span><span style="color: #483d8b;">'From'</span><span style="color: black;">&#93;</span> = FROM
        message<span style="color: black;">&#91;</span><span style="color: #483d8b;">'To'</span><span style="color: black;">&#93;</span> = TO
&nbsp;
        server = <span style="color: #dc143c;">smtplib</span>.<span style="color: black;">SMTP</span><span style="color: black;">&#40;</span>SERVER, PORT<span style="color: black;">&#41;</span>
        server.<span style="color: black;">login</span> <span style="color: black;">&#40;</span>USER, PASS<span style="color: black;">&#41;</span>
        server.<span style="color: black;">sendmail</span><span style="color: black;">&#40;</span>FROM, TO, message.<span style="color: black;">as_string</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
        server.<span style="color: black;">quit</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> update_dyndns<span style="color: black;">&#40;</span>theip<span style="color: black;">&#41;</span>:
        USERNAME = <span style="color: #483d8b;">'username'</span>
        PASSWORD = <span style="color: #483d8b;">'password'</span>
        HOSTNAME = <span style="color: #483d8b;">'example.dyndns.org'</span>
&nbsp;
        theurl = <span style="color: #483d8b;">'https://%s:%s@members.dyndns.org/nic/update?hostname=%s&amp;myip=%s&amp;wildcard=NOCHG&amp;mx=NOCHG&amp;backmx=NOCHG'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>USERNAME, PASSWORD, HOSTNAME, theip<span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib</span>
        conn = <span style="color: #dc143c;">urllib</span>.<span style="color: black;">urlopen</span><span style="color: black;">&#40;</span>theurl<span style="color: black;">&#41;</span>
        <span style="color: #808080; font-style: italic;">#print conn.read()</span>
        conn.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">'__main__'</span>:
        <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib2</span>, <span style="color: #dc143c;">re</span>
        conn = <span style="color: #dc143c;">urllib2</span>.<span style="color: black;">urlopen</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'http://checkip.dyndns.com/'</span><span style="color: black;">&#41;</span>
        data = conn.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        conn.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        m = <span style="color: #dc143c;">re</span>.<span style="color: black;">search</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'([0-9]*)(<span style="color: #000099; font-weight: bold;">\.</span>)([0-9]*)(<span style="color: #000099; font-weight: bold;">\.</span>)([0-9]*)(<span style="color: #000099; font-weight: bold;">\.</span>)([0-9]*)'</span>, data<span style="color: black;">&#41;</span>
        currip = m.<span style="color: black;">group</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
&nbsp;
        lastfile = <span style="color: #483d8b;">&quot;lastip.txt&quot;</span>
        allfile = <span style="color: #483d8b;">&quot;history.txt&quot;</span>
&nbsp;
        theipfile = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span>lastfile,<span style="color: #483d8b;">&quot;r&quot;</span><span style="color: black;">&#41;</span>
        lastip = theipfile.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        theipfile.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">if</span> lastip == currip:
                <span style="color: #808080; font-style: italic;">#print &quot;no change needed&quot;</span>
                exit<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">else</span>:
                histfile = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span>allfile, <span style="color: #483d8b;">&quot;a&quot;</span><span style="color: black;">&#41;</span>
                <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">datetime</span>
                thenow = <span style="color: #dc143c;">datetime</span>.<span style="color: #dc143c;">datetime</span>.<span style="color: black;">now</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">ctime</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
                histfile.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;%s %s<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>thenow, currip<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
                histfile.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
                theipfile = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span>lastfile,<span style="color: #483d8b;">&quot;w&quot;</span><span style="color: black;">&#41;</span>
                theipfile.<span style="color: black;">write</span><span style="color: black;">&#40;</span>currip<span style="color: black;">&#41;</span>
                theipfile.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
                send_mail<span style="color: black;">&#40;</span>currip, <span style="color: #483d8b;">''</span><span style="color: black;">&#41;</span>
                update_dyndns<span style="color: black;">&#40;</span>currip<span style="color: black;">&#41;</span></pre></td></tr></table></div>

<ul>
<li>Lines 17-22 and 39-41 replace with your email and DynDns settings respectively.</li>
<li>Line 22 &#8211; My email provider supports redirecting mails to a folder by simply adding the name of the folder before @ sign. For example user+ipupdates@example.com will deliver mail in folder ipupdates of user@example.com. If your email provider supports this, it&#8217;s a useful trick to prevent these mails from cluttering up your inbox. If not, simply enter your regular email address.</li>
<li>Lines 60-61 initialize 2 files that I use. One is to store the current IP (or the last known IP) and the other is a history of all IP changes. The former is used to compare if the IP has changed since the script was last run and thus if an email needs to be sent + DynDns updated. The latter is not really needed for the script to function properly, and is used to maintain a log of all IP changes &#8211; because you can!</li>
<li>Line 78 &#8211; By default, the subject of the mail is the IP and the body/ text is blank. Feel free to obfuscate your IP if you feel paranoid about sending it in clear text or write sweet nothings to yourself in the body.</li>
<li><strong>Note:</strong> Before you run this script for the first time, create an empty file called lastip.txt in the same directory as the script or the script will fail. I know I could write a trivial check for this, but I leave that as an exercise for the reader.</li>
</ul>
<p>Recommended frequency of running this job via cron/ launchd is 10 minutes.</p>
<p><strong>Update</strong>: (May 27) I am pretty sure the DynDns API is broken in some way because I can&#8217;t get it to update even with this script. The email part is working pretty good for me though!</p>
<div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.kunaldua.com/blog/2010/05/get-email-updates-when-your-ip-changes-python-dyndns-update-client/' addthis:title='Get email updates when your IP changes/ Python DynDns update client '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>

<p>Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2009/12/reliance-wireless-broadband-auto-login-script/' rel='bookmark' title='Reliance Wireless broadband auto-login (and logout) script(s)'>Reliance Wireless broadband auto-login (and logout) script(s)</a></li>
<li><a href='http://www.kunaldua.com/blog/2005/03/yahoo-mail-reduce-the-spam-you-get/' rel='bookmark' title='Yahoo Mail &#8211; reduce the spam you get*'>Yahoo Mail &#8211; reduce the spam you get*</a></li>
<li><a href='http://www.kunaldua.com/blog/2010/06/bespin-gotchas/' rel='bookmark' title='Bespin Gotchas'>Bespin Gotchas</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.kunaldua.com/blog/2010/05/get-email-updates-when-your-ip-changes-python-dyndns-update-client/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Reliance Wireless broadband auto-login (and logout) script(s)</title>
		<link>http://www.kunaldua.com/blog/2009/12/reliance-wireless-broadband-auto-login-script/</link>
		<comments>http://www.kunaldua.com/blog/2009/12/reliance-wireless-broadband-auto-login-script/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 09:55:51 +0000</pubDate>
		<dc:creator>Kunal</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[india]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.kunaldua.com/blog/?p=330</guid>
		<description><![CDATA[The old &#8220;curl&#8221; based method stopped working yesterday when Reliance got a new login page as well as a new backend. It seems Reliance is now also looking at Cookies during authentication. Here&#8217;s a little Python script that you can &#8230; <a href="http://www.kunaldua.com/blog/2009/12/reliance-wireless-broadband-auto-login-script/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2010/05/get-email-updates-when-your-ip-changes-python-dyndns-update-client/' rel='bookmark' title='Get email updates when your IP changes/ Python DynDns update client'>Get email updates when your IP changes/ Python DynDns update client</a></li>
<li><a href='http://www.kunaldua.com/blog/2005/04/the-internals/' rel='bookmark' title='The internals'>The internals</a></li>
<li><a href='http://www.kunaldua.com/blog/2006/08/reset-system-keychain-password/' rel='bookmark' title='Reset system keychain password'>Reset system keychain password</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The old &#8220;curl&#8221; based method stopped working yesterday when Reliance got a new login page as well as a new backend. It seems Reliance is now also looking at Cookies during authentication. Here&#8217;s a little Python script that you can execute to automate the process.</p>
<p>If you don&#8217;t know what Python is, you better stick to browser based authentication :-)</p>
<p>Needless to say, you can schedule this script as a cron/ launchd job to run periodically and keep you logged in. That&#8217;s how I use it, which is why the script doesn&#8217;t output anything to prevent unnecessary log &#8220;pollution&#8221;.</p>
<p><strong>Login Script for Python 2.x</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #808080; font-style: italic;"># encoding: utf-8</span>
<span style="color: #483d8b;">&quot;&quot;&quot;
Reliance Login Script for Python 2.x v1.0
&nbsp;
Created by Kunal Dua on 2009-12-18
http://www.kunaldua.com/blog/?p=330
&nbsp;
This program is free software; you may redistribute it and/or
modify it under the same terms as Python itself.
&quot;&quot;&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib2</span>, <span style="color: #dc143c;">urllib</span>, <span style="color: #dc143c;">cookielib</span>
&nbsp;
username = <span style="color: #483d8b;">'1111111111111111'</span> <span style="color: #808080; font-style: italic;">#replace the text within quotes with your username</span>
password = <span style="color: #483d8b;">'password'</span>	<span style="color: #808080; font-style: italic;">#replace the text within quotes with your password</span>
&nbsp;
jar = <span style="color: #dc143c;">cookielib</span>.<span style="color: black;">FileCookieJar</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;cookies&quot;</span><span style="color: black;">&#41;</span>
opener = <span style="color: #dc143c;">urllib2</span>.<span style="color: black;">build_opener</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">urllib2</span>.<span style="color: black;">HTTPCookieProcessor</span><span style="color: black;">&#40;</span>jar<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
response = opener.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;http://10.239.89.15/reliance/startportal_isg.do&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
login_data = <span style="color: #dc143c;">urllib</span>.<span style="color: black;">urlencode</span><span style="color: black;">&#40;</span><span style="color: black;">&#123;</span><span style="color: #483d8b;">'userId'</span> : username, <span style="color: #483d8b;">'password'</span> : password, <span style="color: #483d8b;">'action'</span> : <span style="color: #483d8b;">'doLoginSubmit'</span><span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>
resp = opener.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'http://10.239.89.15/reliance/login.do'</span>, login_data<span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>Update: <strong>Logout Script for Python 2.x</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #808080; font-style: italic;"># encoding: utf-8</span>
<span style="color: #483d8b;">&quot;&quot;&quot;
Reliance Logout Script v1.0
&nbsp;
Created by Kunal Dua on 2009-12-22
http://www.kunaldua.com/blog/?p=323
&nbsp;
This program is free software; you may redistribute it and/or
modify it under the same terms as Python itself.
&quot;&quot;&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib2</span>, <span style="color: #dc143c;">cookielib</span>
&nbsp;
jar = <span style="color: #dc143c;">cookielib</span>.<span style="color: black;">FileCookieJar</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;cookies&quot;</span><span style="color: black;">&#41;</span>
opener = <span style="color: #dc143c;">urllib2</span>.<span style="color: black;">build_opener</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">urllib2</span>.<span style="color: black;">HTTPCookieProcessor</span><span style="color: black;">&#40;</span>jar<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
response = opener.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;http://10.239.89.15/reliance/login.do&quot;</span>, timeout=<span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>
&nbsp;
resp = opener.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'http://10.239.89.15/reliance/logout.do'</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>Update: <strong>Login Script for Python 3.x</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #808080; font-style: italic;"># encoding: utf-8</span>
<span style="color: #483d8b;">&quot;&quot;&quot;
Reliance Login Script for Python 3.0 v1.0
&nbsp;
Created by Kunal Dua on 2009-12-30
http://www.kunaldua.com/blog/?p=323
&nbsp;
This program is free software; you may redistribute it and/or
modify it under the same terms as Python itself.
&quot;&quot;&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib</span>, http.<span style="color: black;">cookiejar</span>
&nbsp;
username = <span style="color: #483d8b;">'1111111111111111'</span> <span style="color: #808080; font-style: italic;">#replace the text within quotes with your username</span>
password = <span style="color: #483d8b;">'password'</span>	<span style="color: #808080; font-style: italic;">#replace the text within quotes with your password</span>
&nbsp;
jar = http.<span style="color: black;">cookiejar</span>.<span style="color: black;">FileCookieJar</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;cookies&quot;</span><span style="color: black;">&#41;</span>
opener = <span style="color: #dc143c;">urllib</span>.<span style="color: black;">request</span>.<span style="color: black;">build_opener</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">urllib</span>.<span style="color: black;">request</span>.<span style="color: black;">HTTPCookieProcessor</span><span style="color: black;">&#40;</span>jar<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
response = opener.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;http://10.239.89.15/reliance/startportal_isg.do&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
login_data = <span style="color: #dc143c;">urllib</span>.<span style="color: black;">parse</span>.<span style="color: black;">urlencode</span><span style="color: black;">&#40;</span><span style="color: black;">&#123;</span><span style="color: #483d8b;">'userId'</span> : username, <span style="color: #483d8b;">'password'</span> : password, <span style="color: #483d8b;">'action'</span> : <span style="color: #483d8b;">'doLoginSubmit'</span><span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>
resp = opener.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'http://10.239.89.15/reliance/login.do'</span>, login_data<span style="color: black;">&#41;</span></pre></td></tr></table></div>

<div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.kunaldua.com/blog/2009/12/reliance-wireless-broadband-auto-login-script/' addthis:title='Reliance Wireless broadband auto-login (and logout) script(s) '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>

<p>Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2010/05/get-email-updates-when-your-ip-changes-python-dyndns-update-client/' rel='bookmark' title='Get email updates when your IP changes/ Python DynDns update client'>Get email updates when your IP changes/ Python DynDns update client</a></li>
<li><a href='http://www.kunaldua.com/blog/2005/04/the-internals/' rel='bookmark' title='The internals'>The internals</a></li>
<li><a href='http://www.kunaldua.com/blog/2006/08/reset-system-keychain-password/' rel='bookmark' title='Reset system keychain password'>Reset system keychain password</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.kunaldua.com/blog/2009/12/reliance-wireless-broadband-auto-login-script/feed/</wfw:commentRss>
		<slash:comments>56</slash:comments>
		</item>
		<item>
		<title>Bad Bad Twitter</title>
		<link>http://www.kunaldua.com/blog/2009/11/bad-bad-twitter/</link>
		<comments>http://www.kunaldua.com/blog/2009/11/bad-bad-twitter/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 17:37:57 +0000</pubDate>
		<dc:creator>Kunal</dc:creator>
				<category><![CDATA[wtf]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.kunaldua.com/blog/?p=322</guid>
		<description><![CDATA[Since a few asked &#8211; I am moving from @duak to @kunaldua since Twitter refuses to index the former. What difference does it make? A lot! I don&#8217;t appear in People Search. By itself, probably not a big deal and &#8230; <a href="http://www.kunaldua.com/blog/2009/11/bad-bad-twitter/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2005/04/we-did-it/' rel='bookmark' title='We did it!'>We did it!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Since a few asked &#8211; I am moving from <a href="http://twitter.com/duak">@duak</a> to <a href="http://twitter.com/kunaldua">@kunaldua</a> since Twitter refuses to index the former. What difference does it make? A lot!</p>
<ul>
<li>I don&#8217;t appear in <a href="http://twitter.com/invitations/find_on_twitter">People Search</a>. By itself, probably not a big deal and something I could have lived with. But not when you include the next 3.</li>
<li>If I &#8220;mention&#8221; anyone (@twitter_id) in one of my tweets, they&#8217;ll never see that tweet in their list of mentions unless they follow me.</li>
<li>Even if you are following me, unless I start my tweet with @yourtwitterid, you won&#8217;t see that tweet in your list of mentions.</li>
<li>My tweets don&#8217;t appear in any search results, so if I participate in any conferences/ events and use hash-tags and the likes, no one sees it!</li>
</ul>
<p>So that&#8217;s it &#8211; there&#8217;s the reason for the switch. Probably Twitter thinks I am a spammer so they decided to block me and unfortunately there&#8217;s no way for me to get this addressed in any other way. See you <a href="http://twitter.com/kunaldua">@kunaldua</a>.</p>
<div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.kunaldua.com/blog/2009/11/bad-bad-twitter/' addthis:title='Bad Bad Twitter '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>

<p>Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2005/04/we-did-it/' rel='bookmark' title='We did it!'>We did it!</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.kunaldua.com/blog/2009/11/bad-bad-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing Iglooo &#8211; Find books. Compare prices. Buy.</title>
		<link>http://www.kunaldua.com/blog/2009/09/announcing-iglooo-find-books-compare-prices-buy/</link>
		<comments>http://www.kunaldua.com/blog/2009/09/announcing-iglooo-find-books-compare-prices-buy/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 21:16:17 +0000</pubDate>
		<dc:creator>Kunal</dc:creator>
				<category><![CDATA[books]]></category>
		<category><![CDATA[iglooo]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.kunaldua.com/blog/?p=300</guid>
		<description><![CDATA[Pleased to announce Iglooo, a site that&#8217;ll help you find the best deals on books online. Targeted at the Indian audience, it consolidates the results from multiple online book stores and presents them in a visually appealing, yet clutter free &#8230; <a href="http://www.kunaldua.com/blog/2009/09/announcing-iglooo-find-books-compare-prices-buy/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2005/06/technology-that-works/' rel='bookmark' title='Technology that works'>Technology that works</a></li>
<li><a href='http://www.kunaldua.com/blog/2007/02/go-on/' rel='bookmark' title='Go on&#8230;'>Go on&#8230;</a></li>
<li><a href='http://www.kunaldua.com/blog/2007/07/better-ingredients-better-pizza-worst-website/' rel='bookmark' title='Better Ingredients. Better Pizza. Worst Website.'>Better Ingredients. Better Pizza. Worst Website.</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Pleased to announce <a href="http://www.iglooo.in">Iglooo</a>, a site that&#8217;ll help you find the best deals on books online. Targeted at the Indian audience, it consolidates the results from multiple online book stores and presents them in a visually appealing, yet clutter free format. That&#8217;s about it.</p>
<p>Give <a href="http://www.iglooo.in">Iglooo</a> a whirl and let me know what you think!</p>
<div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.kunaldua.com/blog/2009/09/announcing-iglooo-find-books-compare-prices-buy/' addthis:title='Announcing Iglooo &#8211; Find books. Compare prices. Buy. '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>

<p>Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2005/06/technology-that-works/' rel='bookmark' title='Technology that works'>Technology that works</a></li>
<li><a href='http://www.kunaldua.com/blog/2007/02/go-on/' rel='bookmark' title='Go on&#8230;'>Go on&#8230;</a></li>
<li><a href='http://www.kunaldua.com/blog/2007/07/better-ingredients-better-pizza-worst-website/' rel='bookmark' title='Better Ingredients. Better Pizza. Worst Website.'>Better Ingredients. Better Pizza. Worst Website.</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.kunaldua.com/blog/2009/09/announcing-iglooo-find-books-compare-prices-buy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Join Google Groups without Google id</title>
		<link>http://www.kunaldua.com/blog/2009/01/join-google-groups-without-google-id/</link>
		<comments>http://www.kunaldua.com/blog/2009/01/join-google-groups-without-google-id/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 03:02:52 +0000</pubDate>
		<dc:creator>Kunal</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.kunaldua.com/blog/?p=221</guid>
		<description><![CDATA[If, like me, you don&#8217;t have a Gmail id (shock horror!) it can be a pain trying to figure out how to join a Google Group1 . Some groups (like the Django ones) do have web pages with a sign-up &#8230; <a href="http://www.kunaldua.com/blog/2009/01/join-google-groups-without-google-id/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2005/07/google-will-eat-itself/' rel='bookmark' title='Google Will Eat Itself'>Google Will Eat Itself</a></li>
<li><a href='http://www.kunaldua.com/blog/2005/04/google-qa/' rel='bookmark' title='Google Q&amp;A'>Google Q&#038;A</a></li>
<li><a href='http://www.kunaldua.com/blog/2005/03/google-x-demo/' rel='bookmark' title='Google X (demo)'>Google X (demo)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>If, like me, you don&#8217;t have a Gmail id (shock horror!) it can be a pain trying to figure out how to join a Google Group<sup><a href="#footnote-1-221" id="footnote-link-1-221" title="See the footnote.">1</a></sup> . Some groups (like the Django ones) do have web pages with a sign-up form, but most don&#8217;t. So how do you join those groups without going through all the Google id related shenanigans? Simple &#8211; type this in your address bar (and remember to press enter!):</p>
<blockquote>
<p>http://groups.google.com/group/GroupName/boxsubscribe?email=emailid</p>
</blockquote>
<p>Replace GroupName with the name of the group you want to join and emailid with your email id. In case you didn&#8217;t make any typos, you&#8217;ll find Google telling you that &#8220;a confirmation message has been sent&#8221; to your id. Just click on the link in that email and you are good to go.</p>
<p>Technorati Tags: <a href="http://technorati.com/tag/Google" rel="tag">Google</a>, <a href="http://technorati.com/tag/Google+Groups" rel="tag"> Google Groups</a></p>
<br /><ol class="footnotes"><li id="footnote-1-221"> I know you can have a Google id that is NOT a Gmail id, but let&#8217;s leave that out for now.   [<a href="#footnote-link-1-221">&#8617;</a>]</li></ol><div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.kunaldua.com/blog/2009/01/join-google-groups-without-google-id/' addthis:title='Join Google Groups without Google id '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>

<p>Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2005/07/google-will-eat-itself/' rel='bookmark' title='Google Will Eat Itself'>Google Will Eat Itself</a></li>
<li><a href='http://www.kunaldua.com/blog/2005/04/google-qa/' rel='bookmark' title='Google Q&amp;A'>Google Q&#038;A</a></li>
<li><a href='http://www.kunaldua.com/blog/2005/03/google-x-demo/' rel='bookmark' title='Google X (demo)'>Google X (demo)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.kunaldua.com/blog/2009/01/join-google-groups-without-google-id/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>iTunes store comes to India</title>
		<link>http://www.kunaldua.com/blog/2008/08/itunes-store-comes-to-india/</link>
		<comments>http://www.kunaldua.com/blog/2008/08/itunes-store-comes-to-india/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 19:10:36 +0000</pubDate>
		<dc:creator>Kunal</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[india]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.kunaldua.com/blog/?p=200</guid>
		<description><![CDATA[See for yourself (click to enlarge): Only iPhone apps on the store of course &#8211; no music/ movies or anything else. Meanwhile, as expected, 22nd August has been confirmed as the India launch date for the iPhone. Related posts:It&#8217;s official &#8230; <a href="http://www.kunaldua.com/blog/2008/08/itunes-store-comes-to-india/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2008/05/its-official/' rel='bookmark' title='It&#8217;s official'>It&#8217;s official</a></li>
<li><a href='http://www.kunaldua.com/blog/2007/06/enough-with-the-iphone-already/' rel='bookmark' title='Enough with the iPhone already'>Enough with the iPhone already</a></li>
<li><a href='http://www.kunaldua.com/blog/2005/03/itunes-shuffle-not-that-random/' rel='bookmark' title='iTunes &#8220;shuffle&#8221; not that random'>iTunes &#8220;shuffle&#8221; not that random</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>See for yourself (click to enlarge):</p>
<p><a href="http://www.kunaldua.com/images/iTunes-store-india.jpg"><img src="../images/iTunes-store-india.jpg" / width=490></a></p>
<p>Only iPhone apps on the store of course &#8211; no music/ movies or anything else. Meanwhile, as expected, 22nd August has been <a href="http://www.ciol.com/News/News-Reports/Bharti-to-bring-iPhone-3G-to-India/6808108722/0/">confirmed</a> as the India launch date for the iPhone.</p>
<div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.kunaldua.com/blog/2008/08/itunes-store-comes-to-india/' addthis:title='iTunes store comes to India '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>

<p>Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2008/05/its-official/' rel='bookmark' title='It&#8217;s official'>It&#8217;s official</a></li>
<li><a href='http://www.kunaldua.com/blog/2007/06/enough-with-the-iphone-already/' rel='bookmark' title='Enough with the iPhone already'>Enough with the iPhone already</a></li>
<li><a href='http://www.kunaldua.com/blog/2005/03/itunes-shuffle-not-that-random/' rel='bookmark' title='iTunes &#8220;shuffle&#8221; not that random'>iTunes &#8220;shuffle&#8221; not that random</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.kunaldua.com/blog/2008/08/itunes-store-comes-to-india/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Translate .local hostname to IP address</title>
		<link>http://www.kunaldua.com/blog/2008/05/translate-local-hostname-to-ip-address/</link>
		<comments>http://www.kunaldua.com/blog/2008/05/translate-local-hostname-to-ip-address/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 22:45:43 +0000</pubDate>
		<dc:creator>Kunal</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://www.kunaldua.com/blog/?p=195</guid>
		<description><![CDATA[You can have .local hostnames translated to IP addresses by installing Bonjour on the source machine i.e. the (windows) machine doing the lookup. Saved me the trouble of changing the IP of my Powerbook in Synergy configuration on the Windows &#8230; <a href="http://www.kunaldua.com/blog/2008/05/translate-local-hostname-to-ip-address/">Continue reading <span class="meta-nav">&#8594;</span></a>


Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2007/05/dumb-as-dell-part-2/' rel='bookmark' title='Dumb as Dell &#8211; Part 2'>Dumb as Dell &#8211; Part 2</a></li>
<li><a href='http://www.kunaldua.com/blog/2004/12/look-ma-no-wires/' rel='bookmark' title='Look Ma, no wires!'>Look Ma, no wires!</a></li>
<li><a href='http://www.kunaldua.com/blog/2009/11/ayrton-diego-get-new-stripes/' rel='bookmark' title='Ayrton, Diego get new stripes'>Ayrton, Diego get new stripes</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>You can have .local hostnames translated to IP addresses by <a href="http://developer.apple.com/networking/bonjour/index.html">installing Bonjour</a> on the source machine i.e. the (windows) machine doing the lookup.</p>
<p>Saved me the trouble of changing the IP of my Powerbook in <a href="http://synergy2.sourceforge.net/">Synergy</a> configuration on the Windows machine every time I got allocated a new one.</p>
<p>Doesn&#8217;t matter if you are part of a Windows domain, not part or whatever &#8211; just install Bonjour and you are good to go. <em>That</em> is the beauty of Bonjour.</p>
<div><a class="addthis_button" href="//addthis.com/bookmark.php?v=250" addthis:url='http://www.kunaldua.com/blog/2008/05/translate-local-hostname-to-ip-address/' addthis:title='Translate .local hostname to IP address '><img src="//cache.addthis.com/cachefly/static/btn/v2/lg-share-en.gif" width="125" height="16" alt="Bookmark and Share" style="border:0"/></a></div>

<p>Related posts:<ol><li><a href='http://www.kunaldua.com/blog/2007/05/dumb-as-dell-part-2/' rel='bookmark' title='Dumb as Dell &#8211; Part 2'>Dumb as Dell &#8211; Part 2</a></li>
<li><a href='http://www.kunaldua.com/blog/2004/12/look-ma-no-wires/' rel='bookmark' title='Look Ma, no wires!'>Look Ma, no wires!</a></li>
<li><a href='http://www.kunaldua.com/blog/2009/11/ayrton-diego-get-new-stripes/' rel='bookmark' title='Ayrton, Diego get new stripes'>Ayrton, Diego get new stripes</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.kunaldua.com/blog/2008/05/translate-local-hostname-to-ip-address/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

