<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Unlimited Edition</title>
	
	<link>http://michaelodden.com</link>
	<description>Unlimited views, cleverness and love</description>
	<lastBuildDate>Sat, 23 Jan 2010 20:31:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/unlimitededition" /><feedburner:info uri="unlimitededition" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>unlimitededition</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>If you think you might need to defragment</title>
		<link>http://feedproxy.google.com/~r/unlimitededition/~3/Un4tkEMw9X8/</link>
		<comments>http://michaelodden.com/humor/if-you-think-you-might-need-to-defragment/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 20:31:40 +0000</pubDate>
		<dc:creator>michaelo</dc:creator>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[cites]]></category>
		<category><![CDATA[os x]]></category>

		<guid isPermaLink="false">http://michaelodden.com/?p=397</guid>
		<description><![CDATA[Try restarting first. It might help, and it&#8217;s easy to do. If your disks are almost full, and you often modify or create large files (such as editing video, but see the Tip below if you use iMovie and Mac OS X 10.3), there&#8217;s a chance the disks could be fragmented. In this case, you [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<ol>
<li>Try restarting first. It might help, and it&#8217;s easy to do.</li>
<li>If your disks are almost full, and you often modify or create large files (such as editing video, but see the Tip below if you use iMovie and Mac <acronym title="Operating System">OS</acronym> X 10.3), there&#8217;s a chance the disks could be fragmented. In this case, you might benefit from defragmentation, which can be performed with some third-party disk utilities.</li>
<li>Another option is to back up your important files, erase the hard disk, then reinstall Mac <acronym title="Operating System">OS</acronym> X and your backed up files.</li>
</ol>
<p>Reference: <a href="http://support.apple.com/kb/HT1375?viewlocale=en_US">About disk optimization with Mac <acronym title="Operating System">OS</acronym> X</a>.</p><img src="http://michaelodden.com/?ak_action=api_record_view&id=397&type=feed" alt="" />

<p>No related posts.</p><img src="http://feeds.feedburner.com/~r/unlimitededition/~4/Un4tkEMw9X8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelodden.com/humor/if-you-think-you-might-need-to-defragment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://michaelodden.com/humor/if-you-think-you-might-need-to-defragment/</feedburner:origLink></item>
		<item>
		<title>Why I use Opera over Firefox</title>
		<link>http://feedproxy.google.com/~r/unlimitededition/~3/el2aBiQLfYY/</link>
		<comments>http://michaelodden.com/general/why-i-use-opera-over-firefox/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 11:43:13 +0000</pubDate>
		<dc:creator>michaelo</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://michaelodden.com/?p=371</guid>
		<description><![CDATA[Trent at &#8220;The Linux Critic&#8221; recently wrote a good post about his five reasons why he prefers Opera over Firefox and pinpoints the same reasons I would chose to mention if I&#8217;d written such a post. It&#8217;s well worth a read &#8211; for users of any browser. I feel it&#8217;s important that there is a [...]

<h2>Related posts:</h2><ul><li><a href='http://michaelodden.com/hacking/opera-wand-security-issue-aka-how-to-get-passwords-saved-in-the-wand-which-you-dont-remember/' rel='bookmark' title='Permanent Link: Opera Wand security issue AKA how to get passwords saved in the Wand which you don&#8217;t remember'>Opera Wand security issue AKA how to get passwords saved in the Wand which you don&#8217;t remember</a></li>
<li><a href='http://michaelodden.com/mac/essential-mac-applications/' rel='bookmark' title='Permanent Link: Essential mac-applications'>Essential mac-applications</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Trent at &#8220;The Linux Critic&#8221; recently wrote a good post about his <a href="http://linuxcritic.wordpress.com/2009/08/13/five-reasons-i-prefer-opera-over-firefox/">five reasons why he prefers Opera over Firefox</a> and pinpoints the same reasons I would chose to mention if I&#8217;d written such a post. It&#8217;s well worth a read &#8211; for users of any browser.</p>
<p>I feel it&#8217;s important that there is a open discussion about the ups and downs between the &#8220;alternative&#8221; browsers as I would like to see the best browsers possible. Right now the main focus of the normal tech-savvy folks is to promote Firefox as the hero to break <acronym title="Internet Explorer">IE</acronym>&#8217;s monopoly. It&#8217;s all great &#8211; but to get a truly widespread usage to the average computer-users as well as the power-users we have to offer an alternative with the least possible amount of compromises and with the best implemented features that ease ones days on the web. Right now Firefox is not doing that. Neither is Opera &#8211; but I think Opera is quite a bit ahead by now &#8211; and been so for a couple of years.</p>
<p>Firefox is not a bad choice &#8211; quite the opposite actually. It has done some great improvements during it&#8217;s lifetime, but in my case does still lack those features that makes me think: &#8220;That was clever, this will make my day a little easier&#8221;. Some of it&#8217;s extensions has &#8211; but I don&#8217;t like the way they rest on the extensions (and inevitably &#8211; the end-users) to do all the work.</p><img src="http://michaelodden.com/?ak_action=api_record_view&id=371&type=feed" alt="" />

<h2>Related posts:</h2><ul><li><a href='http://michaelodden.com/hacking/opera-wand-security-issue-aka-how-to-get-passwords-saved-in-the-wand-which-you-dont-remember/' rel='bookmark' title='Permanent Link: Opera Wand security issue AKA how to get passwords saved in the Wand which you don&#8217;t remember'>Opera Wand security issue AKA how to get passwords saved in the Wand which you don&#8217;t remember</a></li>
<li><a href='http://michaelodden.com/mac/essential-mac-applications/' rel='bookmark' title='Permanent Link: Essential mac-applications'>Essential mac-applications</a></li>
</ul><img src="http://feeds.feedburner.com/~r/unlimitededition/~4/el2aBiQLfYY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelodden.com/general/why-i-use-opera-over-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://michaelodden.com/general/why-i-use-opera-over-firefox/</feedburner:origLink></item>
		<item>
		<title>Sad news – Smultron no longer supported</title>
		<link>http://feedproxy.google.com/~r/unlimitededition/~3/2Nt2FAfrziA/</link>
		<comments>http://michaelodden.com/development/terrible-news-smultron-no-longer-supported/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 12:26:21 +0000</pubDate>
		<dc:creator>michaelo</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://michaelodden.com/?p=360</guid>
		<description><![CDATA[As of 2009-07-06 will my editor of choice for the last 2-3 years, Smultron, no longer be further developed by the sole developer Peter Borg: Hi! First of all I&#8217;d like to thank you for your interest in my applications. But I have now come to a point where I don&#8217;t have the time to [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>As of 2009-07-06 will my editor of choice for the last 2-3 years, Smultron, <a href="http://smultron.sourceforge.net/">no longer be further developed</a> by the sole developer Peter Borg:</p>
<p><span id="more-360"></span></p>
<blockquote><p>Hi!</p>
<p>First of all I&#8217;d like to thank you for your interest in my applications. But I have now come to a point where I don&#8217;t have the time to spend on the applications that they deserve so I have decided to not release any more versions for the foreseeable future.</p>
<p>Cheers,</p>
<p>Peter Borg</p></blockquote>
<p>It&#8217;s not of immediate trouble for me,but I fear that in time this will have to make me switch editor.</p>
<h2>Thank you, Peter Borg</h2>
<p>A big &#8220;thank you&#8221; goes out to Peter for his great work and I&#8217;m sure he&#8217;s up to other great work. Thank you for taking so much time giving us this great editor and developer-utility which has made my days for quite some time now.</p>
<p>As this is an open source-project I have this hope that some skilled developer will adopt the project and continue on the same path: maintaining an editor which keeps out of the way (!), has this neat set of functions and a relatively small footprint.</p><img src="http://michaelodden.com/?ak_action=api_record_view&id=360&type=feed" alt="" />

<p>No related posts.</p><img src="http://feeds.feedburner.com/~r/unlimitededition/~4/2Nt2FAfrziA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelodden.com/development/terrible-news-smultron-no-longer-supported/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://michaelodden.com/development/terrible-news-smultron-no-longer-supported/</feedburner:origLink></item>
		<item>
		<title>Opera Unite: Convenient tips and snippets for developers</title>
		<link>http://feedproxy.google.com/~r/unlimitededition/~3/KwFSeNIZdQQ/</link>
		<comments>http://michaelodden.com/opera-unite/opera-unite-convenient-tips-and-snippets-for-developers/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 19:38:35 +0000</pubDate>
		<dc:creator>michaelo</dc:creator>
				<category><![CDATA[Opera Unite]]></category>

		<guid isPermaLink="false">http://michaelodden.com/?p=301</guid>
		<description><![CDATA[Well, as I&#8217;m keeping on with my experiments with Opera Unite I continue to make notes, and perhaps some other developers out there might come across the same issues as well. Here is how to implement &#8220;data-if&#8221;, some debugging-tips and a patched Markuper amongst others. Introducing a basic &#8220;data-if&#8221; in Markuper The Markuper has a [...]

<h2>Related posts:</h2><ul><li><a href='http://michaelodden.com/development/adventures-in-opera-unite/' rel='bookmark' title='Permanent Link: Adventures in Opera Unite'>Adventures in Opera Unite</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Well, as I&#8217;m keeping on with my experiments with Opera Unite I continue to make notes, and perhaps some other developers out there might come across the same issues as well.</p>
<p>Here is how to implement &#8220;data-if&#8221;, some debugging-tips and a patched Markuper amongst others.</p>
<p><span id="more-301"></span></p>
<h2>Introducing a basic &#8220;data-if&#8221; in Markuper</h2>
<p>The Markuper has a great, simple method of adding custom attributes to determine whether or not keep an arbitrary element and it&#8217;s content. You may already know the &#8220;<strong>data-keep-if</strong>&#8220;-attribute, now &#8211; here is &#8220;<strong>data-if</strong>&#8220;, a tad more flexible:</p>
<pre name="code" class="javascript">/**
Author: Michael Odden
Email: me@michaelodden.com

A simple example of an extension of Opera's Markuper - a Unite JavaScript template-library:
Implementing the "if"-operator, allowing for boolean expressions, and does only show
the element if the value is true.

To allow variables in the expressions, you'll have to download the patched Markuper, currently found at:

http://michaelodden.com/files/unite/template.js

See blogpost for details:

http://michaelodden.com/opera-unite/opera-unite-convenient-tips-and-snippets-for-developers

NB! You should not include data in the attribute which you don't controll 100%, as the method
is currently using "eval". Yup, bad, I know. I'm working on a better approach.

= USAGE:

- In the server side JavaScript, where you initiate the Markuper:

var data = {"sum":101};
var template = new Markuper("path/to/template.html", data);
template.registerDataAttribute('if', dataAttrIf);

- In the template:
&lt;div data-if="{{sum}}&gt;100"&gt;
&lt;p&gt;The sum is more than 100&lt;/p&gt;
&lt;/div&gt;

*/

function dataAttrIf(node, data, key) {
	node.removeAttribute("data-if"); // Remove the attribute, leaving no trails
	if(!eval(key)) {
		node.remove(); // remove the node
		return false; // avoid processing the contents of the node
	}
}
</pre>
<p>NB! I&#8217;m currently using <acronym title="JavaScript">JS</acronym>&#8217; <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Functions/eval">eval</a>-method, which &#8211; in short &#8211; is not recommended if you don&#8217;t have 100% control of the code being evaluated. While it gives you extreme flexibility, it will probably also affect security. It is amongst others a very common source of XSS-vulnerabilities.</p>
<p>I am working on a better expression-parser, perhaps built upon Markuper&#8217;s &#8220;operatorsRegExp&#8221;, which is used for some neat interpretation of the &#8220;data-keep-if&#8221;-values. As far as possible I will for now recommend data-keep-if as long as it&#8217;s possible, and this is mostly an example of how easy it is to expand the Markuper, and making a little more flexible option needed for an application of mine.</p>
<p>You will also need the patched Markuper found at the bottom of this post (template.js) if you want to allow variables in the expressions. See my <a href="http://michaelodden.com/development/adventures-in-opera-unite/">previous Unite-post</a> for details.</p>
<h2>Check if files exists</h2>
<p>I came across a situation where I preferred to use the _request event-handler, which is a &#8220;fetch-all&#8221; event, this mean that I won&#8217;t need to dispatch events for every single action, but rather take care of the logics in one gateway-method. But there is a problem: when using the _request-handler, Unite won&#8217;t dispatch through to any publicly available files either, unless explicitly told so. In my case this meant my .css og client-side .js-files wasn&#8217;t loaded.</p>
<p>To work around this, I created a function which checks if there is a file matching the current request &#8211; and if so serve this instead of continuing with the regular logic.</p>
<p>Remember to include access to the file i/o by adding the following in your config.xml (inside the widget-element):</p>
<pre lang="xml">    &lt;feature name="http://xmlns.opera.com/fileio"&gt;&lt;/feature&gt;</pre>
<pre name="code" class="javascript">/**
 * @author	Michael Odden
 * @email	me@michaelodden.com
 * @url		http://michaelodden.com/
 * @description
 * 		Checks if the requested path can be mapped to an existing static file (underneath public_html).
 *		If so: server the static file, otherwise continue the normal flow. Intended used with the _request event handler.
 *
 *
 * @return	mixed - true / false regarding if file exists, or the result of response.closeAndRedispatch ()
 * @param	OperaEvent - e - The event-object as sent to the eventhandler (required)
 * @param	boolean - dispatch - should the method autmaticly dispatch to load the file, or just return true / false.
 */
function requestedFileExists(e, dispatch) {
	var fileExists = true;
	var uri = e.connection.request.uri;
	var dir = opera.io.filesystem.mountSystemDirectory('application');
	dispatch = typeof(dispatch)!="undefined" ? dispatch : true;

	if(dir) {
		try {
			var relPath = uri.replace(new RegExp(e.target.currentServiceName,"i"), "public_html");
			var stream = dir.open(dir.resolve(relPath ), opera.io.filemode.READ);
		} catch(err) {
			fileExists = false;
		}
	}

    return (dispatch &#038;&#038; fileExists) ? e.connection.response.closeAndRedispatch() : fileExists;
}
</pre>
<p>I found it necessary to also have a function which simply checks if there is a public file with a given name, and simply returns true or false.</p>
<pre name="code" class="javascript">/**
 * @author	Michael Odden
 * @email	me@michaelodden.com
 * @url		http://michaelodden.com/
 * @description
 * 		Checks if a given file exists under the public_html folder. Returns true / false accordingly.
 *
 *
 * @return	Boolean - true / false regarding if file exists
 * @param	OperaEvent - e - The event-object as sent to the eventhandler (required)
 * @param	String - file - path relative to public_html to look for
 */
function publicFileExists(e, file) {
	var fileExists = true;
	var dir = opera.io.filesystem.mountSystemDirectory('application');

	if(dir) {
		try {
			var relPath = "public_html/" + file;
			var stream = dir.open(dir.resolve(relPath ), opera.io.filemode.READ);
		} catch(err) {
			fileExists = false;
		}
	}

	return fileExists;
}
</pre>
<h3>Usage</h3>
<pre name="code" class="javascript">window.onload = function() {
	var w = opera.io.webserver;
	if(w) {
		w.addEventListener("_request", onRequest, false);
	}
}

function onRequest(e) {
	// Demo 1: requestedFileExists()
	// Check if the requested <acronym title="Uniform Resource Identifier">URI</acronym> can match to an existing file under public_html.
	// If so, dispatch directly to that file, and cancel further load
	requestedFileExists(e);

	// Demo 2: publicFileExists()
	// this demo as a whole does the same as Demo 1, but the publicFileExists does
	// only return true / false, and the developer has to decide action herself.
	if(publicFileExists(e, "tesfile.html")) {
		e.connection.response.closeAndRedispatch();
	}
}
</pre>
<h2>Notes to self</h2>
<p>window.onload is only run when the application is started (through the Unite Control Panel), and not on each page-load as some would believe.</p>
<p>Markuper does of course need <a href="http://dev.opera.com/articles/view/file-i-o-api-for-widgets/">access to the filesystem</a>.</p>
<p><a href="https://developer.mozilla.org/en/core_javascript_1.5_guide/exception_handling_statements/try...catch_statement">Try-catch</a> is my best friend. If you have some weird situations where your application doesn&#8217;t load, it might be because a missing library (not including the file-io through your config.xml etc) then you&#8217;ll have to start debugging. By wrapping essential parts in try-catch and check the error-object as passed to the catcher you might save yourself quite some time debugging in the darkness. It is a matter of best-practice to use try-catch on parts of your code that might fail, but it will also come handy as a debugger tool just for checking large or small parts of your code.</p>
<h2>JavaScript on both sides</h2>
<p>It seems to be a common source of confusion for some: it&#8217;s important to remember that &#8211; in Unite &#8211; <acronym title="JavaScript">JS</acronym> is used both on the server-side as well as on the client-side. Methods like &#8220;alert()&#8221;, won&#8217;t work on the SSJS (the ones included in the main index.html-file, either directly or indirectly). Pretty obviously, but I remember my first debugging-action was to try an &#8220;alert()&#8221; <img src='http://michaelodden.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<h2>Recommended</h2>
<ul>
<li><a href="/files/unite/template.js">template.js</a> &#8211; patched version of the Markuper, fixing the bugs as mentioned in my previous Unite-article. Thanks goes to António.</li>
<li><a href="http://dev.opera.com/libraries/">Offical Opera Libraries</a> &#8211; Opera does have some really skilled developers, and it&#8217;s worth checking out the libraries.</li>
<li><a href="http://dev.opera.com/articles/view/opera-javascript-for-hackers-1/">JavaScript for hackers</a> &#8211; a great article, and the title says it all &#8211; well worth read for everyone working with JavaScript.</li>
</ul><img src="http://michaelodden.com/?ak_action=api_record_view&id=301&type=feed" alt="" />

<h2>Related posts:</h2><ul><li><a href='http://michaelodden.com/development/adventures-in-opera-unite/' rel='bookmark' title='Permanent Link: Adventures in Opera Unite'>Adventures in Opera Unite</a></li>
</ul><img src="http://feeds.feedburner.com/~r/unlimitededition/~4/KwFSeNIZdQQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelodden.com/opera-unite/opera-unite-convenient-tips-and-snippets-for-developers/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://michaelodden.com/opera-unite/opera-unite-convenient-tips-and-snippets-for-developers/</feedburner:origLink></item>
		<item>
		<title>Opera Wand security issue AKA how to get passwords saved in the Wand which you don’t remember</title>
		<link>http://feedproxy.google.com/~r/unlimitededition/~3/e_aoShFsgos/</link>
		<comments>http://michaelodden.com/hacking/opera-wand-security-issue-aka-how-to-get-passwords-saved-in-the-wand-which-you-dont-remember/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 12:41:58 +0000</pubDate>
		<dc:creator>michaelo</dc:creator>
				<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://michaelodden.com/?p=320</guid>
		<description><![CDATA[A little note regarding an issue with Opera's Wand, as it's quite simple to gain any saved passwords.


No related posts.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.opera.com/">Opera</a> does, as well as a great amount of other browser, have support for storing login-credentials, making it easy for the users to just click the <a href="http://www.ehow.com/how_2315886_use-wand-opera-browser.html">Wand</a>, or Command+Enter (mac) or ctrl+Enter (Windows) to have the browser autmaticly fill the fields and submit the form. But there are simple ways to extract the passwords.</p>
<p><span id="more-320"></span></p>
<p>Let&#8217;s say you have saved your login-credentials at http://examplecommunity.com/, which consists of a user name and a password. The password-field at the login-page uses type=&#8221;password&#8221; to display asterisks to hide the input from any users watching. Opera has a neat feature which lets you modify the source of any page, and &#8220;Apply&#8221; it to reload it as if it was the original page. So if you changes the type=&#8221;password&#8221; to type=&#8221;text&#8221; (or simply removes it, as text is the default type), and clicks &#8220;Apply&#8221; you might still use the wand, and now the text inserted into the password-field is perfectly visible. It&#8217;s just to hit &#8220;esc&#8221; to cancel the loading of the next page and you have the password written en clear text.</p>
<p>Now, it is unfortunately not usual amongst the browsers that has this kind of feature to have easy ways of working around it, either by hacking the local files which contains the passwords or by some other tricks which differs a little from browser to browser.</p>
<p>There are some ways which webdevelopers might make this a little bit harder, by i.e. including the login-form with <acronym title="JavaScript">JS</acronym> etc, but first of all it&#8217;s a big NO because it&#8217;s bad , bad practice against UA&#8217;s which either not support <acronym title="JavaScript">JS</acronym>, or has it deactivated. Second it&#8217;s just to use the developer-tools and modify the <acronym title="Document Object Model">DOM</acronym> which is created none the less.</p>
<p>Verified with Opera 9.64 and 10.00 beta</p>
<h2>Possibly related</h2>
<p><a href="http://my.opera.com/rejzor/blog/show-passwords-feature-is-a-serious-security-issue-in-firefox-and-chrome">Show passwords feature is a serious security issue in Firefox and Chrome</a></p><img src="http://michaelodden.com/?ak_action=api_record_view&id=320&type=feed" alt="" />

<p>No related posts.</p><img src="http://feeds.feedburner.com/~r/unlimitededition/~4/e_aoShFsgos" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelodden.com/hacking/opera-wand-security-issue-aka-how-to-get-passwords-saved-in-the-wand-which-you-dont-remember/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://michaelodden.com/hacking/opera-wand-security-issue-aka-how-to-get-passwords-saved-in-the-wand-which-you-dont-remember/</feedburner:origLink></item>
		<item>
		<title>URLs should express output-format, not source-format</title>
		<link>http://feedproxy.google.com/~r/unlimitededition/~3/JEUOWny9zJU/</link>
		<comments>http://michaelodden.com/webdevelopment/urls-should-express-output-format-not-source-format/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 23:14:42 +0000</pubDate>
		<dc:creator>michaelo</dc:creator>
				<category><![CDATA[Tip of the day]]></category>
		<category><![CDATA[User-experience]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[file-extensions]]></category>
		<category><![CDATA[url]]></category>

		<guid isPermaLink="false">http://michaelodden.com/?p=296</guid>
		<description><![CDATA[I&#8217;m the kind of guy who always tries to optimize my ways, especially when it comes programming. Over the last years I&#8217;ve worked on/against a multitude of CMS, frameworks and API&#8217;s, and quite often make some thoughts how things could be better, easier and more intuitive. One of these things are regarding how to format [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m the kind of guy who always tries to optimize my ways, especially when it comes programming. Over the last years I&#8217;ve worked on/against a multitude of <acronym title="Content Management System">CMS</acronym>, frameworks and <acronym title="Application Programming Interface">API</acronym>&#8217;s, and quite often make some thoughts how things could be better, easier and more intuitive.</p>
<p>One of these things are regarding how to format a <acronym title="Uniform Resource Locator">URL</acronym>.</p>
<p><span id="more-296"></span></p>
<p>This post isn&#8217;t really server-technically focused, as it is more a discussion of an idea. I&#8217;ll none the less assume that the reader has some familiarity with <a href="http://en.wikipedia.org/wiki/MIME_type">mime-types</a>, basic webserver-settings (<a href="http://technet.microsoft.com/en-us/library/cc771240(WS.10).aspx">like</a> <a href="http://www.google.com/url?sa=t&amp;source=web&amp;ct=res&amp;cd=1&amp;url=http%3A%2F%2Fhttpd.apache.org%2Fdocs%2F2.0%2Fhandler.html&amp;ei=eppKSsbyL5Ph-QbY3pnfBQ&amp;usg=AFQjCNGlmxT6bNAwOk5cEwUNLfQy5GSSMQ&amp;sig2=GlBSqGjdNkmybxQDDlwSNA">handlers</a> and <a href="http://learn.iis.net/page.aspx/460/using-url-rewrite-module/"><acronym title="Uniform Resource Locator">URL</acronym></a>-<a href="http://httpd.apache.org/docs/2.0/misc/rewriteguide.html">rewrite</a>-<a href="http://www.workingwith.me.uk/articles/scripting/mod_rewrite">techniques</a>).</p>
<h2>Why</h2>
<p>As far as I&#8217;m concerned, any <acronym title="Uniform Resource Locator">URL</acronym> should give a hint of what you will find there, and by stripping the file-extension and just sitting left with something that&#8217;ll look like a directory, or using the scripting-language&#8217;s extension, I believe that we works against this. File-extensions gives an important hint regarding what the content is. What do you expect when you see &#8220;.jpg&#8221;, &#8220;.gif&#8221; or &#8220;.png&#8221;? Yes, images. Then what about &#8220;.html&#8221;, &#8220;.txt&#8221; and &#8220;.odf&#8221;? It&#8217;s most likely some kind of text, perhaps formatted. So what does &#8220;.php&#8221;, &#8220;.py&#8221; and &#8220;.aspx&#8221; tell us? Not much &#8211; it mostly a directive to the webserver, telling it to use some kind of parser to compile/process the contents before outputting it. And it might output html, xml or pdf as well as anything else.</p>
<p>A couple of years ago it had a &#8220;coolism&#8221; about it, saying that &#8220;I know how to develop fancy websites&#8221;, but nowadays people mostly expect some kind of interactivity anyway.</p>
<h2>How</h2>
<p>All relevant webservers today have to possibility to map any kind of extensions to any kind of (supported) language-parsers. I.e. with Apache you can use the AddType-directive like this:</p>
<pre>addhandler php5-script html xml json</pre>
<p>- to  parse all .html-, .xml and .json-files in the given directory as <acronym title="Pre-Hypertext Processing">PHP</acronym> 5.</p>
<p>Now, let&#8217;s say you have an <acronym title="Application Programming Interface">API</acronym> which allows you (or perhaps other users), to query a service for information &#8211; and allows it to be delivered in xml, json and html. This is usually solved by adding some parameter like &#8220;of&#8221; (output-format) or something like that in the request to tell which format you&#8217;d like. I prefer to keep everything as logical and reducing the need to look up in manuals as far as reasonably possible, so instead of sending GET-requests like this:</p>
<pre>http://example.com/gateway.php?id=15&amp;key=11341&amp;of=xml

http://example.com/gateway.php?id=15&amp;key=11341&amp;of=json

http://example.com/gateway.php?id=15&amp;key=11341&amp;of=html</pre>
<p>I&#8217;d rather prefer:</p>
<pre>http://example.com/gateway.xml?id=15&amp;key=11341

http://example.com/gateway.json?id=15&amp;key=11341

http://example.com/gateway.html?id=15&amp;key=11341</pre>
<p>This applies just as much for those <a href="http://mallinson.ca/post/mod_rewrite/">sexy</a> <a href="http://www.highrockmedia.com/blog/web-development/search-engine-friendly-urls-a-key-piece-of-the-seo-pie/comment-page-1">search-friendly</a> URLs &#8211; just append .html to that pretty <acronym title="Uniform Resource Locator">URL</acronym>. <a href="http://www.youtube.com/watch?v=dSG6C33GwsE">Google says</a> that it atleast won&#8217;t affect negatively on your ranking &#8211; so why not?</p>
<h2>Possible problems</h2>
<p>There are some obvious problem to this approach:</p>
<p><strong>1: What if you want different parsers (let&#8217;s say php and python) for different files but which will serve the same kind of output? How do we tell the server which to use when?</strong></p>
<p>- Possible solutions to this is to either separate them in different folders (the cleanest approach), or expand the extension to ie. .php.html and .py.html. Perhaps in combination with some mod_rewrite-kind of tricks.</p>
<p><strong>2: What about the overhead for static files, which still is sent through an interpreter although nothing is changed?</strong></p>
<p>- If you are running a service which is sensitive to these kind of margins, you should just use dedicated servers or CDN&#8217;s to deliver the static content no matter what.</p>
<p><strong>3: How far shall we take it? Should we use extensions like .html5 and .xhtml etc?</strong></p>
<p>-  I do believe that these differences are mostly relevant to the software parsing them, so in these cases it may suffice with keeping with i.e. .html, and use the <acronym title="Multipurpose Internet Mail Extension">MIME</acronym>-type to send further details.</p>
<h2>Summary</h2>
<p>Although all my examples might not pinpoint all the benefits I do believe that there is an idea in keeping the file-extension, both to assist external users as well as might reduce some clutter.</p>
<p>What are the pros and cons of an approach like this? I&#8217;ve barely touched a few in this post, but I hope I was able to mention some of the most essential ones.</p><img src="http://michaelodden.com/?ak_action=api_record_view&id=296&type=feed" alt="" />

<p>No related posts.</p><img src="http://feeds.feedburner.com/~r/unlimitededition/~4/JEUOWny9zJU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelodden.com/webdevelopment/urls-should-express-output-format-not-source-format/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		<feedburner:origLink>http://michaelodden.com/webdevelopment/urls-should-express-output-format-not-source-format/</feedburner:origLink></item>
		<item>
		<title>Adventures in Opera Unite</title>
		<link>http://feedproxy.google.com/~r/unlimitededition/~3/qxSuXSxrPcQ/</link>
		<comments>http://michaelodden.com/development/adventures-in-opera-unite/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 09:53:22 +0000</pubDate>
		<dc:creator>michaelo</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Opera Unite]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://michaelodden.com/?p=267</guid>
		<description><![CDATA[Opera recently released Opera Unite claiming to reinvenet the web. I have used Opera Unite the latest week, and been playing around developing for it just as long. Heres what I think about it and have learned so far. What is Opera Unite Opera Unite is the latest member in the Opera-family and brings some [...]

<h2>Related posts:</h2><ul><li><a href='http://michaelodden.com/opera-unite/opera-unite-convenient-tips-and-snippets-for-developers/' rel='bookmark' title='Permanent Link: Opera Unite: Convenient tips and snippets for developers'>Opera Unite: Convenient tips and snippets for developers</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Opera recently released Opera Unite claiming to reinvenet the web. I have used <a href="http://unite.opera.com">Opera Unite</a> the latest week, and been playing around developing for it just as long. Heres what I think about it and have learned so far. <span id="more-267"></span></p>
<h2>What is Opera Unite</h2>
<p>Opera Unite is the latest member in the Opera-family and brings some new ideas to the table. Opera calls it &#8220;Reinventing the web&#8221; &#8211; those kinds of claims will <a href="http://www.guardian.co.uk/technology/blog/2009/jun/17/opera-unite">of course</a> <a href="http://themacsucks.com/2009/06/opera-unite-why/">provoke</a> <a href="http://slashdot.org/story/09/06/18/1419227/Opera-Unite-is-a-Hail-Mary">a lot</a> of people (especially the <a href="http://www.theregister.co.uk/2009/06/22/dziuba_opera_unite/">know-alls</a>). It does perhaps not reinvent the web, but it does give the users more power and controll of their own data again, as was intended in the &#8211; oh so far away &#8211; beginning of the web</p>
<p>Opera&#8217;s idea is that you should be able to share your own data easily and with whoever you want, and to achieve this Opera has bundled the browser with a <strong>web-server</strong>. The applications you can share with Opera Unite is closely related to the Opera-widgets, but gives a little more power &#8211; i.e. access to the server and file-system through <acronym title="JavaScript">JS</acronym>. So by using standard web-technologies (<acronym title="Scalable Vector Graphics">SVG</acronym>, HTML5, <acronym title="Cascading Style Sheets">CSS</acronym>, <acronym title="JavaScript">JS</acronym>&#8230;) you can now pretty easily develop server-applications as well.</p>
<p>A popular rant-attack is against the fact that you have to create an opera-account to get this up and running, as Opera uses a proxy (operaunite.com) to organize the traffic and getting through your router. A lot of people complain of this as &#8220;Opera monitoring our data&#8221; (like this isn&#8217;t possible for Google and Facebook already) &#8211; so listen: as long as you&#8217;re connected to the Internet, your data will pass through quite some servers no matter what. Though luck. Now, if this is a service that will stand the test of time and users, I will expect the possibility for users to either run their own proxy-services or <a href="http://dev.opera.com/articles/view/custom-domains-opera-unite/">bypass it all together</a>.</p>
<p>Now, what concerns me the most right now, is the <strong>security-aspect</strong>. A lot of people will by running Opera Unite give any bad people out there (yup, I know you&#8217;re out there!) one more frontier to fight on &#8211; they can now attack the Opera Unite-server running on your computer, as well as attacking the browser. This means that Opera has to be extremely thorough to eliminate any security-issues that surely will come.</p>
<p>Beside of this, I&#8217;m very excited in seeing how this will evolve. They have released some <a href="http://dev.opera.com/articles/unite">developer-resources</a> already, and I&#8217;m sure more will come &#8211; so I&#8217;m eager to see how developers out there will develop creative tools to run under Unite.</p>
<h2>Developer-experiences so far</h2>
<p>As this is still in alpha there are a lot of issues I assume will get better when getting closer to release-date. This is meant as tips to other developers more or less new to Unite-development.</p>
<h3>Initiating your app</h3>
<p>You will need a config.xml, index.html and a javascript-file to get started. Your app can have a setup like this:</p>
<ul>
<li>myapp/</li>
<li> <a href="http://dev.opera.com/articles/view/opera-unite-developer-primer/#serviceconfig">config.xml</a></li>
<li> <a href="http://dev.opera.com/articles/view/opera-unite-developer-primer/#serviceindex">index.html</a></li>
<li> <a href="http://dev.opera.com/articles/view/opera-unite-developer-primer/#servicescript">script.js</a></li>
</ul>
<p>See the config.xml-link for details of the setup of this. The index.html can be a very simple HTML5-file, ie like this:</p>
<pre class="html" name="code">&lt;!DOCTYPE html&gt;
&lt;script src="script.js"&gt;&lt;/script&gt;</pre>
<p>Now we&#8217;re getting started, I&#8217;ll give an excerpt of a script.js-file, and give an idea of how it can look:</p>
<pre class="javascript" name="code">window.onload = function () {
    w = opera.io.webserver
    if (w)
        // the default page, kind of like index.html : )
        w.addEventListener('_index', showMainPage, false);
        // And two common
        w.addEventListener('newEntry', newEntry, false);
        w.addEventListener('editEntry', editEntry, false);
    }
}

function showMainPage(e) {
    var response = e.connection.response;
    var myhtml = "&lt;!DOCTYPE html&gt;&lt;head&gt;&lt;title&gt;AppTitle&lt;/title&gt;/head&gt;&lt;body&gt;&lt;h1&gt;Welcome!&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt;";
    response.write(myhtml);
    response.close();
}</pre>
<p>- As you probably can see, we are adding event-listeners to the webserver to listen for actions, and every page/action of an application requires it&#8217;s own method which takes care of the logics and displays any contents by writing the necessary <acronym title="HyperText Markup Language">HTML</acronym>. This is good explained in <a href="http://dev.opera.com/libraries/unite/docs/">Opera&#8217;s documentation</a> so I won&#8217;t dive further into that here.</p>
<p>What I&#8217;d rather like to mention is those things that will &#8220;crash&#8221; your app:</p>
<p>Every action-method <strong>must</strong> accept a named argument for the event-object &#8211; which in turn will give access to the <em>response </em>and <em>request</em>-objects. If not specifically named, then the app won&#8217;t load.</p>
<p>You will also have to write something (response.write(&#8220;something&#8221;)) _and_ close the response (response.close()) in the current action, otherwise the app won&#8217;t load.</p>
<h3>Markuper</h3>
<p>Opera does also give out a <a href="http://dev.opera.com/articles/view/markuper-unite-template-library/">template-helper</a>, which is just a <acronym title="JavaScript">JS</acronym>-library which will come handy. I haven&#8217;t found a place that distributes it in an organized manner, but you may download it as a part of the barebone-example in the previous link, or you may dissect any of the existing apps (download the .us-file, rename to .zip and extract). It seems there are some different versions out there so beware.</p>
<h4>The templater doesn&#8217;t currently seem to allow variables in attributes</h4>
<p>This is cumbersome, as I&#8217;d like to do something like this:</p>
<pre class="html" name="code">&lt;div id="content" data-import="templates/{{page}}.html"&gt;&lt;/div&gt;</pre>
<p>I assume this will be fixed, as it seems &#8211; when skimming through the library &#8211; that it should have been taken care of in the XPath-expression looking for the variables. <del>I&#8217;m working on a patch.</del></p>
<div class="update-inpost"><strong>Update:</strong><br />
Ref comment from <a href="http://michaelodden.com/development/adventures-in-opera-unite/comment-page-1/#comment-1888">António Afonso</a>, it seems that it&#8217;s only the data-attributes (used for importing, iterating through lists etc), that were affected of this. The &#8220;patch&#8221; is simple:</p>
<ol>
<li>Open the template.js</li>
<li>Find the method &#8220;this.parse = function( data )&#8221; (line 1439)</li>
<li>Switch the order of the <code>this.parseDataAttributes( data )</code> and <code>this.fillValues( data )</code>-calls</li>
<li>Save and go on!</li>
</ol>
</div>
<h4>Imported files through the templater can&#8217;t be empty</h4>
<p>If you try do something like this:</p>
<pre class="html" name="code">&lt;div id="content" data-import="templates/content.html"&gt;&lt;/div&gt;</pre>
<p>and the &#8220;content.html&#8221;-file is empty, then the app won&#8217;t load :p.</p>
<h3>404 Not found</h3>
<p>If you get the &#8220;404 Not found &#8211; Resource not found&#8221; it&#8217;s propably a <acronym title="JavaScript">JS</acronym>-error. Unfortunately you won&#8217;t get any better debug-messages by now if you haven&#8217;t implemented it yourself (see the &#8220;Notifications&#8221;-part of this post). Take a close look at your code, and I assume Opera will fix integration with dragonfly in upcoming releases.</p>
<h3>POST and GET</h3>
<p><strong>GET</strong>: e.connection.request.queryItems['id'][0]</p>
<p><strong>POST</strong>: e.connection.request.bodyItems['title'][0]</p>
<h3>Custom fonts</h3>
<pre class="css" name="code">@font-face {
    font-family: MyFancyFont;
    src: url('fonts/MyFancyFont.ttf');
}
/* Use like this: */
body {
    font-family: MyFancyFont;
}</pre>
<p>This is pretty obvious of course, as the new Opera-engine, Presto, has support for a lot of snacks when coming to <acronym title="HyperText Markup Language">HTML</acronym>, <acronym title="Cascading Style Sheets">CSS</acronym> and <acronym title="Scalable Vector Graphics">SVG</acronym> &#8211; and hopefully soon more <acronym title="JavaScript">JS</acronym>-snacks will come as well.</p>
<h3>Notifications</h3>
<p>You will more than once want to give some kind of notifications, either to yourself as developer or to the end-users. Notifications can ie be debug-messages, or event-messages like incoming message in an <acronym title="Instant Message">IM</acronym>-app.</p>
<p><strong>opera.postError()</strong> will let you post a message which only will appear in the error-console.</p>
<p><strong>widget.showNotification()</strong> will pop up a message in the lower right corner of the screen. It&#8217;s possible to attach a callback-function which will be called when/if the user clicks on the message.</p>
<pre class="javascript" name="code">void opera.postError( &lt;String&gt; message)
void widget.showNotification( &lt;String&gt; message, &lt;Function&gt; callback )</pre>
<h3>Quick tips</h3>
<p>If you want to test any changes made to the javascript-files, you will have to restart the app. If you&#8217;ve just changed any <acronym title="HyperText Markup Language">HTML</acronym>-files ie for the Markuper, you can just reload the page as you&#8217;d normally do. If none of them seem to work, you might have to remove the app and install it again. Remember to empty the trash as well before installing!</p>
<h3>Packaging the app</h3>
<p>The app-packages are simply zipped folders, renamed to the prefix &#8220;.us&#8221; (Unite Service), and to install it it&#8217;s only to drag-drop the file onto an Opera Unite-able browser, or if you want to share it online, give it a link like this:</p>
<pre class="html" name="code">&lt;a type="application/x-opera-uniteservice" href="url/to/myapp.us"&gt;Install myapp&lt;/a&gt;</pre>
<h2>Possibly related reading</h2>
<ul>
<li><a href="http://unite.opera.com/">Opera Unite Official Site</a></li>
<li><a href="http://dev.opera.com/articles/unite">Opera Unite Developer Resources</a></li>
<li><a href="http://dev.opera.com/libraries/unite/docs/">Unite <acronym title="Application Programming Interface">API</acronym> Overview</a></li>
<li><a href="http://unitehowto.com/">Opera Unite Howto&#8217;s</a></li>
<li><a href="http://www.guardian.co.uk/technology/blog/2009/jun/17/opera-unite">Is Opera Unite a revolution, or is it just the fat lady singing?</a></li>
<li><a href="http://ostatic.com/blog/opera-breathes-down-firefoxs-and-chromes-necks-with-unite">Opera breathes down Firefox&#8217;s and Chrome&#8217;s Necks</a></li>
<li><a href="http://dev.opera.com/articles/view/custom-domains-opera-unite/">Setting up custom domains for Opera Unite</a></li>
<li><a href="http://dev.opera.com/articles/view/how-to-debug-javascript-problems-with-op/">How to debug JavaScript problems with Opera</a></li>
<li><a href="http://dev.opera.com/libraries/widgetobject/docs/widget.dml">API: The widget-class</a></li>
<li><a href="http://robertnyman.com/2009/06/23/opera-unite-some-questions-and-answers/">Unite: Some questions and answers</a></li>
</ul><img src="http://michaelodden.com/?ak_action=api_record_view&id=267&type=feed" alt="" />

<h2>Related posts:</h2><ul><li><a href='http://michaelodden.com/opera-unite/opera-unite-convenient-tips-and-snippets-for-developers/' rel='bookmark' title='Permanent Link: Opera Unite: Convenient tips and snippets for developers'>Opera Unite: Convenient tips and snippets for developers</a></li>
</ul><img src="http://feeds.feedburner.com/~r/unlimitededition/~4/qxSuXSxrPcQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelodden.com/development/adventures-in-opera-unite/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://michaelodden.com/development/adventures-in-opera-unite/</feedburner:origLink></item>
		<item>
		<title>My favourite guitarists</title>
		<link>http://feedproxy.google.com/~r/unlimitededition/~3/uILS05lPyCI/</link>
		<comments>http://michaelodden.com/music/my-favourite-guitarists/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 18:48:42 +0000</pubDate>
		<dc:creator>michaelo</dc:creator>
				<category><![CDATA[Music]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[david gilmour]]></category>
		<category><![CDATA[don felder]]></category>
		<category><![CDATA[Guitar]]></category>
		<category><![CDATA[marius müller]]></category>
		<category><![CDATA[mark knopfler]]></category>
		<category><![CDATA[nils lofgren]]></category>
		<category><![CDATA[srv]]></category>
		<category><![CDATA[stevie ray vaughan]]></category>
		<category><![CDATA[øystein sunde]]></category>

		<guid isPermaLink="false">http://blog.michaelodden.com/?p=41</guid>
		<description><![CDATA[As anyone who barely know me knows, I&#8217;m very passionate regarding music, and even more when it comes to guitars &#8211; which for me is the instrument which the best allows a single player to express himself. So this post goes out to generally all musicians and music-lovers out there, and specifically to all of [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>As anyone who barely know me knows, I&#8217;m very passionate regarding music, and even more when it comes to guitars &#8211; which for me is the instrument which the best allows a single player to express himself.  So this post goes out to generally all musicians and music-lovers out there, and specifically to all of you guitar players &#8211; no matter if you&#8217;re pro, semi-pro, wannabe, nachspiel-hero or a complete newbie just eager to learn how to play.  I will also, as well, tell you short about some of my favourite guitarists &#8211; I could go on forever <img src='http://michaelodden.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  :<span id="more-41"></span></p>
<h2>Stevie Ray Vaughan (1954 &#8211; 1990)</h2>
<p>Stevie (<acronym title="Stevie Ray Vaughan">SRV</acronym>)  is my personal favourite musician and guitar-player &#8211; no doubt. He has an amazing energy (watch any concert) and is a true maestro on the guitar besides being a good song-writer and a descent singer. The genre of choice was mainly electric blues, and few others have made such an impact on the genre as he has. He was again inspired by artists such as Jimi Hendrix and Albert King.  <acronym title="Stevie Ray Vaughan">SRV</acronym> Died as a result of a tragic helicopter accident on October 3, 1990.</p>
<h3>Recommended treats &#8211; (Album in parenthesis)</h3>
<ul>
<li><a href="http://www.youtube.com/watch?v=NU0MF8pwktg">Pride and joy</a> (Texas Flood)</li>
<li><a href="http://www.youtube.com/watch?v=Tde8nLvrE7U">Love struck baby</a> (Texas Flood)</li>
<li><a href="http://www.youtube.com/watch?v=eEjqdNi6yOo">Wham</a> (The Sky is Crying)</li>
<li><a href="http://www.youtube.com/watch?v=KCHVpDwMS2k">Rude mood</a> (Texas Flood)</li>
<li><a href="http://www.youtube.com/watch?v=PPhmbgS_xbU&amp;feature=related">Come on pt 3</a> (Soul to soul) ( <a href="http://www.youtube.com/watch?v=sozVF5e9uvU">Jimi Hendrix &#8211; Come on pt 1</a>, <a href="http://www.youtube.com/watch?v=R1sRdPZI_i8">Earl King- Come on</a>)</li>
<li><a href="http://www.youtube.com/watch?v=B7SS0yezCU4">Life by the drop</a> (The Sky is Crying)  - A cover originally by Doyle Bramhall and Barbara Logan &#8211; about Doyle and Stevies friendship</li>
<li><a href="http://www.youtube.com/watch?v=ajpe6OYSq_w">MTV Unplugged &#8211; Rude Mood, Pride and Joy and Testify</a></li>
</ul>
<h2>Marius Müller (1958 &#8211; 1999)</h2>
<p>One of the greatest Norwegian musicians and guitarists that I know of. He is greatly underrated as far as I feel, partly because he&#8217;s commercially only remembered for the songs &#8220;<a href="http://www.youtube.com/watch?v=uVRT2O9L3vk">Den du veit</a>&#8221; and &#8220;<a href="http://www.youtube.com/watch?v=1pRwyAqkeJo">Carmen</a>&#8220;, whereas &#8220;Den du veit&#8221; is an easygoing rock-tune and Carmen is a ballad although with some beautiful guitar-parts.</p>
<p>Marius died as a result of feeling ill while driving.</p>
<p>Check him out at Spotify or buy a <acronym title="Compact Disc">CD</acronym> or three.</p>
<h3>Recommended treats</h3>
<ul>
<li>My town (The Big Beat)</li>
<li>Your blues (Plugged!)</li>
<li>Soul of a man (Big / Plugged!)</li>
<li>Sunburst Shuffle (Seks)</li>
<li><a href="http://www.youtube.com/watch?v=rzOzWD7cQWs">Ikke tru et ord</a> (Marius Müller) &#8211; Norwegian Thin Lizzy-cover <img src='http://michaelodden.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </li>
</ul>
<h2>David Gilmour (1946 &#8211; 2009-and-counting)</h2>
<p>While perhaps not the most technically skilled guitarists, he has an distinct style and adds a heck of a lot of attitude and feelings to his compositions which never fails to impress me. Adding this to his eminent songwriting-skills &#8211; it just gives me the goosebumps. Every time. His best work is together with Pink Floyd, but he do have a lot worth listening to when it comes to his solo-albums as well.</p>
<h3>Recommended treats</h3>
<ul>
<li>Pink Floyd &#8211; <a href="http://www.youtube.com/watch?v=6nzIKAhNTW0">Shine on you crazy diamond</a> (Dark Side Of The Moon)</li>
<li>Pink Floyd &#8211; <a href="http://www.youtube.com/watch?v=JWnapx502uQ">Comfortably Numb</a> (The Wall)</li>
<li>Pink Floyd &#8211; <a href="http://www.youtube.com/watch?v=RyL2vAUVOM0">Time</a> (Dark Side Of The Moon)</li>
<li>Pink Floyd &#8211; <a href="http://www.youtube.com/watch?v=qV7cWhmoG9w">Lost for words</a> (The Division Bell)</li>
<li>Pink Floyd &#8211; <a href="http://www.youtube.com/watch?v=UB-t39ySEx0&amp;feature=related">Coming back to life</a> (The Division Bell)</li>
</ul>
<h2>But there are more &#8211; lots more</h2>
<p>There are many great guitarists out there, no doubt. Some other personal favourites worth mentioning are Don Felder of The Eagles (used to be, at least); Mark Knopfler of Dire Straits (ah, <a href="http://www.youtube.com/watch?v=J6o_nEcl5hI">Brothers in arms</a> &#8211; beautiful!); Nils Lofgren of the E-street band and Crazy Horse &#8211; but I admire him the most for his solo-work (check out his &#8220;Acoustic Live&#8221;); and <a href="http://www.youtube.com/watch?v=4Tq5O98v1F4">of</a> <a href="http://www.youtube.com/watch?v=EYJyQ94m2-g">course</a> <a href="http://www.youtube.com/watch?v=Ba8l_cb8vds">Øystein Sunde</a>.</p>
<p>Everyone mentioned here could of course fill a bunch of posts each and every one, but as I like to keep it short and simple I&#8217;ll let the clips &#8220;speak&#8221; for them selves <img src='http://michaelodden.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p><img src="http://michaelodden.com/?ak_action=api_record_view&id=41&type=feed" alt="" />

<p>No related posts.</p><img src="http://feeds.feedburner.com/~r/unlimitededition/~4/uILS05lPyCI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelodden.com/music/my-favourite-guitarists/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://michaelodden.com/music/my-favourite-guitarists/</feedburner:origLink></item>
		<item>
		<title>Tip of the day: A good old SSH-timesaver</title>
		<link>http://feedproxy.google.com/~r/unlimitededition/~3/2ZqmAqKnRy4/</link>
		<comments>http://michaelodden.com/tip-of-the-day/tip-of-the-day-a-good-old-ssh-timesaver/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 09:50:51 +0000</pubDate>
		<dc:creator>michaelo</dc:creator>
				<category><![CDATA[Tip of the day]]></category>
		<category><![CDATA[ssh tip]]></category>

		<guid isPermaLink="false">http://michaelodden.com/?p=256</guid>
		<description><![CDATA[Combining SSH-aliases with public key authentication, and then I reduced the amount of typing by about 34 chars (from 41 to 7) for each time I connect to one of my usual SSH-servers. In a day that&#8217;ll probably save enough time to go and get me a nice cold beer. Mmm! Ah, those little things No [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Combining <a href="http://fabien.potencier.org/article/19/quick-ssh-tip"><acronym title="Secure Shell">SSH</acronym>-aliases</a> with <a href="http://www.petefreitag.com/item/532.cfm">public key authentication</a>, and then I reduced the amount of typing by about <strong>34 chars</strong> (from 41 to 7) for each time I connect to one of my usual <acronym title="Secure Shell">SSH</acronym>-servers.</p>
<p>In a day that&#8217;ll probably save enough time to go and get me a nice cold beer. Mmm! Ah, those little things <img src='http://michaelodden.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p><img src="http://michaelodden.com/?ak_action=api_record_view&id=256&type=feed" alt="" />

<p>No related posts.</p><img src="http://feeds.feedburner.com/~r/unlimitededition/~4/2ZqmAqKnRy4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelodden.com/tip-of-the-day/tip-of-the-day-a-good-old-ssh-timesaver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://michaelodden.com/tip-of-the-day/tip-of-the-day-a-good-old-ssh-timesaver/</feedburner:origLink></item>
		<item>
		<title>table-row-highlighter.js – now as jQuery-plugin</title>
		<link>http://feedproxy.google.com/~r/unlimitededition/~3/53x1xZwZQPc/</link>
		<comments>http://michaelodden.com/webdevelopment/table-row-highlighterjs-now-as-jquery-plugin/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 13:37:07 +0000</pubDate>
		<dc:creator>michaelo</dc:creator>
				<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[table-row-highlighter]]></category>

		<guid isPermaLink="false">http://michaelodden.com/?p=234</guid>
		<description><![CDATA[In an effort to make it easier integratable to existing environments, I have now created a jQuery-plugin as well. Thanks to Mats as well for suggesting it! See the original blogpost &#8211; for information of the concept &#8211; or go straight to the demo-page or jquery-demo-page to watch it in action. jQuery has turned out [...]

<h2>Related posts:</h2><ul><li><a href='http://michaelodden.com/webdevelopment/table-row-highlighterjs/' rel='bookmark' title='Permanent Link: table-row-highlighter.js'>table-row-highlighter.js</a></li>
<li><a href='http://michaelodden.com/development/usability-tips-for-your-application-part-i/' rel='bookmark' title='Permanent Link: Usability-tips for your application (Part I)'>Usability-tips for your application (Part I)</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>In an effort to make it easier integratable to existing environments, I have now created a jQuery-plugin as well. Thanks to <a href="http://e-mats.org">Mats</a> as well for <a href="http://michaelodden.com/webdevelopment/table-row-highlighterjs/comment-page-1/#comment-1844">suggesting it</a>!</p>
<p>See the <a href="http://michaelodden.com/webdevelopment/table-row-highlighterjs/">original blogpost</a> &#8211; for information of the concept &#8211; or go straight to the <a href="http://michaelodden.com/labs/js/table-row-highlighter/">demo-page</a> or <a href="http://michaelodden.com/labs/js/table-row-highlighter/jquery-demo.php">jquery-demo-page</a> to watch it in action.<span id="more-234"></span> <a href="http://jquery.com/">jQuery</a> has turned out to be the tool of choice for many developers out there, both because of it ease of use and it&#8217;s powerful features.  Although jQ might be a little overkill for some applications, it has the sleakest way of packaging a lot of functionality and allowing for modularity through plugins as I&#8217;ve experienced so far. Feel free to contribute if you&#8217;d like <img src='http://michaelodden.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , i.e. adapting it to other frameworks or suggest new neat features.</p>
<p>Please give it a try and let me know what you think!</p>
<h2>Download</h2>
<ul>
<li><a href="http://michaelodden.com/labs/js/table-row-highlighter/jquery.trh-0.3.js">jquery.trh-0.3.js</a> (4.5kB)</li>
<li><a href="http://michaelodden.com/labs/js/table-row-highlighter/jquery.trh-0.3.min.js">jquery.trh-0.3.min.js</a> (1.8kB)</li>
</ul>
<h2>Activation</h2>
<pre class="javascript" name="code">$(document).ready(function() {
  var params = {}; // See the jquery-demo-page for available parameters
  $("table").highlighter(params);
});</pre>
<h2>Known limitations</h2>
<p>You should avoid activating it at more than one table on each page for now &#8211; the next version will have fixed this with several activation-modes. The next version will also include dynamic column-selection as well, allowing i.e. to let the users press any column to match against.</p>
<h2>Possibly related</h2>
<ul>
<li><a href="http://visionwidget.com/toolz/8-web-development/47-10-table-plugin-jquery-learned.html">10 Table Plugin For jQuery Must To Be Learned</a>
</li>
</ul><img src="http://michaelodden.com/?ak_action=api_record_view&id=234&type=feed" alt="" />

<h2>Related posts:</h2><ul><li><a href='http://michaelodden.com/webdevelopment/table-row-highlighterjs/' rel='bookmark' title='Permanent Link: table-row-highlighter.js'>table-row-highlighter.js</a></li>
<li><a href='http://michaelodden.com/development/usability-tips-for-your-application-part-i/' rel='bookmark' title='Permanent Link: Usability-tips for your application (Part I)'>Usability-tips for your application (Part I)</a></li>
</ul><img src="http://feeds.feedburner.com/~r/unlimitededition/~4/53x1xZwZQPc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michaelodden.com/webdevelopment/table-row-highlighterjs-now-as-jquery-plugin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://michaelodden.com/webdevelopment/table-row-highlighterjs-now-as-jquery-plugin/</feedburner:origLink></item>
	</channel>
</rss>
