<?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>Pre-Thought Listen</title>
	<atom:link href="http://journal.ryanmccue.info/feed/" rel="self" type="application/rss+xml" />
	<link>http://journal.ryanmccue.info</link>
	<description>The personal weblog of Ryan McCue.</description>
	<lastBuildDate>Fri, 06 Apr 2012 14:57:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Optimising WP E-Commerce&#8217;s SQL</title>
		<link>http://journal.ryanmccue.info/152/optimising-wpec-sq/</link>
		<comments>http://journal.ryanmccue.info/152/optimising-wpec-sq/#comments</comments>
		<pubDate>Fri, 06 Apr 2012 14:37:52 +0000</pubDate>
		<dc:creator>Ryan McCue</dc:creator>
				<category><![CDATA[Plugin Development]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[renku]]></category>
		<category><![CDATA[WP e-Commerce]]></category>
		<category><![CDATA[wpec]]></category>

		<guid isPermaLink="false">http://journal.ryanmccue.info/?p=152</guid>
		<description><![CDATA[As part of my most recent project (which you&#8217;ll be hearing more about very soon), I&#8217;ve been working with WP e-Commerce and having a tonne of fun dealing with all the bits and pieces. In general, it has been quite handy, since it has meant I don&#8217;t have to deal with implementing all the payment [...]]]></description>
			<content:encoded><![CDATA[<p>As part of <a href="http://renku.me/">my most recent project</a> (which you&#8217;ll be hearing more about very soon), I&#8217;ve been working with WP e-Commerce and having a tonne of fun dealing with all the bits and pieces. In general, it has been quite handy, since it has meant I don&#8217;t have to deal with implementing all the payment handling and such. However, it does have its issues, including a fairly horrible API.</p>
<p>WPEC is also quite a bit inefficient, due in part to its customisability. However, it&#8217;s definitely nothing insurmountable with a bit of code and some clever tricks.</p>
<p><em>Note:</em> I&#8217;ll be using code from 4.0-dev in examples, but it should all be the same for the latest stable version as well.</p>
<p>So, with all of that out of the way, let&#8217;s get started. First step in optimising anything in WordPress is to turn <code>WP_DEBUG</code> on. We&#8217;ll also want to turn <code>SAVEQUERIES</code> on so that we can see what exactly is getting queried. The Debug Bar plugin will also help to view the results of these.</p>
<p>To start off with, here&#8217;s the MySQL queries that were generated by WPEC for me on a non-WPEC page:</p>
<pre class="brush: sql; title: ; notranslate">SELECT option_value FROM wpstore_options WHERE option_name = '_transient_timeout_wpsc_theme_path' LIMIT 1
SELECT option_value FROM wpstore_options WHERE option_name = '_transient_wpsc_theme_path' LIMIT 1
SELECT option_value FROM wpstore_options WHERE option_name = 'wpsc_replace_page_title' LIMIT 1
SELECT option_value FROM wpstore_options WHERE option_name = 'wpsc_hide_featured_products' LIMIT 1
SELECT option_value FROM wpstore_options WHERE option_name = 'base_zipcode' LIMIT 1
SELECT option_value FROM wpstore_options WHERE option_name = 'wpsc_ups_settings' LIMIT 1
SELECT post_name FROM `wpstore_posts` WHERE `post_content` LIKE '%[productspage]%'  AND `post_type` = 'page' LIMIT 1
SELECT post_name FROM `wpstore_posts` WHERE `post_content` LIKE '%[shoppingcart]%'  AND `post_type` = 'page' LIMIT 1
SELECT post_name FROM `wpstore_posts` WHERE `post_content` LIKE '%[transactionresults]%'  AND `post_type` = 'page' LIMIT 1
SELECT post_name FROM `wpstore_posts` WHERE `post_content` LIKE '%[userlog]%'  AND `post_type` = 'page' LIMIT 1
SELECT option_value FROM wpstore_options WHERE option_name = '_transient_timeout_wpsc_url_wpsc-default.css' LIMIT 1
SELECT option_value FROM wpstore_options WHERE option_name = '_transient_wpsc_url_wpsc-default.css' LIMIT 1
SELECT option_value FROM wpstore_options WHERE option_name = 'google_server_type' LIMIT 1
SELECT option_value FROM wpstore_options WHERE option_name = 'google_cur' LIMIT 1</pre>
<p>That&#8217;s <strong>14 queries</strong> for essentially nothing! Even worse are the four fulltext queries to find those shortcodes. Surely we can do better.</p>
<p>So, let&#8217;s start cutting pieces out. The first part that concerned me was the two <code>google_</code> queries, as I&#8217;m not using Checkout. As it turns out, the Google Checkout plugin does all sorts of stuff even if it&#8217;s not loaded. This is not something we want. However, this is easy to fix. WPEC loads everything in the <code>wpsc-merchants/</code> directory, but no other code relies on these merchants, so simply remove the ones you don&#8217;t need. We&#8217;re using <a href="http://find.brentshepherd.com/">Brent Shepherd&#8217;s</a> <a href="https://github.com/instinct/WP-e-Commerce/pull/2">PayPal Digital Goods payment gateway</a> (which hopefully will make it into WPEC 4.0). This gateway uses the new 4.0 merchant gateway classes, so we don&#8217;t actually need anything in <code>wpsc-merchants/</code>. Before you remove all the files though, note that a blank directory will cause errors, so leave <code>testmode.merchant.php</code> to avoid this.</p>
<p>Right, we&#8217;re now down to 12 queries. Next job, cutting out the shipping information. Both <code>base_zipcode</code> and <code>wpsc_ups_settings</code> are being loaded, despite no shipping handlers being activated. As our store is purely virtual goods, we don&#8217;t need any of the shipping items, so we&#8217;ll do as before and remove them all. Be wary of the blank directory issue though, and leave at least one file in there (I chose <code>flatrate.php</code>).</p>
<p>OK, 10 queries! We&#8217;re making great progress. Next step is <code>wpsc_replace_page_title</code> and <code>wpsc_hide_featured_products</code>. Go into the presentation tab of your settings and resave, and this should save these to the database and set the autoload property, causing them to be loaded in the initial WordPress settings query. However, I noticed this was not happening on our server (I suspect that if they are set to off, they simply aren&#8217;t being saved), so I hardcoded them in the theme:</p>
<pre class="brush: php; title: ; notranslate">// pre_option_$x doesn't like false, so return 0 instead
add_filter('pre_option_wpsc_replace_page_title', '__return_zero');
add_filter('pre_option_wpsc_hide_featured_products', '__return_zero');</pre>
<p>Of course, if you want to enable them, you should use <code>'__return_true'</code> here instead, however the settings page should work for this.</p>
<p>By now, we should be down to the following 8 queries:</p>
<pre class="brush: sql; title: ; notranslate">SELECT option_value FROM wpstore_options WHERE option_name = '_transient_timeout_wpsc_theme_path' LIMIT 1
SELECT option_value FROM wpstore_options WHERE option_name = '_transient_wpsc_theme_path' LIMIT 1
SELECT post_name FROM `wpstore_posts` WHERE `post_content` LIKE '%[productspage]%'  AND `post_type` = 'page' LIMIT 1
SELECT post_name FROM `wpstore_posts` WHERE `post_content` LIKE '%[shoppingcart]%'  AND `post_type` = 'page' LIMIT 1
SELECT post_name FROM `wpstore_posts` WHERE `post_content` LIKE '%[transactionresults]%'  AND `post_type` = 'page' LIMIT 1
SELECT post_name FROM `wpstore_posts` WHERE `post_content` LIKE '%[userlog]%'  AND `post_type` = 'page' LIMIT 1
SELECT option_value FROM wpstore_options WHERE option_name = '_transient_timeout_wpsc_url_wpsc-default.css' LIMIT 1
SELECT option_value FROM wpstore_options WHERE option_name = '_transient_wpsc_url_wpsc-default.css' LIMIT 1</pre>
<p>So, first, let&#8217;s look at those transients. These transients work by caching where the WPEC theme files exist, to avoid having to check the stylesheet directory, then the template directory, then the default WPEC directory. There are two options to changing this: you can either head into your MySQL database and set the <code>autoload</code> value for these options to <code>yes</code>, or simply hardcode it. Personally, I know where these files are always going to live, so I went with hardcoding:</p>
<pre class="brush: php; title: ; notranslate">add_filter('pre_transient_wpsc_theme_path', array(__CLASS__, 'hardcode_wpsc_theme_path'));
add_filter('pre_transient_wpsc_url_wpsc-default.css', array(__CLASS__, 'hardcode_wpsc_theme_url'));

public function rm_hardcode_wpsc_theme_path($value) {
	return WPSC_CORE_THEME_PATH;
}

public function rm_hardcode_wpsc_theme_url($value) {
	return get_stylesheet_directory_uri() . '/wpsc-default.css';
}</pre>
<p>We&#8217;ve now hardcoded most things and we&#8217;re down to four queries: the shortcode queries. Why does WPEC even need to look these up? Well, in order to create URLs for products, WPEC needs to know the base URL, which is set to the page where your <code>productspage</code> shortcode is set. There&#8217;s no easy way to get these, so it has to do a LIKE query across all of your pages. Doing this on each page load is a huge strain though (there is <a href="http://code.google.com/p/wp-e-commerce/issues/detail?id=268">a bug filed about this</a> though, so the developers are aware), especially given that we&#8217;re not going to be changing this often.</p>
<p>My favourite way to do this, as you may have noticed, is to hardcode it. Unfortunately, there are no filters on this, so you&#8217;ll need <a href="https://github.com/instinct/WP-e-Commerce/pull/8">a custom patch to WPEC</a> to add support for this. Essentially what the patch does is allow the page names to be set previously. I personally think that <code>wp-config.php</code> is the best place for these to live, but it&#8217;s your choice on where it is. Here&#8217;s what your code should look like:</p>
<pre class="brush: php; title: ; notranslate">global $wpsc_page_titles;
$wpsc_page_titles = array(
        'products' =&gt; 'store',
        'checkout' =&gt; 'checkout',
        'transaction_results' =&gt; 'transaction-results',
        'userlog' =&gt; 'your-account',
);</pre>
<p>(The values should be set to the slug for each page respectively.)</p>
<p>Voilà, we&#8217;re down to zero queries from WPEC! This should minimise any extra stress on your MySQL server when it&#8217;s really not needed.</p>
<p><strong>Sidenote:</strong> Some of these inefficiencies can be patched in WPEC, while others can&#8217;t be, due to the nature of hardcoding them. For those that can be patched, I&#8217;ll be attempting to work with the WPEC team to help them fix it. A quick site benefits everyone. <img src='http://journal.ryanmccue.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Edit:</strong> WordPress has <code>__return_zero()</code> built-in, thanks Rarst.</p>
]]></content:encoded>
			<wfw:commentRss>http://journal.ryanmccue.info/152/optimising-wpec-sq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Huge Platypus, and His Journeys Around India</title>
		<link>http://ahugeplatypus.tumblr.com/</link>
		<comments>http://journal.ryanmccue.info/147/a-huge-platypus-and-his-journeys-around-india/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 08:41:22 +0000</pubDate>
		<dc:creator>Ryan McCue</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://journal.ryanmccue.info/?p=147</guid>
		<description><![CDATA[A friend of mine is in India at the moment and keeping a record of his travels on Tumblr. It&#8217;s a great read, and I&#8217;m insanely jealous of him.<p><a href="http://journal.ryanmccue.info/147/a-huge-platypus-and-his-journeys-around-india/">[Permalink]</a></p>]]></description>
			<content:encoded><![CDATA[<p>A friend of mine is in India at the moment and keeping a record of his travels on Tumblr. It&#8217;s a great read, and I&#8217;m insanely jealous of him.</p>
<p><a href="http://journal.ryanmccue.info/147/a-huge-platypus-and-his-journeys-around-india/">[Permalink]</a></p>]]></content:encoded>
			<wfw:commentRss>http://journal.ryanmccue.info/147/a-huge-platypus-and-his-journeys-around-india/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IntenseDebate Is No More!</title>
		<link>http://journal.ryanmccue.info/145/intensedebate-is-no-more/</link>
		<comments>http://journal.ryanmccue.info/145/intensedebate-is-no-more/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 11:28:05 +0000</pubDate>
		<dc:creator>Ryan McCue</dc:creator>
				<category><![CDATA[Meta]]></category>
		<category><![CDATA[comments]]></category>
		<category><![CDATA[intensedebate]]></category>

		<guid isPermaLink="false">http://journal.ryanmccue.info/?p=145</guid>
		<description><![CDATA[I&#8217;ve finally had time to redo some of the styling for this site, so I&#8217;ve given comments a makeover and switched back to WordPress&#8217;s comment system. Initially, I used IntenseDebate to avoid having to style the comments. It was a good idea, but unfortunately I never got the motivation to finish it off. Oops!]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve finally had time to redo some of the styling for this site, so I&#8217;ve given comments a makeover and switched back to WordPress&#8217;s comment system. Initially, I used IntenseDebate to avoid having to style the comments. It was a good idea, but unfortunately I never got the motivation to finish it off.</p>
<p>Oops!</p>
]]></content:encoded>
			<wfw:commentRss>http://journal.ryanmccue.info/145/intensedebate-is-no-more/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Explicit Versus Implict Coding</title>
		<link>http://journal.ryanmccue.info/139/explicit-versus-implict-coding/</link>
		<comments>http://journal.ryanmccue.info/139/explicit-versus-implict-coding/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 08:18:48 +0000</pubDate>
		<dc:creator>Ryan McCue</dc:creator>
				<category><![CDATA[Plugin Development]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[actions]]></category>
		<category><![CDATA[backwards compatibility]]></category>
		<category><![CDATA[filters]]></category>
		<category><![CDATA[forward compatibility]]></category>
		<category><![CDATA[mikeschinkel]]></category>
		<category><![CDATA[wp_plugin]]></category>

		<guid isPermaLink="false">http://journal.ryanmccue.info/?p=139</guid>
		<description><![CDATA[Konstantin Kovshenin recently posted on his blog about creating a WP_Plugin class. He posted an example of a class to fit his thoughts around it on Gist, and from there, discussion has taken place on how such a class would be implemented. There has been a fair bit of discussion on my fork of Konstantin&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Konstantin Kovshenin recently posted on his blog about <a href="http://kovshenin.com/2012/01/hey-wordpress-how-about-a-wp_plugin-class-3797/">creating a WP_Plugin class</a>. He posted <a href="https://gist.github.com/1626284">an example of a class</a> to fit his thoughts around it on Gist, and from there, discussion has taken place on how such a class would be implemented.</p>
<p>There has been a fair bit of discussion on <a href="https://gist.github.com/1626492">my fork of Konstantin&#8217;s code</a> about this, and I&#8217;ve been updating the class with new ideas as we come across them.</p>
<p>However, as is usual with discussion regarding any semi-complicated piece of code, there has been some disagreement on how best to hook methods in. <a href="http://mikeschinkel.com/">Mike Schinkel</a> is a fan of mapping method names directly to hooks, whereas I much prefer prefixing methods that I want hooked with either <code>action_</code> or <code>filter_</code>. (We both agree that PHPDoc tags are a good idea though, although Mike also adds a <code>@wp-nohook</code> to ignore any methods.)<sup><a href="http://journal.ryanmccue.info/139/explicit-versus-implict-coding/#footnote_0_139" id="identifier_0_139" class="footnote-link footnote-identifier-link" title="Mike has informed me that he does support explicit hooking for published code, but implicit hooking for prototyping. I&amp;#8217;m not a fan of this either, since I can forsee people forgetting to do so.">1</a></sup> I thought I&#8217;d further flesh out why I&#8217;m not a fan of mapping the methods directly.</p>
<p>Personally, while I see the merit in naming methods for hooks directly, I hate magic. I hate not knowing when my code is used, and I think one of the biggest strengths of WordPress is that this hardly ever happens. If I want something used, I explicitly declare that through <code>add_action</code>/<code>add_filter</code>.</p>
<p>Don&#8217;t get me wrong: I love making things easier for myself. One of my favourite pieces of code ever is one written by Morten Fangel that I use in almost everything I do: <code><a href="https://github.com/Lilina/Lilina/blob/master/inc/core/AjaxHandler.php#L39">_sortArgs()</a></code>. This piece of code will take an associative array, like <code>array('a' => 'b')</code> and map the variables to parameters to my function. Combined with <code>$_GET</code> and <code>$_POST</code>, it&#8217;s an extremely powerful tool. However, <code>_sortArgs</code> isn&#8217;t really that magical when it comes down to it. I&#8217;m specifying which parameters I want, and everything is explicitly written by me.</p>
<p>I can see the same thing with this plugin class. If I prefix a method with <code>action_</code> or <code>filter_</code> (or using PHPDoc tags), I&#8217;m explicitly stating that I want this hooked. On the other hand, a method like <code>init</code> is completely implicit. It happens to match a WordPress action, but that could be a coincidence.</p>
<p>As an example of where this would be a problem for me: I often write a method like <code>admin_page</code> for whatever page I&#8217;m adding to the admin. If I have things spread across several pages, I&#8217;ll factorise the common header bits and footer bits into <code>admin_header</code> and <code>admin_footer</code>. Except with implicit hooking, I&#8217;ve accidentally just hooked my footer method into the administration footer. Now, I have to <strong>undo</strong> that by specifying that I don&#8217;t want it hooked.</p>
<p>To hook implicitly requires that I know every action/filter in WordPress to avoid conflicting with them.</p>
<p>Even worse than this is that hooking implicitly breaks forward as well as backward compatibility. Let&#8217;s say I add a method called <code>after_post</code> which I call from another class in my plugin, so I need it to be a public method. Everything is going well, until <a href="http://core.trac.wordpress.org/ticket/18561">WordPress adds a hook into templates for adding content after a post</a>. Oops, suddenly, my plugin breaks through no fault of my own, and through something that core developers shouldn&#8217;t (and wouldn&#8217;t) have to worry about.</p>
<p>Hooking implicitly breaks compatibility in every direction, and is too magical. It is absolutely not the way to consume a public API.</p>
<p>Sidenote: A discussion also emerged on how to use priorities. Mike and I both agree (I think) on using PHPDoc, while <a href="http://toscho.de/">Thomas Scholz</a> <del datetime="2012-01-18T08:29:30+00:00">prefers</del> <ins datetime="2012-01-18T08:29:30+00:00">preferred</ins> suffixing the method (i.e. <code>action_init_2</code>). My problem with this is that distinguishing between an named <code>init</code> with priority 2 and an action named <code>init_2</code> is impossible.</p>
<p><strong>Edit:</strong> Thomas dropped support for priorities in the method name, which I initially missed. Thanks for the correction.</p>
<p><strong>Edit 2:</strong> Updated with a footnote about Mike&#8217;s position regarding implicit/explicit hooking.</p>
<ol class="footnotes"><li id="footnote_0_139" class="footnote">Mike has informed me that he does support explicit hooking for published code, but implicit hooking for prototyping. I&#8217;m not a fan of this either, since I can forsee people forgetting to do so.</li></ol>]]></content:encoded>
			<wfw:commentRss>http://journal.ryanmccue.info/139/explicit-versus-implict-coding/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Think Different</title>
		<link>http://journal.ryanmccue.info/135/think-different/</link>
		<comments>http://journal.ryanmccue.info/135/think-different/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 12:04:08 +0000</pubDate>
		<dc:creator>Ryan McCue</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[steve jobs]]></category>

		<guid isPermaLink="false">http://journal.ryanmccue.info/?p=135</guid>
		<description><![CDATA[Here’s to the crazy ones. The misfits. The rebels. The troublemakers. The round pegs in the square holes. The ones who see things differently. They’re not fond of rules. And they have no respect for the status quo. You can quote them, disagree with them, glorify or vilify them. About the only thing you can’t [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Here’s to the crazy ones. The misfits. The rebels. The troublemakers. The round pegs in the square holes. The ones who see things differently. They’re not fond of rules. And they have no respect for the status quo. You can quote them, disagree with them, glorify or vilify them. About the only thing you can’t do is ignore them. Because they change things. They push the human race forward. And while some may see them as the crazy ones, we see genius. Because the people who are crazy enough to think they can change the world, are the ones who do.</p></blockquote>
<p>We&#8217;ll miss you, Steve. Thank you.</p>
]]></content:encoded>
			<wfw:commentRss>http://journal.ryanmccue.info/135/think-different/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What&#8217;s Up?</title>
		<link>http://journal.ryanmccue.info/123/whats-up/</link>
		<comments>http://journal.ryanmccue.info/123/whats-up/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 11:11:01 +0000</pubDate>
		<dc:creator>Ryan McCue</dc:creator>
				<category><![CDATA[Me]]></category>
		<category><![CDATA[me]]></category>
		<category><![CDATA[school]]></category>
		<category><![CDATA[simplepie]]></category>
		<category><![CDATA[year 12]]></category>

		<guid isPermaLink="false">http://journal.ryanmccue.info/?p=123</guid>
		<description><![CDATA[And, yet again, I&#8217;m falling into the trap of not posting. Despite the fact that I have at least four draft post sitting around, I haven&#8217;t had the motivation to post any yet. But never fear, I shall get around to it eventually! So, here&#8217;s a quick update on what&#8217;s happening with me. I&#8217;ve begun [...]]]></description>
			<content:encoded><![CDATA[<p>And, yet again, I&#8217;m falling into the trap of not posting. Despite the fact that I have at least four draft post sitting around, I haven&#8217;t had the motivation to post any yet. But never fear, I shall get around to it eventually!</p>
<p>So, here&#8217;s a quick update on what&#8217;s happening with me. I&#8217;ve begun my senior year in high school, with less than 10 months until I graduate. I&#8217;ve been slogging away at my projects, as per usual, and I&#8217;m hoping to get the SimplePie website fully migrated to Automattic&#8217;s servers some time in the next few weeks. The sooner that happens, the sooner I can push out a bug-fix release.</p>
<p>I&#8217;ve also had the pleasure of working on <a href="http://yesplugins.com/">YesPlugins</a> with <a href="http://anthonycole.me/">Anthony Cole</a> and <a href="http://markbao.com/">Mark Bao</a>, but I can&#8217;t reveal too much on this yet. Watch this space, as many things are yet to come. (Interested in working with us? Get in touch.)</p>
<p>I think that&#8217;s about it for now. I intend on keeping this journal up-to-date much more than previously, and with some luck, I can stick to that. Until next time, ciao.</p>
]]></content:encoded>
			<wfw:commentRss>http://journal.ryanmccue.info/123/whats-up/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Random Antics</title>
		<link>http://journal.ryanmccue.info/115/random-antics/</link>
		<comments>http://journal.ryanmccue.info/115/random-antics/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 09:46:03 +0000</pubDate>
		<dc:creator>Ryan McCue</dc:creator>
				<category><![CDATA[Gaming]]></category>
		<category><![CDATA[bad company 2]]></category>
		<category><![CDATA[bc2]]></category>
		<category><![CDATA[bfbc2au]]></category>
		<category><![CDATA[reddit]]></category>
		<category><![CDATA[reddit.au]]></category>

		<guid isPermaLink="false">http://journal.ryanmccue.info/?p=115</guid>
		<description><![CDATA[Quite a while ago, I was online with some friends in Bad Company 2. We decided to make some explosive footage and compile it into a masterpiece. While we wait for producer Newsworthy to finish our actual in-game video, here&#8217;s some of the raw footage. Enjoy!]]></description>
			<content:encoded><![CDATA[<p>Quite a while ago, I was online with some friends in Bad Company 2. We decided to make some explosive footage and compile it into a masterpiece. While we wait for producer Newsworthy to finish our actual in-game video, here&#8217;s some of the raw footage. Enjoy!</p>
<p><span style="text-align:center; display: block;"><a href="http://journal.ryanmccue.info/115/random-antics/"><img src="http://img.youtube.com/vi/YvhVgVKZnxs/2.jpg" alt="" /></a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://journal.ryanmccue.info/115/random-antics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On the Lack of Posting&#8230;</title>
		<link>http://journal.ryanmccue.info/111/on-the-lack-of-posting/</link>
		<comments>http://journal.ryanmccue.info/111/on-the-lack-of-posting/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 03:58:42 +0000</pubDate>
		<dc:creator>Ryan McCue</dc:creator>
				<category><![CDATA[Meta]]></category>

		<guid isPermaLink="false">http://journal.ryanmccue.info/111/on-the-lack-of-posting/</guid>
		<description><![CDATA[Yeah, I haven&#8217;t been writing here much. More blog posts will be coming as soon as I have time to write them.]]></description>
			<content:encoded><![CDATA[<p>Yeah, I haven&#8217;t been writing here much. More blog posts will be coming as soon as I have time to write them.</p>
]]></content:encoded>
			<wfw:commentRss>http://journal.ryanmccue.info/111/on-the-lack-of-posting/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Silverchair Covers Yellow Submarine</title>
		<link>http://www.abc.net.au/triplej/media/s2884637.htm</link>
		<comments>http://journal.ryanmccue.info/link/silverchair-covers-yellow-submarine/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 11:40:13 +0000</pubDate>
		<dc:creator>Ryan McCue</dc:creator>
		
		<guid isPermaLink="false">http://journal.ryanmccue.info/link/</guid>
		<description><![CDATA[One of the best renditions I&#8217;ve heard of Yellow Submarine.<p><a href="http://journal.ryanmccue.info/link/silverchair-covers-yellow-submarine/">[Permalink]</a></p>]]></description>
			<content:encoded><![CDATA[<p>One of the best renditions I&#8217;ve heard of Yellow Submarine.</p>
<p><a href="http://journal.ryanmccue.info/link/silverchair-covers-yellow-submarine/">[Permalink]</a></p>]]></content:encoded>
			<wfw:commentRss>http://journal.ryanmccue.info/link/silverchair-covers-yellow-submarine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Typography Is Important</title>
		<link>http://www.techmic.com/magazine/issue-1/typography-is-important</link>
		<comments>http://journal.ryanmccue.info/link/typography-is-important/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 12:22:25 +0000</pubDate>
		<dc:creator>Ryan McCue</dc:creator>
		
		<guid isPermaLink="false">http://journal.ryanmccue.info/link/</guid>
		<description><![CDATA[A crash course to using typography. This is going in my folder with Five Simple Steps.<p><a href="http://journal.ryanmccue.info/link/typography-is-important/">[Permalink]</a></p>]]></description>
			<content:encoded><![CDATA[<p>A crash course to using typography. This is going in my folder with <a href="http://www.fivesimplesteps.co.uk/">Five Simple Steps</a>.</p>
<p><a href="http://journal.ryanmccue.info/link/typography-is-important/">[Permalink]</a></p>]]></content:encoded>
			<wfw:commentRss>http://journal.ryanmccue.info/link/typography-is-important/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

