<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Aaron Silvers » Flash</title>
	
	<link>http://www.aaronsilvers.com</link>
	<description>Learning Nerd. Husband. Dad. Rocker. Cobbler. Coder. Strategist. Visionary. Hugger. Dude.</description>
	<lastBuildDate>Wed, 28 Oct 2009 22:18:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/AaronSilvers-Flash" type="application/rss+xml" /><feedburner:emailServiceId>AaronSilvers-Flash</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>What BAQON Enables: Public Services Applications</title>
		<link>http://feedproxy.google.com/~r/AaronSilvers-Flash/~3/wkrxu092K1o/</link>
		<comments>http://www.aaronsilvers.com/2009/09/what-baqon-enables-public-services-applications/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 15:48:04 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Social Learning]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[augmented reality]]></category>
		<category><![CDATA[baqon]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[infrastructure improvement]]></category>
		<category><![CDATA[Interoperability]]></category>
		<category><![CDATA[mashups]]></category>
		<category><![CDATA[web services]]></category>

		<guid isPermaLink="false">http://www.aaronsilvers.com/?p=1351</guid>
		<description><![CDATA[In the case of collecting information for infrastructure improvements, it’s not that there aren’t people trying to do this already, or that there aren’t pockets of applications to help make this easier for our municipalities – it’s that many of the data stores aren’t well known, widely available and more critically shared.


Related posts:<ol><li><a href='http://www.aaronsilvers.com/2009/09/what-baqon-enables-gaming/' rel='bookmark' title='Permanent Link: What BAQON Enables: Gaming'>What BAQON Enables: Gaming</a></li><li><a href='http://www.aaronsilvers.com/2009/09/what-about-baqon/' rel='bookmark' title='Permanent Link: What About BAQON?'>What About BAQON?</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Thanks to many readers for providing offline feedback on the slate of recent posts (and traffic) related to BAQON, I’m acting on the suggestion to describe applications that BAQON will enable.</p>
<p>As I wrote last week, the first way in which we want to help organize experiences is around fixed physical locations: things in physical space that don’t move (much).</p>
<p>Let me start with a potential application for public service.</p>
<p>We know going back the last several years that there’s a huge need in the US for infrastructure improvement.  This means fixing bridges, filling potholes, greening our tall buildings, expanding pedways to be more accessible.  Local, State and even Federal municipalities are responsible for this, in partnership with private citizens, small and large companies – but the resources to apply to the myriad of problems are scarce (like lots of resources these days).  One way we all could save money, accelerate improvements and help allocate proper resources scaled to critical needs is by opening up the information gathering and helping organize user-identified issues through aggregation means we already know how to employ.  Then, municipalities could apply experts in architecture, civil engineering and/or environmental science to determine a course of action instead of expend resources in just finding out where the problems are to begin with.</p>
<p>Ideally, mobile phone users could take pictures or video encoded with geo-location metadata of visible issues on their streets, bridges, buildings, etc into a shared repository on the Internet.  That repository could be made publicly available for a number of different purposes:</p>
<ul>
<li>Mapping services (like Google Maps, Yahoo, etc) could use the information to provide some visual information on where clusters of issues might be.</li>
<li>Color-coding and shading to identify types and severity of issues, which might help identify related concerns.</li>
<li>An application could export tagged structures and descriptive data related to them into a variety of formats (RSS, MS Project, ???) to aggregate that information into something else.</li>
<li>Watchdog groups could use the same data set that Local, State and Federal resources use cross-agency to monitor the status of improvement efforts, promoting transparency and reducing wasteful redundancies that come from multiple data stores.</li>
<li>Mashups with other available datastores (perhaps a visual mashup to highlight to what extent identified infrastructure needs may correlate with degrees of air quality, water quality, etc)</li>
</ul>
<p>What the services on the back-end would help with would be in terms of:</p>
<ul>
<li>Organizing the information in terms of proximal location and granular details within a fixed location (what building, which floor of a building, what room, where in a room, etc).</li>
<li>Make the data available and interoperable.</li>
<li>Support the need to aggregate and filter all that user-generated metadata.</li>
<li>Enable multiple points of entry to the data pool.</li>
</ul>
<p>That last point is really important – not necessarily more important than the others, but pretty huge.  In my mind, we don’t want one application for mobile or web-enabled users to enter such information – we want to cast a wider net to empower more end-users to easily support and accelerate data collection and, thusly, infrastructure improvement.  Building a straight-up tagging application is one use, but what if someone wanted to create a scavenger hunt game to flesh out details about infrastructure improvement?  What if yet another game was a massively multiplayer game where discovery of infrastructure defects acted as multipliers or Mana in-game?</p>
<p>By abstracting the data collection aspect from the application, but making that data set widely available across applications, you enable more than one type of user activity while solving a larger problem.</p>
<p>In the case of collecting information for infrastructure improvements, it’s not that there aren’t people trying to do this already, or that there aren’t pockets of applications to help make this easier for our municipalities – it’s that many of the data stores aren’t well known, widely available and more critically shared.  By opening up the collection, filtering and aggregation of the data, we hopefully save time and money to accelerate solving a very big issue.</p>
<p>This is one way in which BAQON can be used.  In the coming weeks, I’ll highlight many more.</p>


<p>Related posts:<ol><li><a href='http://www.aaronsilvers.com/2009/09/what-baqon-enables-gaming/' rel='bookmark' title='Permanent Link: What BAQON Enables: Gaming'>What BAQON Enables: Gaming</a></li><li><a href='http://www.aaronsilvers.com/2009/09/what-about-baqon/' rel='bookmark' title='Permanent Link: What About BAQON?'>What About BAQON?</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?a=wkrxu092K1o:hEAgy0e1P-0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?a=wkrxu092K1o:hEAgy0e1P-0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?i=wkrxu092K1o:hEAgy0e1P-0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?a=wkrxu092K1o:hEAgy0e1P-0:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?a=wkrxu092K1o:hEAgy0e1P-0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?i=wkrxu092K1o:hEAgy0e1P-0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?a=wkrxu092K1o:hEAgy0e1P-0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?i=wkrxu092K1o:hEAgy0e1P-0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?a=wkrxu092K1o:hEAgy0e1P-0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?a=wkrxu092K1o:hEAgy0e1P-0:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?i=wkrxu092K1o:hEAgy0e1P-0:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?a=wkrxu092K1o:hEAgy0e1P-0:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?a=wkrxu092K1o:hEAgy0e1P-0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?i=wkrxu092K1o:hEAgy0e1P-0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?a=wkrxu092K1o:hEAgy0e1P-0:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?a=wkrxu092K1o:hEAgy0e1P-0:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/AaronSilvers-Flash?d=I9og5sOYxJI" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AaronSilvers-Flash/~4/wkrxu092K1o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aaronsilvers.com/2009/09/what-baqon-enables-public-services-applications/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.aaronsilvers.com/2009/09/what-baqon-enables-public-services-applications/</feedburner:origLink></item>
		<item>
		<title>Adventures in Actionscript 3.0: Building an iTunes-like Browser with Flash and XML</title>
		<link>http://feedproxy.google.com/~r/AaronSilvers-Flash/~3/_N1a8ks_Wc4/</link>
		<comments>http://www.aaronsilvers.com/2009/02/adventures-in-actionscript-30-building-an-itunes-like-browser-with-flash-and-xml/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 23:23:35 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[E-Learning]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Nerd]]></category>
		<category><![CDATA[actionscript 3.0]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[colortransform]]></category>
		<category><![CDATA[listbox]]></category>
		<category><![CDATA[ms access]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.aaronsilvers.com/?p=1059</guid>
		<description><![CDATA[So, I've scripted me up an application with two listboxes, working off of one set of XML data exported (as previously detailed) from MS Access.  Now for the explanations...


Related posts:<ol><li><a href='http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-making-the-data-available-to-flash-from-an-access-database/' rel='bookmark' title='Permanent Link: Adventures in Actionscript 3.0: Making the Data Available to Flash from an Access Database'>Adventures in Actionscript 3.0: Making the Data Available to Flash from an Access Database</a></li><li><a href='http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-working-with-microsoft-access/' rel='bookmark' title='Permanent Link: Adventures in Actionscript 3.0: Working with Microsoft Access'>Adventures in Actionscript 3.0: Working with Microsoft Access</a></li><li><a href='http://www.aaronsilvers.com/2008/03/using-sounds-embedded-in-the-library-and-other-tricks/' rel='bookmark' title='Permanent Link: Using Sounds Embedded in the Library and Other Tricks'>Using Sounds Embedded in the Library and Other Tricks</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div id="attachment_1061" class="wp-caption alignnone" style="width: 598px"><a href="http://www.aaronsilvers.com/wp-content/uploads/2009/01/2009-01-19_1547.png"><img class="size-full wp-image-1061    " title="2009-01-19_1547" src="http://www.aaronsilvers.com/wp-content/uploads/2009/01/2009-01-19_1547.png" alt="Breakdown of the interface for the browser.swf" width="588" height="280" /></a><p class="wp-caption-text">Breakdown of the interface for the browser.swf</p></div>
<p><strong>UPDATED</strong>:  Download the project files here: <a href="http://www.aaronsilvers.com/wp-content/uploads/2009/02/browser.zip">browser.zip</a> </p>
<blockquote><p><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-sa/3.0/us/88x31.png" /></a><br /><span xmlns:dc="http://purl.org/dc/elements/1.1/" property="dc:title">XML-Driven iTunes-like Browser in ActionScript 3</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="http://www.aaronsilvers.com/2009/02/adventures-in-actionscript-30-building-an-itunes-like-browser-with-flash-and-xml/" property="cc:attributionName" rel="cc:attributionURL">Aaron Silvers</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License</a>.<br />Based on a work at <a xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://www.aaronsilvers.com/wp-content/uploads/2009/02/browser.zip" rel="dc:source">www.aaronsilvers.com</a>.</p></blockquote>
<p>So, I&#8217;ve scripted me up an application with two listboxes, working off of <a href="http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-making-the-data-available-to-flash-from-an-access-database/">one set of XML data exported (as previously detailed) from MS Access</a>.</p>
<p>Now for the explanations&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">geom</span>.<span style="color: #006600;">ColorTransform</span>;</pre></div></div>

<p>In order to dynamically change the color of a movieclip, you need to bring in the ColorTransform class. I use this to change the <strong>background_mc</strong> shown in the diagram above &#8212; I want to change the color to indicate if the resource being presented is currently available, or available when there&#8217;s a big enough pool to demand a course as instructor led training.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> xmlLoader:URLLoader = <span style="color: #000000; font-weight: bold;">new</span> URLLoader<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">var</span> xmlData:<span style="color: #0066CC;">XML</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">XML</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
xmlLoader.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">COMPLETE</span>, LoadXML <span style="color: #66cc66;">&#41;</span>;
&nbsp;
xmlLoader.<span style="color: #0066CC;">load</span><span style="color: #66cc66;">&#40;</span> <span style="color: #000000; font-weight: bold;">new</span> URLRequest<span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;resources.xml&quot;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>With AS3, you can&#8217;t just call <strong>getURL</strong> anymore. It&#8217;s deprecated. So, you need to create an instance of the URLLoader class and use its internal method of <em>load</em> to bring it in. The nice thing about these events is that Flash&#8217;s Run-Time can detect when you&#8217;ve actually completely loaded the URLRequest &#8212; which is why the <em>addEventListener</em> above calls on my function/method <strong>LoadXML</strong> when the loading event is complete.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> MasterArray:<span style="color: #0066CC;">Array</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span>;
<span style="color: #000000; font-weight: bold;">var</span> TopLevelArray:<span style="color: #0066CC;">Array</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span>;
<span style="color: #000000; font-weight: bold;">var</span> TempSecondLevelArray:<span style="color: #0066CC;">Array</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span>;
<span style="color: #000000; font-weight: bold;">var</span> TopIndexLength:<span style="color: #0066CC;">Number</span>;
<span style="color: #000000; font-weight: bold;">var</span> TempSecondIndexLength:<span style="color: #0066CC;">Number</span>;</pre></div></div>

<p>I&#8217;m manipulating the XML in a couple of different ways. I have a hunch that Flash handles its own array data a lot faster than it manipulates XML, even when it&#8217;s internalized. That&#8217;s the way it used to be, and that&#8217;s just what guides my decision making, so I&#8217;m going to use <em>MasterArray</em> to do a direct capture of the XML data as an Array inside of Flash, and then use the <em>TopLevelArray</em> and the <em>TempSecondLevelArray</em> to help me maintain just the information I need to populate those two listboxes, respectively.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// Hide the Launch button by default</span>
availability_mc.<span style="color: #006600;">launch_btn</span>.<span style="color: #0066CC;">visible</span> = <span style="color: #cc66cc;">0</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> LoadXML<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">e</span>:Event <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	xmlData = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">XML</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">e</span>.<span style="color: #0066CC;">target</span>.<span style="color: #0066CC;">data</span> <span style="color: #66cc66;">&#41;</span>;
	ParseData<span style="color: #66cc66;">&#40;</span> xmlData <span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>The <em>LoadXML</em> method uses the data from the Event object and references it as an XML object, which is then used by my <em>ParseData</em> method, below&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> ParseData<span style="color: #66cc66;">&#40;</span> newXML:<span style="color: #0066CC;">XML</span> <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
<span style="color: #000000; font-weight: bold;">var</span> newList:XMLList = newXML.<span style="color: #006600;">resources</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// Populate the MasterArray so we don't have to keep manipulating a huge honking XML file</span>
<span style="color: #b1b100;">for</span> each <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> newItem:<span style="color: #0066CC;">XML</span> <span style="color: #b1b100;">in</span> newList<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
	MasterArray.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span> <span style="color: #66cc66;">&#123;</span>
			 learningRoadmapId:newItem.<span style="color: #006600;">learningRoadmapId</span>,
			 cardinality:newItem.<span style="color: #006600;">cardinality</span>,
			 resourceId:newItem.<span style="color: #006600;">resourceId</span>,
			 availabilityId:newItem.<span style="color: #006600;">availabilityId</span>,
			 availabilityStatus:newItem.<span style="color: #006600;">availabilityStatus</span>,
			 tCategories_name:newItem.<span style="color: #006600;">tCategories_name</span>,
			 tTracks_name:newItem.<span style="color: #006600;">tTracks_name</span>,
			 tTypes_name:newItem.<span style="color: #006600;">tTypes_name</span>,
			 tResources_name:newItem.<span style="color: #006600;">tResources_name</span>,
			 description:newItem.<span style="color: #006600;">description</span>,
			 link:newItem.<span style="color: #006600;">link</span>
			 <span style="color: #66cc66;">&#125;</span> <span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>&#8230;just to interject, I&#8217;m creating an <strong>Object</strong> for each node of the XML data and making each Object an element of the <em>MasterArray</em>. Everywhere above where it says <strong>newItem</strong>, I&#8217;m pulling a node from the xml file (so <strong>newItem.resourceId</strong> means I&#8217;m pulling the <strong>resourceId</strong> value exported from the MS Access database for the current record. The <strong>for each</strong> allows me to loop through this series of actions as many times as there are records in the xml file I&#8217;m reading. Moving on&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// Now populate an array of just the top-level Learning Map IDs, so that it's easier to sort</span>
<span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #000000; font-weight: bold;">var</span> i:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">0</span>; i <span style="color: #66cc66;">&amp;</span>lt; MasterArray.<span style="color: #0066CC;">length</span>; i++ <span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
	TopIndexLength = TopLevelArray.<span style="color: #0066CC;">length</span>;
	<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> TopIndexLength == <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#41;</span> TopLevelArray.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span> <span style="color: #66cc66;">&#123;</span>label:MasterArray<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">learningRoadmapId</span>, <span style="color: #0066CC;">data</span>:MasterArray<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">learningRoadmapId</span><span style="color: #66cc66;">&#125;</span> <span style="color: #66cc66;">&#41;</span>;
	<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> TopIndexLength <span style="color: #66cc66;">&amp;</span>gt;= <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">var</span> now = MasterArray<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>;
		<span style="color: #000000; font-weight: bold;">var</span> lastIdentified = TopLevelArray<span style="color: #66cc66;">&#91;</span> TopIndexLength - <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#93;</span>;
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> now.<span style="color: #006600;">learningRoadmapId</span> <span style="color: #66cc66;">!</span>= lastIdentified.<span style="color: #006600;">label</span> <span style="color: #66cc66;">&#41;</span> TopLevelArray.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span> <span style="color: #66cc66;">&#123;</span>label:MasterArray<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">learningRoadmapId</span>, <span style="color: #0066CC;">data</span>:MasterArray<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">learningRoadmapId</span><span style="color: #66cc66;">&#125;</span> <span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>The &#8220;Top&#8221; Listbox is only to list out all the learning maps in the database. Even though I&#8217;ve stored everything as a resource in my previous posts so they are flat in the database, I&#8217;m customizing a view to reflect the real-world hierarchy, which I can do because I&#8217;ve categorized my information in the database such that I can easily identify what type of resource any one resource is.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">//Now populate the top-level listbox</span>
<span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #000000; font-weight: bold;">var</span> j:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">0</span>; j <span style="color: #66cc66;">&amp;</span>lt; TopIndexLength; j++ <span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
	top_lst.<span style="color: #006600;">addItem</span><span style="color: #66cc66;">&#40;</span> TopLevelArray<span style="color: #66cc66;">&#91;</span>j<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Bam. That wasn&#8217;t so difficult, right? Next up? What do we do when someone selects a LearningMap from the &#8220;Top&#8221; listbox?</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">top_lst.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">CHANGE</span>, topItemChange<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> topItemChange<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">e</span>:Event <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// Remove every item out of the second-level listbox</span>
	middle_lst.<span style="color: #006600;">removeAll</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// Reset the length of the second-level array</span>
	TempSecondLevelArray = <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// Sort through the MasterArray for any resources that have the selected</span>
	<span style="color: #808080; font-style: italic;">// Learning Map as its parent.</span>
	<span style="color: #000000; font-weight: bold;">var</span> selectedLearningMap:<span style="color: #0066CC;">String</span> = top_lst.<span style="color: #006600;">selectedItem</span>.<span style="color: #0066CC;">data</span>;
&nbsp;
	<span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #000000; font-weight: bold;">var</span> i:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">0</span>; i <span style="color: #66cc66;">&amp;</span>lt; MasterArray.<span style="color: #0066CC;">length</span>; i++ <span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> MasterArray<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">learningRoadmapId</span> == selectedLearningMap <span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			TempSecondLevelArray.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span> <span style="color: #66cc66;">&#123;</span>label:MasterArray<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">resourceId</span>, <span style="color: #0066CC;">data</span>:MasterArray<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#125;</span> <span style="color: #66cc66;">&#41;</span>;
			TempSecondIndexLength = TempSecondLevelArray.<span style="color: #0066CC;">length</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">// Now populate the middle listbox (currently only the label and description)</span>
	<span style="color: #b1b100;">for</span> each <span style="color: #66cc66;">&#40;</span> <span style="color: #000000; font-weight: bold;">var</span> ResourceItem <span style="color: #b1b100;">in</span> TempSecondLevelArray <span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#123;</span>
		middle_lst.<span style="color: #006600;">addItem</span><span style="color: #66cc66;">&#40;</span> ResourceItem <span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>The commments above should be pretty self-explanatory. We need to wipe out anything that&#8217;s in that &#8220;Middle&#8221; listbox and repopulate it based on what is currently selected in the &#8220;Top&#8221; listbox.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">middle_lst.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">CHANGE</span>, middleItemChange<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> middleItemChange<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">e</span>:Event <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// Populate the textfield with formatted text</span>
	<span style="color: #000000; font-weight: bold;">var</span> myText = middle_lst.<span style="color: #006600;">selectedItem</span>.<span style="color: #0066CC;">data</span>.<span style="color: #006600;">description</span>;
	pane_txt.<span style="color: #0066CC;">htmlText</span> = myText;
&nbsp;
	<span style="color: #808080; font-style: italic;">// Hide the Launch button by default</span>
	availability_mc.<span style="color: #006600;">launch_btn</span>.<span style="color: #0066CC;">visible</span> = <span style="color: #cc66cc;">0</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// Show the availability of the selected resource</span>
	availability_mc.<span style="color: #006600;">label_txt</span>.<span style="color: #0066CC;">text</span> = middle_lst.<span style="color: #006600;">selectedItem</span>.<span style="color: #0066CC;">data</span>.<span style="color: #006600;">availabilityStatus</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// Change the color of the availability status bar based on the status of the resource</span>
	<span style="color: #000000; font-weight: bold;">var</span> avStatus = middle_lst.<span style="color: #006600;">selectedItem</span>.<span style="color: #0066CC;">data</span>.<span style="color: #006600;">availabilityId</span>;
&nbsp;
	<span style="color: #000000; font-weight: bold;">var</span> newColorTransform:ColorTransform = availability_mc.<span style="color: #006600;">background_mc</span>.<span style="color: #006600;">transform</span>.<span style="color: #006600;">colorTransform</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// If the resource is &quot;available&quot;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> avStatus == <span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#123;</span>
		newColorTransform.<span style="color: #0066CC;">color</span> = 0xFF0000;
		availability_mc.<span style="color: #006600;">background_mc</span>.<span style="color: #006600;">transform</span>.<span style="color: #006600;">colorTransform</span> = newColorTransform;
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #808080; font-style: italic;">// If the resource is &quot;on demand&quot;</span>
	<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> avStatus == <span style="color: #ff0000;">&quot;3&quot;</span> <span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#123;</span>
		newColorTransform.<span style="color: #0066CC;">color</span> = 0xF69200;
		availability_mc.<span style="color: #006600;">background_mc</span>.<span style="color: #006600;">transform</span>.<span style="color: #006600;">colorTransform</span> = newColorTransform;
	<span style="color: #66cc66;">&#125;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">// Show a button to launch the resource if a link is provided</span>
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> middle_lst.<span style="color: #006600;">selectedItem</span>.<span style="color: #0066CC;">data</span>.<span style="color: #006600;">link</span> <span style="color: #66cc66;">!</span>= <span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#123;</span>
		availability_mc.<span style="color: #006600;">launch_btn</span>.<span style="color: #0066CC;">visible</span> = <span style="color: #cc66cc;">1</span>;
		availability_mc.<span style="color: #006600;">launch_btn</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span> MouseEvent.<span style="color: #006600;">CLICK</span>, button_function <span style="color: #66cc66;">&#41;</span>;
		<span style="color: #000000; font-weight: bold;">function</span> button_function<span style="color: #66cc66;">&#40;</span> evt:MouseEvent <span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">var</span> request:URLRequest = <span style="color: #000000; font-weight: bold;">new</span> URLRequest<span style="color: #66cc66;">&#40;</span> middle_lst.<span style="color: #006600;">selectedItem</span>.<span style="color: #0066CC;">data</span>.<span style="color: #006600;">link</span> <span style="color: #66cc66;">&#41;</span>;
			<span style="color: #0066CC;">try</span>
			<span style="color: #66cc66;">&#123;</span>
				navigateToURL<span style="color: #66cc66;">&#40;</span>request, <span style="color: #ff0000;">'_blank'</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// second argument is target</span>
			<span style="color: #66cc66;">&#125;</span>
			<span style="color: #0066CC;">catch</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:<span style="color: #0066CC;">Error</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
  				<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Error occurred!&quot;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>



<p>Related posts:<ol><li><a href='http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-making-the-data-available-to-flash-from-an-access-database/' rel='bookmark' title='Permanent Link: Adventures in Actionscript 3.0: Making the Data Available to Flash from an Access Database'>Adventures in Actionscript 3.0: Making the Data Available to Flash from an Access Database</a></li><li><a href='http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-working-with-microsoft-access/' rel='bookmark' title='Permanent Link: Adventures in Actionscript 3.0: Working with Microsoft Access'>Adventures in Actionscript 3.0: Working with Microsoft Access</a></li><li><a href='http://www.aaronsilvers.com/2008/03/using-sounds-embedded-in-the-library-and-other-tricks/' rel='bookmark' title='Permanent Link: Using Sounds Embedded in the Library and Other Tricks'>Using Sounds Embedded in the Library and Other Tricks</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=5er07Gcb"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=fDLpYhSa"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=fDLpYhSa" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=SP8qxEQF"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=43" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=PWOEqXoJ"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=PWOEqXoJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=FbC65C1z"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=FbC65C1z" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=PaDb6CQk"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=I2si5LoY"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=I2si5LoY" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=Oen7pBG5"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=54" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=9NFlph4l"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=9NFlph4l" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=SsIR6r26"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=129" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=BKXYpapg"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=124" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AaronSilvers-Flash/~4/_N1a8ks_Wc4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aaronsilvers.com/2009/02/adventures-in-actionscript-30-building-an-itunes-like-browser-with-flash-and-xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.aaronsilvers.com/2009/02/adventures-in-actionscript-30-building-an-itunes-like-browser-with-flash-and-xml/</feedburner:origLink></item>
		<item>
		<title>Adventures in Actionscript 3.0: Making the Data Available to Flash from an Access Database</title>
		<link>http://feedproxy.google.com/~r/AaronSilvers-Flash/~3/WSePHjXFrqw/</link>
		<comments>http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-making-the-data-available-to-flash-from-an-access-database/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 17:09:05 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[E-Learning]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Nerd]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[actionscript 3.0]]></category>
		<category><![CDATA[curriculum mapping]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[inner join]]></category>
		<category><![CDATA[km]]></category>
		<category><![CDATA[knowledge management]]></category>
		<category><![CDATA[learning maps]]></category>
		<category><![CDATA[microsoft access]]></category>
		<category><![CDATA[ms access]]></category>
		<category><![CDATA[queries]]></category>
		<category><![CDATA[query language]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[web apps]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-making-the-data-available-to-flash-from-an-access-database/</guid>
		<description><![CDATA[Okay, so I may have led you on a little bit in the previous post, expecially with the title. You WILL get some ActionScript. A lot of it. But for now let&#8217;s wrap up what we&#8217;re doing with Access as a relational database to manage a bunch of data about our curriculum maps.
So, in the [...]


Related posts:<ol><li><a href='http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-working-with-microsoft-access/' rel='bookmark' title='Permanent Link: Adventures in Actionscript 3.0: Working with Microsoft Access'>Adventures in Actionscript 3.0: Working with Microsoft Access</a></li><li><a href='http://www.aaronsilvers.com/2009/02/adventures-in-actionscript-30-building-an-itunes-like-browser-with-flash-and-xml/' rel='bookmark' title='Permanent Link: Adventures in Actionscript 3.0: Building an iTunes-like Browser with Flash and XML'>Adventures in Actionscript 3.0: Building an iTunes-like Browser with Flash and XML</a></li><li><a href='http://www.aaronsilvers.com/2007/05/flash-for-learning-the-group/' rel='bookmark' title='Permanent Link: Flash For Learning: The Group'>Flash For Learning: The Group</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Okay, so I may have led you on a little bit in the previous post, expecially with the title. You WILL get some ActionScript. A lot of it. But for now let&#8217;s wrap up what we&#8217;re doing with Access as a relational database to manage a bunch of data about our curriculum maps.</p>
<p>So, in the previous post, I went through a bit of my rationale behind the architecture I came up with for the database, and how it models the way in which my organization is looking at career learning mapping. With all that data organized in Microsoft Access, everyone with the software in the organization can maintain the database if they understood what I put in the last post. But to use the data in the little Flash browser I built (and you can build after my next post), we still need to spit that data out in a format that makes sense. Flash can&#8217;t read an Access database directly (not without some help), but Flash can read XML just fine, and we can export XML from Microsoft Access.</p>
<p>Now, we <em>could</em> do an entire data dump of the database to XML, but that file would be very difficult to work with. By running a query and exporting the results of a query to XML, we can have a little more control over the output (Access doesn&#8217;t give you any options for how to format the XML), and when the XML is easier to work with, you&#8217;ll have a much easier time building an application to work with it.</p>
<p>So the first thing we need to do is figure out how we want to eventually use this data. The way I envisioned an employee browsing for information about a learning map was like using the browser in iTunes&#8230;</p>
<p><img style="padding-right: 4px; padding-bottom: 3px;" src="http://www.aaronsilvers.com/wp-content/uploads/2009/01/200901152328.jpg" alt="200901152328.jpg" width="480" height="239" /></p>
<p>Going from left-to-right along the three lists, you can browse iTunes first by selecting a Genre, which then filters the list of Artists down to the artists that qualify in that Genre. When you select the artist you want, you can additionally filter down to the Album you&#8217;re most interested in by that artist and go on to select a song from that album. Using the iTunes browser, I can manage my own library of 23,907 songs (66.3 days of music) and find what I want in seconds.</p>
<p>Our learning maps are organized similarly, but the total population is not nearly as large (currently only 300 or so resources) organized into only about 8 defined learning maps. Our browsing dig-down (at the moment) really only needs to go from Learning Map -&gt; Course ID -&gt; Descriptive information. Because of the way we&#8217;ve structured the database, we can actually support far more robust searches if we needed them, but it&#8217;s admittedly overkill to build extensive search features for a population of data that&#8217;s so tiny.</p>
<p>Nevertheless, the query we need to put together to pull information that will format nicely to this (that Access will just natively kick out so a guy like me isn&#8217;t always stuck maintaining either the database or the Flash application) is pretty significant.</p>
<pre>SELECT tAggregations.learningRoadmapId, tAggregations.cardinality, tAggregations.resourceId,
tAggregations.trackId, tAvailability.availabilityId, tAvailability.availabilityStatus,
tCategories.name AS tCategories_name, tResources.name AS tResources_name, tResources.description, tResources.link,
tTracks.name AS tTracks_name, tTypes.name AS tTypes_name</pre>
<pre>FROM (tTypes INNER JOIN (tCategories INNER JOIN (tAvailability INNER JOIN tResources ONtAvailability.availabilityId = tResources.availabilityId) ON tCategories.categoryId = tResources.categoryId)ON tTypes.typeId = tResources.typeId) INNER JOIN (tTracks INNER JOIN tAggregations ONtTracks.trackId = tAggregations.trackId) ON tResources.resourceId = tAggregations.resourceId</pre>
<pre>ORDER BY tAggregations.learningRoadmapId, tAggregations.cardinality, tAggregations.resourceId;</pre>
<p style="font: 12.0px Helvetica">Fortunately, you don&#8217;t need to know how to write Inner Joins or SQL-style query language in order to pull good information out of the database. Access, for what it is, does it pretty much all for you.</p>
<p style="font: 12.0px Helvetica">In Design mode, you can define your relationships like this (note how this looks exactly the same as the relationships in my previous post):</p>
<p style="font: 12.0px Helvetica"><img title="query_in_design_view" src="http://www.aaronsilvers.com/wp-content/uploads/2009/01/query_in_design_view.png" alt="query_in_design_view" width="550" height="150" /></p>
<p style="font: 12.0px Helvetica">  </p>
<p style="font: 12.0px Helvetica">Once you&#8217;ve established the relationships, you can then simply select the fields you want a report on based on how some of the fields are related to each other (these are those INNER JOIN statements written in SQL &#8212; for example, I JOIN the Tracks table to the Aggregations table where the field <em>trackId</em> in both tables are the same.</p>
<p style="font: 12.0px Helvetica"><img class="alignnone size-full wp-image-1054" title="2009-01-16_0041" src="http://www.aaronsilvers.com/wp-content/uploads/2009/01/2009-01-16_0041.png" alt="2009-01-16_0041" width="522" height="165" /></p>
<p style="font: 12.0px Helvetica">  </p>
<p style="font: 12.0px Helvetica">When you run this query, you&#8217;ll get a whole report based on the data you already entered in the database and the way your Query describes it to be produced. This query can then be exported out of Access directly as XML, and the structure of this particular query will output data that looks like the following:</p>
<p style="font: 12.0px Helvetica">  </p>
<p style="font: 11.0px Monaco"><span style="color: #a61700">&lt;</span>resources<span style="color: #a61700">&gt;</span></p>
<p style="font: 11.0px Monaco"><span style="color: #a61700">&lt;</span>learningRoadmapId<span style="color: #a61700">&gt;</span>LM-SAMPLE<span style="color: #a61700">&lt;/</span>learningRoadmapId<span style="color: #a61700">&gt;</span></p>
<p style="font: 11.0px Monaco"><span style="color: #a61700">&lt;</span>cardinality<span style="color: #a61700">&gt;</span><span style="color: #0000ff">0</span><span style="color: #a61700">&lt;/</span>cardinality<span style="color: #a61700">&gt;</span></p>
<p style="font: 11.0px Monaco"><span style="color: #a61700">&lt;</span>resourceId<span style="color: #a61700">&gt;</span>EMT500<span style="color: #a61700">&lt;/</span>resourceId<span style="color: #a61700">&gt;</span></p>
<p style="font: 11.0px Monaco"><span style="color: #a61700">&lt;</span>trackId<span style="color: #a61700">&gt;</span><span style="color: #0000ff">4</span><span style="color: #a61700">&lt;/</span>trackId<span style="color: #a61700">&gt;</span></p>
<p style="font: 11.0px Monaco"><span style="color: #a61700">&lt;</span>availabilityId<span style="color: #a61700">&gt;</span><span style="color: #0000ff">1</span><span style="color: #a61700">&lt;/</span>availabilityId<span style="color: #a61700">&gt;</span></p>
<p style="font: 11.0px Monaco"><span style="color: #a61700">&lt;</span>availabilityStatus<span style="color: #a61700">&gt;</span>Currently available.<span style="color: #a61700">&lt;/</span>availabilityStatus<span style="color: #a61700">&gt;</span></p>
<p style="font: 11.0px Monaco"><span style="color: #a61700">&lt;</span>tCategories_name<span style="color: #a61700">&gt;</span>Compliance<span style="color: #a61700">&lt;/</span>tCategories_name<span style="color: #a61700">&gt;</span></p>
<p style="font: 11.0px Monaco"><span style="color: #a61700">&lt;</span>tResources_name<span style="color: #a61700">&gt;</span>Business Conduct Guidelines for Monkeys<span style="color: #a61700">&lt;/</span>tResources_name<span style="color: #a61700">&gt;</span></p>
<p style="font: 11.0px Monaco; color: #0000ff"><span style="color: #a61700">&lt;</span><span style="color: #000000">description /</span><span style="color: #a61700">&gt;</span></p>
<p style="font: 11.0px Monaco; color: #0000ff"><span style="color: #a61700"><span style="color: #000000;"><span style="color: #a61700">&lt;</span>link<span style="color: #a61700">&gt;</span><span style="color: #0000FF;">http://sizzler.com/</span><span style="color: #a61700">&lt;/</span>link<span style="color: #a61700">&gt;</span></span></span></p>
<p style="font: 11.0px Monaco"><span style="color: #a61700">&lt;</span>tTracks_name<span style="color: #a61700">&gt;</span>Onboarding<span style="color: #a61700">&lt;/</span>tTracks_name<span style="color: #a61700">&gt;</span></p>
<p style="font: 11.0px Monaco"><span style="color: #a61700">&lt;</span>tTypes_name<span style="color: #a61700">&gt;</span>Course<span style="color: #a61700">&lt;/</span>tTypes_name<span style="color: #a61700">&gt;</span></p>
<p>  </p>
<p style="font: 12.0px Helvetica">  </p>


<p>Related posts:<ol><li><a href='http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-working-with-microsoft-access/' rel='bookmark' title='Permanent Link: Adventures in Actionscript 3.0: Working with Microsoft Access'>Adventures in Actionscript 3.0: Working with Microsoft Access</a></li><li><a href='http://www.aaronsilvers.com/2009/02/adventures-in-actionscript-30-building-an-itunes-like-browser-with-flash-and-xml/' rel='bookmark' title='Permanent Link: Adventures in Actionscript 3.0: Building an iTunes-like Browser with Flash and XML'>Adventures in Actionscript 3.0: Building an iTunes-like Browser with Flash and XML</a></li><li><a href='http://www.aaronsilvers.com/2007/05/flash-for-learning-the-group/' rel='bookmark' title='Permanent Link: Flash For Learning: The Group'>Flash For Learning: The Group</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=8hgXTY7Z"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=ZKgaK7Ue"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=ZKgaK7Ue" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=F56ZZvCp"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=43" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=CkpGfb8t"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=CkpGfb8t" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=ExX37m61"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=ExX37m61" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=kXfW54uZ"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=JWqepc5w"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=JWqepc5w" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=e0qzYb1U"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=54" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=5Fvxpe9k"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=5Fvxpe9k" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=kfYeIx1o"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=129" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=9QBKtn5v"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=124" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AaronSilvers-Flash/~4/WSePHjXFrqw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-making-the-data-available-to-flash-from-an-access-database/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-making-the-data-available-to-flash-from-an-access-database/</feedburner:origLink></item>
		<item>
		<title>Adventures in Actionscript 3.0: Working with Microsoft Access</title>
		<link>http://feedproxy.google.com/~r/AaronSilvers-Flash/~3/XC7QxBdm-D8/</link>
		<comments>http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-working-with-microsoft-access/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 22:45:27 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[E-Learning]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Nerd]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[actionscript 3.0]]></category>
		<category><![CDATA[curriculum maps]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[knowledge management]]></category>
		<category><![CDATA[learning maps]]></category>
		<category><![CDATA[meta-discussion]]></category>
		<category><![CDATA[microsoft access]]></category>
		<category><![CDATA[ms access]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[web apps]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-working-with-microsoft-access/</guid>
		<description><![CDATA[If there's one thing I really care about for readers and followers is that you don't just take in what I'm doing, but also "why" I'm doing it. Context is everything, so in this post will walk you through some code, but I'm really trying to let you into my head so you might understand how I model abstract problems with tools most everyone can grasp. Hopefully, as you follow along my trail, you'll be able to pick up something useful to apply in your work.


Related posts:<ol><li><a href='http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-making-the-data-available-to-flash-from-an-access-database/' rel='bookmark' title='Permanent Link: Adventures in Actionscript 3.0: Making the Data Available to Flash from an Access Database'>Adventures in Actionscript 3.0: Making the Data Available to Flash from an Access Database</a></li><li><a href='http://www.aaronsilvers.com/2009/02/adventures-in-actionscript-30-building-an-itunes-like-browser-with-flash-and-xml/' rel='bookmark' title='Permanent Link: Adventures in Actionscript 3.0: Building an iTunes-like Browser with Flash and XML'>Adventures in Actionscript 3.0: Building an iTunes-like Browser with Flash and XML</a></li><li><a href='http://www.aaronsilvers.com/2008/01/on-authoring-tools/' rel='bookmark' title='Permanent Link: On Authoring Tools&#8230;'>On Authoring Tools&#8230;</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>If there&#8217;s one thing I really care about for readers and followers is that you don&#8217;t just take in what I&#8217;m doing, but also &#8220;why&#8221; I&#8217;m doing it. Context is everything, so in this post will walk you through some code, but I&#8217;m really trying to let you into my head so you might understand how I model abstract problems with tools most everyone can grasp. Hopefully, as you follow along my trail, you&#8217;ll be able to pick up something useful to apply in your work.</p>
<p>In December, I was presented with a knowledge management problem for my real job as an internal consultant. Like many large organizations, we have some curricula established for career advancement, but this information is scattered all over the company intranet, which is usually littered with a lot of irrelevant or outdated materials. I was asked to come up with a way for our employees to easily find out what courses they need to register for in the LMS in the learning map they wish to follow &#8212; and to have this information available for a number of learning maps in one location.</p>
<p><strong>Modeling in Microsoft Access</strong></p>
<p>The old way of organizing learning maps for our employees was for one HR employee to update a bunch of separate powerpoint decks, one tied to each learning map. They were formatted similarly, but the first thing I thought about was coming up with a model to fit each learning map in so they were using the same taxonomy (category names and labels) and the same structure.</p>
<p>The powerpoint decks illustrated learning maps that at a high level look like this:</p>
<p><img style="padding-right: 4px; padding-bottom: 3px;" src="http://www.aaronsilvers.com/wp-content/uploads/2009/01/access-as3-project-learning-map-deck.png" alt="access_as3_project_learning_map_deck.png" width="480" height="378" /></p>
<ol>
<li>There are a bunch of courses lumped together in a couple of high level categories, which I decided to call &#8220;Tracks.&#8221; The reason for calling them &#8220;Tracks&#8221; is because each of the courses also had their own category &#8212; some are product courses, some are compliance courses, some are technology courses, etc. A Track might pull on courses from multiple categories. That implied some kind of distinction, if not some kind of hierarchy &#8212; and that different way of looking at a collection of courses an employee might need to take meant that I needed to have separate ways (at least two) of organizing these courses in one learning map.</li>
<li>There are several learning maps that I have documentation for (who knows how many might be out there that I don&#8217;t know about). Each learning map could potentially pull some of the same courses, so that also implied a need to have yet another, abstracted way of organizing courses separate from the learning maps.</li>
<li>In some of the powerpoint decks, there were internal links being referenced and aggregated in some of the tracks. Some tracks even pulled in another learning map! To me, this implied that they type of resource had to be distinct from the resource itself, because sometimes a course is part of a learning map. Sometimes a course may be aggregated with a learning map. And a learning map might consist of a collection of courses, links and learning maps.</li>
</ol>
<p>Confused? Hopefully not. After stewing over a couple of these decks, I very quickly came up with a relational database structure that looks exactly like this:</p>
<p><img src="http://www.aaronsilvers.com/wp-content/uploads/2009/01/access-as3-project-db-relationships.png" alt="access_as3_project_db_relationships.png" width="480" height="273" /></p>
<p>Here&#8217;s how it actually plays out. In slides 2, 8, 14, 21 and 28 in the above (almost unreadable) slide deck, you see a bunch of a boxes in columns. Each column potentially represents a category, but the aggregation of columns on a single slide represents a track. Once I could discern a repeatable logic from this model and found it applicable to the other powerpoint decks, the rest of the database came easy.</p>
<p>You notice in that high level view of the slide deck the three different colors (red, blue and that mustard)? Each color represents the availability of the given resource. Red represented content that was already available through the LMS. Mustard represented content that could be reserved, and blue represented content that was not available at the moment. This indicated to me that I needed to provide some way for people to know the availability of a given piece of content.</p>
<p>Each resource has a <em>name</em>, a <em>type</em> (intranet link or web course or learning map), an <em>availability status,</em> a <em>link</em> associated with it to launch the resource and some <em>description</em> information. All this information should stay consistent about the resource no matter what other aggregation, or collection of resources, the one may be part of later on. This way, if this particular resource needs to change (say it&#8217;s a course like <em>Business Conduct Guidelines for Mammals</em>), we only change the information in this one listing, and the change is absorbed in every <strong>instance</strong> of the resource.</p>
<p>Notice in the relationships diagram inside of Microsoft Access (shown above), the tables for Categories, Availability and Types are <strong>abstracted</strong> from the Resources? I did that because somewhere along the line I may have a need to add or combine how I categorize my resources. Perhaps I&#8217;ll have more types of resources to work with later on (virtual rooms, might be a new resource in the future). I may need tiers of availability status instead of just the available, on request or not available. In any of these cases, these are things that apply to all resources, potentially &#8212; I don&#8217;t want to make a change to one of these on potentially hundreds or thousands of entries. So we associate each label in these tables with its own identifier, and use that identifier in the Resources table.</p>
<p>Now the Tracks table works the same way &#8212; I have a numeric identifier that&#8217;s a <strong>primary key</strong> and I have a label associated with it. Why did I not include the Track with a resource like I did the Category? Well, a couple of reasons. First, there was a hierarchy implied (as I wrote about earlier), so I know that Tracks are higher up the chain of taxonomy than Categories. Secondly, I know that I can have multiple types of Resources, and potentially a Resource like a course for <em>Social Skills for Muppets</em> might be part of some kind of Soft Skills Track in one curriculum or learning map, but it might be part of a Management track in a different learning map. This assumption adds no real extra work if it turns out that a course is always used in the same Track universally, but it saves a lot of work in maintenance if the assumption proves correct as our curriculum mapping builds.</p>
<p>But this means we need to associate a Resource with a Track in yet another table &#8212; the Aggregations table. In this one table, I put together every learning map, because learning maps are how we&#8217;re aggregating our resources in the context of tracks. So each row in the Aggregations table has it&#8217;s own numeric identifier, or primary key, the identifier for a <strong>LearningRoadmapId</strong> which is tied to a <strong>resourceId</strong> from the Resources table (remember that Resources, as I defined them could be Learning Maps themselves); this means I&#8217;m using &#8220;LearningRoadmapId&#8221; as a <em>parent</em> identifier in the same table. I have another field listing the individual resource I&#8217;m mapping to the parent resource, and that maps again, to a <strong>ResourceId</strong> in the Resources table; this represents the actual <span style="font-weight: bold; font-style: italic;">child</span> in how a resource might be part of another resource. That specific resource&#8217;s <em>trackId</em> is provided from the Tracks table. And, we ever need to specify an order to how learners should experience these resources, I put in an extra field for <em>cardinality</em> which would allow me to custom sort by <em>LearningRoadmapId</em> and then by <em>cardinality</em>.</p>
<p>My next posts will be on Making the Data Available to Flash and Manipulating XML Data in Flash.</p>


<p>Related posts:<ol><li><a href='http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-making-the-data-available-to-flash-from-an-access-database/' rel='bookmark' title='Permanent Link: Adventures in Actionscript 3.0: Making the Data Available to Flash from an Access Database'>Adventures in Actionscript 3.0: Making the Data Available to Flash from an Access Database</a></li><li><a href='http://www.aaronsilvers.com/2009/02/adventures-in-actionscript-30-building-an-itunes-like-browser-with-flash-and-xml/' rel='bookmark' title='Permanent Link: Adventures in Actionscript 3.0: Building an iTunes-like Browser with Flash and XML'>Adventures in Actionscript 3.0: Building an iTunes-like Browser with Flash and XML</a></li><li><a href='http://www.aaronsilvers.com/2008/01/on-authoring-tools/' rel='bookmark' title='Permanent Link: On Authoring Tools&#8230;'>On Authoring Tools&#8230;</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=2jlMyPH4"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=o3U96Hxa"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=o3U96Hxa" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=WMExUBTs"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=43" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=gBoaMhaw"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=gBoaMhaw" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=u3dZvZOz"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=u3dZvZOz" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=T3MVOluH"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=YiUQxkFQ"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=YiUQxkFQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=K9hFQv5s"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=54" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=163W65EK"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=163W65EK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=KURNvx5n"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=129" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=25luJ6PC"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=124" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AaronSilvers-Flash/~4/XC7QxBdm-D8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-working-with-microsoft-access/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-working-with-microsoft-access/</feedburner:origLink></item>
		<item>
		<title>The End of Year Rant</title>
		<link>http://feedproxy.google.com/~r/AaronSilvers-Flash/~3/GJ92EIMhtCg/</link>
		<comments>http://www.aaronsilvers.com/2008/12/the-end-of-year-rant/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 16:31:18 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Nerd]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[SCORM]]></category>
		<category><![CDATA[2008]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[aicc]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[career coach]]></category>
		<category><![CDATA[consulting]]></category>
		<category><![CDATA[E-Learning]]></category>
		<category><![CDATA[Friends]]></category>
		<category><![CDATA[growing older]]></category>
		<category><![CDATA[learning ninas]]></category>
		<category><![CDATA[life coach]]></category>
		<category><![CDATA[opinion]]></category>
		<category><![CDATA[page-turner]]></category>
		<category><![CDATA[pain]]></category>
		<category><![CDATA[partnering]]></category>
		<category><![CDATA[partnerships]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[relationships]]></category>
		<category><![CDATA[sidework]]></category>
		<category><![CDATA[tendonitis]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.aaronsilvers.com/2008/12/the-end-of-year-rant/</guid>
		<description><![CDATA[In no particular order or domain, here are a few things that are itching me into 2009...


Related posts:<ol><li><a href='http://www.aaronsilvers.com/2009/02/catching-up-4/' rel='bookmark' title='Permanent Link: Catching Up'>Catching Up</a></li><li><a href='http://www.aaronsilvers.com/2009/08/curriculum-is-not-the-whole-problem/' rel='bookmark' title='Permanent Link: Curriculum is Not the (Whole) Problem'>Curriculum is Not the (Whole) Problem</a></li><li><a href='http://www.aaronsilvers.com/2008/10/life-in-perpetual-beta/' rel='bookmark' title='Permanent Link: Life in Perpetual Beta'>Life in Perpetual Beta</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-1014 aligncenter" title="rant" src="http://www.aaronsilvers.com/wp-content/uploads/2008/12/rant.jpg" alt="rant" width="450" height="375" /></p>
<ol>
<li><strong>Why am I good at keeping friends but bad at starting businesses with partners?</strong> I&#8217;ve been married for over twelve years and we still love each other.   I&#8217;ve moved several times across the country with my expanding family and I&#8217;ve been able to hold onto friends from everywhere I&#8217;ve lived and worked.   We talk/IM/email/tweet almost every day.   I&#8217;m even finding friends from the long long ago when there was no Internet to speak of.   I&#8217;m an a**hole, but the evidence clearly demonstrates that I&#8217;m the kind of a**hole that has a lot of real friends with high tolerances for a**holes.   That said, two times now, I&#8217;ve tried to start a business venture with former co-workers (who were also friends), and it hasn&#8217;t worked out.   The first time was like six years ago, and the chips were stacked against us with everyone physically moving so far away from each other, and I went passive aggressive in trying to deal with the frustration (mea culpa).   I thought I learned from that experience, but I guess there&#8217;s something more for me to learn as my new consulting business went from a partnership to a solo effort barely a month after launching.   So in 2009 I&#8217;ll continue to be a company of one.   I still love the idea of partnering in business &#8212; maybe not with former co-workers?   It seems to fly contrary to logic&#8230;</li>
<li><strong>What the hell happened with Rhymefest&#8217;s second album, &#8220;El Che?&#8221; </strong>It was supposed to drop in April of 2008.   The Michael Jackson tribute &#8220;Man in the Mirror&#8221; was so fantastic, I was really looking forward to it &#8212; and the album never came out with no news (not even news on MySpace) as to why it was delayed.</li>
<li><strong>Why is so much E-Learning content done in Flash if there&#8217;s no Flash &#8220;coolness&#8221; going on?</strong> Don&#8217;t get me wrong, the more maintenance on your old courses are chores and pain spots, the more sidework I&#8217;m going to get updating it and converting it to SCORM or AICC &#8212; but if a page-turner is a page-turner, there&#8217;s a lot of easier (and cheaper) ways of creating E-Learning content than putting it all in Flash.   This is a topic I hope to explore with <em>Learning Ninjas</em> in 2009 (more to come on that).</li>
<li><strong>Why is growing old so painful? </strong>Seriously, this tendonitis I have?   Everytime there&#8217;s precipitation this last month (and there&#8217;s been a lot), my left leg/foot and back hurt like hell.   I could accept it, I guess, if I was some kind of athlete with a storied career that was hard on my joints or whatever &#8212; but I&#8217;m a nerd whose joints for the most part have been mostly guarded from anything that might cause them stress or harm.</li>
<li><strong>How many life and career coaches does the Internet need?</strong> It seems like I get followed each week by a new career coach (on Twitter).   Some punk just out of college is going to coach me on my career?   Really?   Try having a career (or 3) first before imparting me with all the wisdom from your BA in English (note:   not ranking on English majors &#8212; I&#8217;m married to one).   I know of one career coach who&#8217;s doing &#8220;something&#8221; (that&#8217;s you, @melissapierce) and she&#8217;s not even trying to coach me.</li>
</ol>
<p>Technorati Tags: <a class="performancingtags" rel="tag" href="http://technorati.com/tag/twitter">twitter</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/life%20coach">life coach</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/career%20coach">career coach</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/tendonitis">tendonitis</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/pain">pain</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/growing%20older">growing older</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/e-learning">e-learning</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/flash">flash</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/page-turner">page-turner</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/scorm">scorm</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/aicc">aicc</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/learning%20ninas">learning ninas</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/consulting">consulting</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/sidework">sidework</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/business">business</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/partnering">partnering</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/partnerships">partnerships</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/friends">friends</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/relationships">relationships</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/rant">rant</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/opinion">opinion</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/2008">2008</a>, <a class="performancingtags" rel="tag" href="http://technorati.com/tag/2009">2009</a></p>


<p>Related posts:<ol><li><a href='http://www.aaronsilvers.com/2009/02/catching-up-4/' rel='bookmark' title='Permanent Link: Catching Up'>Catching Up</a></li><li><a href='http://www.aaronsilvers.com/2009/08/curriculum-is-not-the-whole-problem/' rel='bookmark' title='Permanent Link: Curriculum is Not the (Whole) Problem'>Curriculum is Not the (Whole) Problem</a></li><li><a href='http://www.aaronsilvers.com/2008/10/life-in-perpetual-beta/' rel='bookmark' title='Permanent Link: Life in Perpetual Beta'>Life in Perpetual Beta</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=EkK9eKrZ"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=y07cOiC6"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=y07cOiC6" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=l5e9CBVg"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=43" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=Y8ZEmalh"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=Y8ZEmalh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=6DRoERET"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=6DRoERET" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=Vq1uFngL"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=Ue1VBgdg"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=Ue1VBgdg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=qtZPk124"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=54" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=j4Kk0qkh"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=j4Kk0qkh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=UijaSENP"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=129" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=qYp68dSg"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=124" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AaronSilvers-Flash/~4/GJ92EIMhtCg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aaronsilvers.com/2008/12/the-end-of-year-rant/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://www.aaronsilvers.com/2008/12/the-end-of-year-rant/</feedburner:origLink></item>
		<item>
		<title>Learning 2008 – Day 1 Liveblogging</title>
		<link>http://feedproxy.google.com/~r/AaronSilvers-Flash/~3/00qB7oHoYNM/</link>
		<comments>http://www.aaronsilvers.com/2008/10/learning-2008-day-1-liveblogging/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 04:50:33 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[E-Learning]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Nerd]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[learning 2008]]></category>
		<category><![CDATA[liveblogging]]></category>
		<category><![CDATA[masie]]></category>

		<guid isPermaLink="false">http://www.aaronsilvers.com/?p=902</guid>
		<description><![CDATA[As I have the day to attend sessions, I'll blog as I attend all the sessions I'm in.  Turns out Tweeting is a good skill to have in doing live blogging.


Related posts:<ol><li><a href='http://www.aaronsilvers.com/2008/09/learning-2008/' rel='bookmark' title='Permanent Link: Learning 2008'>Learning 2008</a></li><li><a href='http://www.aaronsilvers.com/2008/10/learning-2008-live-blogging-the-kickoff/' rel='bookmark' title='Permanent Link: Learning 2008 &#8211; Live Blogging the Kickoff'>Learning 2008 &#8211; Live Blogging the Kickoff</a></li><li><a href='http://www.aaronsilvers.com/2008/10/learning-2008-day-2-live-blogging/' rel='bookmark' title='Permanent Link: Learning 2008 &#8211; Day 2 Live Blogging'>Learning 2008 &#8211; Day 2 Live Blogging</a></li></ol>]]></description>
			<content:encoded><![CDATA[
<a href='http://www.aaronsilvers.com/2008/10/learning-2008-day-1-liveblogging/img_0034/' title='img_0034'><img width="150" height="150" src="http://www.aaronsilvers.com/wp-content/uploads/2008/10/img_0034-150x150.jpg" class="attachment-thumbnail" alt="" title="img_0034" /></a>
<a href='http://www.aaronsilvers.com/2008/10/learning-2008-day-1-liveblogging/img_0035/' title='img_0035'><img width="150" height="150" src="http://www.aaronsilvers.com/wp-content/uploads/2008/10/img_0035-150x150.jpg" class="attachment-thumbnail" alt="" title="img_0035" /></a>
<a href='http://www.aaronsilvers.com/2008/10/learning-2008-day-1-liveblogging/img_0036/' title='img_0036'><img width="150" height="150" src="http://www.aaronsilvers.com/wp-content/uploads/2008/10/img_0036-150x150.jpg" class="attachment-thumbnail" alt="" title="img_0036" /></a>
<a href='http://www.aaronsilvers.com/2008/10/learning-2008-day-1-liveblogging/img_0037/' title='img_0037'><img width="150" height="150" src="http://www.aaronsilvers.com/wp-content/uploads/2008/10/img_0037-150x150.jpg" class="attachment-thumbnail" alt="" title="img_0037" /></a>
<a href='http://www.aaronsilvers.com/2008/10/learning-2008-day-1-liveblogging/img_0029/' title='Elliott Masie'><img width="150" height="150" src="http://www.aaronsilvers.com/wp-content/uploads/2008/10/img_0029-150x150.jpg" class="attachment-thumbnail" alt="Elliott Masie, Learning 2008" title="Elliott Masie" /></a>
<a href='http://www.aaronsilvers.com/2008/10/learning-2008-day-1-liveblogging/img_0039/' title='img_0039'><img width="150" height="150" src="http://www.aaronsilvers.com/wp-content/uploads/2008/10/img_0039-150x150.jpg" class="attachment-thumbnail" alt="" title="img_0039" /></a>
<a href='http://www.aaronsilvers.com/2008/10/learning-2008-day-1-liveblogging/img_0042/' title='img_0042'><img width="150" height="150" src="http://www.aaronsilvers.com/wp-content/uploads/2008/10/img_0042-150x150.jpg" class="attachment-thumbnail" alt="" title="img_0042" /></a>
<a href='http://www.aaronsilvers.com/2008/10/learning-2008-day-1-liveblogging/img_0045/' title='img_0045'><img width="150" height="150" src="http://www.aaronsilvers.com/wp-content/uploads/2008/10/img_0045-150x150.jpg" class="attachment-thumbnail" alt="" title="img_0045" /></a>
<a href='http://www.aaronsilvers.com/2008/10/learning-2008-day-1-liveblogging/img_0047/' title='img_0047'><img width="150" height="150" src="http://www.aaronsilvers.com/wp-content/uploads/2008/10/img_0047-150x150.jpg" class="attachment-thumbnail" alt="" title="img_0047" /></a>
<a href='http://www.aaronsilvers.com/2008/10/learning-2008-day-1-liveblogging/img_0048/' title='img_0048'><img width="150" height="150" src="http://www.aaronsilvers.com/wp-content/uploads/2008/10/img_0048-150x150.jpg" class="attachment-thumbnail" alt="" title="img_0048" /></a>
<a href='http://www.aaronsilvers.com/2008/10/learning-2008-day-1-liveblogging/img_0050/' title='img_0050'><img width="150" height="150" src="http://www.aaronsilvers.com/wp-content/uploads/2008/10/img_0050-150x150.jpg" class="attachment-thumbnail" alt="" title="img_0050" /></a>
<a href='http://www.aaronsilvers.com/2008/10/learning-2008-day-1-liveblogging/img_0233/' title='img_0233'><img width="150" height="150" src="http://www.aaronsilvers.com/wp-content/uploads/2008/10/img_0233-150x150.jpg" class="attachment-thumbnail" alt="" title="img_0233" /></a>

<div id="attachment_903" class="wp-caption alignleft" style="width: 310px"><a href="http://www.aaronsilvers.com/wp-content/uploads/2008/10/img_0029.jpg"><img class="size-medium wp-image-903 " style="margin-top: 3px; margin-bottom: 3px; margin-left: 4px; margin-right: 4px;" title="Elliott Masie" src="http://www.aaronsilvers.com/wp-content/uploads/2008/10/img_0029-300x225.jpg" alt="Elliott Masie, Learning 2008" width="300" height="225" /></a><p class="wp-caption-text">Elliott Masie, Learning 2008</p></div>
<p>As I have the day on Monday, October 27 to attend sessions, I&#8217;ll blog as I attend all the sessions I&#8217;m in.  Turns out Tweeting is a good skill to have in doing live blogging.  Watch here for the goods, and I&#8217;ll try and put pictures in-line when possible (it&#8217;s tough to edit as I type and listen, but what&#8217;s a little more multi-tasking, right?).</p>
<p><iframe src="http://www.coveritlive.com/index2.php/option=com_altcaster/task=viewaltcast/altcast_code=f20e31c0b7/height=550/width=470" scrolling="no" height="550px" width="470px" frameBorder="0" ></iframe></p>


<p>Related posts:<ol><li><a href='http://www.aaronsilvers.com/2008/09/learning-2008/' rel='bookmark' title='Permanent Link: Learning 2008'>Learning 2008</a></li><li><a href='http://www.aaronsilvers.com/2008/10/learning-2008-live-blogging-the-kickoff/' rel='bookmark' title='Permanent Link: Learning 2008 &#8211; Live Blogging the Kickoff'>Learning 2008 &#8211; Live Blogging the Kickoff</a></li><li><a href='http://www.aaronsilvers.com/2008/10/learning-2008-day-2-live-blogging/' rel='bookmark' title='Permanent Link: Learning 2008 &#8211; Day 2 Live Blogging'>Learning 2008 &#8211; Day 2 Live Blogging</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=z0sgXQSq"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=xkCiZMAN"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=xkCiZMAN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=VqFUNAY3"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=43" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=5SIGjmuP"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=5SIGjmuP" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=yJoMR2Po"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=yJoMR2Po" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=oMbe30tt"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=IJfZpz1R"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=IJfZpz1R" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=8RD8DgD8"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=54" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=LwU3eAaB"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=LwU3eAaB" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=NE6O6e4e"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=129" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=u43KB6cv"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=124" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AaronSilvers-Flash/~4/00qB7oHoYNM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aaronsilvers.com/2008/10/learning-2008-day-1-liveblogging/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.aaronsilvers.com/2008/10/learning-2008-day-1-liveblogging/</feedburner:origLink></item>
		<item>
		<title>Finally, a post relevant to the title of this blog…</title>
		<link>http://feedproxy.google.com/~r/AaronSilvers-Flash/~3/pW7jgQpSH4c/</link>
		<comments>http://www.aaronsilvers.com/2008/05/finally-a-post-relevant-to-the-title-of-this-blog/#comments</comments>
		<pubDate>Thu, 01 May 2008 19:30:26 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[amf]]></category>
		<category><![CDATA[announcement]]></category>
		<category><![CDATA[learning applications]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[open screen project]]></category>
		<category><![CDATA[remoting]]></category>

		<guid isPermaLink="false">http://flashforlearning.com/?p=196</guid>
		<description><![CDATA[Anyone hear about Adobe&#8217;s Open Screen Project?  Well, good news if this is the first you&#8217;re hearing about it:
 Basically, what&#8217;s happened is that Adobe wants Flash on as many screens and devices as possible.  To do that, they&#8217;re pretty much COMPLETELY OPENING UP THE PLATFORM.  What does &#8220;completely opening up the [...]


Related posts:<ol><li><a href='http://www.aaronsilvers.com/2007/12/all-hail-blaze-ds/' rel='bookmark' title='Permanent Link: All Hail Blaze DS'>All Hail Blaze DS</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Anyone hear about Adobe&#8217;s <a href="http://www.adobe.com/openscreenproject/">Open Screen Project</a>?  Well, good news if this is the first you&#8217;re hearing about it:</p>
<p><img src='http://www.adobe.com/openscreenproject/images/devices_376x200.jpg' alt='Devices' class='alignleft' /> Basically, what&#8217;s happened is that Adobe wants Flash on as many screens and devices as possible.  To do that, they&#8217;re pretty much COMPLETELY OPENING UP THE PLATFORM.  What does &#8220;completely opening up the platform&#8221; actually mean?</p>
<p>* Removing restrictions on the use of the SWF and FLV/F4V specifications<br />
* Publishing the device porting layer APIs for Adobe Flash Player<br />
* Removing license fees &#8211;making next major releases of Adobe Flash Player and Adobe AIR for devices free<br />
* Publishing the Adobe Flash Cast protocol and AMF protocol for robust data services</p>
<p>So what does this have to do with learning?  I think it&#8217;s going to have a huge impact on creating all sorts of learning applications (content engines and assessment tools) that can play on lots of different devices.  I think when you start rolling integrated content tools into your Learning Management Systems (if you really need to track the experience), the ability to throw in Flash Remoting via AMF becomes a VERY easy way to just track using methods that Flash developers know how to do &#8212; without the encumberance of necessary web services or JavaScript or whatever else.  Adding to that &#8212; most organizations embrace Flash because it deploys the same regardless of browser&#8230; now imagine a world a few years from now where Flash deploys the same regardless of mobile device.</p>
<p>I&#8217;m glad I plunked down the cash for CS3&#8230;.</p>


<p>Related posts:<ol><li><a href='http://www.aaronsilvers.com/2007/12/all-hail-blaze-ds/' rel='bookmark' title='Permanent Link: All Hail Blaze DS'>All Hail Blaze DS</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=Sp6HbbRO"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=Gk1uvYas"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=Gk1uvYas" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=WyuhjnNe"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=43" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=cgKHBaQa"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=cgKHBaQa" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=TXuhuB2O"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=TXuhuB2O" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=6taM63R2"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=jgl9jZNI"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=jgl9jZNI" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=EHdYcQRV"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=54" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=OLdvHvNR"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=OLdvHvNR" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=bAXHZtM5"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=129" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=MKP2TlCb"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=124" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AaronSilvers-Flash/~4/pW7jgQpSH4c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aaronsilvers.com/2008/05/finally-a-post-relevant-to-the-title-of-this-blog/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.aaronsilvers.com/2008/05/finally-a-post-relevant-to-the-title-of-this-blog/</feedburner:origLink></item>
		<item>
		<title>Using Sounds Embedded in the Library and Other Tricks</title>
		<link>http://feedproxy.google.com/~r/AaronSilvers-Flash/~3/Zs0D7lbWjnU/</link>
		<comments>http://www.aaronsilvers.com/2008/03/using-sounds-embedded-in-the-library-and-other-tricks/#comments</comments>
		<pubDate>Mon, 10 Mar 2008 23:52:19 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[actionscript 3.0]]></category>
		<category><![CDATA[attachSound]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[sound]]></category>

		<guid isPermaLink="false">http://flashforlearning.com/2008/03/10/using-sounds-embedded-in-the-library-and-other-tricks/</guid>
		<description><![CDATA[So, in ActionScript 2.0, there existed such a thing as *attachSound* which would allow you to call on sounds in your library and iterate them in code much like you would call on movieclips in the library.
With ActionScript 3.0, there is no attachSound, so you need to do a little workaround.  It took me [...]


Related posts:<ol><li><a href='http://www.aaronsilvers.com/2008/02/shiny-button-code/' rel='bookmark' title='Permanent Link: Shiny Button Code'>Shiny Button Code</a></li><li><a href='http://www.aaronsilvers.com/2009/02/adventures-in-actionscript-30-building-an-itunes-like-browser-with-flash-and-xml/' rel='bookmark' title='Permanent Link: Adventures in Actionscript 3.0: Building an iTunes-like Browser with Flash and XML'>Adventures in Actionscript 3.0: Building an iTunes-like Browser with Flash and XML</a></li><li><a href='http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-making-the-data-available-to-flash-from-an-access-database/' rel='bookmark' title='Permanent Link: Adventures in Actionscript 3.0: Making the Data Available to Flash from an Access Database'>Adventures in Actionscript 3.0: Making the Data Available to Flash from an Access Database</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>So, in ActionScript 2.0, there existed such a thing as *attachSound* which would allow you to call on sounds in your library and iterate them in code much like you would call on movieclips in the library.</p>
<p>With ActionScript 3.0, there is no attachSound, so you need to do a little workaround.  It took me a while to find this, but here you go:</p>
<pre>
import flash.utils.getDefinitionByName;
import flash.media.Sound;

var mySound:Sound;

var librarySound:Class = getDefinitionByName ( "nameOfYourSoundasLinkedFromTheLibrary" ) as Class;

mySound = new librarySound();
</pre>
<p>Basically, anything that you&#8217;re referring to as an Object in ActionScript 3.0 seems to require having a class file.  So when you go to your library and export your sound objects for ActionScript, a class file is published for each one, and you need to call on these as a class in your code in order to use them like you would an external .mp3 or other audio file.</p>
<p>Now, for the fun part &#8212; remember what a pain in the ass it was to trigger some kind of event when an audio file would stop playing in Flash circa ActionScript 2.0?  Throw the following code in to the above:</p>
<pre>
import flash.media.SoundLoaderContext;
import flash.media.SoundChannel;

var myChannel:SoundChannel;

myChannel = mySound.play();
myChannel.addEventListener( Event.SOUND_COMPLETE, AudioDoneAction );

function AudioDoneAction( event:Event ):void
{
	// Do something when the audio is done
}
</pre>
<p>So basically, the *Sound* class in ActionScript 3.0 allows you to load sounds and play them, but if you want to manipulate them or use them to evaluate other stuff, you want to include the Sound object as a reference in a *SoundChannel* object.</p>
<p>This seems pretty overcomplicated for my simple example here, but think about it this way.  What if you had five different external audio files you wanted to load as a playlist for just one slide in an E-Learning piece, and you wanted to trigger different images and text with each audio file.  You can code yourself a playlist and trigger changes upon completion of an audio file &#8212; and even track where you are in the playlist so that you could have different actions upon completion of the first and/or the last (or really at any defined place in the order of) audio in the playlist.</p>
<p>I couldn&#8217;t figure out the embedded audio as class thing on my own.  It took a while of experimenting and searching until I found the solution [here](http://www.flepstudio.org/forum/tutorials/449-library-sounds-flash-cs3.html) and [here](http://www.kirupa.com/forum/archive/index.php/f-141-p-2.html).</p>


<p>Related posts:<ol><li><a href='http://www.aaronsilvers.com/2008/02/shiny-button-code/' rel='bookmark' title='Permanent Link: Shiny Button Code'>Shiny Button Code</a></li><li><a href='http://www.aaronsilvers.com/2009/02/adventures-in-actionscript-30-building-an-itunes-like-browser-with-flash-and-xml/' rel='bookmark' title='Permanent Link: Adventures in Actionscript 3.0: Building an iTunes-like Browser with Flash and XML'>Adventures in Actionscript 3.0: Building an iTunes-like Browser with Flash and XML</a></li><li><a href='http://www.aaronsilvers.com/2009/01/adventures-in-actionscript-30-making-the-data-available-to-flash-from-an-access-database/' rel='bookmark' title='Permanent Link: Adventures in Actionscript 3.0: Making the Data Available to Flash from an Access Database'>Adventures in Actionscript 3.0: Making the Data Available to Flash from an Access Database</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=q9hpeEsZ"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=j0jfcJvK"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=j0jfcJvK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=9MiPLmLF"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=43" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=q4yfgQhG"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=q4yfgQhG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=fAklPF1g"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=fAklPF1g" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=QsBM2ekY"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=v305ImVk"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=v305ImVk" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=VPUSGRWk"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=54" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=ExnRjHdO"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=ExnRjHdO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=RN1jCP6V"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=129" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=NAR2WlQz"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=124" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AaronSilvers-Flash/~4/Zs0D7lbWjnU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aaronsilvers.com/2008/03/using-sounds-embedded-in-the-library-and-other-tricks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.aaronsilvers.com/2008/03/using-sounds-embedded-in-the-library-and-other-tricks/</feedburner:origLink></item>
		<item>
		<title>Shiny Button Code</title>
		<link>http://feedproxy.google.com/~r/AaronSilvers-Flash/~3/2WxtrR8mRvo/</link>
		<comments>http://www.aaronsilvers.com/2008/02/shiny-button-code/#comments</comments>
		<pubDate>Fri, 22 Feb 2008 14:50:15 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[actionscript 3.0]]></category>
		<category><![CDATA[button]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[glassy]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[sprite]]></category>
		<category><![CDATA[timeline]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://flashforlearning.com/2008/02/22/shiny-button-code/</guid>
		<description><![CDATA[I took an approach of updating Luka Maras' really nice code that makes buttons in that glassy "Web 2.0" style from its original code in ActionScript 2.0 to ActionScript 3.0.


Related posts:<ol><li><a href='http://www.aaronsilvers.com/2008/03/using-sounds-embedded-in-the-library-and-other-tricks/' rel='bookmark' title='Permanent Link: Using Sounds Embedded in the Library and Other Tricks'>Using Sounds Embedded in the Library and Other Tricks</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>I promised actual Flash stuff on this blog, and now I start to make good on that promise.  And no, this is not as clever as <a href="http://pipwerks.com/journal/2008/02/11/really-simple-scorm-as3-wrapper-example/">Philip Hutchinson&#8217;s SCORM Class(es)</a>, but give me a break!  ActionScript 3 is kinda hard when you don&#8217;t touch Flash everyday.</p>
<p>Anyway, I took an approach of updating Luka Maras&#8217; <a href="http://www.lukamaras.com/tutorials/actionscript/amazing-actionscript-designed-button.html">really nice code that makes buttons in that glassy &#8220;Web 2.0&#8243; style</a> from its original code in ActionScript 2.0 to ActionScript 3.0.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="360" height="120" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="id" value="button" /><param name="align" value="middle" /><param name="allowScriptAccess" value="sameDomain" /><param name="allowFullScreen" value="false" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><param name="src" value="http://www.aaronsilvers.com/wp-content/uploads/2008/02/button.swf" /><embed id="button" type="application/x-shockwave-flash" width="360" height="120" src="http://www.aaronsilvers.com/wp-content/uploads/2008/02/button.swf" bgcolor="#ffffff" quality="high" allowfullscreen="false" allowscriptaccess="sameDomain" align="middle"></embed></object></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-2983500270266331";
/* 468x60, created 5/8/08 */
google_ad_slot = "1568303703";
google_ad_width = 468;
google_ad_height = 60;
// --></script><br />
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script></p>
<p>Based only on this one experience, the good news for you if you want to upgrade your existing code to ActionScript 3.0: much of the foundation of the original ActionScript 2.0 code stayed in-tact.  The bad news: figuring out how to convert the way you reference things in ActionScript 3.0 is a bit awkward when you&#8217;re used to working with AS2.0 and it took me a lot longer than I expected.</p>
<p>In some ways, upgrading my Asteroids code from ActionScript 1.0 might be easier than my experiments trying to do it in ActionScript 2.0, but&#8230; I need to budget a lot of time to accomplish that feat, I think.</p>
<p>Feel free to give this a try and if you have any questions or changes &#8212; if you have a way to improve or expand it, please share because I am always looking to improve (and I&#8217;m trying to get better about demonstrating that).</p>
<p>This code can actually go on the main timeline (I know, not cool for you OOP types, but I wanted to make it easy for people to just copy, paste and play).  It assumes that you have a font (Verdana, in this case) in your library called &#8220;Verdana&#8221; that is exported to ActionScript.</p>
<p>I&#8217;ve made the attempt to have the font size increase or decrease relative to the height of the button.</p>
<pre>import flash.geom.*;
import flash.display.*;

// FEEL FREE TO CHANGE THESE VALUES, AS THE REST OF THE CODE WILL ADAPT
var radius:int = 24; 		// The corners of your button
var btnW:int = 360; 		// Button Width
var btnH:int = 120; 		// Button Height
var colors:Array = [0xff0090, 0xff0000];	// The main gradient of your button
var strID:String = "Shiny Button";	// Button Label
var intX:int = 0;			// X-Position of your button's upper-left corner
var intY:int = 0;			// Y-Position of your button's upper-left corner

// PLAY WITH THESE AT YOUR RISK
var fillType:String = GradientType.LINEAR;
var alphas:Array = [100, 100];
var ratios:Array = [0, 245];

// TRY TO LEAVE EVERYTHING ELSE ALONE...
var matr:Matrix = new Matrix();
matr.createGradientBox( btnW, btnH, 90/180*Math.PI, 0, 0 );
var spreadMethod:String = SpreadMethod.PAD;

var myButton:MovieClip = new MovieClip();
this.addChild( myButton );

myButton.x = intX;
myButton.y = intY;

// BUTTON BACKGROUND
var buttonBkg:Sprite = new Sprite();
buttonBkg.graphics.lineStyle(0, 0xE88A41, 100, true, "none", "square", "round");
buttonBkg.graphics.beginGradientFill(fillType, colors, alphas, ratios, matr, spreadMethod );
buttonBkg.graphics.moveTo(radius, 0);
buttonBkg.graphics.lineTo((btnW-radius), 0);
buttonBkg.graphics.curveTo(btnW, 0, btnW, radius);
buttonBkg.graphics.lineTo(btnW, (btnH-radius));
buttonBkg.graphics.curveTo(btnW, btnH, (btnW-radius), btnH);
buttonBkg.graphics.lineTo(radius, btnH);
buttonBkg.graphics.curveTo(0, btnH, 0, (btnH-radius));
buttonBkg.graphics.lineTo(0, radius);
buttonBkg.graphics.curveTo(0, 0, radius, 0);
buttonBkg.graphics.endFill();

// ADD THE BUTTON BACKGROUND TO THE FANCY BUTTON ONLY AFTER IT'S READY
myButton.addChild( buttonBkg );

// THE SHINY GLASSY EFFECT
var shineRadius:Number = radius * 2 / 3;
var shineW:Number = btnW - ( 0.0333 * btnW );
var shineH:Number = btnH / 2 - ( 0.0667 * btnH );
var shineFillType:String = GradientType.LINEAR;
var shineColors:Array = [0xFFFFFF, 0xFFFFFF];
var shineAlphas:Array = [70, 0];
var shineRatios:Array = [0, 255];
var shineMatr:Matrix = new Matrix();
shineMatr.createGradientBox( shineW, shineH, 90/180*Math.PI, 0, 0 );
var shine:Sprite = new Sprite();
shine.x = ( 0.0333 * btnW ) / 2;
shine.y = ( 0.0667 * btnH ) / 2;
shine.graphics.lineStyle(0, 0xFFFFFF, 0);
shine.graphics.beginGradientFill(shineFillType, shineColors, shineAlphas, shineRatios, shineMatr, spreadMethod );
shine.graphics.moveTo(shineRadius, 0);
shine.graphics.lineTo((shineW-shineRadius), 0);
shine.graphics.curveTo(shineW, 0, shineW, shineRadius);
shine.graphics.lineTo(shineW, (shineH-shineRadius));
shine.graphics.curveTo(shineW, shineH, (shineW-shineRadius), shineH);
shine.graphics.lineTo(shineRadius, shineH);
shine.graphics.curveTo(0, shineH, 0, (shineH-shineRadius));
shine.graphics.lineTo(0, shineRadius);
shine.graphics.curveTo(0, 0, shineRadius, 0);
shine.graphics.endFill();

// ADD THE SHINY PART TO THE BUTTON ONLY AFTER IT'S BEEN GENERATED
myButton.addChild( shine );

// TEXT FORMAT FOR THE BUTTON LABEL
var myFormat:TextFormat = new TextFormat();
myFormat.align = "left";
myFormat.font = "Verdana";
myFormat.size = 12 * Math.round( 0.0125 * btnH );
myFormat.bold = true;
myFormat.color = 0xFFFFFF;

// THE BUTTON LABEL
var labelText:TextField = new TextField();
labelText.x = ( 0.0333 * btnW ) / 2;
labelText.y = ( 0.333 * btnH );
labelText.text = strID;
labelText.embedFonts = true;
labelText.selectable = false;
labelText.type = TextFieldType.DYNAMIC;
labelText.autoSize = TextFieldAutoSize.LEFT;
labelText.antiAliasType = "advanced";
labelText.setTextFormat( myFormat );

// ADD THE TEXTFIELD ONLY AFTER IT'S COMPLETE
myButton.addChild ( labelText );</pre>
<p><script type="text/javascript"><!--
google_ad_client = "pub-2983500270266331";
/* 468x60, created 5/8/08 */
google_ad_slot = "1568303703";
google_ad_width = 468;
google_ad_height = 60;
// --></script><br />
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script></p>


<p>Related posts:<ol><li><a href='http://www.aaronsilvers.com/2008/03/using-sounds-embedded-in-the-library-and-other-tricks/' rel='bookmark' title='Permanent Link: Using Sounds Embedded in the Library and Other Tricks'>Using Sounds Embedded in the Library and Other Tricks</a></li></ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=SUIfZHOO"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=ydsLS80b"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=ydsLS80b" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=A8gmhInZ"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=43" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=zVUELH2l"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=zVUELH2l" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=U63scGXw"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=U63scGXw" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=xiuY2tLr"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=VX07pIYr"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=VX07pIYr" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=iNjkCJbz"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=54" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=yWP4oR9O"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=yWP4oR9O" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=k8Gcl69m"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=129" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=emczV3Gs"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=124" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AaronSilvers-Flash/~4/2WxtrR8mRvo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aaronsilvers.com/2008/02/shiny-button-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.aaronsilvers.com/2008/02/shiny-button-code/</feedburner:origLink></item>
		<item>
		<title>Serious Gaming on the Verge of Success…</title>
		<link>http://feedproxy.google.com/~r/AaronSilvers-Flash/~3/x8Xz9LY96Ko/</link>
		<comments>http://www.aaronsilvers.com/2008/01/serious-gaming-on-the-verge-of-success/#comments</comments>
		<pubDate>Wed, 30 Jan 2008 17:32:16 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[E-Learning]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[SCORM]]></category>
		<category><![CDATA[case study]]></category>
		<category><![CDATA[educational technology]]></category>
		<category><![CDATA[lessons learned]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Serious Games]]></category>
		<category><![CDATA[vendors]]></category>

		<guid isPermaLink="false">http://flashforlearning.com/2008/01/30/serious-gaming-on-the-verge-of-success/</guid>
		<description><![CDATA[Imagine if you had the means, the open-mindedness of the client and the management sponsorship to pull out all the stops and really produce a piece of learning that was fun, relevant and &#8220;just right&#8221; for the goals you were trying to meet with your learners?  I&#8217;m at the end of such a project, [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Imagine if you had the means, the open-mindedness of the client and the management sponsorship to pull out all the stops and really produce a piece of learning that was fun, relevant and &#8220;just right&#8221; for the goals you were trying to meet with your learners?  I&#8217;m at the end of such a project, on the eve of its launch, and I could not be more excited to predict a huge win for the first &#8220;serious&#8221; learning game in our organization.</p>
<p>I&#8217;ll be the first to admit, this project could&#8217;ve gone wrong from jump in so many ways.  We had an internal client who, like many clients, was very risk-averse, so the thought of doing a &#8220;game&#8221; was a risky move and required a lot of handholding.  They could have bailed at any time.  We had an incredibly tight deadline for a project like this.  Normally, a multimedia-heavy project like this one, you&#8217;d like a solid six months to develop it out.  We gave our vendor three, and by a lucky break for all of us, the delivery was delayed by a month which was needed.</p>
<p>We used a brand new vendor who was brought to us initially by our CLO.  I&#8217;ll be the first to admit based only on the sample products they provided that I would not have chosen them &#8212; mostly because they seemed more like an Agency than a game development house and the look and feel of the products I saw were similar in nature, and I felt their production would be a disconnect with our audience (and our internal client).  When the project was emerging from the Instructional Designer on the project, I ballparked the project at a certain cost.  I expected the vendor to come in high and then we&#8217;d have to haggle and negotiate.  I expected that working with the vendor, like many vendors I&#8217;ve both worked for and worked with, would be a painful tug-of-war, followed by some finger pointing, followed by relief that the project just &#8220;got done.&#8221;</p>
<p>I could not have been more wrong about this vendor, and I&#8217;m very, very happy to say so.  They came in so close to the number I ballparked, I began to think they were taking us seriously.  I waited with baited breath to see their first draft of the storyboards indicating the look and feel for the game, and having taken the time to visit and talk with one of our branch stores close to their office, they produced storyboards that I felt so perfectly blended my expectations for how to be at once &#8220;cool&#8221; and at the same time &#8220;mindful&#8221; of the people we were looking to instruct, as well as the complexity of the subject matter we were looking to demystify.  They made learning the material (and the subject itself) &#8220;fun&#8221; and still &#8220;tasteful.&#8221;  I was very impressed, and I&#8217;m the kind of person (as you know on this blog) that doesn&#8217;t run out of opinions.  I became hopeful that this really could work.</p>
<p>They created the project in a very complete Alpha state.  We tested it in our network and found that the bandwidth required would be a major obstacle for the target audience.  We talked with our vendor about reducing the audio and video quality a bit and retesting it in our network before doing any more work on integrating it with the LMS &#8212; because if it wouldn&#8217;t perform as &#8220;content&#8221; out of the LMS, there was no point on troubleshooting the LMS communication.  They had new files to us in a matter of days.  We retested and got a green light on performance.</p>
<p>Then we moved onto LMS integration.  I put together the API Wrapper and the rest of the SCORM packaging for our vendor, because they had not built for an LMS deployment before, and it would be just silly to make them go through the learning curve when I could just do that heavy lifting with little effort.  They were able to write and read from the LMS at the prototype level (we did a technical test before they even tried to get the real content working to debug the communication issues).  Not looking at their ActionScript at all, when we noticed some issues with suspend_data not being sent to the LMS, even though the code was the same as the prototype.  It turned out that the content was sending consecutive JavaScript calls, which goes back to the whole synchronous/asynchronous deal about ActionScript and JavaScript (we had to use Flash 7 Player because my organization had not upgraded to Flash 9 Player at the time).  Moving the calls so they were separated and event-driven made a huge difference.  I was on the phone for a day and a half with the vendor.  In ten years, I never worked as, for or with a more willing partner.</p>
<p>For reasons I&#8217;m sure you can understand, I can&#8217;t show you the game.  I probably can&#8217;t talk much about what the game is about or what we&#8217;re trying to teach.  I probably can&#8217;t broadcast the vendor we&#8217;re working with (though if you ask me offline, depending on whom you work for, I&#8217;ll be happy to tell you).</p>
<p>The point of this posting is to get off my chest in as public a means as I can how happy I am to be able to help make the vision of one of our Instructional Designers a reality &#8212; even if all I am is the babelfish (Hitchhiker&#8217;s Guide reference).  We have our foot in the door for serious gaming.  I&#8217;m betting it&#8217;s going to be a smashing success and will usher in a shift in instructional approach, both as far as what we propose and what our internal clients will consider.</p>
<p>And&#8230; I&#8217;m just happy as hell that after years of producing cool and not-so-cool page turning stuff, I get to finally be part of something different.  I worked with a fantastic Instructional Designer and a really incredible Project Manager (I actually am gushing over Project Management and Instructional Design) &#8212; both of whom really &#8220;get it.&#8221;  I had a boss who was willing to take a chance and a CLO who was ready to be a sponsor on something different.  Best yet:  I had an internal client who, despite their concerns, was willing to trust us and get the job done right.</p>
<p>And one more thing:  I&#8217;m very humbled that there are vendors out there that can really be a partner in making great learning experiences, on-time, on-budget and far-exceeding expectations.</p>
<p>For the first time in as long as I can remember, I have a happy project story and it didn&#8217;t kill us.</p>


<p>No related posts.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=K2POLj6o"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=H6Dry01s"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=H6Dry01s" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=kWHKu9EB"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=43" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=vUAbAJ18"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=vUAbAJ18" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=nBKKUOlZ"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=nBKKUOlZ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=gBD8FIkH"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=52" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=4uPpMIGm"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=4uPpMIGm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=cQDI6yGG"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=54" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=ENtkts5I"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?i=ENtkts5I" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=sebog4Dq"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=129" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/AaronSilvers-Flash?a=MhTgsdkF"><img src="http://feeds.feedburner.com/~f/AaronSilvers-Flash?d=124" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AaronSilvers-Flash/~4/x8Xz9LY96Ko" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.aaronsilvers.com/2008/01/serious-gaming-on-the-verge-of-success/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.aaronsilvers.com/2008/01/serious-gaming-on-the-verge-of-success/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 19.606 seconds --><!-- Cached page served by WP-Cache -->
