<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en">
  <generator uri="http://www.movabletype.org/" version="3.2">Movable Type</generator>
  <id>tag:virtuelvis.com,2003:1</id>
  <title type="text">Arve Bersvendsen</title>
  <subtitle type="text">The blog formerly known as Virtuelvis</subtitle>
  <link rel="alternate" type="text/html" href="http://virtuelvis.com/" />
  
  <updated>2007-02-16T10:02:56Z</updated>
  <author>
    <name>Arve Bersvendsen</name>
    <uri>http://virtuelvis.com/</uri>
  </author>
  <rights>Copyright (c) 2007 Arve Bersvendsen. All rights reserved.</rights>
    <link rel="self" href="http://feeds.feedburner.com/ArveBersvendsen" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
    <title type="text">IRQL_NOT_LESS_OR_EQUAL</title> 
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ArveBersvendsen/~3/WiW-4H7rhpk/IRQL_NOT_LESS_OR_EQUAL" />
    <id>tag:virtuelvis.com,2009-04-30:1:1287</id>
    <published>2009-04-29T23:32:49Z</published>
    <updated>2009-05-01T12:41:44Z</updated>
    <category term="Technology" />
    <summary type="text">IRQL_NOT_LESS_OR_EQUAL is the tale of why I use Linux, and will never return to Windows, even if I get free pink unicorns, narwhals and a personal army.</summary>
    <content type="html" xml:base="http://virtuelvis.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;I've personally, for the most part lived a Windows-free life since 2005. Only occasionally, I've used a Windows machine, for mundane tasks such as looking at some web page without having brought my own laptop, or had a brief look at my dad's machine to fix some trivial problem, and I had a &lt;a href="http://virtuelvis.com/archives/2007/09/me-and-vista"&gt;brief intermission&lt;/a&gt; with Vista, when I got this laptop in 2007.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;A few days ago, my girlfriend's  kids' laptop broke down, an aging Toshiba, broke down, and had to be reinstalled - I was fortunate enough not to do that installation myself, but just got the laptop back, and needed to get it online. This is where the horror starts:&lt;/p&gt;&#xD;
