<?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>Doug McCune &#187; Flex</title>
	<atom:link href="http://dougmccune.com/blog/category/flex/feed/" rel="self" type="application/rss+xml" />
	<link>http://dougmccune.com/blog</link>
	<description>A blog about Adobe Flex</description>
	<lastBuildDate>Thu, 01 Jul 2010 14:06:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Stalking Someone with Data</title>
		<link>http://dougmccune.com/blog/2009/11/04/stalking-someone-with-data/</link>
		<comments>http://dougmccune.com/blog/2009/11/04/stalking-someone-with-data/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 15:48:35 +0000</pubDate>
		<dc:creator>Doug</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[flexcoders]]></category>

		<guid isPermaLink="false">http://dougmccune.com/blog/?p=719</guid>
		<description><![CDATA[Data can often tell you far more about people than you originally think. In my previous post I presented some of the data from the history of the FlexCoders mailing list. I showed some of the details of the individual usage patterns for different people. One of those people was the Flex product manager, Matt [...]]]></description>
			<content:encoded><![CDATA[<p>Data can often tell you far more about people than you originally think. In my previous post I presented some of the <a href="http://dougmccune.com/blog/2009/11/03/flexcoders-mailing-list-stats-pretty-graphs-full-dataset/">data from the history of the FlexCoders mailing list</a>. I showed some of the details of the individual usage patterns for different people. One of those people was the Flex product manager, <a href="http://blogs.adobe.com/mchotin/">Matt Chotin</a>. Matt&#8217;s involvement with FlexCoders is pretty interesting if you start to dig into the data.  In this post I&#8217;ll try to identify some changing trends in his usage patterns and we&#8217;ll see if we can do some detective work to figure out why his behavior changed.</p>
<p>A little background: Matt has been involved in Flex since basically forever. He was an engineer at Macromedia and is now the product manager for Flex. Matt has been quite prolific on flexcoders over the years (in the overall ranking he&#8217;s #3). So to start I was interested in his overall post volume on the list. Take a look at the timeline showing his posts per month and you&#8217;ll notice there&#8217;s a distinct drop-off:</p>
<p><a href="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline_chotin.jpg" title="flexcoders_timeline_chotin"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline_chotin.thumbnail.jpg" alt="flexcoders_timeline_chotin" align="none" width="450" height="110" class="attachment wp-att-695 " /></a></p>
<p>Here&#8217;s a closeup of a period:</p>
<p><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_chotin_drop.jpg" alt="flexcoders_chotin_drop" align="none" width="173" height="90" class="attachment wp-att-711 " /></p>
<p>See that big drop from April to May of 2006? Well in May Matt <a href="http://blogs.adobe.com/mchotin/archives/2006/05/new_role_same_t.html">changed jobs to become the product manager</a> of Flex. On his blog he noted: </p>
<blockquote><p>So if you notice the number of flexcoders posts going down it&#8217;s because my brain will be slowly atrophying as I move away from the details of our vast offering.</p></blockquote>
<p>And that&#8217;s exactly what happened.</p>
<p><strong>Daily routines</strong><br />
Seeing the correlation between a change in professional life and a drop in activity is cool, but we can dig deeper. Not only is this data telling us when Matt changed his behavior throughout the year, but we can also figure out something about his daily routines and how that changed as well. I started looking at when (as in what time of day) Matt was posting to the list.</p>
<p>Here&#8217;s a chart that shows the distribution of posts by hour of day and day of week. It groups the posts by the combination of what day and what hour they occur on. </p>
<p><a href="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_heatgrid_chotin.jpg" title="flexcoders_heatgrid_chotin"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_heatgrid_chotin.thumbnail.jpg" alt="flexcoders_heatgrid_chotin" align="none" width="450" height="206" class="attachment wp-att-703 " /></a></p>
<p>So you can see that Matt posted the most on weekday mornings (around 9-11am on Monday-Friday) and weekday evenings (around 8-10pm Monday-Thursday, note that he rarely posts on Friday nights). </p>
<p>This pattern is actually very similar to Alex Harui&#8217;s activity as well, although Alex&#8217;s activity is more weighted to during work hours than at night (except for Sunday night!).<br />
<a href="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_harui_heatindex.jpg" title="flexcoders_harui_heatindex"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_harui_heatindex.thumbnail.jpg" alt="flexcoders_harui_heatindex" align="none" width="450" height="207" class="attachment wp-att-737 " /></a></p>
<p>I found the evening hotspots interesting (both in Matt and Alex&#8217;s cases). Clearly Matt was answering people&#8217;s questions a lot after work hours from home. </p>
<p>I dug a bit further into Matt&#8217;s trends. Here&#8217;s the graph of his activity by hour of day for 2005:</p>
<p><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_chotin_2005.jpg" alt="flexcoders_chotin_2005" align="none" width="274" height="148" class="attachment wp-att-704 " /></p>
<p>We can see in 2005 he actually answered more questions in the evening than in the morning. Taking a look at 2006 this became even more pronounced, almost all his activity was at night (I wasn&#8217;t the only one who noticed this, see <a href="http://blog.digitalbackcountry.com/2006/03/matt-chotin-is-a-beast/">Ryan Stewart&#8217;s post</a> about Matt posting at 9pm):</p>
<p><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_chotin_2006.jpg" alt="flexcoders_chotin_2006" align="none" width="273" height="148" class="attachment wp-att-705 " /></p>
<p>And then there was a change in 2007. The graph for 2007 shows that he started answering more question during the workday. And that shift continued into 2008 and 2009, by which time almost all of Matt&#8217;s activity was during work hours.</p>
<p><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_chotin_2007.jpg" alt="flexcoders_chotin_2007" align="none" width="273" height="147" class="attachment wp-att-707 " /><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_chotin_2008.jpg" alt="flexcoders_chotin_2008" align="none" width="274" height="148" class="attachment wp-att-708 " /><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_chotin_2009.jpg" alt="flexcoders_chotin_2009" align="none" width="272" height="147" class="attachment wp-att-709 " /></p>
<p>If you dig even deeper into the data you can find out that the transition from mainly evening activity to work-day activity happened mostly during the months of April 2007 &#8211; June 2007. After about July 2007 Matt almost primarily posts during the day. Taking a look at the <a href="http://en.wikipedia.org/wiki/Adobe_Flex#Release_history">release history of Flex</a>, we see that the beta of Flex 3 came out in June 2007. So my guess is that Matt changed to a management role in May of 2006, but had far too much work to do to get Flex 3 ready and out the door between then and June 2007 (meaning his devotion to flexcoders had to be delegated to the evening hours). Finally once the Flex 3 beta was out the door he could devote some actual work hours to being involved in the community, instead of having to do it all from home.</p>
<p><strong>Vacation Time</strong><br />
As if knowing the intimate details about Matt&#8217;s daily routine isn&#8217;t enough, we can learn something about his historical vacation time off as well. Matt&#8217;s impressive in that he&#8217;s never missed a month without posting. If you go even more granular there are actually very few weeks that he missed (as his overall activity declined in 2009 this became more common). So if we look at Matt&#8217;s activity around the holidays something interesting pops out (well, it&#8217;s only interesting if you&#8217;re a total stalker, but if you&#8217;ve read this far then you probably are). Here are a few timelines of different years, showing columns grouped by week. In 2005 we see Matt was posting pretty regularly through the holidays. There actually was a 5 day stretch with no posts, but that was it (due to the way the weeks are grouped that gap doesn&#8217;t show in this chart).<br />
<img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_chotin_xmas2004.jpg" alt="flexcoders_chotin_xmas2004" align="none" width="400" height="120" class="attachment wp-att-738 " /></p>
<p>2005 is similar:<br />
<img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_chotin_xmas2005.jpg" alt="flexcoders_chotin_xmas2005" align="none" width="400" height="120" class="attachment wp-att-739 " /></p>
<p>But then 2006 has a big gap:<br />
<img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_chotin_xmas2006.jpg" alt="flexcoders_chotin_xmas2006" align="none" width="400" height="120" class="attachment wp-att-740 " /></p>
<p>And being the stalker that I am, I noticed that and then went to investigate further. Turns out Matt <a href="http://blogs.adobe.com/mchotin/archives/2006/12/out_on_vacation.html">wrote about taking a vacation</a> that year. </p>
<blockquote><p>I&#8217;ll be on vacation until mid-January so emails to me will go unanswered as will responses to various forums and blog comments <img src='http://dougmccune.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Happy Holidays to all!</p></blockquote>
<p>The data never lies.</p>
<p>Looks like a long vacation over the holidays didn&#8217;t turn into a regular thing though, since he was right back at it the following year:<br />
<img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_chotin_xmas20071.jpg" alt="flexcoders_chotin_xmas20071" align="none" width="400" height="120" class="attachment wp-att-746 " /></p>
<p><strong>I&#8217;m not a total nut job</strong><br />
I know it seems like I&#8217;m obsessed with Matt Chotin. And regardless of whether that&#8217;s true or not, I do want to assure people I&#8217;m not totally off my rocker. This little experiment in data mining and analysis isn&#8217;t really about Matt. It&#8217;s about the stories data tells about all of us. There are mountains of public information out there about us all, and the tiny little bits that we put out there, even if those are just little Facebook or Twitter status messages, can say a lot about us. Sure, a single Facebook status message doesn&#8217;t tell anyone much, but when you look at all of them over a multi-year period you can start learning a lot about a person. And often that information that the aggregate data tells about us isn&#8217;t something we&#8217;re aware of. From this data experiment I know when Matt eats dinner (pretty typical range of 6-8pm), when he goes to bed (around midnight), and when he gets to work (again pretty normal between 8-9). And this is all from only 4,000 data points. With social networking and microblogging sites we&#8217;re starting to create thousands of little data points like this all the time. </p>
<p><strong>Thanks to Matt Chotin</strong><br />
I ran this post by Matt first, since I know it&#8217;s a bit creepy. He was cool with me posting it, so thanks Matt! And thanks for all the years of hard work answering questions on flexcoders, we&#8217;re a stronger community because of it.</p>
<p><strong>The Data</strong><br />
Read <a href="http://dougmccune.com/blog/2009/11/03/flexcoders-mailing-list-stats-pretty-graphs-full-dataset/">more about the data here</a>. This is 5 and a half years of mailing list activity, comprising about 148,826 individual email messages. Matt himself posted about 4,000 messages. You can <a href="http://dougmccune.com/flexcoders_March_2008-November2_2009.csv">download the full CSV dataset here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://dougmccune.com/blog/2009/11/04/stalking-someone-with-data/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>FlexCoders Mailing List Stats, Pretty Graphs, Full Dataset</title>
		<link>http://dougmccune.com/blog/2009/11/03/flexcoders-mailing-list-stats-pretty-graphs-full-dataset/</link>
		<comments>http://dougmccune.com/blog/2009/11/03/flexcoders-mailing-list-stats-pretty-graphs-full-dataset/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 15:51:55 +0000</pubDate>
		<dc:creator>Doug</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[flexcoders]]></category>

		<guid isPermaLink="false">http://dougmccune.com/blog/?p=679</guid>
		<description><![CDATA[In this post I&#8217;m going to dive into details about the stats of the FlexCoders mailing list usage over the past 5 and a half years. It&#8217;s full of graphs of various fun statistics, like who&#8217;s most active on the list, when people post, and the overall traffic over time. It&#8217;s a bit of a [...]]]></description>
			<content:encoded><![CDATA[<p>In this post I&#8217;m going to dive into details about the stats of the <a href="http://tech.groups.yahoo.com/group/flexcoders/">FlexCoders</a> mailing list usage over the past 5 and a half years. It&#8217;s full of graphs of various fun statistics, like who&#8217;s most active on the list, when people post, and the overall traffic over time. It&#8217;s a bit of a trip down memory lane, and I apologize if I ramble, I like data and pretty pictures, and I have a soft spot in my heart for FlexCoders, so bear with me and hopefully for those of you on the mailing list it will be a fun trip.</p>
<p><strong>Background</strong><br />
I&#8217;ve been on the <a href="http://tech.groups.yahoo.com/group/flexcoders/">FlexCoders</a> mailing for a few years now (my first post was back in September 2006). As the Flex community grew, the list grew, some would say it grew to unmanageable levels. It&#8217;s certainly a lot of mail, I currently have 22,100 unread flexcoders emails in GMail. At one point we even debated furiously whether the list should be split up into multiple more focused lists, or if the whole thing was going to die. Regardless of that outcome the flexcoders list remained as it has been for years. One thing did change though: Adobe replaced their official forum (which was literally God&#8217;s worst forum software) with a <a href="http://forums.adobe.com/community/flex">new one</a>. And the Adobe employees definitely seemed to be pushing people there, which isn&#8217;t to say they stopped answering flexcoders questions, but the community was certainly now split between two lists. </p>
<p>I subscribe to both flexcoders and the Adobe Flex forums (which you can setup to receive emails from). I started noticing a trend. Take a look at this picture of my inbox (only flexcoders and Adobe forums emails) as of right now: </p>
<p><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_flexforum.jpg" alt="flexcoders_flexforum" align="none" width="450" height="280" class="attachment wp-att-681 " /></p>
<p>The orange label is used to tag the posts from flexcoders and the green label is posts from the Adobe forums. I started noticing that the number of posts from the forums were more than on flexcoders. That obviously made me wonder if the overall traffic on flexcoders was in decline. I&#8217;ve been inactive on the list for quite a while (been quiet for most of 2009). So I didn&#8217;t exactly have my finger on the pulse of flexcoders.</p>
<p><strong>The Data</strong><br />
So I wanted to download the entire Yahoo group dataset to start playing with it. Turns out Yahoo doesn&#8217;t make this easy, but I found a sweet program called <a href="http://www.personalgroupware.com/">PG Offline</a> that I used to pull down the entire list. It took me a few days to get all 148,826 messages (as of about 7pm tonight). But PG Offline worked incredibly well and I then had an Access database file with all the emails (it was about 1.5 gigs). I then used another program called <a href="http://www.holomy-tools.com/mdb.php">MDB Converter</a> to convert that to a text CSV file. </p>
<p>If you want to play with the data yourself you can <a href="http://dougmccune.com/flexcoders_March_2008-November2_2009.csv">download the CSV file</a> (11 megs). It includes columns for the sender, date, and subject. I did not include the full-text of the emails, since that would make it a gig and a half.</p>
<p><strong>Analyzing the Trends</strong><br />
I pulled the data into <a href="http://spatialkey.com">SpatialKey</a> (which is what I work on for my day job) and started digging into the data. Here&#8217;s the report setup I created in SpatialKey to play around and filter down the data (click for a larger view):</p>
<p><a href="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_report_sk.jpg" title="flexcoders_report_sk"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_report_sk.thumbnail.jpg" alt="flexcoders_report_sk" align="none" width="400" height="378" class="attachment wp-att-682 " /></a></p>
<p>So we can start seeing the overall trend in the main timeline, which shows the rise and fall in traffic.<br />
<a href="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline.jpg" title="flexcoders_timeline"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline.thumbnail.jpg" alt="flexcoders_timeline" align="none" width="450" height="108" class="attachment wp-att-685 " /></a></p>
<p>So there certainly has been a decline in traffic to the list. The most active month ever in the list&#8217;s history was March 2008 with 3,834 posts. And then it&#8217;s been a fairly steady decline since that peak.</p>
<p>Some other interesting high level stats are the hours of the most activity. This chart shows the number of posts by hour of day. Hour of day is Pacific time.</p>
<p><a href="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_hourofday.jpg" title="flexcoders_hourofday"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_hourofday.jpg" alt="flexcoders_hourofday" align="none" width="272" height="148" class="attachment wp-att-686 " /></a></p>
<p>You can clearly see the work-day hours there. 8, 9, and 10am are the most active, and then it slows down as the work-day finishes up (earlier for east coast people), and then there&#8217;s another small bump around 9pm in the evening.</p>
<p><strong>Who&#8217;s Most Active?</strong><br />
Anyone who reads FlexCoders knows that <a href="http://blogs.adobe.com/aharui">Alex Harui</a> (from Adobe) is the king. Here are two charts showing the top 10 posters of all time and the top 10 from just 2009.</p>
<p><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_top10_alltime.jpg" alt="flexcoders_top10_alltime" align="none" width="225" height="256" class="attachment wp-att-688 " /><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_top10_2009.jpg" alt="flexcoders_top10_2009" align="none" width="225" height="256" class="attachment wp-att-689 " /></p>
<p>Alex certainly still holds the number one spot overall, but Tracy has him beat for this past year.</p>
<p><strong>Diving into Individual Activity</strong><br />
It&#8217;s also pretty interesting to look at how different individuals use flexcoders, and how their usage has changed. Here are just a few selected people that I was curious about:</p>
<p>Alex wasn&#8217;t always the king. He had a few messages back in 2005, but his heavy involvement on the list actually started relatively late, in March of 2007 (which is also <a href="http://blogs.adobe.com/aharui/2007/03/welcome.html">when he started blogging</a> coincidentally).<br />
<a href="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline_harui.jpg" title="flexcoders_timeline_harui"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline_harui.thumbnail.jpg" alt="flexcoders_timeline_harui" align="none" width="450" height="109" class="attachment wp-att-692 " /></a></p>
<p>Tracy Spratt, on the other hand, has been on the list since its very beginning:<br />
<a href="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline_spratt.jpg" title="flexcoders_timeline_spratt"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline_spratt.thumbnail.jpg" alt="flexcoders_timeline_spratt" align="none" width="450" height="108" class="attachment wp-att-694 " /></a></p>
<p><a href="http://blogs.adobe.com/mchotin/">Matt Chotin</a> (Flex product manager) has also been active since the list started:<br />
<a href="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline_chotin.jpg" title="flexcoders_timeline_chotin"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline_chotin.thumbnail.jpg" alt="flexcoders_timeline_chotin" align="none" width="450" height="110" class="attachment wp-att-695 " /></a></p>
<p>Actually, Matt Chotin and Tracy Spratt are the only two people who have posted to the list at least once every single month since the very beginning (from April 2004 to now). They get the <strong>FlexCoders Lifetime Achievement Award</strong>!</p>
<p>Some people were around in the early days but then dropped out. Here&#8217;s <a href="http://jessewarden.com/">Jesse Warden</a>&#8216;s activity:<br />
<a href="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline_warden.jpg" title="flexcoders_timeline_warden"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline_warden.thumbnail.jpg" alt="flexcoders_timeline_warden" align="none" width="450" height="108" class="attachment wp-att-696 " /></a></p>
<p>Some people get sucked into the list fast and then fizzle out. <a href="http://flex.joshmcdonald.info/">Josh McDonald</a> was the third most prolific poster of 2008, but then stopped posting as quickly as he started:<br />
<a href="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline_mcdonald.jpg" title="flexcoders_timeline_mcdonald"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline_mcdonald.thumbnail.jpg" alt="flexcoders_timeline_mcdonald" align="none" width="450" height="108" class="attachment wp-att-697 " /></a></p>
<p>And some people stop posting when it&#8217;s no longer part of their job, like Roger Gonzalez who worked for Adobe and <a href="http://blogs.adobe.com/rgonzalez/2007/03/goodbye_adobe.html">left in March 2007</a> (which was also the last time he posted to the list):<br />
<a href="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline_gonzalez.jpg" title="flexcoders_timeline_gonzalez"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline_gonzalez.thumbnail.jpg" alt="flexcoders_timeline_gonzalez" align="none" width="450" height="109" class="attachment wp-att-698 " /></a></p>
<p><a href="http://quietlyscheming.com">Ely Greenfield</a> (Principal Architect at Adobe working on Flex 4) used to be fairly active back in 2006/2007, but hasn&#8217;t said a word in the past two years:<br />
<a href="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline_greenfield.jpg" title="flexcoders_timeline_greenfield"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline_greenfield.thumbnail.jpg" alt="flexcoders_timeline_greenfield" align="none" width="450" height="109" class="attachment wp-att-701 " /></a></p>
<p>And what about me? I was fairly active on the list from about 2007 through the beginning of 2009, then pretty much radio silence:<br />
<a href="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline_mccune.jpg" title="flexcoders_timeline_mccune"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_timeline_mccune.thumbnail.jpg" alt="flexcoders_timeline_mccune" align="none" width="450" height="109" class="attachment wp-att-702 " /></a></p>
<p>And some people don&#8217;t live in the USA and post at completely different times. Here&#8217;s <a href="http://thefalken.livejournal.com/">Tom Chiverton</a>&#8216;s (4th most prolific poster of all time) usage pattern by hour of day and day of week. It groups the posts by the combination of what day and what hour they occur on.<br />
<a href="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_heatgrid_chiverton.jpg" title="flexcoders_heatgrid_chiverton"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/11/flexcoders_heatgrid_chiverton.thumbnail.jpg" alt="flexcoders_heatgrid_chiverton" align="none" width="450" height="158" class="attachment wp-att-724 " /></a></p>
<p>At first glance it looks like Tom emails the list in the middle of the night, until you realize that he lives in England <img src='http://dougmccune.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I&#8217;ve had a lot of fun drilling into the history of this list. It&#8217;s really cool what kinds of trends you can find (probably another post in more detail on that later).</p>
<p><strong>Want to play with the data?</strong><br />
You can <a href="http://dougmccune.com/flexcoders_March_2008-November2_2009.csv">download the complete CSV file</a> and use it if you want. I&#8217;d love to see people turn it into much more interesting visualizations. This dataset goes up until November 2 2009. Since it&#8217;s a bit of a pain to keep it updated I probably won&#8217;t update it very often, but if there is interest I might do so once a month or so.</p>
<p><strong>Notes on privacy</strong><br />
All this data is public, you can see it all by going to the <a href="http://tech.groups.yahoo.com/group/flexcoders/">Yahoo group</a> and searching. There are no email addresses in this data (unless perhaps if someone used their email address as their name as well). Any names in this data are there because the person knowingly emailed the public flexcoders email list. This CSV download is obviously a much easier format to work with all the data, and it can certainly be mined for interesting trends. I just ask that people play nice with the data. We&#8217;re a community, and this is data that represents our lives (or at least one small sliver of our lives) for the past 5 years.</p>
]]></content:encoded>
			<wfw:commentRss>http://dougmccune.com/blog/2009/11/03/flexcoders-mailing-list-stats-pretty-graphs-full-dataset/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Drinking at 10am and geeking out on SpatialKey and Flex</title>
		<link>http://dougmccune.com/blog/2009/07/27/drinking-at-10am-and-geeking-out-on-spatialkey-and-flex/</link>
		<comments>http://dougmccune.com/blog/2009/07/27/drinking-at-10am-and-geeking-out-on-spatialkey-and-flex/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 16:33:17 +0000</pubDate>
		<dc:creator>Doug</dc:creator>
				<category><![CDATA[Drunk on Software]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[GIS]]></category>
		<category><![CDATA[SpatialKey]]></category>
		<category><![CDATA[geospatial]]></category>

		<guid isPermaLink="false">http://dougmccune.com/blog/?p=587</guid>
		<description><![CDATA[James Ward and Jon Rose just published the latest episode of Drunk on Software that features members of the SpatialKey team, including myself, Tom Link (CTO of Universal Mind), and Brandon Purcell (Director of Technology for UM). As a brief disclaimer in case I slur any words near the end: I was in Denver for [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.jamesward.com/">James Ward</a> and <a href="http://gorillajawn.com/wordpress">Jon Rose</a> just published the <a href="http://www.drunkonsoftware.com/2009/07/26/episode-15-universal-mind-spatialkey/">latest episode of Drunk on Software</a> that features members of the <a href="http://spatialkey.com">SpatialKey</a> team, including myself, Tom Link (CTO of Universal Mind), and Brandon Purcell (Director of Technology for UM). </p>
<p><object id="showplayer" width="480" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"><param value="true" name="allowfullscreen"/><param value="best" name="quality"/><param value="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&#038;file=http%3A//blip.tv/rss/flash/2415961&#038;feedurl=http%3A//drunkonsoftware.blip.tv/rss/&#038;autostart=false&#038;brandname=Drunk%20on%20Software&#038;brandlink=http%3A//drunkonsoftware.blip.tv/" name="src"/><embed id="showplayer" width="480" height="300" allowfullscreen="true" quality="best" src="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&#038;file=http%3A//blip.tv/rss/flash/2415961&#038;feedurl=http%3A//drunkonsoftware.blip.tv/rss/&#038;autostart=false&#038;brandname=Drunk%20on%20Software&#038;brandlink=http%3A//drunkonsoftware.blip.tv/" type="application/x-shockwave-flash"/><br />
</object></p>
<p>As a brief disclaimer in case I slur any words near the end: I was in Denver for a short trip and we squeezed in a time to meet with Jon and James right before I had to head to the airport to fly home. The only problem was that we had to meet at about 10am in the morning. And since the show is called <strong>Drunk</strong> on Software we obviously had to be drinking. So by the time I got on my flight I was probably 6 beers down <img src='http://dougmccune.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>A big thanks to Jon and James for making the time to have us over (that&#8217;s the living room of Jon&#8217;s house). And thanks for the beer guys!</p>
]]></content:encoded>
			<wfw:commentRss>http://dougmccune.com/blog/2009/07/27/drinking-at-10am-and-geeking-out-on-spatialkey-and-flex/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Interview up on InfoQ</title>
		<link>http://dougmccune.com/blog/2009/03/30/interview-up-on-infoq/</link>
		<comments>http://dougmccune.com/blog/2009/03/30/interview-up-on-infoq/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 18:13:21 +0000</pubDate>
		<dc:creator>Doug</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[interview]]></category>

		<guid isPermaLink="false">http://dougmccune.com/blog/?p=502</guid>
		<description><![CDATA[An interview I did with Jon Rose of InfoQ was just posted. I talk about my experience with Flex component development, the Flex commuity as a whole, and the current state of the enterprise software market in general. I&#8217;ll probably get some shit for some of my comments about enterprise software where I say that [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.infoq.com/news/2009/03/doug-mccune-flex-development"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/03/screenshot102.jpg" alt="screenshot102" align="right" width="180" height="61" class="attachment wp-att-503 " style="border:1px solid #333333; margin-left:15px;" /></a> An interview I did with Jon Rose of InfoQ was <a href="http://www.infoq.com/news/2009/03/doug-mccune-flex-development">just posted</a>. I talk about my experience with Flex component development, the Flex commuity as a whole, and the current state of the enterprise software market in general. I&#8217;ll probably get some shit for some of my comments about enterprise software where I say that it&#8217;s all &#8220;almost uniformly horrible&#8221; <img src='http://dougmccune.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I don&#8217;t really mean to call <strong>all</strong> enterprise software crap, it was more a broad strokes comment, the kind I&#8217;m apt to make after a few beers. So if you&#8217;re making awesome enterprise software, don&#8217;t be mad at me, keep doing awesome stuff.</p>
<p>Here&#8217;s just a small excerpt from the interview, <a href="http://www.infoq.com/news/2009/03/doug-mccune-flex-development">read the entire thing at InfoQ</a>.</p>
<blockquote><p>Enterprise software is almost uniformly horrible, but there&#8217;s no reason for that. We&#8217;re seeing a &#8220;UX revolution&#8221; in RIA design, and for all the buzzword nonsense surrounding &#8220;user experience, &#8221; there&#8217;s something real happening in terms of the overall quality of the experience delivered by RIAs. We&#8217;ve seen some really great and innovative work in consumer RIAs, with a trend toward simple and intuitive interfaces. And yet in enterprise software this trend has barely even begun, it&#8217;s all still complex. I want to see enterprise applications treated like consumer apps, with the same attention to the user experience and with a consistent drive to simplify and make everything more intuitive. Complex systems don&#8217;t have to be presented with confusing software. But it takes more work to figure out the simple, elegant solution. It&#8217;s far cheaper and faster to make bad complex software than good simple software.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://dougmccune.com/blog/2009/03/30/interview-up-on-infoq/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>What my Eclipse/Flex Builder setup looks like</title>
		<link>http://dougmccune.com/blog/2009/02/01/what-my-eclipseflex-builder-setup-looks-like/</link>
		<comments>http://dougmccune.com/blog/2009/02/01/what-my-eclipseflex-builder-setup-looks-like/#comments</comments>
		<pubDate>Sun, 01 Feb 2009 18:54:56 +0000</pubDate>
		<dc:creator>Doug</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex Builder]]></category>

		<guid isPermaLink="false">http://dougmccune.com/blog/?p=415</guid>
		<description><![CDATA[A few months ago I decided that my Eclipse setup was far from optimal. I was using slightly customized versions of the default Flex Development and Debugging perspectives that ship with Flex Builder. I had customized them to suit my personal preferences (things like making the Variables pane take up the full screen height). But [...]]]></description>
			<content:encoded><![CDATA[<p>A few months ago I decided that my Eclipse setup was far from optimal. I was using slightly customized versions of the default Flex Development and Debugging perspectives that ship with Flex Builder. I had customized them to suit my personal preferences (things like making the Variables pane take up the full screen height). But the biggest problem I had was the debugging perspective. When you have all the panes you need open on the same screen (code editor, debug panel for stepping through lines, variables pane for inspecting variables, console for reading log statements, navigator for selecting different files) you end up with a tiny area for actually reading the code in the code editor.</p>
<p><strong>The old single-screen perspective</strong><br />
Here&#8217;s a screenshot showing how bad my debugging perspective could become:</p>
<p><a href="http://dougmccune.com/blog/wp-content/uploads/2009/02/singlescreen_debugging.jpg" title="singlescreen_debugging"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/02/singlescreen_debugging.thumbnail.jpg" alt="singlescreen_debugging" align="none" width="400" height="250" class="attachment wp-att-416 " /></a></p>
<p>I&#8217;d usually try to edit code within a maximized code editing window by double clicking the code editor I was working in, then restoring it back to the small size when I was stepping through debugging. And often I&#8217;d hide the console view or move it around so I could get more vertical space. But in the end it was always a struggle to have access to all the pieces I needed and still be able to edit code.</p>
<p><strong>The new dual-screen perspective</strong><br />
So I finally decided that having Eclipse within a single monitor just wasn&#8217;t going to cut it. For most of my development work, I plug my laptop into an external 22-inch monitor, which gives me a resolution of 1680&#215;1050 on my external monitor and 1440&#215;900 on my laptop monitor. When I was using Eclipse on a single screen I would always put it on the larger screen to maximize space. But now I decided to move all the panels other than the code editor and file navigator to my laptop screen instead (which sits just to the left of my external monitor).</p>
<p>My current setup looks like this (this image is small, but full res images of each screen follow):</p>
<p><img src="http://dougmccune.com/blog/wp-content/uploads/2009/02/side_by_side.jpg" alt="side_by_side" align="none" width="450" height="150" class="attachment wp-att-417 " /></p>
<p>My main external monitor screen is the one on the right and is dedicated to viewing and editing code. I&#8217;ve stripped everything else out, and even stripped down the default Eclipse toolbar items to only those that I actually use on a daily basis. </p>
<p>Right screen (external monitor):</p>
<p><a href="http://dougmccune.com/blog/wp-content/uploads/2009/02/dualscreen_right_annotated.jpg" title="dualscreen_right_annotated"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/02/dualscreen_right_annotated.thumbnail.jpg" alt="dualscreen_right_annotated" align="none" width="450" height="281" class="attachment wp-att-418 " /></a></p>
<p>Left screen (laptop):</p>
<p><a href="http://dougmccune.com/blog/wp-content/uploads/2009/02/dualscreen_left_annotated.jpg" title="dualscreen_left_annotated"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/02/dualscreen_left_annotated.thumbnail.jpg" alt="dualscreen_left_annotated" align="none" width="450" height="281" class="attachment wp-att-419 " /></a></p>
<p>Now I always have a code editor that takes up the maximum amount of space I have. I originally tried moving the File Navigator to the left screen as well, but found that a) it was a bit of a pain visually to have to move my eyes to the left and then to the right after selecting a file, and b) it&#8217;s the vertical space that counts the most in the code editor, not maximizing all possible horizontal space.</p>
<p>So when I debug I use the debugger and variable inspector on the left screen to step through line by line, while viewing the actual code on the right. </p>
<p>I&#8217;ve setup 4 main perspectives that include a Debug and a Development perspective for both a single-screen setup (when I unplug) and a dual-screen setup. I have all those shown at the same time in the perspective switcher toolbar, so I can easily jump back and forth between them. Also shown in this screenshot are the Team Synchronization and SVN Repo Exploring perspectives and single and dual screen versions of the Flex Profiling perspective. These 8 perspectives are pretty much the only ones I ever use, and are always a single click away.</p>
<p><img src="http://dougmccune.com/blog/wp-content/uploads/2009/02/screenshot085.jpg" alt="screenshot085" align="none" width="456" height="243" class="attachment wp-att-432 " /></p>
<p><strong>Drawbacks</strong><br />
The most annoying issue I&#8217;ve run into has to do with the popped out Debug window and how Eclipse manages window focus. Usually when debugging it works great, I click the step-over or step-into buttons in the Debug panel and it works just like I want. But sometimes (and I can&#8217;t figure out why) Eclipse decides that when I step over a line of code (or maybe it&#8217;s only when hitting a breakpoint) that the main code window should get the focus, which means that it takes a click on the Debug panel just to bring it back into focus, then a second click to step over the next line. It doesn&#8217;t sound like a big deal, but when you&#8217;re used to a single click always making the Debugger do the next step, and then that turns into two clicks, it gets really annoying and frustrating. </p>
<p>The only other drawback is that Eclipse isn&#8217;t smart enough to know that I have one perspective for my dual monitor setup and one perspective for when I unplug my laptop from the external monitor. So the default behavior when I unplug is to end up with something horrendous like this:<br />
<a href="http://dougmccune.com/blog/wp-content/uploads/2009/02/singlescreen_messedup.jpg" title="singlescreen_messedup"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/02/singlescreen_messedup.thumbnail.jpg" alt="singlescreen_messedup" align="none" width="450" height="281" class="attachment wp-att-423 " /></a></p>
<p>That&#8217;s easy enough to fix though, by simply right clicking on the perspective icon the toolbar and selecting &#8220;Reset&#8221;:<br />
<img src="http://dougmccune.com/blog/wp-content/uploads/2009/02/screenshot079.jpg" alt="screenshot079" align="none" width="136" height="102" class="attachment wp-att-424 " /></p>
<p>It also took a little getting used to to be able to share my attention between both screens and quickly scan my eyes back and forth. Usually I&#8217;m used to keeping my laptop screen for certain tasks (email, chat, RSS reading, etc), so I have a bit of a mental block against using both monitors for the same task. But I&#8217;ve gotten pretty used to that by now.</p>
<p><strong>What about you?</strong><br />
I&#8217;m curious what other Flex developers do in terms of laying out their IDE. I&#8217;d love to see screenshots of what other people have figured out. I haven&#8217;t experimented with too many different dual-monitor layouts, the one I&#8217;m using now was sort of the first one I made on the fly and have stuck with. But if you have a better system then I&#8217;d love to see it!</p>
]]></content:encoded>
			<wfw:commentRss>http://dougmccune.com/blog/2009/02/01/what-my-eclipseflex-builder-setup-looks-like/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Flex and Guns on Flasher Magazine</title>
		<link>http://dougmccune.com/blog/2009/01/31/flex-and-guns-on-flasher-magazine/</link>
		<comments>http://dougmccune.com/blog/2009/01/31/flex-and-guns-on-flasher-magazine/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 16:07:46 +0000</pubDate>
		<dc:creator>Doug</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[interview]]></category>

		<guid isPermaLink="false">http://dougmccune.com/blog/?p=404</guid>
		<description><![CDATA[Lee Brimleow just posted issue #2 of his sweet Flasher Magazine video mag. For this issue Lee interviewed me about Flex development, what I hate about the Flex SDK, what I think about Flash vs Flex. And then after the interview we went to shoot handguns at a shooting range in San Francisco Check it [...]]]></description>
			<content:encoded><![CDATA[<p>Lee Brimleow just posted issue #2 of his sweet <a href="http://flashermag.com/">Flasher Magazine</a> video mag. For this issue Lee interviewed me about Flex development, what I hate about the Flex SDK, what I think about Flash vs Flex. And then after the interview we went to shoot handguns at a shooting range in San Francisco <img src='http://dougmccune.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Check it out, I hope you enjoy:</p>
<p><a href="http://flashermag.com/" title="screenshot002"><img src="http://dougmccune.com/blog/wp-content/uploads/2009/01/screenshot002.jpg" alt="FlasherMag" align="none" width="300" height="387" class="attachment wp-att-405 " /></a></p>
<p>This issue also includes interviews with <a href="http://www.phillipkerman.com/">Phillip Kerman</a> and <a href="http://blogs.flashsupport.com/robert/">Robert Reinhardt</a>. </p>
<p>Thanks to Lee for giving me the opportunity to do the interview, and for putting rounds of ammo on the Adobe corporate credit card!</p>
<p>Oh yeah, and here&#8217;s a quick still shot from the video&#8217;s intro sequence. I&#8217;m so proud:<br />
<img src="http://dougmccune.com/blog/wp-content/uploads/2009/01/screenshot003.jpg" alt="" align="none" width="384" height="216" class="attachment wp-att-410 " /></p>
]]></content:encoded>
			<wfw:commentRss>http://dougmccune.com/blog/2009/01/31/flex-and-guns-on-flasher-magazine/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Is that Flex on my Kindle?</title>
		<link>http://dougmccune.com/blog/2008/12/25/is-that-flex-on-my-kindle/</link>
		<comments>http://dougmccune.com/blog/2008/12/25/is-that-flex-on-my-kindle/#comments</comments>
		<pubDate>Thu, 25 Dec 2008 20:52:13 +0000</pubDate>
		<dc:creator>Doug</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://dougmccune.com/blog/?p=371</guid>
		<description><![CDATA[Well, not really&#8230; but it&#8217;s a Flex book While I was getting ready to travel for the holidays I was buying a few new books for my Amazon Kindle to read on the plane. As I was browsing through the online store right on the Kindle, there in my recommended books list was Creating Visual [...]]]></description>
			<content:encoded><![CDATA[<p>Well, not really&#8230; but it&#8217;s a Flex book <img src='http://dougmccune.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<p> <a href="http://dougmccune.com/blog/wp-content/uploads/2008/12/flex_kindle1.jpg" title="flex_kindle1"><img src="http://dougmccune.com/blog/wp-content/uploads/2008/12/flex_kindle1.thumbnail.jpg" alt="flex_kindle1" align="none" width="367" height="400" class="attachment wp-att-373 " /></a></p>
<p>While I was getting ready to travel for the holidays I was buying a few new books for my Amazon Kindle to read on the plane. As I was browsing through the online store right on the Kindle, there in my recommended books list was <a href="http://www.amazon.com/Creating-Visual-Experiences-Developers-Library/dp/0321545370/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1230119147&#038;sr=8-1&#038;tag=dougmccune-20">Creating Visual Experiences for Flex 3</a> by my friends <a href="http://scalenine.com/blog/">Juan Sanchez</a> and <a href="http://www.andymcintosh.com/">Andy McIntosh</a>. Out of sheer curiosity I was forced to instantly buy it, wondering what it would look like on the Kindle&#8217;s screen.</p>
<p>Note that this isn&#8217;t in any way a review of the actual content of the book, since I haven&#8217;t read it yet. But knowing Juan and Andy I&#8217;m sure it&#8217;s fantastic. I just skimmed a few chapters trying to see what it looked like on the Kindle&#8217;s screen.</p>
<p><strong>Text and Images</strong><br />
Turns out that reading the textual content of the book on the Kindle works great. The images leave a little to be desired, since they&#8217;re rendered (like all images in a Kindle book) in fairly minimal grayscale, but they don&#8217;t actually differ that much from the print book (also in black and white) and you usually don&#8217;t lose any important information by viewing the images on the Kindle&#8217;s screen. Some of the screenshots comparing different effects and blend modes didn&#8217;t work very well since they were so small and the low contrast makes it difficult to notice differences.</p>
<p><strong>Tables</strong><br />
Tables actually turned out pretty readable, although quite small. But I was impressed how well the tables were actually preserved, and assuming you don&#8217;t have a problem reading small text (which I didn&#8217;t) then they&#8217;ll work just fine. If you&#8217;re old and your eyes are feeble then this might be an issue.</p>
<p><a href="http://dougmccune.com/blog/wp-content/uploads/2008/12/flex_kindle_table.jpg" title="flex_kindle_table"><img src="http://dougmccune.com/blog/wp-content/uploads/2008/12/flex_kindle_table.thumbnail.jpg" alt="flex_kindle_table" align="none" width="299" height="400" class="attachment wp-att-383 " /></a></p>
<p><strong>Code Samples</strong><br />
The code listings are a bit more problematic. With the normal font size, the code listings become pretty unreadable on the Kindle&#8217;s screen. Pretty much all the code wraps in weird ways, breaking the lines up, often mid-word, and usually spilling over onto multiple pages. </p>
<p><a href="http://dougmccune.com/blog/wp-content/uploads/2008/12/flex_kindle_code.jpg" title="flex_kindle_code"><img src="http://dougmccune.com/blog/wp-content/uploads/2008/12/flex_kindle_code.thumbnail.jpg" alt="flex_kindle_code" align="none" width="366" height="400" class="attachment wp-att-384 " /></a></p>
<p>However, if you adjust the font to the smallest that the Kindle offers, then you get more readable code listings. Things still spill over across pages, and sometimes the lines wrap awkwardly, but overall the code listings are much improved. The smallest font size is really the only way to read a book like this. Truthfully, I imagined the code listings would be completely unreadable, but if you adjust the font size it&#8217;s much better than I ever imagined it would be.</p>
<p>The difficulty with code listings makes the Exercises section (section 4) difficult to get through. But the previous sections, which give you explanations of the skinning and styling techniques and discussion about all the particular components within the Flex framework, rely on much shorter snippets of code sprinkled in the text. The exercises are really code-heavy (as they should be), which makes viewing on the screen hard.</p>
<p>Of course, reading code on such a small screen (regardless of whether you&#8217;re reading a book or reviewing someone&#8217;s code or whatever) is far from ideal. I&#8217;d never choose to write code on a screen this size, and reading it here is certainly less than perfect. But reading code in any print book is always relatively awkward, with the only real difference between print and the Kindle being that print books have better formatted line breaks and the ability to see multiple pages at once (assuming the two print pages can be open side by side). </p>
<p>Overall, if you&#8217;re comfortable reading the entire text at the smallest font size, it&#8217;s pretty decent actually (again, I&#8217;m referring to the viewing experience, not the content of the text). I don&#8217;t think I&#8217;ll get any other programming books on my Kindle, instead I&#8217;ll buy the print versions if I have the choice (or more likely I won&#8217;t buy programming books at all, as I&#8217;ve <a href="http://dougmccune.com/blog/2007/03/23/why-i-dont-read-books/">written about previously</a>). But if you&#8217;re traveling and you don&#8217;t mind the layout issues, there&#8217;s no reason you can&#8217;t learn Flex styling and skinning on an airplane.</p>
<p>P.S. For worry of breaking some unknown clause in my contract with my own publisher, I better tell you that I wrote a Flex book too! <a href="http://iamdeepa.com">Deepa Subramaniam</a> and I wrote <a href="http://www.amazon.com/gp/product/0470277920?ie=UTF8&#038;tag=dougmccune-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0470277920">Adobe Flex 3 for Dummies</a>, which is awesome (although it&#8217;s not offered on the Kindle). Juan and Andy&#8217;s book and our Dummies book really target very different audiences, so if you&#8217;re just starting to learn Flex then you might want to check out our book first and then move on to Creating Visual Experiences.</p>
<p>P.P.S. Merry Christmas and happy holidays!</p>
<p><strong>Legal stuff to try to keep me from getting in trouble</strong><br />
All images in this post are digital pictures I took of the Amazon Kindle displaying the Creating Visual Experiences with Flex 3.0 book, written by Juan Sanchez and Andy McIntosh and published by Addison-Wesley. All content is copyright Pearson Education, Inc. The images used in this blog post reproduce very small amounts of text and images from the original text, at very low quality in comparison to the original. The intent of this post is to explain the reading experience on the Kindle, not in any way to redistribute copyrighted content. I will, without argument, remove any images at the authors&#8217; or publisher&#8217;s request.</p>
]]></content:encoded>
			<wfw:commentRss>http://dougmccune.com/blog/2008/12/25/is-that-flex-on-my-kindle/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Slides from my Flash on the Beach session on decompiling SWFs</title>
		<link>http://dougmccune.com/blog/2008/10/01/slides-from-my-flash-on-the-beach-session-on-decompiling-swfs/</link>
		<comments>http://dougmccune.com/blog/2008/10/01/slides-from-my-flash-on-the-beach-session-on-decompiling-swfs/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 22:24:32 +0000</pubDate>
		<dc:creator>Doug</dc:creator>
				<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[Flash on the Beach]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[decompiling]]></category>

		<guid isPermaLink="false">http://dougmccune.com/blog/2008/10/01/slides-from-my-flash-on-the-beach-session-on-decompiling-swfs/</guid>
		<description><![CDATA[Here are the slides from my presentation that I gave today at Flash on the Beach. The presentation covers decompiling Flash and Flex SWFs and includes an overview of the tools available, a few examples of the kind of code you might see, and some security suggestions. I will not be posting any of the [...]]]></description>
			<content:encoded><![CDATA[<p>Here are the <a href="http://dougmccune.com/flex/FOTB_Decompiling_Doug_McCune.pdf">slides from my presentation</a> that I gave today at Flash on the Beach. The presentation covers decompiling Flash and Flex SWFs and includes an overview of the tools available, a few examples of the kind of code you might see, and some security suggestions. I will not be posting any of the code that I showed during the session (apart from the very tiny snippets in the slides). I think it&#8217;s pretty obvious why I&#8217;m not going to post the decompiled Photoshop Express code <img src='http://dougmccune.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I don&#8217;t think there&#8217;s any formal feedback survey or anything at FOTB, so if you were at my session I&#8217;d love to hear what you thought about it. You can email me at <a  rel="nofollow" id="emailShroud1" stoDom="dougmccune.com" stoUser="doug" href="http://www.somethinkodd.com/emailshroud/emailaddress.php?domainName=dougmccune.com&amp;userName=doug&amp;ver=2.0.0" >doug</a> or leave some comments here. Let me know what you liked and what you didn&#8217;t.</p>
]]></content:encoded>
			<wfw:commentRss>http://dougmccune.com/blog/2008/10/01/slides-from-my-flash-on-the-beach-session-on-decompiling-swfs/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>I just decompiled a decompiler so I could use it to decompile itself</title>
		<link>http://dougmccune.com/blog/2008/09/21/i-just-decompiled-a-decompiler-so-i-could-use-it-to-decompile-itself/</link>
		<comments>http://dougmccune.com/blog/2008/09/21/i-just-decompiled-a-decompiler-so-i-could-use-it-to-decompile-itself/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 03:51:12 +0000</pubDate>
		<dc:creator>Doug</dc:creator>
				<category><![CDATA[Flash on the Beach]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[decompiling]]></category>

		<guid isPermaLink="false">http://dougmccune.com/blog/2008/09/21/i-just-decompiled-a-decompiler-so-i-could-use-it-to-decompile-itself/</guid>
		<description><![CDATA[Update: Turns out that the code in Nemo 440 is actually just the code from the abcdump.as file in the Tamarin project. It looks like the abcdump.as file was written by Dan Schaffer from Adobe. So it turns out I could have just grabbed that file and not decompiled Nemo 440 at all, oh well [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> Turns out that the code in Nemo 440 is actually just the code from the <a href="http://hg.mozilla.org/tamarin-central/file/dddc6a8b13c3/utils/abcdump.as">abcdump.as</a> file in the Tamarin project. It looks like the <a href="http://hg.mozilla.org/tamarin-central/file/dddc6a8b13c3/utils/abcdump.as">abcdump.as</a> file was written by Dan Schaffer from Adobe. So it turns out I could have just grabbed that file and not decompiled Nemo 440 at all, oh well <img src='http://dougmccune.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  <a href="http://shigeru-nakagaki.com/index.cfm/2008/3/18/20080318-LibraryManager-Beta-is-released">Shigeru Nakagakai</a> has also used that same abcdump.as file to create his own AIR app that lets you compare SWFs and inspect classes and packages.</p>
<p>My brain almost exploded with meta-geekiness. If you haven&#8217;t seen the <a href="http://www.docsultant.com/nemo440/">Nemo 440</a> AIR app, it&#8217;s a SWF decompiler written in AS3 as an AIR application, written by <a href="http://www.docsultant.com/site2/main.html">Vadim Melnik</a>. It lets you load SWF files (or SWCs) and it will show you a list of all classes in the SWF, as well as the detailed ABC bytecode for each class. Technically I guess using the word &#8220;decompiler&#8221; isn&#8217;t correct, Nemo 440 is a SWF disassembler that produces ActionScript Byte Code (ABC). This isn&#8217;t the same as a true decompiler that produces real ActionScript code (like the <a href="http://www.sothink.com/product/flashdecompiler/index.htm">Sothink Decompiler</a>). </p>
<p>So if you download and play with <a href="http://www.docsultant.com/nemo440/">Nemo 440</a> you&#8217;ll see what it can do. Basically you can see all the classes in any SWF, and all the methods within those classes. You also get to see some stuff like class-level and static variables. Then if you want to uber geek out you can see the ActionScript Byte Code of the SWF. That means you get shit that looks like this:</p>
<pre><code>    0       getlocal0
    1       pushscope
    2       getlex        	http://www.adobe.com/2006/flex/mx/internal::layoutObject
    5       getlocal1
    6       setproperty   	direction
    9       findpropstrict	invalidateSize</code></pre>
<p>That&#8217;s far from being nice beautiful AS3 code that you can actually use, but if you spend enough time understanding ABC code you can start to make some sense of it. But even just seeing the packages, classes used, and the methods of all the classes is pretty awesome. </p>
<p>So after playing with Nemo 440 a bit I encountered the glaringly obvious question. What happens if I use Nemo 440 to decompile the Nemo 440 application itself? Excited in my geekery, I quickly extracted the SWF file from the AIR app and loaded it in, only to be sorely disappointed. When I decompiled the app I could see all the Flex classes and other libraries that were used (even some components from Flexlib!), but I couldn&#8217;t see any classes that were used to do the decompiling. Hmm, I thought, how odd.</p>
<p>I figured that it wasn&#8217;t technically possible that the dissassembler would work so well on all SWFs except itself, something was fishy. I mean, that just doesn&#8217;t make sense. So I decided to load the SWF into the Sothink Decompiler to have a look. Then I came across this little gem within the Nemo 440 source code:</p>
<pre><code>private function _checkName(param1:String) : Boolean
{
   if (param1 != null)
   {
      if (param1.indexOf("docsultant") &gt;= 0)
      {
         return false;
      }
      if (param1.indexOf("nemo440") &gt;= 0)
      {
         return false;
      }
   }
   return true;
}</code></pre>
<p>That code specifically checks if the package name matches one of the packages used in the Nemo 440 source code and excludes it from being processed! Mother fucker!</p>
<p>So I decompiled the code using the Sothink Decompiler, and then decided I wanted to put it back together into a running app. It took me about 6 hours or so of work, and I had to consult the <a href="http://www.adobe.com/devnet/swf/pdf/swf_file_format_spec_v9.pdf ">SWF specification document</a> and the <a href="http://www.adobe.com/devnet/actionscript/articles/avm2overview.pdf">AVM 2 spec document</a> a lot during the process, but I got it working.</p>
<p>So then I had my own AIR app that used the code from the Nemo 440 app to load SWFs and disassemble them. The first thing I did, obviously, was load up the Nemo 440 SWF file and give it a whirl, and I was instantly looking at the full class/package structure and the disassembled ABC bytecode of all the classes.</p>
<p>Ahh, sometimes it feels so good to geek out so much.</p>
<p>For those interested in learning more about decompiling, disassembling, ABC bytecode, and all that good stuff, I&#8217;ll be talking about this whole thing and a bunch more stuff in my presentation at <a href="http://flashonthebeach.com/">Flash on the Beach</a> in Brighton, England on October 1st. I won&#8217;t be posting the code that I decompiled and put back together, unless I get the original author&#8217;s permission (which I&#8217;ll be asking for, but haven&#8217;t yet done). Who knows, maybe the guy will be cool with open sourcing it <img src='http://dougmccune.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  but maybe not. And if not, that&#8217;s cool too, he put a lot of work into it (I have a great appreciation for the amount of work after reading through much of the SWF spec and seeing the kind of code he had to write). </p>
<p>I just thought the concept of decompiling the decompiler to decompile the decompiler was too cool. God, I&#8217;m such a geek.</p>
]]></content:encoded>
			<wfw:commentRss>http://dougmccune.com/blog/2008/09/21/i-just-decompiled-a-decompiler-so-i-could-use-it-to-decompile-itself/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Followup for Using BitmapData for Array manipulation: using a hashmap is (a little) faster</title>
		<link>http://dougmccune.com/blog/2008/09/14/followup-for-using-bitmapdata-for-array-manipulation-using-a-hashmap-is-a-little-faster/</link>
		<comments>http://dougmccune.com/blog/2008/09/14/followup-for-using-bitmapdata-for-array-manipulation-using-a-hashmap-is-a-little-faster/#comments</comments>
		<pubDate>Sun, 14 Sep 2008 22:24:28 +0000</pubDate>
		<dc:creator>Doug</dc:creator>
				<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://dougmccune.com/blog/2008/09/14/followup-for-using-bitmapdata-for-array-manipulation-using-a-hashmap-is-a-little-faster/</guid>
		<description><![CDATA[UPDATE: The test app has been updated to include a third test that uses a ByteArray approach. Looks like the ByteArray approach is the fastest, followed by the hash table, followed by the bitmap method. They&#8217;re all pretty close when you&#8217;re working with 10k or 100k records, but once you get into a million or [...]]]></description>
			<content:encoded><![CDATA[<div style="border:1px solid red; background-color:#efefef; padding:10px;">
<strong>UPDATE: </strong>The <a href="http://dougmccune.com/flex/bitmapArrayTests/ArrayTests.html">test app</a> has been updated to include a third test that uses a ByteArray approach. Looks like the ByteArray approach is the fastest, followed by the hash table, followed by the bitmap method. They&#8217;re all pretty close when you&#8217;re working with 10k or 100k records, but once you get into a million or more items then the ByteArray approach pulls ahead. Thanks to <a href="http://thebackbutton.com/">Alex Bustin</a> for sharing his code for the ByteArray test.
</div>
<p>After I <a href="http://dougmccune.com/blog/2008/09/13/using-bitmapdata-for-array-manipulation-in-as3">posted my technique</a> for using the Flash bitmap drawing methods to perform calculations on arrays, <a href="http://www.tom-carden.co.uk/">Tom Carden</a> started posting a few test of his own that tried to optimize some code-only algorithms. In his test he got an algorithm that used a hash table lookup method to be almost as fast as the bitmap method (but in his tests the hash table method was still slower than using bitmaps). I&#8217;ve created a slightly modified version of a hashmap algorithm that squeaks out just ahead of the bitmap test.</p>
<p>The algorithm basically just uses a very simple Array that holds boolean values that represent whether or not a particular item exists in the filtered array. So this is just like using the bitmap approach, except instead of creating different colored pixels, you just set the proper index in the array to true or false. Then once you have those two array of true/false values for both your filtered arrays, it&#8217;s just a matter of looping over the full array and checking the hash table arrays to see if a particular item exists in one, both, or neither of the filtered arrays.</p>
<p>And it turns out this is faster (but not by that much) than the bitmap method. But if you&#8217;re looking for the fastest way to take two arrays and find the unique values in either or the intersection or union, using this hash table method is the fastest way I&#8217;ve found so far. Too bad the bitmap stuff didn&#8217;t win, I was rooting for it&#8230; oh well, so it goes.</p>
<p>I&#8217;ve updated the <a href="http://dougmccune.com/flex/bitmapArrayTests/ArrayTests.html">test application</a> (<a href="http://dougmccune.com/flex/bitmapArrayTests/srcview/index.html">source</a>) to include this new algorithm too, and here are the performance test results on my machine These stats were generated by taking the average of about 10 runs of each algorithm, running in the standalone Flash Player (which seems significantly faster than in any browser):</p>
<table border="1">
<tr>
<th># of items</th>
<th>Hashmap test</th>
<th>Bitmap test</th>
</tr>
<tr>
<td>10 items</td>
<td>3 ms</td>
<td>4 ms</td>
</tr>
<tr>
<td>100 items</td>
<td>4 ms</td>
<td>4 ms</td>
</tr>
<tr>
<td>1,000 items</td>
<td>5 ms</td>
<td>6 ms</td>
</tr>
<tr>
<td>10,000 items</td>
<td>26 ms</td>
<td>26 ms</td>
</tr>
<tr>
<td>100,000 items</td>
<td>225 ms</td>
<td>237 ms</td>
</tr>
<tr>
<td>1 million items</td>
<td>2340 ms</td>
<td>2418 ms</td>
</tr>
<tr>
<td>2 million items</td>
<td>4874 ms</td>
<td>5705 ms</td>
</tr>
<tr>
<td>5 million items</td>
<td>13389 ms</td>
<td>14220 ms</td>
</tr>
</table>
<p>And here&#8217;s the full class that I created for testing this has table algorithm:</p>
<pre><code>package
{
import flash.utils.Dictionary;

public class ArrayHashProcessor
{
private var fullArray:Array;
public function setFullArray(value:Array):void {
	fullArray = value;
	reset();
}

public function reset():void {
	hashes = new Dictionary(true);
}

private var hashes:Dictionary;

public function filter(filterFunction:Function):Array {
	var newHash:Array = [];

	var filtered:Array = fullArray.filter( filterWithHash(filterFunction, newHash) );
	hashes[filtered] = newHash;

	return filtered;
}

private function filterWithHash(filterFunction:Function, hash:Object):Function
{
	return function(item:Object, index:int, array:Array):Boolean {
		var b:Boolean = filterFunction(item, index, array);
		hash[index] = b;
		return b;
	};
}

public function process(array1:Array, array2:Array):Array {

    var unique1:Array = [];
    var unique2:Array = [];
    var intersection:Array = [];
    var union:Array;

	var hash1:Array = hashes[array1];
	var hash2:Array = hashes[array2];

    fullArray.forEach(function(item:Object, i:int, a:Array):void {
        if (hash1[i]) {
            if (hash2[i]) {
                intersection.push(item);
            }
            else {
                unique1.push(item);
            }
        }
        else if (hash2[i]) {
            unique2.push(item);
        }
    });

    union = unique1.concat(unique2).concat(intersection);
    return [unique1, unique2, intersection, union];
}        

}
}</code></pre>
<p>There&#8217;s nothing real complicated here (and certainly nothing as visually interesting as using bitmaps). Basically you need to take advantage of using the filtering of the array as the place where you store the true/false value in the hash table (using the bitmap method this was where we called setPixel() as well). Doing that extra step in the filter function doesn&#8217;t add very much time to the filter function (but sticking a boolean into an Array is faster than calling setPixel on a bitmap). Then when you want to compare the arrays we just loop over each item in the full array and check the two hash tables.</p>
<p>So I&#8217;m a little sad to see my bitmap method gets surpassed by something so simple, but hey, that&#8217;s just how it works out sometimes. I suppose I should&#8217;ve tried this method first <img src='http://dougmccune.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  but then I wouldn&#8217;t have gotten to play with bitmaps.</p>
<p>If you know of an even faster way to accomplish the same thing, let me know in the comments. I&#8217;m thinking about trying out using a ByteArray as an alternative to storing the hash lookups in a normal Array, but my gut tells me that using writeByte and readByte will be slower than simply setting array[index] = true, but who knows.</p>
<p>Overall I&#8217;m happy I tried out <a href="http://dougmccune.com/blog/2008/09/13/using-bitmapdata-for-array-manipulation-in-as3">the bitmap approach</a> (even if I won&#8217;t be using it). I think it&#8217;s a pretty interesting way to approach the problem and it helps illustrate that sometimes thinking outside the box can have some pretty cool results.</p>
]]></content:encoded>
			<wfw:commentRss>http://dougmccune.com/blog/2008/09/14/followup-for-using-bitmapdata-for-array-manipulation-using-a-hashmap-is-a-little-faster/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
