<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Nordhagen</title>
	<atom:link href="http://www.oyvindnordhagen.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.oyvindnordhagen.com/blog</link>
	<description>Øyvind Nordhagen's blog</description>
	<lastBuildDate>Mon, 08 Mar 2010 09:01:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Olog &#8211; finally.</title>
		<link>http://www.oyvindnordhagen.com/blog/2010/03/08/olog-finally/</link>
		<comments>http://www.oyvindnordhagen.com/blog/2010/03/08/olog-finally/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 05:20:47 +0000</pubDate>
		<dc:creator>Øyvind</dc:creator>
				<category><![CDATA[AILogger]]></category>
		<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[Olog]]></category>

		<guid isPermaLink="false">http://www.oyvindnordhagen.com/blog/?p=324</guid>
		<description><![CDATA[
Olog (formerly, AILogger formerly OKtrace, formerly text field on stage..) is a logging utility I have been using since the early days. The previous version, AILogger has been the most feature rich to date. But over the years a need to rewrite the whole thing has been growing more and more urgent. It actually started [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-293" title="OlogWindow" src="http://www.oyvindnordhagen.com/blog/wp-content/uploads/2010/03/OlogWindow.png" alt="" width="570" height="319" /></p>
<p>Olog (formerly, AILogger formerly OKtrace, formerly text field on stage..) is a logging utility I have been using since the early days. The previous version, AILogger has been the most feature rich to date. But over the years a need to rewrite the whole thing has been growing more and more urgent. It actually started life as an AS1 text field on stage, and was then made into an AS2 class which was then refactored for AS3. But after a while it became evident that it had been patched up too many times to do new things and was in desperate need of some overhaulin&#8217;.</p>
<p>It&#8217;s about time it took its name from its father as well, so I&#8217;m abandoning the scheme of naming it after my employer. (OKTrace = Okular, AILogger = Allegro Interaktiv). It has always been my pet project, so I&#8217;m taking it with me everywhere I go from now on. I also wanted a short name, seeing as I&#8217;ll be typing it a lot, so Olog it is (the &#8220;O&#8221; from Oyvind).</p>
<p>So this time it&#8217;ll be different, I promise! Olog 0.9 is actually AILogger 1.2 and then some in terms of features, but the first step in making it was &#8220;File &gt; New&#8221;. It&#8217;s completely rewritten, and no copy-paste this time. It has been tagging along during my latest project and so it has seen plenty of action already. I&#8217;ve tested it quite thoroughly, but it&#8217;s hard to say what happens when you try to live on your own for the first time. That&#8217;s why I have humbly versioned it 0.9b for now.</p>
<h2>New features</h2>
<p>Here are some new things you might like:</p>
<ul>
<li>Full featured window interface. Minimize/maximize/close buttons, double click on title bar to minimize. Moveable and resizable.</li>
<li>Selective line numbers, time-since-movie start and clock time for each line. These can all be turned of or off during run time.</li>
<li>Filtering of log levels. Pressing number keys 0-5 filters the log to show only those severity levels (color). Esc to escape.</li>
<li>Automatic update check. Olog will check for a new version once a week if you let it and notify you if there&#8217;s a newer version.</li>
<li>Save log to text/XML.</li>
<li>Persistent window state. Position, size, minimized/maximized state is remembered so you don&#8217;t have to keep moving it out of the way each time you compile.</li>
<li>Run time markers. Set a new named point-in-time marker, which you can later complete to display load/execution times.</li>
<li>Support for AILoggerEvents, but Olog has it&#8217;s own OlogEvent as well for loosely coupled logging.</li>
<li>Stacking of repeated messages.</li>
<li>Full ASDoc documentation.</li>
</ul>
<p><a href="http://www.oyvindnordhagen.com/blog/olog/">The olog page on my blog</a> has all the links you need, <a href="http://olog.googlecode.com/files/Olog0.9b.zip">direct ZIP download</a>, <a href="http://olog.googlecode.com/svn/trunk/">SVN repo access</a>, <a href="http://www.oyvindnordhagen.com/olog/docs/">asdoc documentation</a>, <a href="http://code.google.com/p/olog/">Google Code homepage</a> and even a <a href="http://www.oyvindnordhagen.com/blog/olog/">simple demo</a>. I&#8217;ll love to hear it if you have feedback!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oyvindnordhagen.com/blog/2010/03/08/olog-finally/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Waking up with aXbo S.P.A.C</title>
		<link>http://www.oyvindnordhagen.com/blog/2010/03/03/waking-up-with-axbo/</link>
		<comments>http://www.oyvindnordhagen.com/blog/2010/03/03/waking-up-with-axbo/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 20:42:46 +0000</pubDate>
		<dc:creator>Øyvind</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[alarm]]></category>
		<category><![CDATA[axbo]]></category>
		<category><![CDATA[bio]]></category>
		<category><![CDATA[clock]]></category>
		<category><![CDATA[cycle]]></category>
		<category><![CDATA[rhythm]]></category>
		<category><![CDATA[S.P.A.C.]]></category>
		<category><![CDATA[sleep]]></category>

		<guid isPermaLink="false">http://www.oyvindnordhagen.com/blog/?p=269</guid>
		<description><![CDATA[aXbo is a bio-rhythmic Sleep.Phase.Alarm.Clock promising to revolutionize the way you wake up every morning. Put simple, it works by identifying the different phases of sleep in your sleep cycle based on your amount of body movement. It then wakes you up at a time of light sleep, when you are most likely to feel well [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_271" class="wp-caption alignnone" style="width: 580px"><img class="size-full wp-image-271" title="AxboClock" src="http://www.oyvindnordhagen.com/blog/wp-content/uploads/2010/03/AxboClock.jpg" alt="The aXbo sleep phase alarm clock" width="570" height="349" /><p class="wp-caption-text">The aXbo sleep phase alarm clock</p></div>
<p>aXbo is a bio-rhythmic <strong>S</strong>leep.<strong>P</strong>hase.<strong>A</strong>larm.<strong>C</strong>lock promising to revolutionize the way you wake up every morning. Put simple, it works by identifying the different phases of sleep in your sleep cycle based on your amount of body movement. It then wakes you up at a time of light sleep, when you are most likely to feel well and rested. Two months ago I got a new job that requires a two hour commute, which means getting up at 6.30 three days a week. After being a tormented B-person all my life, I decided to buy this device i&#8217;d heard about in an attempt to make my mornings easier. I have now used it for a few days, so here&#8217;s how it&#8217;s working so far.</p>
<h2>In practicality</h2>
<p>First things first: This is a pricey product, costing just shy of 200 euros for the two-person edition. You buy it from <a href="http://www.axbo.com">www.axbo.com</a>, an Austrian website which in—typical German tradition—defaults to German. Mine was delivered in two weeks &#8220;due to strong demand&#8221;. The initial experience was somewhat limp in my case because it wouldn&#8217;t charge properly. After some time of emailing with their support people, it seemed that there was a problem with the power adapter/cable. Hence I ripped the front plate off, cut away some purposeless plastic thingies, extracted the three AAA batteries and let them charge in a normal battery charger. That worked while I waited for a new power adapter to arrive in the mail.</p>
<p>Setup is done though the menus on the clock with a couple of buttons and a scroll wheel on the side. Pretty standard stuff. My version is made for two people, and any time you do something relating to only one of them, the corresponding icon is displayed topmost in the LCD (see article image). You get a range of six different wake-up sounds, all surprisingly &#8220;alarm-ish&#8221; for a device that&#8217;s comes across as very gentle in all other aspects. I opted for the chirping birds and went to sleep.</p>
<h2>While you sleep—some theory</h2>
<p>A wristband is what enables the clock to register body movement. They come in man- and lady-size, one of each in my delivery. Inside it is a removable sensor, and the  Austrians are very specific about wearing it the right way on your left arm.</p>
<div id="attachment_272" class="wp-caption alignnone" style="width: 580px"><img class="size-full wp-image-272" title="AxboWristbands" src="http://www.oyvindnordhagen.com/blog/wp-content/uploads/2010/03/AxboWristbands.jpg" alt="aXbo wristbands used for recording your movements during sleep" width="570" height="380" /><p class="wp-caption-text">aXbo wristbands used for recording your movements during sleep</p></div>
<p>As explained thoroughly and way better on the aXbo&#8217;s own website, you move less in deep phases of sleep and more in the light ones. The scientists illustrate sleep cycles with a &#8220;hypnogramme&#8221;, so I thought I&#8217;d give it a shot.</p>
<p><img class="alignright" title="Hypnogramme" src="http://www.oyvindnordhagen.com/blog/wp-content/uploads/2010/03/Hypnogramme-300x189.jpg" alt="A typical, highly simplified hypnogramme" width="300" height="189" />In order to avoid copyright infringement, I drew you the illustration to the right. It&#8217;s not accurate in any way, but it gets the job done in explaining that you first enter a long, deep sleep phase, followed by waves of gradually shorter and lighter ones. This typically goes on for a period of 7-9 hours for a normal adult.</p>
<h2>Waking up</h2>
<p>If you wake up remembering your dreams, you most likely woke up from a REM-stage. This is better than waking up from deep sleep, but still not ideal. What you want is to wake up from the lightest sleep stage possible, shown as peaks in the hypnogramme. The aXbo predicts your next light sleep phase and wakes you as close as possible within a 30 minute window. Should your sleep cycle be out of sync with the alarm time you&#8217;ve set, the alarm will go off at that time. The same goes for if you forget to wear the wristband, or if the batteries are too drained to safely spend them on the sensing.</p>
<p>One thing I particularly like about the aXbo is your lack of choice when it comes to it&#8217;s core features. The wake-up window is 30 minutes, and that&#8217;s that. No configuration for a two hour snooze. And speaking of fans of the snooze button (we know who we are!), you won&#8217;t have much luck here, because there isn&#8217;t any. But what you do get is a button on the wristband that lets you turn the backlight on during the night to check how long you&#8217;ve gone without falling asleep. And more importantly, it is also used for silencing the alarm after it goes off . I usually feel a little woozy just after waking up (who doesn&#8217;t), so I like to sit upright in bed for a couple of minutes before putting my feet on the cold floor. This might be disobedient to the recommendation in the manual that says to get up immediately, but it works for me.</p>
<div id="attachment_273" class="wp-caption alignnone" style="width: 580px"><img class="size-full wp-image-273" title="AxboGlow" src="http://www.oyvindnordhagen.com/blog/wp-content/uploads/2010/03/AxboGlow.jpg" alt="The aXbo glows quite brightly and also illuminates the wall behind it" width="570" height="380" /><p class="wp-caption-text">The aXbo glows when you push the button on the wristband (firmly)</p></div>
<h2>So how does it feeeel?</h2>
<p>I&#8217;ll be a little cautious for now since I&#8217;ve only used it for a few days. But to me this seems like a step forward. The aXbo has yet to wake me up at the precise time I set it to, which can only mean that it has found a better time for me to get up. And so far I have not felt broken and beaten at that time like I usually do. Some mornings however, I have had the pleasure of experiencing something which is a bit of a rarity for me: The feeling of being ready to get out of bed. I suppose it is a little early to attribute it all to the clock, but I&#8217;m definitely thinking that there might be something to this device.</p>
<p>I will try to write some more about my experiences with the aXbo after having used it for a month or two. In the mean time, if you want to read up about sleep cycles, sleep phases and what not you probably know where to look.</p>
<p>PS. There&#8217;s also free data collection and analysis software for both PC and Mac available from the aXbo website if you want to get utterly German about your sleep. And also, writing the aXbo name with a lowercase &#8220;a&#8221; and a capital &#8220;X&#8221; is really not that cool, but apparently that&#8217;s its name.</p>
<h2>Ads</h2>
<p>I just had to link up these hilarious TV ads for the aXbo. I hope their sleep research is better than their metaphors (and the voice actor&#8217;s English):</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/qutz5gOs3z8&amp;hl=en_US&amp;fs=1&amp;color1=0xe1600f&amp;color2=0xfebd01" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/qutz5gOs3z8&amp;hl=en_US&amp;fs=1&amp;color1=0xe1600f&amp;color2=0xfebd01" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/kxsk3czp9ak&amp;hl=en_US&amp;fs=1&amp;color1=0xe1600f&amp;color2=0xfebd01" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/kxsk3czp9ak&amp;hl=en_US&amp;fs=1&amp;color1=0xe1600f&amp;color2=0xfebd01" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oyvindnordhagen.com/blog/2010/03/03/waking-up-with-axbo/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Regular Expression matching empty switch statements</title>
		<link>http://www.oyvindnordhagen.com/blog/2010/02/07/regular-expression-matching-empty-switch-statements/</link>
		<comments>http://www.oyvindnordhagen.com/blog/2010/02/07/regular-expression-matching-empty-switch-statements/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 22:21:38 +0000</pubDate>
		<dc:creator>Øyvind</dc:creator>
				<category><![CDATA[General thoughts]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[empty]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[internal]]></category>
		<category><![CDATA[match]]></category>
		<category><![CDATA[regepx]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[statement]]></category>
		<category><![CDATA[switch]]></category>

		<guid isPermaLink="false">http://www.oyvindnordhagen.com/blog/2010/02/07/regular-expression-matching-empty-switch-statements/</guid>
		<description><![CDATA[In my continuing effort to track down a particularly nasty case of internal build error/classes must not be nested in Flash Builder. I ran a regex to find empty switch statements. These are notoriously known for causing this error, so in follow up to my post about regex for finding unterminated lines (another possible culprit), [...]]]></description>
			<content:encoded><![CDATA[<p>In my continuing effort to track down a particularly nasty case of internal build error/classes must not be nested in Flash Builder. I ran a regex to find empty switch statements. These are notoriously known for causing this error, so in follow up to my post about regex for finding unterminated lines (another possible culprit), here is a RegExp that matches empty switch statements:</p>

<div class="wp_syntax"><div class="code"><pre class="regexp" style="font-family:monospace;">switch\s*?\(.*\).*\{\s*+\}</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.oyvindnordhagen.com/blog/2010/02/07/regular-expression-matching-empty-switch-statements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RegExp matching unterminated ActionScript lines (semicolon)</title>
		<link>http://www.oyvindnordhagen.com/blog/2010/02/04/regexp-matching-unterminated-actionscript-lines-semicolon/</link>
		<comments>http://www.oyvindnordhagen.com/blog/2010/02/04/regexp-matching-unterminated-actionscript-lines-semicolon/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 10:42:11 +0000</pubDate>
		<dc:creator>Øyvind</dc:creator>
				<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[Problems & Solutions]]></category>

		<guid isPermaLink="false">http://www.oyvindnordhagen.com/blog/?p=251</guid>
		<description><![CDATA[
Today I had the dreaded &#8220;1131: Internal build error&#8221; in Flash Builder coupled with the &#8220;Classes must not be nested error&#8221; despite no classes actually being nested. Googling around, I found a few posts that provide some tips towards a solution. The most frequent two of which are empty switch statements and ActionScript lines that [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-254" title="Skjermbilde 2010-02-04 kl. 11.40.44" src="http://www.oyvindnordhagen.com/blog/wp-content/uploads/2010/02/Skjermbilde-2010-02-04-kl.-11.40.44.png" alt="Skjermbilde 2010-02-04 kl. 11.40.44" width="570" height="91" /></p>
<p>Today I had the dreaded &#8220;1131: Internal build error&#8221; in Flash Builder coupled with the &#8220;Classes must not be nested error&#8221; despite no classes actually being nested. Googling around, I found a few posts that provide some tips towards a solution. The most frequent two of which are empty switch statements and ActionScript lines that are not properly terminated with a semicolon. The project in questing uses over 100 classes, so I decided to create a RegExp for use in &#8220;Find In Files&#8221; to search for lines that were not properly terminated.</p>
<p>As an extra caveat, many types of lines in programming are not supposed to be terminated, so the RegExp is quite long and I have not been able to test it any more than the said 100-class project I&#8217;m working on.</p>
<p><strong>NOTE: This might macth some multiline ASDoc comments, empty lines and method argument lists spanning multiple lines as well.</strong></p>

<div class="wp_syntax"><div class="code"><pre class="regexp" style="font-family:monospace;">(?sim)(?&lt;!/\*)^\t*((?!\{|\}|@)(?!function|import|class|embed|SWF|if|else|switch|case|while|for|event|try|catch|finally|package|default|//|/\*|\*/)[^;])+$(?!.*\*/)</pre></div></div>

<p>Here are the posts I found:</p>
<ul>
<li><a href="http://rjowen.wordpress.com/2007/06/21/internal-build-error-or-classes-must-not-be-nested-error/" target="_blank">flex&#8217;d: “Internal Build Error” or “Classes Must Not Be Nested” error</a></li>
<li><a href="http://www.insideria.com/2009/09/fixed-an-internal-build-error.html">Inside RIA: Fixed: &#8220;An internal build error has occurred&#8221; with FB3 &amp; Galileo</a></li>
<li><a href="http://www.tink.ws/blog/an-internal-build-error-has-occurred-switch-statement/" target="_blank">Tink: An internal build error has occurred (switch statement)</a></li>
<li><a href="http://michael.omnicypher.com/2007/02/internal-build-error.html" target="_blank">Michael Imhoff: Internal Build Error</a></li>
<li><a href="http://www.judahfrangipane.com/blog/?p=212" target="_blank">judah’s blog: Internal Build Error</a></li>
</ul>
<p>EDIT: Added &#8220;default&#8221; to the RegExp. If anyone has any improvements to this, please let me know. Especially on how to make it not match so many empty lines.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oyvindnordhagen.com/blog/2010/02/04/regexp-matching-unterminated-actionscript-lines-semicolon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The case for Apples closed platform model</title>
		<link>http://www.oyvindnordhagen.com/blog/2010/01/29/the-case-for-apples-closed-platform-model/</link>
		<comments>http://www.oyvindnordhagen.com/blog/2010/01/29/the-case-for-apples-closed-platform-model/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 23:42:54 +0000</pubDate>
		<dc:creator>Øyvind</dc:creator>
				<category><![CDATA[Culture]]></category>
		<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://www.oyvindnordhagen.com/blog/?p=243</guid>
		<description><![CDATA[I&#8217;m getting really fed up by the unjustified apple bashing that goes on these days. Just 24 hours after the launch of the iPad and the net is overflowing with whining complaints about Apples continuing stance against a more open platform model when it comes to hardware and the App Store. Again.
Before reading on, you [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m getting really fed up by the unjustified apple bashing that goes on these days. Just 24 hours after the launch of the iPad and the net is overflowing with whining complaints about Apples continuing stance against a more open platform model when it comes to hardware and the App Store. Again.</p>
<p>Before reading on, you probably wonder if I&#8217;m a fanboy myself. The answer to that is both yes and no. Yes because there&#8217;s no denying the abundance of Apple made devices and solutions that enrich my daily life, both professionally and personnally. No because I have no problem recognizing the faults and strangeness to be found in the Apple eco system. But this is not about Apple in general, but the specific case of the path Apple has chosen when it comes to app third party development, approval and distribution.</p>
<p><a href="http://al3x.net/2010/01/28/ipad.html">Alex Payne writes on his blog</a>:</p>
<blockquote><p>The iPad demonstrates that if Apple is listening to these complaints, they simply don’t care. This is why I say that the iPad is a cynical thing: Apple can’t – or won’t – conceive of a future for personal computing that is both elegant and open, usable and free.</p></blockquote>
<p>This pisses me off because it lacks perspective. If a company is manufacturing products in low-cost countries, well aware that the cheap production price comes at a high health price for the workers—and lets face it, maybe Apple is— then that&#8217;s cynical. But choosing a strategy that locks as much as possible of the inner workings of a commercial device down, simply isn&#8217;t. It might be disappointing at worst. Some argue in their own right that it&#8217;s unwise. But the bottom line is that it&#8217;s the right of any business, just as it&#8217;s the consumers right to choose not to spend their money there. The majority of western world economies are based on this general principle, and whether we like it or not, it applies to Apple as well. Complaining about cynicism in this context tells me you haven&#8217;t thought this through.</p>
<p>As explained by Steve and his subordinates on numerous occations, Apple believes they need control over as many aspects of their production and delivery chain as possible in order to deliver the best user experience they can. Remember, this is a belief converted to a strategy that Apple applies to the products they make and own. This has enabled them to create breakthrough products that raises the bar for everyone else in the industry and has led to real paradigm shifts in the way we work, play and communicate. HTC, Nokia/Symbian and the rest haven&#8217;t even come close in terms of sales and widespread adoption. No matter how hard you try and pick that statement apart and devaluate it, there&#8217;s no denying the fact that the sales, adoption rate and most importantly; customer satisfaction tell the same story. Apple puts this down to the very same platform model that&#8217;s been getting the worst of the tech press lately. You may argue that an equal success would have been possible if Apple had taken their combined product design, UI design and engineering wizardry and walked the open road, and you may even be proven right one day. But so far that&#8217;s been the path of their jealous competitors.</p>
<p>What I explain to many fresh switchers from PC to Mac is that to get the best experience you kind of have to buy into the whole eco system of the Mac. I don&#8217;t particularly like to give that advice, but it&#8217;s the truth. Apple has a vision. Where that vision deviates from many other&#8217;s is in the holistic nature of it; the fact that Apple products are designed to work best with other Apple (approved) products and to make more decisions and assumptions on the user&#8217;s behalf. To make all this possible it makes sense to control larger parts of the environment the product lives in.</p>
<p>As a user interface developer, I&#8217;m the middle man between the designer and the back end developers, which puts me at the center of UI/business logic debate. From this experience I know how challenging it can be to get a success from the collaboration involving just three creators that might even be used to working with each other. The designer has the vision, I may share it and execute it or break it depending on several factors. The backend guy might do either himself. Expand that example to involving, hardware, firmware, OS, software, peripherals <em>and</em> third party providers, and you can easily see why anyone might choose to keep this all under the same roof, within the same company culture, under the same visionary leader. You can easily say it&#8217;s hard enough as it is without providing the means for others to mess with it all they want.</p>
<p>I suspect that inside most of us, we like the idea of openness an sharing. I&#8217;m no different and as a Flash Developer I try to make my own contribution whenever I can. If Apple were to go 180 in the question of an open platform, I would certainly applaud them for it. Until then I&#8217;m a generally happy, relatively IT problem-free participant in the Apple eco system.</p>
<p>&#8230;and I&#8217;m not getting an <span style="text-decoration: line-through;">iSlate</span> <span style="text-decoration: line-through;">iTablet</span> <span style="text-decoration: line-through;">iTampon</span> iPad because I also think it&#8217;s an oversized iPod Touch and I don&#8217;t have a need for it. Loving my iPhone though!</p>
<p>EDIT: A few links to great posts on the subject:</p>
<ul>
<li><a href="http://www.rinich.com/post/358597818/i-love-walled-gardens">I Love Walled Gardens, by Rory Marinich</a></li>
<li><a href="http://blog.jaggeree.com/post/357787918/why-the-ipad-may-be-just-what-we-need-for-digital">jaggeree /Blog : : Why the iPad may be just what we need for Digital Inclusion</a></li>
<li><a href="http://www.guardian.co.uk/technology/2010/jan/29/stephen-fry-apple-ipad">Stephen Fry: why the Apple iPad is here to stay | The Guardian</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.oyvindnordhagen.com/blog/2010/01/29/the-case-for-apples-closed-platform-model/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SlowLoader &#8211; Easy bandwidth simulation util for Flash</title>
		<link>http://www.oyvindnordhagen.com/blog/2010/01/06/slowloader-easy-bandwidth-simulation-util-for-flash/</link>
		<comments>http://www.oyvindnordhagen.com/blog/2010/01/06/slowloader-easy-bandwidth-simulation-util-for-flash/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 20:58:32 +0000</pubDate>
		<dc:creator>Øyvind</dc:creator>
				<category><![CDATA[Freebies]]></category>
		<category><![CDATA[General thoughts]]></category>
		<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[bandwidth]]></category>
		<category><![CDATA[connection speed]]></category>
		<category><![CDATA[simulation]]></category>
		<category><![CDATA[SlowLoader]]></category>
		<category><![CDATA[throttle]]></category>

		<guid isPermaLink="false">http://www.oyvindnordhagen.com/blog/?p=234</guid>
		<description><![CDATA[Today I was working on a project with real strange issues related to the duration of load operations. I decided to throw together a class that would enable me to throttle the download speed of the Loader class when used locally. Simply strangle the bandwidth by entering the desired speed in the load method and [...]]]></description>
			<content:encoded><![CDATA[<p>Today I was working on a project with real strange issues related to the duration of load operations. I decided to throw together a class that would enable me to throttle the download speed of the Loader class when used locally. Simply strangle the bandwidth by entering the desired speed in the load method and you&#8217;re good to go.</p>
<p><a href="/public/SlowLoader.zip"><img class="alignleft size-full wp-image-54" src="http://www.oyvindnordhagen.com/blog/wp-content/uploads/2008/01/zip.gif" alt="" width="32" height="32" /></a><a href="/public/SlowLoader.zip"><br />
Download SlowLoader.as</a></p>
<p>It works very much the same way as the Loader class with the only difference being that you add your event listeners directly to the SlowLoader instance instead of the contentLoaderInfo instance of the Loader instance. Other than that it dispatches the same events as the Loader class does so it should be fairly simple to swap it for a regular Loader when you&#8217;re done. I&#8217;ve also included and example class. Here&#8217;s an excerpt of it:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #6699cc; font-weight: bold;">var</span> l<span style="color: #000000; font-weight: bold;">:</span>SlowLoader = <span style="color: #0033ff; font-weight: bold;">new</span> SlowLoader<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
l.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">ProgressEvent</span>.<span style="color: #004993;">PROGRESS</span>, _updateProgress<span style="color: #000000;">&#41;</span>;
l.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">INIT</span>, _showImage<span style="color: #000000;">&#41;</span>;
l.<span style="color: #004993;">load</span><span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">URLRequest</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;file.jpg&quot;</span><span style="color: #000000;">&#41;</span>, <span style="color: #000000; font-weight:bold;">512</span>, <span style="color: #000000; font-weight:bold;">0.9</span><span style="color: #000000;">&#41;</span>;</pre></td></tr></table></div>

<p>NOTE: SlowLoader was developed for my own use, which means that it dispatches AILoggerEvents for printing log messages from it. AILogger is also included in the ZIP file and <a href="http://ailogger.googlecode.com">you can read more about it here</a>. If you do not wish to use it, feel free to strip these lines out of the class.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oyvindnordhagen.com/blog/2010/01/06/slowloader-easy-bandwidth-simulation-util-for-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AS3 dictionary back to back in 4 months</title>
		<link>http://www.oyvindnordhagen.com/blog/2009/11/09/as3-dictionary-back-to-back-in-4-months/</link>
		<comments>http://www.oyvindnordhagen.com/blog/2009/11/09/as3-dictionary-back-to-back-in-4-months/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 03:03:48 +0000</pubDate>
		<dc:creator>Øyvind</dc:creator>
				<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[General thoughts]]></category>
		<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://www.oyvindnordhagen.com/blog/2009/11/09/as3-dictionary-back-to-back-in-4-months/</guid>
		<description><![CDATA[
As some of you might know, I&#8217;m in layoff from my job as a flash developer at Allegro Interaktiv. I&#8217;ve been thinking hard and well about what I want to spend this period of four months doing. I will be freelancing a little if I can (in agreement with my employer of course), spend time [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both"><img class="alignnone size-full wp-image-223" title="AS3 Language Reference and Dictionary" src="http://www.oyvindnordhagen.com/blog/wp-content/uploads/2009/11/asref.jpg" alt="AS3 Language Reference and Dictionary" width="570" height="300" /></p>
<p style="clear: both">As some of you might know, I&#8217;m in layoff from my job as a flash developer at <a href="http://www.allegro.no" target="_blank">Allegro Interaktiv</a>. I&#8217;ve been thinking hard and well about what I want to spend this period of four months doing. I will be freelancing a little if I can (in agreement with my employer of course), spend time with my family, and also catch up on a few forsaken hobbies.</p>
<p style="clear: both">But this sudden abundance of free time obviously creates a pefect climate for getting up to speed on new Flash libraries and dig deeper into the ones I already know. Like the AS3 core classes. That&#8217;s why I&#8217;ve given my self a perhaps rediculous challenge; to read the complete ActionScript Language Reference back to back over the next four months. This is clearly perversely nerd-like and all that, but here&#8217;s why.</p>
<p style="clear: both">
<h2>The case for reading it all</h2>
<p style="clear: both">Actually I&#8217;ve been thinking about it for a few years. You see every time I look up a class or a method in the dictionary, I usually read one or two paragraphs more than I need. Often I learn something new that&#8217;s been sitting just below the surface of what I already know. At times the AS3 language reference is not even that badly written and the examples are usually useful. So instead of googling for tutorials about particle engines, Papervision and what not, I decided that before trying to gain something completely new I&#8217;d be better off getting to know the old annoying aunt intimately. Well not in that sense&#8230; sorry, you know what I mean.</p>
<p style="clear: both">
<h2>You should too!</h2>
<p style="clear: both">I&#8217;m not saying you really should join me in this preposterous endeavour, but I am serious in that many tend to overlook what a great resource the AS3 Language Reference really is. So the essence is really that you can learn a lot from what you already have at a single keyboard command (shift-F1 in Flash that is). Look up some random class name that you&#8217;ve never used an find out what it&#8217;s for. You might be glad you did.</p>
<p style="clear: both">In the mean time, you can follow my progress here at the blog, and if you <a href="http://www.twitter.com/nordhagen" target="_blank">follow me on Twitter</a>.</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oyvindnordhagen.com/blog/2009/11/09/as3-dictionary-back-to-back-in-4-months/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AILogger 1.2.1 &#8211; Now on Google Code</title>
		<link>http://www.oyvindnordhagen.com/blog/2009/09/21/ailogger-1-2-1-now-on-google-code/</link>
		<comments>http://www.oyvindnordhagen.com/blog/2009/09/21/ailogger-1-2-1-now-on-google-code/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 22:00:38 +0000</pubDate>
		<dc:creator>Øyvind</dc:creator>
				<category><![CDATA[General thoughts]]></category>

		<guid isPermaLink="false">http://www.oyvindnordhagen.com/blog/2009/09/21/ailogger-1-2-1-now-on-google-code/</guid>
		<description><![CDATA[After fridays last minute upload of version 1.2.0 of AILogger, some things went fruity and I apologize. Thanks to aYo who brought it to my attention. While I had to make corrections, I decided it was time to set up a Google Code project to make it easier to commit and recieve updates down the [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both"><img src="http://www.oyvindnordhagen.com/blog/wp-content/uploads/2009/09/Skjermbilde_2009-09-21_kl-thumb._23.53.1.png" height="387" width="488" style=" text-align: center; display: block; margin: 0 auto 10px;" />After fridays last minute upload of version 1.2.0 of AILogger, some things went fruity and I apologize. Thanks to aYo who brought it to my attention. While I had to make corrections, I decided it was time to set up a <a href="http://code.google.com/p/ailogger/" target="_blank">Google Code project</a> to make it easier to commit and recieve updates down the line. It also provides a better way for others to contribute and report any issues. So if you find any, please let me know.</p>
<p style="clear: both">As before, you can choose to <a href="http://www.oyvindnordhagen.com/public/AILogger.zip" target="_blank">download AILogger from here</a> and the source files can also be downloaded from the Google Project Home as the same ZIP archive in addition to SVN repository access.</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oyvindnordhagen.com/blog/2009/09/21/ailogger-1-2-1-now-on-google-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AILogger 1.2 is out!</title>
		<link>http://www.oyvindnordhagen.com/blog/2009/09/15/ailogger-1-2-is-out/</link>
		<comments>http://www.oyvindnordhagen.com/blog/2009/09/15/ailogger-1-2-is-out/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 08:40:16 +0000</pubDate>
		<dc:creator>Øyvind</dc:creator>
				<category><![CDATA[AILogger]]></category>
		<category><![CDATA[Adobe Flash]]></category>

		<guid isPermaLink="false">http://www.oyvindnordhagen.com/blog/2009/09/15/ailogger-1-2-is-out/</guid>
		<description><![CDATA[After a few months of refinement It&#8217;s time to bring out a new version of AILogger. This time these are the improvements:


Added public describe method to log all properties of an object
Added support for CODE_TRACE, these lines are color coded gray.
passwordDisabled property renamed to disablePassword
stampLinesWithSender property renamed to disableSenderLabel
Fixed support for CODE_EVENT log coloring
Supports new [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both"><img style=" display: inline; float: left; margin: 0 10px 10px 0;" src="http://www.oyvindnordhagen.com/blog/wp-content/uploads/2009/09/ailogger_slanted3-thumb.jpg" alt="" width="379" height="251" align="left" /><br style="clear: both" />After a few months of refinement It&#8217;s time to bring out a new version of AILogger. This time these are the improvements:</p>
<p style="clear: both">
<ul style="clear: both">
<li>Added public describe method to log all properties of an object</li>
<li>Added support for CODE_TRACE, these lines are color coded gray.</li>
<li>passwordDisabled property renamed to disablePassword</li>
<li>stampLinesWithSender property renamed to disableSenderLabel</li>
<li>Fixed support for CODE_EVENT log coloring</li>
<li>Supports new paramteter origin in AILoggerEvent to specify the sender of a log message</li>
<li>Better handling of logged ErrorEvents</li>
<li>Now recognizes logged color numbers and displays it&#8217;s HEX code and colors the line with that color</li>
</ul>
<p style="clear: both">Get it <a href="http://www.oyvindnordhagen.com/blog/ailogger/">here</a></p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oyvindnordhagen.com/blog/2009/09/15/ailogger-1-2-is-out/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Norwegian police gets new dead-on-arrival website</title>
		<link>http://www.oyvindnordhagen.com/blog/2009/09/04/norwegian-police-gets-new-dead-on-arrival-website/</link>
		<comments>http://www.oyvindnordhagen.com/blog/2009/09/04/norwegian-police-gets-new-dead-on-arrival-website/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 09:59:54 +0000</pubDate>
		<dc:creator>Øyvind</dc:creator>
				<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://www.oyvindnordhagen.com/blog/2009/09/04/norwegian-police-gets-new-dead-on-arrival-website/</guid>
		<description><![CDATA[The ux experts are raging and the press is having a blast here in Norway. Last week, the new website for the Norwegian police was launched, with the ability to report simple thefts online as one of the main attractions (a feature our Nordic neighbours have had for some time already).
I won&#8217;t go into too [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both"><img src="http://www.oyvindnordhagen.com/blog/wp-content/uploads/2009/09/nye_politi-678x393-thumb.png" height="284" align="left" width="489" style=" display: inline; float: left; margin: 0 10px 10px 0;" /><a href="about:blank"></a>The ux experts are raging and the press is having a blast here in Norway. Last week, the <a href="http://www.politi.no" target="_blank">new website for the Norwegian police</a> was launched, with the ability to report simple thefts online as one of the main attractions (a feature our Nordic neighbours have had for some time already).</p>
<p style="clear: both">I won&#8217;t go into too much detail about the weaknesses about the new site, as you can probably spot a few by visiting <a href="http://.www.politi.no" target="_blank">politi.no</a> yourself. Suffice to say that it has been hacked already, the search is basically broken, the servers can&#8217;t handle the traffic and it looks 10 years old! is this supposed to be like the Curious Case of Benjamin Button?</p>
<p style="clear: both">Add this to the fact that it took them a year and over 26 million NOK to build it and the picture starts to become a rather bizarre one.</p>
<p style="clear: both">Also, this makes a nice sequel to the sad story of <a href="https://www.altinn.no/no/" target="_blank">altinn.no</a> which was launched a few years back which offers an unparalleled level of confusion and frustration when Norwegians once a year go online to deal with their tax reports. I don&#8217;t know exactly how much money was thrown at that project, but not much of it seems to have landed on the usability experts.</p>
<p style="clear: both">Come on people, we can do better than that!</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oyvindnordhagen.com/blog/2009/09/04/norwegian-police-gets-new-dead-on-arrival-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
