<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description></description><title>Something something</title><generator>Tumblr (3.0; @arnemart)</generator><link>http://am.aurlien.net/</link><item><title>Safari Keyword Search and Safari 5.2</title><description>&lt;p&gt;So I have a &lt;a href="http://safarikeywordsearch.aurlien.net/"&gt;modestly popular Safari extension&lt;/a&gt; that enables keyword search from the address bar. This extension relies on an event called &lt;code&gt;beforeNavigate&lt;/code&gt;, which is triggered whenever a user tries to load a url. This event has been available for extensions since Safari 5.1.&lt;/p&gt;

&lt;p&gt;The event is kind of tricky to work with for what I’m trying to do, since it is triggered after Safari has tried to parse whatever text was entered in the address bar into a URL. This means that when a user types &lt;strong&gt;g monkey&lt;/strong&gt;, the event provides the URL &lt;code&gt;http://g%20monkey/&lt;/code&gt;, making parsing harder than it should be, especially for the default keywordless search (which is Googles “I am feeling lucky”). In addition the search phrase a user enters cannot contain a colon symbol, as that causes Safari to show an error page before the event is triggered.&lt;/p&gt;

&lt;p&gt;These are minor annoyances but work-aroundable. The real problem is Safari 5.2, which unifies the search bar and the address bar into a single text field that is similar to (but much less capable than) the Omnibar in Chrome. What now happens is that anything that doesn&amp;#8217;t look like a URL is turned into a web search, before the &lt;code&gt;beforeNavigate&lt;/code&gt; event is triggered. That means that the data sent along with the event looks like &lt;code&gt;&lt;a href="http://google.com"&gt;http://google.com&lt;/a&gt;?q=g%20monkey&lt;/code&gt;. This could still be parseable by the extension, but it is impossible to know whether the user entered it as a keyword search or actually want to search google for &amp;#8220;g monkey&amp;#8221;.&lt;/p&gt;

&lt;p&gt;Needless to say this regression makes my extension broken and useless in Safari 5.2. I have reported this issue to Apple, and suggested three possible ways to fix it, in order of preference:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;Implement custom keyword searching from the addres bar in Safari, like other browsers has. This would obviate the need for my extension.&lt;/li&gt;
&lt;li&gt;Create a new API event that is triggered before the text entered into the address bar is parsed into a URL.&lt;/li&gt;
&lt;li&gt;Fix the API, so it works like it did in Safari 5.1.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Fingers are crossed.&lt;/p&gt;</description><link>http://am.aurlien.net/post/19346990224</link><guid>http://am.aurlien.net/post/19346990224</guid><pubDate>Thu, 15 Mar 2012 17:18:00 +0100</pubDate></item><item><title>Safari Keyword Search (updated)</title><description>&lt;p&gt;Lion is out, and with it Safari 5.1. This release of Safari disables one of my must-have plugins, &lt;a href="http://alexstaubo.github.com/keywurl/"&gt;Keywurl&lt;/a&gt;. This plugin uses SIMBL to hack into the Safari binary and provides keyword search from the address bar. I have become utterly dependent on this, and feel really crippled when it doesn&amp;#8217;t work.&lt;/p&gt;

&lt;p&gt;Safari 5.1 contains some cool new stuff for extension developers, however, one of the new features being the &lt;a href="http://developer.apple.com/library/safari/#documentation/Extensions/Reference/SafariBeforeNavigateEventClassRef/SafariBeforeNavigateEvent.html#//apple_ref/doc/uid/TP40010860"&gt;SafariBeforeNavigate event&lt;/a&gt;. This event is triggered before any page is loaded, and can be used to implement the same functionality as Keywurl.&lt;/p&gt;

