<?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>Phurix Labs</title>
	<atom:link href="http://labs.phurix.net/feed" rel="self" type="application/rss+xml" />
	<link>http://labs.phurix.net</link>
	<description>Research and development</description>
	<lastBuildDate>Thu, 02 Feb 2012 15:42:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Migrating IMAP mailboxes to a cPanel server</title>
		<link>http://labs.phurix.net/posts/migrating-imap-mailboxes-to-a-cpanel-server</link>
		<comments>http://labs.phurix.net/posts/migrating-imap-mailboxes-to-a-cpanel-server#comments</comments>
		<pubDate>Mon, 07 Nov 2011 23:02:22 +0000</pubDate>
		<dc:creator>James Wade</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[cpanel]]></category>
		<category><![CDATA[imap]]></category>
		<category><![CDATA[imapsync]]></category>
		<category><![CDATA[migration]]></category>

		<guid isPermaLink="false">http://labs.phurix.net/?p=3322</guid>
		<description><![CDATA[A customer got in touch with us and explained their situation. They need to setup their email on the go and configure some forwarders. Their issue was that they were never given access to the control panel by the account &#8230; <a href="http://labs.phurix.net/posts/migrating-imap-mailboxes-to-a-cpanel-server">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/the-requested-url-cpanel-was-not-found-on-this-server' rel='bookmark' title='The requested URL /cpanel was not found on this server'>The requested URL /cpanel was not found on this server</a> <small>If you run cPanel servers, then you may at some...</small></li>
<li><a href='http://labs.phurix.net/posts/installing-subversion-on-a-cpanel-server' rel='bookmark' title='Installing Subversion on a cPanel Server'>Installing Subversion on a cPanel Server</a> <small>It should be easy right? Just &#8220;yum install subversion&#8221;. Nope. You...</small></li>
<li><a href='http://labs.phurix.net/posts/how-to-find-the-fastest-cvsup-mirror-server' rel='bookmark' title='How to find the fastest CVSUP mirror server'>How to find the fastest CVSUP mirror server</a> <small>Some time ago I wrote about using fastest_cvsup, to find...</small></li>
<li><a href='http://labs.phurix.net/posts/installing-ioncube-loader-with-cpanel-on-centos' rel='bookmark' title='Installing IonCube Loader with cPanel on CentOS'>Installing IonCube Loader with cPanel on CentOS</a> <small>There seems to be limited details of how this is...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>A customer got in touch with us and explained their situation.<a href="http://labs.phurix.net/upload/Envelope.png"><img class="alignright size-full wp-image-3328" title="Envelope" src="http://labs.phurix.net/upload/Envelope.png" alt="" width="256" height="256" /></a></p>
<p>They need to setup their email on the go and configure some forwarders. Their issue was that they were never given access to the control panel by the account holder and have since lost touch.</p>
<p>This unfortunately left them in a situation where they had no control over their hosting, they asked me to help them out.</p>
<p>My task was to migrate their existing IMAP mailboxes to their hosting account on one of our cPanel servers&#8230;</p>
<p><span id="more-3322"></span></p>
<p>The first thing I did was get their UK domain onto our TAG giving us control over that for a small cost of £10+VAT, which the customer was only happy to pay.</p>
<p>There are other ways to get control of the domain without the cost, such as dealing with the host directly but in this case, fasthosts refuses to communicate with you unless you&#8217;re a customer. Ridiculous.</p>
<p>From here on inward, you&#8217;ll need root access to cPanel WHM on your server, or know someone who has.</p>
<p>At this point you need to start to create your mailboxes on the new server that match up to the existing ones.</p>
<p>The only issue with this is that you may find you can&#8217;t add &#8220;Remote Domains&#8221; (domains hosted elsewhere).</p>
<blockquote><p>This item lets you allow cPanel users to create parked and addon domains that resolve to other servers. To make your selection, click the button corresponding to the option you wish to use. This value defaults to Off.</p>
<p>Warning: Enabling this option can cause major security issues. We strongly recommend that you do not enable this option.</p></blockquote>
<p>You&#8217;ll need to &#8220;<a href="http://docs.cpanel.net/twiki/bin/view/AllDocumentation/WHMDocs/TweakSettings#Domains">Allow Remote Domains</a>&#8221; (Under &#8220;Tweak Settings&#8221; in WHM) so you&#8217;re able to add the domain. Once added, you can turn it off again.</p>
<p>As I said, once the domain is added you can <a href="http://www.cpanel.net/media/tutorials/emailaccounts.htm">create your mailboxes</a> in cPanel to match what you already have.</p>
<p>I then went ahead and added them to the customer&#8217;s email client (Outlook 2007) to make sure everything was working as expected (it was).</p>
<p>They should have two sets of accounts added for each email address, the only difference between them should be the servers they use.</p>
<h3>Migrating</h3>
<p>This is where the fun starts.</p>
<p>If you&#8217;ve tried moving messages before in Outlook you&#8217;ll know it&#8217;s pretty slow. The issue is that, you&#8217;re downloading the message from the existing server, copying it to your computer, then uploading it to the other server.</p>
<p>This is a slow process, especially if you&#8217;re on regular UK broadband. In addition to that, you&#8217;ll find that Outlook will lock up while it waits for the server to respond.</p>
<p>I tested moving a few thousand messages: it took 8 hours. At this rate it would take around a week to do all of the accounts which isn&#8217;t feasible in a live environment.</p>
<p>Thunderbird isn&#8217;t much better. There had to be a better solution&#8230;</p>
<p>I got in touch with cPanel, as they have a dedicated &#8220;migration&#8221; team, however they were asking for shell, ftp or control panel access, none of which the customer had.</p>
<p>At first I had considered a server side, IMAP compatible email client such as Mutt or PINE, but I felt this may be a bit cumbersome.</p>
<p>Enter imapsync&#8230;</p>
<h3>imapsync</h3>
<p>After a quick search I came across imapsync which appears to be the solution I was looking for.</p>
<p>It&#8217;s written in Perl and is open source so there&#8217;s no reason it shouldn&#8217;t run on a CentOS server.</p>
<p>To install imapsync on CentOS (with cPanel) you&#8217;ll need to do the following:</p>
<p>First of all, imapsync isn&#8217;t in any of the official CentOS repositories so you need to install the <a href="http://wiki.centos.org/AdditionalResources/Repositories/RPMForge">RPMForge repository</a>.</p>
<p>So, for example, on a CentOS 4 i386 install I would do:</p>
<blockquote><p>wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el4.rf.i386.rpm</p>
<p>rpm -i rpmforge-release-0.5.2-2.el4.rf.i386.rpm</p></blockquote>
<p>Now it&#8217;s installed, you can utilise it by using yum combined with &#8220;&#8211;enablerepo=rpmforge&#8221; to install imapsync.</p>
<p>However, before you go ahead and do that, you need to realise that because cPanel has it&#8217;s own set of perl modules and blocks the OS ones, you need to disable the &#8220;exclude&#8221; line in the yum configuration file.</p>
<blockquote><p>nano -w /etc/yum.conf</p>
<p>Note: Use whatever editor you prefer, I&#8217;m using nano. The -w is for no word wrap as this file contains long lines.</p></blockquote>
<p>In this file, you need to comment out the following like:</p>
<blockquote><p>#exclude=apache* bind-chroot courier* dovecot* exim* filesystem httpd* mod_ssl* mysql* nsd* perl* php* pr$</p></blockquote>
<p>The hash (#) at the beginning means it&#8217;ll no longer be parsed, so nothing is excluded.</p>
<p>Now you can go ahead and install imapsync trouble free:</p>
<blockquote><p>yum install imapsync &#8211;enablerepo=rpmforge</p></blockquote>
<p>This should install imapsync and any dependencies (such as the required perl modules).</p>
<p>The only advice that cPanel gave me when doing this is:</p>
<blockquote><p>It is possible this could break some components of cPanel, but it should be generally repairable as long as you run &#8220;/scripts/checkperlmodules &#8211;full &#8211;force&#8221; afterwards to rebuild/reinstall the cPanel versions of the various modules.</p></blockquote>
<p>I suggest you also do that once imapsync is installed to ensure you don&#8217;t break anything in cPanel.</p>
<h3>Migration</h3>
<p>Now we have imapsync installed we can actually use it&#8230;</p>
<blockquote>
<pre>imapsync \
       --host1 mail.example.co.uk --authmech1 PLAIN --user1 joe.blogs@example.co.uk --password1 12345678 \
       --host2 lemon.phurix.com --authmech2 PLAIN --user2 joe.blogs@example.co.uk --password2 99999999</pre>
</blockquote>
<p>This should be enough to get you going, but do be aware of the SECURITY issues outlined in the <a href="http://ks.lamiral.info/imapsync/README">imapsync README</a>.</p>
<p>Once this is done, all you need to do is get the name servers (or just the MX) changed on the domain to new hosting and after about 4 hours you should be good to go.</p>
<p>Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/the-requested-url-cpanel-was-not-found-on-this-server' rel='bookmark' title='The requested URL /cpanel was not found on this server'>The requested URL /cpanel was not found on this server</a> <small>If you run cPanel servers, then you may at some...</small></li>
<li><a href='http://labs.phurix.net/posts/installing-subversion-on-a-cpanel-server' rel='bookmark' title='Installing Subversion on a cPanel Server'>Installing Subversion on a cPanel Server</a> <small>It should be easy right? Just &#8220;yum install subversion&#8221;. Nope. You...</small></li>
<li><a href='http://labs.phurix.net/posts/how-to-find-the-fastest-cvsup-mirror-server' rel='bookmark' title='How to find the fastest CVSUP mirror server'>How to find the fastest CVSUP mirror server</a> <small>Some time ago I wrote about using fastest_cvsup, to find...</small></li>
<li><a href='http://labs.phurix.net/posts/installing-ioncube-loader-with-cpanel-on-centos' rel='bookmark' title='Installing IonCube Loader with cPanel on CentOS'>Installing IonCube Loader with cPanel on CentOS</a> <small>There seems to be limited details of how this is...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://labs.phurix.net/posts/migrating-imap-mailboxes-to-a-cpanel-server/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is Google PageRank dead?</title>
		<link>http://labs.phurix.net/posts/is-google-pagerank-dead</link>
		<comments>http://labs.phurix.net/posts/is-google-pagerank-dead#comments</comments>
		<pubDate>Thu, 06 Oct 2011 21:30:30 +0000</pubDate>
		<dc:creator>James Wade</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[pagerank]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://labs.phurix.net/?p=3314</guid>
		<description><![CDATA[PageRank is dead, long live PageRank. As we said recently, there&#8217;s been lots of speculation as to whether PageRank is dead or not. It isn&#8217;t, just Google are moving the goals a bit. Basically, they don&#8217;t want you to focus &#8230; <a href="http://labs.phurix.net/posts/is-google-pagerank-dead">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/pagerank-viewer-launch' rel='bookmark' title='PageRank Viewer Launch'>PageRank Viewer Launch</a> <small>Back in 2007, we were developing code for our domain...</small></li>
<li><a href='http://labs.phurix.net/articles/pagerank' rel='bookmark' title='Google PageRank Script'>Google PageRank Script</a> <small>PageRank Scripts on GitHub The Google PageRank is a scoring...</small></li>
<li><a href='http://labs.phurix.net/posts/the-google-translate-recursion-bug' rel='bookmark' title='The Google Translate recursion bug'>The Google Translate recursion bug</a> <small>Recently I found a bug in Google Translate. It&#8217;s not...</small></li>
<li><a href='http://labs.phurix.net/posts/getting-started-with-quercus-in-google-app-engine' rel='bookmark' title='Getting started with Quercus in Google App Engine'>Getting started with Quercus in Google App Engine</a> <small>Last year an article was written on a blog about...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>PageRank is dead, long live PageRank.<img class="alignright size-medium wp-image-3317" title="Dead Parrot" src="http://labs.phurix.net/upload/dead-parrot-1-300x168.png" alt="" width="300" height="168" /></p>
<p>As we said <a href="http://labs.phurix.net/posts/pagerank-viewer-launch">recently</a>, there&#8217;s been lots of speculation as to whether PageRank is dead or not. It isn&#8217;t, just Google are moving the goals a bit. Basically, they don&#8217;t want you to focus on PageRank but it&#8217;s still massively important to them.</p>
<p>All this talk of dead, reminds me of the <a href="http://en.wikipedia.org/wiki/Dead_Parrot_sketch">Monty Python dead parrot sketch</a>, only in this case, it isn&#8217;t dead. An anti-dead-parrot if you will.</p>
<p>So what&#8217;s with all the <a href="http://www.google.co.uk/news?q=pagerank+dead">news about PageRank being dead</a>? Google just changed their code, that&#8217;s all&#8230;</p>
<p><span id="more-3314"></span></p>
<h3>What&#8217;s going on then?</h3>
<p>Originally, everyone used the code in the Internet Explorer plugin, then the Firefox plugin came along.</p>
<p>The common thing about both was the URL they used to lookup the PageRank:</p>
<blockquote><p>http://toolbarqueries.google.com/search?client=navclient-auto&amp;ch=%s&amp;features=Rank&amp;q=info:%s</p>
<p>Note: The first %s is the checkhash, while the second is the actual URL you&#8217;re looking up.</p></blockquote>
<p>Back in August, <a href="http://james.slaterspage.com/scraping-google-related-with-bonus-pagerank/">James Slater</a> was investigating the new <a href="https://chrome.google.com/webstore/detail/cikfgcnnhcibkipoldbjegmeojnkaled">Google Related chrome plugin</a> only to discover the new PageRank lookup URLs:</p>
<blockquote><p>http://toolbarqueries.google.com/tbr?client=navclient-auto&amp;ch=%s&amp;features=Rank&amp;q=info:%s</p></blockquote>
<p>Also, if you used to use the host &#8220;www.google.com&#8221; this no longer works either, use &#8220;toolbarqueries.google.com&#8221; instead.</p>
<h3>Let there be code!</h3>
<p>As part of our ongoing commitment to our <a href="http://pagerank.phurix.net/">PageRank lookup tool</a>, not only have we fixed our code, but we&#8217;ve released working PageRank scripts to GitHub.</p>
<ul>
<li><a href="https://github.com/phurix/pagerank/">PageRank on GitHub</a></li>
</ul>
<p>PageRank is dead, long live PageRank.</p>
<p>Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/pagerank-viewer-launch' rel='bookmark' title='PageRank Viewer Launch'>PageRank Viewer Launch</a> <small>Back in 2007, we were developing code for our domain...</small></li>
<li><a href='http://labs.phurix.net/articles/pagerank' rel='bookmark' title='Google PageRank Script'>Google PageRank Script</a> <small>PageRank Scripts on GitHub The Google PageRank is a scoring...</small></li>
<li><a href='http://labs.phurix.net/posts/the-google-translate-recursion-bug' rel='bookmark' title='The Google Translate recursion bug'>The Google Translate recursion bug</a> <small>Recently I found a bug in Google Translate. It&#8217;s not...</small></li>
<li><a href='http://labs.phurix.net/posts/getting-started-with-quercus-in-google-app-engine' rel='bookmark' title='Getting started with Quercus in Google App Engine'>Getting started with Quercus in Google App Engine</a> <small>Last year an article was written on a blog about...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://labs.phurix.net/posts/is-google-pagerank-dead/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Integrate a newsletter into your website</title>
		<link>http://labs.phurix.net/posts/integrate-a-newsletter-into-your-website</link>
		<comments>http://labs.phurix.net/posts/integrate-a-newsletter-into-your-website#comments</comments>
		<pubDate>Wed, 07 Sep 2011 13:26:56 +0000</pubDate>
		<dc:creator>James Wade</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[mailchimp]]></category>
		<category><![CDATA[mailing lists]]></category>
		<category><![CDATA[mailman]]></category>
		<category><![CDATA[newsletter]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://labs.phurix.net/?p=3257</guid>
		<description><![CDATA[Over the years I&#8217;ve been asked how to integrate a newsletter into a website quite a few times. These days I often find myself recommending a third party service such as MailChimp, however I soon discovered that as brilliant as &#8230; <a href="http://labs.phurix.net/posts/integrate-a-newsletter-into-your-website">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/british-fuel-cost-per-mile' rel='bookmark' title='British fuel cost per mile'>British fuel cost per mile</a> <small>I was trying to work out how to estimate how...</small></li>
<li><a href='http://labs.phurix.net/posts/how-to-copyright-your-website' rel='bookmark' title='How to Copyright your website'>How to Copyright your website</a> <small>People often ask me how to go about getting their...</small></li>
<li><a href='http://labs.phurix.net/posts/php-coding-standards-and-best-practices' rel='bookmark' title='PHP coding standards and best practices'>PHP coding standards and best practices</a> <small>I have been using PHP for a long time now,...</small></li>
<li><a href='http://labs.phurix.net/posts/free-icons' rel='bookmark' title='Free icon sets for your website'>Free icon sets for your website</a> <small>If you don&#8217;t have the time to make your own...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://labs.phurix.net/upload/mailman-par-avion.png"><img class="alignright size-medium wp-image-3260" title="Mailman powering our Newsletter" src="http://labs.phurix.net/upload/mailman-par-avion-300x165.png" alt="" width="300" height="165" /></a>Over the years I&#8217;ve been asked how to integrate a newsletter into a website quite a few times.</p>
<p>These days I often find myself recommending a third party service such as <a href="http://mailchimp.com/">MailChimp</a>, however I soon discovered that as brilliant as it is, MailChimp its not for everyone.</p>
<p>For example, many of our web hosting clients want to run their own mail campaigns through their own website rather than use a third party service.</p>
<p><span id="more-3257"></span></p>
<h3>What software should we use?</h3>
<p>From memory there&#8217;s a few ways to do that:</p>
<ul>
<li><a href="http://docs.cpanel.net/twiki/bin/view/AllDocumentation/CpanelDocs/MailingLists">Mailman</a> &#8211; Installed with cPanel</li>
<li><a href="http://www.phplist.com/">PHPList</a> - Install yourself or through fantastico, I&#8217;m not a fan</li>
<li><a href="http://www.greatcircle.com/majordomo/">Majordomo</a> &#8211; Not installed</li>
</ul>
<p>There&#8217;s quite a few other &#8220;<a href="http://en.wikipedia.org/wiki/Category:Free_mailing_lists">free mailing list</a>&#8221; solutions and there&#8217;s plenty of <a href="http://alternativeto.net/software/mailman/">alternatives to Mailman</a>, but Mailman is the preferred option for us, mainly because it&#8217;s reliable and established&#8230;</p>
<blockquote><p>&#8220;cPanel currently uses Mailman, which is an open source product under the GNU Project&#8221;</p>
<p>- <a href="http://www.cpanel.net/podcast?page_id=673">Adam Wien, Systems Administrator</a></p></blockquote>
<p>It&#8217;s reassuring when software is used by a vendor such as cPanel, as you know it&#8217;s likely to be supported for the foreseeable future.</p>
<p>It&#8217;s really easy to <a href="http://docs.cpanel.net/twiki/bin/view/AllDocumentation/CpanelDocs/MailingLists">get started</a> with the Mailman Mailing Lists in cPanel, however there&#8217;s even a <a href="http://www.cpanel.net/media/tutorials/mailinglists.htm">video tutorial</a> if you&#8217;re a little unsure.</p>
<blockquote><p>Tip: When you setup your mailing list call it &#8220;newsletter&#8221; so its purpose is easy to identify.</p></blockquote>
<p>Now we&#8217;ve decided what software we&#8217;re using and we&#8217;ve setup our newsletter mailing list, we can now actually integrate it with our website.</p>
<p>When I first started looking into this, there wasn&#8217;t many ways to integrate Mailman using PHP, just an outdated article entitled <a href="http://wiki.list.org/pages/viewpage.action?pageId=4030648#">How do I integrate Mailman with PHP, or any other web enabling technology?</a></p>
<p>Don&#8217;t worry about that, because we&#8217;re here to help&#8230;</p>
<h3>Introducing the Mailman Widget for WordPress</h3>
<p>What we want to achieve here is a widget on our website so users are able to subscribe to our newsletter.</p>
<p>If you&#8217;re using WordPress, this is no problem as we&#8217;ve got a WordPress Plugin to do it for you:</p>
<ul>
<li><a href="http://wordpress.org/extend/plugins/mailman-widget/">Mailman Widget</a></li>
</ul>
<p>Simply login to your WordPress site as you normally would and go to the <a href="http://codex.wordpress.org/Plugins_Add_New_Screen">Add New Plugin</a> screen. Just look for the &#8220;Mailman Widget&#8221;. If in doubt, take a look at the <a href="http://wordpress.org/extend/plugins/mailman-widget/screenshots/">Mailman Widget screenshots</a> to help you out.</p>
<h3>Not using WordPress? Don&#8217;t panic!</h3>
<p>We can use exactly the same library that&#8217;s used in the <em>Mailman Widget</em> on <em>any</em> PHP based website.</p>
<ul>
<li><a href="http://php-mailman.sourceforge.net/">PHP-Mailman</a></li>
</ul>
<p>Simply download the file and take a look at the example to get you started.</p>
<h3>The future of PHP Mailman</h3>
<p>In future, using PHP Mailman should be even easier as it is turned into a PHP Pear package called Services_Mailman.</p>
<p>You can now download the Pear package via github:</p>
<ul>
<li><a href="https://github.com/pear/Services_Mailman">Services_Mailman</a></li>
</ul>
<p>Simply click the download button and extract the files. You can either require it like a normal class or install it as a Pear package by running the following:</p>
<blockquote><p>pear install package.xml</p></blockquote>
<p>Once the <a href="http://pear.php.net/pepr/pepr-proposal-show.php?id=672">proposal for Services_Mailman</a> has been passed, you should be able to simply do &#8220;pear install Services_Mailman&#8221; as it will be added to the Pear channel.</p>
<h3>In summary</h3>
<p>I hope this helps make it easier for you to add a newsletter to your website. Despite the rise of social media (such as twitter) email is still the number 1 way to communicate online, so it&#8217;s never been more important to keep in touch with your customers or peers.</p>
<p><strong>Good luck!</strong></p>
<p>Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/british-fuel-cost-per-mile' rel='bookmark' title='British fuel cost per mile'>British fuel cost per mile</a> <small>I was trying to work out how to estimate how...</small></li>
<li><a href='http://labs.phurix.net/posts/how-to-copyright-your-website' rel='bookmark' title='How to Copyright your website'>How to Copyright your website</a> <small>People often ask me how to go about getting their...</small></li>
<li><a href='http://labs.phurix.net/posts/php-coding-standards-and-best-practices' rel='bookmark' title='PHP coding standards and best practices'>PHP coding standards and best practices</a> <small>I have been using PHP for a long time now,...</small></li>
<li><a href='http://labs.phurix.net/posts/free-icons' rel='bookmark' title='Free icon sets for your website'>Free icon sets for your website</a> <small>If you don&#8217;t have the time to make your own...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://labs.phurix.net/posts/integrate-a-newsletter-into-your-website/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google&#8217;s Official Profanity API</title>
		<link>http://labs.phurix.net/posts/googles-official-profanity-api</link>
		<comments>http://labs.phurix.net/posts/googles-official-profanity-api#comments</comments>
		<pubDate>Wed, 17 Aug 2011 10:09:15 +0000</pubDate>
		<dc:creator>James Wade</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[bad words]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[profanity]]></category>

		<guid isPermaLink="false">http://labs.phurix.net/?p=3180</guid>
		<description><![CDATA[Recently a list of &#8220;bad words&#8221; were made available through Google&#8217;s new website which asks: &#8220;What do you love?&#8221; (wdyl.com). So, perhaps I was a bit hasty writing off WhoisX. The list of profanities was discovered in the Javascript on the website, however Google reacted &#8230; <a href="http://labs.phurix.net/posts/googles-official-profanity-api">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/the-rise-and-fall-of-whoisx' rel='bookmark' title='The rise and fall of WhoisX'>The rise and fall of WhoisX</a> <small>WhoisX is a domain name lookup service, similar to the...</small></li>
<li><a href='http://labs.phurix.net/posts/what-is-my-ip' rel='bookmark' title='What is my IP?'>What is my IP?</a> <small>An IP address is a unique number which identifies a...</small></li>
<li><a href='http://labs.phurix.net/posts/get_favicon-php-function' rel='bookmark' title='get_favicon() php function'>get_favicon() php function</a> <small>I was after a php function that would get the...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wdyl.com/?q=butt hole lane"><img class="alignright size-medium wp-image-3230" title="Butt_Hole_Road" src="http://i.imgur.com/U2IWJ.jpg" alt="" width="300" height="199" /></a>Recently a list of &#8220;bad words&#8221; were made available through Google&#8217;s new website which asks: <a href="http://wdyl.com/">&#8220;What do you love?&#8221;</a> (wdyl.com).</p>
<p>So, perhaps I was a bit hasty <a href="http://labs.phurix.net/posts/the-rise-and-fall-of-whoisx">writing off WhoisX</a>.</p>
<p>The list of profanities was <a href="http://fffff.at/googles-official-list-of-bad-words/">discovered</a> in the Javascript on the website, however Google reacted quickly and switched this to a URL lookup instead of a Javascript one therefore keeping the list away from prying eyes.</p>
<p>However, what this does mean is now we have an API to play with:<span id="more-3180"></span></p>
<blockquote><p><a href="http://www.wdyl.com/profanity?q=xxx">http://www.wdyl.com/profanity?q=xxx</a></p></blockquote>
<p>This will return a true JSON response:</p>
<blockquote><p>{&#8220;response&#8221;: &#8220;true&#8221;}</p></blockquote>
<p>While looking up something like &#8220;lol&#8221; will return a false response:</p>
<blockquote><p><a href="http://www.wdyl.com/profanity?q=lol">http://www.wdyl.com/profanity?q=lol</a></p>
<p>{&#8220;response&#8221;: &#8220;false&#8221;}</p></blockquote>
<p>All in all a pretty simple and easy way to figure out whether Google thinks it is a bad word or not.</p>
<p>On the down side, you can&#8217;t easily use it on your site, as, if you try to call it by AJAX you&#8217;ll be faced by the following error:</p>
<blockquote><p>XMLHttpRequest cannot load http://www.wdyl.com/profanity. Origin http://example.org is not allowed by Access-Control-Allow-Origin.</p></blockquote>
<p>On the upside, we don&#8217;t want to do that anyway, we can to use it from PHP.</p>
<blockquote>
<pre>&lt;?php

$q=isset($_REQUEST['q'])?urlencode($_REQUEST['q']):'';
readfile('http://www.wdyl.com/profanity?q='.$q);

?&gt;</pre>
</blockquote>
<p>That&#8217;s right, that&#8217;s all there is to it. Simply copy that into the a file called &#8220;profanity.php&#8221; and you&#8217;re ready to go!</p>
<p>Now you can do a <a href="http://api.jquery.com/jQuery.getJSON/">JSON cal</a>l to your &#8216;profanity.php&#8217; to tell you whether the word is bad or not.</p>
<p>If that&#8217;s not enough, you could try using the Google Profanity API to avoid displaying ads on pages that contain profanities.</p>
<p>Now if only there was a way to avoid the <a href="http://en.wikipedia.org/wiki/Scunthorpe_problem">Scunthorp problem</a>&#8230;</p>
<p>Going back to the reported Adsense problem on WhoisX.co.uk, the example query was:</p>
<blockquote><p>adult-hardcore-sex.cuntspace.me.uk</p></blockquote>
<p>Passing this to the API returned false.</p>
<p>But, changing all the non-word characters to spaces has a different effect:</p>
<blockquote><p>adult hardcore sex cuntspace me uk</p>
<p>{&#8220;response&#8221;: &#8220;true&#8221;}</p></blockquote>
<p>This is done in PHP using a simple regular expression:</p>
<blockquote><p>echo preg_replace(&#8216;/[\W+]/&#8217;,&#8217; &#8216;,&#8217;adult-hardcore-sex.cuntspace.me.uk&#8217;);</p></blockquote>
<p>I&#8217;m not sure this exactly solves the Scunthorp problem, but it definitely does identify &#8220;sex&#8221; as an adult theme which is perfect.</p>
<p>Now to turn it into a usable function:</p>
<blockquote>
<pre>&lt;?php

function is_profanity($q,$json=0) {
	$q=urlencode(preg_replace('/[\W+]/',' ',$q));
	$p=file_get_contents('http://www.wdyl.com/profanity?q='.$q);
	if ($json) { return $p; }
	$p=json_decode($p);
	return ($p-&gt;response=='true')?1:0;
}

$q=isset($_REQUEST['q'])?$_REQUEST['q']:'';
echo is_profanity($q);

?&gt;</pre>
</blockquote>
<p>We can use this function to check whether the query is considered a profanity or not. If it is, it will return a 1, otherwise a 0 is returned.</p>
<p>This function can now be used to include kittens (or whatever) rather than Google Adsense Ads on a pages with &#8220;<a href="https://www.google.com/adsense/support/as/bin/answer.py?hl=en&amp;answer=105957">adult themed</a>&#8221; content.</p>
<p>Brilliant!</p>
<p>Now to submit for <a href="https://www.google.com/adsense/support/bin/request.py?contact_type=policy_violation_appeal">reconsideration</a>&#8230;</p>
<p>Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/the-rise-and-fall-of-whoisx' rel='bookmark' title='The rise and fall of WhoisX'>The rise and fall of WhoisX</a> <small>WhoisX is a domain name lookup service, similar to the...</small></li>
<li><a href='http://labs.phurix.net/posts/what-is-my-ip' rel='bookmark' title='What is my IP?'>What is my IP?</a> <small>An IP address is a unique number which identifies a...</small></li>
<li><a href='http://labs.phurix.net/posts/get_favicon-php-function' rel='bookmark' title='get_favicon() php function'>get_favicon() php function</a> <small>I was after a php function that would get the...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://labs.phurix.net/posts/googles-official-profanity-api/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The rise and fall of WhoisX</title>
		<link>http://labs.phurix.net/posts/the-rise-and-fall-of-whoisx</link>
		<comments>http://labs.phurix.net/posts/the-rise-and-fall-of-whoisx#comments</comments>
		<pubDate>Mon, 15 Aug 2011 08:33:38 +0000</pubDate>
		<dc:creator>James Wade</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://labs.phurix.net/?p=3051</guid>
		<description><![CDATA[WhoisX is a domain name lookup service, similar to the whois service provided by &#8220;domain tools&#8221;, but ours was primarily for UK domain names. It began as a small project to help people check whether a domain was available or not. When &#8230; <a href="http://labs.phurix.net/posts/the-rise-and-fall-of-whoisx">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/googles-official-profanity-api' rel='bookmark' title='Google&#8217;s Official Profanity API'>Google&#8217;s Official Profanity API</a> <small>Recently a list of &#8220;bad words&#8221; were made available through Google&#8217;s new...</small></li>
<li><a href='http://labs.phurix.net/posts/get_favicon-php-function' rel='bookmark' title='get_favicon() php function'>get_favicon() php function</a> <small>I was after a php function that would get the...</small></li>
<li><a href='http://labs.phurix.net/posts/google-adsense-wont-let-me-in' rel='bookmark' title='Google AdSense won&#8217;t let me in!'>Google AdSense won&#8217;t let me in!</a> <small>Back in 2004, I signed up my old site &#8220;hm2k.org&#8221;...</small></li>
<li><a href='http://labs.phurix.net/posts/whoisx-relaunch' rel='bookmark' title='WhoisX relaunch'>WhoisX relaunch</a> <small>We&#8217;re ready now&#8230; So, we&#8217;ve been running WhoisX since 2004,...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://labs.phurix.net/upload/fail.png"><img class="alignright size-medium wp-image-3143" title="Fail narwhal" src="http://labs.phurix.net/upload/fail-300x225.png" alt="" width="300" height="225" /></a><a href="http://whoisx.co.uk/">WhoisX</a> is a domain name lookup service, similar to the whois service provided by &#8220;domain tools&#8221;, but ours was primarily for UK domain names.</p>
<p>It began as a small project to help people check whether a domain was available or not. When a domain was available the visitor was linked to a place they could buy the domain.</p>
<p><span id="more-3051"></span>We developed out the project into more of a whois lookup service because this was useful to customers who wanted to see details about their domain using a web service rather than understanding how to do a whois lookup from the command line.</p>
<p>However, we soon came to realise that the site was causing a high load on the server because it was being hammered by bots. These bots were visiting thousands of URLs in an attempt to get WhoisX to generate a link back to them. Little do they know that, that&#8217;s not how it works.</p>
<p>The project was revamped with a whole load of new features including caching and load checking, which worked very well.</p>
<p>It no longer just did domain lookups either, it did hostnames (showing the &#8220;domain parts&#8221; making it easy to navigate), ip lookups, country code lookups, reverse ip lookups, mail server lookups and various dns queries all displayed within a few seconds.</p>
<p>We expanded the &#8220;social&#8221; aspect to make it easier to share and made it ad supported using Google Adwords.</p>
<p>Personally, I found the tool very useful to quickly check a domain, or drop a link into an email so customers could check for themselves.</p>
<p>This was all working great. The tool was useful to us and it was bringing in a small revenue, so it was all worth while.</p>
<p>However, this ended when Google emailed with the subject &#8220;AdSense ad serving has been disabled to your site&#8221;, the email went on to say:</p>
<blockquote><p>Hello,</p>
<p>During a recent review of your account we found that you are currently<br />
displaying Google ads in a manner that is not compliant with our program<br />
policies<br />
(<a href="https://www.google.com/support/adsense/bin/answer.py?answer=48182&amp;stc=aspe-1pp-en">https://www.google.com/support/adsense/bin/answer.py?answer=48182&amp;stc=aspe-1pp-en</a>).</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
EXAMPLE PAGE: <a href="http://whoisx.co.uk/adult-hardcore-sex.cuntspace.me.uk">http://whoisx.co.uk/adult-hardcore-sex.cuntspace.me.uk</a></p>
<p>Please note that this URL is an example and that the same violations may<br />
exist on other pages of this website or other sites in your network.</p>
<p>VIOLATION(S) FOUND:</p>
<p>LINKS TO ADULT CONTENT: As stated in our program policies, AdSense<br />
publishers are not permitted to place Google ads on pages with adult or<br />
mature content. This includes displaying ads on pages that provide links<br />
for or drive traffic to adult or mature sites. More information about this<br />
policy can be found in our help center<br />
(<a href="https://www.google.com/adsense/support/as/bin/answer.py?hl=en&amp;answer=105957">https://www.google.com/adsense/support/as/bin/answer.py?hl=en&amp;answer=105957</a>).</p>
<p>ADULT SEARCH RESULTS: As stated in our program policies, AdSense<br />
publishers are not permitted to place Google ads on pages with adult or<br />
mature content. This includes search results pages for adult or mature<br />
terms, images or videos with adult keywords or tags, and user generated<br />
comments that are mature in nature. More information about this policy can<br />
be found in our help center (<br />
<a href="https://www.google.com/adsense/support/as/bin/answer.py?hl=en&amp;answer=105957">https://www.google.com/adsense/support/as/bin/answer.py?hl=en&amp;answer=105957</a><br />
).</p>
<p>ACTION TAKEN: We have disabled ad serving to your site.</p>
<p>ACCOUNT STATUS: ACTIVE<br />
Your AdSense account remains active. However, please note that our team<br />
reserves the right to disable your account at any time. As such, we<br />
encourage you to become familiar with our program policies and monitor<br />
your network accordingly.</p>
<p>Issue ID# XXXXXXX</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
Thank you for your cooperation.</p>
<p>Sincerely,</p>
<p>The Google AdSense Team<br />
&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
For more information regarding this email, please visit our Help Center:<br />
<a href="https://www.google.com/adsense/support/bin/answer.py?answer=113058&amp;stc=aspe-ai4-en">https://www.google.com/adsense/support/bin/answer.py?answer=113058&amp;stc=aspe-ai4-en</a>.</p></blockquote>
<p>Although I agree with Google&#8217;s terms, this was an outside case and I couldn&#8217;t understand why they had chosen the example they had, since the &#8220;visit website&#8221; link on the page links to a website that doesn&#8217;t exist.</p>
<p>At the very worst, the URL contains an adult word, which is almost impossible to filter due to the &#8220;<a href="http://en.wikipedia.org/wiki/Scunthorpe_problem">Scunthorpe problem</a>&#8221; and that Google have not supplied a &#8220;bad word list&#8221; for us to work off.</p>
<p>This meant that without spending a lot of time on developing a very complex filter system so that ads aren&#8217;t displayed on pages containing potentially bad words, there was very little we could do about it.</p>
<p>So, this signals the end for <a href="http://whoisx.co.uk/">WhoisX</a> as we know it.</p>
<p>Consider this 30 days that the site will be closing down in it&#8217;s current form.</p>
<p>However, we do have plans to open a new domain lookup service, supported by Phurix in it&#8217;s place.</p>
<p>Watch this space!</p>
<p>Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/googles-official-profanity-api' rel='bookmark' title='Google&#8217;s Official Profanity API'>Google&#8217;s Official Profanity API</a> <small>Recently a list of &#8220;bad words&#8221; were made available through Google&#8217;s new...</small></li>
<li><a href='http://labs.phurix.net/posts/get_favicon-php-function' rel='bookmark' title='get_favicon() php function'>get_favicon() php function</a> <small>I was after a php function that would get the...</small></li>
<li><a href='http://labs.phurix.net/posts/google-adsense-wont-let-me-in' rel='bookmark' title='Google AdSense won&#8217;t let me in!'>Google AdSense won&#8217;t let me in!</a> <small>Back in 2004, I signed up my old site &#8220;hm2k.org&#8221;...</small></li>
<li><a href='http://labs.phurix.net/posts/whoisx-relaunch' rel='bookmark' title='WhoisX relaunch'>WhoisX relaunch</a> <small>We&#8217;re ready now&#8230; So, we&#8217;ve been running WhoisX since 2004,...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://labs.phurix.net/posts/the-rise-and-fall-of-whoisx/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What is my IP?</title>
		<link>http://labs.phurix.net/posts/what-is-my-ip</link>
		<comments>http://labs.phurix.net/posts/what-is-my-ip#comments</comments>
		<pubDate>Tue, 09 Aug 2011 08:48:14 +0000</pubDate>
		<dc:creator>James Wade</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[ip address]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[what is my ip]]></category>

		<guid isPermaLink="false">http://labs.phurix.net/?p=3193</guid>
		<description><![CDATA[An IP address is a unique number which identifies a machine on a network. On the Internet IP addresses are allocated in blocks to ISPs in each country by regional registries, making it possible to identify which country an IP &#8230; <a href="http://labs.phurix.net/posts/what-is-my-ip">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/googles-official-profanity-api' rel='bookmark' title='Google&#8217;s Official Profanity API'>Google&#8217;s Official Profanity API</a> <small>Recently a list of &#8220;bad words&#8221; were made available through Google&#8217;s new...</small></li>
<li><a href='http://labs.phurix.net/posts/pagerank-viewer-launch' rel='bookmark' title='PageRank Viewer Launch'>PageRank Viewer Launch</a> <small>Back in 2007, we were developing code for our domain...</small></li>
<li><a href='http://labs.phurix.net/posts/is-google-pagerank-dead' rel='bookmark' title='Is Google PageRank dead?'>Is Google PageRank dead?</a> <small>PageRank is dead, long live PageRank. As we said recently,...</small></li>
<li><a href='http://labs.phurix.net/posts/over-sixteen-ways-to-obfuscate-e-mail-addresses' rel='bookmark' title='Over sixteen ways to obfuscate e-mail addresses'>Over sixteen ways to obfuscate e-mail addresses</a> <small>Back in 2007 I wrote about email addresses on your...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-3199" title="500px-Coffee_IP.svg" src="http://labs.phurix.net/upload/500px-Coffee_IP.svg_-300x225.png" alt="" width="300" height="225" />An <a href="http://en.wikipedia.org/wiki/IP_address">IP address</a> is a unique number which identifies a machine on a network.</p>
<p>On the Internet IP addresses are allocated in blocks to ISPs in each country by regional registries, making it possible to identify which country an IP address originated in.</p>
<p>Often, if you are connected to the Internet behind a router, you share an online IP address with everyone else on your local area network (LAN).</p>
<p>Sometimes you need to know your external IP address and using something like <a href="http://en.wikipedia.org/wiki/Ipconfig">ipconfig</a> will only return your LAN IP address (something like 192.168.0.1).</p>
<p><span id="more-3193"></span>That is why many &#8220;what is my ip&#8221; websites exist, making it easy for you to lookup your external IP address.</p>
<p>My favourite IP lookup service has been for a long time one run by NASDAQ-100 content delivery specialists &#8220;Akamai Technologies&#8221;:</p>
<ul>
<li><a href="http://whatismyip.akamai.com/">whatismyip.akamai.com</a></li>
</ul>
<p>It&#8217;s brilliant in its simplicity but it&#8217;s not very pretty.</p>
<p>We decided to do something different. We made a pretty &#8220;What is my IP address?&#8221; lookup:</p>
<ul>
<li><a href="http://ip.phurix.net/">ip.phurix.net</a></li>
</ul>
<p>Part of its beauty is that the audience its aimed at is able to quickly read and understand the information at a glance, without any prompts. While those who don&#8217;t understand it can marvel at its pretty form and ponder over its usefulness.</p>
<p>The other part of its beauty is that it&#8217;s <em>highly <a href="http://en.wiktionary.org/wiki/parsable">parsable</a></em>.</p>
<p>It&#8217;s easy to parse the IP address, mainly because the presentation (CSS) is separate from the markup (HTML), but also because of the headers.</p>
<p>Here&#8217;s a short demonstration to show how you can use the headers to get the IP address using this tool:</p>
<blockquote><p>&lt;?php $h=get_headers(&#8216;http://ip.phurix.net&#8217;,1); echo trim($h['Location'],&#8217;/'); ?&gt;</p></blockquote>
<p>However, this method isn&#8217;t very portable, so may not be suitable if you&#8217;re checking against multiple sources at once.</p>
<p>So instead, we can also demonstrate using a simple regular expression and a function that can get http contents (such as file_get_contents() in PHP).</p>
<blockquote><p>&lt;?php echo preg_replace(&#8216;/.*?(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).*/s&#8217;,'$1&#8242;,file_get_contents(&#8216;http://ip.phurix.net&#8217;));?&gt;</p></blockquote>
<p>The brilliance in this little snippet is that it will work with <em>any</em> useful &#8220;What is my IP?&#8221; lookup website.</p>
<p>So as you can see, it&#8217;s really easy to work with as a pretty API as well.</p>
<p>Beyond the IP address, you only need to look at the source code to understand that it&#8217;s easy to parse the other details.</p>
<p>I hope you found this useful!</p>
<p>Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/googles-official-profanity-api' rel='bookmark' title='Google&#8217;s Official Profanity API'>Google&#8217;s Official Profanity API</a> <small>Recently a list of &#8220;bad words&#8221; were made available through Google&#8217;s new...</small></li>
<li><a href='http://labs.phurix.net/posts/pagerank-viewer-launch' rel='bookmark' title='PageRank Viewer Launch'>PageRank Viewer Launch</a> <small>Back in 2007, we were developing code for our domain...</small></li>
<li><a href='http://labs.phurix.net/posts/is-google-pagerank-dead' rel='bookmark' title='Is Google PageRank dead?'>Is Google PageRank dead?</a> <small>PageRank is dead, long live PageRank. As we said recently,...</small></li>
<li><a href='http://labs.phurix.net/posts/over-sixteen-ways-to-obfuscate-e-mail-addresses' rel='bookmark' title='Over sixteen ways to obfuscate e-mail addresses'>Over sixteen ways to obfuscate e-mail addresses</a> <small>Back in 2007 I wrote about email addresses on your...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://labs.phurix.net/posts/what-is-my-ip/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PageRank Viewer Launch</title>
		<link>http://labs.phurix.net/posts/pagerank-viewer-launch</link>
		<comments>http://labs.phurix.net/posts/pagerank-viewer-launch#comments</comments>
		<pubDate>Wed, 03 Aug 2011 14:55:28 +0000</pubDate>
		<dc:creator>James Wade</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[pagerank]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://labs.phurix.net/?p=3142</guid>
		<description><![CDATA[Back in 2007, we were developing code for our domain lookup service. One of the features we wanted was to display the Google PageRank of a domain right there in the lookup along side the whois details. At the time &#8230; <a href="http://labs.phurix.net/posts/pagerank-viewer-launch">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/is-google-pagerank-dead' rel='bookmark' title='Is Google PageRank dead?'>Is Google PageRank dead?</a> <small>PageRank is dead, long live PageRank. As we said recently,...</small></li>
<li><a href='http://labs.phurix.net/articles/pagerank' rel='bookmark' title='Google PageRank Script'>Google PageRank Script</a> <small>PageRank Scripts on GitHub The Google PageRank is a scoring...</small></li>
<li><a href='http://labs.phurix.net/posts/get_favicon-php-function' rel='bookmark' title='get_favicon() php function'>get_favicon() php function</a> <small>I was after a php function that would get the...</small></li>
<li><a href='http://labs.phurix.net/posts/hm2ks-code-repository' rel='bookmark' title='HM2K&#8217;s code repository'>HM2K&#8217;s code repository</a> <small>HM2K&#8217;s code repository is now open for business! This repository...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://pagerank.phurix.net/"><img class="alignright" title="pagerank" src="http://labs.phurix.net/upload/pagerank-300x225.png" alt="" width="300" height="225" /></a>Back in 2007, we were developing code for our domain lookup service.</p>
<p>One of the features we wanted was to display the Google PageRank of a domain right there in the lookup along side the whois details.</p>
<p>At the time we didn&#8217;t know how to pull this information and there was very limited details on it, so some research was required which resulted in a <a href="http://labs.phurix.net/projects/pagerank">PageRank PHP script</a>.</p>
<p>Over time, the resulting &#8220;pagerank.php&#8221; script became very popular and was developed further by fixing bugs and making it easier to use.</p>
<p>Now we wanted to show off our work in the form of a demo, so we launched a website&#8230;</p>
<p><span id="more-3142"></span>We&#8217;ve had a demo of the <a href="http://pagerankviewer.com/">PageRank Viewer</a> online since 2010, but this week we&#8217;ve developed a whole new site along side entirely new code.</p>
<p>The original code we used was reverse engineered from the Internet Explorer toolbar, however it was much later that improved code based on the Google Toolbar for Mozilla Firefox surfaced.</p>
<p>The code from the Google Toolbar for Mozilla Firefox was interesting. By downloading the plugin &#8220;xpi&#8221; file, unzipping it and taking a look at the javascript you are able to see that Google regards PageRank quite highly or has sense of humour:</p>
<blockquote><p>HASH_SEED_=&#8221;Mining PageRank is AGAINST GOOGLE&#8217;S TERMS OF SERVICE. Yes, I&#8217;m talking to you, scammer.&#8221;;</p></blockquote>
<p>The simplicity of this code made it very easy to port over to any scripting language. So along side the launch of the all new PageRank Viewer website, we&#8217;re also shipping code in PHP, Python, Perl, TCL, C++ and D, all with the new code so you can write your own solution.</p>
<p>We bring this to you just in time too, there&#8217;s a perceived deprecation of PageRank after Google didn&#8217;t offer any official PageRank tool in their Google Chrome web browser.</p>
<p>PageRank was removed from webmaster tools, dismissed by a Google employee who said:</p>
<blockquote><p>&#8220;it was silly to tell people not to think about it, but then to show them the data, implying that they should look at it&#8221;</p>
<p>- <a href="http://www.google.com/support/forum/p/Webmasters/thread?tid=6a1d6250e26e9e48&amp;hl=en">Susan Moskwa 14/10/2009</a></p></blockquote>
<p>Although we agree with the point Google is trying to make, we felt there is still a lot of value on PageRank to webmasters.</p>
<p>For example, Google have made it very clear that having a reliable web hosting provider will help with ranking.</p>
<p>With that in mind, we decided to redevelop the PageRank Viewer and release new code to improve availability of PageRank lookups.</p>
<p>We welcome the all new <a href="http://pagerank.phurix.net/">PageRank Viewer</a> to the family as a Phurix Labs project.</p>
<p>Enjoy!</p>
<p>Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/is-google-pagerank-dead' rel='bookmark' title='Is Google PageRank dead?'>Is Google PageRank dead?</a> <small>PageRank is dead, long live PageRank. As we said recently,...</small></li>
<li><a href='http://labs.phurix.net/articles/pagerank' rel='bookmark' title='Google PageRank Script'>Google PageRank Script</a> <small>PageRank Scripts on GitHub The Google PageRank is a scoring...</small></li>
<li><a href='http://labs.phurix.net/posts/get_favicon-php-function' rel='bookmark' title='get_favicon() php function'>get_favicon() php function</a> <small>I was after a php function that would get the...</small></li>
<li><a href='http://labs.phurix.net/posts/hm2ks-code-repository' rel='bookmark' title='HM2K&#8217;s code repository'>HM2K&#8217;s code repository</a> <small>HM2K&#8217;s code repository is now open for business! This repository...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://labs.phurix.net/posts/pagerank-viewer-launch/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Presenting Coinb.in</title>
		<link>http://labs.phurix.net/posts/presenting-coinb-in</link>
		<comments>http://labs.phurix.net/posts/presenting-coinb-in#comments</comments>
		<pubDate>Wed, 27 Jul 2011 10:22:20 +0000</pubDate>
		<dc:creator>James Henry</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://labs.phurix.net/?p=3070</guid>
		<description><![CDATA[Bitcoin is a peer-to-peer cryto currency and we&#8217;ve been working on a free service for bitcoin users to help with accepting payments. Coinb.in is what is known as a &#8220;Bitcoin eWallet Service&#8221; with an easily accessible API aimed at web developers, to allow &#8230; <a href="http://labs.phurix.net/posts/presenting-coinb-in">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/tracking-an-ip-address' rel='bookmark' title='Tracking an IP address'>Tracking an IP address</a> <small>In my job I have to manage lots of machines...</small></li>
<li><a href='http://labs.phurix.net/posts/longip-script' rel='bookmark' title='longip perl script'>longip perl script</a> <small>I wanted to create a script that would convert a...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="Coinb,in - automate bitcoin transactions" src="https://coinb.in/images/coinbin.gif" alt="" width="210" height="52" />Bitcoin is a peer-to-peer cryto currency and we&#8217;ve been working on a free service for bitcoin users to help with accepting payments.</p>
<p><strong><a href="https://coinb.in">Coinb.in</a></strong> is what is known as a &#8220;Bitcoin eWallet Service&#8221; with an easily accessible API aimed at web developers, to allow the acceptance of bitcoins and to process the payments automatically and anonymously from our network via an unbranded interface, at no fee, without having to run a bitcoin client.</p>
<p><em>Coinb.in</em> works by providing your customer with a unique wallet address, which is linked to your account. The <em>coinb.in</em> service then checks the Bitcoin p2p network at regular intervals. Once the payment has been confirmed, you will receive a notification by email and the transaction data will be sent to a script of your choice, which can then be used to process the order and populate your database.</p>
<p><span id="more-3070"></span></p>
<p>There are a number of different ways to implement <em>Coinb.in</em>. The most simple and least complex way would be to implement a &#8220;buy it now&#8221; button, which does not require the user to register first.</p>
<p>For example, on a small project we run, called <a href="http://www.gallush.com">Gallush</a> the following code could be added to <a href="http://www.gallush.com/buy/shell-services/starter-shell/">a product page</a> as a bitcoin &#8220;buy it now&#8221; button.</p>
<blockquote>
<pre>&lt;script src="http://coinb.in/merchant.js"&gt;&lt;/script&gt;
&lt;script&gt;
    var cb = {'uid':'2',
    'amount':'3.00',
    'fromcurrency':'USD',
    'description':'Starter shell. 1 month',
    'ref':'I10',
    'requestemail':1,
    'callback':'http://www.gallush.com/btc-payments.php'};
&lt;/script&gt;
&lt;a href="javascript:;" onClick="coinbin(cb);"&gt;Buy it now!&lt;/a&gt;</pre>
</blockquote>
<p><script type="text/javascript" src="http://coinb.in/merchant.js"></script><script type="text/javascript">// <![CDATA[
    var cb = {'uid':'2',
    'amount':'3.00',
    'fromcurrency':'USD',
    'description':'Starter shell. 1 month',
    'ref':'I10',
    'requestemail':1,
    'callback':'http://www.gallush.com/btc-payments.php'};
// ]]&gt;</script><br />
Here&#8217;s an example: <a onclick="coinbin(cb);" href="javascript:;">Buy it now!</a></p>
<p>The html and javascript above, would generate a link that would require no site registration because when it is clicked it will request that the visitor enters in their email address before they can continue, because of the &amp;requestemail parameter being set.</p>
<p>Once the user has provided their email address, coinb.in will convert 3 USD to the equivalent value in bitcoins, and return this value plus an address to make a payment to.</p>
<p>The &amp;description parameter  should contain a full description of the purchase and the &amp;reference parameter in our example contains the item id (I10).</p>
<p>Once the user had made a payment, and it has been confirmed 6 times, all of the above data and additional transaction data is then sent to the callback URL provided so that it may populate the database and process the order accordingly.</p>
<p>Coinb.in comes complete with, examples, <a href="https://coinb.in/documentation.html">documentation</a> and an API that can output the results into several different formats including XML and JSON objects</p>
<p>Now the question is, would you buy <a href="http://www.phurix.co.uk">web hosting</a> with bitcoins?</p>
<p>Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/tracking-an-ip-address' rel='bookmark' title='Tracking an IP address'>Tracking an IP address</a> <small>In my job I have to manage lots of machines...</small></li>
<li><a href='http://labs.phurix.net/posts/longip-script' rel='bookmark' title='longip perl script'>longip perl script</a> <small>I wanted to create a script that would convert a...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://labs.phurix.net/posts/presenting-coinb-in/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Domain Slamming</title>
		<link>http://labs.phurix.net/posts/domain-slamming</link>
		<comments>http://labs.phurix.net/posts/domain-slamming#comments</comments>
		<pubDate>Thu, 21 Jul 2011 09:29:55 +0000</pubDate>
		<dc:creator>James Wade</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://www.hm2k.com/?p=3013</guid>
		<description><![CDATA[Ever received one of those domain renewal notices from companies such as &#8220;Domain Registry of America&#8221; or &#8220;Domain Renewal Group&#8221; claiming that your domain is about to expire and you need to renew with them? We&#8217;ve had them too, a &#8230; <a href="http://labs.phurix.net/posts/domain-slamming">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/focus-on-one-domain' rel='bookmark' title='Focus on one domain'>Focus on one domain</a> <small>Why you should be focusing on one domain name for...</small></li>
<li><a href='http://labs.phurix.net/posts/inveiscom-cn-domain-scam' rel='bookmark' title='Inveis.com .cn domain scam'>Inveis.com .cn domain scam</a> <small>Today I received the following email from toby.yang@inveis.com&#8230; [Note: If...</small></li>
<li><a href='http://labs.phurix.net/posts/domain-example-com-has-exceeded-the-max-emails-per-hour-200-allowed-message-discarded' rel='bookmark' title='Domain example.com has exceeded the max emails per hour (200) allowed. Message discarded.'>Domain example.com has exceeded the max emails per hour (200) allowed. Message discarded.</a> <small>Got this error with cpanel? Domain example.com has exceeded the...</small></li>
<li><a href='http://labs.phurix.net/posts/does-registering-a-domain-for-a-longer-term-increase-your-search-engine-rankings' rel='bookmark' title='Does registering a domain for a longer term increase your search engine rankings?'>Does registering a domain for a longer term increase your search engine rankings?</a> <small>Recently I come across a claim by Network Solutions stating:...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://labs.phurix.net/upload/dng-stop.png"><img class="alignright" title="Stop Domain Renewal Group" src="http://labs.phurix.net/upload/dng-stop.png" alt="" width="288" height="128" /></a>Ever received one of those domain renewal notices from companies such as &#8220;Domain Registry of America&#8221; or &#8220;Domain Renewal Group&#8221; claiming that your domain is about to expire and you need to renew with them?</p>
<p>We&#8217;ve<a href="http://www.flickr.com/photos/jpswade/5940085942/in/photostream"> had them</a> too, <a href="http://www.flickr.com/photos/danielbowen/5198227312/">a lot</a> <a href="http://www.flickr.com/photos/smemon/5449552010/">of people</a> <a href="http://www.flickr.com/photos/palander/4519792043/">have</a> and this has been going on for a very long time.</p>
<p><strong>Why has nobody done anything about this?</strong></p>
<p><span id="more-3013"></span></p>
<p>Well, they have tried&#8230;</p>
<p>On 21 March 2002, accreditted ICANN Registrar <a href="http://www.tucowsinc.com/">TuCow</a><a href="http://www.tucowsinc.com/">s</a> owned <a href="http://www.opensrs.com/">OpenSRS</a> sent out the following email to all of their resellers:</p>
<blockquote>
<pre>Subject: OpenSRS Live Reseller Update 03/21/02

Greetings -

Please find following an update on OpenSRS.

1. Unsolicited renewal offers from third parties

1. Unsolicited renewal offers from third parties
-------------------
We would like to advise you of a business practice that is
becoming common in the domain marketplace and may result
in you losing customers. With increasing frequency,
companies are making unsolicited offers directed towards
existing registrants of other firms.

A company will send a letter (sometimes email, sometimes
postal) to a domain registrant thanking them for either
registering, or renewing their domain name.  The letter
will also invite them, in language that suggests a prior
business relationship exists with the soliciting company,
to make some change to the domain, or to renew it, which
would result in the name being transferred to the new
organization.

We recommend taking the following steps to ensure that
your registrants understand these issues:

a) regular general updates to your clients so they are
familiar with your company name and the services you
provide to them

b) specific updates (as warranted, see example below) with
respect to these activities, who is perpetuating them and
what to look out for, as well as the consequences
(service interruptions, etc...)

c) warning registrants explicitly about this issue in your
renewal notices; registrants often receive offers when
their domain is approaching renewal.

Specifically alerting registrants to unsolicited offers
before the expiry date should increase registrant
knowledge and decrease unintentional transfers.

d) warning registrants explicitly in the customizable
message that is sent to the administrative contact to
approve a transfer away from you. If your clients do
inadvertently respond to these offers, the 'Transfer
Away' email is your last chance to inform them of the
facts of the situation.

Once recent example is an aggressive solicitation
campaign by the Domain Registry of Canada/America. Their
language encourages renewal with them, instead of the
registrant's current registration service provider. We
have found that a large number of registrants who receive
these notices believe that the letter is from their
existing registration service provider, and do not
understand that they are in fact requesting a transfer to
a new company, who may not provide similar services.

Below is a sample message you can customize and use:

"A company calling itself "Domain Registry of Canada" or
"Domain Registry of America" is targeting &lt;RSP&gt; customers
to renew their domains.  They obtained our customers'
contact information through the publicly accessible
WHOIS database, and are sending renewal notices through
regular mail in an envelope and on stationary
intentionally designed to appear to be an official
government notice.

It has been brought to our attention that these letters
have been causing a great deal of confusion among our
customers.  We hope to clear up any confusion with this
email.

You absolutely SHOULD NOT send any money to "Domain
Registry of Canada"/"Domain Registry of America" in order
to renew your domain, as &lt;RSP&gt; is your domain name
provider.

If you have already sent money, we suggest contacting your
bank or credit card company regarding your options of
having payment stopped or reversed.

We regret that this notice is necessary, but feel it is
important to notify our clients of this issue.  If you
have any questions regarding this or any other issue,
please do not hesitate to contact us at &lt;supportaddress&gt;."

+------------

Building strong relationships with your clients including
regular contact will ensure they are clear that you are
their supplier. The stronger these relationships are, the
fewer registrants will act on these misleading messages,
and the more customers you will retain.

These are some of the things you can do to protect your
business. We also are continuing to pursue and assess
legal and policy initiatives that are at our disposal
where the behavior of the company is in conflict with
accreditation requirements or is possible illegal.

As always - thanks for your continued support of OpenSRS!

Thanks -

Ken Joy
Product Manager, OpenSRS</pre>
</blockquote>
<p><strong>So, What&#8217;s changed since then?</strong></p>
<p><strong></strong>Even though this sparked a <a href="http://web.archive.org/web/20030810122021/http://comingsoon.tucows.com/.court_case/">court case</a> (<a href="http://markets.financialcontent.com/stocks/action/getedgarwindow?accesscode=91205702031385#toc_dm1459_1">which never came to light</a>), the message still applies to this day.</p>
<p>The &#8220;Domain Registry of America&#8221; (also known as the &#8220;Domain Registry Group&#8221;) are still sending out notices as part of a &#8220;<a href="http://en.wikipedia.org/wiki/Domain_slamming">domain slamming</a>&#8221; campaign, while OpenSRS are reminding people not to trust them.</p>
<p>In 2009, <a href="http://www.opensrs.com/blog/2009/06/repost-beware-of-fake-domain-name-renewal-notices/">OpenSRS</a> went on to remind people by reposting the information, saying:</p>
<blockquote><p>We get calls daily from domain holders who have fallen victim to domain slamming</p></blockquote>
<p><strong>So, who can do something about this?</strong></p>
<p>In 2001, the federal <a href="http://www.competitionbureau.gc.ca/eic/site/cb-bc.nsf/eng/00528.html">Competition Bureau (of Canada) issued a warning</a> about documents that appeared to be invoices sent out by a business called the &#8220;Internet Registry of Canada.&#8221;</p>
<p>Action was taken again in 2003, this time by the <a href="http://www.ftc.gov/opa/2003/12/domainreg.shtm">Federal Trade Commission (FTC)</a>, but this hasn&#8217;t stopped them.</p>
<p>In 2008, <a href="http://www.atlarge.icann.org/en/correspondence/correspondence-14sep.htm">ICANN</a>, the task force behind .com and .net domains said:</p>
<blockquote><p>&#8220;we are aware of accredited registrars in North America with officers that have been convicted of mail fraud, that continue to be associated with the deceptive marketing practices employed by the Domain Registry of America. We do not consider this an acceptable situation. Accreditation processes must be reviewed, and that review must be released for public scrutiny&#8221;</p></blockquote>
<p>While also in 2009, the <a href="http://www.asa.org.uk/Asa-Action/Adjudications/2009/11/Domain-Registry-of-America/TF_ADJ_47583.aspx">Advertising Standards Authority</a> (UK) went on to issue an adjudication on the &#8220;Domain Registry of America&#8221;.</p>
<p><strong>What can I do to stop this?</strong></p>
<p>The advice is to apply the following:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Domain_privacy">WHOIS Privacy</a></li>
<ul>
<li>This service is generally provided for free and means that your postal details cannot be viewed.</li>
</ul>
<li><a href="http://en.wikipedia.org/wiki/Registrar-Lock">Domain locking</a></li>
<ul>
<li>If your domain is locked it cannot be transferred away from your registrar without being unlocked first.</li>
</ul>
<li>Communication</li>
<ul>
<li>Let us know, let your host/ISP know, let advertising watchdogs know, let everyone know. The more people that are aware of this problem the better.</li>
</ul>
</ul>
<p>KEEP any notices or letters you have received and take a digital copy (scan or photo) as they can be used as evidence.</p>
<p>Although you can also <a href="http://reports.internic.net/cgi/registrars/problem-report.cgi">send a complaint to ICANN</a> (the non-profit organization that oversees the use of Internet domains) their advice is to file a formal complaint with consumer protection entities and <a href="http://en.wikipedia.org/wiki/Category:Media_complaints_authorities">advertising watchdogs</a> such as:</p>
<ul>
<li><a href="https://icpen.org/">International Consumer Protection and Enforcement Network</a></li>
<li><a href="http://www.asa.org.uk/">Advertising Standards Authority</a> (United Kingdom)</li>
<li><a href="http://www.ftc.gov/">Federal Trade Commission</a> (United States)</li>
<li><a href="http://www.competitionbureau.gc.ca/">Competition Bureau</a> (Canada)</li>
</ul>
<p>If in doubt, contact your domain registrar.</p>
<p><strong>Update @ 25/07/11</strong></p>
<p>We submitted a complaint to <a href="http://en.wikipedia.org/wiki/Advertising_Standards_Authority_(United_Kingdom)">ASA</a>, who <a href="http://pastebin.com/Daif2EmK">replied saying</a> that &#8220;recipients are unlikely to respond to the advertisement in error&#8221;.</p>
<p>Although we agree with ASA (having read their full response), it is still strongly advise that you continue to use domain locking and WHOIS privacy as form of protection against domain slamming attempts.</p>
<p>Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/focus-on-one-domain' rel='bookmark' title='Focus on one domain'>Focus on one domain</a> <small>Why you should be focusing on one domain name for...</small></li>
<li><a href='http://labs.phurix.net/posts/inveiscom-cn-domain-scam' rel='bookmark' title='Inveis.com .cn domain scam'>Inveis.com .cn domain scam</a> <small>Today I received the following email from toby.yang@inveis.com&#8230; [Note: If...</small></li>
<li><a href='http://labs.phurix.net/posts/domain-example-com-has-exceeded-the-max-emails-per-hour-200-allowed-message-discarded' rel='bookmark' title='Domain example.com has exceeded the max emails per hour (200) allowed. Message discarded.'>Domain example.com has exceeded the max emails per hour (200) allowed. Message discarded.</a> <small>Got this error with cpanel? Domain example.com has exceeded the...</small></li>
<li><a href='http://labs.phurix.net/posts/does-registering-a-domain-for-a-longer-term-increase-your-search-engine-rankings' rel='bookmark' title='Does registering a domain for a longer term increase your search engine rankings?'>Does registering a domain for a longer term increase your search engine rankings?</a> <small>Recently I come across a claim by Network Solutions stating:...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://labs.phurix.net/posts/domain-slamming/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>eggtcl project</title>
		<link>http://labs.phurix.net/posts/eggtcl-project</link>
		<comments>http://labs.phurix.net/posts/eggtcl-project#comments</comments>
		<pubDate>Tue, 19 Jul 2011 23:12:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.hm2k.com/?p=3009</guid>
		<description><![CDATA[I&#8217;m pleased to announce that the eggdrop TCL scripts from the HM2K code repository will become part of the eggtcl project. The eggtcl project is a repository of approved TCL scripts for eggdrop that allow you to easily update them as new versions &#8230; <a href="http://labs.phurix.net/posts/eggtcl-project">Continue reading <span class="meta-nav">&#8594;</span></a>
Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/hm2ks-code-repository' rel='bookmark' title='HM2K&#8217;s code repository'>HM2K&#8217;s code repository</a> <small>HM2K&#8217;s code repository is now open for business! This repository...</small></li>
<li><a href='http://labs.phurix.net/posts/weather-tcl' rel='bookmark' title='weather.tcl'>weather.tcl</a> <small>Update: This script is now part of the eggtcl project....</small></li>
<li><a href='http://labs.phurix.net/posts/universal-currency-converter-tcl-for-eggdrop' rel='bookmark' title='Universal Currency Converter TCL for Eggdrop'>Universal Currency Converter TCL for Eggdrop</a> <small>Update: This script is now part of the eggtcl project. This...</small></li>
<li><a href='http://labs.phurix.net/posts/msn-via-irc' rel='bookmark' title='MSN via IRC'>MSN via IRC</a> <small>Quite some time ago I decided that I wanted to...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pleased to announce that the eggdrop TCL scripts from the <a href="http://code.google.com/p/hm2k/">HM2K code repository</a> will become part of the <a href="http://code.google.com/p/eggtcl/">eggtcl project</a>.</p>
<p><a href="http://www.eggtcl.com/"><img class="size-full wp-image-3036 alignright" title="eggtcl-icon" src="http://labs.phurix.net/upload/eggtcl-icon.png" alt="" width="256" height="256" /></a>The <strong>eggtcl project</strong> is a repository of approved TCL scripts for <a href="http://www.eggdrop.org/">eggdrop</a> that allow you to easily update them as new versions are released.</p>
<blockquote><p>The plan is to maintain a library collection of good quality eggdrop tcl scripts to ensure the longevity of this project and the eggdrop project.</p></blockquote>
<p><span id="more-3009"></span>A dedicated team of highly skilled people will develop and approve only the best scripts for eggdrop.</p>
<p><strong>The team:</strong></p>
<ul>
<li>FireEgl &#8211; notable for his <a href="http://www.tcldrop.us/">Tcldrop</a></li>
<li>hrz &#8211; long serving #eggtcl EFnet channel op and script writer</li>
<li>Pixelz &#8211; eggdrop and Tcldrop contributor and script writer</li>
<li>simple &#8211; <a href="http://www.eggheads.org/">eggheads</a></li>
<li>thommey &#8211; <a href="http://www.eggheads.org/">eggheads</a> and <a href="http://www.tclhelp.net/">tclhelp.net</a></li>
<li>and of course HM2K</li>
</ul>
<p>The project hopes to make poorly written eggdrop scripts a thing of the past and to become the official eggdrop tcl repository.</p>
<p>Check out the <a href="http://www.eggtcl.com/">eggtcl project</a>.</p>
<p>Looking to run your own Eggdrop? Try <a href="http://www.gallush.com/">Gallush Shells</a>.</p>
<p>Related posts:<ol>
<li><a href='http://labs.phurix.net/posts/hm2ks-code-repository' rel='bookmark' title='HM2K&#8217;s code repository'>HM2K&#8217;s code repository</a> <small>HM2K&#8217;s code repository is now open for business! This repository...</small></li>
<li><a href='http://labs.phurix.net/posts/weather-tcl' rel='bookmark' title='weather.tcl'>weather.tcl</a> <small>Update: This script is now part of the eggtcl project....</small></li>
<li><a href='http://labs.phurix.net/posts/universal-currency-converter-tcl-for-eggdrop' rel='bookmark' title='Universal Currency Converter TCL for Eggdrop'>Universal Currency Converter TCL for Eggdrop</a> <small>Update: This script is now part of the eggtcl project. This...</small></li>
<li><a href='http://labs.phurix.net/posts/msn-via-irc' rel='bookmark' title='MSN via IRC'>MSN via IRC</a> <small>Quite some time ago I decided that I wanted to...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://labs.phurix.net/posts/eggtcl-project/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced

Served from: labs.phurix.net @ 2012-02-23 04:22:56 -->