&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;It can't connect to wireless, which is fair enough, given that WPA2 (or WPA) wasn't around when XP was released, and the machine hadn't touched a network during or after installation, and was installed from the original Toshiba rescue disk.&lt;/li&gt;&#xD;
&lt;li&gt;So, I set forth trying to update it, and Windows needs to update Windows Update, and reboot before continuing installation.&lt;/li&gt;&#xD;
&lt;li&gt;After having installed updates for Windows Update, it needs to update Windows Update again - this time the ActiveX control.  There's a "Yo dawg" hidden inside here somewhere, but I'll leave that to the educated reader.&lt;/li&gt;&#xD;
&lt;li&gt;So, now Windows Update is actually ready to start.  My previous experience with Windows taught me that it's most of the time a good idea to go for the custom update, instead of the simple update, because there's usually hardware drivers missing, and a few other components missing.  It's missing an extended mouse driver, Media Player and a bunch of stuff. Windows Update finds this, and 91 other updates, and installs them&lt;/li&gt;&#xD;
&lt;li&gt;Reboot. This works.&lt;/li&gt;&#xD;
&lt;li&gt;Still no network.   Let's see what Windows Update says.&lt;/li&gt;&#xD;
&lt;li&gt;Oh, that's right, this update did &lt;em&gt;not&lt;/em&gt; pick up Service Pack 2.  Install.&lt;/li&gt;&#xD;
&lt;li&gt;Wait, wait. Listen to disk grinding. Wait some more.&lt;/li&gt;&#xD;
&lt;li&gt;(Intertwined in all of the previous points, there are times where disk activity is low enough to warrant a check, to find out that a dialog needs to be handled).&lt;/li&gt;&#xD;
&lt;li&gt;Roughly two and a half hours into this ordeal, Service pack 2 claims to be installed.&lt;/li&gt;&#xD;
&lt;li&gt;Reboot&lt;/li&gt;&#xD;
&lt;li&gt;IRQL&lt;em&gt;NOT&lt;/em&gt;LESS&lt;em&gt;OR&lt;/em&gt;EQUAL&lt;/li&gt;&#xD;
&lt;li&gt;What the flying fuck&#x203d; &lt;/li&gt;&#xD;
&lt;li&gt;Try to reboot in safe mode&lt;/li&gt;&#xD;
&lt;li&gt;IRQL&lt;em&gt;NOT&lt;/em&gt;LESS&lt;em&gt;OR&lt;/em&gt;EQUAL.&lt;/li&gt;&#xD;
&lt;li&gt;What the flying fuck&#x203d;&lt;/li&gt;&#xD;
&lt;li&gt;IRQL&lt;em&gt;NOT&lt;/em&gt;LESS&lt;em&gt;OR&lt;/em&gt;EQUAL&lt;/li&gt;&#xD;
&lt;li&gt;Try to reboot in safe mode with command line.&lt;/li&gt;&#xD;
&lt;li&gt;IRQL&lt;em&gt;NOT&lt;/em&gt;LESS&lt;em&gt;OR&lt;/em&gt;EQUAL&lt;/li&gt;&#xD;
&lt;li&gt;Consider boarding flight to Redmond to force Steve Ballmer to eat the fucking laptop.&lt;/li&gt;&#xD;
&lt;li&gt;Suddenly remember that amidst all dialogs answered, there was one about a mouse driver, served from &lt;em&gt;Windows update&lt;/em&gt;, not having undergone Windows Logo testing&lt;/li&gt;&#xD;
&lt;li&gt;Unplug mouse&lt;/li&gt;&#xD;
&lt;li&gt;Reboot&lt;/li&gt;&#xD;
&lt;li&gt;(There have been points through this where I've done some pretty liberal swearing on IRC over this ordeal, not included, because it would make this text unsafe for any viewing.&#xD;
25.&lt;/li&gt;&#xD;
&lt;li&gt;Discover that XP SP2 did &lt;em&gt;not&lt;/em&gt; solve the problem described in the very first point of this list. Namely that the wireless network didn't work.  The difference being that now it pretended to be able to connect, whereas it didn't in the first case, and it didn't give a sensible error message. &lt;/li&gt;&#xD;
&lt;li&gt;Go to Windows update, get Service pack 3.  &lt;/li&gt;&#xD;
&lt;li&gt;Be a tad amused, alternatively annoyed, that Windows was able to go directly to SP2, while skipping SP1, while being unable to skip SP2 in favor of SP3.&lt;/li&gt;&#xD;
&lt;li&gt;Install XP SP3. &lt;/li&gt;&#xD;
&lt;li&gt;Wait 30 minutes for installation to finish.&lt;/li&gt;&#xD;
&lt;li&gt;Reboot&lt;/li&gt;&#xD;
&lt;li&gt;Pray to whatever deity that there are no critical updates to install before wireless works&lt;/li&gt;&#xD;
&lt;li&gt;Try plugging in mouse, because using the touchpad sucks.&lt;/li&gt;&#xD;
&lt;li&gt;IRQL&lt;em&gt;NOT&lt;/em&gt;LESS&lt;em&gt;OR&lt;/em&gt;EQUAL&lt;/li&gt;&#xD;
&lt;li&gt;Aaaaaaaaaaaaaaaaaaaaaaaaaaarghhhhhhhhhhhhhhhhhhhhhhhhhh!&lt;/li&gt;&#xD;
&lt;li&gt;Reboot&lt;/li&gt;&#xD;
&lt;li&gt;Pray to whatever deity that there are no critical updates to install before wireless works, because I am now &lt;em&gt;three hours and fucking forty minutes into this ordeal&lt;/em&gt; and I've &lt;em&gt;really&lt;/em&gt; had it.&lt;/li&gt;&#xD;
&lt;li&gt;???&lt;/li&gt;&#xD;
&lt;li&gt;Profit&lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&#xD;
&lt;p&gt;My last list, about a Vista in a similar state to this one, when I took it over, was sixty-three items in before it involved installing a different OS.  This XP experience was 37 items in before the system was in some semi-usable state. Despite fanboy marketing, and the discovery two days ago that &lt;a href="http://twitter.com/arveb/status/1639457227"&gt;Windows can't delete files named "..."&lt;/a&gt; (Including Windows Se7en, thankyouverymuch), I really have no hopes at all that Windows will ever get to some manageable or usable state.&lt;/p&gt;&#xD;
&#xD;
        &#xD;
&#xD;
      &lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=WiW-4H7rhpk:Peqp7M10mT4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=WiW-4H7rhpk:Peqp7M10mT4:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=WiW-4H7rhpk:Peqp7M10mT4:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=WiW-4H7rhpk:Peqp7M10mT4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?i=WiW-4H7rhpk:Peqp7M10mT4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=WiW-4H7rhpk:Peqp7M10mT4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?i=WiW-4H7rhpk:Peqp7M10mT4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=WiW-4H7rhpk:Peqp7M10mT4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?i=WiW-4H7rhpk:Peqp7M10mT4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=WiW-4H7rhpk:Peqp7M10mT4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ArveBersvendsen/~4/WiW-4H7rhpk" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://virtuelvis.com/archives/2009/04/IRQL_NOT_LESS_OR_EQUAL</feedburner:origLink></entry>  <entry>
    <title type="text">Flickr</title> 
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ArveBersvendsen/~3/OEsBrtYE6Ew/flickr" />
    <id>tag:virtuelvis.com,2009-04-27:1:1286</id>
    <published>2009-04-27T11:24:59Z</published>
    <updated>2009-04-28T09:41:12Z</updated>
    <category term="Photography" /><category term="Photography" />
    <summary type="text">Just so you know, I can now be found on Flickr, quite probably showing that I'm a complete newbie at photography.</summary>
    <content type="html" xml:base="http://virtuelvis.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;I recently got a new toy, in the form of a &lt;a href="http://en.wikipedia.org/wiki/Canon_EOS_450D"&gt;Canon EOS 450D&lt;/a&gt;, and started pushing &lt;a href="http://www.flickr.com/photos/arvebersvendsen/"&gt;some of my images&lt;/a&gt;  to Flickr.  Note that I very much consider myself a beginner at this whole photography-thing, and I appreciate all tips and tricks of the trade.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Having said that, I find this new hobby to be incredibly fun and involving, and have shot almost a thousand images in just a couple of weeks.  &lt;/p&gt;&#xD;
&#xD;
        &#xD;
&#xD;
      &lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=OEsBrtYE6Ew:Q-79a1nmqRg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=OEsBrtYE6Ew:Q-79a1nmqRg:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=OEsBrtYE6Ew:Q-79a1nmqRg:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=OEsBrtYE6Ew:Q-79a1nmqRg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?i=OEsBrtYE6Ew:Q-79a1nmqRg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=OEsBrtYE6Ew:Q-79a1nmqRg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?i=OEsBrtYE6Ew:Q-79a1nmqRg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=OEsBrtYE6Ew:Q-79a1nmqRg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?i=OEsBrtYE6Ew:Q-79a1nmqRg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=OEsBrtYE6Ew:Q-79a1nmqRg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ArveBersvendsen/~4/OEsBrtYE6Ew" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://virtuelvis.com/archives/2009/04/flickr</feedburner:origLink></entry>  <entry>
    <title type="text">Experts Exchange's deceptive practices</title> 
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ArveBersvendsen/~3/NeCVeAAjoZg/google-result-spam" />
    <id>tag:virtuelvis.com,2009-04-24:1:1285</id>
    <published>2009-04-24T21:33:13Z</published>
    <updated>2009-04-25T21:35:32Z</updated>
    <category term="Spam" /><category term="Spam" />
    <summary type="text">I've finally gotten around to reporting Experts Exchange to Google as spammy search result. Here's what I sent them.</summary>
    <content type="html" xml:base="http://virtuelvis.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;For future reference, I sent the following spam report to Google about Experts Exchange's deceptive search results, in this case for the example query "experts exchange html".  &lt;/p&gt;&#xD;
&#xD;
&lt;blockquote&gt;&#xD;
  &lt;p&gt;I'm a bit unsure about how to categorize this, but I guess "cloaking" is the closest I can get here.&lt;/p&gt;&#xD;
  &#xD;
  &lt;p&gt;The problem is as follows:&lt;/p&gt;&#xD;
  &#xD;
  &lt;p&gt;When you search for any page and a Experts Exchange results show up, and you click on the result link, the page Google sees shows up only under certain conditions:&lt;/p&gt;&#xD;
  &#xD;
  &lt;p&gt;If the browser user turns off referrer logging, the content showing Experts Exchange's solution to any given problem is not shown or served to the end user.  If the user turns on referrer logging, the page visited from the search result is different.&lt;/p&gt;&#xD;
  &#xD;
  &lt;p&gt;Exact steps to reproduce:&lt;/p&gt;&#xD;
  &#xD;
  &lt;ol&gt;&#xD;
  &lt;li&gt;Open query page&lt;/li&gt;&#xD;
  &lt;li&gt;Turn off referrer logging (F12 -&amp;gt; Send Referrer information using the Opera Web Browser - similar options may exist in other browsers)&lt;/li&gt;&#xD;
  &lt;li&gt;Open the first search result leading to experts-exchange.com in a new tab&lt;/li&gt;&#xD;
  &lt;li&gt;Scroll to bottom of page -- note that no search results are available to the end-user at all.&lt;/li&gt;&#xD;
  &lt;li&gt;Go back to the Google result page&lt;/li&gt;&#xD;
  &lt;li&gt;Turn referrer logging back on (Reverse procedure from step 2)&lt;/li&gt;&#xD;
  &lt;li&gt;Now load the same search result as in step 3&lt;/li&gt;&#xD;
  &lt;li&gt;Compare the resulting document - it now contains the solution text not available following the procedure in steps 1-4.&lt;/li&gt;&#xD;
  &lt;/ol&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
        &#xD;
&#xD;
      &lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=NeCVeAAjoZg:4PBPscROk_k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=NeCVeAAjoZg:4PBPscROk_k:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=NeCVeAAjoZg:4PBPscROk_k:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=NeCVeAAjoZg:4PBPscROk_k:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?i=NeCVeAAjoZg:4PBPscROk_k:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=NeCVeAAjoZg:4PBPscROk_k:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?i=NeCVeAAjoZg:4PBPscROk_k:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=NeCVeAAjoZg:4PBPscROk_k:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?i=NeCVeAAjoZg:4PBPscROk_k:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ArveBersvendsen?a=NeCVeAAjoZg:4PBPscROk_k:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ArveBersvendsen?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ArveBersvendsen/~4/NeCVeAAjoZg" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://virtuelvis.com/archives/2009/04/google-result-spam</feedburner:origLink></entry>  <entry>
    <title type="text">Feedburnin'</title> 
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ArveBersvendsen/~3/1poBkcYQA_E/feedburnin" />
    <id>tag:virtuelvis.com,2009-01-03:1:1281</id>
    <published>2009-01-02T23:35:47Z</published>
    <updated>2009-02-10T13:53:25Z</updated>
    <category term="General" />
    <summary type="text">I've switched to feedburner</summary>
    <content type="html" xml:base="http://virtuelvis.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;In the past, I&#x2019;ve used a bit of bash magic (grep, sort, uniq, mostly) to try to get an overview of my feed subscriber counts.  Thing is, it was too much effort for me to do regularily, so I&#x2019;ve given up on that, and I&#x2019;ve instead switched to &lt;a href="http://www.feedburner.com/"&gt;FeedBurner&lt;/a&gt; for my feeds.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;If anything breaks for you, I&#x2019;d like to know.&lt;/p&gt;&#xD;
        &#xD;
      &lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=JuQ6dyZV"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=44WiHhDK"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=wci9SRIA"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=jiOlDc66"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=jiOlDc66" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=w3HZgYps"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=w3HZgYps" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=CpTuinsF"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=CpTuinsF" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=atciUkMN"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ArveBersvendsen/~4/1poBkcYQA_E" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://virtuelvis.com/archives/2009/01/feedburnin</feedburner:origLink></entry>  <entry>
    <title type="text">How to use 'find' to search for files created on a specific date</title> 
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ArveBersvendsen/~3/HHG1-c-RRGk/finding-files-modified-on-a-certain-date" />
    <id>tag:virtuelvis.com,2008-10-01:1:1278</id>
    <published>2008-10-01T13:27:44Z</published>
    <updated>2008-11-16T13:03:57Z</updated>
    <category term="Answerblog" /><category term="Answerblog" />
    <summary type="text">If you need to find all files modified on, or accessed on a particular date, here's a neat little solution using (GNU) find.</summary>
    <content type="html" xml:base="http://virtuelvis.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;This is one of the pieces that started with me thinking GNU &lt;code&gt;find&lt;/code&gt; has an ugly wart, ending with me actually reading the man page, only to find out that the wart isn't there, and that it's actually fairly elegant.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Last year, I &lt;a href="http://virtuelvis.com/archives/2007/06/dreamhost-hacked"&gt;fell victim&lt;/a&gt; to the &lt;a href="http://www.dreamhoststatus.com/2007/06/06/security-breach/"&gt;massive security breach&lt;/a&gt; on &lt;a href="http://www.dreamhost.com/r.cgi?73901"&gt;Dreamhost&lt;/a&gt; (note, that Dreamhost were nothing but terrific to me, and they have been for the last five years, so I still &lt;a href="http://virtuelvis.com/archives/2005/10/dreamhost-discount"&gt;recommend them&lt;/a&gt;).  This resulted in me receiving a delisting notice from Google for certain documents on my site, this morning, because I had somehow failed to nuke the injected spam on at least one document.  So, I had to find all documents modified that day.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;So, I had to find all of the files modified on &lt;time datetime="2007-06-07"&gt;June 7th, 2007&lt;/time&gt;. If this was yesterday, or a week ago, using &lt;code&gt;-mtime&lt;/code&gt; would have been trivial. However, I can't tell the offset from today's date in seconds, minutes, hours or days, so I had to find something better.  A quick Google search brought up &lt;a href="http://forums12.itrc.hp.com/service/forums/questionanswer.do?admit=109447627+1222865131876+28353475&amp;amp;threadId=1042198"&gt;this&lt;/a&gt;, (mis-)quoted below for convenience&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;&lt;code&gt;$ touch -amt 200601260000 /tmp/ref1&#xD;
$ touch -amt 200601262359 /tmp/ref2&#xD;
$ find . -type f -newer /tmp/ref1 -a ! -newer /tmp/ref2&#xD;
&lt;/code&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;Which, you know, seemed clunky.  Having to create two useless files in order to find files createdbetween two dates lands firmly on the ugly side of things, and is just the Wrong Thing To Do.  &lt;code&gt;man find&lt;/code&gt; to the rescue, which contains this bit:&lt;/p&gt;&#xD;
&#xD;
&lt;blockquote&gt;&#xD;
  &lt;p&gt;&lt;code&gt;-newerXY reference&lt;/code&gt;&#xD;
  Compares the timestamp of the current file with reference. The&#xD;
  reference argument is normally the name of a file (and one of its&#xD;
  timestamps is used for the comparison) but it may also be a string&#xD;
  describing an absolute time. X and Y are placeholders for other&#xD;
  letters, and these letters select which time belonging to how&#xD;
  reference is used for the comparison.&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
&lt;p&gt;The relevant placeholders for X and Y are in this case m and t:&lt;/p&gt;&#xD;
&#xD;
&lt;blockquote&gt;&#xD;
  &lt;p&gt;m: The modification time of the file reference&#xD;
  t   reference is interpreted directly as a time&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
&lt;p&gt;So, when I want to find all files modified on a certain date, for example, '2007-06-07' the final input is:&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;&lt;code&gt;$ find . -type f -newermt 2007-06-07 ! -newermt 2007-06-08&#xD;
&lt;/code&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;Better than what I first had feared, no?&lt;/p&gt;&#xD;
&#xD;
        &#xD;
&#xD;
      &lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=pi57A8Gd"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=VSl5hhqO"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=hxxFhSFk"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=i2q0zPuo"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=i2q0zPuo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=mqySSpJy"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=mqySSpJy" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=FW4DAxYo"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=FW4DAxYo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=kAeigJCQ"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ArveBersvendsen/~4/HHG1-c-RRGk" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://virtuelvis.com/archives/2008/10/finding-files-modified-on-a-certain-date</feedburner:origLink></entry>  <entry>
    <title type="text">&#x203d;</title> 
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ArveBersvendsen/~3/IwdY7slq9-E/interrobang" />
    <id>tag:virtuelvis.com,2008-09-18:1:1277</id>
    <published>2008-09-18T13:21:39Z</published>
    <updated>2008-11-16T13:03:51Z</updated>
    <category term="Answerblog" />
    <summary type="text">About the interrobang and typing Unicode.</summary>
    <content type="html" xml:base="http://virtuelvis.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;The &lt;a href="http://en.wikipedia.org/wiki/Interrobang"&gt;interrobang&lt;/a&gt; is one of my favorite punctuation marks, intended to combine the exclamation mark and the question mark. Every time I use it though, I get the same question: How do you type it?&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;The short answer is: The interrobang is to be found in Unicode, at the code point &lt;a href="http://software.hixie.ch/utilities/cgi/unicode-decoder/character-identifier?keywords=interrobang"&gt;U+203D&lt;/a&gt;, so the question here is really &#x201c;How to type Unicode characters?&#x201d;&lt;/p&gt;&#xD;
&#xD;
&lt;h3&gt;In Gnome/GTK+ applications&lt;/h3&gt;&#xD;
&#xD;
&lt;p&gt;In Gnome/GTK applications, you type the character by first pressing &lt;kbd&gt;Ctrl&lt;/kbd&gt;-&lt;kbd&gt;Shift&lt;/kbd&gt;-&lt;kbd&gt;U&lt;/kbd&gt;, at which time you will get an underlined &lt;u&gt;u&lt;/u&gt; to the left of the editing caret. You then type in the Unicode code point, &lt;kbd&gt;203D&lt;/kbd&gt;. When you now press space, the interrobang will now display. In XFCE,  replace space with &lt;kbd&gt;Ctrl&lt;/kbd&gt;-&lt;kbd&gt;Shift&lt;/kbd&gt;-&lt;kbd&gt;X&lt;/kbd&gt; (this also sort of works in Gnome, except in the console, where it will insert junk.&lt;/p&gt;&#xD;
&#xD;
&lt;h3&gt;In Opera&lt;/h3&gt;&#xD;
&#xD;
&lt;p&gt;In Opera, this works a bit differently: When a text field is focused, you first write the Unicode code point, &lt;kbd&gt;203d&lt;/kbd&gt; and then press &lt;kbd&gt;Ctrl&lt;/kbd&gt;-&lt;kbd&gt;Shift&lt;/kbd&gt;-&lt;kbd&gt;X&lt;/kbd&gt;. The chaaracter should now change to the desired &#x203d;.&lt;/p&gt;&#xD;
&#xD;
&lt;h3&gt;In Windows XP/Vista&lt;/h3&gt;&#xD;
&#xD;
&lt;p&gt;The procedure for Windows XP/Vista is nearly identical as for Opera, just replace &lt;kbd&gt;Ctrl&lt;/kbd&gt;-&lt;kbd&gt;Shift&lt;/kbd&gt;-&lt;kbd&gt;X&lt;/kbd&gt; with &lt;kbd&gt;Alt&lt;/kbd&gt;-&lt;kbd&gt;X&lt;/kbd&gt;.&lt;/p&gt;&#xD;
&#xD;
&lt;h3&gt;In KDE&lt;/h3&gt;&#xD;
&#xD;
&lt;p&gt;Sorry, you&#x2019;re &lt;a href="http://trolltech.com/developer/task-tracker/index_html?id=71224&amp;amp;method=entry"&gt;out of luck&lt;/a&gt; (for now) - use a character selector application or applet for now, or even use Opera to edit text.&lt;/p&gt;&#xD;
&#xD;
&lt;h3&gt;Bonus&lt;/h3&gt;&#xD;
&#xD;
&lt;p&gt;Those familiar with Spanish know that a question or exclamation in Spanish starts with an upside-down punctuation mark, &#x201c;¿Que?&#x201d; or &#x201c;¡Hola!&#x201d;, and there &lt;strong&gt;is&lt;/strong&gt; an upside-down interrobang, at U+2E18, so you can now go all &#x201c;&#x2e18;Que&#x203d;&#x201d; on people&lt;/p&gt;&#xD;
        &#xD;
      &lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=GAFS8kBM"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=qx9g9aBI"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=CYjqAzpt"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=q0w61whN"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=q0w61whN" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=3EJuFOzA"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=3EJuFOzA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=9Vq6Mvps"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=9Vq6Mvps" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=e12JWvzM"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ArveBersvendsen/~4/IwdY7slq9-E" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://virtuelvis.com/archives/2008/09/interrobang</feedburner:origLink></entry>  <entry>
    <title type="text">Abusing text-shadow for fun and profit</title> 
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ArveBersvendsen/~3/-cVHx697GCg/text-shadow" />
    <id>tag:virtuelvis.com,2008-09-10:1:1276</id>
    <published>2008-09-10T16:29:25Z</published>
    <updated>2008-11-16T13:08:14Z</updated>
    <category term="Gallery" /><category term="Gallery" /><category term="Gallery" /><category term="Gallery" /><category term="Gallery" /><category term="Gallery" /><category term="Gallery" />
    <summary type="text">A few small examples of what what can be done if text-shadow is employed somewhat creatively.</summary>
    <content type="html" xml:base="http://virtuelvis.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;A while back, when Opera 9.5 was in development, we gained support for &lt;a href="http://ejohn.org/blog/javascript-getters-and-setters/"&gt;getters and setters&lt;/a&gt;, and I needed some smoketest to check whether they worked as advertised.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Around the same time, we also added support for text-shadow, as outlined in the documentation for &lt;a href="http://dev.opera.com/articles/view/presto-2-1-web-standards-supported-by/#css3"&gt;Presto 2.1 standards support&lt;/a&gt; (Presto is the core engine of Opera, currently in version 2.1)&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;So, I ended up testing both at once. &lt;a href="http://virtuelvis.com/gallery/text-shadow/"&gt;See the example&lt;/a&gt;. The demo fades some text in and out of the screen, simultaneously deblurring the text as it becomes visible.  The fading itself is fairly trivial, with the animation library used taking care of the work.&lt;/p&gt;&#xD;
&#xD;
&lt;h3&gt;The script&lt;/h3&gt;&#xD;
&#xD;
&lt;p&gt;I'll keep this explanation brief, and gloss over some of the details, but: The majority magic happens in the getters and setters defined. Somewhere in the inlined code on the page, you'll find this:&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;&lt;code&gt;var e = CSSStyleDeclaration.prototype;&#xD;
// ... other getters and setters&#xD;
e.__defineGetter__("blur",function(){  return this._blur_||0; });&#xD;
e.__defineSetter__("blur",function(val)&#xD;
                   {&#xD;
                        this._blur_ = val;&#xD;
                        this.textShadow = this.shadowX+" "+this.shadowY+" "+val+" "+this.shadowCol;&#xD;
                   })&#xD;
&lt;/code&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;In the actual code, &lt;code&gt;this.shadowX&lt;/code&gt;, &lt;code&gt;this.shadowY&lt;/code&gt; and &lt;code&gt;this.shadowCol&lt;/code&gt; are also attained through getters and setters on a CSSStyleDeclaration, but for the purpose of explaining, you can assume them being hardcoded to &lt;var&gt;1000px&lt;/var&gt;, &lt;var&gt;0&lt;/var&gt; and &lt;var&gt;#fff&lt;/var&gt;, respectively.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;So, when the animation library is initialized and animations are set up, we tell it to animate the &lt;code&gt;blur&lt;/code&gt; property of the affected element's style&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;&lt;code&gt;var st = document.getElementById('foo').style;&#xD;
var anim = new Animator(st,1000,15,&#xD;
                        function(){ setTimeout(moveOut,1750) },&#xD;
                        forceRepaint);&#xD;
anim.addProperty("blur",12,1,"px");&#xD;
&lt;/code&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;So, when the animation is run, the library iterates through all the properties of the animation, and when reaching the &lt;code&gt;blur&lt;/code&gt; property, it sets it, but what is actually set is the blur value of the text-shadow, e.g. &lt;code&gt;&lt;var&gt;1000px 0 3px #fff&lt;/var&gt;&lt;/code&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;h3&gt;The CSS&lt;/h3&gt;&#xD;
&#xD;
&lt;p&gt;For the purposes of the CSS, I conjured up a somewhat more minimal example, in the form of a navigation list.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;a href="http://virtuelvis.com/gallery/text-shadow/navigation-list"&gt;Try out the example here&lt;/a&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;What is happening in this example is pretty much analogous to what is going on in the animated demo.  When you hover an element in the list, that element gets some focus, while the rest of the elements are blurred to bring attention to what you currently are hovering.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;The first CSS rule to mind here is:&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;&lt;code&gt;li {&#xD;
  font-weight: bold;&#xD;
  padding: 0.5em 0.5em;&#xD;
  display: block;&#xD;
  &lt;em&gt;overflow: hidden;&lt;/em&gt;&#xD;
  color: #333;&#xD;
  background: hsl(40,15%,90%); &#xD;
  border: 2px outset #aaa;&#xD;
}&lt;/code&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;Specifically, the &lt;code&gt;overflow: hidden&lt;/code&gt; rule, which ensures that we clip the element's box if content overflow it.  Next, we're applying a rule to all list elements when the list itself is hovered:&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;&lt;code&gt;ul:hover li {&#xD;
  text-indent: -8em;&#xD;
  text-shadow: 8em 0 0.33em #333;&#xD;
  background: hsl(40,15%,40%); &#xD;
}&#xD;
&lt;/code&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;The point of the rule is to move the text out of the element's box, by setting text-indent to &lt;var&gt;-8em&lt;/var&gt; and instead setting a text-shadow offset as &lt;var&gt;8em&lt;/var&gt;.  Next up here is setting some mild blur (If you can call 0.33em, which I used for dramatic effect), and the same color as the text.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Finally, for this example, the following rule resets the text-shadow to something more sensible:&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;&lt;code&gt;ul li:hover {&#xD;
  text-indent: 0;&#xD;
  color: #eee;&#xD;
  text-shadow: 1px 1px 2px #333;&#xD;
  background: hsl(40,15%,60%); &#xD;
}&#xD;
&lt;/code&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;h3&gt;Closing words&lt;/h3&gt;&#xD;
&#xD;
&lt;p&gt;While you can probably do some real cool stuff, and create low-cost effects, I would advise against using it for production use: In both examples, text will become invisible if text-shadow is not supported. From what I have been able to gather, only a limited set of browsers &lt;a href="http://www.css3.info/preview/text-shadow/"&gt;support text-shadow&lt;/a&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Either way, it might be fun in 2014 when browsers have caught up to the next level of CSS.&lt;/p&gt;&#xD;
&#xD;
        &#xD;
&#xD;
      &lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=cwDT66vj"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=wtnefreb"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=IJ0YIdQ7"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=bpZvUQBE"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=bpZvUQBE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=8ceyN52f"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=8ceyN52f" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=jMvsek57"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=jMvsek57" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=9r3PVJ3Z"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ArveBersvendsen/~4/-cVHx697GCg" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://virtuelvis.com/archives/2008/09/text-shadow</feedburner:origLink></entry>  <entry>
    <title type="text">Why Facebook might want to avoid volunteer translations</title> 
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ArveBersvendsen/~3/7mYE56jCckM/facebooks-norwegian-tos" />
    <id>tag:virtuelvis.com,2008-08-13:1:1275</id>
    <published>2008-08-13T11:30:21Z</published>
    <updated>2008-09-05T08:55:37Z</updated>
    <category term="General" />
    <summary type="text">Facebook translates their Terms of Use to Norwegian. Hilarity ensues</summary>
    <content type="html" xml:base="http://virtuelvis.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;I am not to be found on Facebook (in fact, I spent three days of mailing back and forth with them, before they wanted to accept that, yes, I &lt;strong&gt;really&lt;/strong&gt; want to completely nuke my account). But via &lt;a href="http://www.itavisen.no/sak/782354/"&gt;ITavisen&lt;/a&gt; I found out something curious about their &lt;a href="http://www.facebook.com/terms.php"&gt;Terms of Use&lt;/a&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Facebook are now providing users with localized ToS, like this &lt;a href="http://nb.facebook.com/terms.php"&gt;Norwegian translation&lt;/a&gt;. And they are apparently relying on volunteers to do this work.  Which, if you are a soulless Web 2.0 company with a ToS that reads like lawyer porn, probably is a very bad idea.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;The &lt;a href="http://translate.google.com/translate?u=http%3A%2F%2Fnb.facebook.com%2Fterms.php&amp;amp;hl=en&amp;amp;ie=UTF8&amp;amp;sl=no&amp;amp;tl=en"&gt;Google translation back into English&lt;/a&gt; will miss some nuances of what&#x2019;s wrong with it, but it should be good enough.   Skim the headings of that translation.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Did you find it? No, not the runs of untranslated text, but the big fat heading saying &lt;strong&gt;&#x201c;Press if you&#x2019;re a jerk&#x201d;.&lt;/strong&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Yes, really.  It really does say &#x201c;Trykk hvis du er en dust&#x201d;, which translates into &#x201c;Click if you&#x2019;re a jerk&#x201d;.  And it&#x2019;s not the only brainfart here.  The entire section on indemnity has been replaced with the following run of text:&lt;/p&gt;&#xD;
&#xD;
&lt;blockquote&gt;&lt;p&gt;Du lover å være snill og grei å følge alle regler for bruk av facebook&lt;/p&gt;&lt;/blockquote&gt;&#xD;
&#xD;
&lt;p&gt;The wording is something you would typically find in children&#x2019;s books, and translates to:&lt;/p&gt;&#xD;
&#xD;
&lt;blockquote&gt;&lt;p&gt;You promise to be a good boy or girl, and promise to follow every rule for use of Facebook&lt;/p&gt;&lt;/blockquote&gt;&#xD;
&#xD;
&lt;p&gt;I could comment further, but I&#x2019;ll let the one occurence of &#x201c;Lalaala&#x201d; accompany my giggle. Morale of the story is: Hire translators, and actually do some QA.&lt;/p&gt;&#xD;
        &#xD;
      &lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=OqaP0X6c"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=zCzVQul1"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=RJWsUuS1"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=VEsIMg8I"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=VEsIMg8I" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=f75NZvZw"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=f75NZvZw" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=lma43n77"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=lma43n77" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=hEOcCXxt"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ArveBersvendsen/~4/7mYE56jCckM" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://virtuelvis.com/archives/2008/08/facebooks-norwegian-tos</feedburner:origLink></entry>  <entry>
    <title type="text">Note to self about mounting problems</title> 
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ArveBersvendsen/~3/syvnJ3G8XtQ/ubuntu-mounting-problems" />
    <id>tag:virtuelvis.com,2008-06-27:1:1274</id>
    <published>2008-06-27T21:20:13Z</published>
    <updated>2008-09-05T08:56:50Z</updated>
    <category term="Ubuntu" />
    <summary type="text">This is just a small note to my future self, for the next time I encounter seemingly random invalid mount...</summary>
    <content type="html" xml:base="http://virtuelvis.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;This is just a small note to my future self, for the next time I encounter seemingly random invalid mount operations, or other mount failures  in Ubuntu (Hardy Heron, in this case), for phone cards, usb drives et al.  Remove the following line from &lt;var&gt;/etc/fstab&lt;/var&gt;:&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;&lt;code&gt;/dev/sdb1       /media/cdrom0   udf,iso9660 user,noauto,exec,utf8 0       0&lt;/code&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;For what it&#x2019;s worth, I have to do this because I have no optical drive in my laptop, and this line seems to be added, regardless of the presence of such a drive.&lt;/p&gt;&#xD;
        &#xD;
      &lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=7q1DyG5H"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=deZHXPic"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=EGmBJWj0"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=NQa7hsUo"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=NQa7hsUo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=2agpJPAk"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=2agpJPAk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=A57CKpL7"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=A57CKpL7" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=sSRc8MEM"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ArveBersvendsen/~4/syvnJ3G8XtQ" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://virtuelvis.com/archives/2008/06/ubuntu-mounting-problems</feedburner:origLink></entry>  <entry>
    <title type="text">Why did you switch?</title> 
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ArveBersvendsen/~3/bnC0dbutRB0/why-did-you-switch" />
    <id>tag:virtuelvis.com,2008-06-19:1:1273</id>
    <published>2008-06-19T22:33:00Z</published>
    <updated>2008-09-05T08:59:57Z</updated>
    <category term="General" />
    <summary type="text">I'm curious, why did you switch from Windows?</summary>
    <content type="html" xml:base="http://virtuelvis.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;In 2004, I asked my readers &lt;a href="http://virtuelvis.com/archives/2004/12/msie-switcher-stories"&gt;why they switched from IE&lt;/a&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;This question is worth repeating, but in a new context: Between 20 and 30% of my non-robot visitors are using an operating system other than Windows when visiting this site, and over the last 12 months, the Windows family of operating systems has seen a decline of over 2% of the visitor share to this site.  I assume that many of these users once were Windows users, so I&#x2019;d like to repeat the short set of questions:&lt;/p&gt;&#xD;
&#xD;
&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;When did you switch?&lt;/li&gt;&#xD;
&lt;li&gt;Which version of Windows did you switch from?&lt;/li&gt;&#xD;
&lt;li&gt;Which OS did you switch to?&lt;/li&gt;&#xD;
&lt;li&gt;Why did you switch to your current OS?&lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&#xD;
&#xD;
&#xD;
&lt;p&gt;If you haven&#x2019;t switched yet, but you&#x2019;ve given it some thought, feel free to respond as well.&lt;/p&gt;&#xD;
        &#xD;
      &lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=moNTFdpN"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=llkHuAc9"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=CNsVHeGs"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=oQ4kcHIu"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=oQ4kcHIu" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=Tag0EFhY"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=Tag0EFhY" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=LeAOHjjo"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=LeAOHjjo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=l5lIQCGD"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ArveBersvendsen/~4/bnC0dbutRB0" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://virtuelvis.com/archives/2008/06/why-did-you-switch</feedburner:origLink></entry>  <entry>
    <title type="text">Autosizer 2, UserJS and cross-domain storage</title> 
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ArveBersvendsen/~3/n51U4qqd4AU/autosizer-2-cross-domain-storage" />
    <id>tag:virtuelvis.com,2008-06-17:1:1272</id>
    <published>2008-06-17T11:41:37Z</published>
    <updated>2008-09-05T08:55:53Z</updated>
    <category term="Javascript" /><category term="Javascript" />
    <summary type="text">I've just released Autosizer 2, with cross-domain preferences.</summary>
    <content type="html" xml:base="http://virtuelvis.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;Back in 2005, I wrote a UserJS named &lt;a href="http://userjs.org/scripts/browser/enhancements/autosizer"&gt;Autosizer&lt;/a&gt; that enhances Opera&#x2019;s behavior when you view a single image.   The script from back then has one inherent problem, though; when you set a resize mode, it would be remembered on a per-site basis, instead of as a global option.  Which, frankly, sucks, as I usually prefer a preference to be that, just a preference that sticks, whether I am viewing &lt;a href="http://icanhascheezburger.files.wordpress.com/2008/06/funny-pictures-infinite-lolcat.jpg"&gt;infinite lolcats&lt;/a&gt; or &lt;a href="http://upload.wikimedia.org/wikipedia/commons/e/ec/Glasses_800_edit.png"&gt;ray tracing examples&lt;/a&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Enter Autosizer 2, which fixes this, through a hack, which either is really clever, completely insane, or both. First off, &lt;a href="http://virtuelvis.com/download/2008/06/autosizer/autosizer.js"&gt;download&lt;/a&gt; and &lt;a href="http://userjs.org/help/installation"&gt;install&lt;/a&gt; the user script.  The script is a complete rewrite of the old script, and has been on a severe diet: There are now only two modes: View in original size, or Fit to screen.&lt;/p&gt;&#xD;
&#xD;
&lt;h3&gt;The hack: Iframes, error pages, invalid domains and cross-document messaging&lt;/h3&gt;&#xD;
&#xD;
&lt;p&gt;The way this works is roughly:&lt;/p&gt;&#xD;
&#xD;
&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;When an image is loaded, such as the two example images above, the script creates and injects an iframe pointing to &lt;var&gt;http://0.0.0.0/img&lt;/var&gt; &#x2014; an invalid URL&lt;/li&gt;&#xD;
&lt;li&gt;Next, the other half of the script activates only on the URL mentioned above, and sets up a few listeners for cross-document messages. It recognizes three settings, one for setting Fit to screen, one for no fit, and one for just retrieving the current setting&lt;/li&gt;&#xD;
&lt;li&gt;Every 300ms, the iframe will post a message to its parent window, with the current value of the setting.&lt;/li&gt;&#xD;
&lt;li&gt;The event listeners in the parent window (the image) will, upon getting a message from the iframe set the correct sizing mode.&lt;/li&gt;&#xD;
&lt;li&gt;The net effect of this is that we now have a cross-domain preference storage for UserJS.&lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&#xD;
&#xD;
&#xD;
&lt;p&gt;What about security? Well, this is the catch, there is absolutely &lt;em&gt;no&lt;/em&gt; security here, so a user script author should never store anything here that is remotely private,  nor should an author assume that data stored in this way are not corrupted: A web page can send and retrieve messages in just the same way a user script can.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;So, how much data can you store?  Well, you have an entire /8 to store cookies on, which is 16 777 216 domains, you can have 30 cookies per domain, of max 4096 bytes each. That is &lt;a href="http://www.google.com/search?num=100&amp;amp;hl=en&amp;amp;safe=off&amp;amp;client=opera&amp;amp;rls=en&amp;amp;hs=5KZ&amp;amp;esrch=BetaShortcuts&amp;amp;q=30%2A4096%2A16777216+bytes+in+terabytes&amp;amp;btnG=Search"&gt;1.87 terabytes&lt;/a&gt;. Just don&#x2019;t try.  Or if you do, write a virtual filesystem implementation or something that gives you infinite geek points.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Should you want to mess around with the autosizer script, it&#x2019;s licensed under the New BSD License. Enjoy.&lt;/p&gt;&#xD;
        &#xD;
      &lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=HDjkjng9"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=NbOAv9JG"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=PLXLh4xJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=W5H5e4VT"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=W5H5e4VT" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=2rJ0hC7D"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=2rJ0hC7D" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=pF43PIAk"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=pF43PIAk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=SmPIZdSq"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ArveBersvendsen/~4/n51U4qqd4AU" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://virtuelvis.com/archives/2008/06/autosizer-2-cross-domain-storage</feedburner:origLink></entry>  <entry>
    <title type="text">Opera 9.5</title> 
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ArveBersvendsen/~3/-v-DEwRIvUA/opera-95" />
    <id>tag:virtuelvis.com,2008-06-12:1:1271</id>
    <published>2008-06-12T11:00:26Z</published>
    <updated>2008-09-05T08:56:37Z</updated>
    <category term="Opera" /><category term="Opera" />
    <summary type="text">Opera 9.5 is released, with bunches of improvements and new features.  Some highlights here.</summary>
    <content type="html" xml:base="http://virtuelvis.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;Ok, I&#x2019;m crazy busy these days, but I still have to write a few words, now that &lt;a href="http://www.opera.com/products/desktop/"&gt;Opera 9.5 is out&lt;/a&gt;. During the last couple of years, Opera has grown several shadows of awesome:&lt;/p&gt;&#xD;
&#xD;
&lt;h3&gt;Dragonfly&lt;/h3&gt;&#xD;
&#xD;
&lt;p&gt;For developers, one of the most signifcant new features is &lt;a href="http://www.opera.com/products/dragonfly/"&gt;Dragonfly&lt;/a&gt; - the &lt;a href="http://dev.opera.com/licenses/bsd/"&gt;open source&lt;/a&gt; developer tool for Opera 9.5.  Currently, Dragonfly is officially in alpha, and its release schedule is somewhat independent from the rest of the browser.  If you want to know what is happening to it, and to get access to the weeklies of it, head over to the &lt;a href="http://my.opera.com/dragonfly/blog/"&gt;Dragonfly blog&lt;/a&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;h3&gt;Standards support&lt;/h3&gt;&#xD;
&#xD;
&lt;p&gt;The list here is too long to go through, it would be worthy of multiple blog posts on its own (I might make some on some aspects of standards, though). Suffice it to say that the internal &lt;a href="http://my.opera.com/core/blog/"&gt;core&lt;/a&gt; release tied the race for &lt;a href="http://acid3.acidtests.org/"&gt;Acid 3&lt;/a&gt; with Webkit.  Note that some of the improvements that went in by passing Acid3 are not available in the desktop release at this stage, so Opera 9.5 for desktop is currently at 83/100.&lt;/p&gt;&#xD;
&#xD;
&lt;h3&gt;The awesomest of all awesome bars&lt;/h3&gt;&#xD;
&#xD;
&lt;p&gt;The address bar in Opera 9.5 is the true awesomebar, not that other one you&#x2019;ve heard of.  When you visit a page in Opera 9.5, Opera creates a full-text index of the web page. When you&#x2019;ve browsed, and forgotten where or what the web page title was, the quick-find feature searches this full-text index, giving you a complete set of results.. Should you prefer to view the results in a different way than as a drop-down, there is &lt;a href="opera:historysearch"&gt;opera:historysearch&lt;/a&gt; which you can use more or less like a normal search engine.&lt;/p&gt;&#xD;
&#xD;
&lt;h3&gt;Opera Link&lt;/h3&gt;&#xD;
&#xD;
&lt;p&gt;It&#x2019;s strange how much I have come to depend on this feature. So much, in fact, that I had to look up whether it actually was new to 9.5 or not. It is, it synchronizes your bookmarks and your speed dial, and makes sure you always have your bookmarks everywhere. For me as a heavy user of &lt;a href="http://mini.opera.com/"&gt;Opera Mini&lt;/a&gt; this is a killer feature.&lt;/p&gt;&#xD;
&#xD;
&lt;h3&gt;Widgets&lt;/h3&gt;&#xD;
&#xD;
&lt;p&gt;Ah. Widgets.  Unfortunately, the &lt;a href="http://virtuelvis.com/archives/2008/05/dom-file-io"&gt;File I/O stuff&lt;/a&gt; is not yet to be seen in the regular builds, but there are other improvements in:&lt;/p&gt;&#xD;
&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Showing/hiding of widgets using &lt;code&gt;widget.show()&lt;/code&gt; and &lt;code&gt;widget.hide()&lt;/code&gt;&lt;/li&gt;&#xD;
&lt;li&gt;Widgets can now request attention using &lt;code&gt;widget.getAttention()&lt;/code&gt;&lt;/li&gt;&#xD;
&lt;li&gt;Another means of requesting (more intrusive) attention, is through &lt;code&gt;widget.showNotification()&lt;/code&gt; which will display a message, and can take a callback for when the notification is acknowledged.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&#xD;
&#xD;
&lt;p&gt;Needless to say, these are all going in to the &lt;a href="http://dev.w3.org/2006/waf/widgets-api/"&gt;Widget API specification&lt;/a&gt; &#x2014; I just need to be a bit less crazy busy, so I can push towards a public working draft.&lt;/p&gt;&#xD;
&#xD;
&lt;h3&gt;Changelogs&lt;/h3&gt;&#xD;
&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://www.opera.com/docs/changelogs/linux/950/"&gt;Linux&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://www.opera.com/docs/changelogs/windows/950/"&gt;Windows&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://www.opera.com/docs/changelogs/mac/950/"&gt;Mac&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://www.opera.com/docs/changelogs/"&gt;Other&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&#xD;
&#xD;
&lt;h3&gt;Download&lt;/h3&gt;&#xD;
&#xD;
&lt;p&gt;That&#x2019;s it for today, now go &lt;a href="http://www.opera.com/download/"&gt;Download!&lt;/a&gt;&lt;/p&gt;&#xD;
        &#xD;
      &lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=QHkIsgpo"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=J7EPoci3"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=xkJBy6bS"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=dYlOBLa8"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=dYlOBLa8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=D58hWfIo"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=D58hWfIo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=esMWxyRo"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=esMWxyRo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=XR95hHCB"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ArveBersvendsen/~4/-v-DEwRIvUA" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://virtuelvis.com/archives/2008/06/opera-95</feedburner:origLink></entry>  <entry>
    <title type="text">Dreamhost invitations</title> 
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ArveBersvendsen/~3/LcGF6JbIztE/dreamhost-invitations" />
    <id>tag:virtuelvis.com,2008-06-09:1:1270</id>
    <published>2008-06-09T20:39:09Z</published>
    <updated>2008-06-11T07:40:17Z</updated>
    <category term="Web hosting" /><category term="Web hosting" />
    <summary type="text">I've got five Dreamhost invitations offering increased disk space, bandwith, and up to $200 discount on hosting.</summary>
    <content type="html" xml:base="http://virtuelvis.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;I just received five &lt;a href="http://www.dreamhost.com/r.cgi?73901"&gt;Dreamhost&lt;/a&gt; invitations.  What are they?  Quite possibly the best deal possible if you are looking for shared web hosting:&lt;/p&gt;&#xD;
&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Dreamhost hosting is green, &lt;a href="http://www.dreamhost.com/aboutus-green.html"&gt;Carbon Neutral&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;Invitation signups get four times the regular disk space for signups.  That&#x2019;s 2TB of disk space.&lt;/li&gt;&#xD;
&lt;li&gt;Invitation signups also have four times monthly transfer. That&#x2019;s 20TB. Which is, frankly, more than you&#x2019;re going to be needing&lt;/li&gt;&#xD;
&lt;li&gt;You&#x2019;ll also be getting a $150 discount if you sign up for five years, bringing five years of hosting to $267. That&#x2019;s less than what I initially paid ($382 for two years of hosting, back when I signed up a few years ago. Mind you, my net payment for Dreamhost is negative &#x2014; the promo codes and signups have covered my hosting costs for a number of years now.&lt;/li&gt;&#xD;
&lt;li&gt;Invitation signups for ten years of hosting enjoy a $200 discount, bringing it to $514. That&#x2019;s about four nights of partying in Oslo.&lt;/li&gt;&#xD;
&lt;li&gt;Dreamhost are also offering Google apps for your domain for free.  In other words, use GMail for all of your mail, with your own domain.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&#xD;
&#xD;
&lt;p&gt;As said in the beginning of the mail, I have &lt;del&gt;five&lt;/del&gt;&lt;ins&gt;four&lt;/ins&gt; invitations.  The first five people who reply here with legitimate e-mail addresses receive a valid Dreamhost promo code that can be used during &lt;a href="https://signup.dreamhost.com/"&gt;sign up&lt;/a&gt;. When all invitations are taken, my &lt;a href="http://virtuelvis.com/archives/2005/10/dreamhost-discount"&gt;$79 discount promo code&lt;/a&gt; is still valid.&lt;/p&gt;&#xD;
        &#xD;
      &lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=2KjAteKU"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=FOaw242j"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=GRhvdxyc"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=GscYSGFy"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=GscYSGFy" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=vmvAuQqh"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=vmvAuQqh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=0zjoEzxn"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=0zjoEzxn" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=bo9QnyoI"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ArveBersvendsen/~4/LcGF6JbIztE" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://virtuelvis.com/archives/2008/06/dreamhost-invitations</feedburner:origLink></entry>  <entry>
    <title type="text">Nintendo: Marketing or gaming geniuses?</title> 
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ArveBersvendsen/~3/2kQA8_7X_dw/nintendo-marketing-or-gaming-geniuses" />
    <id>tag:virtuelvis.com,2008-05-28:1:1269</id>
    <published>2008-05-28T14:25:47Z</published>
    <updated>2008-09-05T08:56:07Z</updated>
    <category term="General" />
    <summary type="text">So, Nintendo </summary>
    <content type="html" xml:base="http://virtuelvis.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;Kotaku asks &lt;a href="http://kotaku.com/5011085/wii-fit-innovation-in-gaming-or-marketing"&gt;Wii Fit: Innovation in Gaming or Marketing?&lt;/a&gt;.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;What I really don&#x2019;t get is, is this an either/or question? I grew up in the eight- and sixteen-bit era, with games on the &lt;a href="http://en.wikipedia.org/wiki/Sinclair_ZX81"&gt;ZX81&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Sinclair_ZX_Spectrum"&gt;Spectrum&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Commodore_64"&gt;C64&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Commodore_Amiga"&gt;Amiga&lt;/a&gt;. After the Amiga died, I grew up, and reluctantly had to get a PC, so did my enthusiasm for games.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Sure, I&#x2019;ve occasionally played games on the PC. I loved Myst, Red Alert, Age of Mythology and liked the occasional FPS. But my interest in regular gaming has steadily declined over the years. Since I now have an actual life outside of computers and games, I simply don&#x2019;t have the time or energy to sit down with games that takes days or weeks to master. I have an hour or two every now and then. I can&#x2019;t sit awake and play &lt;a href="http://www.ageofconan.com/"&gt;Age of Conan&lt;/a&gt; until long after the cows have come home and are about to get milked and be sent off to the fields for the morning.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Not that I would have wanted to. Quoting trustygamer: &lt;a href="http://trustygamer.com/tg/home/industry-thoughts/i-miss-color/"&gt;I miss color&lt;/a&gt;. Note, this is about more than the actual color scheme. With many of the games I&#x2019;ve seen over the last years, the mood the game creates is not one I want to be in. Gaming is, as noted above, casual entertainment. Which means I play when I want to put myself in a cheery, upbeat mode. I don&#x2019;t play to become depressed.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Having said, there are occasional console games that I&#x2019;ve found tempting, namely racing games like Forza Motorsport, or the upcoming Gran Turismo. But not nearly tempting enough. I haven&#x2019;t walked out of a store carrying either an XBOX or PS3.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;I have however walked out of a store with a DS. And a Wii. Well, actually, we have two DSes at home, and two Wiis.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Those two devices have changed my gaming habits from &#x201c;Not playing games at all, except perhaps an occasional game on the web&#x201d;, to &#x201c;play whenever I have the time, and feel like it&#x201d;.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Sure, &lt;a href="http://en.wikipedia.org/wiki/Brain_Age"&gt;Brain Age&lt;/a&gt; might not have the type of appeal that makes me sit for hours on end with the console. Games like Super Mario Galaxy or Wii Sports may not have the most photorealistic graphics, or a long-winded storyline. And that&#x2019;s the point: These games have an instant-on, instant-off appeal. I can devote as much, or as little time as I want, and still enjoy playing.  I don&#x2019;t have to work on a controller-induced RSI to enjoy gaming on the Wii or DS.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Yesterday, I bought Wii Fit, set it up, and played it for something like fifteen minutes, before I went back to another activity.  My girlfriend did not fall asleep on the couch watching me play. When she wanted to watch &lt;a href="http://www.fox.com/house/"&gt;House&lt;/a&gt; instead, I could just shut down. I was not in the middle of a raid, I didn&#x2019;t have a level to finish, and I didn&#x2019;t feel deprived of anything because I stopped playing when someone needed me to stop playing. That&#x2019;s the appeal: When you&#x2019;ve turned thirty, gotten yourself a life, obligations and more important things in your life, different rules apply.  Nintendo have managed to create a gaming experience that allows these gamers to play.  That is both innovation in gaming.  At the same time, the graphical expression, and the mood of the games is also highly retro: The color schemes are bright and cheery. This is where the &#x201c;marketing&#x201d; bit, or rather, the viral bit come in.  The games look quirky, fun and simple to the casual gamer.  It leaves the gamer with a feeling of &#x201c;fun&#x201d;, and they feel they can master, play and enjoy the game.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;I&#x2019;m going home soon, and I&#x2019;ll quite probably play Wii Fit.  And I&#x2019;ll enjoy it, regardless of what some snot-nosed hardcore gamer may think.&lt;/p&gt;&#xD;
        &#xD;
      &lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=3lHss7sN"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=f5yXrKFz"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=3W2pTZ1F"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=1yL15unY"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=1yL15unY" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=AOsni0i4"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=AOsni0i4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=SajHDepB"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=SajHDepB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=BKOnVxy9"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ArveBersvendsen/~4/2kQA8_7X_dw" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://virtuelvis.com/archives/2008/05/nintendo-marketing-or-gaming-geniuses</feedburner:origLink></entry>  <entry>
    <title type="text">File I/O in widgets and the browser</title> 
    <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ArveBersvendsen/~3/QWs7-jZB6vM/dom-file-io" />
    <id>tag:virtuelvis.com,2008-05-07:1:1268</id>
    <published>2008-05-07T19:28:42Z</published>
    <updated>2008-09-05T09:00:38Z</updated>
    <category term="Technology" /><category term="Technology" /><category term="Technology" /><category term="Technology" /><category term="Technology" /><category term="Technology" /><category term="Technology" /><category term="Technology" />
    <summary type="text">About File I/O in widgets and in the browser.  An specification input proposal, and news on upcoming builds with File I/O enabled.</summary>
    <content type="html" xml:base="http://virtuelvis.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;Ok, so I had a somewhat mystically titled presentation at XTech, titled &lt;a href="http://2008.xtech.org/public/schedule/detail/546"&gt;Going full circle: Giving Web Applications and Widgets access to device and user data&lt;/a&gt;. The slides are &lt;a href="http://virtuelvis.com/slides/xtech08/"&gt;here&lt;/a&gt; (Should work reasonably well in Firefox, WebKit and Opera &#x2014; does not work in IE. Navigate with PageUp/PageDown or the mouse wheel)&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;What the presentation was actually about was &lt;a href="http://lists.w3.org/Archives/Public/public-webapi/2008May/0065.html"&gt;File I/O&lt;/a&gt; in the context of the browser, or more specifically, in widgets.  We produced an &lt;a href="http://dev.w3.org/2006/webapi/fileio/fileIO.htm"&gt;input paper&lt;/a&gt; to be picked up for standardization.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Further, we will release builds on &lt;a href="http://labs.opera.com/"&gt;labs.opera.com&lt;/a&gt; shortly, so you can get to play with it shortly, and hopefully also with some example code, so you can get your heads wrapped around this.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;strong&gt;Edit:&lt;/strong&gt; There are now public builds for you to play with &lt;a href="http://labs.opera.com/news/2008/05/08/"&gt;here&lt;/a&gt; &#x2014; have fun&lt;/p&gt;&#xD;
        &#xD;
      &lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=nzoUvlYt"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=sNDi0yys"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=131" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=CyNVjgeW"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=124" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=5xUdysIZ"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=5xUdysIZ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=k8ZMypy7"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=k8ZMypy7" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=0bKFEYJX"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?i=0bKFEYJX" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/ArveBersvendsen?a=bDL9TNXP"&gt;&lt;img src="http://feeds.feedburner.com/~f/ArveBersvendsen?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ArveBersvendsen/~4/QWs7-jZB6vM" height="1" width="1"/&gt;</content>
  <feedburner:origLink>http://virtuelvis.com/archives/2008/05/dom-file-io</feedburner:origLink></entry>
</feed>