&lt;p&gt;Accordingly, I did the only right thing, and created a Safari extension that performs keyword search. At the moment there is no interface for setting it up, so you&amp;#8217;ll have to edit the code and install the extension via the Extension Builder using your own developer certificate, but that will probably change in the future. Installation instructions are available on &lt;a href="https://github.com/arnemart/SafariKeywordSearch"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Update&lt;/em&gt;: The extension now has an integrated editor, accessible on right-click.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/arnemart/SafariKeywordSearch"&gt;Get the extension on GitHub&lt;/a&gt;&lt;/p&gt;</description><link>http://am.aurlien.net/post/7880139094</link><guid>http://am.aurlien.net/post/7880139094</guid><pubDate>Thu, 21 Jul 2011 11:12:00 +0200</pubDate></item><item><title>Presenting flickable.js</title><description>&lt;p&gt;So I made a simple javascript-thing for creating iOS-style flickable image galleries on smartphones and tablets and such. You can view a demo on &lt;a href="http://flickable.aurlien.net"&gt;flickable.aurlien.net&lt;/a&gt; (works in desktop browser too, although it isn&amp;#8217;t quite practical), and download the source code on &lt;a href="https://github.com/arnemart/Flickable"&gt;GitHub&lt;/a&gt;. It is quite slick, has no dependencies, and uses CSS3&amp;#160;3d-transforms for optimal performance. Check it out.&lt;/p&gt;</description><link>http://am.aurlien.net/post/7796618848</link><guid>http://am.aurlien.net/post/7796618848</guid><pubDate>Tue, 19 Jul 2011 10:03:02 +0200</pubDate></item><item><title>Anonymous recursion in 6 lines of Javascript</title><description>&lt;p&gt;…without using &lt;code&gt;arguments.callee&lt;/code&gt;!&lt;/p&gt;

&lt;p&gt;I have read several “simple” introductions to the Y combinator (some of which are truly excellent), but I don’t know if I’ll ever manage to wrap my head completely around it, and it seems a bit verbose in use (at least in Javascript). It is a very cool concept though, and I decided to try implementing something similar (but possibly simpler) on my own. I managed to do this by using Javascript-specific stuff, specifically dicking around with &lt;code&gt;arguments&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Technically, what I came up with is not exactly the same as the Y combinator, but its purpose is the same: To allow anonymous recursion. I’ve taken the liberty of calling it “the Z combinator” and it looks something like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;function Z(func) {
  var fun = function() {
    return func.apply(null, [fun].concat([].slice.apply(arguments)));
  };
  return fun;
}

var fact = Z(function(rec, i) {
  if (i === 0) {
    return 1;
  } else {
    return i * rec(i-1);
  }
});

fact(4); //24

// It can also be inlined:
Z(function(rec, i) { return i===0 ? 1 : i * rec(i-1); })(4); // 24
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The Z combinator takes a function as an argument, and returns a new function that wraps the original and prepends itself to the argument list (if that makes any kind of sense). When recursing, the function should use call first parameter (&lt;code&gt;rec&lt;/code&gt;, in this case) instead of calling itself by name. Thus, anonymous recursion! Maybe not very useful, but it was fun to do.&lt;/p&gt;</description><link>http://am.aurlien.net/post/2810658101</link><guid>http://am.aurlien.net/post/2810658101</guid><pubDate>Tue, 18 Jan 2011 14:09:00 +0100</pubDate><category>javascript</category></item><item><title>22 seconds from outside work yesterday morning.</title><description>&lt;iframe src="//www.tumblr.com/video/arnemart/1657931875/400" id="tumblr_video_iframe_1657931875" class="tumblr_video_iframe" width="400" height="225" style="display:block;background-color:transparent;overflow:hidden;" allowTransparency="true" frameborder="0" scrolling="no" webkitAllowFullScreen mozallowfullscreen allowFullScreen&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;22 seconds from outside work yesterday morning.&lt;/p&gt;</description><link>http://am.aurlien.net/post/1657931875</link><guid>http://am.aurlien.net/post/1657931875</guid><pubDate>Tue, 23 Nov 2010 12:02:22 +0100</pubDate></item><item><title>How do you sort a Javascript object?</title><description>&lt;p&gt;In my last project at work, I had to work with fairly large data structures in Javascript. More than once I needed to sort data stored in Javascript objects. Javascript objects are by definition unsorted, so naturally there is no built-in way of doing this. All browsers, however, keep objects in the order that properties were added, so I decided to write a comprehensive sorting function.&lt;/p&gt;

