<?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>Mumblings of a Web Developer</title>
	<atom:link href="http://www.nathanderksen.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nathanderksen.com/blog</link>
	<description>&#039;Dis, &#039;dat, and &#039;d other thing</description>
	<lastBuildDate>Fri, 18 May 2012 04:58:02 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Addressing Android Fragmentation</title>
		<link>http://www.nathanderksen.com/blog/2012/05/17/addressing-android-fragmentation/</link>
		<comments>http://www.nathanderksen.com/blog/2012/05/17/addressing-android-fragmentation/#comments</comments>
		<pubDate>Thu, 17 May 2012 23:51:29 +0000</pubDate>
		<dc:creator>nderksen</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[android mobile fragmentation]]></category>

		<guid isPermaLink="false">http://www.nathanderksen.com/blog/?p=82</guid>
		<description><![CDATA[A link from the folks who make the OpenSignalMaps app for Android has been making the rounds in the last couple of days. In the article, they reveal that they have been analyzing the Android devices that have been using &#8230; <a href="http://www.nathanderksen.com/blog/2012/05/17/addressing-android-fragmentation/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>A link from the folks who make the OpenSignalMaps app for Android has been making the rounds in the last couple of days. <a title="OpenStreetsMap Android Fragmentation" href="http://opensignalmaps.com/reports/fragmentation.php" target="_blank">In the article</a>, they reveal that they have been analyzing the Android devices that have been using their app and have counted 3,997 different Android variants of model, brand, Android version, and screen size. You can imagine the headache that causes for application testers and for mobile Web developers.</p>
<p><a href="http://opensignalmaps.com/reports/fragmentation.php"><img class="alignnone size-full wp-image-87" title="Android Fragmentation Infographic" src="http://www.nathanderksen.com/blog/wp-content/uploads/2012/05/android_fragmentation_graphic.gif" alt="Android Fragmentation Infographic" width="575" height="313" /></a></p>
<p>I see a number of reasons for this plethora of Android variants:</p>
<ul>
<li>It takes longer for old versions of Android OS to fall into disuse; it takes in the order of a year for a new version from Google to be adopted, updated, and tested by the device manufacturers and tested by the carriers.</li>
<li>Companies like Samsung and HTC take a spaghetti against the wall approach, creating large numbers of different devices in the attempt to cater to different customer interests. For example, I counted 34 current models advertised by HTC, with 23 of them running Android, and 5 Android tablet models. Samsung shows <strong>144</strong> models (!), with 54 running Android, and 17 Android tablet models.</li>
<li>Not reflected in the report, but smart-phone manufacturers using Android need to differentiate themselves from the other manufacturers also using Android. To help with this, these companies extend the base Android install with their own user interface customization layers. HTC adds <a title="HTC Sense UI Overview" href="http://en.wikipedia.org/wiki/HTC_Sense" target="_blank">Sense UI</a>, Samsung adds <a title="Samsung TouchWiz Overview" href="http://en.wikipedia.org/wiki/TouchWiz" target="_blank">TouchWiz</a>, and other makers such as LG, Motorola, and Sony Ericsson have their own equivalents. This of course introduces additional functional differences between handsets from different vendors, not to mention bugs and performance issues.</li>
</ul>
<p>As a consumer, I&#8217;ve looked through lists of Android devices trying to pick one that is suitable, and it&#8217;s actually quite intimidating. Compare that with Apple where your choice is between the legacy iPhone 4 or the current iPhone 4s. As a developer working increasingly with mobile, it&#8217;s intimidating from a testing standpoint. While proponents cite the level of choice that exists, that choice comes with a big cost.</p>
<p>From a developer&#8217;s point of view, there are a few things that would be a big help:</p>
<ul>
<li>Google should update their emulator so that it simulates individual models. Right now, that&#8217;s pretty much impossible. In contrast, Research in Motion includes virtual machines for pretty much every iteration of every single Blackberry that they sell, including the variants from every carrier.</li>
<li>Google should update the Web browser in their emulators so that they also do a better job of simulating real devices. The one they have now is piss-poor, the only thing it&#8217;s good for is showing that yes, there is a web page showing. In contrast, mobile Safari in Apple&#8217;s emulators makes a very accurate representation of the real thing and can be used for testing and debugging purposes.</li>
<li>Not that this will happen anytime soon, but it sure would be helpful if handset vendors stopped taking the spaghetti against the wall approach and focused their offerings with fewer models.</li>
</ul>
<p>Having emulators is no replacement for the real device, but who&#8217;s going to have a testbed of 4,000 devices? I would be very happy to see these things happen, but I&#8217;m not holding my breath. Still, I can dream.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nathanderksen.com/blog/2012/05/17/addressing-android-fragmentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Josh Clark: Nielsen Wrong on Mobile</title>
		<link>http://www.nathanderksen.com/blog/2012/04/12/nielsen-wrong-on-mobile/</link>
		<comments>http://www.nathanderksen.com/blog/2012/04/12/nielsen-wrong-on-mobile/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 17:57:20 +0000</pubDate>
		<dc:creator>nderksen</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.nathanderksen.com/blog/?p=77</guid>
		<description><![CDATA[I just read a great article by Josh Clark critiquing Jacob Nielsen&#8217;s stance on mobile Web sites. The idea is that a large number of people use their phone as their primary way of accessing the Web. By dumbing down &#8230; <a href="http://www.nathanderksen.com/blog/2012/04/12/nielsen-wrong-on-mobile/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I just read a <a title="Nielsen is Wrong on Mobile" href="http://www.netmagazine.com/opinions/nielsen-wrong-mobile" target="_blank">great article</a> by Josh Clark critiquing <a title="Mobile Site vs Full Site" href="http://www.useit.com/alertbox/mobile-vs-full-sites.html" target="_blank">Jacob Nielsen&#8217;s stance</a> on mobile Web sites. The idea is that a large number of people use their phone as their primary way of accessing the Web. By dumbing down the mobile site, removing content, and making it hard to find that content on the full site, we are making their lives harder, not easier. He also made a strong point about how the same content viewed on different devices should have the same URL, and I think I&#8217;m coming over to agree with that point of view.</p>
<p>The idea is that adaptive design can give you different views on the same content, and with adaptive design you should be able to get a &#8220;full&#8221; site that&#8217;s better formatted to the smaller screens. The one caveat though about having the same site for desktop and for mobile: many use cases often are different between mobile and desktop, some content should be featured more prominently on mobile devices than on desktop sites so that the more common mobile activities can be achieved more quickly. Adaptive design techniques should be able to handle this, it just means you still have to consider mobile separately even though the site is shared.</p>
<p>And while we are talking about Jakob Nielsen, when is he going to get around to making his site even mildly appealing? He&#8217;s had the same ugly design when I <a title="Jakob Nielsen and Visual Design" href="/blog/2004/06/03/jakob-nielsen-and-visual-design/" target="_blank">last commented on it</a> 8 years ago. When is he going to learn that visual aesthetics are part of usability as well?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nathanderksen.com/blog/2012/04/12/nielsen-wrong-on-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eric Raymond – Don&#8217;t Tread on Me</title>
		<link>http://www.nathanderksen.com/blog/2012/02/27/eric-raymond-dont-tread-on-me/</link>
		<comments>http://www.nathanderksen.com/blog/2012/02/27/eric-raymond-dont-tread-on-me/#comments</comments>
		<pubDate>Mon, 27 Feb 2012 18:15:02 +0000</pubDate>
		<dc:creator>nderksen</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[acta]]></category>
		<category><![CDATA[government]]></category>
		<category><![CDATA[mpaa]]></category>
		<category><![CDATA[pipa]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[sopa]]></category>

		<guid isPermaLink="false">http://www.nathanderksen.com/blog/?p=67</guid>
		<description><![CDATA[I love this letter from Eric Raymond to Chris Dodd, CEO of the Motion Picture Association of America. It sums up nicely the way I feel about how lobbyists and legislators are attempting to trample on citizens&#8217; rights through dubious &#8230; <a href="http://www.nathanderksen.com/blog/2012/02/27/eric-raymond-dont-tread-on-me/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I love this <a href="http://esr.ibiblio.org/?p=4155" title="Eric Raymond open letter to MPAA CEO Chris Dodd" target="_blank">letter</a> from Eric Raymond to Chris Dodd, CEO of the Motion Picture Association of America. It sums up nicely the way I feel about how lobbyists and legislators are attempting to trample on citizens&#8217; rights through dubious claims and ill-advised legislation. Between <a href="http://pandodaily.com/2012/01/18/how-hollywood-twisted-theft-laws-long-before-sopa/" title="Forget SOPA, Hollywood Already Had a Field Day With the Justice System" target="_blank">draconian punishments for copyright infringers</a>, the attempt to <a href="http://en.wikipedia.org/wiki/Trusted_computing#Criticism" title="Trusted Computing - Criticism" target="_blank">enforce DRM through &#8220;trusted computing&#8221;</a>, and the attempt to <a href="http://www.globaltvbc.com/opposition+blasts+vic+toews+online+privacy+ultimatum/6442580469/story.html" title="Opposition Blasts Vic Toews Online Privacy Ultimatum" target="_blank">snoop on citizens&#8217; communications without warrants</a>, the ideals upon which not just the Internet but our IT industry as a whole were created are being trampled. Please don&#8217;t let them win.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nathanderksen.com/blog/2012/02/27/eric-raymond-dont-tread-on-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google&#8217;s Swiffy Helps Convert 10 Year Old Flash Content to HTML5</title>
		<link>http://www.nathanderksen.com/blog/2011/06/29/googles-swiffy-helps-convert-10-year-old-flash-content-to-html5/</link>
		<comments>http://www.nathanderksen.com/blog/2011/06/29/googles-swiffy-helps-convert-10-year-old-flash-content-to-html5/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 21:18:58 +0000</pubDate>
		<dc:creator>nderksen</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[swiffy]]></category>

		<guid isPermaLink="false">http://www.nathanderksen.com/blog/?p=44</guid>
		<description><![CDATA[Google recently made available Swiffy, a tool for converting Flash content to run in a browser without the Flash Player plug-in. The goal is to make Flash content available on modern browsers without a plug-in. Adobe has a very similar &#8230; <a href="http://www.nathanderksen.com/blog/2011/06/29/googles-swiffy-helps-convert-10-year-old-flash-content-to-html5/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Google recently made available <a href="http://swiffy.googlelabs.com/" target="_blank">Swiffy</a>, a tool for converting Flash content to run in a browser without the Flash Player plug-in. The goal is to make Flash content available on modern browsers without a plug-in. Adobe has a very similar tool called <a href="http://labs.adobe.com/technologies/wallaby/" target="_blank">Wallaby</a>.</p>
<p>Does that sound good? Well, in theory yes, but pretty much all the chatter I&#8217;ve heard so far about this tool omits some critical details:<br />
<span id="more-44"></span></p>
<ul>
<li>Swiffy does not support ActionScript 3, even though it&#8217;s been out since 2006 and is superior to AS2 in almost every way. It even only partly supports ActionScript 2.</li>
<li>Google recommends that Flash content is exported as Flash 5 (we are currently at 10.3). That version is well over 10 years old, has only basic scripting capabilities, no components, nor any of the 10+ years worth of other enhancements that have been made to the platform. Even then, they don&#8217;t support the whole Flash 5 spec.</li>
<li>Swiffy currently requires WebKit based browsers, such as Safari (mobile and desktop) or Chrome. Firefox and IE aren&#8217;t supported.</li>
</ul>
<p>The only thing that this tool is suitable for is animations, which means that the only place it will likely be used is for ads. For even the simplest of Flash-based applications, it&#8217;s not remotely useful. Google does make it clear that this is for animations in their FAQ, but that detail is getting missed. Converting anything other than an animation would not terribly feasible, there is a significant capability that Flash has that HTML5 does not have, and there is the potential for significant complexity in applications created using the platform. It would likely not be feasible to implement a conversion tool that adapts an actual Flash application to HTML5.</p>
<p>There is no panacea when it comes to Web applications. There are things that are more suitable for Flash and Flex, and other things that are more suitable for HTML5. Sometimes you need both to target different audiences. An automated conversion tool isn&#8217;t going to apply the needed thought to adapt functionality for the audience.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nathanderksen.com/blog/2011/06/29/googles-swiffy-helps-convert-10-year-old-flash-content-to-html5/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Story of a Pitched Battle With a Massive IE/Flash Memory Leak</title>
		<link>http://www.nathanderksen.com/blog/2009/08/31/story-of-a-pitched-battle-with-a-massive-ieflash-memory-leak/</link>
		<comments>http://www.nathanderksen.com/blog/2009/08/31/story-of-a-pitched-battle-with-a-massive-ieflash-memory-leak/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 23:38:45 +0000</pubDate>
		<dc:creator>Nathan Derksen</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[memoryleak]]></category>
		<category><![CDATA[troubleshoot]]></category>

		<guid isPermaLink="false">http://www.nathanderksen.com/blog/?p=38</guid>
		<description><![CDATA[This is a short(ish) story of an epic battle between a team of web application developers and IE 7. We were developing a pretty large IE-only application that used a few Flex-based components to provide data visualization capabilities. We were making good progress until well into the testing cycle, when one of the testers came back with a report of IE crashing on a regular basis while using the Flex components. Uh-oh. <a href="http://www.nathanderksen.com/blog/2009/08/31/story-of-a-pitched-battle-with-a-massive-ieflash-memory-leak/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>This is a short(ish) story of an epic battle between a team of web application developers and IE 7. We were developing a pretty large IE-only application that used a few Flex-based components to provide data visualization capabilities. We were making good progress until well into the testing cycle, when one of the testers came back with a report of IE crashing on a regular basis while using the Flex components. Uh-oh.</p>
<p>I took a closer look at the issue and initially was not able to replicate the issue. The tester sent me some screenshots showing more details of the crash, including a screenshot showing memory usage. System memory was high, but not outrageous. Still, I suspected a memory leak.</p>
<p>A quick bit of background as to how this application works. There are a number of screens which open up an overlay containing our Flex charting application. Those overlays basically consist of a DIV element set up so that it can display some custom content, and also block any clicks to the surrounding page (a modal layer using Yahoo&#8217;s UI library). Every time this modal window is opened, it writes a bunch of markup and script into the DIV to set up the Flex app, every time it is closed, it clears out the DIV contents and destroys the app.</p>
<p>Eventually I stumbled on the fact that if I opened and closed this panel 10-15 times (even between visiting other pages), IE would crash. Now at least I had a simple test case to do testing. I did quite a few tests to see if perhaps the Flex application itself was leaking, but the Flash player&#8217;s garbage collection seemed to work fine. I used Microsoft&#8217;s <a href="http://www.microsoft.com/DOWNLOADS/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&#038;displaylang=en">DebugDiag</a> tool and a tool called <a href="http://home.orange.nl/jsrosman/">sIEve</a> to take a look at what was going on. With sIEve, I saw that there were a whole schwackload of variable handles pointing to each Flex application (22-24, depending on the situation). I would have expected only one or two. I also saw by just monitoring the Windows task manager that each time I opened/closed the modal panel, IE&#8217;s memory profile would increase by anywhere from 30-50MB. </p>
<p>I tried many techniques to try to clear these handles (use removeElement on parent and/or child, set handles to null, transfer element to another DIV and delete, set expandoProperty to null), but none worked. I also tried to see what scenarios resulted in a proper cleanup. When I used a popup window, no memory leak occurred. When I used an iframe, no memory leak occurred. Only when I put the Flash application in a DIV element would the leak occur. </p>
<p>Next, I tried to see if it was something about the Flex code that was triggering the leak. I trimmed everything down to a bare bones app, and lo and behold it stopped leaking. I added features back in until it started leaking again, and found that what triggered the problem was Flex&#8217;s ExternalInterface library. This library allows a Flex application to call JavaScript methods, and allows JavaScript methods to call Flex methods. In order to make a Flex method available to JavaScript, ExternalInterface injects some JavaScript code into the calling page. This injected code then hangs around, and when the application gets destroyed, IE does not dispose of the additional code. This resulted in orphaned handles that prevented the Flex application from being garbage collected. It so happened that the number of ExternalInterface methods we were exposing corresponded exactly to the number of orphaned handles that sIEve reported for the Flex application, which was my clue that the extra orphaned handles sIEve was reporting were a direct result of the injected ExternalInterface methods. </p>
<p>We were in the process of changing our implementation to use popup windows instead of modal windows (shudder) but at the last minute I got a clue as to how to clear the handles &#8211; iterate through the Flash object&#8217;s properties and set all the JavaScript methods to null. Something like:</p>
<p><code>	 for (var prop in flashHnd)<br />
{<br />
if (typeof(flashHnd[prop]) === "function")<br />
{<br />
flashHnd[prop] = null;<br />
}<br />
}<br />
</code></p>
<p>You can better see how to implement it by taking a look at the <a href="http://code.google.com/p/swfupload/source/browse/swfupload/trunk/core/swfupload.js">source to the SWFUpload</a> project. Take a look at the cleanUp method.</p>
<p>So in the end we were able to deal with this issue in about 15 lines of JavaScript code instead of the significant re-implementation we were otherwise going to have to do right at the end of testing, along with the associated changes in requirements documentation and testing plans. The whole thing reinforced to me though just how much I dislike developing for IE. My guess is that after this experience, the IE-only requirement of this project will likely be reviewed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nathanderksen.com/blog/2009/08/31/story-of-a-pitched-battle-with-a-massive-ieflash-memory-leak/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The XHTML2 vs HTML5 war is finally over</title>
		<link>http://www.nathanderksen.com/blog/2009/07/08/the-xhtml2-vs-html5-war-is-finally-over/</link>
		<comments>http://www.nathanderksen.com/blog/2009/07/08/the-xhtml2-vs-html5-war-is-finally-over/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 17:20:36 +0000</pubDate>
		<dc:creator>Nathan Derksen</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[ria]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.nathanderksen.com/blog/?p=34</guid>
		<description><![CDATA[It appears that the long time battle between XHTML2 and HTML5 has come to a conclusion, and HTML5 has won. More after the break. <a href="http://www.nathanderksen.com/blog/2009/07/08/the-xhtml2-vs-html5-war-is-finally-over/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>It appears that the long time battle between XHTML2 and HTML5 has come to a conclusion, and <a href="http://www.w3.org/News/2009#item119">HTML5 has won</a>. Actually, HTML5 has been ahead for some time, but the w3c finally officially announced the ending of XHTML2 standards development. For a good introduction to the issue, take a look at <a href="http://www.webmonkey.com/blog/XHTML_2_Dies_a_Lonely_Death__Makes_Room_For_HTML_5">Wired&#8217;s overview</a> of the announcement.</p>
<p>This move is a good thing. It removes a distraction and helps browser makers focus their attention on one implementation. As for what it means for Web developers? As far as impact to our coding, it appears the impact should be low. As long as you code to current standards, your code should be compatible to either HTML5 or it&#8217;s XML-based XHTML5 sibling. Of course there will be some impact in learning the new language elements, but the learning curve should be relatively gentle. For those who like agonizing detail, here&#8217;s the <a href="http://dev.w3.org/html5/spec/Overview.html">HTML 5 spec</a>. The <a href="http://dev.w3.org/html5/html4-differences/">HTML 4 to 5 differences article</a> by the w3c gives you the skinny on what are the new language elements. For a higher level overview, A List Apart has an <a href="http://www.alistapart.com/articles/previewofhtml5">older but still relevant overview</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nathanderksen.com/blog/2009/07/08/the-xhtml2-vs-html5-war-is-finally-over/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe previews Thermo for creating RIAs</title>
		<link>http://www.nathanderksen.com/blog/2007/10/03/adobe-previews-thermo-for-creating-rias/</link>
		<comments>http://www.nathanderksen.com/blog/2007/10/03/adobe-previews-thermo-for-creating-rias/#comments</comments>
		<pubDate>Wed, 03 Oct 2007 20:21:39 +0000</pubDate>
		<dc:creator>Nathan Derksen</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.nathanderksen.com/blog/2007/10/03/adobe-previews-thermo-for-creating-rias/</guid>
		<description><![CDATA[Adobe today introduced a new tool called Thermo. I recommend that you take a look at their demo. From what I see, Thermo is a tool that helps to integrate the visual design process in more tightly with creating Flash/Flex-based &#8230; <a href="http://www.nathanderksen.com/blog/2007/10/03/adobe-previews-thermo-for-creating-rias/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Adobe today introduced a new tool called <a target="_blank" href="http://labs.adobe.com/wiki/index.php/Thermo">Thermo</a>. I recommend that you take a look at their <a target="_blank" href="http://ajaxian.com/archives/adobe-thermo-convert-artwork-to">demo</a>.</p>
<p>From what I see, Thermo is a tool that helps to integrate the visual design process in more tightly with creating Flash/Flex-based Rich Internet Applications. If you take a look at the demo, you will see how it can import artwork and use that as a template for creating a Flex-based application. From what I see of this application, this is really what the visual design feature of Flex Builder really should have been, and this also looks to be very suitable for quick semi-functional prototypes. The workflow looks like it will work well as well: Visual designers can use Thermo to start off the application, then Web developers can work with the same project in Flex Builder to add in the structure, additional functionality, and server integration.</p>
<p>Since Thermo creates code that can be also edited in Flex Builder, one thing I would like to see is that they keep Cairngorm in mind. That would help make Thermo more suitable for larger scale RIAs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nathanderksen.com/blog/2007/10/03/adobe-previews-thermo-for-creating-rias/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The keyboard and mouse as input devices</title>
		<link>http://www.nathanderksen.com/blog/2007/07/09/the-keyboard-and-mouse-as-input-devices/</link>
		<comments>http://www.nathanderksen.com/blog/2007/07/09/the-keyboard-and-mouse-as-input-devices/#comments</comments>
		<pubDate>Mon, 09 Jul 2007 18:04:33 +0000</pubDate>
		<dc:creator>Nathan Derksen</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.nathanderksen.com/blog/2007/07/09/the-keyboard-and-mouse-as-input-devices/</guid>
		<description><![CDATA[I just ran across a couple of interesting articles about keyboard vs mouse input: http://hci-matters.com/blog/?p=8 and the followup: http://hci-matters.com/blog/?p=9 The idea is that we should really be using more of the keyboard to be productive, but only for tasks which &#8230; <a href="http://www.nathanderksen.com/blog/2007/07/09/the-keyboard-and-mouse-as-input-devices/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I just ran across a couple of interesting articles about keyboard vs mouse input:<br />
<a href="http://hci-matters.com/blog/?p=8">http://hci-matters.com/blog/?p=8</a> and the followup:<br />
<a href="http://hci-matters.com/blog/?p=9">http://hci-matters.com/blog/?p=9</a></p>
<p>The idea is that we should really be using more of the keyboard to be productive, but only for tasks which can be qualified as discrete, such as managing documents, launching applications, and working with text. I definitely agree with the premise. We have long had keyboard shortcuts, part of the problem is how to associate the shortcut with an action: there are so many, memorizing them is impossible. As an aside, f-keys are the absolute worst way to implement shortcuts as there is no mnemonic to help with the association, and no consistency save the F1 key for help (why not just label it &#8220;help&#8221;).</p>
<p>The author has some good thinking in his second article about a way of improving the feedback mechanism for shortcuts. I think it&#8217;s a good start, but perhaps a bit heavy in the information presentation. Many programs have a huge number of commands which would simply be overwhelming, even with the author&#8217;s proposed trimming search functionality. A great Mac utility called <a href="http://docs.blacktree.com/quicksilver/what_is_quicksilver">Quicksilver</a> shows a way of achieving this in more of a compact way. Hitting ctl-space brings up the search field, then typing whittles down the list of commands available while using less real estate. Integrating this kind of functionality more tightly in the operating system. One problem with this particular program, though is the merging of commands with applications. Typing in &#8220;qui&#8221; could potentially mean &#8220;quit&#8221; or &#8220;quicksilver&#8221;, one being a command, one being an application. I think it&#8217;s probably best to keep those separate.</p>
<p>One thought I have relates to an example given in the book &#8220;The Design of Everyday Things&#8221; where one shortwave radio with lots of buttons on the front was found to be generally easier to use than a radio with similar functionality condensed into fewer buttons. The problem with having fewer buttons is that most of the functionality is hidden behind modes, which make it very difficult to &#8220;save&#8221; actions to muscle memory through simple memorization of where the button is. Similarly, our keyboards are inherently modal, with &#8220;shift&#8221;, &#8220;ctrl&#8221;, &#8220;alt/option&#8221;, and &#8220;Windows/Apple&#8221; buttons each representing different modes of operation. Doing something like replacing our F-keys with buttons that have distinctly labeled functions such as &#8220;open&#8221;, &#8220;close&#8221;, &#8220;save&#8221;, and whatnot would allow us to commit many of those common actions to muscle memory rather than having to memorize key combinations which may not fit our own mnemonic associations.</p>
<p>One more thought, approaches such as those used by QuickSilver and Windows XP Start Menu claim to be adaptive. The problem with this approach is that they are not predictable: trying to invoke the same command/program that you normally use, but on someone else&#8217;s machine, will result in different actions or at least a different set of movements to invoke the same action. Moving or hiding items based on usage is a really bad approach, however something more subtle such as slightly changing the appearance of the most frequently used commands might work better.</p>
<p>Anyways, there is lots to consider in how to best use the keyboard. It would be fun to come up with a shortcut feedback system that works well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nathanderksen.com/blog/2007/07/09/the-keyboard-and-mouse-as-input-devices/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Playing with AS3 &#8211; An example MP3 player component</title>
		<link>http://www.nathanderksen.com/blog/2006/07/25/playing-with-as3-an-example-mp3-player-component/</link>
		<comments>http://www.nathanderksen.com/blog/2006/07/25/playing-with-as3-an-example-mp3-player-component/#comments</comments>
		<pubDate>Tue, 25 Jul 2006 15:46:10 +0000</pubDate>
		<dc:creator>Nathan Derksen</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.nathanderksen.com/blog/2006/07/25/playing-with-as3-an-example-mp3-player-component/</guid>
		<description><![CDATA[I have finally gotten around to playing with AS3, and I decided to pick the Sound object as one to play with. In the end, I ended up creating a simple music playback &#8220;component&#8221; that uses a whole number of &#8230; <a href="http://www.nathanderksen.com/blog/2006/07/25/playing-with-as3-an-example-mp3-player-component/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I have finally gotten around to playing with AS3, and I decided to pick the Sound object as one to play with. In the end, I ended up creating a simple music playback &#8220;component&#8221; that uses a whole number of AS3 features. I am including the example here along with the <a href="/stuff/as3_soundTest/2006-07-25.zip">source</a>. Enjoy! Note: error handling is not yet very robust, but it still shows numerous aspects of AS3 in use. Requires Flash Player 9.</p>
<p><!--More--></p>
<p>Grrrr&#8230; WordPress is munging the object and embed tags. The example can be seen <a href="/stuff/as3_soundTest/SoundTest.html">here</a> for the moment.</p>
<p>Another update: Did I mention error handling is not quite robust yet? Seems to not be loading anything over the server, however feel free to download the zip file and play with it locally.</p>
<p>Update 3: Seems it was just a case sensitivity issue on the file name, it&#8217;s up and running now.</p>
<p>Update 4: I have a new example up that adds some constructor options to some of the classes, and also adds a simple frequency spectrum display. Take a <a title="Flash MP3 player example" href="/stuff/as3_soundTest2/SoundTest.html">look</a> and grab the <a title="Sound test source files" href="/stuff/as3_soundTest2/2006-07-26-2.zip">updated source</a> if you wish.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nathanderksen.com/blog/2006/07/25/playing-with-as3-an-example-mp3-player-component/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>An Algorithm for Finding Common Elements Across Data Sets</title>
		<link>http://www.nathanderksen.com/blog/2006/07/12/an-algorithm-for-finding-common-elements-across-data-sets/</link>
		<comments>http://www.nathanderksen.com/blog/2006/07/12/an-algorithm-for-finding-common-elements-across-data-sets/#comments</comments>
		<pubDate>Wed, 12 Jul 2006 15:08:23 +0000</pubDate>
		<dc:creator>Nathan Derksen</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.nathanderksen.com/blog/2006/07/12/an-algorithm-for-finding-common-elements-across-data-sets/</guid>
		<description><![CDATA[I was recently working on a search algorithm for a Flash piece I am working on, and the way the algorithm worked involved doing separate searches for each keyword from an index that I had created, recording the number of &#8230; <a href="http://www.nathanderksen.com/blog/2006/07/12/an-algorithm-for-finding-common-elements-across-data-sets/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I was recently working on a search algorithm for a Flash piece I am working on, and the way the algorithm worked involved doing separate searches for each keyword from an index that I had created, recording the number of occurrences for each keyword, then finding out which elements were common between each of the keywords. I came up with an algorithm to do this operation linearly, that is it only has to do one pass through the data which means that it scales well for large data sets. The gist is that if you have three sets of data, then any data element needs to appear three times in the search for it to be common across the data sets. As such, all that is needed is a tally kept of how many times each data element appears and anything that has a tally of three is part of the intersection of the data sets.</p>
<p><i>Note: this only works if there are no duplicated elements in each data set, which fortunately is not too hard a condition to impose.</i></p>
<p>Here is some code representing the algorithm:<br />
<span id="more-29"></span></p>
<div class="code">
<pre>
var dataSet:Array = new Array();
dataSet.push(["1", "2", "5", "10", "11", "12", "15"]);
dataSet.push(["2", "5", "11", "14", "18", "21"]);
dataSet.push(["0", "1", "2", "3", "5", "7", "11"]);

var elementTallies:Object = new Object();
var currentElement:String;

for (var i:Number = 0; i < dataSet.length; i++)
{
	for (var j:Number = 0; j < dataSet[i].length; j++)
	{
		// Go through each element for each dataset. For each element,
		// add one to the tally for that element.
		currentElement = dataSet[i][j];
		if (elementTallies[currentElement] == undefined)
		{
			elementTallies[currentElement] = 1;
		}
		else
		{
			elementTallies[currentElement]++;
		}
	}
}

// Go through the tallies looking for elements with a tally of 3. 
// Those elements will make up the intersection of the three data sets
for (var element:String in elementTallies)
{
	if (elementTallies[element] == dataSet.length)
	{
		trace("element: " + element);
	}
}
// Outputs: 11, 5, 2
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.nathanderksen.com/blog/2006/07/12/an-algorithm-for-finding-common-elements-across-data-sets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
