<?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>The Website Tailor</title>
	<atom:link href="http://www.thewebsitetailor.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thewebsitetailor.com</link>
	<description>Perry Trinier</description>
	<lastBuildDate>Thu, 01 Apr 2010 04:46:53 +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>Quickly and easily do a large commit from Vim</title>
		<link>http://www.thewebsitetailor.com/2010/03/quickly-and-easily-do-a-large-commit-from-vim/</link>
		<comments>http://www.thewebsitetailor.com/2010/03/quickly-and-easily-do-a-large-commit-from-vim/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 04:46:40 +0000</pubDate>
		<dc:creator>Perry</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.thewebsitetailor.com/?p=100</guid>
		<description><![CDATA[Today at work I figured out a quick way of doing a large commit from Vim. I hope that other Vimmers can use this tip! First, use the vim :read command, using the external command for subversion status as input: :r ! svn st Look through the list and delete the lines with files you [...]]]></description>
			<content:encoded><![CDATA[<p>Today at work I figured out a quick way of doing a large commit from Vim. I hope that other Vimmers can use this tip!</p>
<p>First, use the vim <strong>:r</strong>ead command, using the external command for subversion status as input: <code>:r ! svn st</code><br />
<a href="http://www.thewebsitetailor.com/wp-content/uploads/running-svn-st.png"><img src="http://www.thewebsitetailor.com/wp-content/uploads/running-svn-st.png" alt="" title="running-svn-st" width="600" height="322" class="aligncenter size-full wp-image-103" /></a></p>
<p>Look through the list and delete the lines with files you don&#8217;t want to commit, with <code>dd</code>.</p>
<p>When only files which you plan to commit are left in the buffer, run <code>gg &lt;C-V&gt; G w d</code> to delete the status column.<br />
<a href="http://www.thewebsitetailor.com/wp-content/uploads/visual-block-select.png"><img src="http://www.thewebsitetailor.com/wp-content/uploads/visual-block-select.png" alt="" title="visual-block-select" width="600" height="322" class="aligncenter size-full wp-image-102" /></a></p>
<p>Next, enter visual mode and select all the lines and join them: <code>gg &lt;S-V&gt; G &lt;S-J&gt;</code><br />
<a href="http://www.thewebsitetailor.com/wp-content/uploads/select-all-join.png"><img src="http://www.thewebsitetailor.com/wp-content/uploads/select-all-join.png" alt="" title="select-all-join" width="600" height="322" class="aligncenter size-full wp-image-104" /></a></p>
<p>Yank this line ( <code>yy</code> ), then run the external command <code>:! svn ci &lt;C-R&gt;" -m 'Your log msg here'</code>. Typing Ctrl+R and &#8221; will expand to the last register that you yanked.<br />
<a href="http://www.thewebsitetailor.com/wp-content/uploads/svn-ci.png"><img src="http://www.thewebsitetailor.com/wp-content/uploads/svn-ci.png" alt="" title="svn-ci" width="600" height="322" class="aligncenter size-full wp-image-107" /></a></p>
<p>That&#8217;s all! It&#8217;s not very difficult, and it made the process of doing my commits much more efficient. Let me know in the comments if it helped you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thewebsitetailor.com/2010/03/quickly-and-easily-do-a-large-commit-from-vim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lifehacker featured my userscript!</title>
		<link>http://www.thewebsitetailor.com/2010/02/lifehacker-featured-my-userscript/</link>
		<comments>http://www.thewebsitetailor.com/2010/02/lifehacker-featured-my-userscript/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 04:14:28 +0000</pubDate>
		<dc:creator>Perry</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.thewebsitetailor.com/?p=91</guid>
		<description><![CDATA[I was pleasantly surprised this week to discover that Lifehacker featured my Remove Gallery Links userscript on Dec. 3rd, 2009. I guess this explains why today when I checked on this script for the first time since I created it on Oct. 17, it had over 1600 users. To celebrate, I decided to include the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.thewebsitetailor.com/wp-content/uploads/gawker-no-galleries.jpg"><img src="http://www.thewebsitetailor.com/wp-content/uploads/gawker-no-galleries.jpg" alt="gawker-no-galleries" title="gawker-no-galleries" width="640" height="480" class="aligncenter size-full wp-image-96" /></a><br />
I was pleasantly surprised this week to discover that <a href="http://lifehacker.com/5418072/avoid-lifehackers-gallery-view-with-a-user-script">Lifehacker featured my Remove Gallery Links userscript</a> on Dec. 3rd, 2009. I guess this explains why today when I checked on this script for the first time since I created it on Oct. 17, it had over 1600 users.</p>
<p>To celebrate, I decided to <a href="http://userscripts.org/scripts/show/59965">include the entire Gawker network in the script</a>, something I really should have done in the first place.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thewebsitetailor.com/2010/02/lifehacker-featured-my-userscript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compare before and after photos using CSS Clip and jQuery</title>
		<link>http://www.thewebsitetailor.com/2009/11/compare-before-and-after-photos-using-css-clip-and-jquery/</link>
		<comments>http://www.thewebsitetailor.com/2009/11/compare-before-and-after-photos-using-css-clip-and-jquery/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 04:25:56 +0000</pubDate>
		<dc:creator>Perry</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.thewebsitetailor.com/?p=46</guid>
		<description><![CDATA[UPDATE: Turns out this has already been done! Oh well, I still had fun with it. Last night I followed a link from Reddit to The Berlin Wall: 20 Years Later on the New York Times site. It was an interesting feature, but I thought that the use of Flash to display the before and [...]]]></description>
			<content:encoded><![CDATA[<p>
<p><strong>UPDATE:</strong> <a href="http://www.catchmyfame.com/2009/06/25/jquery-beforeafter-plugin/">Turns out this has already been done!</a> Oh well, I still had fun with it.</a></p>
<p>Last night I followed a link from Reddit to <a href="http://www.nytimes.com/interactive/2009/11/09/world/europe/20091109-berlinwallthennow.html">The Berlin Wall: 20 Years Later</a> on the New York Times site. It was an interesting feature, but I thought that the use of Flash to display the before and after photos was a little bit gratuitous, especially considering that they could make the content accessible to a wider range of user agents (mobile browsers and Google image search come to mind) by using CSS and Javascript.</p>
<span id="more-46"></span>
<p>Here's a demo I put together:</p>
<style type="text/css"> 
    div.imagecompare { width:500px; height:640px; position:relative; }
    div.imagecompare img.after { 
        clip: rect(0px 500px 640px 250px); 
    }
    div.imagecompare .resizer {
       display:none;
       height:640px;
       width:2px;
       position:absolute;
       top:0;
       left: 250px; 
       cursor:col-resize;
       background:#888;
       text-indent:-999em;
    }
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
<script type="text/javascript">
    jQuery(document).ready( function ()
    {
        jQuery('.resizer').draggable({ 
            axis: 'x',
            containment:'parent',
            drag: function(event,ui) 
            {
                jQuery(this).prev('img.after').css('clip','rect(0px 500px 640px '+ui.position.left+'px)');
            }
        }).css('display','block');
        jQuery('.imagecompare img').click(function (event) 
        {
            var imgcompare_offset = jQuery(this).parent().offset();
            var pos = event.pageX - imgcompare_offset.left;
            jQuery(this).parent().find('.resizer').css('left',pos+'px');
            jQuery(this).parent().find('img.after').css('clip','rect(0px 500px 640px '+pos+'px)');
        });
       jQuery('.imagecompare img').css({
            position: 'absolute',
            top: 0,
            left: 0 
        });

        jQuery('.imagecompare img:last').addClass('after');
        
    });
</script> 
<div class="imagecompare"> 
        <img src="/wp-content/uploads/clip_img_1.jpg" alt="Before photo shows model with frizzy hair" /> 
        <img src="/wp-content/uploads/clip_img_2.jpg" alt="After photo shows manageable (but greasy-looking) hair" /> 
        <a class="resizer">If your browser supports it, drag the handle in the middle to compare the two photos</a>
</div>

<h3>If you'd like to experiment with this yourself, here's how:</h3>

<ol>
<li>Include jQuery and jQuery UI. I like to use the <a href="http://code.google.com/apis/ajaxlibs/documentation/#jquery">libraries hosted by Google</a>.</li>
<li>Here is the markup - beats the hell out of Flash embed code!
<pre><code class="html">
&lt;div class=&quot;imagecompare&quot;&gt;
    &lt;img src=&quot;clip_img_1.jpg&quot; alt=&quot;Before photo shows model with frizzy hair&quot; /&gt;
    &lt;img src=&quot;clip_img_2.jpg&quot; alt=&quot;After photo shows manageable (but greasy-looking) hair&quot; /&gt;
    &lt;a class=&quot;resizer&quot;&gt;If your browser supports it, drag the handle in the middle to compare the two photos&lt;/a&gt;
&lt;/div&gt;
</code></pre>
</li>
<li>Here is the CSS. In a nutshell, we position the images on top of one another and then set the <a href="http://www.ibloomstudios.com/articles/misunderstood_css_clip/" title="This is the best article I found re: CSS clip">CSS clip property</a> of the 'after' image. However, we apply most of the styles by adding classes using jQuery, so that if javascript is disabled the images can be seen in all their unclipped, static-positioned glory. Some CSS is also applied to the <code>a.resizer</code> to position it in the middle of our container, set the cursor style and set an extreme negative text-indent to hide the content of the link.
<pre><code class="css">
div.imagecompare { width:500px; height:640px; position:relative; }
div.imagecompare img.after { 
   clip: rect(0px 500px 640px 250px); /* use spaces instead of commas so it works in IE */
}
div.imagecompare .resizer {
   display:none; /* our JS will set this to block */
   height:100%;
   width:2px;
   position:absolute;
   top:0;
   left: 250px;
   cursor:col-resize;
   background:#888;
   text-indent:-999em;
}
</code></pre>
</li>
<li>The jQuery is pretty straightforward, because <a href="http://docs.jquery.com/UI/API/1.7.2/Draggable">Draggable</a> does most of the work. We set a callback on the 'drag' event, to adjust the clip of the after image when the resizer is dragged. There is also a function that sets the clip and repositions the resizer on click. Finally, we set some styles which are being set by JS because they shouldn't be present if JS is disabled.
<pre><code class="javascript">
jQuery(document).ready( function ()
 {
     /* Init jQuery UI Draggable on the resizer element - see http://docs.jquery.com/UI/API/1.7.2/Draggable */
     jQuery('.resizer').draggable({ 
         axis: 'x',
         containment:'parent',
         drag: function(event,ui) 
         {
             // Set the clip property of the after image on drag
             jQuery(this).prev('img.after').css('clip','rect(0px 500px 640px '+ui.position.left+'px)');
         }
     }).css('display','block');
     jQuery('.imagecompare img').click(function (event) 
     {
         // Get offset of imgcompare div
         var imgcompare_offset = jQuery(this).parent().offset();
         // The position/clip-left value we should use is the X coordinate of the click, minus the offset of the imgcompare container.
         var pos = event.pageX - imgcompare_offset.left;
         // Set the resizer position
         jQuery(this).parent().find('.resizer').css('left',pos+'px');
         // Set the clip
         jQuery(this).parent().find('img.after').css('clip','rect(0px 500px 640px '+pos+'px)');
     });

    /* Set the position of the img elements inside .imgcompare so they will overlap */
    jQuery('.imagecompare img').css({
         position: 'absolute',
         top: 0,
         left: 0 
    });
    
    jQuery('.imagecompare img:last').addClass('after'); // Add after class to the 'after' image
});
</code></pre>
</li>
</ol>

<p>This was my first time working with the CSS clip property. While I was pleasantly surprised that it works in IE6+ and all modern browsers, I was disappointed to learn that it's impossible to set the top, right, bottom and left clip values separately as you can for margin and padding. Instead, you have to reset the whole statement including all four values.</p>

<p>Be sure to leave a comment if you find a use for this code!</p>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thewebsitetailor.com/2009/11/compare-before-and-after-photos-using-css-clip-and-jquery/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Imogen Heap is not Genesee Keevil</title>
		<link>http://www.thewebsitetailor.com/2009/10/imogen-heap-is-not-genesee-keevil/</link>
		<comments>http://www.thewebsitetailor.com/2009/10/imogen-heap-is-not-genesee-keevil/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 04:52:50 +0000</pubDate>
		<dc:creator>Perry</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.thewebsitetailor.com/?p=35</guid>
		<description><![CDATA[There&#8217;s kind of a funny story to go along with this video, and one that I should tell before I forget all about it. On August 31st, the lady and myself were back in my hometown of Burk&#8217;s Falls, Ontario for an intimate Hawksley Workman show in the Towne Theatre, which seats about 150. While [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" style="margin:0 auto"  codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/Ot2m8znbM5M&amp;hl=en&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/Ot2m8znbM5M&amp;hl=en&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>There&#8217;s kind of a funny story to go along with this video, and one that I should tell before I forget all about it. On August 31st, the lady and myself were back in my hometown of Burk&#8217;s Falls, Ontario for an intimate Hawksley Workman show in the Towne Theatre, which seats about 150.</p>
<p>While we were waiting for the show to start, a very tall and distinctively dressed woman, with a particular, familiar hairstyle walked down the aisle past us, and set down a few rows ahead of us. I thought &#8220;that <em>has to be </em>Genesee!&#8221; (my friend and an ex-bassist of my ex-band). It wasn&#8217;t completely outside the realm of possibility that she would be back from Whitehorse visiting her family who live in the area. Since this would be the first time I had seen her in a few years , I was excited about this and tried to stage-whisper her name to try and get her attention. After a few unsuccessful attempts, I started to feel like I was making a scene and I would either have to try again later, or find her after the show.</p>
<p>The show, by the way, was excellent. It was my first time seeing Hawksley with a full band, and the set list was a great cross-section of his catalogue. I was especially happy that he played &#8220;Your Beauty Must Be Rubbing Off On Me,&#8221; but the video of that didn&#8217;t turn out (too much bouncing to good music). At around the halfway point, he announced that he would like to invite a special guest on stage to help out with a song. Surprisingly, the woman I thought was Genesee stood and took to the stage&#8230; It turns out that I was wrong, and as much as I thought they looked alike in a dark theatre, Imogen Heap is not Genesee Keevil.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thewebsitetailor.com/2009/10/imogen-heap-is-not-genesee-keevil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tomboy Notes on the Web and your iPhone</title>
		<link>http://www.thewebsitetailor.com/2008/12/tomboy-notes-on-the-web-iphone/</link>
		<comments>http://www.thewebsitetailor.com/2008/12/tomboy-notes-on-the-web-iphone/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 02:55:43 +0000</pubDate>
		<dc:creator>Perry</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tomboy]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.thewebsitetailor.com/?p=31</guid>
		<description><![CDATA[Yesterday I was backing up my home directory to move everything over to a larger drive and a new install of Ubuntu, and for some reason I was curious which format my Tomboy notes were stored in. When I discovered that the &#8216;.note&#8217; files in  ~/.tomboy/ were XML files, I was excited about the idea [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I was backing up my home directory to move everything over to a larger drive and a new install of Ubuntu, and for some reason I was curious which format my Tomboy notes were stored in. When I discovered that the &#8216;.note&#8217; files in  ~/.tomboy/ were XML files, I was excited about the idea of creating a web interface for Tomboy with PHP.</p>
<p><img class="alignright" style="float: right;" src="http://projects.gnome.org/tomboy/images/tomboy-128.png" alt="" width="128" height="122" />I searched the Tomboy mailing list and browsed around the wiki, and found that I wasn&#8217;t the first person to think of this (of course). I found a blog post about a mockup for <a href="http://automorphic.blogspot.com/2007/08/tomboy-online-mockup.html">Tomboy Online</a>, but this was more of a hosted, social type of app and I was interested in making a standalone script. Also, it was only a concept, and no code exists for it.  In the comments of this article there was a link to <a href="http://code.google.com/p/tomboy-web/">tomboy-web</a>, but it was written in Java, so I couldn&#8217;t really play with it.</p>
<p>Eventually I came across the <a href="http://live.gnome.org/Tomboy/UsageIdeas">shell scripts and PHP of Erik Torsner</a>, which I only needed to tweak slightly in order to use with the fantastic <a href="http://code.google.com/p/iui/">iUI library</a>.</p>
<p>Rather than using shell scripts to sync up, I suggest following the steps outlined in <a href="http://coryg.com/blog/ubuntu/synchronize-tomboy-notes-with-anything/">Synchronize Tomboy Notes with Anything</a>.</p>
<h2>Download / Install</h2>
<ol>
<li><a href="http://www.thewebsitetailor.com/tomboy-notes-iphone.zip">Grab the zip file</a> (<a href="http://www.thewebsitetailor.com/tomboy-iphone-demo/">demo</a>)<a href="http://www.thewebsitetailor.com/tomboy-notes-iphone.zip"><br />
</a></li>
<li>Unzip and upload to your web server BUT not before reading the security warning below.</li>
<li>Put your .note files in the &#8216;note-storage&#8217; directory, either by manually uploading notes every once in a while or (way cooler) following the instructions in <a href="http://coryg.com/blog/ubuntu/synchronize-tomboy-notes-with-anything/">this blog post</a>.</li>
</ol>
<h2>Warning!</h2>
<p>This is only a proof of concept, it&#8217;s a really bad idea to sync your confidential tomboy notes to your webserver. There are no security measures whatsoever. On the other hand, WordPress has an optional &#8216;blog by email&#8217; feature which relies on the obscurity of a secret email address&#8230; if you are going to risk it, place the files in a very obscure directory (named as an md5 hash or similar).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thewebsitetailor.com/2008/12/tomboy-notes-on-the-web-iphone/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>And I thought *I* was a fan of jEdit</title>
		<link>http://www.thewebsitetailor.com/2008/08/and-i-thought-i-was-a-fan-of-jedit/</link>
		<comments>http://www.thewebsitetailor.com/2008/08/and-i-thought-i-was-a-fan-of-jedit/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 02:09:36 +0000</pubDate>
		<dc:creator>Perry</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[jedit]]></category>

		<guid isPermaLink="false">http://www.thewebsitetailor.com/?p=30</guid>
		<description><![CDATA[This guy started a whole blog about jEdit! Until I came across this on Addictomatic, I had no idea that it was possible to write macros for it in Javascript. I&#8217;m looking forward to more macros, tips and tutorials on writing my own jEdit plugins from this blog. Awesome, Dead_Cabbit!]]></description>
			<content:encoded><![CDATA[<p>This guy started a whole <a href="http://jeditorian.blogspot.com/">blog about jEdit</a>!</p>
<p>Until I came across this on <a href="http://addictomatic.com/">Addictomatic</a>, I had no idea that it was possible to write macros for it in Javascript. I&#8217;m looking forward to more macros, tips and tutorials on writing my own jEdit plugins from this blog.</p>
<p>Awesome, <a href="http://deadcabbit.blogspot.com/"><span class="post-author vcard"><span class="fn">Dead_Cabbit</span></span></a><span class="post-author vcard"><span class="fn">!</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thewebsitetailor.com/2008/08/and-i-thought-i-was-a-fan-of-jedit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Professing an Undying Love for jEdit</title>
		<link>http://www.thewebsitetailor.com/2008/06/professing-an-undying-love-for-jedit/</link>
		<comments>http://www.thewebsitetailor.com/2008/06/professing-an-undying-love-for-jedit/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 03:16:44 +0000</pubDate>
		<dc:creator>Perry</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[jedit]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.thewebsitetailor.com/?p=28</guid>
		<description><![CDATA[One of my daily reads, Lifehacker, did a reader poll recently on the best text editors&#8230; I have to say I was pretty much incensed that jEdit wasn&#8217;t even in the running! I&#8217;d been considering eventually writing a post to extol the many virtues of this free, open source, cross-platform and feature packed programmer&#8217;s text [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://upload.wikimedia.org/wikipedia/commons/2/27/JEdit.png" alt="" width="64" height="64" />One of my daily reads, Lifehacker, did a <a href="http://lifehacker.com/385929/best-text-editors">reader poll recently</a> on the best text editors&#8230; I have to say I was pretty much incensed that <a href="http://www.jedit.org">jEdit</a> wasn&#8217;t even in the running!</p>
<p>I&#8217;d been considering eventually writing a post to extol the many virtues of this free, open source, cross-platform and feature packed programmer&#8217;s text editor, but when I saw that it was snubbed in the LH poll, I was sort of inspired to post something in defense of it.</p>
<h3><span id="more-28"></span>What&#8217;s so great about jEdit anyway?</h3>
<p>Rather than focus on technical features (such as native syntax highlighting for <strong>130 languages</strong>) that you could easily read about on the <a href="http://www.jedit.org">official jEdit site</a> or in the <a href="http://en.wikipedia.org/wiki/Jedit">Wikipedia entry</a>, I&#8217;m going to focus on practical reasons why jEdit is enjoyable to use, day to day.</p>
<h4>It&#8217;s very customizable</h4>
<p>jEdit is flexible, and extensible. You can easily modify the interface of the program to your liking by docking and floating panels for your favourite program functions and plugins, as well as customizing the main toolbar (or removing it altogether).</p>
<p>The built-in plugin manager (on the menubar, <em>Plugins &gt; Plugin manager</em>) makes it easy to add new features to the program to customize your editor to your needs.  Whether you prefer a simple text editor with auto-indentation and syntax highlighting, or a full-blown IDE with Subversion integration, sFTP and an IRC client built in, jEdit is a great choice.</p>
<p>Further on the topic of extending the capabilities of jEdit, you can also create macros which can control every aspect of the program (perform editing functions, change the interface, browse files, etc.). You can either do this the user-friendly way (<em>Macros &gt; Record Macro</em>) or if you&#8217;re comfortable with the <a href="http://www.beanshell.org/intro.html">BeanShell</a> scripting language, you can study the <a href="http://www.jedit.org/42docs/api/">jEdit API</a> and write your own. A macro can be assigned to any user-defined keyboard shortcut, and as a matter of fact, <strong>any feature of jEdit</strong> (and most plugins) can also be set to a custom shortcut. (<em><strong>Tip:</strong> when using the BufferTabs plugin, you may find it convenient to set up your keyboard shortcuts for buffer switching, closing, new tab , etc. to be the same as Firefox</em>)</p>
<p>Once you&#8217;ve taken the time to get things exactly the way you like them in jEdit, you might wonder whether there is any way for you to export these settings, so that you can avoid this lengthy <span style="text-decoration: line-through;">ordeal</span> process in the future&#8230;</p>
<h4>It&#8217;s cross-platform and portable</h4>
<p>jEdit stores all settings, macros, plugins, configuration options, etc. in a <a href="http://jedit.org/users-guide/settings-directory.html">settings directory</a> located in <code>~/.jedit</code> , where <code>~</code> is the user&#8217;s home directory (in my case it&#8217;s <code>C:\Documents and Settings\Perry</code>). Exporting/backing up all of your work customizing the program is as easy as making a copy of that folder.</p>
<p>Since jEdit is written in Java, it will run anywhere that a JVM is installed (Windows, OSX, Linux). Specifically,  jEdit 4.3 requires Sun&#8217;s JDK 1.5.0 or later.</p>
<p>So in practice, you could have a Mac with OSX and a pc running Ubuntu at home, and use Windows at work, yet keep them all synchronized with your lastest config just by occasionally overwriting the .jedit folder on the installations. <em>Pretty smooth!</em></p>
<p>Of course, in the above scenario it might be less work to just <a href="http://portableapps.com/node/4773">run it from a USB key</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thewebsitetailor.com/2008/06/professing-an-undying-love-for-jedit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery Slug Plugin</title>
		<link>http://www.thewebsitetailor.com/2008/04/jquery-slug-plugin/</link>
		<comments>http://www.thewebsitetailor.com/2008/04/jquery-slug-plugin/#comments</comments>
		<pubDate>Sat, 26 Apr 2008 20:23:42 +0000</pubDate>
		<dc:creator>Perry</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.thewebsitetailor.com/?p=26</guid>
		<description><![CDATA[I&#8217;ve had a snippet of jQuery and javascript kicking around for a while, that I have found handy in the past for generating post slugs. Finally I&#8217;ve packaged it as a plugin to share: jQuery Slug Plugin. This is my first jQuery plugin, so it doesn&#8217;t follow the more advanced plugin development pattern by Mike [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a snippet of jQuery and javascript kicking around for a while, that I have found handy in the past for generating post slugs. Finally I&#8217;ve packaged it as a plugin to share: <a href="http://www.thewebsitetailor.com/jquery-slug-plugin/">jQuery Slug Plugin</a>.</p>
<p>This is my first jQuery plugin, so it doesn&#8217;t follow the more advanced <a href="http://www.learningjquery.com/2007/10/a-plugin-development-pattern">plugin development pattern by Mike Alsup</a>, instead I followed a <a href="http://tkramar.blogspot.com/2008/02/improve-your-jquery-fu-write-plugins.html">more rudimentary plugin authoring tutorial</a>.</p>
<p><a href="http://www.thewebsitetailor.com/jquery-slug-plugin/">Here&#8217;s an explanation of the plugin, and examples of its usage.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thewebsitetailor.com/2008/04/jquery-slug-plugin/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Twigg&#8217;s gets Heal Thy Health</title>
		<link>http://www.thewebsitetailor.com/2008/04/twiggs-gets-heal-thy-health/</link>
		<comments>http://www.thewebsitetailor.com/2008/04/twiggs-gets-heal-thy-health/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 12:39:38 +0000</pubDate>
		<dc:creator>Perry</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[North Bay]]></category>
		<category><![CDATA[Restaurants]]></category>

		<guid isPermaLink="false">http://www.thewebsitetailor.com/?p=22</guid>
		<description><![CDATA[In North Bay snacking news, my friend Sherry Milford&#8217;s organic, wheat-free, vegan baking is now available at Twigg&#8217;s on Fraser street. Sherry of Heal Thy Health is a certified nutrition consultant, and along with her partner Yan Roberts is also the proprietor of the Piebird Bed and Breakfast, in Nipissing Village.]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-medium wp-image-24" title="Heal Thy Health" src="http://www.thewebsitetailor.com/wp-content/uploads/healthyhealth-214x300.jpg" alt="Heal Thy Health" width="214" height="300" /></p>
<p>In North Bay snacking news, my friend Sherry Milford&#8217;s organic, wheat-free, vegan baking is now available at Twigg&#8217;s on Fraser street.</p>
<p>Sherry of <a title="Heal Thy Health" href="http://www.healthyhealth.ca">Heal Thy Health</a> is a certified nutrition consultant, and along with her partner Yan Roberts is also the proprietor of the <a href="http://www.piebird.ca">Piebird Bed and Breakfast</a>, in Nipissing Village.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thewebsitetailor.com/2008/04/twiggs-gets-heal-thy-health/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Welcome to the World of Tomorrow, er, Today</title>
		<link>http://www.thewebsitetailor.com/2008/04/welcome-to-the-world-of-tomorrow/</link>
		<comments>http://www.thewebsitetailor.com/2008/04/welcome-to-the-world-of-tomorrow/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 14:59:41 +0000</pubDate>
		<dc:creator>Perry</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Meta]]></category>

		<guid isPermaLink="false">http://newtailor.dev/?p=18</guid>
		<description><![CDATA[&#8220;Hello&#8221; to everyone and anyone who is reading this. I&#8217;m starting a blog pretty late into the game, kind of like a manager who suggests &#8220;Wouldn&#8217;t it be a great idea to have a guestbook on the site? So users can leave their name, a comment and their email address?&#8221; in 2005. Besides the obvious [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://www.thewebsitetailor.com/wp-content/uploads/worldoftomorrow.jpg" alt="Welcome to the World of Tomorrow!" />&#8220;Hello&#8221; to everyone and anyone who is reading this. I&#8217;m starting a  blog pretty late into the game, kind of like a manager who suggests &#8220;Wouldn&#8217;t it be a great idea to have a guestbook on the site? So users can leave their name, a comment and their email address?&#8221; <em>in 2005. </em>Besides the obvious SEO benefits of having a blog where I regularly discuss <strong>North Bay Web Design</strong> (that was cheap), I think it will give me the opportunity to be a more active participant in the web design community. I&#8217;ve lurked and read tutorials on some awesome blogs, have benefited from CSS test suites painstakingly created by volunteers and examples/workarounds of bugs, etc. and I feel that I&#8217;ve greatly improved my skills since starting out, and now I will be able to contribute something to the community that helped me along.</p>
<p>In the future, I plan to share jQuery plugins, <a title="CodeIgniter: Open-source PHP Framework" href="http://www.codeigniter.com">CodeIgniter</a> libraries, and anything else I code that may be useful to other developers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thewebsitetailor.com/2008/04/welcome-to-the-world-of-tomorrow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
