<?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"
	>

<channel>
	<title>King Gary &#187; programming</title>
	<atom:link href="http://www.kinggary.com/archives/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kinggary.com</link>
	<description>The web from a younger perspective</description>
	<pubDate>Tue, 11 Sep 2007 03:54:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>en</language>
			<item>
		<title>Launching the ProBlogger Job Board</title>
		<link>http://www.kinggary.com/archives/launching-the-problogger-job-board/</link>
		<comments>http://www.kinggary.com/archives/launching-the-problogger-job-board/#comments</comments>
		<pubDate>Sun, 09 Sep 2007 03:12:56 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[business]]></category>

		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/archives/launching-the-problogger-job-board/</guid>
		<description><![CDATA[One of the projects that I&#8217;ve been working on is the ProBlogger Job Board, where people and companies can post jobs available for bloggers. It officially launched on August 30th, so I&#8217;m a little late with this post, but better late than never!
The project involved doing a complete rewrite of the code, which was originally [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.kinggary.com/wp-content/uploads/2007/09/logo.gif" alt="logo.gif" align="right" height="40" width="278" />One of the projects that I&#8217;ve been working on is the <a href="http://jobs.problogger.net/">ProBlogger Job Board</a>, where people and companies can post jobs available for bloggers. It <a href="http://www.problogger.net/archives/2007/08/30/problogger-job-boards-get-an-overhaul/">officially launched</a> on August 30th, so I&#8217;m a little late with this post, but better late than never!</p>
<p>The project involved doing a complete rewrite of the code, which was originally written in PHP, and rewriting it in Ruby on Rails. The functionality of the application is more or less the same as it was before, except for a few added features that are primarily in the back-end to give Darren an easier way of administering the whole thing. We also updated the design from the old look to adapt the new look of the new <a href="http://www.problogger.net/archives/2007/08/10/problogger-redesign-bedding-down-for-the-night/">ProBlogger design</a>.</p>
<p>One of the primary reasons for doing this project is to give the back-end code a lot more extensibility, which is key in projects where you want to one day expand and improve on. Now that the thing&#8217;s written in Rails, there are a ton of possibilities which can be followed for the Job Board, some of which will be explored. So stay tuned for cool, new features to come!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/launching-the-problogger-job-board/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Build an iCal feed from your WordPress posts (plugin)</title>
		<link>http://www.kinggary.com/archives/build-an-ical-feed-from-your-wordpress-posts-plugin/</link>
		<comments>http://www.kinggary.com/archives/build-an-ical-feed-from-your-wordpress-posts-plugin/#comments</comments>
		<pubDate>Mon, 13 Aug 2007 19:02:45 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/archives/build-an-ical-feed-from-your-wordpress-posts-plugin/</guid>
		<description><![CDATA[I&#8217;ve created a WordPress plugin which creates an iCal feed from your blog posts. It creates a calendar which can be added to pretty much any popular website (such as Google Calendar) or application (such as Microsoft Outlook).
I built this because I wanted to see when I made my WordPress posts, in a more graphical [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve created a <a href="http://wordpress.org">WordPress</a> plugin which creates an <a href="http://en.wikipedia.org/wiki/ICalendar">iCal</a> feed from your blog posts. It creates a calendar which can be added to pretty much any popular website (such as <a href="http://calendar.google.com">Google Calendar</a>) or application (such as <a href="http://office.microsoft.com/en-us/outlook/default.aspx">Microsoft Outlook</a>).</p>
<p>I built this because I wanted to see when I made my WordPress posts, in a more graphical interface. I already used Google Calendar, so I would have loved to see my posts right in my calendar.</p>
<p>You can do that with my plugin - no configuration necessary! Just download it from me, upload it to your server, and then activate it in your WordPress plugins page. Then, navigate to <a href="http://www.kinggary.com/?ical">http://www.kinggary.com/?ical</a> (basically visit your blog, and then add ?ical at the end of the URL) to see the calendar). Then add this URL as an external iCal calendar to whatever calendar application you are using. In Google Calendar, for example, go to &#8216;Add&#8217; and then &#8216;Add by URL&#8217;, and then just add the URL to the input box and hit Enter! And it&#8217;s done!</p>
<p>If you want to only show posts from a specific category, then add &amp;category= to the end of the URL, with the category&#8217;s name at the end. An example would be <a href="http://www.kinggary.com/?ical&amp;category=web">http://www.kinggary.com/?ical&amp;category=web</a></p>
<h3><a href="http://www.kinggary.com/wp-content/uploads/2007/08/ical-postsphp.zip">Download the plugin</a></h3>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/build-an-ical-feed-from-your-wordpress-posts-plugin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>My thoughts on building Applications on the Facebook Platform</title>
		<link>http://www.kinggary.com/archives/my-thoughts-on-building-applications-on-the-facebook-platform/</link>
		<comments>http://www.kinggary.com/archives/my-thoughts-on-building-applications-on-the-facebook-platform/#comments</comments>
		<pubDate>Thu, 02 Aug 2007 05:48:22 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/archives/my-thoughts-on-building-applications-on-the-facebook-platform/</guid>
		<description><![CDATA[I&#8217;ve been working with the Facebook Platform for a few weeks now, and I have built a few dozen applications on it. It&#8217;s been a very interesting experience so far, not only because I have access to millions of users immediately, but also because of the unique development environment that is offered to me right [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.kinggary.com/wp-content/uploads/2007/04/facebook.png" align="right" />I&#8217;ve been working with the <a href="http://www.facebook.com/platform_tour.php">Facebook Platform</a> for a few weeks now, and I have built a few dozen applications on it. It&#8217;s been a very interesting experience so far, not only because I have access to millions of users immediately, but also because of the unique development environment that is offered to me right from the start.</p>
<p>Developing for the Facebook platform is very different from other environments that I have worked with, including <a href="http://vbulletin.com">vBulletin</a> when I was building forums, and <a href="http://wordpress.org">WordPress</a> when I was working at <a href="http://b5media.com">b5media</a>, a blog network.</p>
<p>vBulletin made it easy to create new pages powered by the system by simply including a particular file in the new files that you created. A few more steps were required to keep the whole look-and-feel of your existing design into new pages.</p>
<p>WordPress made it even easier to create new pages by creating them right from the administration interface directly in your browser, without requiring you to ever muck in code.</p>
<p>Facebook actually, in a way, makes development somewhat more difficult because the results that you get in your browser isn&#8217;t always what you intended it to be when writing the HTML for it, or in some cases, the <a href="http://developers.facebook.com/documentation.php?doc=fbml">FBML</a> offered by Facebook.</p>
<p>Certain tags are banned, whereas functionality is unique in certain areas. For example, you can only have one link in certain places such as the title of every Mini-Feed item that appears in a user&#8217;s profile, and Facebook offers its own set of tags, called FBML tags, which do Facebook-specific things such as returning the name of the current user.</p>
<p>Some things that I enjoy about working on the Facebook platform include the fact that I don&#8217;t have to build an entire navigational system from scratch. I don&#8217;t have to create an application&#8217;s look and feel because Facebook already provides that. Any navigation that I introduce that doesn&#8217;t use Facebook&#8217;s default navigational system provided by FBML will more likely confuse users more than help them, because to them, they are still entirely within Facebook when using Facebook Applications, and nowhere else.</p>
<p>Another great thing with the Facebook Platform is that an authentication system is provided right out of the box, with users who have profiles that are already filled out with tons of useful information that can greatly richen their experience with your application.</p>
<p>It&#8217;s been interesting developing applications so far, and hopefully I&#8217;ll be able to reveal some of the stuff that I&#8217;ve built sometime soon!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/my-thoughts-on-building-applications-on-the-facebook-platform/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Post Stumbler WordPress plugin</title>
		<link>http://www.kinggary.com/archives/post-stumbler-wordpress-plugin/</link>
		<comments>http://www.kinggary.com/archives/post-stumbler-wordpress-plugin/#comments</comments>
		<pubDate>Sun, 15 Jul 2007 06:10:56 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/archives/post-stumbler-wordpress-plugin/</guid>
		<description><![CDATA[I&#8217;m releasing a plugin which I&#8217;ll call the Post Stumbler WordPress plugin (originally to be called the &#8220;Stumble Upon&#8221; WordPress plugin, but it doesn&#8217;t use Stumble Upon at all - even though it tries to mimic its functionality) because that will help most people to understand what it does.
After building this, I found a post [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.kinggary.com/wp-content/uploads/2007/07/stumbleupon.png" alt="stumbleupon.png" align="right" />I&#8217;m releasing a plugin which I&#8217;ll call the Post Stumbler WordPress plugin (originally to be called the &#8220;Stumble Upon&#8221; WordPress plugin, but it doesn&#8217;t use <a href="http://stumbleupon.com">Stumble Upon</a> at all - even though it tries to mimic its functionality) because that will help most people to understand what it does.</p>
<p>After building this, I found a <a href="http://www.techcrunch.com/2007/04/20/random-page-generator-for-wordpress-blogs/">post that was made over at TechCrunch</a> which discusses about how it would be interesting if WordPress could have similar functionality to what Stumble Upon provides, so I hope that this fulfills that need.</p>
<h3>What it does</h3>
<p>It basically adds functionality to your <a href="http://wordpress.org">WordPress</a> blog which allows visitors to view a randomly selected post on your blog, with a higher probability of choosing popular posts, and with the option of only showing recent posts. You also have the option of giving recent posts more chances to be shown to visitors if you think that your most recent posts are more interesting to your visitors.</p>
<h3>Example</h3>
<p>To see how this works, click on the links in the sidebar on this page which say &#8220;random post&#8221; and &#8220;random recent post&#8221;, which are right below the search box. They are self-explanatory.</p>
<h3>How to install</h3>
<p>The plugin does have a requirement, which is the <a href="http://alexking.org/projects/wordpress/plugins/popularity-contest.zip">Popularity Contest WordPress plugin</a> (install it like any other plugin; just upload it to your /wp-content/plugins/ directory and then activate it in your admin panel), so go and install that first.</p>
<p>When that&#8217;s done, <a href="http://www.kinggary.com/wp-content/uploads/2007/07/post_stumbler.zip">download and install my plugin</a> like a normal plugin, too. And you&#8217;re done! No configuration is required.</p>
<p>There are two important links that you need to link to. They are:</p>
<ul>
<li><strong>http://www.<em>yourblog.com</em>/?stumble</strong>
<ul>
<li>Replace <em>yourblog.com</em> with your own blog&#8217;s URL, of course. This URL will show the visitor a random post but it gives a higher weight to popular posts, which increases the chances that visitors will land on a popular post. This is a really cool way of hand-holding your visitors to the great posts on your blog, without linking them to specific posts.</li>
</ul>
</li>
<li> <strong>http://www.<em>yourblog.com</em>/?stumble&amp;date</strong>
<ul>
<li>Again, replace <em>yourblog.com</em> with your own blog&#8217;s URL. This URL will point your visitor to a random post, again, based on the post&#8217;s popularity, but also, based on how recent the post is. More recent posts will have a higher chance of being shown to your visitors. This is especially useful for blogs where posts are more news- and events-based, such as TechCrunch. It is more interesting to read posts that have been written in the past month rather than posts that have been written a few years ago on blogs such as these.</li>
</ul>
</li>
</ul>
<p>Anyways, please, PLEASE let me know how well this works for you. I have only tested this on a handful of blogs, and so far, it has worked great on them. But, if this plugin brings up posts on YOUR blog that are not popular at all, then do let me know!  I&#8217;ll try my best to fix them ASAP.</p>
<p>So, I hope you enjoy this plugin!</p>
<h3>History</h3>
<ul>
<li>07/07/15 - 1.0
<ul>
<li>plugin release</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/post-stumbler-wordpress-plugin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Table of Contents for WordPress plugins</title>
		<link>http://www.kinggary.com/archives/table-of-contents-for-wordpress-plugins/</link>
		<comments>http://www.kinggary.com/archives/table-of-contents-for-wordpress-plugins/#comments</comments>
		<pubDate>Sat, 14 Jul 2007 12:00:34 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/archives/table-of-contents-for-wordpress-plugins/</guid>
		<description><![CDATA[Do you have a lot of WordPress plugins and want an easier way of browsing them all? Would a Table of Contents for all of them help you browse through them faster? Then this WordPress plugin modification is for you!
First of all, here&#8217;s how it will look like in the end (I&#8217;ve hidden some plugins [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.kinggary.com/wp-content/uploads/2007/06/header-logo.png" align="right" height="68" width="227" />Do you have a lot of <a href="http://wordpress.org">WordPress</a> <a href="http://wordpress.org/extend/plugins/">plugins</a> and want an easier way of browsing them all? Would a Table of Contents for all of them help you browse through them faster? Then this WordPress <strike>plugin</strike> modification is for you!</p>
<p>First of all, here&#8217;s how it will look like in the end (I&#8217;ve hidden some plugins that I&#8217;d prefer not to appear in the screenshot):</p>
<p style="text-align: center"><img src="http://www.kinggary.com/wp-content/uploads/2007/07/picture-1.png" alt="picture-1.png" /></p>
<p>I can&#8217;t call this a WordPress <a href="http://codex.wordpress.org/Plugins">Plugin</a> because it requires that you modify some files instead of having me just give you a file to upload and active. The reason for this is because WordPress doesn&#8217;t make it easy for me to implement this functionality any other way. What this means is that you have to modify one file yourself (which is completely harmless!) and whenever you upgrade your installation of WordPress, you&#8217;ll have to re-implement this modification again.</p>
<p>I <a href="http://trac.wordpress.org/ticket/4635">submitted this modification as a patch</a> to WordPress and they may or may not implement it as a built-in feature - who knows? If not, then it&#8217;d at least be nice of them to give me a <a href="http://codex.wordpress.org/Plugin_API/Hooks">hook</a> to use so I can convert this modification into a plugin.</p>
<p>Anyways, on with the show!</p>
<h3>Installing this modification</h3>
<p>If you know how to use <a href="http://en.wikipedia.org/wiki/Patch_(Unix)"><strong>patch files</strong></a>, then <a href="http://trac.wordpress.org/attachment/ticket/4635/plugins.php.2.diff?format=raw">download and use this file</a> on your installation of WordPress.</p>
<p><strong>Otherwise</strong>, to install this modification, open up your /wp-admin/plugins.php file and find this line:</p>
<hr /><code>	echo '&lt;/p&gt;';<br />
} else {</code></p>
<hr />Below that, add this:</p>
<hr /><code></code><br />
<code>	echo '&lt;style type="text/css"&gt;</code><br />
<code>		table#plugins-table-of-contents { border: 1px solid #ccc; width: 100%; margin-bottom: 10px; }</code><br />
<code>		table#plugins-table-of-contents ul { list-style-type: none; }</code><br />
<code>	&lt;/style&gt;';</code><br />
<code>	</code><code>	$number_of_plugins = count($plugins);</code><br />
<code>	$i = 1;</code><br />
<code></code><br />
<code>	foreach ($plugins as $plugin_file =&gt; $plugin_data)</code><br />
<code>	{</code><br />
<code>		$plugins[$i] = $plugin_data;</code><code>		$plugins[$plugin_file] = array_merge($plugin_data, array(&#8217;order&#8217; =&gt; $i));</code><br />
<code>		$i++;</code><br />
<code>	}</code><br />
<code>	</code><br />
<code>	$table_columns = 5;</code><br />
<code>	$plugins_per_table = ceil(count($plugins) / 2 / $table_columns);</code></p>
<p><code>	</code><br />
<code>	echo '&lt;h3&gt;Plugins Table of Contents for ' . (count($plugins) / 2) . ' plugins&lt;/h3&gt;&lt;table id="plugins-table-of-contents"&gt;&lt;tr&gt;';</code><br />
<code></code><br />
<code>	$k = 1;</code><br />
<code>	$starting_plugin = $plugins_per_table;</code></p>
<p><code>	for ($i = 1; $i &lt;= $table_columns; $i++)</code><br />
<code>	{</code><br />
<code>		echo '&lt;td valign="top"&gt;&lt;ul&gt;';</code><br />
<code>		for ($j = $k; $j &lt;= $starting_plugin; $j++)</code></p>
<p><code>		{</code><br />
<code>			$plugins[$k]['order'] = $k;</code><br />
<code>			echo '&lt;li&gt;' . $k . '. &lt;a href="plugins.php#plugin-' . $k . '"&gt;' . $plugins[$k]['Name'] . &#8216;&lt;/a&gt;&lt;/li&gt;&#8217;;</code></p>
<p><code>			if ($k == $number_of_plugins)</code><br />
<code>				break;</code><br />
<code>			$k++;</code><br />
<code>		}</code><br />
<code>		$starting_plugin += $plugins_per_table;</code><br />
<code>		echo '&lt;/ul&gt;&lt;/td&gt;';</code></p>
<p><code>	}</code><br />
<code>	</code><br />
<code>	echo '&lt;/tr&gt;&lt;/table&gt;';</code><br />
<code>	</code><br />
<code>	for ($i = 1; $i &lt;= $number_of_plugins; $i++)</code></p>
<p><code>	{</code><br />
<code>		unset($plugins[$i]);</code><br />
<code>	}</code></p>
<hr />And then find</p>
<hr /><code>&lt;tr $style&gt;</code></p>
<hr />And replace it with</p>
<hr /><code>&lt;tr $style id=\"plugin-{$plugin_data['order']}\&#8221;&gt;</code></p>
<hr />And we&#8217;re all done! Hopefully that&#8217;s not too hard for most people.I&#8217;ve also submitted several other patches recently if you want to check them out:</p>
<ul>
<li><a href="http://trac.wordpress.org/ticket/4632">Remove empty &#8220;By: &#8221; line for plugins without an author specified</a></li>
<li><a href="http://trac.wordpress.org/ticket/4633">Don&#8217;t link plugin names if no URL is specified</a></li>
<li><a href="http://trac.wordpress.org/ticket/4634">Link to jump directly to a comment in the &#8220;Edit Comments&#8221; panel</a></li>
<li><a href="http://trac.wordpress.org/ticket/4635">Table of Contents for all plugins</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/table-of-contents-for-wordpress-plugins/feed/</wfw:commentRss>
		</item>
		<item>
		<title>70 strangers meet to build a startup over the weekend</title>
		<link>http://www.kinggary.com/archives/70-strangers-meet-to-build-a-startup-over-the-weekend/</link>
		<comments>http://www.kinggary.com/archives/70-strangers-meet-to-build-a-startup-over-the-weekend/#comments</comments>
		<pubDate>Sun, 08 Jul 2007 03:12:15 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[business]]></category>

		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/archives/70-strangers-meet-to-build-a-startup-over-the-weekend/</guid>
		<description><![CDATA[70 people who have never met each other before have discussed online to build a startup over this weekend. It&#8217;s called Startup Weekend. TechCrunch mentions it here. The product that they are building is called VoSnap, and it&#8217;s supposed to help a large group of people agree on decisions quickly. I&#8217;m guessing that this was [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.kinggary.com/wp-content/uploads/2007/07/startup-weekend.png" alt="startup-weekend.png" align="right" height="56" width="279" />70 people who have never met each other before have discussed online to build a startup over this weekend. It&#8217;s called <a href="http://www.startupweekend.com/">Startup Weekend</a>. <a href="http://www.techcrunch.com/2007/07/07/startupweekend-70-founders-create-company-in-one-weekend/">TechCrunch mentions it here</a>. The product that they are building is called <a href="http://www.vosnap.com/">VoSnap</a>, and it&#8217;s supposed to help a large group of people agree on decisions quickly. I&#8217;m guessing that this was partly inspired by the situation that they themselves are currently in.</p>
<p>Every person there will have equal equity in the company that they build. This is absolutely insane - 70 equal founders of this one company where they just decided on the company&#8217;s first product in one meeting? This is going to be one heck of an interesting experiment to keep an eye on!Personally, I don&#8217;t think that anything great will come out of this group. No matter how great every one of them are as developers, it is near impossible to co-ordinate well with that many people.</p>
<p>I predict that people in the group will end up befriending only a handful of people - maybe 3-4 - and then code a small module of the final product together. If they do work like this, then they have a chance of building something that&#8217;s more useful than what a thousand monkeys could produce if they jammed out on keyboards!</p>
<p>One thing that I can picture, though, is that many of them will build startups of their own with new people that they meet from the experience, which I would imagine will be the most valuable thing to come out of the whole event.</p>
<p>You can <a href="http://ustream.tv/channel/startup-weekend">see them working, live, at Ustream</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/70-strangers-meet-to-build-a-startup-over-the-weekend/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Reminiscing my freelancing days</title>
		<link>http://www.kinggary.com/archives/reminiscing-my-freelancing-days/</link>
		<comments>http://www.kinggary.com/archives/reminiscing-my-freelancing-days/#comments</comments>
		<pubDate>Fri, 29 Jun 2007 09:43:48 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/archives/reminiscing-my-freelancing-days/</guid>
		<description><![CDATA[Not many people that I know today know this, but I used to freelance and write modifications for the vBulletin forum software, which today is probably the most popular forum software that is not free.
I released 40 official modifications in total, all which can be found on my vBulletin profile page, and all of them [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.kinggary.com/wp-content/uploads/2007/06/vbulletin-logo.gif" alt="vbulletin-logo.gif" align="right" />Not many people that I know today know this, but I used to freelance and write modifications for the <a href="http://vbulletin.com">vBulletin forum software</a>, which today is probably the most popular forum software that is not free.</p>
<p>I released 40 official modifications in total, all which can be found on my <a href="http://www.vbulletin.org/forum/member.php?u=5183&amp;hacksort=installs#hacks">vBulletin profile page</a>, and all of them are free.</p>
<p>In total, all of my modifications have been marked as being installed nearly 2000 times. If you look at the dates, you&#8217;ll see that they were all released within roughly a one-year timespan, and the last modification was released over 3 years ago.</p>
<p>Those were fun and interesting times. It was a time when I contributed a lot of free code to a project just for fun, when I suddenly had the urge to just release a lot of stuff for free to the public, as long as people would use them. I also wrote a simple-but-useful vBulletin tutorial on &#8216;<a href="http://www.vbulletin.org/forum/showthread.php?t=62164">how to create your own vBulletin powered page</a>&#8216;, which managed to garner nearly 100,000 views and over 500 replies.</p>
<p>I think I really need to find a way to get my groove back <img src='http://www.kinggary.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/reminiscing-my-freelancing-days/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Safely modify your WordPress admin’s CSS and make it futureproof</title>
		<link>http://www.kinggary.com/archives/safely-modify-your-wordpress-admin%e2%80%99s-css-and-make-it-futureproof/</link>
		<comments>http://www.kinggary.com/archives/safely-modify-your-wordpress-admin%e2%80%99s-css-and-make-it-futureproof/#comments</comments>
		<pubDate>Thu, 21 Jun 2007 20:24:13 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/archives/safely-modify-your-wordpress-admin%e2%80%99s-css-and-make-it-futureproof/</guid>
		<description><![CDATA[My latest post at Blog Herald involves futureproofing your WordPress admin page&#8217;s CSS changes so that if you modify it, it does not get replaced by any upgrades that you make to your blog.
Here&#8217;s an excerpt from the post:
I&#8217;ve written a few posts in the past on Blog Herald, showing how you can make different [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.kinggary.com/wp-content/uploads/2007/06/header-logo.png" align="right" height="62" width="207" />My latest post at Blog Herald involves <a href="http://www.blogherald.com/2007/06/21/safely-modify-your-wordpress-admins-css-and-make-it-futureproof/">futureproofing your WordPress admin page&#8217;s CSS changes</a> so that if you modify it, it does not get replaced by any upgrades that you make to your blog.</p>
<p>Here&#8217;s an excerpt from the post:</p>
<blockquote><p>I&#8217;ve written a few posts in the past on <a href="http://blogherald.com">Blog Herald</a>, showing how you can <a href="http://www.blogherald.com/2007/05/31/quick-tip-how-to-make-the-categories-box-bigger-when-writing-wordpress-posts/">make different changes</a> for your <a href="http://wordpress.org">WordPress</a> admin by modifying the CSS file for it.</p>
<p>Being able to modify the CSS file to make quick design changes to your WordPress admin is very useful indeed, but the problem is when you upgrade your version of WordPress, the wp-admin.css file is replaced with the newer version because it&#8217;s not considered a file that should be modified by users.</p>
<p>Here&#8217;s where a new plugin that I came across comes in. It&#8217;s called the <a href="http://rudd-o.com/projects/wp-admin-themer/" title="Visit plugin homepage">WordPress admin themer</a> plugin, and what it does is simple. It allows you to create a separate wp-admin.css file that does not require modifying the default wp-admin.css file.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/safely-modify-your-wordpress-admin%e2%80%99s-css-and-make-it-futureproof/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How I created ProBlogger&#8217;s &#8220;Group Writing Project&#8221; WordPress plugin</title>
		<link>http://www.kinggary.com/archives/how-i-created-probloggers-group-writing-project-wordpress-plugin/</link>
		<comments>http://www.kinggary.com/archives/how-i-created-probloggers-group-writing-project-wordpress-plugin/#comments</comments>
		<pubDate>Wed, 13 Jun 2007 10:24:30 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/archives/how-i-created-probloggers-group-writing-project-wordpress-plugin/</guid>
		<description><![CDATA[A few weeks ago, Darren from ProBlogger asked me to create a new WordPress plugin for him, one which would save him countless hours that he had to spend before. That plugin is the Group Writing Project plugin, which is now used to help simplify the process that Darren has to go through whenever he [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.kinggary.com/wp-content/uploads/2007/06/problogger-logo.gif" alt="problogger-logo.gif" align="right" />A few weeks ago, Darren from <a href="http://www.problogger.net/">ProBlogger</a> asked me to create a new <a href="http://wordpress.org">WordPress</a> plugin for him, one which would save him countless hours that he had to spend before. That plugin is the <a href="http://problogger.net/group-writing-project">Group Writing Project</a> plugin, which is now used to help simplify the process that Darren has to go through whenever he decides to start a new project.</p>
<p>I&#8217;ve <a href="http://www.kinggary.com/archives/creating-probloggers-group-writing-project-plugin/">posted about the non-technical side of the plugin</a> and the benefits that he gained from the plugin before, so in this post, I will walk through how a plugin like this is created, and the typical workflow and thinking that goes behind creating something like this.</p>
<p>This is a <a href="http://wordpress.org">WordPress</a> plugin, but it uses some special WordPress functions that I have never seen used in an existing plugin before. Hopefully this post will inspire WordPress plugin developers to use these functions more in future plugins.</p>
<p>The most important thing about the plugin is the <strong>wp_insert_post()</strong> function that I use. This is used to create new posts in the blog, just by using code and by passing an array to it, containing the data necessary.</p>
<p>The plugin basically revolves around this one function, because when a new item is submitted with the GWP (Group Writing Project) form on ProBlogger, it actually modifies an existing post. It determines which post to modify based on the post&#8217;s title, which is currently <strong>Group writing project - LATEST</strong>.</p>
<p>The wp_insert_post() WordPress function is not documented at all, so I&#8217;ll explain how it&#8217;s used. It helps if you already know how to use general functions in PHP.</p>
<p>When using wp_insert_post(), you need to pass an array as the first and only argument to it, like so:</p>
<p><code>wp_insert_post($post);</code></p>
<p>$post is an array that must contain at least the following keys:</p>
<ul>
<li>post_author: the user ID of the blogger who is the post&#8217;s author; I set this to Darren&#8217;s ID</li>
<li>post_title: the title of the post. If this is not set, I believe the post&#8217;s title is set to the ID number of the post</li>
<li>comment_status: set this to either &#8216;open&#8217; or &#8216;closed&#8217;; it will most likely be &#8216;open&#8217;</li>
<li>post_content: the body of the post. This can be blank.</li>
<li>ID: this is optional, but if it is set to an existing post&#8217;s ID, then you will be modifying an existing post instead of creating a new one.</li>
</ul>
<p>That&#8217;s all you need to get it working. I hope the above has helped you out with your WordPress plugin endeavors!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/how-i-created-probloggers-group-writing-project-wordpress-plugin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Movable Type initiates battle against WordPress, the open source app that feels professional</title>
		<link>http://www.kinggary.com/archives/movable-type-initiates-battle-against-wordpress-the-open-source-app-that-feels-professional/</link>
		<comments>http://www.kinggary.com/archives/movable-type-initiates-battle-against-wordpress-the-open-source-app-that-feels-professional/#comments</comments>
		<pubDate>Wed, 06 Jun 2007 05:08:45 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[design]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/archives/movable-type-initiates-battle-against-wordpress-the-open-source-app-that-feels-professional/</guid>
		<description><![CDATA[Six Apart has announced that they will be releasing their Movable Type blogging platform as open source later on this year. This is a major move by the company which made a poor decision in the past when they heavily enforced their MT 3.0 license and which gave rise to WordPress to become a major [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.kinggary.com/wp-content/uploads/2007/06/header-logo.png" alt="header-logo.png" align="right" height="61" width="199" /><a href="http://sixapart.com">Six Apart</a> <a href="http://www.sixapart.com/movabletype/news/2007/06/movable-type-4-beta.html">has announced</a> that they will be releasing their <a href="http://www.sixapart.com/movabletype/">Movable Type</a> blogging platform as open source later on this year. This is a major move by the company which made a poor decision in the past when they heavily enforced their MT 3.0 license and which gave rise to <a href="http://wordpress.org">WordPress</a> to become a major player in the blogging platform arena, and arguably, the CMS world.</p>
<p>Scott Karp over at Publishing 2.0 <a href="http://publishing2.com/2007/06/05/wordpress-vs-movable-type-open-source-blogging-software-showdown/">has posted his thoughts</a> on how he thinks the battle between WordPress and Movable Type will play out, now that both will soon be open sourced. WordPress has really taken a strong foothold and has now become the blogging platform of choice among millions of users worldwide.</p>
<p>When I first started blogging (way back, even way before the oldest post in my current blog&#8217;s archives), I jumped between using <a href="http://blogger.com">Blogger</a>, Movable Type, and WordPress. I finally settled on WordPress when it was still in its infancy at version 1.0. The default theme back then was horrendous. I couldn&#8217;t stand it, but I still stuck with it because I thought WordPress suited me best, especially since I was a PHP developer back then and WordPress is written in PHP, an extremely popular web programming language, so it would have been easy for me to change things to suit my own needs.</p>
<p>Over time, WordPress has evolved, and it definitely shows in its default theme, its functionality, and a lot of new things that are implemented in the application&#8217;s backend.</p>
<p>Whenever I hear &#8216;open source&#8217;, I often imagine something that&#8217;s made well, but that looks really bad. When you&#8217;ve got a group of developers building an app, it&#8217;s not easy to unilaterally decide on a design that looks well, so you usually end up with an application that has a lot of functionality but that lacks in the design department. An excellent example of this is <a href="http://azureus.sourceforge.net/">Azureus</a>. For what it lacks in its design, it makes up in features.</p>
<p>WordPress is the first open source application that I&#8217;ve encountered that, finally, looks as though it was made by a small company. It is a polished application, it looks great, and it&#8217;s not too heavy on the features that it offers. A lot of this can be attributed to <a href="http://photomatt.net">Matt Mullenweg</a>, the project&#8217;s founder, and so I tip my hat off to him.</p>
<p>In my opinion, there&#8217;s going to be no showdown between WordPress and Movable Type. The battle ended when WordPress opened up its hosted blogging platform, WordPress.com, and when it released WordPress 2.0. Other applications such as Blogger, <a href="http://livejournal.com">LiveJournal</a>, and <a href="http://typepad.com">TypePad</a> will still play significant roles in the blogging world, but in the open source blogging platform arena, WordPress is already king.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/movable-type-initiates-battle-against-wordpress-the-open-source-app-that-feels-professional/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Truemors: Guy Kawasaki&#8217;s useless website that comes with a $12,000 price tag</title>
		<link>http://www.kinggary.com/archives/truemors-guy-kawasakis-useless-website-that-comes-with-a-12000-price-tag/</link>
		<comments>http://www.kinggary.com/archives/truemors-guy-kawasakis-useless-website-that-comes-with-a-12000-price-tag/#comments</comments>
		<pubDate>Tue, 05 Jun 2007 08:35:56 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[business]]></category>

		<category><![CDATA[design]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/archives/truemors-guy-kawasakis-useless-website-that-comes-with-a-12000-price-tag/</guid>
		<description><![CDATA[There&#8217;s some chatter going on with regards to Guy Kawasaki&#8217;s latest web venture, Truemors, a &#8220;rumor reporting site. Users text, email or call in a rumor and other users vote on it. Popular rumors make it to the home page.&#8221; (from from TechCrunch) and how Guy mentions that it (only) costs him $12,000 for the [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.kinggary.com/wp-content/uploads/2007/06/logo.gif" alt="logo.gif" align="right" />There&#8217;s some chatter going on with regards to <a href="http://blog.guykawasaki.com">Guy Kawasaki</a>&#8217;s latest web venture, <a href="http://truemors.com">Truemors</a>, a &#8220;rumor reporting site. Users text, email or call in a rumor and other users vote on it. Popular rumors make it to the home page.&#8221; (from <a href="http://www.techcrunch.com/2007/05/15/truemors-launches/">from TechCrunch</a>) and how Guy mentions that it (only) <a href="http://blog.guykawasaki.com/2007/06/by_the_numbers_.html">costs him $12,000 for the entire website</a> to go from an idea to reality.</p>
<p><strong>There&#8217;s already been quite <a href="http://www.deepjiveinterests.com/2007/06/05/the-real-lesson-behind-guy-kawasakis-truemors-and-it-aint-listed-in-his-12107-breakdown/">a</a> <a href="http://blog.wired.com/business/2007/06/kawasaki_admits.html">bit</a> <a href="http://scobleizer.com/2007/06/04/zooomr-next-big-inch/">of</a> <a href="http://ricksegal.typepad.com/pmv/2007/06/the_guy_kawasak.html">criticism</a> <a href="http://andrewbfife.blogspot.com/2007/06/how-guy-kawasaki-could-have-saved-4800.html">about</a> <a href="http://www.winextra.com/2007/06/04/how-to-derail-web-20-in-32-steps/">this</a>, most recently from <a href="http://www.mathewingram.com/work/">Mathew Ingram</a>, who&#8217;s post is entitled &#8220;<a href="http://www.mathewingram.com/work/2007/06/04/kawasaki-how-i-wasted-12107-on-truemors/">Kawasaki: How I wasted $12,107 on Truemors</a>&#8220;. </strong>In my opinion, he&#8217;s pretty much gotten it spot on; I agree that Truemors is a pretty pointless endeavor, once you look past the fact that it&#8217;s founded by Guy. (The <a href="http://www.techcrunch.com/2007/05/03/guy-kawasakis-newest-venture-truemors/">multiple</a> <a href="http://www.techcrunch.com/2007/05/08/screen-shot-of-truemors-guy-kawasakis-rumor-service/">TechCrunch</a> <a href="http://www.techcrunch.com/2007/05/15/truemors-launches/">posts</a> increased the site&#8217;s exposure to me, more than anything else. Those gave it way more hype than it deserved.)</p>
<p>To most people, this sounds like a glowing success story of a web startup, but to be honest, there are certain levels of web startups. There&#8217;s the kind where you need to launch it with several partnerships with major corporations before you can even get off the ground (a la <a href="http://www.joost.com/">Joost</a>) and then there&#8217;s the kind where all you really need is a credit card in order to get something up and going. In the case of Truemors, we&#8217;re in the latter category.</p>
<p>The way I see it, someone like Guy <u>could</u> spend $12,000 on a web startup such as this because he can afford it more than most other people who are still in their college dorms and want to birth a startup of their own soon (like me!). Also, he&#8217;s gotten more flak for making this post than other people would get obviously because of his popularity.</p>
<p>There are many more posts out there that are just like this, which make claims that seem amazing to the blog author but which are unspectacular to those who are more savvy, which is precisely why we need to continue spreading the word on the wonders of <a href="http://en.wikipedia.org/wiki/open source software">open source software</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/truemors-guy-kawasakis-useless-website-that-comes-with-a-12000-price-tag/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Blog Herald: &#8220;Quick tip: How to make the ‘Categories’ box bigger when writing WordPress posts&#8221;</title>
		<link>http://www.kinggary.com/archives/blog-herald-quick-tip-how-to-make-the-%e2%80%98categories%e2%80%99-box-bigger-when-writing-wordpress-posts/</link>
		<comments>http://www.kinggary.com/archives/blog-herald-quick-tip-how-to-make-the-%e2%80%98categories%e2%80%99-box-bigger-when-writing-wordpress-posts/#comments</comments>
		<pubDate>Fri, 01 Jun 2007 03:18:32 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/archives/blog-herald-quick-tip-how-to-make-the-%e2%80%98categories%e2%80%99-box-bigger-when-writing-wordpress-posts/</guid>
		<description><![CDATA[My latest post over at Blog Herald is entitled Quick tip: How to make the ‘Categories’ box bigger when writing WordPress posts.
Excerpt:

I’ve written at a couple blogs, including my own and Blog Herald (here), and quite often, I see that there are quite a number of post categories to choose from in order to tag [...]]]></description>
			<content:encoded><![CDATA[<p>My latest post over at <a href="http://blogherald.com">Blog Herald</a> is entitled <a href="http://www.blogherald.com/2007/05/31/quick-tip-how-to-make-the-categories-box-bigger-when-writing-wordpress-posts/">Quick tip: How to make the ‘Categories’ box bigger when writing WordPress posts</a>.</p>
<p>Excerpt:</p>
<blockquote>
<p align="left">I’ve written at a couple blogs, including <a href="http://www.kinggary.com//">my own</a> and <a href="http://blogherald.com/">Blog Herald</a> (here), and quite often, I see that there are quite a number of post categories to choose from in order to tag my posts appropriately.</p>
<p>Below, you can see a typical listing of available post categories that you can use on a <a href="http://wordpress.org/">WordPress</a> blog. As you can see, though, there are so many categories that the box requires a scroll bar.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/blog-herald-quick-tip-how-to-make-the-%e2%80%98categories%e2%80%99-box-bigger-when-writing-wordpress-posts/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to use widgets with more than one sidebar on your WordPress blog</title>
		<link>http://www.kinggary.com/archives/how-to-use-widgets-with-more-than-one-sidebar-on-your-wordpress-blog/</link>
		<comments>http://www.kinggary.com/archives/how-to-use-widgets-with-more-than-one-sidebar-on-your-wordpress-blog/#comments</comments>
		<pubDate>Thu, 24 May 2007 06:42:22 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/archives/how-to-use-widgets-with-more-than-one-sidebar-on-your-wordpress-blog/</guid>
		<description><![CDATA[I&#8217;ve made yet another post over at Blog Herald entitled How to use widgets with more than one sidebar on your WordPress blog. Go check it out!
Here&#8217;s an excerpt:
In continuation of my last post, Enabling sidebar widgets for your WordPress theme, I am now going to show you how you can use these newfound widgets [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve made yet another post over at <a href="http://blogherald.com">Blog Herald</a> entitled <a href="http://www.blogherald.com/2007/05/24/how-to-use-widgets-with-more-than-one-sidebar-on-your-wordpress-blog/">How to use widgets with more than one sidebar on your WordPress blog</a>. Go check it out!</p>
<p>Here&#8217;s an excerpt:</p>
<blockquote><p>In continuation of my last post, <a href="http://www.blogherald.com/2007/05/17/enabling-sidebar-widgets-for-your-wordpress-theme/">Enabling sidebar widgets for your WordPress theme</a>, I am now going to show you how you can use these newfound widgets with more than one sidebar on your <a href="http://wordpress.org">WordPress</a> blog.</p>
<p>Most blogs have only one sidebar, but some, such as <a href="http://blogherald.com">Blog Herald</a>, have two (or more!) After reading my last post, you learned how you can use widgets on your blog&#8217;s theme, so now, I will show you how you can use widgets on two or more sidebars. This post assumes that you&#8217;ve either read my last post, or you already know how to widgetize a theme but would like to know how to widgetize more than one sidebar.</p>
<p>I&#8217;m also going to show you how you can customize your sidebars by choosing how you want each widget to be formatted on a per-sidebar basis, and I&#8217;ll also show you how you can name your sidebars to more easily identify each one.</p>
<p>This tutorial will focus on using widgets on two sidebars, but the steps can be easily reproduced to adapt to more than two sidebars.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/how-to-use-widgets-with-more-than-one-sidebar-on-your-wordpress-blog/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Quick tip: Quickly copying and pasting text to WordPress without the formatting</title>
		<link>http://www.kinggary.com/archives/quick-tip-quickly-copying-and-pasting-text-to-wordpress-without-the-formatting/</link>
		<comments>http://www.kinggary.com/archives/quick-tip-quickly-copying-and-pasting-text-to-wordpress-without-the-formatting/#comments</comments>
		<pubDate>Thu, 24 May 2007 06:01:12 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/archives/quick-tip-quickly-copying-and-pasting-text-to-wordpress-without-the-formatting/</guid>
		<description><![CDATA[For all you bloggers out there, if you&#8217;re using the Visual method of creating posts in WordPress, how many of you have copied text from somewhere (most likely a webpage) to the Visual editor in your WordPress blog, only to find that all of the formatting along with it has also come along? This is [...]]]></description>
			<content:encoded><![CDATA[<p>For all you bloggers out there, if you&#8217;re using the Visual method of creating posts in <a href="http://wordpress.org">WordPress</a>, how many of you have copied text from somewhere (most likely a webpage) to the Visual editor in your WordPress blog, only to find that all of the formatting along with it has also come along? This is because your browser tries to help you by keeping the formatting intact, but, unbeknown to your browser, you usually DON&#8217;T want the gigantic font that the text is in, or the bold and italic formatting that has been applied to it.</p>
<p>If you have this problem, then what I normally do is copy the text, paste it into the <strong>address bar</strong> of my browser, select all of the text again, and then paste it back into your WordPress Visual editor. Bam! No more formatting.</p>
<p>I&#8217;m sure that at least a few people have had this problem before, and I can just imagine people copying and pasting the text to WordPress and reformatting all of it back to what you wanted it to be, to get the text just right. I even know of a few people who would typically copy and paste to <a href="http://en.wikipedia.org/wiki/Microsoft Word">Microsoft Word</a>, modify it there, and then copy and paste it back into WordPress! I&#8217;m sure that a few people will make good use of this tip. If you have and find this useful, then let me know in the comments below!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/quick-tip-quickly-copying-and-pasting-text-to-wordpress-without-the-formatting/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Enabling sidebar widgets for your WordPress theme</title>
		<link>http://www.kinggary.com/archives/enabling-sidebar-widgets-for-your-wordpress-theme/</link>
		<comments>http://www.kinggary.com/archives/enabling-sidebar-widgets-for-your-wordpress-theme/#comments</comments>
		<pubDate>Thu, 17 May 2007 18:02:55 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/archives/enabling-sidebar-widgets-for-your-wordpress-theme/</guid>
		<description><![CDATA[I&#8217;ve made a post entitled &#8220;Enabling sidebar widgets for your WordPress theme&#8221; over at the popular blog, The Blog Herald. Go check it out and let me know what you think! I don&#8217;t usually write tutorials so I&#8217;d like some feedback on it so I can make it better the next time around. Here&#8217;s an [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve made a post entitled &#8220;<a href="http://www.blogherald.com/2007/05/17/enabling-sidebar-widgets-for-your-wordpress-theme/">Enabling sidebar widgets for your WordPress theme</a>&#8221; over at the popular blog, <a href="http://www.blogherald.com/">The Blog Herald</a>. Go check it out and let me know what you think! I don&#8217;t usually write tutorials so I&#8217;d like some feedback on it so I can make it better the next time around. Here&#8217;s an excerpt from the post:</p>
<blockquote><p>So, you&#8217;ve got that brand-spanking-new (or kind-of-new) <a href="http://wordpress.org">WordPress</a> theme, and you&#8217;re strutting your stuff like it&#8217;s no one&#8217;s business. What next? Well, with WordPress 2.2 <a href="http://wordpress.org/development/2007/05/wordpress-22/">being released yesterday</a>, <a href="http://technosailor.com/10-things-you-should-know-about-wordpress-22/">major changes</a> come along with it. One of the most important changes to take place involve <a href="http://automattic.com/code/widgets/">sidebar widgets</a>; these were once provided as a <a href="http://codex.wordpress.org/Plugins">plugin</a>, but are now built right into the application.</p>
<p>In this post, I am going to walk you through on what you need to know to &#8216;widgetize&#8217; your blog&#8217;s theme, meaning we first have to allow your blog&#8217;s theme to use widgets. If you haven&#8217;t yet installed WordPress 2.2, then don&#8217;t worry, because you can install sidebar widgets as a <a href="http://automattic.com/code/widgets/">separate plugin</a> and still follow along.</p>
<p><strong>Okay, now that you&#8217;ve got WordPress widgets installed, we first have to widgetize your theme.</strong></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/enabling-sidebar-widgets-for-your-wordpress-theme/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Creating ProBlogger&#8217;s &#8220;Group Writing Project&#8221; plugin</title>
		<link>http://www.kinggary.com/archives/creating-probloggers-group-writing-project-plugin/</link>
		<comments>http://www.kinggary.com/archives/creating-probloggers-group-writing-project-plugin/#comments</comments>
		<pubDate>Fri, 11 May 2007 17:47:39 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/archives/creating-probloggers-group-writing-project-plugin/</guid>
		<description><![CDATA[Darren Rowse&#8217;s ProBlogger blog concluded its latest &#8220;Group Writing Project&#8221; today, an exercise that he runs on his blog every once in a while which involves his faithful readers submitting blog post links to him so that he can compile them all and publish a nicely formatted list of all the links, including post titles [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.problogger.net/archives/2005/01/06/about-darren/">Darren Rowse&#8217;s</a> <a href="http://problogger.net">ProBlogger</a> blog <a href="http://problogger.net/archives/2007/05/11/top-5-group-writing-project-day-4/">concluded</a> its latest &#8220;<a href="http://www.problogger.net/archives/2007/05/07/top-5-group-writing-project/">Group Writing Project</a>&#8221; today, an exercise that he runs on his blog every once in a while which involves his faithful readers submitting blog post links to him so that he can compile them all and publish a nicely formatted list of all the links, including post titles and blogger names. He used to compile the posts by hand, after receiving emails that he gets from his <a href="http://www.problogger.net/contact/">contact form</a>, and this process used to take him days to do.</p>
<p><a href="http://www.problogger.net/archives/2005/01/06/about-darren/"><img src="http://www.kinggary.com/wp-content/uploads/2007/05/problogger-logo.gif" alt="problogger-logo.gif" align="right" /></a>Here&#8217;s what he said about my plugin:</p>
<blockquote>
<h3>Thanks Gary</h3>
<p>The reason there was such a long gab between this writing project and the last one is that previously running these projects has been so much work as I’ve had to manually copy and paste every entry from emails into posts. This time however I was lucky enough to have <a href="http://www.kinggary.com//">Gary King</a> develop a WP plugin that would do the task for me so that all I had to do at the end of each day was copy and paste the list of submissions into a post with my intro. Seeing the numbers of entries we had confirms the decision to go this route - Gary has literally saved me days worth of work. Thanks Mate.</p></blockquote>
<p>For this latest Group Writing Project, he asked me to write a script for him which would automate as many of these tasks for him as possible. I did this by creating a <a href="http://wordpress.org">WordPress</a> <a href="http://wordpress.org/extend/plugins/">plugin</a> that can be <a href="http://problogger.net/group-writing-project">found here</a>; it automates almost all of the tasks that Darren needed to do prior to the creation of this plugin. Namely, the plugin automatically creates an HTML-formatted list of blog post titles, which are automatically linked to their respective blog posts, and appends the blogger&#8217;s name to the end of the line. Let us start with the form shown below, which is the form that I created where users interact with:</p>
<p style="text-align: center"><img src="http://www.kinggary.com/wp-content/uploads/2007/05/form.png" alt="form.png" /></p>
<p align="left">Once the form is submitted, a link is created and appears like this:</p>
<p align="left"><img src="http://www.kinggary.com/wp-content/uploads/2007/05/link.png" alt="link.png" /></p>
<p>What happens in the WordPress admin is that all of this information is actually placed into a drafted post, meaning all Darren has to do is go to the post entitled &#8216;Group writing project - LATEST&#8217;, copy the links in that post to a NEW post that he plans on publishing that same day, and then submit it! It&#8217;s just a simple matter of copying and pasting existing content! So, we&#8217;ve changed his workflow from several hours of copying and pasting links individually, to copying and pasting one big chunk of text, which takes only a few seconds.</p>
<p>A side effect that has cropped up from all of this is the fact that MORE people are submitting links because the form makes it MUCH easier to do, rather than being required to use a contact form which does not have separate text fields for each required item (post title, link, and blogger name). This also creates the issue of having unformatted content in the contact form, meaning the blogger can put the required information in whatever order they desire, whereas for the new submission form, the content is standardized so that it TELLS the user to enter the information in a text field specifically for each required data.</p>
<p>A few minor things that I&#8217;ve also added are that duplicated submissions are blocked so that we try and make every submission a unique one, and that all names and emails are automatically added to a draft post that is separate from the one that has all the links.</p>
<p>I hope you&#8217;ve enjoyed this post explaining a bit about how I created this particular WordPress plugin for Darren. I&#8217;ve got a few more lined up, so stay tuned! <img src='http://www.kinggary.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/creating-probloggers-group-writing-project-plugin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>&#8216;Comment Rankings&#8217; WordPress plugin</title>
		<link>http://www.kinggary.com/archives/comment-rankings-wordpress-plugin/</link>
		<comments>http://www.kinggary.com/archives/comment-rankings-wordpress-plugin/#comments</comments>
		<pubDate>Wed, 18 Apr 2007 12:10:27 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/2007/04/18/comment-rankings-wordpress-plugin/</guid>
		<description><![CDATA[I quickly whipped up a WordPress plugin to do something that I wanted, which was to display stars in a post&#8217;s comments next to the comment&#8217;s author. Each star represented 10 comments that the author had made on the blog so far; I find it interesting to see how many people in the, say, top [...]]]></description>
			<content:encoded><![CDATA[<p>I quickly whipped up a <a href="http://wordpress.org">WordPress</a> plugin to do something that I wanted, which was to display stars in a post&#8217;s comments next to the comment&#8217;s author. Each star represented 10 comments that the author had made on the blog so far; I find it interesting to see how many people in the, say, top 10 people that comment on a blog make up a large percentage of the total comments on a blog. (For those who are wondering, the top 10 commenters on my blog make up 67% of all the comments.)</p>
<h3>Screenshot</h3>
<p>You can see the plugin in action by simply looking at any of the comments on this blog. Here&#8217;s a screenshot, as well, just in case I ever decide to remove it from my blog:</p>
<p><img src="http://www.kinggary.com/wp-content/uploads/2007/04/screenshot.png" alt="screenshot.png" /></p>
<h3>Download the plugin</h3>
<p>Click <a href="http://www.kinggary.com/wp-content/uploads/2007/04/comment_rankings.zip">here</a> to download the plugin. Download, extract, and upload the entire folder to your /wp-contents/plugins/ folder (so the final path should be /wp-contents/plugins/comment_rankings/) and activate it.</p>
<p>This plugin is also <a href="http://wordpress.org/extend/plugins/comment-rankings/">listed</a> in the official <a href="http://wordpress.org/extend/plugins/">WordPress Plugins database</a>.</p>
<p><strong><em>Now, back to our regularly scheduled programming.</em></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/comment-rankings-wordpress-plugin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Improving performance by 87% at b5media using a cache, optimization, and a screwdriver</title>
		<link>http://www.kinggary.com/archives/improving-performance-by-87-at-b5media-using-a-cache-optimization-and-a-screwdriver/</link>
		<comments>http://www.kinggary.com/archives/improving-performance-by-87-at-b5media-using-a-cache-optimization-and-a-screwdriver/#comments</comments>
		<pubDate>Tue, 17 Apr 2007 21:05:57 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[business]]></category>

		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/2007/04/17/improving-performance-by-87-at-b5media-using-a-cache-optimization-and-a-screwdriver/</guid>
		<description><![CDATA[Running  a blog network with nearly 200 blogs is no easy task, and when you&#8217;ve got the same item being downloaded a few thousand times every second, it can put quite the strain on a server. That&#8217;s why the b5media blogroll (an example is shown to the right of this post) can pretty much [...]]]></description>
			<content:encoded><![CDATA[<p>Running  a blog network with nearly 200 blogs is no easy task, and when you&#8217;ve got the same item being downloaded a few thousand times every second, it can put quite the strain on a server. That&#8217;s why the <a href="http://b5media.com">b5media</a> <abbr title="A blogroll is a collection of links to other weblogs.">blogroll</abbr> (an example is shown to the right of this post) can pretty much kill a server if people love our blogs too much, and if the blogroll isn&#8217;t as optimized as it could have been. We needed to fix the blogroll so that we could use it without straining our servers nearly as much as it once did, so I jumped in and optimized it so that it would be nice and speedy.</p>
<p>The good thing was that whenever the blogroll was requested by a website, the same data would always be sent (in XML format - what else?). The reason that the blogroll may look different on several websites is because each website parses the XML file differently. This enabled us to cache the blogroll XML data that is returned, since it is not dynamic; it only changes if we add/modify/remove a channel or a blog.</p>
<h3>Average load times</h3>
<h4><img src="http://www.kinggary.com/wp-content/uploads/2007/04/Picture%201.jpg" align="right" />Before optimization</h4>
<p>Before optimizing the blogroll, these were the average load times that it took to load the blogroll with the old code, when it ran 2500 times:</p>
<ul>
<li>5.9277107715607 seconds</li>
<li>5.2258749008179 seconds</li>
<li>6.9043378829956 seconds</li>
<li>8.450049161911 seconds</li>
<li>6.729789018631 seconds</li>
<li>6.3227508068085 seconds</li>
<li>5.4357509613037 seconds</li>
<li>7.2524189949036 seconds</li>
<li>7.7171530723572 seconds</li>
<li>6.8039338588715 seconds</li>
</ul>
<h4>After optimization</h4>
<p>After optimizing the blogroll, here are the average load times that it takes to load the blogroll with the new, optimized code, when it ran 2500 times:</p>
<ul>
<li>1.349152803421 seconds</li>
<li>1.3284649848938 seconds</li>
<li>1.1611139774323 seconds</li>
<li>1.3144729137421 seconds</li>
<li>1.2075929641724 seconds</li>
<li>1.1899409294128 seconds</li>
<li>1.3266270160675 seconds</li>
<li>1.297404050827 seconds</li>
<li>1.2125298976898 seconds</li>
<li>1.1947700977325 seconds</li>
</ul>
<p>Numbers speak louder than words (but actions come as a close second). Keep in mind that the times shown above represent the times that it takes for the blogroll to execute 2500 times (meaning, it takes roughly 1 second to load the blogroll 2500 times. That&#8217;s a lot of b5media-blogroll-lovin&#8217;!)</p>
<p>This is just yet another testament that caching and optimization can really do you some good, even if it may be a minor change that you&#8217;ve made to your code. I used to just write code without any considerations regarding caching and optimization of the code (this was quite a while ago). Eventually, I learned that by simply spending a few minutes to cache data, it can save all of your website&#8217;s visitors some time, and little by little, that time adds up.</p>
<h3>Resources</h3>
<p>Here are some great resources that you can use to cache some of your own data:</p>
<ul>
<li>for caching PHP in general, use <a href="http://turck-mmcache.sourceforge.net/index_old.html">Turck MMCache</a></li>
<li>for caching on WordPress, download and install the <a href="http://mnm.uib.es/gallir/posts/2007/01/31/963/">WP-Cache</a> plugin</li>
</ul>
<h3>Tutorials</h3>
<ul>
<li><a href="http://www.devshed.com/c/a/PHP/Caching-Result-Sets-in-PHP-Costefficient-PHP-acceleration/" rel="nofollow" class="title_readon">Caching Result Sets in PHP: Cost-efficient PHP acceleration</a></li>
<li><a href="http://www.devshed.com/c/a/PHP/Output-Caching-with-PHP/" rel="nofollow" class="title_readon">Output Caching with PHP</a></li>
<li><a href="http://mpwebwizard.com/free_stuff/use_a_mirror">Use a mirror for hits from popular websites</a></li>
</ul>
<p>(Oh, and there was no screwdriver involved. Doh!)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/improving-performance-by-87-at-b5media-using-a-cache-optimization-and-a-screwdriver/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rails Day 2006</title>
		<link>http://www.kinggary.com/archives/rails-day-2006/</link>
		<comments>http://www.kinggary.com/archives/rails-day-2006/#comments</comments>
		<pubDate>Sat, 17 Jun 2006 03:50:34 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[asides]]></category>

		<category><![CDATA[personal]]></category>

		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/2006/06/16/rails-day-2006/</guid>
		<description><![CDATA[I&#8217;ve decided not to go ahead with Rails Day 2006. I&#8217;m too tired to last 24 hours straight and still have energy to study for three exams the immediate next week after. There&#8217;s also about a 25% chance of winning any prize whatsoever - which is pretty damn good. Oh well, there&#8217;s always next year!
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve decided not to go ahead with Rails Day 2006. I&#8217;m too tired to last 24 hours straight and still have energy to study for three exams the immediate next week after. There&#8217;s also about a 25% chance of winning any <a href="http://www.railsday2006.com/pages/prizes">prize</a> whatsoever - which is pretty damn good. Oh well, there&#8217;s always next year!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/rails-day-2006/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rails Day</title>
		<link>http://www.kinggary.com/archives/rails-day/</link>
		<comments>http://www.kinggary.com/archives/rails-day/#comments</comments>
		<pubDate>Wed, 14 Jun 2006 12:17:58 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[asides]]></category>

		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/2006/06/14/rails-day/</guid>
		<description><![CDATA[I&#8217;m thinking of participating in it, but honestly, I haven&#8217;t written a single line of Rails in a little while now. I&#8217;ve been on a bit of a hiatus from work, partially because of busywork, and partially just because I need some time to think. 24 hours of coding, straight, at this time when I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m thinking of participating in <a href="http://railsday.com/">it</a>, but honestly, I haven&#8217;t written a single line of <a href="http://www.rubyonrails.org/">Rails</a> in a little while now. I&#8217;ve been on a bit of a hiatus from work, partially because of busywork, and partially just because I need some time to think. 24 hours of coding, straight, at this time when I&#8217;m already not getting enough sleep, doesn&#8217;t sound too good for myself, either&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/rails-day/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rails Day 2006 - looking for a team</title>
		<link>http://www.kinggary.com/archives/rails-day-2006-looking-for-a-team/</link>
		<comments>http://www.kinggary.com/archives/rails-day-2006-looking-for-a-team/#comments</comments>
		<pubDate>Sun, 04 Jun 2006 21:50:24 +0000</pubDate>
		<dc:creator>Gary King</dc:creator>
		
		<category><![CDATA[asides]]></category>

		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.kinggary.com/2006/06/04/rails-day-2006-looking-for-a-team/</guid>
		<description><![CDATA[Anyone want to get together for a Rails Day team? Registration just opened today.
]]></description>
			<content:encoded><![CDATA[<p>Anyone want to get together for a <a href="http://www.railsday2006.com/">Rails Day</a> team? Registration just opened today.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kinggary.com/archives/rails-day-2006-looking-for-a-team/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
