<?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>matthewkenny.com &#187; Web</title>
	<atom:link href="http://www.matthewkenny.com/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.matthewkenny.com</link>
	<description></description>
	<lastBuildDate>Sun, 20 Dec 2009 23:10:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Setting Sitecore ImageField</title>
		<link>http://www.matthewkenny.com/2009/12/setting-sitecore-imagefield/</link>
		<comments>http://www.matthewkenny.com/2009/12/setting-sitecore-imagefield/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 23:10:28 +0000</pubDate>
		<dc:creator>Matthew Kenny</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[sitecore]]></category>

		<guid isPermaLink="false">http://www.matthewkenny.com/?p=106</guid>
		<description><![CDATA[Recently I had to write something to allow users to upload their own content on a Sitecore site. Not an unusual, or especially difficult, piece of functionality but one thing that did give me a bit of trouble was associating uploaded images (in the media library with the Sitecore item&#8217;s image field. Originally I tried [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I had to write something to allow users to upload their own content on a Sitecore site.  Not an unusual, or especially difficult, piece of functionality but one thing that did give me a bit of trouble was associating uploaded images (in the media library with the Sitecore item&#8217;s image field.<span id="more-106"></span></p>
<p>Originally I tried setting the media ID and the media path properties, but that didn&#8217;t quite work.  Eventually I found that you have to set the media ID, media path, source, and a custom attribute (&#8220;<tt>showineditor</tt>&#8220;).  I was surprised that it wasn&#8217;t easier to assign a media file to an <tt>ImageField</tt> object, but that&#8217;s easily resolved using extension methods introduced in .Net 3.5.  For the lazier among us, I&#8217;ve included a small snippet of code that does the important stuff.  This code is written for Sitecore 5.3, but should work on Sitecore 6.x with minor tweaking if some nicer methods haven&#8217;t already been put in place.  Obviously, production code should be made a bit robust than what&#8217;s below, which has no exception handling and <em>assumes the item is already in editing mode</em>.</p>
<pre name="code" class="c-sharp">
public void AssignMediaItem(ImageField field, Item mediaItem)
{
    field.MediaID = mediaItem.ID;
    MediaUrlOptions options = new MediaUrlOptions();
    field.Src = MediaManager.GetMediaUrl(mediaItem, options);
    field.MediaPath = mediaItem.Paths.MediaPath;
    field.SetAttribute("showineditor", "1");
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.matthewkenny.com/2009/12/setting-sitecore-imagefield/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE8 &#8220;feature comparison&#8221;</title>
		<link>http://www.matthewkenny.com/2009/06/ie8-feature-comparison/</link>
		<comments>http://www.matthewkenny.com/2009/06/ie8-feature-comparison/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 16:16:23 +0000</pubDate>
		<dc:creator>Matthew Kenny</dc:creator>
				<category><![CDATA[Rants]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[ie8]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://www.matthewkenny.com/?p=83</guid>
		<description><![CDATA[I&#8217;ll admit straight up that I haven&#8217;t really used IE8.  I&#8217;ll also happily concede that IE8 is probably a good deal better at rendering standards-compliant things than IE6 and IE7.  I&#8217;m also happy that with the release of IE8, the death of IE6 is that little bit closer (something that will make any web developer [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll admit straight up that I haven&#8217;t really used IE8.  I&#8217;ll also happily concede that IE8 is probably a good deal better at rendering standards-compliant things than IE6 and IE7.  I&#8217;m also happy that with the release of IE8, the death of IE6 is that little bit closer (something that will make any web developer happy, I believe).  I have to say, though, that I was highly disappointed by Microsoft when they released <a rel="nofollow" href="http://www.microsoft.com/windows/internet-explorer/get-the-facts/browser-comparison.aspx" target="_blank">this article</a>.  I feel it&#8217;s sad that whoever wrote the article felt that IE8 could not stand on its own merits and so had to do some, ah, <em>creative</em> spinning of the truth to promote it instead.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matthewkenny.com/2009/06/ie8-feature-comparison/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ASP.Net MVC Framework &#8211; Initial Thoughts</title>
		<link>http://www.matthewkenny.com/2009/06/asp-net-mvc-framework-initial-thoughts/</link>
		<comments>http://www.matthewkenny.com/2009/06/asp-net-mvc-framework-initial-thoughts/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 11:24:11 +0000</pubDate>
		<dc:creator>Matthew Kenny</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.matthewkenny.com/?p=68</guid>
		<description><![CDATA[Having just completed a relatively large project using the newly released ASP.Net MVC Framework, I thought this would be a good time to post my thoughts on the framework.  I have to say that the bulk of my experience with MVC framework comes from my time using Ruby on Rails, so many of my perceptions [...]]]></description>
			<content:encoded><![CDATA[<p>Having just completed a relatively large project using the newly released ASP.Net MVC Framework, I thought this would be a good time to post my thoughts on the framework.  I have to say that the bulk of my experience with MVC framework comes from my time using Ruby on Rails, so many of my perceptions will be coloured by this.<span id="more-68"></span></p>
<p>First of all, for anyone who isn&#8217;t familiar with MVC (or Model View Controller), it&#8217;s a design pattern that emphasises the separation of concerns within the application, essentially: presentation data is kept separate from the application data, which &#8211; in turn &#8211; is separated from the logic relating to data storage, manipulation and retrieval.  The result is &#8211; for the most part &#8211; an application that is surprisingly easy to maintain and adapt.</p>
<p>The idea is to have a controller class, which exposes several public methods &#8211; or, actions &#8211; which can be called by a web request.  These actions execute a task, often involving communication with data storage through the model layer, and then finally pass data to a view, which renders the data and returns that to the user.  Some actions may have filters that run at various stages in the request, and can alter the end result of the request (a common example is to ensure a user is authenticated before processing an action).</p>
<p>For the most part, I have been pleased with the ASP.Net MVC Framework.  It bears striking resemblances in many places to Ruby on Rails, however it is often apparent that the framework is in its early stages as it is not as polished as Ruby on Rails.</p>
<p>Filters were one thing that irritated me somewhat, however they also had some features that I thought were original.  First, I thought that the usage of filters was cumbersome and quite inelegant: filters can be placed either on an action or an all actions in a controller class by decorating the method or class with the appropriate filter attribute.  The result of this method is that your controllers can become a hodgepodge of filter attributes.  I wish I had the syntactic sugar of Ruby on Rails&#8217; <tt>before_filter</tt> function, where it&#8217;s possible to write:</p>
<blockquote><p><tt>before_filter :require_admin, :only =&gt; [:delete, :create, :edit]</tt><br />
<tt>before_filter :require_logged_in, :except =&gt; [:login, :register]</tt></p></blockquote>
<p>I think that something based on the above would be a much neater way of specifying filters.</p>
<p>I liked having access to the &#8220;request context&#8221; from all the main parts of the application.  It serves as a rather straight-forward method of passing data between the layers and of accessing the original request information.  Something that can be difficult to do when you get deep into Rails applications: you lose the context of the request; you can&#8217;t get the original controller action or other request data.</p>
<p>I thought that the approach of using the <tt>ActionResult</tt> type to offload the work of processing each type of result was an excellent idea.  It actually neatly avoids a common source of errors encountered during the development or Rails applications: the &#8220;double render&#8221; error.  This error happens when, for example, a redirect is issued but then the controller continues to issue a view result also (caused because Ruby on Rails controller functions responsible for issuing results do not cause the controller action to return).  Returning the <tt>ActionResult </tt>neatly avoids that issue.</p>
<p>Initially I took great issue with the typical method of passing data into views via the <tt>ViewData</tt> dictionary.  I didn&#8217;t like the lack of strong-typing, the messiness this introduced into the view code, nor the ease with which certain things could be omitted from the dictionary.  I&#8217;m aware that the first and last really also apply to Ruby on Rails: the first I can ignore because Ruby, unlike C#, is dynamically typed; the second however, remains equally valid.  I would like to have some sort of contract between the View and the Controller that specified what data will be supplied, although I&#8217;m aware this is heading more toward the MCP design pattern.</p>
<p>Shortly after my disappointment over the <tt>ViewData</tt> dictionary, I discovered the existence of page models.  The ASP.Net MVC framework allows you to create strongly typed views by use of a page model (in most cases, a class that exposes a number of properties containing information that would normally be passed via the <tt>ViewData</tt>.  It doesn&#8217;t allow you to <em>require </em>values to be passed into the view, but it&#8217;s much better than the alternative.</p>
<p>Then finally we have the Model Binding of the ASP.Net Framework.  This is still a bit of a black art to me; I&#8217;ve not yet had time to sufficiently examine its workings, but it is rather nifty.  It enables the binding of values to objects in the controller and views; this allows controller actions to use model objects (<em>e.g.</em> a user object) as a parameter rather than having a parameter for each field of the user.  It also allows &#8220;sticky fields&#8221; to be implemented very easily in the View.</p>
<p>That&#8217;s all that&#8217;s come to mind right now &#8211; although I&#8217;m certainly sure there are other things that I&#8217;ve overlooked.  You may notice that I&#8217;ve omitted practically any reference to the Model part of MVC; this isn&#8217;t a co-incidence, it&#8217;s an avenue that I&#8217;m leaving open to the possibility of future posts given the fact that the ASP.Net MVC framework does not tie you to one particular ORM like Ruby on Rails does (generally speaking).  It would make the scope of the post far too large, and I feel that this post is pushing the bounds of length regardless.</p>
<p>Anyway, these are my thoughts; if anyone has some other views, contributions or corrections, I look forward to reading them in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matthewkenny.com/2009/06/asp-net-mvc-framework-initial-thoughts/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TinyMCE and jQuery validation</title>
		<link>http://www.matthewkenny.com/2009/05/tinymce-and-jquery-validation/</link>
		<comments>http://www.matthewkenny.com/2009/05/tinymce-and-jquery-validation/#comments</comments>
		<pubDate>Thu, 07 May 2009 07:19:58 +0000</pubDate>
		<dc:creator>Matthew Kenny</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[textarea]]></category>
		<category><![CDATA[textbox]]></category>
		<category><![CDATA[tinyMCE]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://www.matthewkenny.com/?p=41</guid>
		<description><![CDATA[I&#8217;ve recently been working on a project using the ASP.Net MVC framework (more on that in a later post perhaps), where the TinyMCE editor was used as the rich text input method of choice. We hit a snag when it came to applying client-side validation through jQuery: jQuery was validating the textarea before TinyMCE was [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently been working on a project using the ASP.Net MVC framework (more on that in a later post perhaps), where the TinyMCE editor was used as the rich text input method of choice.  We hit a snag when it came to applying client-side validation through jQuery: jQuery was validating the <tt>textarea</tt> before TinyMCE was filling it in with the editor content.<br />
<span id="more-41"></span><br />
A quick search for &#8216;<tt>TinyMCE jQuery validation</tt>&#8216; turned up a <em>very</em> helpful article by Rebecca Murphy (<a title="jQuery validation and TinyMCE" href="http://blog.rebeccamurphey.com/2009/01/12/jquery-validation-and-tinymce/" target="_blank">link</a>).  This was a godsend for us, as we were worried about having to either scrap TinyMCE or have no client-side validation for any rich text boxes (the horror).  However, it wasn&#8217;t quite what we needed.  We had a page that contained a number of TinyMCE boxes, so we needed to make sure that each one would be properly updated when its associated form submit button was pressed.</p>
<p>Fortunately, after my own trip to the TinyMCE API, I spotted the <tt>init_instance_callback</tt> option, which allowed a function to be called upon the creation of a new editor.  Perfect.  The initial version of the code is below, hopefully if anyone else finds themselves in a tight spot, it might help them out.</p>
<pre name="code" class="javascript">tinyMCE.init({
    mode : 'textareas',
    theme : 'advanced',
    theme_advanced_buttons1 : 'bold,italic,underline',
    theme_advanced_buttons2 : '',
    theme_advanced_buttons3 : '',
    theme_advanced_toolbar_location : 'top',
    theme_advanced_toolbar_align : 'left',
    theme_advanced_statusbar_location : 'bottom',
    init_instance_callback : "initialiseInstance"
});

function initialiseInstance(editor)
{
    //Get the textarea
    var container = $('#' + editor.editorId);

    //Get the form submit buttons for the textarea
    $(editor.formElement).find("input[type=submit]").click(
        function(event)
        {
            container.val(editor.getContent());
        }
    );
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.matthewkenny.com/2009/05/tinymce-and-jquery-validation/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Lovefilm</title>
		<link>http://www.matthewkenny.com/2008/07/lovefilm/</link>
		<comments>http://www.matthewkenny.com/2008/07/lovefilm/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 21:16:33 +0000</pubDate>
		<dc:creator>Matthew Kenny</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Lovefilm]]></category>

		<guid isPermaLink="false">http://www.matthewkenny.com/?p=30</guid>
		<description><![CDATA[I recently got a 90 day trial membership on Lovefilm.  If you haven&#8217;t heard of Lovefilm before, it&#8217;s an online DVD rental service where they post the discs out to you and you send them back (keeping them for as long as you want in between).  The trick to it is that you can only [...]]]></description>
			<content:encoded><![CDATA[<p>I recently got a 90 day trial membership on <a title="Lovefilm" href="http://www.lovefilm.com">Lovefilm</a>.  If you haven&#8217;t heard of Lovefilm before, it&#8217;s an online DVD rental service where they post the discs out to you and you send them back (keeping them for as long as you want in between).  The trick to it is that you can only have a certain number of DVDs at your house at any one point, so that gets you to send them back (which is free).</p>
<p>Even though I&#8217;m not paying for it, it&#8217;s definitely well worth the money that they charge for the normal plans.  It&#8217;s great coming home and knowing that you&#8217;ve got something to watch that you haven&#8217;t seen before.  The choice of films is great, and as long as you get plenty of films on your &#8220;to rent&#8221; list, you&#8217;ll never be stuck without.</p>
<p>I think there&#8217;s a perpetual 30 day free trial offer on as well, check it out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matthewkenny.com/2008/07/lovefilm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Financial advice site</title>
		<link>http://www.matthewkenny.com/2007/09/financial-advice-site/</link>
		<comments>http://www.matthewkenny.com/2007/09/financial-advice-site/#comments</comments>
		<pubDate>Sat, 08 Sep 2007 19:19:46 +0000</pubDate>
		<dc:creator>Matthew Kenny</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Money]]></category>

		<guid isPermaLink="false">http://www.matthewkenny.com/2007/09/08/financial-advice-site/</guid>
		<description><![CDATA[Money saving expert is a really nifty site offering loads of financial advice for us Brits. It has links to the best current accounts, the best savings accounts, and pretty much anything else you can think of. I spent more than a few hours reading various articles. I think that this site has something to [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Money saving expert" href="http://www.moneysavingexpert.com/" target="_blank">Money saving expert</a> is a really nifty site offering loads of financial advice for us Brits.  It has links to the best current accounts, the best savings accounts, and pretty much anything else you can think of.  I spent more than a few hours reading various articles.</p>
<p>I think that this site has something to offer to everyone by way of advice.  It would be difficult to have a look through there and not find something pertinent.  I&#8217;m certainly going to make use of some of the advice on there.  Absolutely fantastic.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matthewkenny.com/2007/09/financial-advice-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>All a matter of trust</title>
		<link>http://www.matthewkenny.com/2007/08/all-a-matter-of-trust/</link>
		<comments>http://www.matthewkenny.com/2007/08/all-a-matter-of-trust/#comments</comments>
		<pubDate>Fri, 31 Aug 2007 22:49:45 +0000</pubDate>
		<dc:creator>Matthew Kenny</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Wikipedia]]></category>

		<guid isPermaLink="false">http://www.matthewkenny.com/2007/08/31/all-a-matter-of-trust/</guid>
		<description><![CDATA[Some clever researchers at UCSC have come up with a handy little algorithm that hilights the most trusted passages in a Wikipedia article based upon the contributor&#8217;s &#8220;reputation&#8221;, which is calculated by the algorithm using the amount of time that said user&#8217;s contributions remain on an article. Not a new idea by any means, in [...]]]></description>
			<content:encoded><![CDATA[<p>Some clever researchers at UCSC have come up with a handy little algorithm that hilights the most trusted passages in a Wikipedia article based upon the contributor&#8217;s &#8220;reputation&#8221;, which is calculated by the algorithm using the amount of time that said user&#8217;s contributions remain on an article.</p>
<p>Not a new idea by any means, in terms of the way it works, although the metric is a good one.  I&#8217;d like to see how this copes with a full copy of Wikipedia.  It would be interesting to say the least.</p>
<p>[<a title="Slashdot article" href="http://it.slashdot.org/article.pl?sid=07/08/31/0259224&amp;" target="_blank">link</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matthewkenny.com/2007/08/all-a-matter-of-trust/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress update</title>
		<link>http://www.matthewkenny.com/2007/08/wordpress-update/</link>
		<comments>http://www.matthewkenny.com/2007/08/wordpress-update/#comments</comments>
		<pubDate>Sun, 26 Aug 2007 21:01:32 +0000</pubDate>
		<dc:creator>Matthew Kenny</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.matthewkenny.com/2007/08/26/wordpress-update/</guid>
		<description><![CDATA[At long last, I&#8217;ve finally got around to updating the version of WordPress that I&#8217;m running. It turns out that I can easily update it from the DreamHost control panel, but I found a rather nifty little method that uses Subversion to keep everything up to date. Along with version 2 comes built in support [...]]]></description>
			<content:encoded><![CDATA[<p>At long last, I&#8217;ve finally got around to updating the version of WordPress that I&#8217;m running.  It turns out that I can easily update it from the DreamHost control panel, but I found a <a title="WordPress subversion update method" href="http://codex.wordpress.org/Installing/Updating_WordPress_with_Subversion" target="_blank">rather nifty little method</a> that uses Subversion to keep everything up to date.</p>
<p>Along with version 2 comes built in support for widgets, so I&#8217;ve finally been able to put up a nice little widget containing my Google Reader starred items.  Yay!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matthewkenny.com/2007/08/wordpress-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Secure backup using rsync and SSH</title>
		<link>http://www.matthewkenny.com/2007/08/secure-backup-using-rsync-and-ssh/</link>
		<comments>http://www.matthewkenny.com/2007/08/secure-backup-using-rsync-and-ssh/#comments</comments>
		<pubDate>Thu, 16 Aug 2007 11:03:24 +0000</pubDate>
		<dc:creator>Matthew Kenny</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.matthewkenny.com/archives/11</guid>
		<description><![CDATA[I just found this article in my unpublished posts&#8230; not sure why I didn&#8217;t publish it, but there we go. How to automatically back up your computers with rsync &#8211; Lifehacker I saw this article pop up in google reader on Thursday, and realised that it was actually a pretty good idea. My DreamHost account [...]]]></description>
			<content:encoded><![CDATA[<p>I just found this article in my unpublished posts&#8230; not sure why I didn&#8217;t publish it, but there we go.</p>
<p><a href="http://www.lifehacker.com/software/backup-utilities/how-to-automatically-back-up-your-computers-with-rsync-246324.php">How to automatically back up your computers with rsync &#8211; Lifehacker</a></p>
<p>I saw this article pop up in google reader on Thursday, and realised that it was actually a pretty good idea.  My DreamHost account comes with 200GiB of disk space and 2TiB of bandwidth.  Additionally, these both grow in size every week by 1GiB and 16GiB respectively, so I&#8217;m hardly even losing data by backing stuff up.  You&#8217;ll also need some kind of linux server that you can upload to, you may want to consider creating a DreamHost account.</p>
<p>Unfortunately, it&#8217;s not really as easy as it looks if you use Windows.  I wanted to back up the My Documents folder, which as you might be aware, is a &#8220;special folder&#8221; (along with My Music, Shared Documents, <em>etc.</em>).  Special folders will contain a file called desktop.ini that contains information about the folder (its name and icon, for example).  However, according to <a href="http://support.microsoft.com/kb/326549">KB326549</a>, Windows likes to do something a little&#8230; unorthodox with the folder permissions &#8211; Windows will only look for the desktop.ini file if the folder is marked as read-only.  Actually setting the folder as read-only, though, doesn&#8217;t actually make the folder read-only: in its infinite wisdom, Windows typically ignores the flag.</p>
<p>So, you might be thinking: &#8220;Why does that matter?&#8221; right now.  Well, in order to run rsync, you will need to install Cygwin, which is (more or less) something that lets you compile unix programs and run them on Windows.  Before you run away at the mention of the word &#8220;compile&#8221;, don&#8217;t worry &#8211; Cygwin comes with many programs pre-compiled for you, rsync and ssh included.  You can get Cygwin <a href="http://www.cygwin.com/">here</a>.  I think it&#8217;s a pretty handy way of backing my stuff up.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matthewkenny.com/2007/08/secure-backup-using-rsync-and-ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RSS with HTTP authentication</title>
		<link>http://www.matthewkenny.com/2007/02/rss-with-http-authentication/</link>
		<comments>http://www.matthewkenny.com/2007/02/rss-with-http-authentication/#comments</comments>
		<pubDate>Wed, 07 Feb 2007 11:53:11 +0000</pubDate>
		<dc:creator>Matthew Kenny</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.matthewkenny.com/archives/4</guid>
		<description><![CDATA[For those of you not familiar with RSS, I&#8217;ll describe it briefly; RSS is a particular format of XML document that is often used by sites to provide a &#8220;news feed&#8221; to subscribers, this news feed can then be read by an RSS feed aggregator, and new items on the site can easily be disseminated [...]]]></description>
			<content:encoded><![CDATA[<p>For those of you not familiar with RSS, I&#8217;ll describe it briefly; RSS is a particular format of XML document that is often used by sites to provide a &#8220;news feed&#8221; to subscribers, this news feed can then be read by an RSS feed aggregator, and new items on the site can easily be disseminated to describers.</p>
<p>HTTP, as most will recognise as the protocol we use to fetch resources when we browse the web, has some rudimentary built-in authentication facilities, and although the idea of using these with RSS is not new, it surprises me that the technique is not more widely used.</p>
<p>Advantages of using authentication with RSS feeds provide several possible applications: firstly, it allows sites to provide &#8220;members-only&#8221; content; secondly, it allows users of a site to select content based on their interests (provided the site had such functionality); thirdly, and of more import to sites than to users, it would allow targeted advertising to be delivered to users.</p>
<p>The easiest way to implement authenticated HTTP would be to respond with a 200 response upon receipt of either correct auth data, or no auth data.  In the latter case, the server would send out the public RSS feed; in the latter, the server would obviously send out the private version.  In the case of incorrect auth data being provided, the server responds with a 401 response, just like any other authenticated transaction.</p>
<p>The downside to the above method is that the user won&#8217;t be made aware if a personalised service is available.  If we slightly fudge the meaning of the 401 response, we can do the following: on recepit of either <em>incorrect</em> auth data, or no auth data, the server responds with a 401, and the body of the document contains the public version of the feed.  When the server receives correct auth data, the server sends the personalised data with a 200 response.</p>
<p>In this manner, the client knows if a personalised version is available, because it knows that it sent no auth data, but feed data has been received.  Furthermore, it knows if personalisation is not available, since it will just receive the 200 reply if it doesn&#8217;t send any auth data.</p>
<p>I&#8217;m sure there are other methods of providing the same service, these just strike me as the most intuitive that don&#8217;t require separate URLs for subscribers and non-subscribers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matthewkenny.com/2007/02/rss-with-http-authentication/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Reader</title>
		<link>http://www.matthewkenny.com/2007/02/google-reader/</link>
		<comments>http://www.matthewkenny.com/2007/02/google-reader/#comments</comments>
		<pubDate>Wed, 07 Feb 2007 11:52:04 +0000</pubDate>
		<dc:creator>Matthew Kenny</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[RSS]]></category>

		<guid isPermaLink="false">http://www.matthewkenny.com/archives/5</guid>
		<description><![CDATA[I&#8217;m a self-confessed Google lover; I have my google homepage, my gmail, my google calendar, and various other bits and bobs. Thus, it should come as no surprise that when I found a funky new application in their labs about a month ago, I signed right up. Google Reader is a web-based feed aggregator. It&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a self-confessed Google lover; I have my google homepage, my gmail, my google calendar, and various other bits and bobs.  Thus, it should come as no surprise that when I found a funky new application in their labs about a month ago, I signed right up.</p>
<p><a title="Google Reader website" href="http://www.google.com/reader/">Google Reader</a> is a web-based feed aggregator.  It&#8217;s still in beta, so there are a few bugs here and there, but by and large it&#8217;s quite a nifty little piece of software.  Interface-wise, it looks rather like GMail, RSS items are listed rather like e-mails would be, and you have the ability to apply your own tags to the news items.  The feeds themselves act like folders, and can be sorted in their own folder hierarchy.</p>
<p>A nice little feature of Google Reader, though, is that you can mark items that you particularly like as &#8220;shared&#8221;, and these shared items can then be viewed by other people, with the <a title="My shared items" href="http://www.google.com/reader/shared/user/15471541712044822697/state/com.google/starred" target="_blank">link</a>, or can be displayed on your own website.</p>
<p>On the subject of bugs, the only one that causes me any real annoyance is that, occasionally, one item, or several contiguous items from a feed will be duplicated.  Now and then, a little red bubble will appear top centre saying &#8220;Oops there&#8217;s been an error&#8221;, but nothing obvious happens; once in a while the interface will just refuse to load, but this is always fixed by a refresh.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matthewkenny.com/2007/02/google-reader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
