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

<channel>
	<title>transmote speaks...</title>
	<atom:link href="http://words.transmote.com/wp/feed/" rel="self" type="application/rss+xml" />
	<link>http://words.transmote.com/wp</link>
	<description>design + art + code</description>
	<lastBuildDate>Fri, 11 May 2012 19:25:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Flex Library Project won&#8217;t build?  Check for build errors.</title>
		<link>http://words.transmote.com/wp/20120511/flex-library-project-build-errors/</link>
		<comments>http://words.transmote.com/wp/20120511/flex-library-project-build-errors/#comments</comments>
		<pubDate>Fri, 11 May 2012 19:24:25 +0000</pubDate>
		<dc:creator>ericsoco</dc:creator>
				<category><![CDATA[to do]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[swc]]></category>

		<guid isPermaLink="false">http://words.transmote.com/wp/?p=850</guid>
		<description><![CDATA[I ran into a particularly sticky problem today with Flex Library Projects in Flash Builder. I wrote up my issue as a Stack Overflow question, and subsequently managed to figure it out. In short, as soon as I cut/pasted certain classes into my Flex Library Project, it would no longer rebuild the .swc file in [...]]]></description>
			<content:encoded><![CDATA[<p>I ran into a particularly sticky problem today with Flex Library Projects in Flash Builder. I wrote up my issue as a <a href="http://stackoverflow.com/questions/10557264/why-cant-i-build-a-swc-in-my-flex-builder-project-after-pasting-a-class" target="_blank">Stack Overflow question</a>, and subsequently managed to figure it out.</p>
<p>In short, as soon as I cut/pasted certain classes into my Flex Library Project, it would no longer rebuild the .swc file in the /bin folder. No matter what I did after pasting in that file, I couldn&#8217;t get the .swc to update.</p>
<p>The first symptom was that other projects referencing this Library Project could not find the classes in the Library Project even after I had pasted them into the Library Project. More sluething led to the frozen .swc in the Library Project.</p>
<p>After a while, I noticed that the class I pasted in had dependencies on other, absent classes. <strong>This caused build errors (apparent in the Problems pane, but unnoticed by me until then), and those errors caused Flash Builder to stop updating the .swc file.</strong></p>
<p>Simple enough once I noticed the errors &#8212; of course Flash Builder cannot recompile the .swc when there are build errors. But there was no obvious indication of these errors, nor that building was failing. Once I cleared up the build errors, the .swc automagically reappeared.</p>
<p>The original source of the build errors turned out to be one unchecked box: when I initially created the Library Project, I neglected to check &#8216;Include Adobe AIR Libraries&#8217;. My library classes referenced some (absent) AIR classes, I got build errors, the .swc would not compile, I could not reference any of the library classes from other projects.</p>
]]></content:encoded>
			<wfw:commentRss>http://words.transmote.com/wp/20120511/flex-library-project-build-errors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MongoDB ObjectID for AS3</title>
		<link>http://words.transmote.com/wp/20120402/mongodb-objectid-for-as3/</link>
		<comments>http://words.transmote.com/wp/20120402/mongodb-objectid-for-as3/#comments</comments>
		<pubDate>Mon, 02 Apr 2012 23:03:12 +0000</pubDate>
		<dc:creator>ericsoco</dc:creator>
				<category><![CDATA[to do]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[bson]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[mongo]]></category>
		<category><![CDATA[mongodb]]></category>

		<guid isPermaLink="false">http://words.transmote.com/wp/?p=842</guid>
		<description><![CDATA[I&#8217;ve been working with MongoDB as of late, and finding the offerings for an ActionScript 3.0 driver to be rather lacking. I started with ActionMongo, and quickly found out that it has no support for much of anything except the find() command.  I then found my way to MongoAS3, which is a HUGE improvement over [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working with <a href="http://www.mongodb.org/" target="_blank">MongoDB</a> as of late, and finding the offerings for an ActionScript 3.0 driver to be rather lacking.</p>
<p>I started with <a href="https://github.com/argoncloud/ActionMongo" target="_blank">ActionMongo</a>, and quickly found out that it has no support for much of anything except the find() command.  I then found my way to <a href="http://www.mongoas3.com/" target="_blank">MongoAS3</a>, which is a HUGE improvement over the barely-started functionality within ActionMongo.  (Credit where credit&#8217;s due, Omar Gonzales built MongoAS3 off of Claudio Alberto Andreoni&#8217;s first steps with ActionMongo.)</p>
<p>However, I found a missing piece in MongoAS3 that was holding me back: it doesn&#8217;t provide any way to generate a new <a href="http://www.mongodb.org/display/DOCS/Object+IDs" target="_blank">ObjectID</a>.  This is a problem if, for example, you want to insert a new document.  Since Mongo doesn&#8217;t provide a response on a successful insert, this means that a followup query is required to get the ObjectID assigned by the server to the newly-inserted document.  Not ideal.</p>
<p>So, I added functionality to ObjectId.as (which Omar included from Claudio&#8217;s original, as part of <a href="https://github.com/argoncloud/ActionBSON/" target="_blank">ActionBSON</a>) to generate a new ObjectID per the <a href="http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-BSONObjectIDSpecification" target="_blank">ObjectID spec</a>.  The one deviation from the spec comes from the difficulty in getting the process ID from within a flash runtime (requires launching a NativeProcess, which can only be done from an AIR application with the <a href="http://help.adobe.com/en_US/air/build/WS144092a96ffef7cc16ddeea2126bb46b82f-8000.html" target="_blank">extendedDesktop profile</a>); for this, we&#8217;re just using a random.</p>
<p>I also added the ability to extract the timestamp from the ObjectID, which could prove useful.</p>
<p>Hope it&#8217;s useful to some of you&#8230;I&#8217;ve submitted it to Claudio and Omar for inclusion into their distros.  Code after the break, or on <a href="https://gist.github.com/2287723" target="_blank">Github</a>. (I need a better Gist plugin&#8230;)</p>
<p><span id="more-842"></span><br />
<div id="gist-2287723" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="cm">/*</span></div><div class='line' id='LC2'><span class="cm"> * Copyright (c) 2010 Claudio Alberto Andreoni.</span></div><div class='line' id='LC3'><span class="cm"> * Modifications by Eric Socolofsky: http://transmote.com.</span></div><div class='line' id='LC4'><span class="cm"> *</span></div><div class='line' id='LC5'><span class="cm"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span></div><div class='line' id='LC6'><span class="cm"> * of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div><div class='line' id='LC7'><span class="cm"> * in the Software without restriction, including without limitation the rights</span></div><div class='line' id='LC8'><span class="cm"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div><div class='line' id='LC9'><span class="cm"> * copies of the Software, and to permit persons to whom the Software is</span></div><div class='line' id='LC10'><span class="cm"> * furnished to do so, subject to the following conditions:</span></div><div class='line' id='LC11'><span class="cm"> *</span></div><div class='line' id='LC12'><span class="cm"> * The above copyright notice and this permission notice shall be included in</span></div><div class='line' id='LC13'><span class="cm"> * all copies or substantial portions of the Software.</span></div><div class='line' id='LC14'><span class="cm"> *</span></div><div class='line' id='LC15'><span class="cm"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class='line' id='LC16'><span class="cm"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class='line' id='LC17'><span class="cm"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div><div class='line' id='LC18'><span class="cm"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div><div class='line' id='LC19'><span class="cm"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div><div class='line' id='LC20'><span class="cm"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN</span></div><div class='line' id='LC21'><span class="cm"> * THE SOFTWARE.</span></div><div class='line' id='LC22'><span class="cm"> *</span></div><div class='line' id='LC23'><span class="cm"> */</span></div><div class='line' id='LC24'><br/></div><div class='line' id='LC25'><span class="k">package</span> <span class="nn">org.serialization.bson</span> <span class="o">{</span></div><div class='line' id='LC26'>	<span class="k">import</span> <span class="nn">flash.net.NetworkInfo</span><span class="o">;</span></div><div class='line' id='LC27'>	<span class="k">import</span> <span class="nn">flash.net.NetworkInterface</span><span class="o">;</span></div><div class='line' id='LC28'>	<span class="k">import</span> <span class="nn">flash.utils.ByteArray</span><span class="o">;</span></div><div class='line' id='LC29'>	<span class="k">import</span> <span class="nn">flash.utils.Endian</span><span class="o">;</span></div><div class='line' id='LC30'><br/></div><div class='line' id='LC31'>	<span class="kd">public</span> <span class="kd">class</span> <span class="n">ObjectID</span> <span class="o">{</span></div><div class='line' id='LC32'>		<span class="kd">private</span> <span class="kd">static</span> <span class="kd">var</span> <span class="n">incrementer</span> <span class="p">:</span> <span class="kt">uint</span> <span class="o">=</span> <span class="n">Math</span><span class="o">.</span><span class="na">random</span><span class="o">()</span> <span class="o">*</span> <span class="n">uint</span><span class="o">.</span><span class="na">MAX_VALUE</span><span class="o">;</span></div><div class='line' id='LC33'>		<span class="kd">private</span> <span class="kd">static</span> <span class="kd">var</span> <span class="n">machineAndProcessID</span> <span class="p">:</span> <span class="kt">ByteArray</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span></div><div class='line' id='LC34'><br/></div><div class='line' id='LC35'>		<span class="c1">// BSON is little-endian</span></div><div class='line' id='LC36'>		<span class="kd">private</span> <span class="kd">var</span> <span class="n">rep</span> <span class="p">:</span> <span class="kt">ByteArray</span><span class="o">;</span></div><div class='line' id='LC37'>		<span class="kd">private</span> <span class="kd">var</span> <span class="n">time</span> <span class="p">:</span> <span class="kt">uint</span><span class="o">;</span></div><div class='line' id='LC38'><br/></div><div class='line' id='LC39'>		<span class="cm">/**</span></div><div class='line' id='LC40'><span class="cm">		 * @brief Create a new ObjectID</span></div><div class='line' id='LC41'><span class="cm">		 * @param bytearray A little-endian, 12-byte ByteArray containing the ID</span></div><div class='line' id='LC42'><span class="cm">		 */</span></div><div class='line' id='LC43'>		<span class="kd">public</span> <span class="kd">function </span><span class="nf">ObjectID</span><span class="o">(</span> <span class="n">bytearray</span> <span class="o">:</span> <span class="kt">ByteArray</span> <span class="o">=</span> <span class="kc">null</span> <span class="o">)</span> <span class="o">:</span><span class="kt">void</span> <span class="o">{</span></div><div class='line' id='LC44'>			<span class="k">if</span> <span class="o">(</span><span class="n">bytearray</span> <span class="o">==</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC45'>				<span class="n">bytearray</span> <span class="o">=</span> <span class="n">generateObjectID</span><span class="o">();</span></div><div class='line' id='LC46'>			<span class="o">}</span></div><div class='line' id='LC47'>			<span class="n">setFromBytes</span><span class="o">(</span> <span class="n">bytearray</span> <span class="o">);</span></div><div class='line' id='LC48'>		<span class="o">}</span></div><div class='line' id='LC49'><br/></div><div class='line' id='LC50'><br/></div><div class='line' id='LC51'><br/></div><div class='line' id='LC52'>		<span class="cm">/**</span></div><div class='line' id='LC53'><span class="cm">		 * @brief Set the value of this ObjectID</span></div><div class='line' id='LC54'><span class="cm">		 * @param bytearray A little-endian, 12-byte ByteArray containing the ID</span></div><div class='line' id='LC55'><span class="cm">		 */</span></div><div class='line' id='LC56'>		<span class="kd">public</span> <span class="kd">function </span><span class="nf">setFromBytes</span><span class="o">(</span> <span class="n">bytearray</span> <span class="o">:</span> <span class="kt">ByteArray</span> <span class="o">)</span> <span class="o">:</span><span class="kt">void</span> <span class="o">{</span></div><div class='line' id='LC57'>			<span class="n">rep</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">ByteArray</span><span class="o">();</span></div><div class='line' id='LC58'>			<span class="k">for</span> <span class="o">(</span> <span class="kd">var</span> <span class="n">i</span> <span class="p">:</span> <span class="kt">int</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">12</span><span class="o">;</span> <span class="o">++</span><span class="n">i</span> <span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC59'>				<span class="n">rep</span><span class="o">[</span><span class="n">i</span><span class="o">]</span> <span class="o">=</span> <span class="n">bytearray</span><span class="o">.</span><span class="na">readByte</span><span class="o">();</span></div><div class='line' id='LC60'>			<span class="o">}</span></div><div class='line' id='LC61'><br/></div><div class='line' id='LC62'>			<span class="n">time</span> <span class="o">=</span> <span class="n">rep</span><span class="o">.</span><span class="na">readUnsignedInt</span><span class="o">();</span></div><div class='line' id='LC63'>			<span class="n">rep</span><span class="o">.</span><span class="na">position</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span></div><div class='line' id='LC64'>		<span class="o">}</span></div><div class='line' id='LC65'><br/></div><div class='line' id='LC66'><br/></div><div class='line' id='LC67'><br/></div><div class='line' id='LC68'>		<span class="cm">/**</span></div><div class='line' id='LC69'><span class="cm">		 * @brief Get the value of this ObjectID</span></div><div class='line' id='LC70'><span class="cm">		 * @return A little-endian, 12-byte ByteArray containing the ID</span></div><div class='line' id='LC71'><span class="cm">		 */</span></div><div class='line' id='LC72'>		<span class="kd">public</span> <span class="kd">function </span><span class="nf">getAsBytes</span><span class="o">()</span> <span class="o">:</span> <span class="kt">ByteArray</span> <span class="o">{</span></div><div class='line' id='LC73'>			<span class="k">return</span> <span class="n">rep</span><span class="o">;</span></div><div class='line' id='LC74'>		<span class="o">}</span></div><div class='line' id='LC75'><br/></div><div class='line' id='LC76'>		<span class="kd">public</span> <span class="kd">function </span><span class="nf">toString</span><span class="o">()</span> <span class="o">:</span> <span class="kt">String</span> <span class="o">{</span></div><div class='line' id='LC77'>			<span class="kd">var</span> <span class="n">str</span><span class="p">:</span><span class="kt">String</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="o">;</span></div><div class='line' id='LC78'>			<span class="k">for</span> <span class="o">(</span> <span class="kd">var</span> <span class="n">i</span> <span class="p">:</span> <span class="kt">int</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">12</span><span class="o">;</span> <span class="o">++</span><span class="n">i</span> <span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC79'>				<span class="n">str</span> <span class="o">+=</span> <span class="n">rep</span><span class="o">[</span><span class="n">i</span><span class="o">].</span><span class="n">toString</span><span class="o">(</span> <span class="mi">16</span> <span class="o">);</span></div><div class='line' id='LC80'>			<span class="o">}</span></div><div class='line' id='LC81'>			<span class="k">return</span> <span class="n">str</span><span class="o">;</span></div><div class='line' id='LC82'>		<span class="o">}</span></div><div class='line' id='LC83'><br/></div><div class='line' id='LC84'>		<span class="kd">public</span> <span class="kd">function </span><span class="nf">toDate</span><span class="o">()</span> <span class="o">:</span> <span class="kt">Date</span> <span class="o">{</span></div><div class='line' id='LC85'>			<span class="k">return</span> <span class="k">new</span> <span class="kt">Date</span><span class="o">(</span> <span class="n">time</span> <span class="o">*</span> <span class="mi">1000</span> <span class="o">);</span></div><div class='line' id='LC86'>		<span class="o">}</span></div><div class='line' id='LC87'><br/></div><div class='line' id='LC88'>		<span class="kd">private</span> <span class="kd">function </span><span class="nf">generateObjectID</span><span class="o">()</span> <span class="o">:</span><span class="kt">ByteArray</span> <span class="o">{</span></div><div class='line' id='LC89'>			<span class="c1">// from: http://www.mongodb.org/display/DOCS/Object+IDs</span></div><div class='line' id='LC90'><br/></div><div class='line' id='LC91'>			<span class="c1">// 4-byte timestamp</span></div><div class='line' id='LC92'>			<span class="n">time</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">Date</span><span class="o">().</span><span class="n">getTime</span><span class="o">();</span></div><div class='line' id='LC93'>			<span class="kd">var</span> <span class="n">timeBytes</span><span class="p">:</span><span class="kt">ByteArray</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">ByteArray</span><span class="o">();</span></div><div class='line' id='LC94'>			<span class="n">timeBytes</span><span class="o">.</span><span class="na">endian</span> <span class="o">=</span> <span class="n">Endian</span><span class="o">.</span><span class="na">BIG_ENDIAN</span><span class="o">;</span></div><div class='line' id='LC95'>			<span class="n">timeBytes</span><span class="o">.</span><span class="na">writeInt</span><span class="o">(</span> <span class="n">time</span> <span class="o">);</span></div><div class='line' id='LC96'>			<span class="n">timeBytes</span><span class="o">.</span><span class="na">length</span> <span class="o">=</span> <span class="mi">4</span><span class="o">;</span>	<span class="c1">// truncate as needed</span></div><div class='line' id='LC97'><br/></div><div class='line' id='LC98'>			<span class="c1">// 3-byte machine id + 2-byte process id</span></div><div class='line' id='LC99'>			<span class="k">if</span> <span class="o">(</span> <span class="n">machineAndProcessID</span> <span class="o">==</span> <span class="kc">null</span> <span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC100'>				<span class="n">generateMachineID</span><span class="o">();</span></div><div class='line' id='LC101'>			<span class="o">}</span></div><div class='line' id='LC102'><br/></div><div class='line' id='LC103'>			<span class="c1">// 3-byte increment</span></div><div class='line' id='LC104'>			<span class="kd">var</span> <span class="n">incBytes</span><span class="p">:</span><span class="kt">ByteArray</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">ByteArray</span><span class="o">();</span></div><div class='line' id='LC105'>			<span class="n">incBytes</span><span class="o">.</span><span class="na">endian</span> <span class="o">=</span> <span class="n">Endian</span><span class="o">.</span><span class="na">BIG_ENDIAN</span><span class="o">;</span></div><div class='line' id='LC106'>			<span class="n">incBytes</span><span class="o">.</span><span class="na">writeUnsignedInt</span><span class="o">(</span> <span class="n">incrementer</span><span class="o">++</span> <span class="o">);</span></div><div class='line' id='LC107'>			<span class="n">incBytes</span><span class="o">.</span><span class="na">length</span> <span class="o">=</span> <span class="mi">3</span><span class="o">;</span>		<span class="c1">// truncate as needed</span></div><div class='line' id='LC108'><br/></div><div class='line' id='LC109'>			<span class="kd">var</span> <span class="n">idBytes</span><span class="p">:</span><span class="kt">ByteArray</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">ByteArray</span><span class="o">();</span></div><div class='line' id='LC110'>			<span class="n">idBytes</span><span class="o">.</span><span class="na">writeBytes</span><span class="o">(</span> <span class="n">timeBytes</span> <span class="o">);</span></div><div class='line' id='LC111'>			<span class="n">idBytes</span><span class="o">.</span><span class="na">writeBytes</span><span class="o">(</span> <span class="n">machineAndProcessID</span> <span class="o">);</span></div><div class='line' id='LC112'>			<span class="n">idBytes</span><span class="o">.</span><span class="na">writeBytes</span><span class="o">(</span> <span class="n">incBytes</span> <span class="o">);</span></div><div class='line' id='LC113'><br/></div><div class='line' id='LC114'>			<span class="n">idBytes</span><span class="o">.</span><span class="na">position</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span></div><div class='line' id='LC115'>			<span class="k">return</span> <span class="n">idBytes</span><span class="o">;</span></div><div class='line' id='LC116'>		<span class="o">}</span></div><div class='line' id='LC117'><br/></div><div class='line' id='LC118'>		<span class="kd">private</span> <span class="kd">function </span><span class="nf">generateMachineID</span><span class="o">()</span> <span class="o">:</span><span class="kt">void</span> <span class="o">{</span></div><div class='line' id='LC119'>			<span class="n">machineAndProcessID</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">ByteArray</span><span class="o">();</span></div><div class='line' id='LC120'>			<span class="n">machineAndProcessID</span><span class="o">.</span><span class="na">endian</span> <span class="o">=</span> <span class="n">Endian</span><span class="o">.</span><span class="na">LITTLE_ENDIAN</span><span class="o">;</span></div><div class='line' id='LC121'><br/></div><div class='line' id='LC122'>			<span class="kd">var</span> <span class="n">useRandom</span><span class="p">:</span><span class="kt">Boolean</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span></div><div class='line' id='LC123'>			<span class="k">for</span> <span class="k">each</span> <span class="o">(</span> <span class="kd">var</span> <span class="n">i</span> <span class="p">:</span> <span class="kt">NetworkInterface</span> <span class="k">in</span> <span class="n">NetworkInfo</span><span class="o">.</span><span class="na">networkInfo</span><span class="o">.</span><span class="na">findInterfaces</span><span class="o">()</span> <span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC124'>				<span class="k">if</span> <span class="o">(</span> <span class="n">i</span><span class="o">.</span><span class="na">hardwareAddress</span> <span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC125'>					<span class="n">machineAndProcessID</span><span class="o">.</span><span class="na">writeUTFBytes</span><span class="o">(</span> <span class="n">i</span><span class="o">.</span><span class="na">hardwareAddress</span> <span class="o">);</span></div><div class='line' id='LC126'>					<span class="n">useRandom</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span></div><div class='line' id='LC127'>					<span class="k">break</span><span class="o">;</span></div><div class='line' id='LC128'>				<span class="o">}</span></div><div class='line' id='LC129'>			<span class="o">}</span></div><div class='line' id='LC130'><br/></div><div class='line' id='LC131'>			<span class="k">if</span> <span class="o">(</span> <span class="n">useRandom</span> <span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC132'>				<span class="c1">// if no NetworkInterfaces with valid hardware addresses found, use random</span></div><div class='line' id='LC133'>				<span class="kd">var</span> <span class="n">randomMachineID</span> <span class="p">:</span> <span class="kt">uint</span> <span class="o">=</span> <span class="n">Math</span><span class="o">.</span><span class="na">floor</span><span class="o">(</span> <span class="n">Math</span><span class="o">.</span><span class="na">random</span><span class="o">()</span> <span class="o">*</span> <span class="n">uint</span><span class="o">.</span><span class="na">MAX_VALUE</span> <span class="o">);</span></div><div class='line' id='LC134'>				<span class="n">machineAndProcessID</span><span class="o">.</span><span class="na">writeUnsignedInt</span><span class="o">(</span> <span class="n">randomMachineID</span> <span class="o">);</span></div><div class='line' id='LC135'>			<span class="o">}</span></div><div class='line' id='LC136'><br/></div><div class='line' id='LC137'>			<span class="n">machineAndProcessID</span><span class="o">.</span><span class="na">length</span> <span class="o">=</span> <span class="mi">3</span><span class="o">;</span>		<span class="c1">// truncate as needed</span></div><div class='line' id='LC138'><br/></div><div class='line' id='LC139'>			<span class="c1">// not possible to get process id from flash without launching a NativeProcess,</span></div><div class='line' id='LC140'>			<span class="c1">// which requires AIR application with extendedDesktop profile.</span></div><div class='line' id='LC141'>			<span class="c1">// so, use a random.</span></div><div class='line' id='LC142'>			<span class="kd">var</span> <span class="n">processID</span><span class="p">:</span><span class="kt">uint</span> <span class="o">=</span> <span class="n">Math</span><span class="o">.</span><span class="na">floor</span><span class="o">(</span> <span class="n">Math</span><span class="o">.</span><span class="na">random</span><span class="o">()</span> <span class="o">*</span> <span class="n">uint</span><span class="o">.</span><span class="na">MAX_VALUE</span> <span class="o">);</span></div><div class='line' id='LC143'>			<span class="n">machineAndProcessID</span><span class="o">.</span><span class="na">writeUnsignedInt</span><span class="o">(</span> <span class="n">processID</span> <span class="o">);</span></div><div class='line' id='LC144'><br/></div><div class='line' id='LC145'>			<span class="n">machineAndProcessID</span><span class="o">.</span><span class="na">length</span> <span class="o">=</span> <span class="mi">5</span><span class="o">;</span>		<span class="c1">// truncate as needed</span></div><div class='line' id='LC146'>		<span class="o">}</span></div><div class='line' id='LC147'>	<span class="o">}</span></div><div class='line' id='LC148'><span class="o">}</span></div><div class='line' id='LC149'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/2287723/f483f0d52c9ad01eb3dfe37a0df960c9deb74535/ObjectID.as" style="float:right;">view raw</a>
            <a href="https://gist.github.com/2287723#file_object_id.as" style="float:right;margin-right:10px;color:#666">ObjectID.as</a>
            <a href="https://gist.github.com/2287723">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>
</p>
]]></content:encoded>
			<wfw:commentRss>http://words.transmote.com/wp/20120402/mongodb-objectid-for-as3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Nest 0.2 &#8211; Scenegraph and Event Model for Processing/Java</title>
		<link>http://words.transmote.com/wp/20110608/nest-0-2-scenegraph-and-event-model-for-processingjava/</link>
		<comments>http://words.transmote.com/wp/20110608/nest-0-2-scenegraph-and-event-model-for-processingjava/#comments</comments>
		<pubDate>Thu, 09 Jun 2011 06:49:08 +0000</pubDate>
		<dc:creator>ericsoco</dc:creator>
				<category><![CDATA[to do]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[bubble]]></category>
		<category><![CDATA[capture]]></category>
		<category><![CDATA[child]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[parent]]></category>
		<category><![CDATA[position]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[rotation]]></category>
		<category><![CDATA[scale]]></category>
		<category><![CDATA[scenegraph]]></category>
		<category><![CDATA[transform]]></category>

		<guid isPermaLink="false">http://words.transmote.com/wp/?p=837</guid>
		<description><![CDATA[I&#8217;ve been working on some more complex processing/java projects at work lately, and found myself missing some of the niceties of AS3, like add/removeChild(), setting .x or .scaleY or .rotationZ, adding event handlers, etc. So, I started to write a framework to provide some of those things. Now, it&#8217;s all documented and pretty and waiting [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on some more complex processing/java projects at work lately, and found myself missing some of the niceties of AS3, like add/removeChild(), setting .x or .scaleY or .rotationZ, adding event handlers, etc.</p>
<p>So, I started to write a framework to provide some of those things.  Now, it&#8217;s all documented and pretty and waiting for you:<br />
<a href="http://transmote.com/nest/">http://transmote.com/nest/</a></p>
<p><span id="more-837"></span></p>
<p>Nest provides a high-level, simple <a href="http://en.wikipedia.org/wiki/Scenegraph">scenegraph</a> for <a href="http://processing.org/">Processing</a>, loosely following the API for the scenegraph and display list implemented by <a href="http://www.adobe.com/devnet/actionscript.html">ActionScript</a> 3.</p>
<p>Nest is targeted toward Processing developers familiar with AS3, who wish to organize on-screen objects in a display list hierarchy. As with the AS3 display list, Nest establishes parent-child relationships, applies parent transformations to children, and allows easy manipulation of on-screen objects through member variables such as x, y, rotation, and scale.</p>
<p>Nest also includes an event-based communication system, built on the <a href="http://en.wikipedia.org/wiki/Observer_pattern">Observer</a> pattern as implemented by Java&#8217;s <a href="http://download.oracle.com/javase/1.4.2/docs/api/java/util/Observer.html">Observer</a> interface. It loosely follows elements of the AS3 / <a href="http://en.wikipedia.org/wiki/DOM_events">DOM Event Model</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://words.transmote.com/wp/20110608/nest-0-2-scenegraph-and-event-model-for-processingjava/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8216;flip&#8217; on the Great Wall</title>
		<link>http://words.transmote.com/wp/20110208/flip-on-the-great-wall/</link>
		<comments>http://words.transmote.com/wp/20110208/flip-on-the-great-wall/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 04:13:55 +0000</pubDate>
		<dc:creator>ericsoco</dc:creator>
				<category><![CDATA[to see]]></category>

		<guid isPermaLink="false">http://words.transmote.com/wp/?p=831</guid>
		<description><![CDATA[the Great Wall of Oakland has graciously offered to display another of my works next month. here&#8217;s a sneak preview: as usual, we&#8217;ll kick off some time after dark (7ish), and cycle through a number of pieces. we&#8217;ll be on til around 10. hope to see you there!]]></description>
			<content:encoded><![CDATA[<p>the <a href="http://greatwallofoakland.org/">Great Wall of Oakland</a> has graciously offered to display another of my works next month.  here&#8217;s a sneak preview:</p>
<p><iframe src="http://player.vimeo.com/video/18611360?title=0&amp;byline=0&amp;portrait=0&amp;color=80ceff" width="580" height="326" frameborder="0"></iframe></p>
<p>as usual, we&#8217;ll kick off some time after dark (7ish), and cycle through a number of pieces.  we&#8217;ll be on til around 10.</p>
<p>hope to see you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://words.transmote.com/wp/20110208/flip-on-the-great-wall/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FLARManager v1.1 – Augmented Reality in Flash</title>
		<link>http://words.transmote.com/wp/20110130/flarmanager-v1-1-%e2%80%93-augmented-reality-in-flash/</link>
		<comments>http://words.transmote.com/wp/20110130/flarmanager-v1-1-%e2%80%93-augmented-reality-in-flash/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 05:22:33 +0000</pubDate>
		<dc:creator>ericsoco</dc:creator>
				<category><![CDATA[to do]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[AR]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[augmented reality]]></category>
		<category><![CDATA[computer vision]]></category>
		<category><![CDATA[flarmanager]]></category>
		<category><![CDATA[flartoolkit]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://words.transmote.com/wp/?p=805</guid>
		<description><![CDATA[Hello again. For your augmenting pleasure, here&#8217;s the first major-ish update since v1.0. As Papervision is pretty much a dead project, I&#8217;ve been asked increasingly often to update the parts of FLARManager that use other frameworks. That&#8217;s the major focus of this release, but there are some other changes too. FLARManager v1.1 can now stabilize [...]]]></description>
			<content:encoded><![CDATA[<p>Hello again.  For your augmenting pleasure, here&#8217;s the first major-ish update since v1.0.</p>
<p>As Papervision is pretty much a dead project, I&#8217;ve been asked increasingly often to update the parts of FLARManager that use other frameworks.  That&#8217;s the major focus of this release, but there are some other changes too.</p>
<p>FLARManager v1.1 can now stabilize tracking based on the user scenario you&#8217;re targeting.  <tt>FLARManager.markerMode</tt> and <tt>FLARManager.patternMode</tt> allow more control over the amount of markers and patterns your application will track, and <tt>FLARCameraSource.activityThreshold</tt> is better integrated into FLARManager&#8217;s core to allow performance gains for stationary markers.</p>
<p>Of course, all of this is reflected in <a href="http://transmote.com/flar/reference">updated ASDoc-style documentation</a>, and is <a href="http://words.transmote.com/wp/flarmanager/flarmanager-documentation/">documented here</a> as well.  And if you don&#8217;t want to take the time to understand what I&#8217;m talking about, just roll with the defaults and everything will be peachy.</p>
<p>As usual, you can get it via svn/download.  Instructions <a href="http://transmote.com/flar">here</a>.</p>
<p>If you like what you see here, please consider flipping a penny or two my way:<br />
<a href="http://words.transmote.com/wp/flarmanager/flarmanager-donate/">donate to FLARManager</a></p>
<p>Also, in case you missed the news &#8212; ARToolworks is now hosting a <a href="http://www.artoolworks.com/community/forum/viewforum.php?f=25">FLARManager forum here</a>.  Please post support questions there for better tracking and archival.  And in other communication news, I&#8217;m now <a href="http://twitter.com/transmote">on the twitters</a>&#8230;look out for quickies about FLARManager, Flash, and all good things tech and design.</p>
<p>More on v1.1 after the jump&#8230;<br />
<span id="more-805"></span></p>
<p>&nbsp;</p>
<h4>what&#8217;s new</h4>
<p><b>[corrected support for non-4:3 aspect ratios for all frameworks]</b><br />
Previous to v1.1, FLARManager did not correctly support non-4:3 aspect ratios for any framework except Papervision.  This is now corrected for all frameworks supported by FLARManager &#8212; go 16:9, 1:2, whatever floats your boat.  The only exception &#8212; native Flash 3D still has a bit of trouble with some non-4:3 aspect ratios.</p>
<p>Note, this required a change to <tt>NyARParam.as</tt>, in the FLARToolkit source.  It is included in the FLARManager download and SVN, though, so no need to think twice about it.</p>
<p><b>[support for Alternativa3D v7]</b><br />
As always, <a href="http://makc3d.wordpress.com/">Makc the Great</a> comes to the rescue, this time with support for the flash-native, free version (v7, demo version) of <a href="http://alternativaplatform.com/en/">Alternativa3D</a>.</p>
<p><b>[finer control over markers and patterns]</b><br />
This one&#8217;s a bit complex, but I&#8217;m hoping it allows for better performance and control, by allowing developers to tailor their FLARManager app to the intended user experience.  The basic idea is that you can specify whether you want to track multiple markers per pattern or just one per pattern, and whether to differentiate between patterns or not. this allows, for example:</p>
<ul>
<li>true single-marker mode, by setting both <tt>markerMode</tt> and <tt>patternMode</tt> to <tt>SINGLE</tt>;</li>
<li>true multi-marker mode, which is how FLARManager used to function, by setting both to <tt>MULTI</tt>;</li>
<li>a new default mode for FLARManager, which is <tt>markerMode=SINGLE</tt> and <tt>patternMode=MULTI</tt>.</li>
</ul>
<p>The new default mode should help somewhat with flickering, by avoiding any distance calculation errors that could cause FLARManager to incorrectly think a marker was removed. Check the <a href="http://words.transmote.com/wp/flarmanager/flarmanager-documentation/#flarManagerSettings_markerMode">docs page</a> for more detailed info.</p>
<p><b>[examples moved to Away3D]</b><br />
As mentioned above, Papervision3D no longer seems to be a favored option for 3D development in Flash Player, so I&#8217;ve ported all examples that used it to <a href="http://away3d.com/">Away3D</a>.  However, I added an Away3D Collada example instead of replacing the PV3D version, as my knowledge of using Collada in Away3D is incomplete.  Any suggestions for improving the Away3D example (specifically around loading the collada files at runtime rather than embedding) are most welcome.</p>
<p><b>[better integration of <tt>activityThreshold</tt>]</b><br />
<a href="http://words.transmote.com/wp/20100923/flarmanager-activitythreshold/">A previous sub-release</a> introduced <tt>FLARCameraSource.activityThreshold</tt>, but it was a quick implementation of the idea.  Now, FLARManager does not run the tracking engine unless the source has changed more than <tt>activityThreshold</tt>, allowing much better performance for stationary markers.</p>
]]></content:encoded>
			<wfw:commentRss>http://words.transmote.com/wp/20110130/flarmanager-v1-1-%e2%80%93-augmented-reality-in-flash/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>pecha kucha, 2011.01.11</title>
		<link>http://words.transmote.com/wp/20110104/pecha-kucha-2011-01-11/</link>
		<comments>http://words.transmote.com/wp/20110104/pecha-kucha-2011-01-11/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 03:20:59 +0000</pubDate>
		<dc:creator>ericsoco</dc:creator>
				<category><![CDATA[to see]]></category>
		<category><![CDATA[casual]]></category>
		<category><![CDATA[creation]]></category>
		<category><![CDATA[one]]></category>
		<category><![CDATA[pecha kucha]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://words.transmote.com/wp/?p=796</guid>
		<description><![CDATA[hello, dear readers. i&#8217;ll be pontificatin&#8217; on the wonders of &#8216;casual creation&#8217; at this month&#8217;s Pecha Kucha. what&#8217;s pecha kucha? it&#8217;s this thing where people talk at you, but it&#8217;s not as boring as most, because a) each speaker has only 20 slides, with only 20 seconds per slide. 6:40. that&#8217;s it. and b) it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://words.transmote.com/wp/wp-content/uploads/2011/01/2191845589_7e85093c22_b.jpg" rel="shadowbox[sbpost-796];player=img;"><img src="http://words.transmote.com/wp/wp-content/uploads/2011/01/2191845589_7e85093c22_b.jpg" alt="" title="2191845589_7e85093c22_b" width="500" height="375" /></a></p>
<p>hello, dear readers.</p>
<p>i&#8217;ll be pontificatin&#8217; on the wonders of &#8216;casual creation&#8217; at this month&#8217;s <a href="http://www.pecha-kucha.org/">Pecha Kucha</a>.</p>
<p>what&#8217;s pecha kucha?  it&#8217;s this thing where people talk at you, but it&#8217;s not as boring as most, because a) each speaker has only 20 slides, with only 20 seconds per slide.  6:40.  that&#8217;s it.  and b) it&#8217;s at a club with a full bar!</p>
<p>the theme for the month: &#8220;ONE&#8221;.  expect a special surprise, in the form of a glimpse into my personal politics as a developer/creator, to address said theme.</p>
<p><a href="http://bit.ly/333ritch">333 ritch</a><br />
doors @ 7pm<br />
presentations start @ 8:20<br />
$5 requested donation</p>
<p>more info <a href="http://www.pecha-kucha.org/night/san-francisco/41">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://words.transmote.com/wp/20110104/pecha-kucha-2011-01-11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alternativa3D version 7 support, ARToolworks forum</title>
		<link>http://words.transmote.com/wp/20101228/alternativa3d-version-7-support-artoolworks-forum/</link>
		<comments>http://words.transmote.com/wp/20101228/alternativa3d-version-7-support-artoolworks-forum/#comments</comments>
		<pubDate>Wed, 29 Dec 2010 00:18:35 +0000</pubDate>
		<dc:creator>ericsoco</dc:creator>
				<category><![CDATA[to do]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[alternativa]]></category>
		<category><![CDATA[AR]]></category>
		<category><![CDATA[artoolworks]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[augmented reality]]></category>
		<category><![CDATA[computer vision]]></category>
		<category><![CDATA[flarmanager]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[forum]]></category>
		<category><![CDATA[help]]></category>
		<category><![CDATA[support]]></category>

		<guid isPermaLink="false">http://words.transmote.com/wp/?p=791</guid>
		<description><![CDATA[Quick updates on code and on support: Thanks to Makc, FLARManager now supports the latest (free) version of Alternativa3D. As of the time of writing, this means Alternativa3D version 7.6.0. The latest source in my SVN /trunk can be checked out as described here. Also, I mentioned to ARToolworks that it&#8217;s not ideal for FLARManager [...]]]></description>
			<content:encoded><![CDATA[<p>Quick updates on code and on support:</p>
<p>Thanks to <a href="http://makc3d.wordpress.com/">Makc</a>, FLARManager now supports the latest (free) version of <a href="http://alternativaplatform.com/">Alternativa3D</a>.  As of the time of writing, this means Alternativa3D version 7.6.0.  The latest source in my SVN /trunk can be checked out as described <a href="http://words.transmote.com/wp/flarmanager/">here</a>.</p>
<p>Also, I mentioned to <a href="http://www.artoolworks.com/">ARToolworks</a> that it&#8217;s not ideal for FLARManager users to have to wade through comments on previous posts to get support, and they offered to set up a forum specifically for FLARManager.  I&#8217;m going to start forwarding questions posted on this site to the ARToolworks/FLARManager forum from now on.  You can find the new forum <a href="http://www.artoolworks.com/community/forum/viewtopic.php?f=25&#038;t=1201">here</a>.</p>
<p>Of course, the <a href="http://groups.google.com/group/flartoolkit-userz">FLARToolkit forum</a> still exists as well, and I&#8217;ll keep my eye on both.  Where should you post?  Well, if your question is FLARManager-specific, better to post on the ARToolworks forum, as their staff will be helping me answer questions.  If your question is more about FLARToolkit, stick with the FLARToolkit forum.  Either way, your questions will be heard.</p>
]]></content:encoded>
			<wfw:commentRss>http://words.transmote.com/wp/20101228/alternativa3d-version-7-support-artoolworks-forum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FLARManager v1.0.4 – Augmented Reality in Flash</title>
		<link>http://words.transmote.com/wp/20101128/flarmanager-v1-0-4-augmented-reality-in-flash/</link>
		<comments>http://words.transmote.com/wp/20101128/flarmanager-v1-0-4-augmented-reality-in-flash/#comments</comments>
		<pubDate>Mon, 29 Nov 2010 00:51:11 +0000</pubDate>
		<dc:creator>ericsoco</dc:creator>
				<category><![CDATA[to do]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[AR]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[augmented reality]]></category>
		<category><![CDATA[clibinit]]></category>
		<category><![CDATA[computer vision]]></category>
		<category><![CDATA[flare]]></category>
		<category><![CDATA[flarmanager]]></category>
		<category><![CDATA[flartoolkit]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[natural feature tracking]]></category>
		<category><![CDATA[NFT]]></category>

		<guid isPermaLink="false">http://words.transmote.com/wp/?p=778</guid>
		<description><![CDATA[Another minor update, this time focused on Away3D. v1.0.4 mainly just updates Away3D from 3.3.4 to 3.6.0, which uses the native flash.geom.Matrix3D instead of MatrixAway3D. This update also includes a new Away3D SWC. As usual, you can get it via svn/download. Instructions here. If you like what you see here, please consider flipping a penny [...]]]></description>
			<content:encoded><![CDATA[<p>Another minor update, this time focused on Away3D.</p>
<p>v1.0.4 mainly just updates Away3D from 3.3.4 to 3.6.0, which uses the native flash.geom.Matrix3D instead of MatrixAway3D.  This update also includes a new Away3D SWC.</p>
<p>As usual, you can get it via svn/download.  Instructions <a href="http://transmote.com/flar">here</a>.</p>
<p>If you like what you see here, please consider flipping a penny or two my way:<br />
<a href="http://words.transmote.com/wp/flarmanager/flarmanager-donate/">donate to FLARManager</a></p>
<p>Note: Away3D v3.3.4 is no longer supported by FLARManager; if you need support for it, use FLARManager v1.0.3 or earlier.</p>
]]></content:encoded>
			<wfw:commentRss>http://words.transmote.com/wp/20101128/flarmanager-v1-0-4-augmented-reality-in-flash/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>FLARManager v1.0.3 &#8211; Augmented Reality in Flash</title>
		<link>http://words.transmote.com/wp/20101031/flarmanager-v1-0-3-augmented-reality-in-flash/</link>
		<comments>http://words.transmote.com/wp/20101031/flarmanager-v1-0-3-augmented-reality-in-flash/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 18:42:07 +0000</pubDate>
		<dc:creator>ericsoco</dc:creator>
				<category><![CDATA[to do]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[AR]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[augmented reality]]></category>
		<category><![CDATA[clibinit]]></category>
		<category><![CDATA[computer vision]]></category>
		<category><![CDATA[flare]]></category>
		<category><![CDATA[flarmanager]]></category>
		<category><![CDATA[flartoolkit]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[natural feature tracking]]></category>
		<category><![CDATA[NFT]]></category>

		<guid isPermaLink="false">http://words.transmote.com/wp/?p=770</guid>
		<description><![CDATA[So, I have to apologize for the CLibInit errors people have been running into when trying to compile the latest version. I left a reference to FlareTracker in FLARManagerProfiler.as when testing, and did not notice this caused Flash Builder to attempt to compile FlareTracker.as even though the default application is FLARManagerExampleLauncher.as. This minor release, v1.0.3, [...]]]></description>
			<content:encoded><![CDATA[<p>So, I have to apologize for the <tt>CLibInit</tt> errors people have been running into when trying to compile the latest version.  I left a reference to <tt>FlareTracker</tt> in <tt>FLARManagerProfiler.as</tt> when testing, and did not notice this caused Flash Builder to attempt to compile <tt>FlareTracker.as</tt> even though the default application is <tt>FLARManagerExampleLauncher.as</tt>.</p>
<p>This minor release, v1.0.3, fixes that problem.  There&#8217;s not much else new here, except a couple minor bug fixes.  As always, you can download via SVN or via the download link on the <a href="http://transmote.com/flar">FLARManager page</a>.  You no longer have to get the flare* libraries to compile FLARManager; hope this helps all of you who&#8217;ve been struggling with <tt>CLibInit</tt>.</p>
<p>Oh!  And.  HAPPY HALLOWEEN <img src='http://words.transmote.com/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://words.transmote.com/wp/20101031/flarmanager-v1-0-3-augmented-reality-in-flash/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>FLARManager: control jitter with activityThreshold</title>
		<link>http://words.transmote.com/wp/20100923/flarmanager-activitythreshold/</link>
		<comments>http://words.transmote.com/wp/20100923/flarmanager-activitythreshold/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 02:36:41 +0000</pubDate>
		<dc:creator>ericsoco</dc:creator>
				<category><![CDATA[to do]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[AR]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[augmented reality]]></category>
		<category><![CDATA[computer vision]]></category>
		<category><![CDATA[flare]]></category>
		<category><![CDATA[flarmanager]]></category>
		<category><![CDATA[flartoolkit]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[jitter]]></category>
		<category><![CDATA[natural feature tracking]]></category>
		<category><![CDATA[NFT]]></category>

		<guid isPermaLink="false">http://words.transmote.com/wp/?p=759</guid>
		<description><![CDATA[After learning today about a very clever trick by Deepanjan Das, I decided to implement it in FLARManager. The trick, in short: only send the camera source to FLARToolkit while there is noticeable motion. The result: less jitter when the marker is held still in front of the camera. To implement in FLARManager: Download the [...]]]></description>
			<content:encoded><![CDATA[<p>After learning today about a <a href="http://deepanjandas.wordpress.com/2010/07/08/augmented-reality-using-flartoolkit-restrict-unnecessary-model-jumping/">very clever trick</a> by Deepanjan Das, I decided to implement it in FLARManager.</p>
<p>The trick, in short:<br />
only send the camera source to FLARToolkit while there is noticeable motion.<br />
The result:<br />
less jitter when the marker is held still in front of the camera.</p>
<p>To implement in FLARManager:<br />
Download the latest from svn, particularly <tt>FLARManager.as, FLARConfigLoader.as,</tt> and <tt>FLARCameraSource.as</tt>.  the changes will automatically take effect.</p>
<p>To tweak the value, set <tt>activityThreshold</tt> within the <tt>&lt;flarSourceSettings&gt;</tt> element in <tt>flarConfig.xml</tt>.  Set higher to further reduce jitter in stationary markers, and set lower to allow more freedom of motion with stationary markers.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://words.transmote.com/wp/20100923/flarmanager-activitythreshold/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

