<?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>Gabriel Jones</title>
	<atom:link href="http://gabrieljones.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://gabrieljones.com</link>
	<description>Web Developer Weblog</description>
	<lastBuildDate>Tue, 30 Mar 2010 21:15:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CodeIgniter ModRewrite for Dreamhost</title>
		<link>http://gabrieljones.com/codeigniter-modrewrite-for-dreamhost/</link>
		<comments>http://gabrieljones.com/codeigniter-modrewrite-for-dreamhost/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 17:16:06 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[dreamhost]]></category>

		<guid isPermaLink="false">http://gabrieljones.com/?p=189</guid>
		<description><![CDATA[Recently I began diving head first into CodeIgniter, a PHP MVC framework. During the installation process I ran into a major problem with URL rewriting within the CodeIgniter environment and Dreamhost.
CodeIgniter provides an .htaccess solution to create friendly URLs. Which in most cases works very well. However, with Dreamhost this solution does not work. The [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I began diving head first into <a href="http://codeigniter.com/">CodeIgniter</a>, a PHP MVC framework. During the installation process I ran into a major problem with URL rewriting within the CodeIgniter environment and Dreamhost.</p>
<p>CodeIgniter provides an <a href="http://codeigniter.com/user_guide/general/urls.html">.htaccess solution</a> to create friendly URLs. Which in most cases works very well. However, with Dreamhost this solution does not work. The follow is what your .htaccess file should look like.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">DirectoryIndex index.php
<span style="color: #000000; font-weight: bold;">&lt;</span>IfModule mod_rewrite.c<span style="color: #000000; font-weight: bold;">&gt;</span>
    RewriteEngine On
    RewriteBase <span style="color: #000000; font-weight: bold;">/</span>
    RewriteCond <span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>REQUEST_FILENAME<span style="color: #7a0874; font-weight: bold;">&#125;</span> <span style="color: #000000; font-weight: bold;">!</span>-f
    RewriteCond <span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>REQUEST_FILENAME<span style="color: #7a0874; font-weight: bold;">&#125;</span> <span style="color: #000000; font-weight: bold;">!</span>-d
    RewriteRule ^<span style="color: #7a0874; font-weight: bold;">&#40;</span>.<span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>$ <span style="color: #000000; font-weight: bold;">/</span>index.php?<span style="color: #000000; font-weight: bold;">/</span>$<span style="color: #000000;">1</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>L,QSA<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">&lt;/</span>IfModule<span style="color: #000000; font-weight: bold;">&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;</span>IfModule <span style="color: #000000; font-weight: bold;">!</span>mod_rewrite.c<span style="color: #000000; font-weight: bold;">&gt;</span>
    ErrorDocument <span style="color: #000000;">404</span> <span style="color: #000000; font-weight: bold;">/</span>index.php
<span style="color: #000000; font-weight: bold;">&lt;/</span>IfModule<span style="color: #000000; font-weight: bold;">&gt;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://gabrieljones.com/codeigniter-modrewrite-for-dreamhost/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Chirp</title>
		<link>http://gabrieljones.com/chirp/</link>
		<comments>http://gabrieljones.com/chirp/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 17:08:58 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[download]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[themes]]></category>

		<guid isPermaLink="false">http://gabrieljones.com/?p=179</guid>
		<description><![CDATA[Chirp is a Twitter inspired Wordpress Photoblog/Videoblog. Style specifically for the use of photos, videos, and brief descriptions of them.
Install Instructions

Download and Install Chirp
Go to Chirp Admin and fill in your Twitter information
Enjoy!

Chirp How-to


To post an image:

Add image to media library
Use Add an Image icon in Add New Post console



To post a video:

Use Add Video [...]]]></description>
			<content:encoded><![CDATA[<p>Chirp is a Twitter inspired Wordpress Photoblog/Videoblog. Style specifically for the use of photos, videos, and brief descriptions of them.<img src="http://gabrieljones.com/wp-content/uploads/2010/03/chirp-snapshot.jpg" title="Jelly Fish" /></p>
<p><h3>Install Instructions</h3>
<ul>
<li>Download and Install Chirp</li>
<li>Go to Chirp Admin and fill in your Twitter information</li>
<li>Enjoy!</li>
</ul>
<p><h3>Chirp How-to</h3>
<ul>
<li>
<span>To post an image:</span></p>
<ol>
<li>Add image to media library</li>
<li>Use Add an Image icon in Add New Post console</li>
</ol>
</li>
<li>
<span>To post a video:</span></p>
<ol>
<li>Use Add Video icon in Add New Post console</li>
</ol>
</li>
<li>
<span>To add descriptions to image or video</span></p>
<ol>
<li>Simply add your text to the excerpt field</li>
</ol>
</li>
</ul>
<p><h3>Download</h3>
<div class="download"><a class="round" href="http://gabrieljones.com/?dl_id=14" alt="Download Chirp 0.9">Download Chirp 0.9</a></div>
</p>
<p><br/><br />
<strong>Please read:</strong> If there is interest in Chirp, I will continue development and take any requests for upgrades.</p>
]]></content:encoded>
			<wfw:commentRss>http://gabrieljones.com/chirp/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>TweetPress</title>
		<link>http://gabrieljones.com/tweetpress/</link>
		<comments>http://gabrieljones.com/tweetpress/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 04:48:28 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[download]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://gabrieljones.com/?p=128</guid>
		<description><![CDATA[TweetPress is available for download. Currently it is 2.5.5 and available only for Wordpress. Now supporting WPMU!]]></description>
			<content:encoded><![CDATA[<h3>TweetPress 2.5.5</h3>
<p>TweetPress 2.5.5 is the newest revision of TweetPress. Now supporting WPMU! Simply fill in your Twitter &#038; Feedburner information in the Twitter Admin Console under Appearance in your Wordpress admin console.</p>
<p>TweetPress has been downloaded 10,000+ times!</p>
<p>TweetPress 2.5.5 has cleaner code and is better for the environment (Twitter&#8217;s environment) with far fewer service calls, as much of the data is cached on your server.</p>
<p><img src="http://gabrieljones.com/wp-content/uploads/2010/02/tweetpress-status.gif" width="492" height="190" alt="TweetPress Status" /></p>
<h4>Requirements</h4>
<ul>
<li><a target="_blank" href="http://wordpress.org/download/">Wordpress</a> 2.8+</li>
<li>cURL installed</li>
<li>PHP4, but PHP5 is recommended</li>
<li><a target="_blank" href="http://twitter.com/">Twitter</a> account</li>
</ul>
<h4>Install Instructions</h4>
<ol>
<li>Upload Tweetpress to themes directory &#038; activate</li>
<li>Go to &#8216;TweetPress Admin&#8217; under Appearance</li>
<li>Fill in your information and save. Viola!</li>
</ol>
<h4>Download Current Release</h4>
<div class="download"><a class="round" href="http://gabrieljones.com/?dl_id=13" alt="Download TweetPress 2.5.5">Download TweetPress 2.5.5</a></div>
<p><strong>Update Mar 6, 2010: </strong>Now supporting WPMU! Updated comments display, now shows most recent comments first, max 10, will display a Show all comments link if more than 10 comments. Added View all to followers sidebar section. Thoroughly cleaned up code.</p>
]]></content:encoded>
			<wfw:commentRss>http://gabrieljones.com/tweetpress/feed/</wfw:commentRss>
		<slash:comments>132</slash:comments>
		</item>
		<item>
		<title>TweetPress: Twitter Style Wordpress Theme</title>
		<link>http://gabrieljones.com/tweetpress-twitter-style-wordpress-theme/</link>
		<comments>http://gabrieljones.com/tweetpress-twitter-style-wordpress-theme/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 20:33:56 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[download]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://gabrieljones.com/?p=101</guid>
		<description><![CDATA[TweetPress - Wordpress Theme. Version 1 is no longer supported. Go to http://gabrieljones.com/tweetpress for the latest releases]]></description>
			<content:encoded><![CDATA[<h4>TweetPress 1 Alpha is no longer being supported, please go to <a href="http://gabrieljones.com/tweetpress">http://gabrieljones.com/tweetpress</a> and download the latest version.<br />
<h4>
]]></content:encoded>
			<wfw:commentRss>http://gabrieljones.com/tweetpress-twitter-style-wordpress-theme/feed/</wfw:commentRss>
		<slash:comments>55</slash:comments>
		</item>
		<item>
		<title>Review: Maxtor Central Axis</title>
		<link>http://gabrieljones.com/maxtor-central-axis-review-seagate-customer-service/</link>
		<comments>http://gabrieljones.com/maxtor-central-axis-review-seagate-customer-service/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 19:30:46 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[hardware]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://gabrieljones.com/?p=36</guid>
		<description><![CDATA[My experience with this product is not pleasing. I purchased this NAS drive from Best Buy May 11, 2009, and it promptly died October 28, 2009. I had over 400 GB of music and movies that I had ripped from my DVD and CD collections. 
When it worked, the streaming was relatively slow, partially blame [...]]]></description>
			<content:encoded><![CDATA[<p>My experience with this product is not pleasing. I purchased this NAS drive from Best Buy May 11, 2009, and it promptly died October 28, 2009. I had over 400 GB of music and movies that I had ripped from my DVD and CD collections. </p>
<p>When it worked, the streaming was relatively slow, partially blame that on my router, but the drive type is not RAID, thusly slower access and slower streaming. The file crawling and &#8216;caching&#8217; was extremely slow, it took up to 30 minutes for the UPnP or DLNA servers to pick up new files. I would often convert my DVDs to 1GB mp4 videos, and Central Axis had a very hard time streaming it for anything longer than 2 minutes. I eventually would simply copy the video files over to my PS3 and watch them locally from there. If I tried to either read or write to/from Central Axis with more than one computer/peripheral, it would become extremely slow, and sometimes halt. And this was when it was <strong>working</strong>!</p>
<p>Now that Central Axis has died on me, in less than 6 months from the date of purchase, I am having to figure out ways to pull the data off the drive myself, without voiding warranty of course. Seagate wants $250+ to recover my data. Seriously? And Best Buy, they are useless, their motto is, &#8220;After 14 days when we sell it to you, we can&#8217;t help you, sorry.&#8221;</p>
<p>Listen, I&#8217;ll just get to the point. Do <strong>NOT</strong> buy the Maxtor Central Axis NAS drive. Do <strong>NOT</strong> purchase products from Seagate, unless you do thorough research before, their service and return policies are <strong>aweful</strong>! I have to pay to send the defective product back, so they can send me a refurbished model. Seriously?</p>
<p>As a side note: Best Buy employees are morons. Total utter morons. Do not seek their advice, they will likely point you in the wrong direction. And <strong>if</strong> they have in the past, they got lucky! </p>
]]></content:encoded>
			<wfw:commentRss>http://gabrieljones.com/maxtor-central-axis-review-seagate-customer-service/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Order Posts by Meta Value Numbers in Wordpress</title>
		<link>http://gabrieljones.com/order-posts-by-meta-value-numbers-in-wordpress/</link>
		<comments>http://gabrieljones.com/order-posts-by-meta-value-numbers-in-wordpress/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 01:13:09 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://gabrieljones.com/?p=31</guid>
		<description><![CDATA[The following changes work on Wordpress version 2.8.*, prior version will need a slightly different change.
A brief background first. I needed to have a page in which my posts were ordered by the meta_values to a particular meta_key. By default meta_value is LONGTEXT data in mysql, therefore we are unable to order posts by meta_value [...]]]></description>
			<content:encoded><![CDATA[<p>The following changes work on Wordpress version 2.8.*, prior version will need a slightly different change.</p>
<p>A brief background first. I needed to have a page in which my posts were ordered by the meta_values to a particular meta_key. By default meta_value is LONGTEXT data in mysql, therefore we are unable to order posts by meta_value NUMBERS. To force mysql to return the meta_value entry as a NUMBER, we must pass a query like this: &#8216;meta_value+0&#8242;.</p>
<p>I set my custom page up to run a query_posts.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">query_posts<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'meta_key=views&amp;amp;orderby=meta_value_number&amp;amp;order=DESC'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Then use The Loop as normal.</p>
<p>Inside query.php I did the following:<br />
Goto line ~2035, add below</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$allowed_keys</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'meta_value_number'</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Goto line ~2057, after case break, add below</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #0000ff;">'meta_value_number'</span><span style="color: #339933;">:</span>
<span style="color: #000088;">$orderby</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$wpdb</span>-&amp;gt;postmeta.meta_value+0&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Thats it! You can now pull posts ordered by meta_value NUMBERS!!</p>
<p>Remember that this method only works in 2.8.*, if you have an earlier version and would like to figure it out, or have a solution, please feel free to comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://gabrieljones.com/order-posts-by-meta-value-numbers-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Optimal Handbrake Settings For A Media Library</title>
		<link>http://gabrieljones.com/optimal-handbrake-settings-for-a-media-library/</link>
		<comments>http://gabrieljones.com/optimal-handbrake-settings-for-a-media-library/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 00:33:34 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[mac]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[dvd]]></category>
		<category><![CDATA[handbrake]]></category>
		<category><![CDATA[mp4]]></category>

		<guid isPermaLink="false">http://gabrieljones.com/?p=28</guid>
		<description><![CDATA[So let me start by stating that Handbrake settings are not an exact science, as perception of quality varies from person to person. Along with that, optimal Handbrake settings, using the term loosely, also varies from application to application. Settings for output to an iPhone or iPod will differ greatly with settings for output to AppleTV or PS3.]]></description>
			<content:encoded><![CDATA[<p>So let me start by stating that Handbrake settings are not an exact science, as perception of quality varies from person to person. Along with that, optimal Handbrake settings, using the term loosely, also varies from application to application. Settings for output to an iPhone or iPod will differ greatly with settings for output to AppleTV or PS3.</p>
<p>One quick note before we move on to the settings; if at all possible, use a Mac to convert or rip your videos, as the PC version of Handbrake is inferior. I must admit, this may be due to the processors my laptops possess, but in general I have noticed I get quicker and better quality conversions on my Mac. Ok, now on to the settings.</p>
<p><strong>Specs:</strong></p>
<p>IBM ThinkPad T60p, 2.16Ghz, 2GB RAM, Windows XP SP2<br />
MacBook Pro, 2.5Ghz, 2GB RAM, OS X 10.5.6<br />
MacBook, 2.2Ghz, 1GB RAM, OS X 10.5.6</p>
<p><strong>Settings:</strong></p>
<p>Video settings are as follows: extension is .mp4, video codec is H.264, framerate is usually same as source, unless I have to rip a double DVD, in which case I use 23.976, I use average bitrate of 1400 kbps, and I usually try to use Anamorphic Loose, but this totally depends on the source.</p>
<p><img class="alignnone size-medium wp-image-27" title="hb-video-settings" src="http://gabrieljones.com/wp-content/uploads/2009/02/hb-video-settings-300x90.gif" alt="hb-video-settings" width="300" height="90" /></p>
<p>Audio settings are as follows: source is AC3 5.1 if possible, audio codec is AAC while mixdown is usually Dolby Pro Logic II, samplerate is either Auto or 48, and bitrate is 160, try to always use higher settings on the samplerate and bitrate, you wont regret it later.</p>
<p><img class="alignnone size-medium wp-image-26" title="hb-audio-settings" src="http://gabrieljones.com/wp-content/uploads/2009/02/hb-audio-settings-300x46.gif" alt="hb-audio-settings" width="300" height="46" /></p>
<p>Advanced settings are as follows: reference frames are set to 3 or 4, depending on source, mixed references is checked, b-frames is set to 4, (5+ for animations) and weighted b-frames is checked, subpixel motion estimation is 8 or 9, depending on source, analysis is set to all, deblocking is set to -2,-1, and trellis is set to 1 or 2, depending on source, all other settings are default.</p>
<p><img class="alignnone size-medium wp-image-25" title="hb-advanced-settings" src="http://gabrieljones.com/wp-content/uploads/2009/02/hb-advanced-settings-300x130.gif" alt="hb-advanced-settings" width="300" height="130" /></p>
<p>These settings are great for my needs, which are: converting my 500+ DVD library to stored digital media on my NAS, which I play back through my PS3 on my 50&#8243; Samsung 1080p plasma TV. Generally these settings produce a 1.5GB video from a 2 hour DVD. An example output: Braveheart was ripped in 2 hours 30 min on my MacBook Pro, and it produced a high quality video at 2.03GB file. I hardly see a difference on my TV.</p>
<p>What&#8217;s nice about these settings is that later on down the road when I want to convert these to iPod or iPhone compatible format, I will have little to modify, and my convert times will be cut dramatically.</p>
<p>And <strong>always </strong>remember, you can step down in quality, but never step up.</p>
]]></content:encoded>
			<wfw:commentRss>http://gabrieljones.com/optimal-handbrake-settings-for-a-media-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 Essential Firefox Add-ons for Developers</title>
		<link>http://gabrieljones.com/10-essential-firefox-add-ons-for-developers/</link>
		<comments>http://gabrieljones.com/10-essential-firefox-add-ons-for-developers/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 06:34:46 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[resource]]></category>

		<guid isPermaLink="false">http://gabrieljones.com/?p=38</guid>
		<description><![CDATA[It's pretty clear by now what browser is most widely used by all web developers, Mozilla Firefox. Though it is far from the most widely used browser, that title is held by our friends at Microsoft and its Internet Explorer, it is definitely the first tool in a web developers toolbox.]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s pretty clear by now what browser is most widely used by all web developers, Mozilla Firefox. Though it is far from the most widely used browser, that title is held by our friends at Microsoft and its Internet Explorer. It is definitely the first tool in a web developers toolbox. The Mozilla Foundation has done a fantastic job in creating a browser with the developers and technically savvy individuals in mind, keeping with W3 standards and providing a feature rich browser. Firefox by itself is a fantastic tool and, in recent years, a far superior browser, but we can make it so much more, and provide a more pleasing work environment for the everyday web developer. Here are a list of popular and essential Firefox add-ons that I recommend.</p>
<h3><a href="http://getfirebug.com/">Firebug</a></h3>
<p>This is pretty much the most widely used and most favored add-ons that is provided for Firefox and is absolutely essential for JavaScript development. Firebug&#8217;s HTML and CSS inspector is both clean and intuitive as well as interactive, giving the developer the ability to make temporary changes live in the browser.</p>
<h3><a href="http://chrispederick.com/work/web-developer/">Web Developer Toolbar</a></h3>
<p>If Firebug is not the single most favored and most widely used add-on, WDT probably is. No web developer should be without it, in fact, most developers, quality assurance engineers, project managers, designers, and managers should not be without this tool. Combined with Firebug, WDT makes for a killer combination that can handle 99% of anything required in developing an application, besides the design and code of course.</p>
<h3><a href="http://livehttpheaders.mozdev.org/">Live HTTP Headers</a></h3>
<p>This is another one of the essential tools highly recommended by developers, especially for those who require intimate knowledge of the header requests and responses. For those of you who develop client code for RESTful services this tool is a must have, giving you the ability to view details on requests and their responses without having to run traces or logs.</p>
<h3><a href="http://karmatics.com/aardvark/">Aardvark</a></h3>
<p>Now this add-on was part of my toolbox prior to the lethal combination I mentioned earlier, though I use it far less now, I still consider it an essential tool for many. It&#8217;s a little faster in getting to the information you need, providing a point and view experience. One could argue that this is no longer a favored tool amongst developers, I would say that it is still necessary, providing a faster way of interacting with the web page than Firebug or WDT.</p>
<h3><a href="https://addons.mozilla.org/en-US/firefox/addon/5809">Firefox Accessibility Extension</a></h3>
<p>Prior to last year, I&#8217;ve never focused on accessibility for web applications outside the Flash/Flex environment. After working with an enterprise level portal application in which many thousands of individuals require access to information, with a percentage having disabilities making it more difficult to get to that information, I can easily say that accessibility conformity is one of those requirements very difficult to achieve. FAE makes it just a little easier to develop for those specifications.</p>
<h3><a href="https://addons.mozilla.org/en-US/firefox/addon/1146">Screengrab!</a></h3>
<p>The name is self explanatory, it takes screen shots of web pages and can even provide timestamps. Especially useful for those who need to illustrate an explanation they are trying to convey. Ever since I gave up on Sametime, which had a built in screen grab, and moved over to Adium I required a tool that allowed me the same convenience of screen capture quickly and conveniently.</p>
<h3><a href="https://addons.mozilla.org/en-US/firefox/addon/3469">FlashTracer</a></h3>
<p>When working in the Flash/Flex environments, I would say this is an essential tool, a must have, providing you with a trace output within the browser. Prior to this add-on, I used my own standalone Flash trace output which worked great, but now stick with a more condensed workspace.</p>
<h3><a href="https://addons.mozilla.org/en-US/firefox/addon/1419">IE Tab</a></h3>
<p>I wish I could say I didn&#8217;t need this and that you don&#8217;t need this, but I can&#8217;t. IE is a fact of life all web developers are required to deal with. With this add-on however, you are able to take that IE icon from your quick link bar and your start menu bar so not further damage your eyes. (Sarcasm, I actually don&#8217;t hate IE, I just use it far less than Firefox and Chrome.) One draw back is that this is a Windows only add-on, unless you workaround the Linux and Mac environments.</p>
<h3><a href="http://www.firephp.org/">FirePHP</a></h3>
<p>FirePHP is not essential for <strong>all</strong> web developers, just those who work in PHP. If that is you, this add-on is essential, or at the very least, a convenient tool. It&#8217;s basically a logging tool for PHP, like Firebug is for JavaScript and FlashTracer is for Flash and Flex.</p>
<h3><a href="http://www.greasespot.net/">Greasemonkey</a></h3>
<p>This is another add-on that is not essential for every developer, but many find it so. Greasemonkey gives the user the ability to change the look, feel, and function of web sites and application live. This is especially useful for those working in agile development environments.</p>
]]></content:encoded>
			<wfw:commentRss>http://gabrieljones.com/10-essential-firefox-add-ons-for-developers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JavaScript Optimization for Page Load Performance</title>
		<link>http://gabrieljones.com/javascript-optimization-for-page-load-performance/</link>
		<comments>http://gabrieljones.com/javascript-optimization-for-page-load-performance/#comments</comments>
		<pubDate>Mon, 27 Aug 2007 14:41:02 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://gabrieljones.com/javascript-optimization-for-page-load-performance/</guid>
		<description><![CDATA[Using techniques like validation, obfuscation, and compression can result in significant decreases in file size, sometimes 50 to 75 percent. Combine that with several other non-pragmatic methods, dramatic improvements in page load performance can be realized.
Care for JavaScript
Building and developing frameworks along with following web standards and some form of a design pattern will help [...]]]></description>
			<content:encoded><![CDATA[<p>Using techniques like validation, obfuscation, and compression can result in significant decreases in file size, sometimes 50 to 75 percent. Combine that with several other non-pragmatic methods, dramatic improvements in page load performance can be realized.</p>
<h4>Care for JavaScript</h4>
<p>Building and developing frameworks along with following web standards and some form of a design pattern will help combat against careless coding. Another artifact of building a framework will be more rapid development times and more cohesive packages. At the time of this writing the de facto example of a JavaScript framework is <a href="http://www.prototypejs.org/">prototype</a> which is protected under open source licenses; MIT and CC-SA (Creative Commons – Share Alike). Caring for the JavaScript also means caring for the HTML it will be run in. Avoid JavaScript only methods that cause the browser to render abnormally, have your code degrade gracefully, if a browser is not JavaScript enabled.</p>
<h4>Be Patient with JavaScript</h4>
<p>Sometimes it is not necessary to load all the JavaScript in the head of the document or the body onload event. Do not make it standard practice to place all code at the beginning; rather look closely at what code could be placed at the end of the document, at the beginning, or when the page has completely loaded. Delay loading of JavaScript whenever possible, being patient with it will make your browser very happy. And remember to load only what you need. Why load code that is not necessary for the page?</p>
<h4>Put JavaScript on a Diet</h4>
<p>Once the code is written and the unexpected features have been fixed, you are ready to place your JavaScript on a diet. Remove excess whitespace and comments, use semicolons to break lines in code, and abbreviate variable and object names. This process can be done manually or automatically with vendor packages. Two resources for automatically reducing the JavaScript file size are <a href="http://www.brainjar.com/js/crunch/">JavaScript Crunchinator</a> and <a href="http://www.saltstorm.net/depo/esc/">ESC</a>. Remember to always backup your files before placing it on a diet. To potentially further reduce file size and keep prying eyes from easily reading the source, using an obfuscation tool is recommended. <a href="http://ajaxian.com/archives/utility-javascript-obfuscator">Here</a> is an example of one such tool, you can find many more on the interweb.</p>
<h4>Have JavaScript Files Carpool</h4>
<p>Roughly 80% of the users’ response time is spent of the client-side. The greater number of JavaScript resources needed in turn produces a greater number of HTTP requests needed. A way to reduce the number of requests is to combine the JavaScript files to a single script. The fewer number of HTTP requests used, the better response time the user will observe.</p>
]]></content:encoded>
			<wfw:commentRss>http://gabrieljones.com/javascript-optimization-for-page-load-performance/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Writing Good XHTML</title>
		<link>http://gabrieljones.com/the-perfect-xhtml/</link>
		<comments>http://gabrieljones.com/the-perfect-xhtml/#comments</comments>
		<pubDate>Wed, 23 May 2007 02:29:45 +0000</pubDate>
		<dc:creator>Gabriel</dc:creator>
				<category><![CDATA[html]]></category>
		<category><![CDATA[xhtml]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://gabrieljones.com/?p=14</guid>
		<description><![CDATA[A recent project has forced me to take a closer look at how valid HTML code really is.  My task was to improve performance, validate, and standardize the code.  In later articles I will discuss my research, development, and conclusions to improving the company&#8217;s site performance.  But for now, I am going [...]]]></description>
			<content:encoded><![CDATA[<p>A recent project has forced me to take a closer look at how valid HTML code really is.  My task was to improve performance, validate, and standardize the code.  In later articles I will discuss my research, development, and conclusions to improving the company&#8217;s site performance.  But for now, I am going to focus on how to write the perfect XHTML document.</p>
<p>XHTML is a set of document types that reproduce and extend HTML 4, are XML based, and are designed to work with both XML-based and HTML-based user agents.  That is, XHTML must conform not only to HTML standards, but conform strictly to XML standards as well.</p>
<p>The differences in HTML and XHTML are strict conformity.  A best practice for both standard HTML and XHTML is to conform to one of three DTD&#8217;s, Strict, Transitional, or Frameset, and to declare the DOCTYPE. Which can be written as follows:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&amp;lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&amp;gt;</pre></td></tr></table></div>

<p>The root element of the document <strong>must</strong> be <em>html</em>, and <strong>must</strong> contain the XML namespace (<em>xmlns</em>) declaration.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&amp;gt;</pre></td></tr></table></div>

<p>According to W3C, its a good idea to have an xml declaration, but it is not required.  I personally leave xml declarations for xml only documents.</p>
<p>As said earlier, the major difference between HTML and XHTML is strict conformity, the documents <strong>must</strong> be well-formed. Elements must be properly nested.</p>
<p><span style="color: green">Correctly</span> nested element:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&amp;lt;p&amp;gt;Lorem ipsum dolor sit amet, &amp;lt;i&amp;gt;consectetuer&amp;lt;/i&amp;gt; adipiscing elit.&amp;lt;/p&amp;gt;</pre></td></tr></table></div>

<p><span style="color: red">Incorrecly</span> nested element:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&amp;lt;p&amp;gt;Lorem ipsum dolor sit amet, &amp;lt;i&amp;gt;consectetuer adipiscing elit.&amp;lt;/p&amp;gt;&amp;lt;/i&amp;gt;</pre></td></tr></table></div>

<p>Because XHTML is interpreted as XML documents, all tags must be lowercase, because XML is case-sensitive. This also pertains to tag attributes as well.  It is best practice to create all markup language in lowercase whenever possible.</p>
<p><span style="color: green">Correct</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&amp;lt;strong&amp;gt;Hello World&amp;lt;/strong&amp;gt;</pre></td></tr></table></div>

<p><span style="color: red">Incorrect</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&amp;lt;STRONG&amp;gt;Hello World&amp;lt;/STRONG&amp;gt;</pre></td></tr></table></div>

<p>XML does not allow end tags to be omitted, thus, all non-empty tags <strong>must</strong> be closed.  If an element is empty, it must be properly closed. The only tag that does not close is the DOCTYPE declaration as it is not part of the XHTML document.</p>
<p><span style="color: green">Good</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&amp;lt;br /&amp;gt;</pre></td></tr></table></div>

<p><span style="color: red">Bad</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&amp;lt;br&amp;gt;</pre></td></tr></table></div>

<p>All attribute values <strong>must</strong> be contained in quotes and minimized attributes are unsupported.</p>
<p><span style="color: green">Good</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&amp;lt;input checked=&quot;checked&quot; type=&quot;checkbox&quot; /&amp;gt;</pre></td></tr></table></div>

<p><span style="color: red">Bad</span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&amp;lt;input checked type=checkbox /&amp;gt;</pre></td></tr></table></div>

<p>It is best practice to wrap your script content in CDATA elements to avoid parsing of HTML markup such as <span style="color: green">&lt;</span> and <span style="color: green">&amp;</span>.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
&amp;lt; ![CDATA[
// script content here
]]&amp;gt;
&amp;lt;/script&amp;gt;</pre></td></tr></table></div>

<p>The <strong>id</strong> attribute is replacing the <strong>name</strong> attribute in future versions of XHTML.  Currently it is best practice to have both named attributes of the same value until future releases of XHTML where then it will be best practice to remove the <strong>name</strong> attribute all together.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&amp;lt;form id=&quot;commentform&quot; name=&quot;commentform&quot; method=&quot;post&quot;&amp;gt;&amp;lt;/form&amp;gt;</pre></td></tr></table></div>

<p>Today it is standard to have alt tags for images, objects, and buttons. However, not all browsers support the alt attribute, so title is used instead.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&amp;lt;img src='image.jpg' title='My Image' /&amp;gt;</pre></td></tr></table></div>

<p>As long as you follow these standards throughout your entire document you will have a valid XHTML document.</p>
]]></content:encoded>
			<wfw:commentRss>http://gabrieljones.com/the-perfect-xhtml/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
