<?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:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Marc's Musings</title>
	
	<link>http://www.rogue-development.com/blog2</link>
	<description>Comments and thoughts on technology from Marc Hughes</description>
	<lastBuildDate>Wed, 14 Jul 2010 18:09:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</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" type="application/rss+xml" href="http://feeds.feedburner.com/rogue-development/aRwh" /><feedburner:info uri="rogue-development/arwh" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.0/</creativeCommons:license><feedburner:emailServiceId>rogue-development/aRwh</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Frogue-development%2FaRwh" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Frogue-development%2FaRwh" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Frogue-development%2FaRwh" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/rogue-development/aRwh" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Frogue-development%2FaRwh" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Frogue-development%2FaRwh" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Frogue-development%2FaRwh" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item>
		<title>GIT</title>
		<link>http://feedproxy.google.com/~r/rogue-development/aRwh/~3/O_zF-m1cQ5Q/</link>
		<comments>http://www.rogue-development.com/blog2/2010/07/git/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 18:09:55 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=628</guid>
		<description><![CDATA[I&#8217;ve been working with GIT more and more lately.  It seems like it&#8217;ll make complex projects with several simultaneous branches a lot easier to work on.  I just wish there were some really good easy to use graphical clients for non-engineers.  Something like Versions for SVN/OSX would be great.
If you&#8217;re looking for a book, go [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working with GIT more and more lately.  It seems like it&#8217;ll make complex projects with several simultaneous branches a lot easier to work on.  I just wish there were some really good easy to use graphical clients for non-engineers.  Something like Versions for SVN/OSX would be great.</p>
<p>If you&#8217;re looking for a book, go with the Pro Git one.  I originally bought the oreilly book and was disappointed.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/pev8wtR6_mElobrYUdQzaeuLlUI/0/da"><img src="http://feedads.g.doubleclick.net/~a/pev8wtR6_mElobrYUdQzaeuLlUI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/pev8wtR6_mElobrYUdQzaeuLlUI/1/da"><img src="http://feedads.g.doubleclick.net/~a/pev8wtR6_mElobrYUdQzaeuLlUI/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=O_zF-m1cQ5Q:44VrJ_s9oig:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=O_zF-m1cQ5Q:44VrJ_s9oig:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=O_zF-m1cQ5Q:44VrJ_s9oig:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=O_zF-m1cQ5Q:44VrJ_s9oig:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=O_zF-m1cQ5Q:44VrJ_s9oig:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rogue-development/aRwh/~4/O_zF-m1cQ5Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2010/07/git/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.rogue-development.com/blog2/2010/07/git/</feedburner:origLink></item>
		<item>
		<title>A lesson on AIR certificate signing</title>
		<link>http://feedproxy.google.com/~r/rogue-development/aRwh/~3/ryiIzSjJIr4/</link>
		<comments>http://www.rogue-development.com/blog2/2010/05/a-lesson-on-air-certificate-signing/#comments</comments>
		<pubDate>Thu, 06 May 2010 10:31:01 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=623</guid>
		<description><![CDATA[Yesterday, I created a new version of one of my AIR apps.  I tested it, it looked good, so I uploaded to my distribution site.  One of the tests I always do after that is to use the auto-update feature to make sure the upgrade goes smoothly for my customers.  It found [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, I created a new version of one of my AIR apps.  I tested it, it looked good, so I uploaded to my distribution site.  One of the tests I always do after that is to use the auto-update feature to make sure the upgrade goes smoothly for my customers.  It found the update, downloaded it as usual, began installing, and them BAMN</p>
<p>&#8220;Air cannot install this application because the installer is misconfigured.&#8221;</p>
<p>Odd I thought.  So I dusted off a couple virtual machine images with different versions of AIR and my application installed, and they all behaved the same.</p>
<p>Then I tried to upgrade by manually double-clicking the .air package and got this error:  &#8220;The application could not be installed because an application with that name already exists at the selected installation location. &#8221;</p>
<p>It turns out that I hadn&#8217;t made a release since last I renewed my code signing certificate.  Now, last year, around this time I didn&#8217;t have any problems.  I just signed the new version with the new certificate and it all worked fine.  But this year, something&#8217;s different.</p>
<p>After some digging around, I found out I may have to migrate from my old certificate to the new one.  It&#8217;s a fairly trivial process.  First you create your air package with your new certificate.  Then you run adt and also sign it with your old certificate.  A command like this works:</p>
<p>adt -migrate -storetype pkcs12 -keystore ../OLDAgileAgenda.p12 -storepass MYPASSWORD -keypass MYPASSWORD AgileAgendaBC_0070.air AgileAgendaBC_0070_migrated.air</p>
<p>BUT.  When I ran that I received an error about my old certificate being expired and I can&#8217;t use it.  Oh shit.  You need to migrate certificates before they expire?</p>
<p>Some googling around and I found the answer.  Apparently this was a common enough problem that AIR 1.5.3 changed this behavior slightly.  Now, you can migrate from an expired certificate, <strong>but only for 180 days after the expiration.</strong> Luckily, I&#8217;m easily within that 180 day window, but I pitty large commercial applications that go out on CD and don&#8217;t get updated that often.  (About that time I got spooked since I worked on <a href="http://www.tomsnyder.com/timelinerxe/">one of those</a>.  But that&#8217;s an enterprise-level problem to be solved in an enterprise-level way at an enterprise-later date and time.)</p>
<p>So to update my AIR sdk I downloaded from <a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=airsdk">here</a> and followed the instructions <a href="http://www.adobe.com/support/documentation/en/air/1_5_1/releasenotes_developers.html#sdk">here</a>.</p>
<p>Now, my adt migrate command worked perfectly.</p>
<p>So I tried installing the migrated air package, and the upgrade went through perfectly.  A shot at the auto-update, and that worked as well.</p>
<p>But I noticed something when I ran the app.  It had forgotten all my settings.  Unfortunately, that included the registration info.  If I released like this, I know I&#8217;d have dozens of angry emails the next day with customers who can&#8217;t find their license keys anymore.  So some more googling&#8230;</p>
<p>Turns out, the publisher ID changes when your certificate changes.  That publisher ID is the weird string in your local settings directory.  For instance, on OSX the local settings dir for my app was ~/Library/Preferences/com.agileagenda.AgileAgenda.F49A4D8DF78A1FEE7A3BE440DC11BAB18D922274.1</p>
<p>Now, there was an entirely new directory being created with a different publisher ID.</p>
<p>After some more searching, I found out that AIR 1.5.3 also solved this problem.  You can add a publisher id tag to your -app.xml file to specify one to use, such as:</p>
<p>&lt;publisherID&gt;F49A4D8DF78A1FEE7A3BE440DC11BAB18D922274.1&lt;/publisherID&gt;</p>
<p>To use that, you&#8217;ll also have to update the XML namespace at the top of the file</p>
<p>&lt;application xmlns=&#8221;http://ns.adobe.com/air/application/1.5.3&#8243; &gt;</p>
<p>(NOTE: For brand new applications, don&#8217;t specify a publisher id.  They&#8217;re being phased out.  Blank is better since your config directory name will be cleaner)</p>
<p>After doing that, I rebuild my air package, re-signed it with the migration certificate, re-performed all my tests.  And all was good.</p>
<p>Hopefully, this blog post will save someone else in the same situation a lot of frustration.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/YLxu9_88UUWDTxvfP65fMEoDprk/0/da"><img src="http://feedads.g.doubleclick.net/~a/YLxu9_88UUWDTxvfP65fMEoDprk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/YLxu9_88UUWDTxvfP65fMEoDprk/1/da"><img src="http://feedads.g.doubleclick.net/~a/YLxu9_88UUWDTxvfP65fMEoDprk/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=ryiIzSjJIr4:qIw1WyqlgrI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=ryiIzSjJIr4:qIw1WyqlgrI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=ryiIzSjJIr4:qIw1WyqlgrI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=ryiIzSjJIr4:qIw1WyqlgrI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=ryiIzSjJIr4:qIw1WyqlgrI:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rogue-development/aRwh/~4/ryiIzSjJIr4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2010/05/a-lesson-on-air-certificate-signing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.rogue-development.com/blog2/2010/05/a-lesson-on-air-certificate-signing/</feedburner:origLink></item>
		<item>
		<title>Scholastic / Tomsnyder hiring in Boston area (Watertown)</title>
		<link>http://feedproxy.google.com/~r/rogue-development/aRwh/~3/CZRdGMZxwsY/</link>
		<comments>http://www.rogue-development.com/blog2/2010/04/scholastic-tomsnyder-hiring-in-boston-area-watertown/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 18:17:12 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=620</guid>
		<description><![CDATA[My employer is hiring like mad.
I&#8217;d post the descriptions here, but that would be rather long, so here&#8217;s the craigslist ads for four of them:
http://boston.craigslist.org/bmw/sof/1704769566.html
http://boston.craigslist.org/bmw/sof/1704765818.html
http://boston.craigslist.org/bmw/sof/1704758792.html
http://boston.craigslist.org/bmw/sof/1704749682.html
Please use the email addresses in those posts, and do not contact me directly.  I simply can not track this volume of requests outside those channels.
]]></description>
			<content:encoded><![CDATA[<p>My employer is hiring like mad.</p>
<p>I&#8217;d post the descriptions here, but that would be rather long, so here&#8217;s the craigslist ads for four of them:</p>
<p><a href="http://boston.craigslist.org/bmw/sof/1704769566.html">http://boston.craigslist.org/bmw/sof/1704769566.html</a><br />
<a href="http://boston.craigslist.org/bmw/sof/1704765818.html">http://boston.craigslist.org/bmw/sof/1704765818.html</a><br />
<a href="http://boston.craigslist.org/bmw/sof/1704758792.html">http://boston.craigslist.org/bmw/sof/1704758792.html</a><br />
<a href="http://boston.craigslist.org/bmw/sof/1704749682.html">http://boston.craigslist.org/bmw/sof/1704749682.html</a></p>
<p>Please use the email addresses in those posts, and do not contact me directly.  I simply can not track this volume of requests outside those channels.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/nBqj6yD8KxhJqLsQi-aKn3P8vXc/0/da"><img src="http://feedads.g.doubleclick.net/~a/nBqj6yD8KxhJqLsQi-aKn3P8vXc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/nBqj6yD8KxhJqLsQi-aKn3P8vXc/1/da"><img src="http://feedads.g.doubleclick.net/~a/nBqj6yD8KxhJqLsQi-aKn3P8vXc/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=CZRdGMZxwsY:VmXGgUGJdXY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=CZRdGMZxwsY:VmXGgUGJdXY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=CZRdGMZxwsY:VmXGgUGJdXY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=CZRdGMZxwsY:VmXGgUGJdXY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=CZRdGMZxwsY:VmXGgUGJdXY:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rogue-development/aRwh/~4/CZRdGMZxwsY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2010/04/scholastic-tomsnyder-hiring-in-boston-area-watertown/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.rogue-development.com/blog2/2010/04/scholastic-tomsnyder-hiring-in-boston-area-watertown/</feedburner:origLink></item>
		<item>
		<title>Alternative “skin” for ObjectHandles</title>
		<link>http://feedproxy.google.com/~r/rogue-development/aRwh/~3/O0UEs6WBsfk/</link>
		<comments>http://www.rogue-development.com/blog2/2010/04/alternative-skin-for-objecthandles/#comments</comments>
		<pubDate>Sat, 03 Apr 2010 18:41:55 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=613</guid>
		<description><![CDATA[Today, I worked a bit on getting an alternative look for ObjectHandles working.  See the blue border in the screen shot?  Clicking the left, right, or bottom edge resizes, and the top bar moves it around.  The corners resize as expected as well.  This is s a decent compromise for when you want to have [...]]]></description>
			<content:encoded><![CDATA[<p>Today, I worked a bit on getting an alternative look for ObjectHandles working.  See the blue border in the screen shot?  Clicking the left, right, or bottom edge resizes, and the top bar moves it around.  The corners resize as expected as well.  This is s a decent compromise for when you want to have text inside a moveable object, and you still want to be able to select the text with the mouse.</p>
<p><img class="aligncenter" title="Alternative skin for OH" src="http://www.rogue-development.com/uploads/pics//ohborders-20100403-133706.png" alt="" width="359" height="329" />Here&#8217;s how I did it.</p>
<p>First, I created some custom handle classes.  I had three other versions, one for the corners,  one for the bottom bar, and one for the vertical ones.  (They probably could have been a single class with a bit of smarts to it)  </p>
<p>Here&#8217;s the one for the top horizontal bar.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;?xml</span> <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span> <span class="re0">encoding</span>=<span class="st0">&quot;utf-8&quot;</span><span class="re2">?&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;s:Group</span> <span class="re0">xmlns:fx</span>=<span class="st0">&quot;http://ns.adobe.com/mxml/2009&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">xmlns:s</span>=<span class="st0">&quot;library://ns.adobe.com/flex/spark&quot;</span> </div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">xmlns:mx</span>=<span class="st0">&quot;library://ns.adobe.com/flex/mx&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">implements</span>=<span class="st0">&quot;com.roguedevelopment.objecthandles.IHandle&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">width</span>=<span class="st0">&quot;{model.width + 8}&quot;</span> <span class="re0">height</span>=<span class="st0">&quot;12&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re2">&gt;</span></span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;fx:Script<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2">&lt;![CDATA[</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; import com.roguedevelopment.objecthandles.HandleDescription;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; import com.roguedevelopment.objecthandles.IHandle;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; import com.roguedevelopment.todoboard.model.BoardObject;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [Bindable] protected var hd:HandleDescription;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [Bindable] protected var model:BoardObject;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public function get handleDescriptor():HandleDescription</span></div>
</li>
<li class="li2">
<div class="de2"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return hd;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public function set handleDescriptor(value:HandleDescription):void</span></div>
</li>
<li class="li2">
<div class="de2"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; hd = value;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public function redraw():void</span></div>
</li>
<li class="li2">
<div class="de2"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; invalidateDisplayList();</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public function get targetModel():Object</span></div>
</li>
<li class="li2">
<div class="de2"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return model;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public function set targetModel(value:Object):void</span></div>
</li>
<li class="li2">
<div class="de2"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; model = value as BoardObject;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sc2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ]]&gt;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/fx:Script<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;fx:Declarations<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="coMULTI">&lt;!&#8211; Place non-visual elements (e.g., services, value objects) here &#8211;&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/fx:Declarations<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;s:Rect</span> <span class="re0">x</span>=<span class="st0">&quot;{-width/2}&quot;</span> <span class="re0">y</span>=<span class="st0">&quot;{-height/2}&quot;</span> <span class="re0">width</span>=<span class="st0">&quot;100%&quot;</span> <span class="re0">height</span>=<span class="st0">&quot;100%&quot;</span> <span class="re0">topLeftRadiusX</span>=<span class="st0">&quot;3&quot;</span> <span class="re0">topLeftRadiusY</span>=<span class="st0">&quot;3&quot;</span> <span class="re0">topRightRadiusX</span>=<span class="st0">&quot;3&quot;</span> <span class="re0">topRightRadiusY</span>=<span class="st0">&quot;3&quot;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;s:fill<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;s:SolidColor</span> <span class="re0">color</span>=<span class="st0">&quot;#0A96CA&quot;</span> <span class="re2">/&gt;</span></span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/s:fill<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;s:stroke<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;s:SolidColorStroke</span> <span class="re0">color</span>=<span class="st0">&quot;#077BA7&quot;</span> <span class="re2">/&gt;</span></span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/s:stroke<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/s:Rect<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/s:Group<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>The big difference between this and the normal handles, is that the size of the handles is dependent on the width/height of the model object, something I hadn&#8217;t tried before.</p>
<p>Next, I created a custom handle configuration to position them around the edges.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">oh = <span class="kw2">new</span> ObjectHandles<span class="br0">&#40;</span> sprite , selectionManager<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">oh.<span class="me1">defaultHandles</span> = <span class="br0">&#91;</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Top border</span></div>
</li>
<li class="li1">
<div class="de1">oh.<span class="me1">defaultHandles</span>.<span class="kw3">push</span><span class="br0">&#40;</span> <span class="kw2">new</span> HandleDescription<span class="br0">&#40;</span> HandleRoles.<span class="me1">MOVE</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">new</span> Point<span class="br0">&#40;</span><span class="nu0">50</span>,<span class="nu0">0</span><span class="br0">&#41;</span> ,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">new</span> Point<span class="br0">&#40;</span><span class="nu0">0</span>,<span class="nu0">-2</span><span class="br0">&#41;</span> , <span class="kw2">new</span> ClassFactory<span class="br0">&#40;</span> TopHorizontalGrabberHandle <span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span>; </div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Bottom border</span></div>
</li>
<li class="li1">
<div class="de1">oh.<span class="me1">defaultHandles</span>.<span class="kw3">push</span><span class="br0">&#40;</span> <span class="kw2">new</span> HandleDescription<span class="br0">&#40;</span> HandleRoles.<span class="me1">RESIZE_DOWN</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">new</span> Point<span class="br0">&#40;</span><span class="nu0">50</span>,<span class="nu0">100</span><span class="br0">&#41;</span> ,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">new</span> Point<span class="br0">&#40;</span><span class="nu0">0</span>,<span class="nu0">2</span><span class="br0">&#41;</span> , <span class="kw2">new</span> ClassFactory<span class="br0">&#40;</span> HorizontalGrabberHandle <span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span>; </div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Left border</span></div>
</li>
<li class="li1">
<div class="de1">oh.<span class="me1">defaultHandles</span>.<span class="kw3">push</span><span class="br0">&#40;</span> <span class="kw2">new</span> HandleDescription<span class="br0">&#40;</span> HandleRoles.<span class="me1">RESIZE_LEFT</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">new</span> Point<span class="br0">&#40;</span><span class="nu0">0</span>,<span class="nu0">50</span><span class="br0">&#41;</span> ,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">new</span> Point<span class="br0">&#40;</span><span class="nu0">-2</span>,<span class="nu0">0</span><span class="br0">&#41;</span> , <span class="kw2">new</span> ClassFactory<span class="br0">&#40;</span> VerticalGrabberHandle <span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Right border</span></div>
</li>
<li class="li1">
<div class="de1">oh.<span class="me1">defaultHandles</span>.<span class="kw3">push</span><span class="br0">&#40;</span> <span class="kw2">new</span> HandleDescription<span class="br0">&#40;</span> HandleRoles.<span class="me1">RESIZE_RIGHT</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">new</span> Point<span class="br0">&#40;</span><span class="nu0">100</span>,<span class="nu0">50</span><span class="br0">&#41;</span> ,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">new</span> Point<span class="br0">&#40;</span><span class="nu0">2</span>,<span class="nu0">0</span><span class="br0">&#41;</span> , <span class="kw2">new</span> ClassFactory<span class="br0">&#40;</span> VerticalGrabberHandle <span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span>; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">oh.<span class="me1">defaultHandles</span>.<span class="kw3">push</span><span class="br0">&#40;</span> <span class="kw2">new</span> HandleDescription<span class="br0">&#40;</span> HandleRoles.<span class="me1">RESIZE_UP</span> + HandleRoles.<span class="me1">RESIZE_LEFT</span>, </div>
</li>
<li class="li1">
<div class="de1">zero ,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">new</span> Point<span class="br0">&#40;</span><span class="nu0">-2</span>,<span class="nu0">-2</span><span class="br0">&#41;</span> ,</div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">new</span> ClassFactory<span class="br0">&#40;</span>CornerGrabberHandle<span class="br0">&#41;</span>&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span> <span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">oh.<span class="me1">defaultHandles</span>.<span class="kw3">push</span><span class="br0">&#40;</span> <span class="kw2">new</span> HandleDescription<span class="br0">&#40;</span> HandleRoles.<span class="me1">RESIZE_UP</span> + HandleRoles.<span class="me1">RESIZE_RIGHT</span>,</div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">new</span> Point<span class="br0">&#40;</span><span class="nu0">100</span>,<span class="nu0">0</span><span class="br0">&#41;</span> ,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">new</span> Point<span class="br0">&#40;</span><span class="nu0">2</span>,<span class="nu0">-2</span><span class="br0">&#41;</span> ,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">new</span> ClassFactory<span class="br0">&#40;</span>CornerGrabberHandle<span class="br0">&#41;</span><span class="br0">&#41;</span>&nbsp; </div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">oh.<span class="me1">defaultHandles</span>.<span class="kw3">push</span><span class="br0">&#40;</span> <span class="kw2">new</span> HandleDescription<span class="br0">&#40;</span> HandleRoles.<span class="me1">RESIZE_DOWN</span> + HandleRoles.<span class="me1">RESIZE_RIGHT</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">new</span> Point<span class="br0">&#40;</span><span class="nu0">100</span>,<span class="nu0">100</span><span class="br0">&#41;</span> , </div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">new</span> Point<span class="br0">&#40;</span><span class="nu0">2</span>,<span class="nu0">2</span><span class="br0">&#41;</span> ,</div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">new</span> ClassFactory<span class="br0">&#40;</span>CornerGrabberHandle<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">oh.<span class="me1">defaultHandles</span>.<span class="kw3">push</span><span class="br0">&#40;</span> <span class="kw2">new</span> HandleDescription<span class="br0">&#40;</span> HandleRoles.<span class="me1">RESIZE_DOWN</span> + HandleRoles.<span class="me1">RESIZE_LEFT</span>,</div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">new</span> Point<span class="br0">&#40;</span><span class="nu0">0</span>,<span class="nu0">100</span><span class="br0">&#41;</span> ,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">new</span> Point<span class="br0">&#40;</span><span class="nu0">-2</span>,<span class="nu0">2</span><span class="br0">&#41;</span> ,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">new</span> ClassFactory<span class="br0">&#40;</span>CornerGrabberHandle<span class="br0">&#41;</span>&nbsp; &nbsp;<span class="br0">&#41;</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">oh.<span class="me1">defaultHandles</span>.<span class="kw3">push</span><span class="br0">&#40;</span> <span class="kw2">new</span> HandleDescription<span class="br0">&#40;</span> HandleRoles.<span class="me1">ROTATE</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">new</span> Point<span class="br0">&#40;</span><span class="nu0">100</span>,<span class="nu0">50</span><span class="br0">&#41;</span> ,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">new</span> Point<span class="br0">&#40;</span><span class="nu0">15</span>,<span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>And unfortunately, at this point I realized the ObjectHandles didn&#8217;t correctly rotate it&#8217;s handles, so everything went wacky when I rotated.  So a bit of tinkering around in the core library and I got that fixed.</p>
<p>End results:</p>
<p><object id="scPlayer" width="661" height="536"><param name="movie" value="http://content.screencast.com/users/jingw/folders/Jing/media/96faa686-8f3b-4019-a4af-2c990cd5600c/jingswfplayer.swf"></param><param name="quality" value="high"></param><param name="bgcolor" value="#FFFFFF"></param><param name="flashVars" value="thumb=http://content.screencast.com/users/jingw/folders/Jing/media/96faa686-8f3b-4019-a4af-2c990cd5600c/FirstFrame.jpg&#038;containerwidth=661&#038;containerheight=536&#038;content=http://content.screencast.com/users/jingw/folders/Jing/media/96faa686-8f3b-4019-a4af-2c990cd5600c/temp_322628508.swf"></param><param name="allowFullScreen" value="true"></param><param name="scale" value="showall"></param><param name="allowScriptAccess" value="always"></param><param name="base" value="http://content.screencast.com/users/jingw/folders/Jing/media/96faa686-8f3b-4019-a4af-2c990cd5600c/"></param>  <embed src="http://content.screencast.com/users/jingw/folders/Jing/media/96faa686-8f3b-4019-a4af-2c990cd5600c/jingswfplayer.swf" quality="high" bgcolor="#FFFFFF" width="661" height="536" type="application/x-shockwave-flash" allowScriptAccess="always" flashVars="thumb=http://content.screencast.com/users/jingw/folders/Jing/media/96faa686-8f3b-4019-a4af-2c990cd5600c/FirstFrame.jpg&#038;containerwidth=661&#038;containerheight=536&#038;content=http://content.screencast.com/users/jingw/folders/Jing/media/96faa686-8f3b-4019-a4af-2c990cd5600c/temp_322628508.swf" allowFullScreen="true" base="http://content.screencast.com/users/jingw/folders/Jing/media/96faa686-8f3b-4019-a4af-2c990cd5600c/" scale="showall"></embed></object></p>
<p>New version of ObjectHandles posted:</p>
<p>http://code.google.com/p/flex-object-handles/downloads/list</p>
<p>Besides the rotating handles change, I&#8217;ve also made the examples build under flex 3 again, and added a submitted patch that allows you to have an isLocked attribute on your model objects.  When set that, you can&#8217;t drag or resize that object.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/Wzh79V13YMsKthL6UtWTd3L9DlM/0/da"><img src="http://feedads.g.doubleclick.net/~a/Wzh79V13YMsKthL6UtWTd3L9DlM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Wzh79V13YMsKthL6UtWTd3L9DlM/1/da"><img src="http://feedads.g.doubleclick.net/~a/Wzh79V13YMsKthL6UtWTd3L9DlM/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=O0UEs6WBsfk:kX3y0ygD9FU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=O0UEs6WBsfk:kX3y0ygD9FU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=O0UEs6WBsfk:kX3y0ygD9FU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=O0UEs6WBsfk:kX3y0ygD9FU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=O0UEs6WBsfk:kX3y0ygD9FU:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rogue-development/aRwh/~4/O0UEs6WBsfk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2010/04/alternative-skin-for-objecthandles/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.rogue-development.com/blog2/2010/04/alternative-skin-for-objecthandles/</feedburner:origLink></item>
		<item>
		<title>Todo-Board.com – another shot at project management</title>
		<link>http://feedproxy.google.com/~r/rogue-development/aRwh/~3/oqLGImvdF_M/</link>
		<comments>http://www.rogue-development.com/blog2/2010/03/todo-board-com-another-shot-at-project-management/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 23:56:33 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=598</guid>
		<description><![CDATA[
I&#8217;m always looking for new ways to manage projects.  Last time I searched high and low for a solution, I ended up writing AgileAgenda after having been disappointed in other offerings.  That&#8217;s a great tool, and I use it all the time.  But it&#8217;s a very specific type of tool for planning a large body [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.todo-board.com/"><img class="alignnone" title="todo title" src="http://www.rogue-development.com/uploads/pics//todotitle-20100323-015445.png" alt="" width="761" height="34" /></a></p>
<p>I&#8217;m always looking for new ways to manage projects.  Last time I searched high and low for a solution, I ended up writing <a href="http://www.agileagenda.com/">AgileAgenda</a> after having been disappointed in other offerings.  That&#8217;s a great tool, and I use it all the time.  But it&#8217;s a very specific type of tool for planning a large body of work before you start.</p>
<p>I&#8217;ve grown to love using task boards at work to help plan and track an immediate set of tasks.  I&#8217;m sure you&#8217;ve seen them before, those white-board like things with sticky notes all over them.</p>
<p><img class="aligncenter" title="Taskboard" src="http://www.rogue-development.com/uploads/pics//taskboard-20100322-234506.png" alt="" width="402" height="280" /></p>
<p>But they have one big problem, the next project I&#8217;m working on will be distributed across a few geographic locations.  That task board is a physical board in one room.  It doesn&#8217;t scale well.</p>
<p>Luckily, in the office, we&#8217;ve got these great interactive whiteboards in a few of the conference rooms.  If you haven&#8217;t seen one of these, they&#8217;re essentially a projector + touch screen.  A software version of a task board combined with that would rock.  So that&#8217;s been my latest pet project.</p>
<p>Lets take a look at why I like the task board.</p>
<ol>
<li>Everyone can understand it.  Engineers, QA, Project Managers, the random executive walking by my office.</li>
<li>It helps to focus work on what&#8217;s most important.</li>
<li>It helps you to chunk out work in manageable sizes.</li>
<li>It&#8217;s a collaborative exercise to make and maintain the board.</li>
<li>It&#8217;s flexible.</li>
</ol>
<p>But as soon as we move from physical to digital, some of the key benefits of the task board go away.</p>
<ol>
<li>Turns from a &#8220;us doing this&#8221; to a person using a computer to do it.  Sure everyone can watch and comment, but giving everyone a stack of stickies, and a marker really adds something.</li>
<li>It&#8217;s not ever-present in a room somewhere.</li>
<li>Software like this can often be tedious to use.</li>
</ol>
<p>Some things that my current physical task board can&#8217;t do that this one should</p>
<ol>
<li>Import things directly from other systems (We use Quality Center to track requirements, I&#8217;d like to hook up AgileAgenda, Basecamp,  Rally, Trac, and whatever other service I can)</li>
<li>Automatically reconfigure the notes based on a series of views.  Sometimes you want to see that 4 column todo, doing, reviewing, done, but sometimes you want to organize by person, or tag, or search.</li>
<li>Get this thing on my phone.  More and more people at work are getting Android powered phones (they outnumber iPhones at least 2 to 1 in the office).  I&#8217;d love to do some android development, so this looks like a prime candidate.</li>
</ol>
<p>Some features I&#8217;m working on to try and keep the best parts of my task board:</p>
<p><strong>#HashTags</strong></p>
<p>One interesting feature I&#8217;m working on is the ability to tag tasks with #hashtags, and those tags can affect the appearance of the task.  You can make up tags on the fly as you type, and later go into the tag definitions and set what the tags should do.  They can apply a few canned effects, change the color of the note, or add an icon.</p>
<div class="wp-caption aligncenter" style="width: 376px"><a href="http://www.rogue-development.com/uploads/pics//tagdefs-20100323-015013.png"><img title="Tagdefs" src="http://www.rogue-development.com/uploads/pics//tagdefs-20100323-015013.png" alt="" width="366" height="304" /></a><p class="wp-caption-text">Click For Full Size</p></div>
<p><strong>@Assignments</strong></p>
<p>Just like #hash tags, you can assign tasks to people on the fly as you type.  You can even make up resources on the fly and later go in and edit the details about them.</p>
<p><strong>Board Views</strong></p>
<p>Looking at your tasks in the columns of &#8220;Todo&#8221;, &#8220;Doing&#8221;, &#8220;Reviewing&#8221;, and &#8220;Done&#8221; is great and what most people want to do a lot of the time.  But wouldn&#8217;t it be nice if you could reconfigure your board at will?  Without losing your current cofiguration?  Board Views do that for you.  You can create a new view, set up a new organizational scheme, and then jump back and forth between your views.  You can even define tags that are specific to a view.  So, for instance, you could swap between a view showing the state of tasks, to a view that shows assignments.</p>
<div class="wp-caption alignnone" style="width: 545px"><a href="http://www.rogue-development.com/uploads/pics//todoboardview1-20100324-193809.png"><img title="view1" src="http://www.rogue-development.com/uploads/pics//todoboardview1-20100324-193809.png" alt="" width="535" height="209" /></a><p class="wp-caption-text">Click for full size.</p></div>
<div class="wp-caption alignnone" style="width: 456px"><a href="http://www.rogue-development.com/uploads/pics//TodoBoardView2-20100324-194127.png"><img title="View 2" src="http://www.rogue-development.com/uploads/pics//TodoBoardView2-20100324-194127.png" alt="" width="446" height="292" /></a><p class="wp-caption-text">Click for full size.</p></div>
<p><strong>Collaboration</strong></p>
<p>While you&#8217;re in a meeting organizing your board, other people in the meeting can be typing in new notes on their laptops or (eventually) on their cell phones.  Those notes then become available for you to drag onto your board, thus bringing the multi-user collaborative experience in.</p>
<p><strong>Ubiquity</strong></p>
<p>I want to make this so it can become ubiquitous in an organization.  Embed the board on your Intranet, throw it on your facebook, email a copy to someone, get reminder emails, set it up in Kiosk mode somewhere, subscribe to the the RSS feed, and follow your board&#8217;s tweets.</p>
<p><strong>Todo-Board.com</strong></p>
<p>And thus <a href="http://www.todo-board.com/">TodoBoard</a> was born.  As of right now the basic tag and view functionality is all working.  Next is fleshing out some of the more auxiliary features, and it should be ready for some early testers.  I should be starting to give out beta accounts within the next two weeks, sign up now to get into that first batch of people.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/Qqp5aRlM_Df8Als35n9gvwF1Fu4/0/da"><img src="http://feedads.g.doubleclick.net/~a/Qqp5aRlM_Df8Als35n9gvwF1Fu4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Qqp5aRlM_Df8Als35n9gvwF1Fu4/1/da"><img src="http://feedads.g.doubleclick.net/~a/Qqp5aRlM_Df8Als35n9gvwF1Fu4/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=oqLGImvdF_M:OM9KeXoSJ2Q:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=oqLGImvdF_M:OM9KeXoSJ2Q:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=oqLGImvdF_M:OM9KeXoSJ2Q:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=oqLGImvdF_M:OM9KeXoSJ2Q:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=oqLGImvdF_M:OM9KeXoSJ2Q:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rogue-development/aRwh/~4/oqLGImvdF_M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2010/03/todo-board-com-another-shot-at-project-management/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.rogue-development.com/blog2/2010/03/todo-board-com-another-shot-at-project-management/</feedburner:origLink></item>
		<item>
		<title>Trying out Mercurial</title>
		<link>http://feedproxy.google.com/~r/rogue-development/aRwh/~3/PWcEMQcHM3E/</link>
		<comments>http://www.rogue-development.com/blog2/2010/03/trying-out-merurial/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 02:51:01 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=596</guid>
		<description><![CDATA[After reading the mercurial guide over at http://hginit.com/ last week, I decided to give it a shot.  The guys who host my version control system offer it as an option, so it was stupid easy for me to get started.
One thing I really like is being able to have a local change history that doesn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>After reading the mercurial guide over at <a href="http://htinit.com/">http://hginit.com/</a> last week, I decided to give it a shot.  <a href="http://www.sourcerepo.com/">The guys</a> who host my version control system offer it as an option, so it was stupid easy for me to get started.</p>
<p>One thing I really like is being able to have a local change history that doesn&#8217;t get pushed up to the server.  I can commit often without worrying about breaking (albeit only theoretical in my case) other people&#8217;s environment.  This way I don&#8217;t accidentally lose any local changes and I can feel free to experiment a little more wildly.</p>
<p>So far, so good.  But this is just a 1-person project, so I&#8217;m not sure how in depth I can get.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/aq3Qdl_4Chb5stQFyfZtJdSiSxg/0/da"><img src="http://feedads.g.doubleclick.net/~a/aq3Qdl_4Chb5stQFyfZtJdSiSxg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/aq3Qdl_4Chb5stQFyfZtJdSiSxg/1/da"><img src="http://feedads.g.doubleclick.net/~a/aq3Qdl_4Chb5stQFyfZtJdSiSxg/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=PWcEMQcHM3E:jHD_UmKGN1w:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=PWcEMQcHM3E:jHD_UmKGN1w:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=PWcEMQcHM3E:jHD_UmKGN1w:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=PWcEMQcHM3E:jHD_UmKGN1w:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=PWcEMQcHM3E:jHD_UmKGN1w:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rogue-development/aRwh/~4/PWcEMQcHM3E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2010/03/trying-out-merurial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.rogue-development.com/blog2/2010/03/trying-out-merurial/</feedburner:origLink></item>
		<item>
		<title>An experiment in funding open source software</title>
		<link>http://feedproxy.google.com/~r/rogue-development/aRwh/~3/ySaCUNmj3kU/</link>
		<comments>http://www.rogue-development.com/blog2/2010/02/an-experiment-in-funding-open-source-software/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 00:26:06 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=589</guid>
		<description><![CDATA[In the past, I&#8217;ve blogged many times about my ObjectHandles library, and today I&#8217;m starting an experiment in generating some revenue for it.
There is now a new web page at http://object-handles-examples.appspot.com/ that has 7 example applications intended as either a training resource, or as a starting point for more complex applications.  I&#8217;m charging a fee [...]]]></description>
			<content:encoded><![CDATA[<p>In the past, I&#8217;ve blogged many times about my <a href="http://www.rogue-development.com/objectHandles.html">ObjectHandles</a> library, and today I&#8217;m starting an experiment in generating some revenue for it.</p>
<p>There is now a new web page at <a href="http://object-handles-examples.appspot.com/ ">http://object-handles-examples.appspot.com/ </a>that has 7 example applications intended as either a training resource, or as a starting point for more complex applications.  I&#8217;m charging a fee for the source code to those examples.  The fee is whatever you decide to pay (with a $15 minimum)</p>
<p>The more revenue that this generates, the more motivation I&#8217;ll have to spend time working on the core library and additional examples.</p>
<p>The core library will continue to remain free and under the MIT license.  It can always be downloaded from <a href="http://code.google.com/p/flex-object-handles/">http://code.google.com/p/flex-object-handles/</a></p>
<p>There were a few reasons for me to do this including:</p>
<ol>
<li>My motivation to work on the library has been very low lately.  I don&#8217;t have any current projects that are using it.</li>
<li>The <a href="http://www.rogue-development.com/contribute.html">donations link</a> that I have has received a total of 3 donations over 2 and a half years.</li>
<li>By working on these examples, I was able to really exercise some of the core functionality.  While doing this I was able to</li>
</ol>
<ul>
<li>Completely revamp the constraints mechanism and implement things like an Aspect Ratio constraint</li>
<li>Find and fix a handful of bugs</li>
<li>Figure out the answers to some questions others have asked that I just didn&#8217;t know the answer to</li>
<li>Make several big performance improvements</li>
</ul>
<p>P.S.  This gave me a chance to create a real site in Python/Django/Google App Engine for the first time, and I&#8217;m impressed.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/JZRYVaAw45rCoJ_WCGNqFtrcZB4/0/da"><img src="http://feedads.g.doubleclick.net/~a/JZRYVaAw45rCoJ_WCGNqFtrcZB4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/JZRYVaAw45rCoJ_WCGNqFtrcZB4/1/da"><img src="http://feedads.g.doubleclick.net/~a/JZRYVaAw45rCoJ_WCGNqFtrcZB4/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=ySaCUNmj3kU:Lj2IfyQpK1o:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=ySaCUNmj3kU:Lj2IfyQpK1o:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=ySaCUNmj3kU:Lj2IfyQpK1o:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=ySaCUNmj3kU:Lj2IfyQpK1o:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=ySaCUNmj3kU:Lj2IfyQpK1o:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rogue-development/aRwh/~4/ySaCUNmj3kU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2010/02/an-experiment-in-funding-open-source-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.rogue-development.com/blog2/2010/02/an-experiment-in-funding-open-source-software/</feedburner:origLink></item>
		<item>
		<title>Just say no to dell</title>
		<link>http://feedproxy.google.com/~r/rogue-development/aRwh/~3/bAwIHO8g9Ek/</link>
		<comments>http://www.rogue-development.com/blog2/2010/02/just-say-no-to-dell/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 19:06:54 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=586</guid>
		<description><![CDATA[I am so frustrated with the buying experience with Dell today that I&#8217;m giving up on them.  Their customer service is useless.  Their promises for delivery are repeatedly broken.  They have crazy restocking fees.

This is for an order placed 1/18, and I have no confidence that it would have actually gotten here on the 25th [...]]]></description>
			<content:encoded><![CDATA[<p>I am so frustrated with the buying experience with Dell today that I&#8217;m giving up on them.  Their customer service is useless.  Their promises for delivery are repeatedly broken.  They have crazy restocking fees.</p>
<p><img class="aligncenter" title="Dell Fail" src="http://www.rogue-development.com/uploads/pics//dell-20100216-140243.png" alt="" width="580" height="629" /></p>
<p>This is for an order placed 1/18, and I have no confidence that it would have actually gotten here on the 25th so I&#8217;m canceling that.  It wouldn&#8217;t be so bad if the people you have to talk to on the phone had some idea about what&#8217;s going on.  Something like &#8220;We just can&#8217;t get that video card&#8221; or &#8220;The wireless adapter is out of stock&#8221;.  I would have modified the order to get it sooner if possible.</p>
<p>But all I got was corporate-speak about how great dell was and how I&#8217;d just have to wait.</p>
<p>I&#8217;m buying a mac mini instead.  At least apple will screw me over with a smile.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/YcX1anp7ecIV-f93ym-zwRM3Vfw/0/da"><img src="http://feedads.g.doubleclick.net/~a/YcX1anp7ecIV-f93ym-zwRM3Vfw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/YcX1anp7ecIV-f93ym-zwRM3Vfw/1/da"><img src="http://feedads.g.doubleclick.net/~a/YcX1anp7ecIV-f93ym-zwRM3Vfw/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=bAwIHO8g9Ek:6Mp8U4EwDho:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=bAwIHO8g9Ek:6Mp8U4EwDho:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=bAwIHO8g9Ek:6Mp8U4EwDho:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=bAwIHO8g9Ek:6Mp8U4EwDho:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=bAwIHO8g9Ek:6Mp8U4EwDho:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rogue-development/aRwh/~4/bAwIHO8g9Ek" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2010/02/just-say-no-to-dell/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.rogue-development.com/blog2/2010/02/just-say-no-to-dell/</feedburner:origLink></item>
		<item>
		<title>SimpleDiagrams – An ObjectHandles usage</title>
		<link>http://feedproxy.google.com/~r/rogue-development/aRwh/~3/ZtIGb3obYyc/</link>
		<comments>http://www.rogue-development.com/blog2/2010/01/simplediagrams-an-objecthandles-usage/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 13:00:11 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=580</guid>
		<description><![CDATA[Daniel McQuillen from www.simplediagrams.com emailed me last week to let me know about their use of ObjectHandles in the SimpleDiagrams product.  It&#8217;s an AIR application that lets you create chalkboard style diagrams in just a couple seconds.  It&#8217;s sort of Visio for people who need to get stuff done instead of diagram all day long.  [...]]]></description>
			<content:encoded><![CDATA[<p>Daniel McQuillen from <a href="http://www.simplediagrams.com/">www.simplediagrams.com</a> emailed me last week to let me know about their use of <a href="http://rogue-development.com/objectHandles.html">ObjectHandles</a> in the SimpleDiagrams product.  It&#8217;s an AIR application that lets you create chalkboard style diagrams in just a couple seconds.  It&#8217;s sort of Visio for people who need to get stuff done instead of diagram all day long.  I gave it a quick 10 minute try, and this might be an app I add to my arsenal of tools.</p>
<p><a href="http://www.rogue-development.com/uploads/pics//SimpleDiagrams-20100103-144448.png"><img class="aligncenter" title="Simple Diagrame" src="http://www.rogue-development.com/uploads/pics//SimpleDiagrams-20100103-144448.png" alt="" width="580" height="392" /></a></p>
<p>Daniel has been kind enough to offer me a small percentage of their sales as a thank-you for the ObjectHandles library.  It&#8217;s MIT Licensed, so he didn&#8217;t have to do that, but I&#8217;d like to send a big thank-you to him for that.  That&#8217;s a great way to support open source projects.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/30K_X61KmIEXTBVegLuOWLdLicE/0/da"><img src="http://feedads.g.doubleclick.net/~a/30K_X61KmIEXTBVegLuOWLdLicE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/30K_X61KmIEXTBVegLuOWLdLicE/1/da"><img src="http://feedads.g.doubleclick.net/~a/30K_X61KmIEXTBVegLuOWLdLicE/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=ZtIGb3obYyc:3uR0fntk8Tk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=ZtIGb3obYyc:3uR0fntk8Tk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=ZtIGb3obYyc:3uR0fntk8Tk:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=ZtIGb3obYyc:3uR0fntk8Tk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=ZtIGb3obYyc:3uR0fntk8Tk:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rogue-development/aRwh/~4/ZtIGb3obYyc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2010/01/simplediagrams-an-objecthandles-usage/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.rogue-development.com/blog2/2010/01/simplediagrams-an-objecthandles-usage/</feedburner:origLink></item>
		<item>
		<title>Why educational software</title>
		<link>http://feedproxy.google.com/~r/rogue-development/aRwh/~3/9n8SJKfxY0U/</link>
		<comments>http://www.rogue-development.com/blog2/2009/12/why-educational-software/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 13:40:55 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=575</guid>
		<description><![CDATA[Here&#8217;s one reason why I&#8217;m in the educational software business.  We&#8217;re pilot-testing one of our new products (called Fraction Nation) at a local school.  The teacher gave all the kids surveys to fill out, there were a lot of great responses.  This response made my day.
Do you enjoy playing Fraction Nation?
I don&#8217;t enjoy playing Fraction [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s one reason why I&#8217;m in the educational software business.  We&#8217;re pilot-testing one of our new products (called <a href="http://www.tomsnyder.com/FractionNation/">Fraction Nation</a>) at a local school.  The teacher gave all the kids surveys to fill out, there were a lot of great responses.  This response made my day.</p>
<blockquote><p><strong>Do you enjoy playing Fraction Nation?</strong></p>
<p><em>I don&#8217;t enjoy playing Fraction Nation.  I Love it!  Very Inspiring!  You guys probably change my life and others!  Wonderful Job!</em></p></blockquote>
<p><em><span style="font-style: normal;">Or this one from another kid&#8230;</span></em></p>
<blockquote><p><em><span style="font-style: normal;"><strong>If you could change something about the program, what would you change?</strong></span></em></p>
<p><em>The thing I would change would be nothing &#8217;cause I really liked it!</em></p></blockquote>
<p>Another kid, same question:</p>
<blockquote><p><em>If I were to change something, I would change the background.</em></p></blockquote>
<p>Oddly enough, several kids said the background thing.  I say if the background is the biggest thing they want to change, that&#8217;s a big win.</p>
<p>Universally in that class, the feedback was overwhelmingly positive.  Making a product that teaches fractions that kids like isn&#8217;t very easy to do, but I think we might have nailed this one.</p>
<p>And here&#8217;s a doodle one of them made on the back of a survey for us.<br />
<img class="aligncenter" title="Doodle" src="http://lh3.ggpht.com/_sS4GupYFBI4/Syoz-PA8pHI/AAAAAAAAC7Q/69YKzHfGiD8/s288/2009-12-17%2008.35.44.jpg" alt="" width="288" height="215" /></p>
<p>The thing that really scares me is almost every one of these kids has better handwriting than I do now.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/U9QkSxNjCPDodL09Azb1vnZ4pSg/0/da"><img src="http://feedads.g.doubleclick.net/~a/U9QkSxNjCPDodL09Azb1vnZ4pSg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/U9QkSxNjCPDodL09Azb1vnZ4pSg/1/da"><img src="http://feedads.g.doubleclick.net/~a/U9QkSxNjCPDodL09Azb1vnZ4pSg/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=9n8SJKfxY0U:BagtrPGL_cg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=9n8SJKfxY0U:BagtrPGL_cg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=9n8SJKfxY0U:BagtrPGL_cg:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=9n8SJKfxY0U:BagtrPGL_cg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=9n8SJKfxY0U:BagtrPGL_cg:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rogue-development/aRwh/~4/9n8SJKfxY0U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2009/12/why-educational-software/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.rogue-development.com/blog2/2009/12/why-educational-software/</feedburner:origLink></item>
		<item>
		<title>ObjectHandles – Multiple Selection and Decorators</title>
		<link>http://feedproxy.google.com/~r/rogue-development/aRwh/~3/qtgS0-vnzRo/</link>
		<comments>http://www.rogue-development.com/blog2/2009/12/objecthandles-multiple-selection-and-decorators/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 02:24:25 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=568</guid>
		<description><![CDATA[I&#8217;ve been playing around with a few things in ObjectHandles today.  The first is multiple-selection.  Last week Vlad Janvarev sent me a patch that got it working for non-rotated objects.  I put that in, and spent most of my day today figuring out how to extend it to rotated objects as well [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been playing around with a few things in ObjectHandles today.  The first is multiple-selection.  Last week Vlad Janvarev sent me a patch that got it working for non-rotated objects.  I put that in, and spent most of my day today figuring out how to extend it to rotated objects as well (dealing with 3 coordinate spaces at once makes my head hurt!).   To try it, press the shift key and select multiple objects on the screen, then you can move, rotate or resize them as a whole.<br />
[kml_flashembed fversion="10.0.0" movie="http://rogue-development.com/uploads/ohv2/ObjectHandles2Example.swf" targetclass="flashmovie" publishmethod="static" width="720" height="600" fvars="undefined"]<a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
<p>[/kml_flashembed]<br />
View-Source is enabled in it.</p>
<p>It&#8217;s not working 100%, and I&#8217;m not sure why.  If anyone has any ideas, let me know.  The broken part is if you rotate 2 objects, then select them both, then resize them really small.  At some point they sometimes start getting bigger instead of smaller depending on the rotation.  I&#8217;m baffled.</p>
<p>The second thing I played with is the idea of &#8220;Decorators&#8221; that can draw interesting info based on the state of the set of objects either being moved or currently selected.  There&#8217;s a quick screenshot of a sample one I did below.</p>
<p>This is also in the link above under &#8220;Example 8&#8243;.  This is just a proof of concept for now.  If you want to try it, do it before trying the multi-select since the multi-select can leave objects on fractional pixel boundries which won&#8217;t line up perfectly.</p>
<p><img class="aligncenter" title="decorators" src="http://www.rogue-development.com/uploads/pics//decorators-20091206-210058.png" alt="" width="409" height="305" /></p>
<p>Neither of these is ready for prime-time yet.  The multi-select stuff is creating tons and tons of temporary objects so the GC kicks in periodically freezing the interface.  That&#8217;ll need a little optimization.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/tlD67Hji8nbjO7ka4OGQrKz2hb0/0/da"><img src="http://feedads.g.doubleclick.net/~a/tlD67Hji8nbjO7ka4OGQrKz2hb0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/tlD67Hji8nbjO7ka4OGQrKz2hb0/1/da"><img src="http://feedads.g.doubleclick.net/~a/tlD67Hji8nbjO7ka4OGQrKz2hb0/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=qtgS0-vnzRo:YTO_E4hY9ig:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=qtgS0-vnzRo:YTO_E4hY9ig:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=qtgS0-vnzRo:YTO_E4hY9ig:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=qtgS0-vnzRo:YTO_E4hY9ig:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=qtgS0-vnzRo:YTO_E4hY9ig:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rogue-development/aRwh/~4/qtgS0-vnzRo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2009/12/objecthandles-multiple-selection-and-decorators/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://www.rogue-development.com/blog2/2009/12/objecthandles-multiple-selection-and-decorators/</feedburner:origLink></item>
		<item>
		<title>ObjectHandles Version 2, first release</title>
		<link>http://feedproxy.google.com/~r/rogue-development/aRwh/~3/ryEOlCq2jS0/</link>
		<comments>http://www.rogue-development.com/blog2/2009/11/objecthandles-version-2-first-release/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 02:46:52 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=565</guid>
		<description><![CDATA[For the ObjectHandles fans out there, I&#8217;ve just submitted changes that let ObjectHandles 2 play nicely with FlashBuilder4 / Flex 4 SDK.  While doing that I fixed a couple bugs, and set up a build environment so I can easily publish OH2 releases onto the google code page.  So now you can download [...]]]></description>
			<content:encoded><![CDATA[<p>For the ObjectHandles fans out there, I&#8217;ve just submitted changes that let ObjectHandles 2 play nicely with FlashBuilder4 / Flex 4 SDK.  While doing that I fixed a couple bugs, and set up a build environment so I can easily publish OH2 releases onto the google code page.  So now you can download OH2 from the downloads section of the google code page.  (Previously, you could only get it from subversion)  That package contains source, documentation, and precompiled swcs for both Flex 3 and Flex 4.<br />
<a href="http://code.google.com/p/flex-object-handles/downloads/list"></p>
<p>http://code.google.com/p/flex-object-handles/downloads/list</a></p>
<p>I hope to write some better documentation on how to use this new release soon.  If you&#8217;ve been using ObjectHandles Version 1, it&#8217;s not a straightforward port to the new stuff.  There are drastic changes to how it all works.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/uKLo4Cl2uHx9yZVTppKR3C-pVMk/0/da"><img src="http://feedads.g.doubleclick.net/~a/uKLo4Cl2uHx9yZVTppKR3C-pVMk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/uKLo4Cl2uHx9yZVTppKR3C-pVMk/1/da"><img src="http://feedads.g.doubleclick.net/~a/uKLo4Cl2uHx9yZVTppKR3C-pVMk/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=ryEOlCq2jS0:tM9vbWvttDw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=ryEOlCq2jS0:tM9vbWvttDw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=ryEOlCq2jS0:tM9vbWvttDw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=ryEOlCq2jS0:tM9vbWvttDw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=ryEOlCq2jS0:tM9vbWvttDw:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rogue-development/aRwh/~4/ryEOlCq2jS0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2009/11/objecthandles-version-2-first-release/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.rogue-development.com/blog2/2009/11/objecthandles-version-2-first-release/</feedburner:origLink></item>
		<item>
		<title>Flash Builder Beta2, Catalyst, asset organization, FXP-&gt;SWC</title>
		<link>http://feedproxy.google.com/~r/rogue-development/aRwh/~3/bTZYe-QfByk/</link>
		<comments>http://www.rogue-development.com/blog2/2009/11/flash-builder-beta2-catalyst-asset-organization-fxp-swc/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 17:38:35 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=557</guid>
		<description><![CDATA[Today, I&#8217;ve been experimenting with project structure and workflows.  I&#8217;ve got two major problems I want to solve.
Problem #1
When working in Flex Builder, if you have a lot of non-embedded assets, it can go really slow.  At seemingly random times Eclipse will decide it needs to delete all of your output files and re-copy them.  [...]]]></description>
			<content:encoded><![CDATA[<p>Today, I&#8217;ve been experimenting with project structure and workflows.  I&#8217;ve got two major problems I want to solve.</p>
<p><strong>Problem #1</strong></p>
<p>When working in Flex Builder, if you have a lot of non-embedded assets, it can go really slow.  At seemingly random times Eclipse will decide it needs to delete all of your output files and re-copy them.  For our current project, that can take 10 minutes.  We have yet to figure out what triggers this behavior.</p>
<p><strong>Problem #2</strong></p>
<p>When working in Flex builder, if you have a lot of embedded assets, it can go really slow.  Especially on clean builds, or builds that touch a lot of modules.  This is an every-compile type thing, but is far less severe than problem #1.</p>
<p><strong><img class="alignright" title="example dir 1" src="http://www.rogue-development.com/uploads/pics//exampleDirectory2-20091125-122032.png" alt="" width="282" height="342" />Solution for Problem #1</strong></p>
<p>Don&#8217;t let Eclipse do the copying for you.  Put your assets outside of your source tree, and turn off &#8220;Copy non-embedded assets&#8221;.  To the right is an example directory structure.  There are a few differences than most Flex/Flash builder projects.</p>
<ol>
<li>My assets folder is a sibling of my src folder, instead of inside it.</li>
<li>My compiler is set to output to assets/bin-debug instead of just bin-debug</li>
</ol>
<p>In your source, you&#8217;ll have to link to your assets a little bit differently.  Here&#8217;s an example from my TestProject.mxml that shows both an embedded and a runtime loaded asset.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;?xml</span> <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span> <span class="re0">encoding</span>=<span class="st0">&quot;utf-8&quot;</span><span class="re2">?&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;s:Application</span> <span class="re0">xmlns:fx</span>=<span class="st0">&quot;http://ns.adobe.com/mxml/2009&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">xmlns:s</span>=<span class="st0">&quot;library://ns.adobe.com/flex/spark&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">xmlns:mx</span>=<span class="st0">&quot;library://ns.adobe.com/flex/halo&quot;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">minWidth</span>=<span class="st0">&quot;1024&quot;</span> <span class="re0">minHeight</span>=<span class="st0">&quot;768&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">&lt;s:layout<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;s:VerticalLayout</span> <span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/s:layout<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;mx:Image</span> <span class="re0">source</span>=<span class="st0">&quot;@Embed(&#8216;../assets/art/Image1.png&#8217;)&quot;</span> <span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;mx:Image</span> <span class="re0">source</span>=<span class="st0">&quot;../art/Image2.png&quot;</span> <span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/s:Application<span class="re2">&gt;</span></span></span></div>
</li>
</ol>
</div>
<p>Since the embed is relative to the source folder, we need to use paths in the form of ../assets/art/*</p>
<p>The runtime loaded assets are relative to the final compiled location, so those take the form ../art/*</p>
<p>Now, eclipse will never try to manage your assets.  This appears to completely solve problem #1.</p>
<p><strong>Solution for Problem #2</strong></p>
<p>A while back I blogged about turning a Flash Catalyst project into a .swc.  (<a href="http://www.rogue-development.com/blog2/2009/06/compiling-fxp-swc-a-catalyst-workflow/">Read that here</a>)</p>
<p>I dusted off my script and tried it with the Beta-2 of Flash Builder and Catalyst.  And low-and-behold it worked without any changes.  The only thing I had to do was reset my FLEX_HOME environment variable to the new location.</p>
<p>So, if we were to move away from a model where we embed assets from designers into Flash Builder, and to a model where the Designer puts those assets into Catalyst, and then we run a script to compile the catalyst project into a .swc, I think that would completely solve problem #2.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/ShBF8NtzTQ3oepVhJqdsglSKHmo/0/da"><img src="http://feedads.g.doubleclick.net/~a/ShBF8NtzTQ3oepVhJqdsglSKHmo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ShBF8NtzTQ3oepVhJqdsglSKHmo/1/da"><img src="http://feedads.g.doubleclick.net/~a/ShBF8NtzTQ3oepVhJqdsglSKHmo/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=bTZYe-QfByk:ceFnuFUfVx0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=bTZYe-QfByk:ceFnuFUfVx0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=bTZYe-QfByk:ceFnuFUfVx0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=bTZYe-QfByk:ceFnuFUfVx0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=bTZYe-QfByk:ceFnuFUfVx0:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rogue-development/aRwh/~4/bTZYe-QfByk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2009/11/flash-builder-beta2-catalyst-asset-organization-fxp-swc/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.rogue-development.com/blog2/2009/11/flash-builder-beta2-catalyst-asset-organization-fxp-swc/</feedburner:origLink></item>
		<item>
		<title>One week with Droid – my impressions</title>
		<link>http://feedproxy.google.com/~r/rogue-development/aRwh/~3/_j4glU6FF0U/</link>
		<comments>http://www.rogue-development.com/blog2/2009/11/one-week-with-droid-my-impressions/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 18:55:48 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=551</guid>
		<description><![CDATA[So it&#8217;s been a week since I got my Verizon Droid.  How&#8217;s it been?
I had been using one of the G1 phones on TMobile&#8217;s network.  It was running Android 1.6, the new Droid is running Android 2.0.  Let&#8217;s compare Droid to that first.
Let me start by saying, they&#8217;re not all that dissimilar.  The one plus [...]]]></description>
			<content:encoded><![CDATA[<p>So it&#8217;s been a week since I got my Verizon Droid.  How&#8217;s it been?</p>
<p>I had been using one of the G1 phones on TMobile&#8217;s network.  It was running Android 1.6, the new Droid is running Android 2.0.  Let&#8217;s compare Droid to that first.</p>
<p>Let me start by saying, they&#8217;re not all that dissimilar.  The one plus the G1 had was the keyboard was easier to use.  It actually had separate physical buttons whereas the Droid has them all on a single etched piece of rubbery plastic.  The droid is faster, has more memory and storage, and looks better &#8211; all by a lot.  Holding the phone if feels like it&#8217;s engineered and manufactured well.  Holding the G1, it kind of felt like a toy.</p>
<p>I haven&#8217;t had any problems finding or running any apps.  All the ones I&#8217;ve tried have been great.</p>
<p>The new Google Maps with navigation is amazing.  Better than my Garmin stand alone GPS unit.  It&#8217;s got &#8220;layers&#8221; now that can overlay all kinds of things.  Some of my favorites include traffic and Wikipedia.  The Wikipedia layer shows all of the Wikipedia references on a map.  When looking around my home, there&#8217;s maybe a dozen points listed.  I&#8217;m hoping a Geocaching app takes advantage of that layer functionality soon.</p>
<p>The battery life seems good.  I used the navigation app for an hour and a half on my commute to work one day.  That includes the screen being on the entier time, GPS updates contantly, and lots of network traffic.  As well as the speaker telling me the directions and a traffic overlay showing me where the road would slow down.  At work, I left all of the services (bluetooth, wifi, gps) all day long.  I consciously tried to use it as much as possible.  At the end of the day there was still 15% battery life left.  Normally, I plug it in while driving, but it&#8217;s nice to know I dont have to.</p>
<p>So, if those things were the only differences from my old phone to this one, the $200 TMobile cancellation penalty, plus the $200 new phone cost might not have been worth it.  But there was one major other difference.  The network.  Verizon is amazing compared to TMobile.  I&#8217;ve used the same speed-testing app on both phones in a variety of situations.  The fastest speed I ever saw with TMobile was around 300kbs.  When I was at my house, it never went over 5kbs, usually in the 1-2 range.  With Verizon, the <em>slowest</em> I&#8217;ve seen is around 300kbs.  At my house, I average 500kbs.  That over a 25000% increase.  When in the office at work, it wasn&#8217;t worth even trying to get a data signal with TMobile.  With verizon, it works perfectly.  This is the biggest single selling point of the entire experience for me and I&#8217;m am a very happy customer.  This speed changed the way I use my phone from the G1 tot he Droid as much as the G1 changed the way I use a phone from a dumb-phone to a smart phone.</p>
<p>Cost-wise the monthly plans between TMobile and Verizon are about the same.  I do get a 17% discount because my company has a contract with Verizon so your price may varry.</p>
<p>I heard a great Droid radio ad today.  This one below is similar, but the Radio one was better.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/i5xWIjJTjds&amp;hl=en_US&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube.com/v/i5xWIjJTjds&amp;hl=en_US&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>

<p><a href="http://feedads.g.doubleclick.net/~a/bwQiwk-tGJUkS0u8ZJsKrduex8w/0/da"><img src="http://feedads.g.doubleclick.net/~a/bwQiwk-tGJUkS0u8ZJsKrduex8w/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/bwQiwk-tGJUkS0u8ZJsKrduex8w/1/da"><img src="http://feedads.g.doubleclick.net/~a/bwQiwk-tGJUkS0u8ZJsKrduex8w/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=_j4glU6FF0U:MROJlk36p1I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=_j4glU6FF0U:MROJlk36p1I:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=_j4glU6FF0U:MROJlk36p1I:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=_j4glU6FF0U:MROJlk36p1I:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=_j4glU6FF0U:MROJlk36p1I:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rogue-development/aRwh/~4/_j4glU6FF0U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2009/11/one-week-with-droid-my-impressions/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.rogue-development.com/blog2/2009/11/one-week-with-droid-my-impressions/</feedburner:origLink></item>
		<item>
		<title>Scheduling meetings</title>
		<link>http://feedproxy.google.com/~r/rogue-development/aRwh/~3/klTdzxDfhd4/</link>
		<comments>http://www.rogue-development.com/blog2/2009/11/scheduling-meetings/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 18:41:56 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Schedule]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=541</guid>
		<description><![CDATA[Scheduling meetings through outlook might be one of the worst practices I need to deal with on a daily basis.  It saves us a ton of time in the meeting-planning department but has huge drawbacks.
Problem number one, it&#8217;s WAY too easy to schedule a meeting with someone.  Since the bar is lower, more meetings happen. [...]]]></description>
			<content:encoded><![CDATA[<p>Scheduling meetings through outlook might be one of the worst practices I need to deal with on a daily basis.  It saves us a ton of time in the meeting-planning department but has huge drawbacks.</p>
<p><strong>Problem number one</strong>, it&#8217;s WAY too easy to schedule a meeting with someone.  Since the bar is lower, more meetings happen.  Since there&#8217;s more meetings, they&#8217;re often individually less valuable.  Since they&#8217;re less valuable people don&#8217;t treat them with the respect they deserve.  Nobody prepares beforehand.  Meeting agendas are the exception, not the rule.</p>
<p><strong>Secondly</strong>, it&#8217;s not an efficient way to schedule a meeting.  Wait, let me revise that slightly.  It&#8217;s not an efficient way to schedule a <em>set </em>of meetings.  The normal process that is often used is to put everyone on an invitation.  Find a block of time everyone is available.  Book it.  Later, that process is repeated for the next meeting.  Even later it&#8217;s repeated again.  Since different people go to different meetings, individual schedules get &#8220;fragmented&#8221;.  Back in the days of personal assistants (or back then I guess the term was &#8220;secretaries&#8221;), they would handle the process of defragmenting schedules to make them make more sense.  This leads to situations when individuals have an hour meeting, an hour to work, an hour meeting, an hour to work, etc.  Without bigger blocks of time to work it&#8217;s impossible to tackle certain problems.  Even worse, a high priority meeting might get pushed back because other meetings were scheduled earlier.</p>
<p>Combine those two problems, and it actually gets hard to book a meeting.  Since there are a lot of them.  And since there is fragmentation in people&#8217;s schedules, finding an open block that everyone can join can be really hard to do.  This means scheduling happens further and further out.  If you need to talk about something with 10 people and the only time slot to get them all in a room is a week away, that sucks.</p>
<p>A side-effect of this is that when you receive a meeting request, you often really feel obligated to accept it.  Especially if the sender knows you have a free block of time.  That means you&#8217;re not asking yourself  &#8221;Is me attending this meeting the best way for me to spend my time to advance/improve/help the organization?&#8221;  I think we should be asking that question all the time!</p>
<p><strong>How to define an ideal solution?</strong></p>
<p>If we&#8217;re going to explore other options, it&#8217;d be helpful to have some evaluation criteria.  Here&#8217;s what I would look for in a meeting scheduling system (in my order of priority).</p>
<ol>
<li>Ability to schedule meetings without conflicts.  (including resource and people conflicts)</li>
<li>Schedule more important meetings sooner than less important ones.</li>
<li>Minimize the number of chunks of free time each user has.  (In other words, maximize the average length of non-meeting time)  This one is really important for knowledge-workers.</li>
<li>Encourage productive meetings.   (Clear purpose, set agenda, everyone comes prepared &#8230; )</li>
</ol>
<p>What other properties might an ideal solution have?</p>
<p><strong>So what&#8217;s one solution?</strong></p>
<p>First, here&#8217;s a <em>technical </em>solution.</p>
<p>The first problem of meetings being too easy to schedule is tough.  It really requires training people to act differently.  Without designing a technical solution that somehow discourages meetings, I&#8217;m not sure what to do about that.</p>
<p>The second problem could have a technical solution.  Imagine a &#8220;smart&#8221; scheduling system.  You need to schedule a meeting?  Submit the details of the meeting to some computer system.  Tell it</p>
<ol>
<li>Who needs to attend</li>
<li>Any time constraints that must be upheld.</li>
<li>What resources do you need.</li>
<li>How important is it?</li>
</ol>
<p>But the important thing is that you <strong>don&#8217;t </strong>specify when it happens.  (There may be time-constraints for some meetings that do dictate a time.  Like if a client is arriving, it has to happen in a given time slot.  Or if there is a release planned for thursday, the release planning meeting must happen before thursday.)</p>
<p>Then the system is free to schedule that meeting whenever is &#8220;best&#8221; by some smart criteria.  It tries to maximize individual people&#8217;s free time blocks.  It tries to schedule more important meetings sooner.  It moves existing meetings when new ones are scheduled so there&#8217;s always an optimal solution planned.</p>
<p>The downside?  Meetings move.  It&#8217;s hard to plan ahead.  Someone needs to develop a complex scheduling system.  The time that meetings happen becomes &#8220;voodoo magic&#8221; to some people.  It&#8217;s possible to game the system.  It&#8217;s not flexible.</p>
<p><strong>Solution #2</strong></p>
<p>Now, here&#8217;s an <em>organizational </em>solution that I want to try out here at TSP.</p>
<p>1) Meetings that HAVE to happen at a certain date/time are scheduled as normal.  Got outsiders coming in?  Meeting to watch the pat&#8217;s game?  Go ahead and schedule those as before through outlook.  Hopefully that&#8217;s the minority of meetings for you.  (If you&#8217;re the guy meeting with outside clients all day long, you&#8217;re pretty much screwed any way you look at it.)  A certain class of exceptional or emergency-meeting falls in here too.</p>
<p>2) Got a meeting that doesn&#8217;t HAVE to happen at a certain date/time?  You&#8217;re not allowed to just schedule that through outlook.  Instead, at your daily scrum we schedule those as a group.  With one more constraint.  You only schedule meetings for <strong>tomorrow</strong>.  It&#8217;s either important enough to schedule for tomorrow, or it isn&#8217;t.  That&#8217;s a much easier, concrete decision to make than scheduling a meeting next-week.  Some meetings lower on the priority list might not fit.  That&#8217;s fine, try to get them on the list again tomorrow.</p>
<p><em>To actually create this schedule, you&#8217;re likely looking at outlook as a group.</em></p>
<p>Benefits:</p>
<ol>
<li>You can intelligently schedule meetings.  Since you&#8217;re only looking at a day at a time and you&#8217;re considering all the meetings together it&#8217;s easy.</li>
<li>You get to decide which meetings are more important than others.</li>
<li>You get to weigh the benefits of a meeting against non-meeting things.  It&#8217;s easy to schedule a meeting a week in advance for a trivial matter.  It&#8217;s really hard to schedule that meeting *tomorrow* if there&#8217;s more important things to do.</li>
<li>It makes people think about meetings and whether or not they have to happen.</li>
<li>Since a meeting you&#8217;re invited to is only ever a day away, it&#8217;s more on your mind and you might prepare for it instead of being surprised by an outlook reminder.</li>
</ol>
<p>Down sides:</p>
<ol>
<li>Boy does this require a lot of buy-in from everyone involved.</li>
<li>Participants have limited time to prepare (The person calling the meeting has as much time as they need to prepare since they could just wait another day if needed)</li>
<li>Since your group is scheduling a day in advance, it can be hard to get ahold of resources that other groups might be scheduling weeks in advance.  There&#8217;s likely solutions to that, but I&#8217;ll stay away from them for now.</li>
</ol>
<p>I&#8217;d only consider using this for larger (4+ people) meetings.  Still feel free to have impromptu talks whenever they&#8217;re needed.  Still feel free to try an resolve issues at the scrum, or by sticking around after your scrum.  In fact it might encourage a quick post-scrum discussion instead of a meeting.</p>
<p><em>Side-Note:</em> I heard a rumor that Warren Buffet only schedules meetings a day in advance.  I have no idea if if is true or not.  But that&#8217;s where I got the idea from.</p>
<p><strong>Caveats</strong></p>
<p>Replace &#8220;Outlook&#8221; with any other &#8220;dumb&#8221; scheduling solution out there.  Lotus Notes?  Google Calendar?  Whatever.</p>
<p>Don&#8217;t complain that I call it outlook and not Exchange or whatever the entire-system should be called.</p>
<p>My solution assumes you have a short daily meeting.  It would suck to have to introduce that if you don&#8217;t.</p>
<p><strong>What else?</strong></p>
<p>There has to be better solutions to this.  What do you do?</p>

<p><a href="http://feedads.g.doubleclick.net/~a/DHYyhllMw8PpkugpaysvH3QIJW4/0/da"><img src="http://feedads.g.doubleclick.net/~a/DHYyhllMw8PpkugpaysvH3QIJW4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/DHYyhllMw8PpkugpaysvH3QIJW4/1/da"><img src="http://feedads.g.doubleclick.net/~a/DHYyhllMw8PpkugpaysvH3QIJW4/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=klTdzxDfhd4:txzYSxmmQyY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=klTdzxDfhd4:txzYSxmmQyY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=klTdzxDfhd4:txzYSxmmQyY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/rogue-development/aRwh?a=klTdzxDfhd4:txzYSxmmQyY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/rogue-development/aRwh?i=klTdzxDfhd4:txzYSxmmQyY:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rogue-development/aRwh/~4/klTdzxDfhd4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2009/11/scheduling-meetings/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.rogue-development.com/blog2/2009/11/scheduling-meetings/</feedburner:origLink></item>
	</channel>
</rss>
