document.write('<div class=\"atom_feed\">');
document.write('<div class=\"atom_feed_title\">Thinking in Circles</div>');
document.write('<ul class=\"atom_item_list\">');
document.write('<li class=\"atom_item\"><span class=\"rss_item_title\"><a class=\"rss_item_link\" href=\"XML::Atom::Link=HASH(0x865ba40)\">Phone stuff</a></span><span class=\"atom_item_desc\"><a href=\"http://www.cellspotting.com/\">Cellspotting</a>: is a global <br />location based service for mobile users<br /><br /><a href=\"http://www.afischer-online.de/sos/celltrack/\">Celltrack</a>: is <br />a program to collect some phone information about the cell you are <br />connected to - like the net monitor.<br /><br /><a href=\"http://symbianos.org/cgi-bin/viewcvs.cgi/gnubox/\">GNUbox</a>: <br />is a simple program for the Nokia 7650 which allows you to configure<br />the smartphone to access the Internet through an Infrared or Bluetooth <br />access point.<br /><br /><a href=\"http://www.gnokii.org/download/gnapplet/\">Gnapplet</a>: use <br />with Gnokii to manage a phone.<br /><br /><a href=\"http://www.holtmann.org/linux/bluetooth/devices.html\">BT</a> <br />dongles supported by Linux.<br /><br /><a href=\"http://bemused.sourceforge.net/\">Bemused</a>: control an MP3 <br />player with Bluetooth.<br /><br /><a href=\"http://gagravarr.org/series-60/\">Series 60 & Linux</a><br /><br /><a href=\"http://multisync.sourceforge.net/\">Multisync</a>: Has SyncML <br />support.<br /><br /><a href=\"http://sync4j.sourceforge.net/\">Sync4j</a><br /><br /><a href=\"http://opl.symbiandiaries.com/\">OPL</a>: Open source Basic-like <br />language for Symbian.<br /><br /><a href=\"http://www.kingchurch.net/~hek/projects/firewallTunnel/\">*</a> <br />Firewall tunnel<br /></span></li>');
document.write('<li class=\"atom_item\"><span class=\"rss_item_title\"><a class=\"rss_item_link\" href=\"XML::Atom::Link=HASH(0x865ba40)\">New phone</a></span><span class=\"atom_item_desc\">I got a Blackberry phone friday and my mail settings came through today. It\'s pretty sweet but I have to figure out how to use attachments.</span></li>');
document.write('<li class=\"atom_item\"><span class=\"rss_item_title\"><a class=\"rss_item_link\" href=\"XML::Atom::Link=HASH(0x865ba40)\">phto0027</a></span><span class=\"atom_item_desc\"><table>	<tr>		<!-- Your Description -->		<td style=\"vertical-align:top;\">Mark: What are you, a whipping girl?<br />Angela: No, I\'m a dominatrix<br />Mark: A domi-what-what?</td>		<!-- The Image & -->		<!-- Image Title, Uploaded by -->		<td style=\"padding-left:10px;vertical-align:top;\">			<a href=\"http://www.flickr.com/photos/jimregan/1148082/\" title=\"photo sharing\"><img src=\"http://www.flickr.com/photos/1148082_05ee70696b_m.jpg\" alt=\"\" style=\"border: solid 2px #000000;\"></a>  			<br />				<span style=\"font-size: 90%; margin-top: 0px;\">			<a href=\"http://www.flickr.com/photos/jimregan/1148082/\">phto0027</a>			<br />			Originally uploaded by 			<a href=\"http://www.flickr.com/people/jimregan/\">jimregan</a>.			</span>		</td>	</tr></table></span></li>');
document.write('<li class=\"atom_item\"><span class=\"rss_item_title\"><a class=\"rss_item_link\" href=\"XML::Atom::Link=HASH(0x865ba40)\">Another scraper</a></span><span class=\"atom_item_desc\">I only read <a href=\"http://www.linux.org.uk/~telsa/Diary/diary.html\">Telsa\'s diary</a> occasionally; maybe having a feed in liferea would change that.<br/><br/><pre><br/>#!/usr/bin/perl -w<br/><br/>use strict;<br/>use XML::RSS;<br/>use LWP::Simple;<br/>use HTML::Entities;<br/><br/>my $rss = new XML::RSS (version =&gt; \'1.0\');<br/>my $url = \"http://www.linux.org.uk/~telsa/Diary/diary.html\";<br/>my $page = get($url);<br/><br/>$rss-&gt;channel(title       =&gt; \"The more accurate diary. Really.\",<br/>              link        =&gt; $url,<br/>              description =&gt; \"Telsa\'s diary of life with a hacker:\" <br/>	      		     . \" the current ramblings\");<br/><br/>foreach (split (\'&lt;dt&gt;\', $page))<br/>{<br/>	if (/&lt;a\sname=\"([^\"]*)\"&gt;<br/>		&lt;strong&gt;<br/>		([^&gt;]*)<br/>		&lt;\/strong&gt;&lt;\/a&gt;&lt;\/dt&gt;\s*&lt;dd&gt;<br/>		(.*)&lt;\/dd&gt;/six)<br/>	{<br/>		$rss-&gt;add_item(title       =&gt; $2,<br/>			       link        =&gt; \"$url#$1\",<br/>		       	       description =&gt; encode_entities($3));<br/>	}<br/>}<br/><br/>print $rss-&gt;as_string;<br/></pre></span></li>');
document.write('<li class=\"atom_item\"><span class=\"rss_item_title\"><a class=\"rss_item_link\" href=\"XML::Atom::Link=HASH(0x865ba40)\">Michael Moore scraper improved</a></span><span class=\"atom_item_desc\">Now with added /x-ness!<br/><br/><pre><br/>#!/usr/bin/perl -w<br/><br/>use strict;<br/>use XML::RSS;<br/>use LWP::Simple;<br/>use HTML::Entities;<br/><br/>sub findurl ($$)<br/>{<br/>	my $title = shift;<br/>	my $pagein = shift;<br/>	if ($pagein =~ /&lt;a href=\"(index.php\?id=[^\"]*)\"&gt;$title&lt;\/a&gt;/i)<br/>	{<br/>		return \"http://www.michaelmoore.com/words/diary/$1\";<br/>	}<br/>}<br/>							<br/><br/>my $rss = new XML::RSS (version =&gt; \'1.0\');<br/>my $url = \"http://www.michaelmoore.com/words/diary/index.php\";<br/>my $page = get($url);<br/><br/>$rss-&gt;channel(title       =&gt; \"Mike\'s Blog\",<br/>              link        =&gt; $url,<br/>              description =&gt; \"Michael Moore\'s blog\");<br/><br/>foreach (split (\'&lt;table \', $page))<br/>{<br/>	if (/&lt;p&gt;&lt;span\sclass=\"smallText\"&gt;&lt;i&gt;<br/>		([^&gt;]*)<br/>		&lt;\/i&gt;&lt;\/span&gt;&lt;br&gt;[\r\n]*&lt;span\sclass=\"titleText\"&gt;<br/>		([^&gt;]*)<br/>		&lt;\/span&gt;&lt;\/p&gt;[\r\n]*&lt;p&gt;<br/>		(&lt;p&gt;.*&lt;\/p&gt;)<br/>		[\r\n]*&lt;\/p&gt;\n/six)<br/>	{<br/>		$rss-&gt;add_item(title       =&gt; $2,<br/>			       link        =&gt; findurl($2, $page),<br/>		       	       description =&gt; $1 . encode_entities($3));<br/>	}<br/>}<br/><br/>print $rss-&gt;as_string;<br/><br/></pre></span></li>');
document.write('<li class=\"atom_item\"><span class=\"rss_item_title\"><a class=\"rss_item_link\" href=\"XML::Atom::Link=HASH(0x865ba40)\">Michael Moore\'s blog</a></span><span class=\"atom_item_desc\">Is <a href=\"http://www.michaelmoore.com/words/diary/index.php\">here</a>. Scraper, here:<br/><br/><pre><br/>#!/usr/bin/perl -w<br/><br/>use strict;<br/>use XML::RSS;<br/>use LWP::Simple;<br/>use HTML::Entities;<br/><br/>sub findurl ($$)<br/>{<br/>	my $title = shift;<br/>	my $pagein = shift;<br/>	if ($pagein =~ /&lt;a href=\"(index.php\?id=[^\"]*)\"&gt;$title&lt;\/a&gt;/i)<br/>	{<br/>		return \"http://www.michaelmoore.com/words/diary/$1\";<br/>	}<br/>}<br/>							<br/><br/>my $rss = new XML::RSS (version =&gt; \'1.0\');<br/><br/>my $page = get(\"http://www.michaelmoore.com/words/diary/index.php\");<br/><br/>$rss-&gt;channel(title       =&gt; \"Mike\'s Blog\",<br/>              link        =&gt; \"http://www.michaelmoore.com/words/diary/index.php\",<br/>              description =&gt; \"Michael Moore\'s blog\");<br/><br/>foreach (split (\'&lt;table \', $page))<br/>{<br/>	if (/&lt;p&gt;&lt;span class=\"smallText\"&gt;&lt;i&gt;([^&gt;]*)&lt;\/i&gt;&lt;\/span&gt;&lt;br&gt;[\r\n]*&lt;span class=\"titleText\"&gt;([^&gt;]*)&lt;\/span&gt;&lt;\/p&gt;[\r\n]*&lt;p&gt;(&lt;p&gt;.*&lt;\/p&gt;)[\r\n]*&lt;\/p&gt;\n/si)<br/>	{<br/>		$rss-&gt;add_item(title       =&gt; $2,<br/>			       link        =&gt; findurl($2, $page),<br/>		       	       description =&gt; $1 . encode_entities($3));<br/>	}<br/>}<br/><br/>print $rss-&gt;as_string;<br/></pre><br/></span></li>');
document.write('<li class=\"atom_item\"><span class=\"rss_item_title\"><a class=\"rss_item_link\" href=\"XML::Atom::Link=HASH(0x865ba40)\">Bill Bailey\'s blog</a></span><span class=\"atom_item_desc\"><a href=\"http://www.bill-bailey.co.uk/\">Bill Bailey</a> has a <a href=\"http://www.bill-bailey.co.uk/blog/index.php\">blog</a>! Bill Bailey\'s blog doesn\'t have a feed!  Solution:<br/><br/><pre><br/>#!/usr/bin/perl -w<br/><br/>use strict;<br/>use XML::RSS;<br/>use LWP::Simple;<br/>use HTML::Entities;<br/><br/>my $page;<br/>my $rss = new XML::RSS (version =&gt; \'1.0\');<br/><br/>$page = get(\"http://www.bill-bailey.co.uk/blog/index.php\");<br/>$rss-&gt;channel(title       =&gt; \'Bill Bailey\',<br/>              link        =&gt; \'http://www.bill-bailey.co.uk/blog/index.php\',<br/>              description =&gt; \'Bill Bailey\\'s Blog\');<br/>      <br/>my @chunks = split (\'&lt;table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"&gt;\', $page);<br/><br/>my ($date, $link, $content, $title);<br/><br/>foreach (@chunks)<br/>{<br/>	if (/&lt;td class=\"BlogTitle\"&gt;\s*([^\r\n]*)[\r\n\s]*&lt;\/td&gt;/is)<br/>        {<br/>		$date = $1;	<br/>	}<br/>	if (/&lt;td class=\"BlogHeader\"&gt;\s*([^\r\n]*)[\r\n\s]*&lt;\/td&gt;/is)<br/>	{<br/>		$title = $1;<br/>	}<br/>	if (/&lt;td class=\"BlogText\"&gt;(.*)&lt;\/td&gt;\s*&lt;\/tr&gt;\s*&lt;tr&gt;\s*&lt;td&gt;&amp;nbsp;/is)<br/>	{<br/>		$content = encode_entities($1);<br/>	}<br/>	if (/&lt;td class=\"BodyText\"&gt;\s*&lt;a href=\"([^\"]*)\"&gt;Read comments/is)<br/>	{<br/>		$link = \"http://www.bill-bailey.co.uk$1\";<br/>	}<br/>	if ($date &amp;&amp; $title &amp;&amp; $content &amp;&amp; $link)<br/>	{<br/>		$rss-&gt;add_item(title       =&gt; $title,<br/>			       link        =&gt; $link,<br/>		       	       description =&gt; $content,<br/>		       	       dc =&gt; {date =&gt; $date});<br/><br/>	}<br/>}<br/><br/>print $rss-&gt;as_string;<br/></pre><br/><br/>More Bill Bailey <a href=\"http://muse.cream.org/bill/video.html\">here</a>.</span></li>');
document.write('<li class=\"atom_item\"><span class=\"rss_item_title\"><a class=\"rss_item_link\" href=\"XML::Atom::Link=HASH(0x865ba40)\">Userfriendly scraper</a></span><span class=\"atom_item_desc\"><pre><br/>#!/usr/bin/perl -w<br/><br/>use strict;<br/>use LWP::Simple;<br/>use XML::RSS;<br/>use Date::Format;<br/><br/># These regexes taken from Dailystrips<br/>my $patternpre = \"&lt;img.+?src=\\"(http://www\.userfriendly\.org/cartoons/archives/%y.+?/uf.+?\.gif)\\"\";<br/>my $urlpre = \"http://ars.userfriendly.org/cartoons/?id=%Y%m%d&amp;mode=classic\";<br/><br/>my $pattern = time2str ($patternpre, time);<br/>my $url = time2str ($urlpre, time);<br/><br/>my $page = get($url);<br/><br/>my $rss = new XML::RSS (version =&gt; \'1.0\');<br/><br/>$rss-&gt;channel(title       =&gt; \'User Friendly\',<br/>	      link	  =&gt; \'http://userfriendly.org/\',<br/>	      description =&gt; \'User Friendly the Comic Strip\');<br/><br/>if ($page =~ /$pattern/ig)<br/>{<br/>	$rss-&gt;add_item(title       =&gt; time2str(\"CARTOON FOR %a %b, %Y\",time),<br/>	               link        =&gt; \"$url\",<br/>       	               description =&gt; \"&amp;lt;img src=\'$1\' /&amp;gt;\");<br/>}<br/>	<br/>	<br/>print $rss-&gt;as_string;<br/></pre><br/><br/>I got fed up of using overblown commands to HTMLise these things, so I have a little sed script now:<br/><br/><pre><br/>s/&amp;/\&amp;amp;/g<br/>s/&lt;/\&amp;lt;/g<br/>s/&gt;/\&amp;gt;/g<br/>s/\"/\&amp;quot;/g<br/></pre><br/><br/>I changed sun-pic.pl. The line<br/><pre>foreach (split (\"\r\n\", $page))</pre><br/>is now<br/><pre>foreach (split (\"\n\", $page))</pre></span></li>');
document.write('<li class=\"atom_item\"><span class=\"rss_item_title\"><a class=\"rss_item_link\" href=\"XML::Atom::Link=HASH(0x865ba40)\">Xchat hello abused...</a></span><span class=\"atom_item_desc\">To implement the social commands in FlickrLive. 
<br />
<br /><pre>
<br />__module_name__ = \"flickr\" 
<br />__module_version__ = \"1.0\" 
<br />__module_description__ = \"flickr social commands\" 
<br /> 
<br />import xchat
<br />
<br />otheruser = \"This social command requires the name of another user\"
<br />
<br />command_list = \"\"\"
<br />/apologize
<br />/applaud
<br />/blink
<br />/blush
<br />/bounce
<br />/brood
<br />/comfort
<br />/cough
<br />/cringe
<br />/evileye
<br />/flirt
<br />/frown
<br />/giggle
<br />/goose
<br />/groan
<br />/highfive
<br />/hit
<br />/hug
<br />/kiss
<br />/laugh
<br />/lick
<br />/massage
<br />/nudge
<br />/pinch
<br />/pout
<br />/punch
<br />/shrug
<br />/smile
<br />/spank
<br />/tickle
<br />/wave
<br />/wink
<br />\"\"\"
<br />
<br />def apologize_cb(word, word_eol, userdata):
<br />	if len(word) < 2:
<br />		print otheruser
<br />	else:
<br />		xchat.command(\"ME apologizes to %s\" % word_eol[1])
<br />	return xchat.EAT_NONE
<br />
<br />def applaud_cb(word, word_eol, userdata):
<br />	if len(word) < 2:
<br />		print otheruser
<br />	else:
<br />		xchat.command(\"ME applauds %s\" % word_eol[1])
<br />	return xchat.EAT_NONE
<br />
<br />def blink_cb(word, word_eol, userdata):
<br />	xchat.command(\"ME blinks\")
<br />	return xchat.EAT_NONE
<br />
<br />def blush_cb(word, word_eol, userdata):
<br />	xchat.command(\"ME blushes\")
<br />	return xchat.EAT_NONE
<br />
<br />def bounce_cb(word, word_eol, userdata):
<br />	xchat.command(\"ME bounces\")
<br />	return xchat.EAT_NONE
<br />
<br />def brood_cb(word, word_eol, userdata):
<br />	xchat.command(\"ME broods\")
<br />	return xchat.EAT_NONE
<br />
<br />def comfort_cb(word, word_eol, userdata):
<br />	if len(word) < 2:
<br />		print otheruser
<br />	else:
<br />		xchat.command(\"ME comforts %s\" % word_eol[1])
<br />	return xchat.EAT_NONE
<br />
<br />def commands_cb(word, word_eol, userdata):
<br />	print command_list
<br />	return xchat.EAT_NONE
<br />
<br />def cough_cb(word, word_eol, userdata):
<br />	xchat.command(\"ME coughs\")
<br />	return xchat.EAT_NONE
<br />
<br />def cringe_cb(word, word_eol, userdata):
<br />	xchat.command(\"ME cringes\")
<br />	return xchat.EAT_NONE
<br />
<br />def evileye_cb(word, word_eol, userdata):
<br />	if len(word) < 2:
<br />		print otheruser
<br />	else:
<br />		xchat.command(\"ME gives %s the evil eye\" % word_eol[1])
<br />	return xchat.EAT_NONE
<br />
<br />def flirt_cb(word, word_eol, userdata):
<br />	if len(word) < 2:
<br />		print otheruser
<br />	else:
<br />		xchat.command(\"ME flirts with %s\" % word_eol[1])
<br />	return xchat.EAT_NONE
<br />
<br />def frown_cb(word, word_eol, userdata):
<br />	xchat.command(\"ME frowns\")
<br />	return xchat.EAT_NONE
<br />
<br />def giggle_cb(word, word_eol, userdata):
<br />	xchat.command(\"ME giggles\")
<br />	return xchat.EAT_NONE
<br />
<br />def goose_cb(word, word_eol, userdata):
<br />	print \"WTF?\"
<br />	return xchat.EAT_NONE
<br />
<br />def groan_cb(word, word_eol, userdata):
<br />	xchat.command(\"ME groans\")
<br />	return xchat.EAT_NONE
<br />
<br />def highfive_cb(word, word_eol, userdata):
<br />	if len(word) < 2:
<br />		print otheruser
<br />	else:
<br />		xchat.command(\"ME gives %s a high five\" % word_eol[1])
<br />	return xchat.EAT_NONE
<br />
<br />def hit_cb(word, word_eol, userdata):
<br />	if len(word) < 2:
<br />		print otheruser
<br />	else:
<br />		xchat.command(\"ME hits %s\" % word_eol[1])
<br />	return xchat.EAT_NONE
<br />
<br />def hug_cb(word, word_eol, userdata):
<br />	if len(word) < 2:
<br />		print otheruser
<br />	else:
<br />		xchat.command(\"ME hugs %s\" % word_eol[1])
<br />	return xchat.EAT_NONE
<br />
<br />def kiss_cb(word, word_eol, userdata):
<br />	if len(word) < 2:
<br />		print otheruser
<br />	else:
<br />		xchat.command(\"ME kisses %s\" % word_eol[1])
<br />	return xchat.EAT_NONE
<br />
<br />
<br />def laugh_cb(word, word_eol, userdata):
<br />	xchat.command(\"ME laughs\")
<br />	return xchat.EAT_NONE
<br />
<br />def lick_cb(word, word_eol, userdata):
<br />	if len(word) < 2:
<br />		print otheruser
<br />	else:
<br />		xchat.command(\"ME licks %s\" % word_eol[1])
<br />	return xchat.EAT_NONE
<br />
<br />def massage_cb(word, word_eol, userdata):
<br />	if len(word) < 2:
<br />		print otheruser
<br />	else:
<br />		xchat.command(\"ME massages %s\" % word_eol[1])
<br />	return xchat.EAT_NONE
<br />
<br />def nudge_cb(word, word_eol, userdata):
<br />	if len(word) < 2:
<br />		print otheruser
<br />	else:
<br />		xchat.command(\"ME nudges %s\" % word_eol[1])
<br />	return xchat.EAT_NONE
<br />
<br />def pinch_cb(word, word_eol, userdata):
<br />	if len(word) < 2:
<br />		print otheruser
<br />	else:
<br />		xchat.command(\"ME pinches %s\" % word_eol[1])
<br />	return xchat.EAT_NONE
<br />
<br />def pout_cb(word, word_eol, userdata):
<br />	xchat.command(\"ME shrugs\")
<br />	return xchat.EAT_NONE
<br />
<br />def punch_cb(word, word_eol, userdata):
<br />	if len(word) < 2:
<br />		print otheruser
<br />	else:
<br />		xchat.command(\"ME punches %s\" % word_eol[1])
<br />	return xchat.EAT_NONE
<br />
<br />def shrug_cb(word, word_eol, userdata):
<br />	xchat.command(\"ME shrugs\")
<br />	return xchat.EAT_NONE
<br />
<br />def smile_cb(word, word_eol, userdata):
<br />	xchat.command(\"ME smiles\")
<br />	return xchat.EAT_NONE
<br />
<br />def spank_cb(word, word_eol, userdata):
<br />	if len(word) < 2:
<br />		print otheruser
<br />	else:
<br />		xchat.command(\"ME spanks %s\" % word_eol[1])
<br />	return xchat.EAT_NONE
<br />
<br />def tickle_cb(word, word_eol, userdata):
<br />	if len(word) < 2:
<br />		print otheruser
<br />	else:
<br />		xchat.command(\"ME tickles %s\" % word_eol[1])
<br />	return xchat.EAT_NONE
<br />
<br />def wave_cb(word, word_eol, userdata):
<br />	if len(word) < 2:
<br />		xchat.command(\"ME waves\")
<br />	else:
<br />		xchat.command(\"ME waves to %s\" % word_eol[1])
<br />	return xchat.EAT_NONE
<br />
<br />def wink_cb(word, word_eol, userdata):
<br />	xchat.command(\"ME winks\")
<br />	return xchat.EAT_NONE
<br />
<br />xchat.hook_command(\"apologize\", apologize_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"applaud\", applaud_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"blink\", blink_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"bounce\", bounce_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"brood\", brood_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"comfort\", comfort_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"commands\", commands_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"cough\", cough_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"cringe\", cringe_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"evileye\", evileye_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"flirt\", _cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"frown\", frown_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"giggle\", giggle_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"goose\", goose_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"groan\", groan_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"highfive\", highfive_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"hit\", hit_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"hug\", hug_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"kiss\", kiss_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"laugh\", laugh_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"lick\", lick_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"massage\", massage_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"nudge\", nudge_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"pinch\", pinch_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"pout\", pout_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"punch\", punch_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"shrug\", shrug_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"smile\", smile_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"spank\", spank_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"tickle\", tickle_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"wave\", wave_cb, help=\"Use /commands for more information\")
<br />xchat.hook_command(\"wink\", wink_cb, help=\"Use /commands for more information\")
<br /></pre>
<br />
<br />I used FlickrLive a few days ago, and got a nice testimonial from <a href=\"http://www.flickr.com/photos/meer/\">Meer</a>:
<br />
<br /><blockquote>
<br />\"It was a chance meeting in the night--day--like two ships sometimes do before they hit the lighthouse, which really, they shouldn\'t be doing in the day, \'cuz that says something bad about the intoxication of the captains...
<br />
<br />...oh, right. He\'s one of those guys that you meet once and know is unique. And smart. And a clever writer.\"
<br /></blockquote></span></li>');
document.write('<li class=\"atom_item\"><span class=\"rss_item_title\"><a class=\"rss_item_link\" href=\"XML::Atom::Link=HASH(0x865ba40)\">Hello Xchat</a></span><span class=\"atom_item_desc\">An xchat hello command. Why not?
<br />
<br /><pre>
<br />__module_name__ = \"hellocmd\" 
<br />__module_version__ = \"1.0\" 
<br />__module_description__ = \"A hello command\" 
<br /> 
<br />import xchat
<br />
<br />def hello_cb(word, word_eol, userdata):
<br />	if len(word) < 2:
<br />		print \"Hello World!\"
<br />	else:
<br />		print \"Hello %s\" % word_eol[1]
<br />	return xchat.EAT_NONE
<br />
<br />xchat.hook_command(\"hello\", hello_cb, help=\"/hello &lt;person&gt;, says hello 
<br />                   to person, or hello world\")
<br /></pre>
<br />
<br />That\'s just looking to be abused :)
<br />
<br />Saw <a href=\"http://msdn.microsoft.com/data/default.aspx?pull=/library/en-us/dnwinfs/html/winfs10182004.asp#winfs10182004_topic1\">this </a>, about WinFS. Nothing like [insert name of query language]. Not at all. </span></li>');
document.write('<li class=\"atom_item\"><span class=\"rss_item_title\"><a class=\"rss_item_link\" href=\"XML::Atom::Link=HASH(0x865ba40)\">Even more LG headlines...</a></span><span class=\"atom_item_desc\">I didn\'t realise that last post went through - I thought I cancelled it when Blogger refused to add &lt;script&gt; tags. 
<br />
<br />I found the problem - the apostrophe in Barry O\'Donovan\'s name. I think I\'ll get rid of the separate paragraphs for article & author, and call it a day.</span></li>');
document.write('<li class=\"atom_item\"><span class=\"rss_item_title\"><a class=\"rss_item_link\" href=\"XML::Atom::Link=HASH(0x865ba40)\">More LG headlines</a></span><span class=\"atom_item_desc\">I added it, the script should work, but doesn\'t seem to want to. So I\'ll try including it here, as well as Meerkat\'s (not Meercat :) output:
<br />
<br /><script 
<br />language=\"JavaScript\" 
<br />src=\"http://meerkat.oreillynet.com/?_fl=js\">
<br /></script></span></li>');
document.write('<li class=\"atom_item\"><span class=\"rss_item_title\"><a class=\"rss_item_link\" href=\"XML::Atom::Link=HASH(0x865ba40)\">Linux Gazette headlines</a></span><span class=\"atom_item_desc\">I came across <a href=\"http://www.oreillynet.com/pub/a/rss/2000/05/09/meerkat_api.html?page=3\">this O\'Reilly page about Meercat</a> a few days ago, and figured the Javascript stuff might be nice to provide for LG fans who want to promote us. <br/><br/>I have it embedded in the panel to the right, but it refers to one article in an issue that hasn\'t been published yet. I think it looks OK, but I\'m not done with it yet.<br/><br/>When it\'s ready, the code to add to your site/blog will most likely be:<br/><br/><pre><br/>&lt;script language=\"javascript\" type=\"text/javascript\"<br/>src=\"http://linuxgazette.net/lg.js\"&gt;&lt;/script&gt;<br/></pre></span></li>');
document.write('<li class=\"atom_item\"><span class=\"rss_item_title\"><a class=\"rss_item_link\" href=\"XML::Atom::Link=HASH(0x865ba40)\">Scraping the Sun</a></span><span class=\"atom_item_desc\">I read <a href=\"http://www.thesun.co.uk/\">The Sun</a>. There, I admitted it. I work in a factory, and it\'s good to keep up with the news that everyone else reads, but mostly it\'s because I like looking at pictures of scantily clad women. [shrug]<br/><br/>The Sun has a really annoying site though. Two of the pages I read most often are the <a href=\"http://www.thesun.co.uk/article/0,,13-2004480024,00.html\">\"Viral Emails\"</a> and <a href=\"http://www.thesun.co.uk/section/0,,2002100003,00.html\">Bizarre Exposed</a>. So I figured I\'d script some of it.<br/><br/><b>sun-viral.pl</b>: This creates an RDF feed from the Viral page that I can use from Liferea.<br/><br/><pre><br/>#!/usr/bin/perl -w<br/><br/>use strict;<br/>use XML::RSS;<br/>use LWP::Simple;<br/><br/>#my $testpage = \"http://www.thesun.co.uk/article/0,,13-2004480024,00.html\";<br/>my $toppage = get(\'http://www.thesun.co.uk/section/0,,1,00.html\');<br/>my $page;<br/>my $pageurl;<br/>my $rss = new XML::RSS (version =&gt; \'1.0\');<br/><br/>if ($toppage =~ m!(/article/0,,13[^\"\']*)!)<br/>{<br/>	 $pageurl = \"http://www.thesun.co.uk\" . $1;<br/>}<br/><br/>if (!$pageurl)<br/>{<br/>	exit -1;<br/>}<br/>$page = get($pageurl);<br/>$rss-&gt;channel(title       =&gt; \'The Sun: Viral Emails\',<br/>                 link        =&gt; $pageurl,<br/>                 description =&gt; \'The Sun: Viral Emails\');<br/>      <br/>my @lines = split (\"&lt;[tT][Rr]\", $page);<br/><br/>foreach (@lines)<br/>{<br/>	if (m!\'(/popupWindow/0,,13[^\"\']*)\', \d+, \d+, \'email\d+\'\);\"&gt;([^&lt;]*)&lt;/A&gt;!i)<br/>	{<br/>		$rss-&gt;add_item(title       =&gt; \"$2\",<br/> 			          link        =&gt; \'http://www.thesun.co.uk\' . $1,<br/>		       	          description =&gt; \"$pageurl\");<br/>	}<br/>}<br/><br/>print $rss-&gt;as_string;<br/></pre><br/><br/><b>sun-bizarre.pl</b>: This scrapes <a href=\"http://www.thesun.co.uk/section/0,,4,00.html\">Bizarre</a> (I haven\'t gotten around to the rest of it yet)<br/><br/><pre><br/>#!/usr/bin/perl -w<br/><br/>use strict;<br/>use XML::RSS;<br/>use LWP::Simple;<br/><br/>my $page = get(\'http://www.thesun.co.uk/section/0,,4,00.html\');<br/><br/>my $rss = new XML::RSS (version =&gt; \'1.0\');<br/><br/>$rss-&gt;channel(title       =&gt; \'The Sun: Bizarre\',<br/>     	      link        =&gt; \'http://www.thesun.co.uk/section/0,,4,00.html\',<br/>	      description =&gt; \'The Sun: Bizarre\');<br/><br/># Eek! .* is a bit much, though it works.<br/># Matches top story<br/>if ($page =~ m!&lt;tr&gt;&lt;td colspan=\\"\d\\"&gt;&lt;a href=\\"(/article/0,,.*\.html)\\"&gt;&lt;img src=\\"http://images.thesun.co.uk/picture/.*\.gif\\" alt=\\"([^\"]*)\\"!)<br/>{<br/>	#print \"$1, $2\";<br/>	$rss-&gt;add_item(title =&gt; \"$2\",<br/>	 	       link =&gt;  \'http://www.thesun.co.uk\' . $1);<br/>}<br/><br/># Other stories<br/><br/>my @lines = split (\"&lt;[tT][Rr]\", $page);<br/><br/>foreach (@lines)<br/>{<br/>	if (m!&lt;td style=[^&gt;]*&gt;&lt;a (class=\\"[^\"]+\\" )?href=\\"(/article/0,,.*\.html)\\"[^&gt;]*&gt;([^&lt;]*)&lt;/a&gt;&lt;br&gt;[\r\n]*&lt;span[^&gt;]*&gt;([^&lt;]*)[\r\n]*&lt;[/]?td!is)	<br/>	{<br/>#		print \"$2, $3, $4\";<br/>		$rss-&gt;add_item(title       =&gt; \"$3\",<br/>			       link        =&gt; \'http://www.thesun.co.uk\' . $2,<br/>			       description =&gt; \"$4\");<br/>	}<br/>}<br/><br/>print $rss-&gt;as_string;<br/></pre><br/><br/><b>sun-pic.pl</b>: This downloads the \"Click here\" images -- I don\'t like popups, and I don\'t like having popups open as new tabs much eithier.<br/><br/><pre><br/>#!/usr/bin/perl -w<br/><br/>use strict;<br/>use LWP::Simple;<br/><br/>my $uri = shift;<br/>my $page = get ($uri);<br/><br/>my $uris;<br/><br/>foreach (split (\"\r\n\", $page))<br/>{<br/>	if (m!(/popupWindow/[^.]*.html)!i)<br/>	{<br/>		$uris .= \"http://www.thesun.co.uk$1 \";<br/>	}<br/>	elsif (m!window.open\(\'(http://images.thesun.co.uk/picture/0,,[^,]*,00.[gj][ip][fg])\'!i)<br/>	{<br/>		$uris .= \"$1 \";<br/>	}<br/>}<br/>`cd /home/jimmy/.download &amp;&amp; wget --referer=$uri -x $uri $uris`;<br/><br/>foreach (split (\" \", $uris))<br/>{<br/>	if (/htm[l]+$/i)<br/>	{<br/>		$page = get ($_);<br/>		foreach (split (\"\r\n\", $page))<br/>		{<br/>			if (m!(http://images.thesun.co.uk/picture[s]?/0,,[^,]*,00.[gj][ip][fg])!i)<br/>			{<br/>				`cd /home/jimmy/Pictures &amp;&amp; wget $1`;<br/>			}<br/>		}<br/>	}<br/>}<br/></pre></span></li>');
document.write('<li class=\"atom_item\"><span class=\"rss_item_title\"><a class=\"rss_item_link\" href=\"XML::Atom::Link=HASH(0x865ba40)\">Another week</a></span><span class=\"atom_item_desc\">Another week off work. Last Thursday I went to Cashel to get my stiches removed, and the nurse put a finger cot on my finger, which was extremely painful. The next day I decided to do a mass hair removal, and it got soaked in the shower. Removed it afterwards to find that it had been cutting off the bloodflow to the finger. Got a lot of odd feelings in the finger, so I went to the factory doctor, who told me I couldn\'t be around extremes of temperature, so no work this week.<br/><br/>Been reading and watching movies mostly. I got \"Going Postal\" last Thursday, reread \"Night Watch\" and \"Equal Rites\", started reading \"System of the World\", and watched <a href=\"http://imdb.com/title/tt0253474/\">\"The Pianist\"</a> among others. Collected quotes, as usual.<br/><br/>Equal Rites:<br/><br/>\"a hint was to Esk what a mosquito bite was to the average rhino because she was already learning that if you ignore the rules people will, half the time, quietly rewrite them so that they don\'t apply to you.\"<br/><br/>\"Esk, of course, had not been trained, and it is well known that a vital ingredient of success is not knowing that what you\'re attempting can\'t be done. A person ignorant of the possibility of failure can be a halfbrick in the path of the bicycle of history.\"<br/><br/>\"They both savoured the strange warm glow of being much more ignorant than ordinary people, who were ignorant of only ordinary things.\"<br/><br/>Night Watch:<br/><br/>\"It wasn\'t that he\'d <i>liked</i> being shot at by hooded figures in the temporary employ of his many and varied enemies, but he\'d always looked at it as some kind of vote of confidence. It showed that he was annoying the rich and arrogant people who ought to be annoyed.\"<br/><br/>\"\'Yeah, all right, but everyone knows they torture people,\' mumbled Sam.<br/>\'Do they?\' said Vimes. \'Then why doesn\'t anyone do anything about it?\'<br/>\'\'cos they torture people.\'<br/>Ah, at least I was getting a grasp of basic social dynamics, thought Vimes.\"<br/><br/>\"Ninety per cent of most magic merely consists of knowing one extra fact.\"<br/><br/>\"This was a very <i>thorough</i> cell. Not even sound was meant to escape\"<br/><br/>Going Postal:<br/><br/>\"The broom must have been kept as an ornament, because it certainly hadn\'t been used much on the accumulations in the stable yard. On the positive side, it meant that he had fallen into something soft. On the negative side, this meant he had fallen into something soft.\"<br/><br/>\"Dimwell Arrhythmic Rhyming Slang: Various rhyming slangs are known, and have given the universe such terms as \'apples and pears\' (stairs), \'rubbity-dub\' (pub) and \'busy bee\' (General Theory of Relativity). The Dimwell Street rhyming slang is probably unique in that it does not, in fact, rhyme. No one knows why, but theories so far advanced are 1) that it is quite complex and in fact follows hidden rules or 2) Dimwell is well named or 3) it\'s made up to annoy strangers, which is the case with most such slangs.\"<br/><br/>\"What kind of man would put a known criminal in charge of a major branch of government? Apart from, say, the average voter.\"<br/><br/>\"And if Moist von Lipwig couldn\'t cream a little somethi-- a <i>big</i> something off the top, and the bottom, and maybe a little off the sides, then he didn\'t deserve to!\"<br/><br/>\"\'You wrote <i>everything</i> down, Crispin?\' he said. \'Why?\'<br/>Crispin looked apalled. \'Got to keep records, Reacher,\' he said. \'Can\'t cover y\'tracks if you don\'t know where y\'left \'em. Then ... can put it all back, see, hardly a crime at all.\'\"<br/><br/>\"You had to admire the way perfectly innocent words were mugged, ravished, stripped of all true meaning and decency and then sent to walk the gutter for Reacher Gilt, although \'synergistically\' had probably been a whore from the start.\"<br/></span></li>');
document.write('</ul>');
document.write('</div>');