&lt;p&gt;This function will sort a Javascript object by key, value or predicate function, by transforming it to a temporary array and using the built-in Array.sort() on that. Here it is in all its glory:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sortObj = function(obj, type, caseSensitive) {
  var temp_array = [];
  for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
      if (!caseSensitive) {
        key = (key['toLowerCase'] ? key.toLowerCase() : key);
      }
      temp_array.push(key);
    }
  }
  if (typeof type === 'function') {
    temp_array.sort(type);
  } else if (type === 'value') {
    temp_array.sort(function(a,b) {
      var x = obj[a];
      var y = obj[b];
      if (!caseSensitive) {
        x = (x['toLowerCase'] ? x.toLowerCase() : x);
        y = (y['toLowerCase'] ? y.toLowerCase() : y);
      }
      return ((x &amp;lt; y) ? -1 : ((x &amp;gt; y) ? 1 : 0));
    });
  } else {
    temp_array.sort();
  }
  var temp_obj = {};
  for (var i=0; i&amp;lt;temp_array.length; i++) {
    temp_obj[temp_array[i]] = obj[temp_array[i]];
  }
  return temp_obj;
};
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And here are a couple of usage examples:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;var obj = {c:'b',a:'c',b:'a'};

// Sort by key
sortObj(obj);
// {a:'c',b:'a',c:'b'}

// Sort by value
sortObj(obj, 'value');
// {b:'a',c:'b',a:'c'}

// Sort by predicate function
sortObj(obj, function(a,b) {
  var data = {a:2,b:1,c:3};
  var x = data[a];
  var y = data[b];
  return ((x &amp;lt; y) ? -1 : ((x &amp;gt; y) ? 1 : 0));
});
// {b:'a',a:'c':c:'a'}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you want the sort to be case-sensitive, set the second parameter of &lt;code&gt;.sort()&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;As always when extending &lt;code&gt;Object.prototype&lt;/code&gt;, don’t forget to use &lt;code&gt;hasOwnProperty&lt;/code&gt; when iterating over the object. But you’re of course doing that already, right?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Be careful using this with Chrome. If your object has both numbers and strings as keys, Chrome will sort the object with the number-keys first, even when sorting by value. Example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;var obj = {a:2, b:1, 1:'a'};
obj.sort('value'); // Other browsers: {b:1, a:2, 1:'a'}, Chrome: {1:'a', b:1, a:2}
&lt;/code&gt;&lt;/pre&gt;</description><link>http://am.aurlien.net/post/1221493460</link><guid>http://am.aurlien.net/post/1221493460</guid><pubDate>Fri, 01 Oct 2010 15:15:00 +0200</pubDate><category>Javascript</category></item><item><title>Oh, and by the way</title><description>&lt;p&gt;A sincere THANK YOU to all those who have given &lt;a href="http://color.aurlien.net"&gt;color.aurlien.net&lt;/a&gt; the upwards-ponting thumb on StumbleUpon — I’ve had over 25.000 visitors in a month, which is &lt;em&gt;awesome&lt;/em&gt;. Thanks, guys!&lt;/p&gt;</description><link>http://am.aurlien.net/post/840610265</link><guid>http://am.aurlien.net/post/840610265</guid><pubDate>Wed, 21 Jul 2010 14:40:58 +0200</pubDate></item><item><title>map( ) for Javascript objects</title><description>&lt;p&gt;I recently had use for a &lt;a href="http://en.wikipedia.org/wiki/Map_(higher-order_function)"&gt;&lt;code&gt;map()&lt;/code&gt;&lt;/a&gt;-function while writing Javascript. Javascript has &lt;code&gt;Array.map()&lt;/code&gt;, and jQuery has &lt;code&gt;$.map()&lt;/code&gt;, but those only works on arrays, and I needed one that could do its magic on objects. So I wrote this one:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;function mapObj(obj, fun) {
  var ret = {};
  for (i in obj) {
    if (obj.hasOwnProperty(i)) {
      fun.call({emit: function(key, value) {
        ret[key] = value;
      }}, i, obj[i]);
    }
  }
  return ret;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;mapObj()&lt;/code&gt; takes an object and a function, applies the function to each property of the object, gathers up the result and returns it as a new object. The function supplied to &lt;code&gt;mapObj&lt;/code&gt; is called with two parameters, the key and value of the current property. To add properties to the final object, call &lt;code&gt;this.emit(key, value)&lt;/code&gt; from the function. This may be called any number of times for each property (including zero).&lt;/p&gt;

