<?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>Ramblings of a Developer</title>
	<atom:link href="http://blog.wyrihaximus.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.wyrihaximus.net</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 24 Mar 2013 10:59:10 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Starting with BitlBee</title>
		<link>http://blog.wyrihaximus.net/2012/04/starting-with-bitlbee/</link>
		<comments>http://blog.wyrihaximus.net/2012/04/starting-with-bitlbee/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 17:58:30 +0000</pubDate>
		<dc:creator>WyriHaximus</dc:creator>
				<category><![CDATA[Bitlbee]]></category>
		<category><![CDATA[IRC]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[google talk]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://blog.wyrihaximus.net/?p=814</guid>
		<description><![CDATA[A while ago I was somehow introduced to bitlbee and I loved the concept. Not only for the possibilitie to have IRC, FB, MSN and Google Talk in the same application/window. But also cause it can be extended to be used as a real-time log viewer for your CI Server and website. This is a first [...]]]></description>
				<content:encoded><![CDATA[<p>A while ago I was somehow introduced to <a title="BitlBee" href="http://www.bitlbee.org/" target="_blank">bitlbee</a> and I loved the concept. Not only for the possibilitie to have IRC, FB, MSN and Google Talk in the same application/window. But also cause it can be extended to be used as a real-time log viewer for your CI Server and website. This is a first of 3 blog posts on the subject with some extra tips &amp; tricks on the side.</p>
<p><strong>Setting it all up</strong></p>
<p>It&#8217;s just a simple aptitude command to install and start it, after it&#8217;s installed you connect to it with your favorite IRC client. Once you&#8217;re connected make sure you register with the server and follow the quickstart intro.</p>

<div class="wp-shkshell"><span class="wp-shkshell-prompt">$</span> <span class="wp-shkshell-command">sudo</span> aptitude install bitlbee<br /></div>

<p><strong>Configure</strong><strong> Facebook</strong></p>
<p>Setting up facebook is simple but you need to keep a few things in mind. First off you need a <a title="Facebook username" href="http://www.facebook.com/help/usernames/general" target="_blank">Facebook username</a>. Next run this command and make sure you type your username all lowercase cause it will fail if you don&#8217;t. (Note that you can use <em>acc</em> instead of <em>account</em> if you don&#8217;t like typing it over and over again.)</p>

<div class="wp-shkshell"><span class="wp-shkshell-prompt">$</span> <span class="wp-shkshell-command">account</span> add jabber USERNAME@chat.facebook.com PASSWORD<br /></div>

<p>Since by default userId&#8217;s will be shown instead of full names we use the following 2 commands to use the full name and add a [fb] prefix to each facebook user.</p>

<div class="wp-shkshell"><span class="wp-shkshell-prompt">$</span> <span class="wp-shkshell-command">account</span> facebook set nick_source full_name<br /></div>


<div class="wp-shkshell"><span class="wp-shkshell-prompt">$</span> <span class="wp-shkshell-command">account</span> fb set nick_format [<span class="wp-shkshell-command">fb</span>]%-@full_name<br /></div>

<p><strong>Configure Google Talk (Jabber/XMPP)</strong></p>
<p>Adding your Google Talk account is as simple as adding a facebook account. Just replace USERNAME with the Google account email address.</p>

<div class="wp-shkshell"><span class="wp-shkshell-prompt">$</span> <span class="wp-shkshell-command">account</span> add jabber USERNAME PASSWORD talk.google.com:5223:ssl<br /></div>

<p>Just like the facebook account we also set a prefix here.</p>

<div class="wp-shkshell"><span class="wp-shkshell-prompt">$</span> <span class="wp-shkshell-command">account</span> gtalk set nick_format [<span class="wp-shkshell-command">gtalk</span>]%-@handle<br /></div>

<p><strong>Giving each account it&#8217;s own channel</strong></p>
<p>The following commands create channels for Facebook and Google Talk and set them to only show Facebook users in the facebook channel and Google Talk users in the gtalk channel.</p>

<div class="wp-shkshell"><span class="wp-shkshell-prompt">$</span> <span class="wp-shkshell-command">/join</span> <span class="wp-shkshell-special">&</span>amp<span class="wp-shkshell-special">;</span>facebook<br />channel facebook set fill_by account<br />channel facebook set account fb<br />/join <span class="wp-shkshell-special">&</span>amp<span class="wp-shkshell-special">;</span>gtalk<br />channel gtalk set fill_by account<br />channel gtalk set account 0<br /></div>

<p><strong>Finishing up</strong></p>
<p>Now that we set everything up we want to connect our accounts simply run the following command and it will connect to the remote servers.</p>

<div class="wp-shkshell"><span class="wp-shkshell-prompt">$</span> <span class="wp-shkshell-command">account</span> on<br /></div>

<p>Just hit the save command to save your configuration to disk.</p>

<div class="wp-shkshell"><span class="wp-shkshell-prompt">$</span> <span class="wp-shkshell-command">save</span><br /></div>

<p><strong>Interesting reads/links</strong></p>
<ul>
<li><a title="My perfect Irssi setup" href="http://www.kungfoocode.org/how-to/my-perfect-irssi-setup/" target="_blank">My perfect Irssi setup</a></li>
<li><a title="BitlBee" href="http://www.bitlbee.org/" target="_blank">BitlBee</a></li>
<li><a title="Identi.ca, Twitter and Jabber with BitlBee via Irssi" href="http://body0r.wordpress.com/2010/10/14/identi-ca-twitter-and-jabber-with-bitlbee-via-irssi/" target="_blank">Identi.ca, Twitter and Jabber with BitlBee via Irssi</a></li>
</ul>
<p><a href="http://blog.wyrihaximus.net/2012/04/starting-with-bitlbee/" rel="bookmark">Starting with BitlBee</a> originally appeared on <a href="http://blog.wyrihaximus.net">Ramblings of a Developer</a> on April 9, 2012.</p>
 <p><a href="http://blog.wyrihaximus.net/?flattrss_redirect&amp;id=814&amp;md5=4b28efc0642794af6a5dbe9d2f4f9b04" title="Flattr" target="_blank"><img src="http://blog.wyrihaximus.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.wyrihaximus.net/2012/04/starting-with-bitlbee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=WyriHaximus&amp;popout=1&amp;url=http%3A%2F%2Fblog.wyrihaximus.net%2F2012%2F04%2Fstarting-with-bitlbee%2F&amp;language=en_GB&amp;category=text&amp;title=Starting+with+BitlBee&amp;description=A+while+ago+I+was+somehow+introduced+to+bitlbee+and+I+loved+the+concept.+Not+only+for+the+possibilitie+to+have+IRC%2C+FB%2C+MSN+and+Google+Talk+in+the+same...&amp;tags=Bitlbee%2Cfacebook%2Cgoogle+talk%2Cjabber%2Cxmpp%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Shortcode in Feedburner Email Widget 1.1.3 for wordpress</title>
		<link>http://blog.wyrihaximus.net/2011/09/shortcode-in-feedburner-email-widget-1-1-3-for-wordpress/</link>
		<comments>http://blog.wyrihaximus.net/2011/09/shortcode-in-feedburner-email-widget-1-1-3-for-wordpress/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 18:11:16 +0000</pubDate>
		<dc:creator>WyriHaximus</dc:creator>
				<category><![CDATA[Feedburner Email Widget]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Feedburner email widget]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[shortcode]]></category>

		<guid isPermaLink="false">http://blog.wyrihaximus.net/?p=798</guid>
		<description><![CDATA[In the just released Feedburner Email Widget 1.1.3 a shortcode has been added by request. The shortcode can be used in 2 different ways in posts you use 1&#160; and in php you use 1&#60;?php echo feedburner_email_widget_shortcode_func&#40;array&#40;'uri'=&#62;&#34;http://feedburner.url.here&#34;&#41;&#41;; ?&#62; Both methods make a call to the same function and the arguments reflect the available settings for [...]]]></description>
				<content:encoded><![CDATA[<p>In the just released Feedburner Email Widget 1.1.3 a shortcode has been added by request. The shortcode can be used in 2 different ways in posts you use</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[feedburner_email_widget uri=&quot;http://feedburner.url.here&quot;]</div></td></tr></tbody></table></div>
<p>and in php you use</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> feedburner_email_widget_shortcode_func<span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'uri'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">&quot;http://feedburner.url.here&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
</p>
<p>Both methods make a call to the same function and the arguments reflect the available settings for the widget through the wp-admin.</p>
<ul>
<li>Title -> title</li>
<li>Feedburner feed URL -> uri</li>
<li>Above input text -> above_email</li>
<li>Below input text -> below_email</li>
<li>Input placeholder text -> email_text_input</li>
<li>Submit button caption -> subscribe_btn</li>
<li>Show feedburner link -> show_link</li>
<li>Form CSS ID -> form_id</li>
<li>CSS Styling -> css_style_code</li>
<li>Analytics Category -> analytics_cat</li>
<li>Analytics Action -> analytics_act</li>
<li>Analytics Label -> analytics_lab</li>
<li>Analytics Value -> analytics_val</li>
</ul>
<p><a href="http://blog.wyrihaximus.net/2011/09/shortcode-in-feedburner-email-widget-1-1-3-for-wordpress/" rel="bookmark">Shortcode in Feedburner Email Widget 1.1.3 for wordpress</a> originally appeared on <a href="http://blog.wyrihaximus.net">Ramblings of a Developer</a> on September 8, 2011.</p>
 <p><a href="http://blog.wyrihaximus.net/?flattrss_redirect&amp;id=798&amp;md5=d5022323574d2fde88ccdfdc59975c47" title="Flattr" target="_blank"><img src="http://blog.wyrihaximus.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.wyrihaximus.net/2011/09/shortcode-in-feedburner-email-widget-1-1-3-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=WyriHaximus&amp;popout=1&amp;url=http%3A%2F%2Fblog.wyrihaximus.net%2F2011%2F09%2Fshortcode-in-feedburner-email-widget-1-1-3-for-wordpress%2F&amp;language=en_GB&amp;category=text&amp;title=Shortcode+in+Feedburner+Email+Widget+1.1.3+for+wordpress&amp;description=In+the+just+released+Feedburner+Email+Widget+1.1.3+a+shortcode+has+been+added+by+request.+The+shortcode+can+be+used+in+2+different+ways+in+posts+you+use+1%26nbsp%3B+and...&amp;tags=Feedburner+email+widget%2Cphp%2Cshortcode%2CWordpress%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Building an endless image/photo/screenshot stream</title>
		<link>http://blog.wyrihaximus.net/2011/07/building-an-endless-imagephotoscreenshot-stream/</link>
		<comments>http://blog.wyrihaximus.net/2011/07/building-an-endless-imagephotoscreenshot-stream/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 11:37:44 +0000</pubDate>
		<dc:creator>WyriHaximus</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[WoW-Screenshots]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Cakephp]]></category>
		<category><![CDATA[Endless]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Stream]]></category>
		<category><![CDATA[World of Warcraft]]></category>
		<category><![CDATA[wow-screenshots.net]]></category>

		<guid isPermaLink="false">http://blog.wyrihaximus.net/?p=654</guid>
		<description><![CDATA[For WoW-Screenshots.net I was looking for a sweet Endless Stream script but I only stumbled into some weird scripts that did more then they should or nothing at all. Finally I ran into a simple script giving some good hints. For this script jQuery is required and the str_replace port from phpjs.org. The basics of the script [...]]]></description>
				<content:encoded><![CDATA[<p>For <a title="World of Warcraft: Screenshots" href="http://wow-screenshots.net/">WoW-Screenshots.net</a> I was looking for a sweet Endless Stream script but I only stumbled into some weird scripts that did more then they should or nothing at all. Finally I ran into a simple script giving some good hints.</p>
<p>For this script jQuery is required and the <a href="http://phpjs.org/functions/str_replace:527">str_replace port from phpjs.org</a>.</p>
<p>The basics of the script is are simple: on the window scroll event check if the user scrolled nearly or to the bottom of the page if so fetch information from the server and add them to the page.</p>
<p>First off we start with the class constructor</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">function</span> endlessEntityStream<span style="color: #009900;">&#40;</span>conf<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> self <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>We add a few configuration options and match them against the conf object:</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">self.<span style="color: #660066;">conf</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span><br />
self.<span style="color: #660066;">conf</span>.<span style="color: #660066;">loading</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span><br />
self.<span style="color: #660066;">conf</span>.<span style="color: #660066;">identifier</span> <span style="color: #339933;">=</span> conf.<span style="color: #660066;">identifier</span> <span style="color: #339933;">||</span> <span style="color: #3366CC;">'EES_%id%'</span><span style="color: #339933;">;</span><br />
self.<span style="color: #660066;">conf</span>.<span style="color: #660066;">url</span> <span style="color: #339933;">=</span> conf.<span style="color: #660066;">url</span><span style="color: #339933;">;</span><br />
self.<span style="color: #660066;">conf</span>.<span style="color: #660066;">count</span> <span style="color: #339933;">=</span> conf.<span style="color: #660066;">count</span><span style="color: #339933;">;</span><br />
self.<span style="color: #660066;">conf</span>.<span style="color: #660066;">prevId</span> <span style="color: #339933;">=</span> conf.<span style="color: #660066;">initalId</span><span style="color: #339933;">;</span><br />
self.<span style="color: #660066;">conf</span>.<span style="color: #660066;">template</span> <span style="color: #339933;">=</span> conf.<span style="color: #660066;">template</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>We load the first batch upon constructing the class. Since the backend provides us with information whether or not we should continue checking for more:</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">self.<span style="color: #660066;">load</span><span style="color: #009900;">&#40;</span>conf.<span style="color: #660066;">startCount</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>We hook into the window scroll event. This and the previous 2 blocks are code are all in the constructor:</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #000066;">scroll</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; self.<span style="color: #660066;">check</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Now we need 2 settings and 2 getters to keep the code a bit cleaner</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">endlessEntityStream.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">setLoading</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>bool<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> self <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; self.<span style="color: #660066;">conf</span>.<span style="color: #660066;">loading</span> <span style="color: #339933;">=</span> bool <span style="color: #339933;">?</span> <span style="color: #003366; font-weight: bold;">true</span> <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span><br />
<br />
endlessEntityStream.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">getLoading</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> self <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> self.<span style="color: #660066;">conf</span>.<span style="color: #660066;">loading</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span><br />
<br />
endlessEntityStream.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">setPrevId</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>prevId<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> self <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; self.<span style="color: #660066;">conf</span>.<span style="color: #660066;">prevId</span> <span style="color: #339933;">=</span> prevId<span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span><br />
<br />
endlessEntityStream.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">getPrevId</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> self <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> self.<span style="color: #660066;">conf</span>.<span style="color: #660066;">prevId</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>The following functions are the most interesting. First the check function that checks the scroll status. Seccond the load function that does most of the heavy lifting.</p>
<p>The function works very simple. It check if you either scrolled to the end of the page or within the 500 pixels above the end of the page. Then it checks if a load is already in progress and load if not. Note the 500 in the function, change that to your needs if the default isn&#8217;t working properly.</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">endlessEntityStream.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">check</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> self <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">scrollTop</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> $<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">height</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> $<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">height</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">scrollTop</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">500</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;=</span> $<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">height</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> $<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">height</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>self.<span style="color: #660066;">getLoading</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.<span style="color: #660066;">load</span><span style="color: #009900;">&#40;</span>self.<span style="color: #660066;">count</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>We start the load function by preventing another load can start. Another imported part of this method is the replacing of 3 keywords with the corresponding information.</p>
<ul>
<li>%id% &#8211; the id of the last added item, the backend uses this the determine where to start reading</li>
<li>%count% &#8211; the amount of items the backend should return</li>
<li>%mathrnd% &#8211; a random number, it can be used to force updates</li>
</ul>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">endlessEntityStream.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">load</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>count<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> self <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; self.<span style="color: #660066;">setLoading</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; url <span style="color: #339933;">=</span> self.<span style="color: #660066;">conf</span>.<span style="color: #660066;">url</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; url <span style="color: #339933;">=</span> url.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'%id%'</span><span style="color: #339933;">,</span>self.<span style="color: #660066;">conf</span>.<span style="color: #660066;">prevId</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; url <span style="color: #339933;">=</span> url.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'%count%'</span><span style="color: #339933;">,</span>self.<span style="color: #660066;">conf</span>.<span style="color: #660066;">count</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; url <span style="color: #339933;">=</span> url.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'%mathrnd%'</span><span style="color: #339933;">,</span>Math.<span style="color: #660066;">random</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'0.'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Now we know where we should fetch the information from we can send the request and parse the returned data:</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span>url<span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>data <span style="color: #339933;">!=</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> entities <span style="color: #339933;">=</span> $.<span style="color: #660066;">parseJSON</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>After the data has been parsed we&#8217;ll walk through the data and add the item at the end of the stream. This happens in several steps. First off an identifier is generated for the current item and the identifier (based on the previous id) from the previous item is generated. Second the entity properties are matched against the template. And finally the item is added to the end of the stream and the current id is set as previous id.</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> entity <span style="color: #000066; font-weight: bold;">in</span> entities.<span style="color: #660066;">shots</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> identifier <span style="color: #339933;">=</span> self.<span style="color: #660066;">conf</span>.<span style="color: #660066;">identifier</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'%id%'</span><span style="color: #339933;">,</span> entities.<span style="color: #660066;">shots</span><span style="color: #009900;">&#91;</span>entity<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> previousIdentifier <span style="color: #339933;">=</span> self.<span style="color: #660066;">conf</span>.<span style="color: #660066;">identifier</span>.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'%id%'</span><span style="color: #339933;">,</span> self.<span style="color: #660066;">getPrevId</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> html <span style="color: #339933;">=</span> self.<span style="color: #660066;">conf</span>.<span style="color: #660066;">template</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; $.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span>entities.<span style="color: #660066;">shots</span><span style="color: #009900;">&#91;</span>entity<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>index<span style="color: #339933;">,</span>value<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; html <span style="color: #339933;">=</span> str_replace<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'%'</span> <span style="color: #339933;">+</span> index <span style="color: #339933;">+</span> <span style="color: #3366CC;">'%'</span><span style="color: #339933;">,</span> value <span style="color: #339933;">,</span> html<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; html <span style="color: #339933;">=</span> html.<span style="color: #660066;">replace</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'%identifier%'</span><span style="color: #339933;">,</span> identifier<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#'</span> <span style="color: #339933;">+</span> previousIdentifier<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">after</span><span style="color: #009900;">&#40;</span>html<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; self.<span style="color: #660066;">setPrevId</span><span style="color: #009900;">&#40;</span>entities.<span style="color: #660066;">shots</span><span style="color: #009900;">&#91;</span>entity<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Once everything has been loaded we&#8217;ll check the data if this is the last block or not. If it&#8217;s the last block it keeps the loading process locked. If it isn&#8217;t the last block it unlocks the loading process and invokes the check method again. This makes sure a user keeps buffered at all times until there is nothing more to fetch.</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>entities.<span style="color: #660066;">lastShot</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; self.<span style="color: #660066;">setLoading</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; self.<span style="color: #660066;">setLoading</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; self.<span style="color: #660066;">check</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>We now have all the class code ready to use we need to tell it where to get it&#8217;s data from and how to append it where. The following configuration options are needed to make it all work:</p>
<p>url &#8211; Url</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">http<span style="color: #339933;">:</span><span style="color: #006600; font-style: italic;">//domain.tld/path/to/stream/%id%/%count%/</span></div></td></tr></tbody></table></div>
<p>target &#8211; The stream container</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ESSContainer</div></td></tr></tbody></table></div>
<p>initalId &#8211; The id of the last item in the preloaded stream.</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #CC0000;">123</span></div></td></tr></tbody></table></div>
<p>count &#8211; The number of items to be returned by the server. %count% in the url parameter is replaced by this number.</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #CC0000;">25</span></div></td></tr></tbody></table></div>
<p>template &#8211; Template for the item placed at the end of the stream.</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;%href%&quot;</span> id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;%identifier%&quot;</span> title<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;%title%&quot;</span><span style="color: #339933;">&gt;&lt;</span>img src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;%src%&quot;</span> alt<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;%title%&quot;</span> <span style="color: #339933;">/&gt;&lt;/</span>a<span style="color: #339933;">&gt;</span></div></td></tr></tbody></table></div>
<p>debug &#8211; The debug option is optional but can be useful to debug issues with this script.</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">true</span></div></td></tr></tbody></table></div>
<p>Combined that gives you this:</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ees <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> endlessEntityStream<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; url<span style="color: #339933;">:</span> <span style="color: #3366CC;">'http://domain.tld/path/to/stream/%id%/%count%/'</span><span style="color: #339933;">,</span> &nbsp; &nbsp;<br />
&nbsp; &nbsp; target<span style="color: #339933;">:</span> <span style="color: #3366CC;">'ESSContainer'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; initalId<span style="color: #339933;">:</span> <span style="color: #CC0000;">123</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; count<span style="color: #339933;">:</span> <span style="color: #CC0000;">5</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; template<span style="color: #339933;">:</span> <span style="color: #3366CC;">'&lt;a href=&quot;%href%&quot; id=&quot;%identifier%&quot; title=&quot;%title%&quot;&gt;&lt;img src=&quot;%src%&quot; alt=&quot;%title%&quot; /&gt;&lt;/a&gt;'</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;ESSContainer&quot;</span>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;EES_121&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/model/view/121.html&quot;</span> <span style="color: #000066;">title</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">img</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/img/121.jpg&quot;</span> <span style="color: #000066;">alt</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #66cc66;">/</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;EES_122&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/model/view/121.html&quot;</span> <span style="color: #000066;">title</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">img</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/img/122.jpg&quot;</span> <span style="color: #000066;">alt</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #66cc66;">/</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;EES_123&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/model/view/121.html&quot;</span> <span style="color: #000066;">title</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">img</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/img/123.jpg&quot;</span> <span style="color: #000066;">alt</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #66cc66;">/</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></div></td></tr></tbody></table></div>
<p>The script expects a JSON object in the following format:</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #3366CC;">&quot;lastShot&quot;</span><span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #3366CC;">&quot;count&quot;</span><span style="color: #339933;">:</span><span style="color: #CC0000;">5</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #3366CC;">&quot;shots&quot;</span><span style="color: #339933;">:</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#91;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span><span style="color: #3366CC;">&quot;id&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;124&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;href&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\/</span>model<span style="color: #000099; font-weight: bold;">\/</span>view<span style="color: #000099; font-weight: bold;">\/</span>124.html&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;src&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\/</span>img<span style="color: #000099; font-weight: bold;">\/</span>124.jpg&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;title&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span><span style="color: #3366CC;">&quot;id&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;125&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;href&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\/</span>model<span style="color: #000099; font-weight: bold;">\/</span>view<span style="color: #000099; font-weight: bold;">\/</span>125.html&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;src&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\/</span>img<span style="color: #000099; font-weight: bold;">\/</span>125.jpg&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;title&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span><span style="color: #3366CC;">&quot;id&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;126&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;href&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\/</span>model<span style="color: #000099; font-weight: bold;">\/</span>view<span style="color: #000099; font-weight: bold;">\/</span>126.html&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;src&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\/</span>img<span style="color: #000099; font-weight: bold;">\/</span>126.jpg&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;title&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span><span style="color: #3366CC;">&quot;id&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;127&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;href&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\/</span>model<span style="color: #000099; font-weight: bold;">\/</span>view<span style="color: #000099; font-weight: bold;">\/</span>127.html&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;src&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\/</span>img<span style="color: #000099; font-weight: bold;">\/</span>127.jpg&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;title&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span><span style="color: #3366CC;">&quot;id&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;128&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;href&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\/</span>model<span style="color: #000099; font-weight: bold;">\/</span>view<span style="color: #000099; font-weight: bold;">\/</span>128.html&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;src&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\/</span>img<span style="color: #000099; font-weight: bold;">\/</span>128.jpg&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;title&quot;</span><span style="color: #339933;">:</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#93;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>As you can see the object holds 2 configuration settings and 1 array with all the items. (Heck while writing this I realize that shots as name for the array might not but the appropriate name for a more general class.) The count property optional. lastShot tells the script if the shots array contains the last item and should stop polling after this.</p>
<p><a href="https://github.com/WyriHaximus/endlessentitystream">This code is available on github.</a> As for the future of this project it will evolve for the upcoming time to become an even more powerful script. (Might turn it into a jQuery plugin.) For a live demo see <a title="World of Warcraft: Screenshots" href="http://wow-screenshots.net/">WoW-Screenshots.net</a>.</p>
<p><a href="http://blog.wyrihaximus.net/2011/07/building-an-endless-imagephotoscreenshot-stream/" rel="bookmark">Building an endless image/photo/screenshot stream</a> originally appeared on <a href="http://blog.wyrihaximus.net">Ramblings of a Developer</a> on July 1, 2011.</p>
 <p><a href="http://blog.wyrihaximus.net/?flattrss_redirect&amp;id=654&amp;md5=c032a1faec08770f85467616a4e5316a" title="Flattr" target="_blank"><img src="http://blog.wyrihaximus.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.wyrihaximus.net/2011/07/building-an-endless-imagephotoscreenshot-stream/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=WyriHaximus&amp;popout=1&amp;url=http%3A%2F%2Fblog.wyrihaximus.net%2F2011%2F07%2Fbuilding-an-endless-imagephotoscreenshot-stream%2F&amp;language=en_GB&amp;category=text&amp;title=Building+an+endless+image%2Fphoto%2Fscreenshot+stream&amp;description=For+WoW-Screenshots.net+I+was+looking+for+a+sweet+Endless+Stream+script+but+I+only+stumbled+into+some+weird+scripts+that+did+more+then+they+should+or+nothing+at+all.%C2%A0Finally%C2%A0I+ran...&amp;tags=AJAX%2CCakephp%2CEndless%2CJavascript%2Cjquery%2CJSON%2CStream%2CWorld+of+Warcraft%2Cwow-screenshots.net%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Loading your Twitter Tweet Button asynchronous</title>
		<link>http://blog.wyrihaximus.net/2011/05/loading-your-twitter-tweet-button-asynchronous/</link>
		<comments>http://blog.wyrihaximus.net/2011/05/loading-your-twitter-tweet-button-asynchronous/#comments</comments>
		<pubDate>Wed, 25 May 2011 14:50:49 +0000</pubDate>
		<dc:creator>WyriHaximus</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[Flattr]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.wyrihaximus.net/?p=747</guid>
		<description><![CDATA[Twitter has updated their buttons to be asynchronousby default! Check out twitter.com/buttons For wow-screenshots.net I was looking to boost the loading speed of the site. By spending as little time as possible waiting on additional resources. The Tweet Button by Twitter is loading in a blocking way so it is slowing down the page. It [...]]]></description>
				<content:encoded><![CDATA[<h2>Twitter has updated their buttons to be asynchronousby default!</h2>
<p>Check out <a href="https://twitter.com/buttons" target="_blank">twitter.com/buttons</a></p>
<p>For <a title="Frontpage | World of Warcraft Screenshots" href="http://wow-screenshots.net/" target="_blank">wow-screenshots.net</a> I was looking to boost the loading speed of the site. By spending as little time as possible waiting on additional resources. The <a title="Twitter / Tweet Button" href="http://twitter.com/about/resources/tweetbutton" target="_blank">Tweet Button</a> by Twitter is loading in a blocking way so it is slowing down the page. It uses basic HTML elements and transforms them with a little bit of javascript. We can load the javascript in a non-blocking way to give the user a faster page loading experience. <a title="JavaScript API - flattr.com" href="https://flattr.com/support/integrate/js" target="_blank">Flattr</a> is showing how it&#8217;s done by loading the script in a asynchronous way and and transform basic HTML elements into widgets:</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #006600; font-style: italic;">// &lt;![CDATA[</span><br />
<span style="color: #006600; font-style: italic;">/* &lt;![CDATA[ */</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> s <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'script'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> t <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'script'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; s.<span style="color: #660066;">type</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'text/javascript'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; s.<span style="color: #660066;">async</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; s.<span style="color: #660066;">src</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'http://api.flattr.com/js/0.6/load.js?mode=auto'</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; t.<span style="color: #660066;">parentNode</span>.<span style="color: #660066;">insertBefore</span><span style="color: #009900;">&#40;</span>s<span style="color: #339933;">,</span> t<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #006600; font-style: italic;">/* ]]&gt; */</span><br />
<span style="color: #006600; font-style: italic;">// ]]&gt;&lt;/script&gt;</span></div></td></tr></tbody></table></div>
<p>The same can be done with Twitter by replacing the standard &lt;script&gt; tag:</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://platform.twitter.com/widgets.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></div></td></tr></tbody></table></div>
<p>With this:</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #006600; font-style: italic;">// &lt;![CDATA[</span><br />
<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> twitterScriptTag <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'script'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; twitterScriptTag.<span style="color: #660066;">type</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'text/javascript'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; twitterScriptTag.<span style="color: #660066;">async</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; twitterScriptTag.<span style="color: #660066;">src</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'http://platform.twitter.com/widgets.js'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> s <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'script'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; s.<span style="color: #660066;">parentNode</span>.<span style="color: #660066;">insertBefore</span><span style="color: #009900;">&#40;</span>twitterScriptTag<span style="color: #339933;">,</span> s<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #006600; font-style: italic;">// ]]&gt;&lt;/script&gt;</span></div></td></tr></tbody></table></div>
<p>Though the real loading might be longer, the users perceives the page as loading fast.</p>
<p>P.S. For this post I was going to include Facebook, but while going over their API docs they added asynchronous support since the last time I checked. As for the reddit button, that took a bit more work more about that another time.</p>
<p><a href="http://blog.wyrihaximus.net/2011/05/loading-your-twitter-tweet-button-asynchronous/" rel="bookmark">Loading your Twitter Tweet Button asynchronous</a> originally appeared on <a href="http://blog.wyrihaximus.net">Ramblings of a Developer</a> on May 25, 2011.</p>
 <p><a href="http://blog.wyrihaximus.net/?flattrss_redirect&amp;id=747&amp;md5=76ab399f225834c66504172fcad9db66" title="Flattr" target="_blank"><img src="http://blog.wyrihaximus.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.wyrihaximus.net/2011/05/loading-your-twitter-tweet-button-asynchronous/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=WyriHaximus&amp;popout=1&amp;url=http%3A%2F%2Fblog.wyrihaximus.net%2F2011%2F05%2Floading-your-twitter-tweet-button-asynchronous%2F&amp;language=en_GB&amp;category=text&amp;title=Loading+your+Twitter+Tweet+Button+asynchronous&amp;description=Twitter+has+updated+their+buttons+to+be+asynchronousby+default%21+Check+out+twitter.com%2Fbuttons+For+wow-screenshots.net+I+was+looking+to+boost+the+loading+speed+of+the+site.+By+spending+as+little+time...&amp;tags=facebook%2CFlattr%2CJavascript%2Ctwitter%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Feedburner Email Widget 1.1.2</title>
		<link>http://blog.wyrihaximus.net/2011/05/feedburner-email-widget-1-1-2/</link>
		<comments>http://blog.wyrihaximus.net/2011/05/feedburner-email-widget-1-1-2/#comments</comments>
		<pubDate>Sun, 22 May 2011 20:54:22 +0000</pubDate>
		<dc:creator>WyriHaximus</dc:creator>
				<category><![CDATA[Feedburner Email Widget]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Feedburner email widget]]></category>
		<category><![CDATA[Flattr]]></category>

		<guid isPermaLink="false">http://blog.wyrihaximus.net/?p=738</guid>
		<description><![CDATA[About 20 minutes ago I pushed 1.1.2 for this wordpress plugin to fix a minor issue and add a Flattr button.  1.2 is around the corner with a improved admin widget. For now I don&#8217;t have anything to show but that should change in the upcoming days. However I can reveal a few details: A [...]]]></description>
				<content:encoded><![CDATA[<div id="attachment_741" class="wp-caption aligncenter" style="width: 185px"><a href="http://blog.wyrihaximus.net/wp-content/uploads/2011/05/2011-05-22_2245.png"><img class="size-medium wp-image-741" title="Feedburner Email Widget 1.1.2" src="http://blog.wyrihaximus.net/wp-content/uploads/2011/05/2011-05-22_2245-175x300.png" alt="Feedburner Email Widget 1.1.2" width="175" height="300" /></a><p class="wp-caption-text">Feedburner Email Widget 1.1.2</p></div>
<p>About 20 minutes ago I pushed 1.1.2 for this wordpress plugin to fix a minor issue and add a Flattr button.  1.2 is around the corner with a improved admin widget. For now I don&#8217;t have anything to show but that should change in the upcoming days. However I can reveal a few details:</p>
<ul>
<li>A wizzard to make the widget easier to use</li>
<li>i18n to improve support for non English sites</li>
</ul>
<p><a href="http://blog.wyrihaximus.net/2011/05/feedburner-email-widget-1-1-2/" rel="bookmark">Feedburner Email Widget 1.1.2</a> originally appeared on <a href="http://blog.wyrihaximus.net">Ramblings of a Developer</a> on May 22, 2011.</p>
 <p><a href="http://blog.wyrihaximus.net/?flattrss_redirect&amp;id=738&amp;md5=915ecf1780aacb8a7d125364ed0c3681" title="Flattr" target="_blank"><img src="http://blog.wyrihaximus.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.wyrihaximus.net/2011/05/feedburner-email-widget-1-1-2/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=WyriHaximus&amp;popout=1&amp;url=http%3A%2F%2Fblog.wyrihaximus.net%2F2011%2F05%2Ffeedburner-email-widget-1-1-2%2F&amp;language=en_GB&amp;category=text&amp;title=Feedburner+Email+Widget+1.1.2&amp;description=About+20+minutes+ago+I+pushed+1.1.2+for+this+wordpress+plugin+to+fix+a+minor+issue+and+add+a+Flattr+button.+%C2%A01.2+is+around+the+corner+with+a+improved+admin...&amp;tags=Feedburner+email+widget%2CFlattr%2CWordpress%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Picking a fun reverse DNS IPv6 address for IRSSI</title>
		<link>http://blog.wyrihaximus.net/2011/03/picking-a-fun-reverse-dns-ipv6-address-for-irssi/</link>
		<comments>http://blog.wyrihaximus.net/2011/03/picking-a-fun-reverse-dns-ipv6-address-for-irssi/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 21:32:18 +0000</pubDate>
		<dc:creator>WyriHaximus</dc:creator>
				<category><![CDATA[IPv6]]></category>
		<category><![CDATA[IRC]]></category>
		<category><![CDATA[IRSSI]]></category>

		<guid isPermaLink="false">http://blog.wyrihaximus.net/?p=716</guid>
		<description><![CDATA[The otherday I was looking for a cool IPv6 address to use with IRSSI as reverse DNS. (A Pingdom article inspired me.) The old one was a numeric IPv6 representation of the server running it so it had to be something more fun and cool . So with some other people (my girlfriend (for some [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://blog.wyrihaximus.net/wp-content/uploads/2011/03/IMAG0683.jpg"><img class="aligncenter" title="Facebook IPv6" src="http://blog.wyrihaximus.net/wp-content/uploads/2011/03/IMAG0683-300x200.jpg" alt="" width="400" height="200" /></a></p>
<p>The otherday I was looking for a cool IPv6 address to use with IRSSI as reverse DNS. (<a title="Royal Pingdom  &amp;raquo; IPv6 playtime: Hiding sentences inside addresses" href="http://royal.pingdom.com/2009/02/06/ipv6-playtime-hiding-sentences-inside-addresses/" target="_blank">A Pingdom article inspired me.</a>) The old one was a numeric IPv6 representation of the server running it so it had to be something more fun and cool <img src='http://blog.wyrihaximus.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . So with some other people (my girlfriend (for some reason she came op with b00b <img src='http://blog.wyrihaximus.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ), <a title="Thor Erik" href="http://thorerik.net/" target="_blank">Thor</a> and some random Google searches helped me putting together a simple list</p>
<ul>
<li>:face:b00c (<a title="Facebook" href="http://facebook.com" target="_blank">Facebook</a>)</li>
<li>:tac0:be11 (<a title="Taco Bell" href="http://www.tacobell.com/" target="_blank">Taco Bell</a>)</li>
<li>:101 (lol)</li>
<li>:f00d (food)</li>
<li>:beef (beef)</li>
<li>:10ad (load)</li>
<li>:de11 (<a title="Dell" href="http://dell.com/" target="_blank">Dell</a>)</li>
<li>:dead (dead)</li>
<li>:b00b (boob)</li>
<li>:51e7 (<a title="Slut" href="http://translate.google.com/#nl|en|slet" target="_blank">slet</a>)</li>
<li>:c0de (code)</li>
<li>:bee2 (beer)</li>
<li>:babe (babe)</li>
<li>:abba (<a title="ABBA" href="http://www.abbasite.com/" target="_blank">ABBA</a>)</li>
<li>:a11:baba (<a title="Ali Baba" href="http://en.wikipedia.org/wiki/Ali_Baba" target="_blank">Ali Baba</a>)</li>
<li>:ca75 (cats)</li>
<li>:d09s (dogs)</li>
</ul>
<p>Picked :101:ca75 (<a title="LOL Cats" href="icanhascheezburger.com" target="_blank">LOL Cats</a>) as new IPv6 to use <img src='http://blog.wyrihaximus.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Now I&#8217;m off figuring out  fun addresses  for <a title="World of Warcraft Map" href="http://wyrimaps.net/wow" target="_blank">WyriMaps</a> and <a title="World of Warcraft Screenshots" href="http://wow-screenshots.net/" target="_blank">WoW-Screenshot</a> content subdomains <img src='http://blog.wyrihaximus.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p><a href="http://blog.wyrihaximus.net/2011/03/picking-a-fun-reverse-dns-ipv6-address-for-irssi/" rel="bookmark">Picking a fun reverse DNS IPv6 address for IRSSI</a> originally appeared on <a href="http://blog.wyrihaximus.net">Ramblings of a Developer</a> on March 1, 2011.</p>
 <p><a href="http://blog.wyrihaximus.net/?flattrss_redirect&amp;id=716&amp;md5=52f8d842cd9955d3b94c39da891b6e3a" title="Flattr" target="_blank"><img src="http://blog.wyrihaximus.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.wyrihaximus.net/2011/03/picking-a-fun-reverse-dns-ipv6-address-for-irssi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=WyriHaximus&amp;popout=1&amp;url=http%3A%2F%2Fblog.wyrihaximus.net%2F2011%2F03%2Fpicking-a-fun-reverse-dns-ipv6-address-for-irssi%2F&amp;language=en_GB&amp;category=text&amp;title=Picking+a+fun+reverse+DNS+IPv6+address+for+IRSSI&amp;description=The+otherday+I+was+looking+for+a+cool+IPv6+address+to+use+with+IRSSI+as+reverse+DNS.+%28A+Pingdom+article+inspired+me.%29+The+old+one+was+a+numeric+IPv6+representation...&amp;tags=IPv6%2CIRC%2CIRSSI%2Cblog" type="text/html" />
	</item>
		<item>
		<title>A styling guide for @predominant cakephp tags plugin article</title>
		<link>http://blog.wyrihaximus.net/2010/10/a-styling-guide-for-predominant-cakephp-tags-plugin-article/</link>
		<comments>http://blog.wyrihaximus.net/2010/10/a-styling-guide-for-predominant-cakephp-tags-plugin-article/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 19:20:18 +0000</pubDate>
		<dc:creator>WyriHaximus</dc:creator>
				<category><![CDATA[Cakephp]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[predominant]]></category>
		<category><![CDATA[Tag Cloud]]></category>
		<category><![CDATA[Tags]]></category>

		<guid isPermaLink="false">http://blog.wyrihaximus.net/?p=679</guid>
		<description><![CDATA[This post assumes you&#8217;ve completed reading Graham Weldon (@predominant) article on using the plugin, the plugin pages them self and in specific the the tag cloud helper page. The helper example sets a size attribute  on the li tag. A way to utilize this would be writing a piece of jQuery (or javascript in general) [...]]]></description>
				<content:encoded><![CDATA[<p>This post assumes you&#8217;ve completed reading Graham Weldon (<a href="http://twitter.com/predominant">@predominant</a>) <a href="http://www.cakedc.com/graham_weldon/2010/10/29/using-the-cakedc-tags-plugin-for-cakephp">article</a> on using the plugin, the <a href="http://cakedc.com/downloads#tags">plugin pages</a> them self and in specific the the <a href="https://github.com/CakeDC/tags/wiki/Display-a-Tag-cloud-with-the-TagCloud-helper">tag cloud helper page</a>. The helper example sets a size attribute  on the li tag. A way to utilize this would be writing a piece of jQuery (or javascript in general) that would take it and apply some styling to it. This would mean a lot more resource usage compared to pure CSS.</p>
<p><strong>The PHP</strong></p>
<p>At the PHP side we need to change a few things currently this is the code:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #b1b100;">echo</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">TagCloud</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">display</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tags</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'before'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'&lt;li size=&quot;%size%&quot; class=&quot;tag&quot;&gt;'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'after'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'&lt;/li&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>We&#8217;ll be change that into this:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #b1b100;">echo</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">TagCloud</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">display</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tags</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'before'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'&lt;li class=&quot;fs%size% tag&quot;&gt;'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'after'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'&lt;/li&gt;'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'maxSize'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">50</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'minSize'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>As you can see a few things change. First off we also supply the min and maxSize options. The helper uses these and calculates a number in between those values, we&#8217;ll use those numbers for the CSS classes later on. A option that change is before as you can see %size% is now used for a class, this class will contain it&#8217;s font-size and any options you might want to add yourself.</p>
<p><strong>Generating the CSS</strong></p>
<p>If your lazy and just want a working example you can skip this bit and skip to <strong>The CSS</strong>. Since the example requires 50 css class and it takes alot of time to calculate the required values by hand I&#8217;ve a little script to do it for me/us.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #000088;">$css</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$class</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'fs'</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$start_size</span> <span style="color: #339933;">=</span> <span style="color:#800080;">0.75</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$stop_size</span> <span style="color: #339933;">=</span> <span style="color:#800080;">2.5</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$count</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">50</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$precision</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">&lt;=</span><span style="color: #000088;">$count</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$css</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'.'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$class</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'{font-size:'</span> <span style="color: #339933;">.</span> <span style="color: #990000;">round</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$stop_size</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$start_size</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">/</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$count</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$start_size</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #000088;">$precision</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;em;}<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$css</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>The script has a few configuration values.</p>
<ul>
<li>class &#8211; the prefix to the %size% value</li>
<li>start_size &#8211; the smallest possible tag size in em</li>
<li>stop_size &#8211; the biggest possible tag size in em</li>
<li>count &#8211; The number of classes and for now 50 <img src='http://blog.wyrihaximus.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>precision &#8211; the maximum of digest behind the dot</li>
</ul>
<p><strong>The CSS</strong></p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #6666ff;">.fs1</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">0.75em</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span><br />
...<br />
<span style="color: #6666ff;">.fs50</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">2.5em</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<p>(<a href="http://static.wyrihaximus.net/blog/cakephp_tag_cloud.css">Click here for the complete list.</a>)</p>
<p><strong>The Result</strong></p>
<p style="text-align: center;"><a href="http://blog.wyrihaximus.net/wp-content/uploads/2010/10/cakephp_tagcloud_styled_example.jpg"><img class="aligncenter size-full wp-image-688" title="cakephp_tagcloud_styled_example" src="http://blog.wyrihaximus.net/wp-content/uploads/2010/10/cakephp_tagcloud_styled_example.jpg" alt="" width="400" height="104" /></a></p>
<p><a href="http://blog.wyrihaximus.net/2010/10/a-styling-guide-for-predominant-cakephp-tags-plugin-article/" rel="bookmark">A styling guide for @predominant cakephp tags plugin article</a> originally appeared on <a href="http://blog.wyrihaximus.net">Ramblings of a Developer</a> on October 31, 2010.</p>
 <p><a href="http://blog.wyrihaximus.net/?flattrss_redirect&amp;id=679&amp;md5=2d12826f64fd86766d571d12898dd5b1" title="Flattr" target="_blank"><img src="http://blog.wyrihaximus.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.wyrihaximus.net/2010/10/a-styling-guide-for-predominant-cakephp-tags-plugin-article/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=WyriHaximus&amp;popout=1&amp;url=http%3A%2F%2Fblog.wyrihaximus.net%2F2010%2F10%2Fa-styling-guide-for-predominant-cakephp-tags-plugin-article%2F&amp;language=en_GB&amp;category=text&amp;title=A+styling+guide+for+%40predominant+cakephp+tags+plugin+article&amp;description=This+post+assumes+you%26%238217%3Bve+completed+reading+Graham+Weldon+%28%40predominant%29+article+on+using+the+plugin%2C+the+plugin+pages+them+self+and+in+specific+the+the+tag+cloud+helper+page.+The+helper...&amp;tags=Cakephp%2CCSS%2Cphp%2Cpredominant%2CTag+Cloud%2CTags%2Cblog" type="text/html" />
	</item>
		<item>
		<title>ReadyNAS Duo Try out</title>
		<link>http://blog.wyrihaximus.net/2010/08/readynas-duo-try-out/</link>
		<comments>http://blog.wyrihaximus.net/2010/08/readynas-duo-try-out/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 15:02:17 +0000</pubDate>
		<dc:creator>WyriHaximus</dc:creator>
				<category><![CDATA[Cakephp]]></category>
		<category><![CDATA[ReadyNAS Duo]]></category>
		<category><![CDATA[World of Warcraft]]></category>

		<guid isPermaLink="false">http://blog.wyrihaximus.net/?p=649</guid>
		<description><![CDATA[Bought a ReadyNAS Duo a few weeks ago and added a Western Digital WD20EARS to it. Aside from using it as a file storage I&#8217;ll also add my private client for my upcoming screenshots site to it and some media tools I might release as a cakephp plugin.]]></description>
				<content:encoded><![CDATA[<p><!--d0a4a3b107c74e248ff0984674449898-->Bought a ReadyNAS Duo a few weeks ago and added a Western Digital WD20EARS to it. Aside from using it as a file storage I&#8217;ll also add my private client for my upcoming screenshots site to it and some media tools I might release as a cakephp plugin.</p>
<p><img class="aligncenter" title="ReadyNAS Duo CakePHP" src="http://img.mobypicture.com/7b26ec34325cccaaad5cfdbfb85d2234_view.jpg" alt="" width="600" height="400" /></p>
<p><a href="http://blog.wyrihaximus.net/2010/08/readynas-duo-try-out/" rel="bookmark">ReadyNAS Duo Try out</a> originally appeared on <a href="http://blog.wyrihaximus.net">Ramblings of a Developer</a> on August 30, 2010.</p>
 <p><a href="http://blog.wyrihaximus.net/?flattrss_redirect&amp;id=649&amp;md5=f2b49d74c685f24307a2b7a092c787d9" title="Flattr" target="_blank"><img src="http://blog.wyrihaximus.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.wyrihaximus.net/2010/08/readynas-duo-try-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=WyriHaximus&amp;popout=1&amp;url=http%3A%2F%2Fblog.wyrihaximus.net%2F2010%2F08%2Freadynas-duo-try-out%2F&amp;language=en_GB&amp;category=text&amp;title=ReadyNAS+Duo+Try+out&amp;description=Bought+a+ReadyNAS+Duo+a+few+weeks+ago+and+added+a+Western+Digital+WD20EARS+to+it.+Aside+from+using+it+as+a+file+storage+I%26%238217%3Bll+also+add+my+private+client...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Serving Static Content from tmpfs with Nginx</title>
		<link>http://blog.wyrihaximus.net/2010/07/serving-static-content-from-tmpfs-with-nginx/</link>
		<comments>http://blog.wyrihaximus.net/2010/07/serving-static-content-from-tmpfs-with-nginx/#comments</comments>
		<pubDate>Sat, 24 Jul 2010 19:20:14 +0000</pubDate>
		<dc:creator>WyriHaximus</dc:creator>
				<category><![CDATA[Nginx]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[WyriMaps]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[tmpfs]]></category>

		<guid isPermaLink="false">http://blog.wyrihaximus.net/?p=630</guid>
		<description><![CDATA[One way to speed up WyriMaps.net is to preload popular tiles and nodes to avoid the disk IO build up with a lot of visitors on the map moving around, zooming in and out and adding/removing node sets to the map. Using tmpfs is a simple way to use the RAM as extra cache to [...]]]></description>
				<content:encoded><![CDATA[<p>One way to speed up <a title="WyriMaps.net World of Warcraft Map" href="http://wyrimaps.net/wow">WyriMaps.net</a> is to preload popular tiles and nodes to avoid the disk IO build up with a lot of visitors on the map moving around, zooming in and out and adding/removing node sets to the map. Using tmpfs is a simple way to use the RAM as extra cache to speed up your webpages. Tho <a href="http://bretthoerner.com/blog/2008/oct/27/using-nginx-memcached-module-django/">another way</a> to do that is using <a title="Nginx Memcached Module" href="http://wiki.nginx.org/NginxHttpMemcachedModule">memcached</a> wich is more interesting if you have <a href="http://www.igvita.com/2008/02/11/nginx-and-memcached-a-400-boost/">several servers</a> instead of one.</p>
<p><strong>Preparation</strong></p>
<p>First off make sure you have <a href="http://wiki.nginx.org/Main">Nginx</a> and tmpfs installed and the following diretories created:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">/var/www/static.website.tld/<br />
/mnt/tmpfs/nginx/static.website.tld/</div></td></tr></tbody></table></div>
<p>The first contains the files to serve on disk we need them in case we can&#8217;t find anything n the memory. The seccond is the RAMDisk using tmpfs you mount using the following line in /etc/fstab:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">tmpfs                   /mnt/tmpfs/nginx        tmpfs   rw                              0 0</div></td></tr></tbody></table></div>
<p>The last thing to prepare is a script that automaticly sets up the directories within the /mnt/tmpfs/nginx mount point. Since everything happens within the RAM of the server it&#8217;s all lost after a crash/shutdown/reboot.</p>
<p><strong>Configuration The server</strong></p>
<p>Next up is configuring nginx in/etc/nginx/nginx.conf (or somewhere else depending on your distro) to start with error handling every time nginx can&#8217;t find a file on tmpfs it generates an error even if it finds it later on the disc.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">error_log /dev/null crit;</div></td></tr></tbody></table></div>
<p>Seccondly within the <em>http { }</em> section we add to allow us to check the RAM first then the disc and then serve a 404 error page/image/something.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">recursive_error_pages on;</div></td></tr></tbody></table></div>
<p>Aside from these settings it&#8217;s wise to look into the <a href="http://wiki.nginx.org/NginxHttpGzipModule">Gzip</a> and <a href="http://wiki.nginx.org/NginxHttpCoreModule">core</a> modules for speeding up the transfer of data and buffering settings.</p>
<p><strong>Configuration The host</strong></p>
<p>Now this is the fun part <img src='http://blog.wyrihaximus.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . To start we create the <em>server { }</em> section within the <em>http { }</em> section. We add the following basic settings to make sure it listens on port 80 to the correct host (static.website.tld) and set the expiration to max so we don&#8217;t keep serving the files:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">listen          80;<br />
server_name     static.website.tld;<br />
expires max;</div></td></tr></tbody></table></div>
<p>We tell the server to look in the tmpfs mount first and to check the disc after that:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">root /mnt/tmpfs/nginx/static.website.tld/;<br />
error_page 404 = @static_website_tld_disc;</div></td></tr></tbody></table></div>
<p>By telling nginx to check <em>@static_website_tld_disc</em> after it checked tmpfs and creating a location block we can add another 404 error_page (this is where the error_page nesting comes in we enabled earlier) to serve an error page:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">location @static_website_tld_disc {<br />
root /var/www/static.website.tld/;<br />
error_page 404 = /404.html;<br />
}</div></td></tr></tbody></table></div>
<p>Now nginx first checks the ram for files and after that the disc we have one final block to add so we also serve a neat <a href="http://www.smashingmagazine.com/2007/08/17/404-error-pages-reloaded/">4</a><a href="http://www.lightecho.net/404page/404_fame.html">0</a><a href="http://www.huffingtonpost.com/2010/02/11/best-404-error-pages-ever_n_456767.html">4</a> <a href="http://www.cyberdesignz.com/blog/website-design/20-best-404-error-page-design-examples-to-enhance-the-usability-of-your-site/">error</a> page. As final step with add a block that will tell nginx where to find 404.html (note that in the root in the block below there <strong>has</strong> to be a file named <strong>404.html</strong>).</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">location = /404.html {<br />
root /mnt/tmpfs/nginx/static.website.tld;<br />
}</div></td></tr></tbody></table></div>
<p>As the block shows I&#8217;m serving it from RAM and everytime the machine boots a script puts the 404.html file on the tmpfs mount. This results in the following config and keeps <a href="http://wyrimaps.net/wow">WyriMaps.net/WoW</a> fast under high load.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">error_log /dev/null crit;<br />
http {<br />
&nbsp; &nbsp; recursive_error_pages on;<br />
&nbsp; &nbsp; server {<br />
&nbsp; &nbsp; &nbsp; &nbsp; listen &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;80;<br />
&nbsp; &nbsp; &nbsp; &nbsp; server_name &nbsp; &nbsp; static.website.tld;<br />
&nbsp; &nbsp; &nbsp; &nbsp; expires max;<br />
&nbsp; &nbsp; &nbsp; &nbsp; root /mnt/tmpfs/nginx/static.website.tld/;<br />
&nbsp; &nbsp; &nbsp; &nbsp; error_page 404 = @static_website_tld_disc;<br />
&nbsp; &nbsp; &nbsp; &nbsp; location @static_website_tld_disc {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root /var/www/static.website.tld/;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; error_page 404 = /404.html;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; location = /404.html {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root /mnt/tmpfs/nginx/static.website.tld;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; }<br />
}</div></td></tr></tbody></table></div>
<p>Enjoy <img src='http://blog.wyrihaximus.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> !</p>
<p>Wyri</p>
<p><a href="http://blog.wyrihaximus.net/2010/07/serving-static-content-from-tmpfs-with-nginx/" rel="bookmark">Serving Static Content from tmpfs with Nginx</a> originally appeared on <a href="http://blog.wyrihaximus.net">Ramblings of a Developer</a> on July 24, 2010.</p>
 <p><a href="http://blog.wyrihaximus.net/?flattrss_redirect&amp;id=630&amp;md5=ac6d1c8b46adcf24328d835c9d33b8c2" title="Flattr" target="_blank"><img src="http://blog.wyrihaximus.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.wyrihaximus.net/2010/07/serving-static-content-from-tmpfs-with-nginx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=WyriHaximus&amp;popout=1&amp;url=http%3A%2F%2Fblog.wyrihaximus.net%2F2010%2F07%2Fserving-static-content-from-tmpfs-with-nginx%2F&amp;language=en_GB&amp;category=text&amp;title=Serving+Static+Content+from+tmpfs+with+Nginx&amp;description=One+way+to+speed+up+WyriMaps.net+is+to+preload+popular+tiles+and+nodes+to+avoid+the+disk+IO+build+up+with+a+lot+of+visitors+on+the+map+moving+around%2C...&amp;tags=memcached%2CNginx%2CRAM%2Ctmpfs%2CWyriMaps%2Cblog" type="text/html" />
	</item>
		<item>
		<title>My first Google Chrome extensions for Wowhead, Thottbot, MMOC and Wowdb</title>
		<link>http://blog.wyrihaximus.net/2010/07/my-first-google-chrome-extensions-for-wowhead-thottbot-mmoc-and-wowdb/</link>
		<comments>http://blog.wyrihaximus.net/2010/07/my-first-google-chrome-extensions-for-wowhead-thottbot-mmoc-and-wowdb/#comments</comments>
		<pubDate>Sun, 04 Jul 2010 14:37:42 +0000</pubDate>
		<dc:creator>WyriHaximus</dc:creator>
				<category><![CDATA[Google Chrome]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Curse]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[MMO Champion]]></category>
		<category><![CDATA[Thottbot]]></category>
		<category><![CDATA[World of Warcraft]]></category>
		<category><![CDATA[Wowdb]]></category>
		<category><![CDATA[Wowhead]]></category>

		<guid isPermaLink="false">http://blog.wyrihaximus.net/?p=614</guid>
		<description><![CDATA[After switching to Chrome a few days ago and hearing Joshua talking about how easy it is to write extensions for Chrome I decided to give it a try. One of the first thing coming to mind was everyone linking to wowhead, thottbot and all but you never know what exactly they are linking untill [...]]]></description>
				<content:encoded><![CDATA[<p>After switching to <a href="http://www.google.com/chrome">Chrome</a> <a href="http://twitter.com/WyriHaximus/status/17160151036">a few days ago</a> and hearing <a href="http://joshualuckers.nl/">Joshua</a> talking about how easy it is to write extensions for Chrome I decided to give it a try. One of the first thing coming to mind was everyone linking to wowhead, thottbot and all but you never know what exactly they are linking untill you click it. Most World of Warcraft database sites supply a handy <a href="http://www.wowhead.com/tooltips">tooltip</a> script solving this problem. After a talk with Joshua and how Chrome plugins are written I gave it a shot.</p>
<p>The result are 4 extensions (tho basically the same code but adjusted for the 4 sites) that first check if the tooltip script is already in the webppage and stop there if it is. If the script isn&#8217;t present but links to the site are present it inserts the tooltip script into the body of the page thus attaching tooltips to the links.</p>
<p>The extensions:</p>
<p><a href="https://chrome.google.com/extensions/detail/lpolikihcjghnlikcgbdgacddibmofmh">Wowhead</a></p>
<p><img class="alignnone" title="wowhead tooltip google chrome extension" src="https://chrome.google.com/extensions/img/lpolikihcjghnlikcgbdgacddibmofmh/1278074306.02/screenshot/1" alt="" width="409" height="192" /></p>
<p><a href="https://chrome.google.com/extensions/detail/pigifjbmepiepjlpkkmnnijhfodefljk">Thottbot</a></p>
<p><img class="alignnone" title="Google Chrome Thottbot Tooltip Extension" src="https://chrome.google.com/extensions/img/pigifjbmepiepjlpkkmnnijhfodefljk/1278085370.36/screenshot/1" alt="" width="408" height="141" /></p>
<p><a href="https://chrome.google.com/extensions/detail/dkoddlmigibbmjjlhpgobcaeedmohcln">MMO Champion DB</a></p>
<p><img class="alignnone" title="Google Chrome MMO Champion Tooltip Extension" src="https://chrome.google.com/extensions/img/dkoddlmigibbmjjlhpgobcaeedmohcln/1278187093.12/screenshot/1" alt="" width="409" height="108" /></p>
<p><a href="https://chrome.google.com/extensions/detail/kkemgnfnohgdlhhbhkpebagodchgcphe">Wowdb.com</a></p>
<p><img class="alignnone" title="Google Chrome Wowdb Tooltip Extension" src="https://chrome.google.com/extensions/img/kkemgnfnohgdlhhbhkpebagodchgcphe/1278106094.31/screenshot/1" alt="" width="409" height="210" /></p>
<p>Planning to do the same for a few other database sites later on in the week after some phpBB3 MOD work <img src='http://blog.wyrihaximus.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p><a href="http://blog.wyrihaximus.net/2010/07/my-first-google-chrome-extensions-for-wowhead-thottbot-mmoc-and-wowdb/" rel="bookmark">My first Google Chrome extensions for Wowhead, Thottbot, MMOC and Wowdb</a> originally appeared on <a href="http://blog.wyrihaximus.net">Ramblings of a Developer</a> on July 4, 2010.</p>
 <p><a href="http://blog.wyrihaximus.net/?flattrss_redirect&amp;id=614&amp;md5=fb80659c02dfd51374da09c083ef66fc" title="Flattr" target="_blank"><img src="http://blog.wyrihaximus.net/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.wyrihaximus.net/2010/07/my-first-google-chrome-extensions-for-wowhead-thottbot-mmoc-and-wowdb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=WyriHaximus&amp;popout=1&amp;url=http%3A%2F%2Fblog.wyrihaximus.net%2F2010%2F07%2Fmy-first-google-chrome-extensions-for-wowhead-thottbot-mmoc-and-wowdb%2F&amp;language=en_GB&amp;category=text&amp;title=My+first+Google+Chrome+extensions+for+Wowhead%2C+Thottbot%2C+MMOC+and+Wowdb&amp;description=After+switching+to+Chrome+a+few+days+ago+and+hearing+Joshua+talking+about+how+easy+it+is+to+write+extensions+for+Chrome+I+decided+to+give+it+a+try.+One...&amp;tags=Chrome%2CCurse%2CGoogle%2CJavascript%2CMMO+Champion%2CThottbot%2CWorld+of+Warcraft%2CWowdb%2CWowhead%2Cblog" type="text/html" />
	</item>
	</channel>
</rss>

<!-- Dynamic page generated in 2.377 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2013-03-24 13:04:09 -->

<!-- Compression = gzip -->