<?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>Command-Tab &#187; Programming</title>
	<atom:link href="http://www.command-tab.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.command-tab.com</link>
	<description>Technology and Mac geekery. One part exuberance, two parts obsession.</description>
	<lastBuildDate>Tue, 18 May 2010 19:56:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Widerbug 1.3.3 Available</title>
		<link>http://www.command-tab.com/2009/05/25/widerbug-133-available/</link>
		<comments>http://www.command-tab.com/2009/05/25/widerbug-133-available/#comments</comments>
		<pubDate>Mon, 25 May 2009 17:56:08 +0000</pubDate>
		<dc:creator>Collin</dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.command-tab.com/?p=482</guid>
		<description><![CDATA[After a long wait, Widerbug 1.3.3 is now available! Thanks to an excellent tutorial, it includes automatic update abilities to keep up with widescreen revisions, as well as the latest Firebug changes. Install it now, or visit the Widerbug page.]]></description>
			<content:encoded><![CDATA[<p>After a long wait, Widerbug 1.3.3 is now available!  Thanks to an <a href="http://www.borngeek.com/firefox/automatic-firefox-extension-updates/">excellent tutorial</a>, it includes automatic update abilities to keep up with widescreen revisions, as well as the latest Firebug changes.  <a href="/files/widerbug/widerbug133.xpi">Install it now</a>, or visit the <a href="/2008/01/19/widerbug-widescreen-firebug/">Widerbug page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.command-tab.com/2009/05/25/widerbug-133-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Widerbug 1.3.0 for Firefox 3</title>
		<link>http://www.command-tab.com/2009/01/08/widerbug-130-for-firefox-3/</link>
		<comments>http://www.command-tab.com/2009/01/08/widerbug-130-for-firefox-3/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 01:46:27 +0000</pubDate>
		<dc:creator>Collin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.command-tab.com/?p=471</guid>
		<description><![CDATA[The Firebug team has been hard at work squashing bugs and making Firefox 3 related improvements, culminating in the release of Firebug 1.3.0 yesterday. Some of the notable changes include: Better debugging performance when dealing with large JavaScript files More reliable &#8216;console&#8217; object for logging Alphabetized DOM properties Added localizations Over 50 bug fixes After [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/2008/01/19/widerbug-widescreen-firebug/"><img border="0" src="http://cdn.command-tab.com/2008/widerbug_icon.jpg" align="right" class="right" /></a>The Firebug team has been hard at work squashing bugs and making Firefox 3 related improvements, culminating in the release of Firebug 1.3.0 yesterday.  Some of the notable changes include:</p>
<ul>
<li>Better debugging performance when dealing with large JavaScript files</li>
<li>More reliable &#8216;console&#8217; object for logging</li>
<li>Alphabetized DOM properties</li>
<li>Added localizations</li>
<li>Over 50 bug fixes</li>
</ul>
<p>After some minor modifications, Widerbug 1.3.0 is ready for use on your widescreen display in its signature 2-up layout, complete with all the changes from above.  As usual, head over to the <a href="/2008/01/19/widerbug-widescreen-firebug/">Widerbug</a> page to grab the latest version (please leave comments and note any bugs on that page).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.command-tab.com/2009/01/08/widerbug-130-for-firefox-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Learning Cocoa for the iPhone</title>
		<link>http://www.command-tab.com/2008/12/21/learning-cocoa-for-the-iphone/</link>
		<comments>http://www.command-tab.com/2008/12/21/learning-cocoa-for-the-iphone/#comments</comments>
		<pubDate>Sun, 21 Dec 2008 22:50:26 +0000</pubDate>
		<dc:creator>Collin</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.command-tab.com/?p=467</guid>
		<description><![CDATA[These last few weeks, I&#8217;ve been teaching myself Cocoa to learn what makes Mac OS X and iPhone OS apps tick (not just for Flicks, but other software, too). While Objective-C is quite a departure from my usual web development world, Cocoa has quickly become one of my favorite languages, as it takes care of [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://cdn.command-tab.com/2008/app_xcode.jpg" align="right" class="right" />These last few weeks, I&#8217;ve been teaching myself Cocoa to learn what makes Mac OS X and iPhone OS apps tick (not just for <a href="http://www.flicksapp.com">Flicks</a>, but other software, too).  While Objective-C is quite a departure from my usual web development world, Cocoa has quickly become one of my favorite languages, as it takes care of much of the drudgery of pure C and has plenty of useful frameworks to get your application up and running quickly.  Here are some of the best resources I&#8217;ve found so far:</p>
<ul>
<li><a href="http://cocoadevcentral.com/">Cocoa Dev Central</a> and <a href="http://www.cocoalab.com/?q=becomeanxcoder">Become an Xcoder</a> are both excellent tutorials for beginners, written in a clear, straightforward manner.  They also explain the ins and outs of memory management, which is critical on platforms like the iPhone and iPod touch.</li>
<li>Stanford&#8217;s <a href="http://www.stanford.edu/class/cs193p/cgi-bin/index.php">CS193P lecture notes</a> and examples have proven to be one of the best resources for learning Cocoa, particularly for the iPhone.  These notes and tests offer Cocoa Touch in bite-size chunks, with a little bit of &#8220;on your own&#8221; work to ensure you know your stuff before moving on.</li>
<li><a href="http://www.google.com/codesearch/">Google Code Search</a> is a good last resort for examples of how others are using a small bit of code or a particular class.  For more accurate results, append &#8220;lang:objectivec&#8221; to your search string to narrow results to only Objective-C code.</li>
</ul>
<p>If you already know Cocoa, feel free to share your go-to places for information in the comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.command-tab.com/2008/12/21/learning-cocoa-for-the-iphone/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Consolas Cursor Fix</title>
		<link>http://www.command-tab.com/2008/12/16/consolas-cursor-fix/</link>
		<comments>http://www.command-tab.com/2008/12/16/consolas-cursor-fix/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 19:35:08 +0000</pubDate>
		<dc:creator>Collin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.command-tab.com/?p=466</guid>
		<description><![CDATA[If you&#8217;ve attempted to use Consolas as your choice programming font on the Mac, you may have noticed (as I did) an odd issue with the font, where your blinking cursor hangs much lower than the current line. Oddly enough, this little issue only seems to affect Mac OS X. Even the Consolas set that [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://cdn.command-tab.com/2008/consolas_diff.gif" border="0" align="right" class="right" />If you&#8217;ve attempted to use Consolas as your choice programming font on the Mac, you may have noticed (<a href="/2008/02/19/finding-the-perfect-programming-font/">as I did</a>) an odd issue with the font, where your blinking cursor hangs much lower than the current line.  Oddly enough, this little issue only seems to affect Mac OS X.  Even the Consolas set that ships with Microsoft Office 2008 has the same problem!  Yet, when the same exact font file is used under Windows, the cursor position is correct.</p>
<p><a href="http://daringfireball.net/linked/2008/12/15/bbedit-91" title="Daring Fireball: BBEdit 9.1">John Gruber</a> mentioned yesterday that <a href="http://www.barebones.com/products/bbedit/demo.html">BBEdit 9.1</a> now ships with Consolas as its default font, so I decided to see if it had the same cursor problem I had experienced in the past.  As it turns out, BBEdit&#8217;s version of Consolas works just fine, as seen in the image above.  However, it doesn&#8217;t include the other styles like Consolas Bold, Italic, and Bold Italic.</p>
<p>Through one way or another, the copy of Consolas that ships with BBEdit 9.1 is different than the one that ships with Microsoft Office 2008.  To make system-wide use of the working version, <a href="http://www.barebones.com/products/bbedit/demo.html">download BBEdit 9.1</a>, mount and open the .dmg, and navigate to:</p>
<p>(Control-click BBEdit, and choose &#8220;Show Package Contents&#8221; to get inside the application bundle)<br />
<code>BBEdit.app/Contents/Resources/Fonts/consola.ttf</code></p>
<p>Copy consola.ttf from BBEdit&#8217;s &#8220;Fonts&#8221; folder to your own Fonts folder at /Users/you/Library/Fonts, or /Library/Fonts if you want to make it available to everyone who has an account on your computer.  Then, fire up your favorite editor, set Consolas as your preferred fixed-width font, and get coding!</p>
<p><strong>June 14, 2009 Update:</strong><br />Bare Bones has apparently changed the version of Consolas that ships with BBEdit versions later than 9.1, and they now have the cursor problem as well.  You can still get the 9.1 demo <a href="http://cdn.command-tab.com/2009/BBEdit_9.1_Demo.dmg">here</a>, which contains the working font.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.command-tab.com/2008/12/16/consolas-cursor-fix/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>jQuery Fling</title>
		<link>http://www.command-tab.com/2008/12/04/jquery-fling/</link>
		<comments>http://www.command-tab.com/2008/12/04/jquery-fling/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 04:30:21 +0000</pubDate>
		<dc:creator>Collin</dc:creator>
				<category><![CDATA[NerdLab]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.command-tab.com/?p=464</guid>
		<description><![CDATA[Fling is a simple but powerful jQuery plugin for dealing with multiple events using a publisher/subscriber model. jQuery handles the browser-native events, Fling manages them, and you write the code that&#8217;s left. Why Fling? To understand the purpose of Fling, imagine a standard three-pane email client (to borrow an example from Seth Dillingham, whose work [...]]]></description>
			<content:encoded><![CDATA[<p>Fling is a simple but powerful <a href="http://www.jquery.com">jQuery</a> plugin for dealing with multiple events using a publisher/subscriber model.  jQuery handles the browser-native events, Fling manages them, and you write the code that&#8217;s left.</p>
<p><b>Why Fling?</b><br />
<img src="http://cdn.command-tab.com/2008/jquery_fling_slingshot.jpg" border="0" align="right" class="right" />To understand the purpose of Fling, imagine a standard three-pane email client (to borrow an example from <a href="http://www.truerwords.net/articles/web-tech/custom_events.html">Seth Dillingham</a>, whose work inspired Fling): When you click on a message you just received, several things happen:</p>
<ul>
<li>The mailbox unread count gets decremented</li>
<li>The message&#8217;s unread indicator goes away</li>
<li>The message row text goes from bold to plain</li>
<li>The message content appears in the viewer pane</li>
</ul>
<p>These actions happen with little, if any interaction between each other.  All each needs to know is that you clicked on a given unread message.  Using jQuery, it&#8217;s quite easy to put all four actions inside the same click handler function and be done in minutes.  However, when your code base starts to grow, having all that code inside one event handler can make multiple triggers and cascading events cumbersome.  There&#8217;s a better way to make things happen &#8212; Fling your events around.</p>
<p><b>A Basic Example</b><br />
Start by including Fling on your page, along with jQuery:</p>
<pre>&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.fling.js&quot;&gt;&lt;/script&gt;</pre>
<p>Then, use jQuery&#8217;s handy <a href="http://www.learningjquery.com/2006/09/introducing-document-ready">document ready</a> to set up new Fling subscribers, and finally, publish the event:</p>
<pre>// jQuery Document Ready
$(function() {
	// Subscribe to some_event_name
	$.fling('subscribe', 'some_event_name', function() {
		alert('Hello from Fling 1');
	});

	// Subscribe to some_event_name
	$.fling('subscribe', 'some_event_name', function() {
		alert('Hello from Fling 2');
	});

	// Publish some_event_name
	$.fling('publish', 'some_event_name');
});
</pre>
<p>When run, you should see two alerts pop up in sequence.  The only relationship the subscribers have is that they both care about &#8220;some_event_name&#8221; happening.  When publish was called, both did their jobs.</p>
<p><b>In Depth</b><br />
$.fling() has four main functions:</p>
<ul>
<li><b>Create</b> sets up an event without publishing it or subscribing any events.  This isn&#8217;t used too often, as Create happens automatically when Publish or Subscribe is called.
<pre>$.fling('create', 'myEvent');</pre>
</li>
<li><b>Destroy</b> frees the memory occupied by the event and it&#8217;s subscribers when you&#8217;re done with an event for good.
<pre>$.fling('destroy', 'myEvent');</pre>
</li>
<li><b>Publish</b> notifies all subscribers that a given event happened.  It can also pass data to subscribers through a second parameter.  Publish can be called at any time, with zero or more subscribers, meaning your event can happen even if no subscribers care about that event.
<pre>$.fling('publish', 'myEvent');</pre>
<pre>$.fling('publish', 'myEvent', {my: "data"});</pre>
</li>
<li><b>Subscribe</b> gets called when an event is Published.  You can Subscribe to events that have not been Created or Published yet, as the publisher can arrive later via another script, if needed.
<pre>$.fling('subscribe', 'myEvent', function() {
	/* ...your code... */
});</pre>
<pre>$.fling('subscribe', 'myEvent', someNamedFunction);</pre>
<pre>$.fling('subscribe', 'myEvent', function(event, passedData) {
	alert(passedData);
});</pre>
</li>
</ul>
<p><b>Give Fling a Try!</b><br />
So, that&#8217;s it to Fling.  There&#8217;s not a whole lot to it &#8212; you might even be surprised to see just how short the code is.  Give it a shot, and see how your jQuery code can be better organized, called from multiple places, and even cascade on down the line.</p>
<p><a title="Download the current version of Fling" href="http://cdn.command-tab.com/2008/jquery.fling.js" style="margin: 5px auto 0px; width: 228px; height: 39px; display: block;"><img border="0" alt="Download Fling Now" src="http://cdn.command-tab.com/2008/button_download_now.png"/></a></p>
<p><strong>Release History</strong></p>
<ul>
<li><strong><a href="http://cdn.command-tab.com/2008/jquery.fling.js">jQuery Fling 1.0</a></strong><br/>Released on Dec. 4, 2008<br/>Initial release.</li>
</ul>
<p>Released under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT License</a>.  Fling is short, sweet, and yours to hack.  Improvements are welcomed!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.command-tab.com/2008/12/04/jquery-fling/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>iPhone NDA Dropped</title>
		<link>http://www.command-tab.com/2008/10/01/iphone-nda-dropped/</link>
		<comments>http://www.command-tab.com/2008/10/01/iphone-nda-dropped/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 17:19:08 +0000</pubDate>
		<dc:creator>Collin</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[iPod]]></category>

		<guid isPermaLink="false">http://www.command-tab.com/?p=457</guid>
		<description><![CDATA[After hearing the cries of thousands of upset iPhone app developers, Apple has lifted the non-disclosure agreement covering (released) iPhone software. Developers can now freely talk about the inner workings of their applications, write books, publish blog entries, etc. Communicating developers means solutions to common problems get solved and shared, resulting in better software, making [...]]]></description>
			<content:encoded><![CDATA[<p>After hearing the cries of thousands of upset iPhone app developers, Apple has <a href="http://developer.apple.com/iphone/program/">lifted the non-disclosure agreement</a> covering (released) iPhone software.  Developers can now freely talk about the inner workings of their applications, <a href="http://www.pragprog.com/titles/amiphd/iphone-sdk-development">write</a> <a href="http://www.amazon.com/iPhone-Developers-Cookbook-Building-Applications/dp/0321555457/ref=pd_bbs_sr_1?ie=UTF8&#038;s=books&#038;qid=1222881181&#038;sr=8-1">books</a>, publish blog entries, etc.  Communicating developers means solutions to common problems get solved and <a href="http://furbo.org/2008/10/01/redacted/">shared</a>, resulting in better software, making the iPhone and iPod Touch platform better as a whole.</p>
<p>For some time I&#8217;ve been worried that the NDA was going to remain in place indefinitely, silencing those who Apple needs the most, but it appears Apple has finally taken a positive action to help their App Store environment grow further.  If you thought there was some cool stuff on the App Store now, just give it time&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.command-tab.com/2008/10/01/iphone-nda-dropped/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Widerbug 1.2.1 for Firefox 3</title>
		<link>http://www.command-tab.com/2008/09/13/widerbug-121-for-firefox-3/</link>
		<comments>http://www.command-tab.com/2008/09/13/widerbug-121-for-firefox-3/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 21:40:41 +0000</pubDate>
		<dc:creator>Collin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.command-tab.com/?p=452</guid>
		<description><![CDATA[For those eagerly anticipating Widerbug: Widescreen Firebug for Firefox 3, the wait is over. Firebug 1.2.1 was just recently released, and I&#8217;ve merged the Widerbug modifications into the latest version and tested them under Windows XP and Mac OS X on Firefox 3.0.1. Head on over to the Widerbug page to grab the latest version [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/2008/01/19/widerbug-widescreen-firebug/"><img border="0" src="http://cdn.command-tab.com/2008/widerbug_icon.jpg" align="right" class="right" /></a>For those eagerly anticipating <a href="/2008/01/19/widerbug-widescreen-firebug/">Widerbug: Widescreen Firebug for Firefox 3</a>, the wait is over.  Firebug 1.2.1 was just recently released, and I&#8217;ve merged the Widerbug modifications into the latest version and tested them under Windows XP and Mac OS X on Firefox 3.0.1.</p>
<p>Head on over to the <a href="/2008/01/19/widerbug-widescreen-firebug/">Widerbug</a> page to grab the latest version and get coding, widescreen style!  (Please leave comments and note any bugs on that page, just to keep things centralized.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.command-tab.com/2008/09/13/widerbug-121-for-firefox-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>fmTuner: A Last.fm Plugin for WordPress</title>
		<link>http://www.command-tab.com/2008/09/06/fmtuner-a-lastfm-plugin-for-wordpress/</link>
		<comments>http://www.command-tab.com/2008/09/06/fmtuner-a-lastfm-plugin-for-wordpress/#comments</comments>
		<pubDate>Sun, 07 Sep 2008 04:43:16 +0000</pubDate>
		<dc:creator>Collin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.command-tab.com/?p=448</guid>
		<description><![CDATA[The result of the &#8220;Tunes&#8221; sidebar element on the Command-Tab homepage, fmTuner is a small WordPress plugin for retrieving song details from your Last.fm profile and publishing them anywhere in your WordPress theme. It provides options for choosing among your Recent, Loved, or Top tracks, as well as tools to adjust the update frequency and [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://cdn.command-tab.com/2008/fmtuner_banner.jpg" alt="fmTuner Banner" />The result of the &#8220;Tunes&#8221; sidebar element on the Command-Tab <a href="/">homepage</a>, <strong>fmTuner</strong> is a small WordPress plugin for retrieving song details from your <a href="http://www.last.fm/home">Last.fm</a> profile and publishing them anywhere in your WordPress theme.  It provides options for choosing among your Recent, Loved, or Top tracks, as well as tools to adjust the update frequency and appearance:</p>
<p><img src="http://cdn.command-tab.com/2008/fmtuner_settings.gif" alt="Settings - fmTuner: A Last.fm Plugin for WordPress" /></p>
<p>Of particular note is the customizable Display Format option.  Using simple tags like [::artist::] and [::image::] intermixed with regular HTML, you can tweak your Last.fm tracks exactly how you like, or however your WordPress theme requires.  You have full control!</p>
<p><a style="margin: 5px auto 0px auto; width: 228px; height: 39px; display: block;" href="http://wordpress.org/extend/plugins/fmtuner/" title="Download fmTuner from WordPress.org"><img src="http://www.command-tab.com/images/wordpress/download_now_button.png" alt="Download fmTuner Now" border="0" /></a></p>
<p><strong>Requirements</strong></p>
<ul>
<li>WordPress 2.5 or later.</li>
<li>PHP 5 or later (fmTuner uses PHP 5&#8242;s SimpleXML for decoding Last.fm data).</li>
<li>Basic knowledge of PHP, HTML, and WordPress.</li>
</ul>
<p><strong>Installation</strong></p>
<ul>
<li>Upload &#8220;fmtuner.php&#8221; to a directory inside &#8220;/wp-content/plugins/&#8221; directory.  For example: &#8220;/wp-content/plugins/fmtuner/fmtuner.php&#8221;</li>
<li>Ensure &#8220;/wp-content/plugins/fmtuner/&#8221; is writable by your webserver (chmod 755 fmtuner).</li>
<li>Activate the plugin through the &#8220;Plugins&#8221; menu in WordPress.</li>
<li>Set up options in the &#8220;Settings&#8221; menu in WordPress.</li>
<li>Place &#8220;if(function_exists(&#8216;fmtuner&#8217;)) { fmtuner(); }&#8221; in your templates, between PHP tags.</li>
</ul>
<p><strong>Release History</strong></p>
<ul>
<li><strong>fmTuner 1.1</strong><br />Released on Feb. 1, 2010<br />Added a placeholder image field to the fmTuner Settings page, which will be substituted when tracks have no artwork.<br />Tested under WordPress 2.9.1.</li>
<li><strong>fmTuner 1.0.8</strong><br />Released on Nov. 3, 2009<br />Fixed a bug with the [::url::] fmTuner tag that caused Last.fm links to appear incorrectly.</li>
<li><strong>fmTuner 1.0.7</strong><br />Released on Apr. 23, 2009<br />Tracks with foreign character sets now display more accurately.</li>
<li><strong>fmTuner 1.0.6</strong><br />Released on Mar. 29, 2009<br />You can now display more than 10 Recent Tracks, and you should get fewer tracks without artwork.</li>
<li><strong>fmTuner 1.0.5</strong><br />Released on Mar. 22, 2009<br />Track information is now properly escaped to handle $ signs, quotes, and other non-alphanumeric characters.</li>
<li><strong>fmTuner 1.0.4</strong><br />Released on Dec. 14, 2008<br />Made minor tweaks for fmTuner Settings page under WordPress 2.7.</li>
<li><strong>fmTuner 1.0.3</strong><br />Released on Nov. 15, 2008<br />By request, a [::number::] fmTuner tag has been added, which emits a sequential number for each track (starting at 1).  This is particularly useful for CSS and JavaScript display purposes.</li>
<li><strong>fmTuner 1.0.2</strong><br />Released on Oct. 5, 2008<br />Added a cURL-based alternative to file_get_contents to hopefully resolve &#8220;URL file-access is disabled&#8221; issues.  If allow_url_fopen is disabled in the php.ini, cURL will be used to fetch the Last.fm feed instead.</li>
<li><strong>fmTuner 1.0.1</strong><br />Released on Sept. 9, 2008<br />Added better failure checking and informational messages, removed development code, and updated instructions.</li>
<li><strong>fmTuner 1.0</strong><br />Released on Sept. 6, 2008<br />Initial release.</li>
</ul>
<p>Released under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT License</a>.  Do with fmTuner whatever you wish.  Mod it, mash it, hack it.  Make it yours.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.command-tab.com/2008/09/06/fmtuner-a-lastfm-plugin-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>92</slash:comments>
		</item>
		<item>
		<title>Form Jig 1.0</title>
		<link>http://www.command-tab.com/2008/06/05/form-jig-1-0/</link>
		<comments>http://www.command-tab.com/2008/06/05/form-jig-1-0/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 04:41:49 +0000</pubDate>
		<dc:creator>Collin</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.command-tab.com/?p=422</guid>
		<description><![CDATA[In woodworking, metalworking, and other crafts where exact reproduction of a given piece is crucial, a common tool is a &#8220;jig.&#8221; A jig is effectively a template for creating a copy. For example, when a door key is duplicated, the cutting machine uses the existing key as a jig, tracing the hills and valleys on [...]]]></description>
			<content:encoded><![CDATA[<p>In woodworking, metalworking, and other crafts where exact reproduction of a given piece is crucial, a common tool is a &#8220;jig.&#8221;  A jig is effectively a template for creating a copy.  For example, when a door key is duplicated, the cutting machine uses the existing key as a jig, tracing the hills and valleys on its edge to produce an identical version.</p>
<p>Along the same line, when developing a web application or just a simple page, HTML forms require that data be typed in and submitted.  This process will repeat as the server-side code is refined, and typing the same data over and over gets old as soon as the second iteration.  &#8220;Don&#8217;t Repeat Yourself&#8221;, or &#8220;DRY&#8221;, is a common philosophy for writing better code, and should extend to testing your forms, as well.</p>
<p>Save your typing for code.</p>
<p>Form Jig is a small Firefox extension for replicating HTML form data and server-side code.  To use it, fill out a form on a page, click the red Capture button in your Firefox status bar, then submit the form.  Upon returning for further testing, click the green Replay triangle to populate the form just as you left it.  Form data is kept around until the current Firefox window is closed, and can be used between tabs.</p>
<p><a style="margin: 5px auto 0px auto; width: 228px; height: 39px; display: block;" href="https://addons.mozilla.org/en-US/firefox/addon/7497" title="Install Form Jig from Mozilla Addons"><img src="http://cdn.command-tab.com/2008/button_install_now.png" alt="Install Now" border="0" /></a></p>
<p>Suggestions are welcomed, and bug reports will be attended to.</p>
<p><b>6/8/08 Update v1.0.1</b><br />
Fixed a bug related to checkboxes and radio buttons.  The updated plugin should appear on addons.mozilla.org shortly (linked via the above button), but still hasn&#8217;t passed Mozilla&#8217;s &#8220;nomination&#8221; for public consumption.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.command-tab.com/2008/06/05/form-jig-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQueryize Bookmarklet</title>
		<link>http://www.command-tab.com/2008/03/13/jqueryize-bookmarklet/</link>
		<comments>http://www.command-tab.com/2008/03/13/jqueryize-bookmarklet/#comments</comments>
		<pubDate>Fri, 14 Mar 2008 03:45:20 +0000</pubDate>
		<dc:creator>Collin</dc:creator>
				<category><![CDATA[NerdLab]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.command-tab.com/2008/03/13/jqueryize-bookmarklet/</guid>
		<description><![CDATA[While developing web applications at my day job, I've come to rely quite heavily on the jQuery JavaScript library. In fact, it's the client-side backbone upon which our company software is built. It comes as no surprise, then, that I sometimes find myself poking around in others' web application code with Firebug (or Widerbug) and [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://cdn.command-tab.com/2008/jqueryize.gif" align="right" class="imgright" />While developing web applications at my day job, I've come to rely quite heavily on the <a href="http://jquery.com/">jQuery</a> JavaScript library.  In fact, it's the client-side backbone upon which our company software is built.  It comes as no surprise, then, that I sometimes find myself poking around in others' web application code with <a href="https://addons.mozilla.org/en-US/firefox/addon/1843">Firebug</a> (or <a href="http://www.command-tab.com/2008/01/19/widerbug-widescreen-firebug/">Widerbug</a>) and wishing I had jQuery at my immediate disposal to perform manipulations with its succinct syntax and practical API.</p>
<p>A day ago, I stumbled upon the answer I was looking for on the <a href="http://www.learningjquery.com/2006/12/jquerify-bookmarklet">Learning jQuery</a> blog: a browser-ready jQuery-loading bookmarklet.  For the uninitiated, a bookmarklet is a standard bookmark placed in your Bookmarks Bar, except it runs some JavaScript code instead of pointing your browser at a web destination.  In this case, the bookmarklet manually fetches and inserts jQuery into the current page.  I've modified the following version slightly to flash "jQuery Loaded" on the page when the load is complete, using the just-loaded jQuery, naturally.</p>
<p>To install the tool, just drag the following link to your Bookmarks Bar, and click it to temporarily install jQuery on whatever page you're visiting: <b><a href="javascript:void(function(){var s=document.createElement('script');s.src='http://code.jquery.com/jquery-latest.js';s.onload=function(){var h=$('<span>jQuery Loaded</span>');h.css({backgroundColor:'red',border:'5px solid white',color:'white', fontSize:'24px',fontWeight:'bold',fontFamily:'Verdana, sans-serif',position:'fixed',top:'100px',left:'100px;', padding:'10px'});$('body').append(h);h.fadeOut(1000,function(){h.remove();});}; document.getElementsByTagName('head')[0].appendChild(s);}())">jQueryize</a></b></p>
]]></content:encoded>
			<wfw:commentRss>http://www.command-tab.com/2008/03/13/jqueryize-bookmarklet/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using apc
Page Caching using apc (user agent is rejected)
Database Caching using apc

Served from: www.command-tab.com @ 2010-07-31 22:46:47 -->