&lt;p&gt;Here’s a usage example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;var obj = {a:1, b:2, c:3, d:4};
var obj2 = mapObj(obj, function(key, val) {
  if (val != 2) {
    this.emit(key.toUpperCase(), val*2);
  } else {
    this.emit(key, val);
    this.emit('aaa', 'bbb');
  }
});
// {A:2, b:2, aaa:'bbb', C:6, D:8}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Maybe someone will find this useful.&lt;/p&gt;</description><link>http://am.aurlien.net/post/840469151</link><guid>http://am.aurlien.net/post/840469151</guid><pubDate>Wed, 21 Jul 2010 13:43:00 +0200</pubDate></item><item><title>Here’s what you do:</title><description>&lt;p&gt;First, chop an onion. And some garlic. Couple of cloves, I dunno.&lt;/p&gt;

&lt;p&gt;Fry in some oil until tender. Toss in some meat. Like, half a kilo of minced meat or something. Keep frying until it’s, like, fried.&lt;/p&gt;

&lt;p&gt;Add a couple of chopped tomatoes, and some salt and pepper. Can’t do without that shit. Then start adding head: Maybe a couple of red chili peppers, a habanero if you’re feeling feisty. Some dried chili, and a chipotle for that nice smoky flavour. Just like whatever you have on hand. Throw in some other spices as well, stuff like cumin, oregano, cilantro, paprika. Teaspoon of sugar, maybe some lemon juice. Maybe add some water and let it boil down to get everything together and tasty-like.&lt;/p&gt;

&lt;p&gt;Cook a whole bunch of french fries. Preferably in a deep fryer, if you have one. I have one, it’s awesome. You should get one if you don’t have one. Throw them in a casserole, add some salt if you like. Pour on the meat-chili-stew-thing, add some jalapenos, and cover with a couple handfuls of grated cheese. Bake in the oven until the cheese is melted and golden and/or you’re desperately hungry.&lt;/p&gt;

