<br />
<b>Warning</b>:  include() [<a href='function.include'>function.include</a>]: Unable to access /var/www/html/rogue-development/blog2/wp-content/advanced-cache.php in <b>/var/www/html/rogue-development/blog2/wp-settings.php</b> on line <b>62</b><br />
<br />
<b>Warning</b>:  include(/var/www/html/rogue-development/blog2/wp-content/advanced-cache.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory in <b>/var/www/html/rogue-development/blog2/wp-settings.php</b> on line <b>62</b><br />
<br />
<b>Warning</b>:  include() [<a href='function.include'>function.include</a>]: Failed opening '/var/www/html/rogue-development/blog2/wp-content/advanced-cache.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in <b>/var/www/html/rogue-development/blog2/wp-settings.php</b> on line <b>62</b><br />
<br />
<b>Notice</b>:  add_option was called with an argument that is <strong>deprecated</strong> since version 2.3 with no alternative available. in <b>/var/www/html/rogue-development/blog2/wp-includes/functions.php</b> on line <b>3468</b><br />
<br />
<b>Notice</b>:  register_sidebar_widget is <strong>deprecated</strong> since version 2.8! Use wp_register_sidebar_widget() instead. in <b>/var/www/html/rogue-development/blog2/wp-includes/functions.php</b> on line <b>3382</b><br />
<br />
<b>Notice</b>:  register_widget_control is <strong>deprecated</strong> since version 2.8! Use wp_register_widget_control() instead. in <b>/var/www/html/rogue-development/blog2/wp-includes/functions.php</b> on line <b>3382</b><br />
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Marc's Musings &#187; Uncategorized</title>
	<atom:link href="http://www.rogue-development.com/blog2/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rogue-development.com/blog2</link>
	<description>Comments and thoughts on technology from Marc Hughes</description>
	<lastBuildDate>Tue, 29 Mar 2011 00:04:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Technology Nomad</title>
		<link>http://www.rogue-development.com/blog2/2011/03/technology-nomad/</link>
		<comments>http://www.rogue-development.com/blog2/2011/03/technology-nomad/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 00:04:00 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=655</guid>
		<description><![CDATA[The scrum tool I&#8217;ve been working on for a few months is seeing some real user growth. One thing I find a little weird is jumping between the user communities Earlier in my career, when I was doing c++ development, that was it.  During my Java days, that&#8217;s what I coded day in and day [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.scrumdo.com/">scrum tool</a> I&#8217;ve been working on for a few months is seeing some real user growth.</p>
<p>One thing I find a little weird is jumping between the user communities</p>
<p>Earlier in my career, when I was doing c++ development, that was it.  During my Java days, that&#8217;s what I coded day in and day out.  Flash/Flex, same thing.  Sure, I&#8217;ve always dabbled in various technologies.  Some scripting (perl, ruby), maybe play with the latest hotness (an iphone app).  But I only ever felt like I was part of one developer community at a time.</p>
<p>But now, I find myself switching between the Flash/Flex world in my dayjob, and the Python communities in my extra-curricular.  And they&#8217;re vastly different.  The flash world tends to be heavily design focused on one side and real enterprisey-development on the flex side with new frameworks, patterns, and methods of development popping up all the time.  The python communities feel more pragmatic.  Getting things done quickly and efficiently.  Each new framework that comes out tries to be leaner and smaller, yet more expressive than the last.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2011/03/technology-nomad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instant gratification of GitHub and AppEngine</title>
		<link>http://www.rogue-development.com/blog2/2011/01/instant-gratification-of-github-and-appengine/</link>
		<comments>http://www.rogue-development.com/blog2/2011/01/instant-gratification-of-github-and-appengine/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 15:05:30 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=653</guid>
		<description><![CDATA[So, I&#8217;ve been testing a web callback by using postbin &#8211; http://www.postbin.org/ &#8211; a pretty great service exactly for this sort of thing. But I found that I&#8217;d really like to be able to replay those requests on a server running locally.  A quick look behind the scenes at postbin, and it&#8217;s open source on [...]]]></description>
			<content:encoded><![CDATA[<p>So, I&#8217;ve been testing a web callback by using postbin &#8211; <a href="http://www.postbin.org/">http://www.postbin.org/</a> &#8211; a pretty great service exactly for this sort of thing.</p>
<p>But I found that I&#8217;d really like to be able to replay those requests on a server running locally.  A quick look behind the scenes at postbin, and it&#8217;s <a href="https://github.com/progrium/postbin">open source on GitHub</a>, and runs on google app engine.</p>
<p>So I <a href="https://github.com/marc-hughes/postbin">forked a copy</a>, made my changes, and uploaded <a href="http://postbin-marc.appspot.com/">a new version</a> to my own google app engine account so I could use it right away.</p>
<p>I also sent a pull request to Jeff Lindsay, the developer on Postbin so he could incorporate the changes on the main site.</p>
<p>None of that is particularly amazing.  But the fact that I did it in less than a half hour is!</p>
<p>Distributed VCS, running apps in the cloud, I hope this is the future of software development.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2011/01/instant-gratification-of-github-and-appengine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ScrumDo &#8211; new release and open source!</title>
		<link>http://www.rogue-development.com/blog2/2011/01/scrumdo-new-release-and-open-source/</link>
		<comments>http://www.rogue-development.com/blog2/2011/01/scrumdo-new-release-and-open-source/#comments</comments>
		<pubDate>Wed, 19 Jan 2011 00:55:15 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=650</guid>
		<description><![CDATA[The other day over at ScrumDo we pushed a pretty major release that included a lot of new functionality and usability improvements. I&#8217;m especially proud of a the predictions tool and the excel import/export functionality.  You can export an iteration, work on it in excel, and then import your changes back in. But perhaps even [...]]]></description>
			<content:encoded><![CDATA[<p>The other day over at <a href="http://www.scrumdo.com/">ScrumDo</a> we pushed a pretty major release that included a lot of new functionality and usability improvements. I&#8217;m especially proud of a the <a href="http://scrumdo.com/site_media/static/images/tour/predictions.png">predictions tool</a> and the excel import/export functionality.  You can export an iteration, work on it in excel, and then import your changes back in.</p>
<p>But perhaps even more important, we are officially <a href="http://www.scrumdo.org/">open source</a> now.  If you&#8217;re a Django developer, and you use Scrum, consider pitching in some help.  We&#8217;ve got a <a href="https://github.com/ScrumDo-Dev-Group/ScrumDo/wiki/Help-Needed">list of area&#8217;s</a> that we&#8217;re specifically looking for help in and would be happy to have other things worked on as well.</p>
<p>Follow the project <a href="http://twitter.com/ScrumDo">on twitter</a>.</p>
<p>p.s. ScrumDo not ScrumDoo &#8212; The doo wasn&#8217;t working, t0o many people thought about poo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2011/01/scrumdo-new-release-and-open-source/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Scrumdoo.com</title>
		<link>http://www.rogue-development.com/blog2/2010/11/scrumdoo-com/</link>
		<comments>http://www.rogue-development.com/blog2/2010/11/scrumdoo-com/#comments</comments>
		<pubDate>Mon, 22 Nov 2010 17:15:42 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=645</guid>
		<description><![CDATA[I&#8217;ve been taking a shot at an agile story management website in my off-hours.  It&#8217;s not ready for prime time yet, but I think it&#8217;s moving in the right direction. I was able to get a talented developer, Ajay Reddy, to help me out in it&#8217;s future development. We plan on open sourcing it so [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been <a href="http://www.scrumdoo.com/">taking a shot</a> at an agile story management website in my off-hours.  It&#8217;s not ready for prime time yet, but I think it&#8217;s moving in the right direction.</p>
<p>I was able to get a talented developer, Ajay Reddy, to help me out in it&#8217;s future development.</p>
<p>We plan on open sourcing it so anyone can run their own instance of the server.  It&#8217;s a DJango/Pinax/Mysql software stack.</p>
<p>My goal is to have a usable version up by December 6th.  Any suggestions / comments are greatly appreciated.</p>
<p>Oh.. the name will be changing.  Apparently both my wife and Ajay thinks it sounds too much like a form of excrement.  Suggestions welcome there as well.</p>
<p>Eventually, I&#8217;ll integrate the work I&#8217;ve done on <a href="http://www.todo-board.com/">Todo-Board</a> into it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2010/11/scrumdoo-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backlog Management Software?</title>
		<link>http://www.rogue-development.com/blog2/2010/11/backlog-management-software/</link>
		<comments>http://www.rogue-development.com/blog2/2010/11/backlog-management-software/#comments</comments>
		<pubDate>Mon, 08 Nov 2010 13:51:33 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=643</guid>
		<description><![CDATA[We&#8217;re moving to Agile/Scrum development. Right now, we&#8217;re using spreadsheets to track our backlog.  It&#8217;s working fine.  But I&#8217;ve got a big project coming up, and the spreadsheets just aren&#8217;t going to scale.  I&#8217;m looking for something slightly more heavy weight than a spreadsheet, but still light, easy to use, doesn&#8217;t get in the way. [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re moving to Agile/Scrum development.</p>
<p>Right now, we&#8217;re using spreadsheets to track our backlog.  It&#8217;s working fine.  But I&#8217;ve got a big project coming up, and the spreadsheets just aren&#8217;t going to scale.  I&#8217;m looking for something slightly more heavy weight than a spreadsheet, but still light, easy to use, doesn&#8217;t get in the way.</p>
<p>It&#8217;s got to be web-based since we have remote teams.</p>
<p>It has to support multiple teams on a single product with a single backlog.</p>
<p>It has to support a deep backlog with hundreds of items.</p>
<p>It must support the ?, 0.5, 1, 2, 3, 4, 8, 13, 20, 40, 100, Infinity point scale</p>
<p>I need a reasonable assurance it&#8217;ll be around for 3+ years.</p>
<p>It should generate burn up charts for each team and for the project as a whole.</p>
<p>We already have a defect tracking system.  I don&#8217;t need that in the system, and would prefer it to be absent.</p>
<p>Pivotal Tracker is the closest thing I&#8217;ve found so far.  But it fails the point-scale and the longevity requirements.</p>
<p>Rally and Version One are close seconds, but they&#8217;re way too &#8220;Enterprisey&#8221;.  I want something quick and light.</p>
<p>I&#8217;m tempted to tack something onto <a href="http://www.todo-board.com/">Todo-Board</a>, but it&#8217;s more than I want to bite off right now.</p>
<p>What do you look for in backlog management software?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2010/11/backlog-management-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hour a day</title>
		<link>http://www.rogue-development.com/blog2/2010/09/hour-a-day/</link>
		<comments>http://www.rogue-development.com/blog2/2010/09/hour-a-day/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 11:36:15 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=635</guid>
		<description><![CDATA[I&#8217;ve adjusted my day-job work schedule a bit as of late.  Now, I&#8217;m coming in and staying about an hour later Monday through Thursday. Why? Because my personal projects had stalled.  I&#8217;m using that 1 pre-work hour a day to work on Todo-Board I&#8217;ve been at it for about two weeks, and in that 8 [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve adjusted my day-job work schedule a bit as of late.  Now, I&#8217;m coming in and staying about an hour later Monday through Thursday.</p>
<p>Why?</p>
<p>Because my personal projects had stalled.  I&#8217;m using that 1 pre-work hour a day to work on <a href="http://www.todo-board.com/">Todo-Board</a></p>
<p>I&#8217;ve been at it for about two weeks, and in that 8 extra hours I&#8217;ve developed more of the site than what I accomplished in the previous several months!</p>
<p>I&#8217;m trying to complete one small logical piece every day and it&#8217;s amazing at what time-boxing your self for one hour a day can accomplish.   One day I made a new toolbar that hovers with the notes.  Another day I optimized the logic that decides when to save the project.  Yet another I implemented the ability to share your board through links on the site.</p>
<p>So many people say &#8220;If I only had the time, I could do X&#8221; and then never do it.  Why not find an hour a day and do it?</p>
<p>It also helps that this lets me miss some traffic.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2010/09/hour-a-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Still time to teach your reps math Verizon.</title>
		<link>http://www.rogue-development.com/blog2/2010/08/still-time-to-teach-your-reps-math-verizon/</link>
		<comments>http://www.rogue-development.com/blog2/2010/08/still-time-to-teach-your-reps-math-verizon/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 14:34:03 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rogue-development.com/blog2/?p=630</guid>
		<description><![CDATA[I remember reading a story about a guy getting overcharged one hundred fold by verizon because the rep didn&#8217;t understand the difference betwee &#8220;Point zero zero two cents&#8221; and &#8220;Point zero zero two dollars&#8221;.  They&#8217;re still making the same mistake. This rate was just quoted to me over the phone as &#8220;Point zero zero two [...]]]></description>
			<content:encoded><![CDATA[<p>I remember <a href="http://verizonmath.blogspot.com/2006/12/verizon-doesnt-know-dollars-from-cents.html">reading a story</a> about a guy getting overcharged one hundred fold by verizon because the rep didn&#8217;t understand the difference betwee &#8220;Point zero zero two cents&#8221; and &#8220;Point zero zero two dollars&#8221;.  They&#8217;re still making the same mistake.</p>
<p>This rate was just quoted to me over the phone as &#8220;Point zero zero two cents&#8221;.</p>
<p style="text-align: center;">I asked to see it in writing and this is what I got:</p>
<p style="text-align: center;"><a href="http://img.skitch.com/20100830-fqr92bdj52kimsbudxdmurtdr7.png"><img class="aligncenter" title="Verizon Quote" src="http://img.skitch.com/20100830-fqr92bdj52kimsbudxdmurtdr7.png" alt="" width="426" height="129" /></a></p>
<p style="text-align: center;">
<p style="text-align: center;">
<p style="text-align: left;">They could fix it by quoting this in MB. Nobody is going to say $2/mb wrong.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2010/08/still-time-to-teach-your-reps-math-verizon/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GIT</title>
		<link>http://www.rogue-development.com/blog2/2010/07/git/</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, [...]]]></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>
]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2010/07/git/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>A lesson on AIR certificate signing</title>
		<link>http://www.rogue-development.com/blog2/2010/05/a-lesson-on-air-certificate-signing/</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 the update, downloaded [...]]]></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>
]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2010/05/a-lesson-on-air-certificate-signing/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Scholastic / Tomsnyder hiring in Boston area (Watertown)</title>
		<link>http://www.rogue-development.com/blog2/2010/04/scholastic-tomsnyder-hiring-in-boston-area-watertown/</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 [...]]]></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>
]]></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>
		</item>
		<item>
		<title>Alternative &#8220;skin&#8221; for ObjectHandles</title>
		<link>http://www.rogue-development.com/blog2/2010/04/alternative-skin-for-objecthandles/</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>
]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2010/04/alternative-skin-for-objecthandles/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Todo-Board.com &#8211; another shot at project management</title>
		<link>http://www.rogue-development.com/blog2/2010/03/todo-board-com-another-shot-at-project-management/</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>
]]></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>
		</item>
		<item>
		<title>Trying out Mercurial</title>
		<link>http://www.rogue-development.com/blog2/2010/03/trying-out-merurial/</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 [...]]]></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>
]]></content:encoded>
			<wfw:commentRss>http://www.rogue-development.com/blog2/2010/03/trying-out-merurial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An experiment in funding open source software</title>
		<link>http://www.rogue-development.com/blog2/2010/02/an-experiment-in-funding-open-source-software/</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 [...]]]></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>
]]></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>
		</item>
		<item>
		<title>Just say no to dell</title>
		<link>http://www.rogue-development.com/blog2/2010/02/just-say-no-to-dell/</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 [...]]]></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>
]]></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>
		</item>
	</channel>
</rss>