&lt;p&gt;Serve with sour cream, salsa and an antacid.&lt;/p&gt;</description><link>http://am.aurlien.net/post/772088538</link><guid>http://am.aurlien.net/post/772088538</guid><pubDate>Mon, 05 Jul 2010 10:00:39 +0200</pubDate></item><item><title>Hard day at the office</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_l222kizDAb1qzi5o1o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Hard day at the office&lt;/p&gt;</description><link>http://am.aurlien.net/post/578953126</link><guid>http://am.aurlien.net/post/578953126</guid><pubDate>Fri, 07 May 2010 17:19:23 +0200</pubDate></item><item><title>Rest in Peas: The Unrecognized Death of Speech Recognition</title><description>&lt;a href="http://robertfortner.posterous.com/the-unrecognized-death-of-speech-recognition"&gt;Rest in Peas: The Unrecognized Death of Speech Recognition&lt;/a&gt;: &lt;p&gt;Computer scientists used to assume that understanding human language, both written and spoken, was a crucial step in creating computers with levels of intelligence approaching that of humans. However, the truth seems to be the other way around, and it’s getting more and more unlikely that we’ll ever achieve either.&lt;/p&gt;</description><link>http://am.aurlien.net/post/575998334</link><guid>http://am.aurlien.net/post/575998334</guid><pubDate>Thu, 06 May 2010 13:51:19 +0200</pubDate></item><item><title>Cold. But pretty.</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_kvxhopgWtz1qzi5o1o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Cold. But pretty.&lt;/p&gt;</description><link>http://am.aurlien.net/post/323260850</link><guid>http://am.aurlien.net/post/323260850</guid><pubDate>Fri, 08 Jan 2010 13:36:25 +0100</pubDate></item><item><title>My Panic Beta Sign-Up Short Story</title><description>&lt;a href="http://www.panic.com/beta/"&gt;My Panic Beta Sign-Up Short Story&lt;/a&gt;: &lt;p&gt;So, Panic are recruiting beta testers for a truck-related product.&lt;/p&gt;

&lt;p&gt;But what is that? A “Creative writing space”, right there in the sign up form? It’s too tempting: Here is my Panic Beta Sign-Up Short Story.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The snow was falling and making his beard white, but he didn’t notice as he walked swiftly, almost ran, down the crowded street. “There’s still time,” he thought as he narrowly avoided running into a stressed mom with enough christmas presents in her stroller to obscure the baby. Maybe there is no baby, maybe there never was one. He had no time to ponder such questions.&lt;/p&gt;
  
  &lt;p&gt;A gust of wind stole his hat, but he managed to snag it before it hit the ground, and he continued on his way. He only had a couple of minutes left now. The first snow of the season was almost ankle height by now, however the snow was not on his mind at all. He could not consider these things, not now, not with so much at stake.&lt;/p&gt;
  
  &lt;p&gt;Finally, he was almost there. From across the street, he saw them take in the sign, but he knew he could make it. And he did.&lt;/p&gt;
  
  &lt;p&gt;One minute before closing, he walked into Starbucks and ordered his five-adjective latte.&lt;/p&gt;
  
  &lt;p&gt;When he was back outside, he watched the snow.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://am.aurlien.net/post/289101080</link><guid>http://am.aurlien.net/post/289101080</guid><pubDate>Fri, 18 Dec 2009 18:12:00 +0100</pubDate></item><item><title>My sister gave me this yesterday. Today the whole apartment...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_ku8fugIrmv1qzi5o1o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;My sister gave me this yesterday. Today the whole apartment smells like christmas.&lt;/p&gt;</description><link>http://am.aurlien.net/post/271696754</link><guid>http://am.aurlien.net/post/271696754</guid><pubDate>Sun, 06 Dec 2009 14:23:00 +0100</pubDate></item><item><title>Chili, meat and cheese fries. I think I just made the world a...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_ktmt25fMd91qzi5o1o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Chili, meat and cheese fries. I think I just made the world a better place.&lt;/p&gt;</description><link>http://am.aurlien.net/post/256003242</link><guid>http://am.aurlien.net/post/256003242</guid><pubDate>Tue, 24 Nov 2009 22:01:00 +0100</pubDate></item><item><title>Zen Coding — div#wow&gt;ul.awesome&gt;li*5</title><description>&lt;a href="http://www.smashingmagazine.com/2009/11/21/zen-coding-a-new-way-to-write-html-code/"&gt;Zen Coding — div#wow&gt;ul.awesome&gt;li*5&lt;/a&gt;: &lt;p&gt;Needless to say, the Textmate bundle went straight into my repository. Incredible stuff.&lt;/p&gt;</description><link>http://am.aurlien.net/post/254412938</link><guid>http://am.aurlien.net/post/254412938</guid><pubDate>Mon, 23 Nov 2009 16:24:31 +0100</pubDate></item><item><title>iPhone Peeve #1: That Damn Volume Slider</title><description>&lt;p&gt;So, why do we need that volume slider everywhere?&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_ks9x54Vicx1qzfppc.jpg" alt="Volume slider in the iPod app"/&gt;&lt;img src="http://media.tumblr.com/tumblr_ks9rtqE4gh1qzfppc.jpg" alt="Volume slider on locked-screen"/&gt;&lt;img src="http://media.tumblr.com/tumblr_ks9rtywhlk1qzfppc.jpg" alt="Volume slider on popup-controller"/&gt;&lt;/p&gt;

&lt;p&gt;Does anyone ever use it? I know I don&amp;#8217;t. The iPhone has &lt;em&gt;actual physical buttons&lt;/em&gt; for controlling the volume. When I take a quick glance at my iPhone to check on the music, I am never interested in what volume I&amp;#8217;m playing at. I want to know the progress of the current track, and how many tracks are in the current album/playlist.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_ks9s6eBfXE1qzfppc.jpg" alt="Would this be so hard?"/&gt;&lt;/p&gt;

&lt;p&gt;That progress bar at the top there? That&amp;#8217;s what I want. And the only way to find it is in the detailed view in the iPod app. Why can&amp;#8217;t I have it in place of the ubiquitous yet useless volume slider?&lt;/p&gt;</description><link>http://am.aurlien.net/post/227026721</link><guid>http://am.aurlien.net/post/227026721</guid><pubDate>Thu, 29 Oct 2009 17:00:00 +0100</pubDate></item><item><title>I painted:

This picture
I painted it
On my iPhone
With Brushes
</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_ks621oObBZ1qzi5o1o1_r1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;I painted:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;This picture&lt;/li&gt;
&lt;li&gt;I painted it&lt;/li&gt;
&lt;li&gt;On my iPhone&lt;/li&gt;
&lt;li&gt;With &lt;a href="http://brushesapp.com/"&gt;Brushes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><link>http://am.aurlien.net/post/224728589</link><guid>http://am.aurlien.net/post/224728589</guid><pubDate>Tue, 27 Oct 2009 10:22:00 +0100</pubDate></item><item><title>People have too much money, or concert tickets are too cheap, or both</title><description>&lt;p&gt;Because a lot of people at concerts have a tendency to act like idiots. And most of them get way too drunk. And it only takes a few assholes to ruin much of the experience for many.&lt;/p&gt;

&lt;p&gt;But when the band is Porcupine Tree, much is forgotten and forgiven.&lt;/p&gt;</description><link>http://am.aurlien.net/post/222682111</link><guid>http://am.aurlien.net/post/222682111</guid><pubDate>Sun, 25 Oct 2009 12:41:20 +0100</pubDate></item><item><title>Bach: Double Violin Concerto in D Minor, 1st...</title><description>&lt;iframe width="400" height="300" src="http://www.youtube.com/embed/-CwICXwLBmo?wmode=transparent&amp;autohide=1&amp;egm=0&amp;hd=1&amp;iv_load_policy=3&amp;modestbranding=1&amp;rel=0&amp;showinfo=0&amp;showsearch=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;Bach: Double Violin Concerto in D Minor, 1st movement&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’ve watched this video again and again over the last few days. It’s brilliant and captivating. Baroque music seems to work very well for this kind of visualizing, because of all the stuff happening at once.&lt;/p&gt;

&lt;p&gt;Also, my grandfather loved this concerto and used to listen to it all the time. This brings me back.&lt;/p&gt;</description><link>http://am.aurlien.net/post/186874662</link><guid>http://am.aurlien.net/post/186874662</guid><pubDate>Sun, 13 Sep 2009 14:24:07 +0200</pubDate></item></channel></rss>
