<?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>Sean Monahan</title>
	<atom:link href="http://seanmonahan.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://seanmonahan.org</link>
	<description></description>
	<lastBuildDate>Fri, 19 Feb 2010 03:44:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>&#8220;Compressing&#8221; XML in Actionscript</title>
		<link>http://seanmonahan.org/2010/02/18/compressing-xml-in-actionscript/</link>
		<comments>http://seanmonahan.org/2010/02/18/compressing-xml-in-actionscript/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 03:44:22 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[Compression]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://seanmonahan.org/?p=446</guid>
		<description><![CDATA[Recently I&#8217;ve been working on a Flash-based game that uses XML for its level format.  Because of the ease with which a swf can be decompiled and its assets extracted I made the decision to not store level data in the swf itself.  Rather levels are loaded from a remote server into the [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve been working on a Flash-based game that uses XML for its level format.  Because of the ease with which a swf can be decompiled and its assets extracted I made the decision to not store level data in the swf itself.  Rather levels are loaded from a remote server into the game swf via AMF at runtime.  Hopefully this will make it more difficult to rip off my content, but certainly it will require a lot more data to be passed over the wire.</p>
<p><span id="more-446"></span></p>
<p>Each time a user loads up my game and requests a level the level will be sent from my server to the game.  This happens regardless if the player had previously downloaded the level at some point.  The only exception is that I store levels in a shared object during a game session (Well, sorta.  I won&#8217;t go into great detail here, but there is some client-side caching going on, but it&#8217;s not guaranteed).  The implications of this are that:</p>
<ol>
<li>I&#8217;ll used a LOT of bandwidth sending levels to players</li>
<li>Players will spend a fair amount of time downloading levels</li>
</ol>
<p>By reducing the size of the level files I can mitigate both of these issues.  Enter compression.  Or perhaps &#8220;mapping&#8221; is a better term.  The question becomes how to compress XML?  One of the qualities of XML is that is must be well-formed, that is, it must be a well-constructed, logical structure to hold data.  In the case of a tile-based level this means there will be lots of repeating data.  For example, a tile node in XML might look something like</p>
<pre>
<pre class="brush: xml;">

&lt;tile&gt;
    &lt;tileType&gt;myType&lt;/tileType&gt;
    &lt;tileImage&gt;myImage&lt;/tileImage&gt;
    &lt;someTileData&gt;blah&lt;/someTileData&gt;
    &lt;someMoreTileData&gt;blahblah&lt;/someMoreTileData&gt;
&lt;/tile&gt;
</pre>
</pre>
<p>So that&#8217;s not <em>that</em> much data until you take into account that the minimum size of a level for this game is 32&#215;18 cells for a total of 576 cells, at minimum.  The quick and dirty way to cut down on the file size is to remove &#8220;pretty printing&#8221;.  In XML parlance this refers to the nice indentations that make XML easily readable by humans.  Since my XML will only ever be read by software it doesn&#8217;t need to be pretty.  By removing pretty printing I was able to achieve a nice reduction in file size.  However it still wasn&#8217;t good enough for me.</p>
<p>The next step I took was to map things like tile types and names  &#8212; anything that was used over and over again in the game &#8212; to a static object.  Something like this:</p>
<pre>
<pre class="brush: as3;">

public class TileData
{
    public static const TILE_TYPE:String = &quot;1&quot;;
    public static const TILE_NAME:String = &quot;2&quot;;
    public static const SOME_TILE_DATA:String = &quot;3&quot;;
    public static const SOME_MORE_TILE_DATA:String = &quot;4&quot;;
    // and so on and so forth
}
</pre>
</pre>
<p>Doing this allowed me to replace things like &#8220;my relatively long tile type&#8221; with &#8220;a&#8221;.  This mapping is completely arbitrary and the only real constraints are that the mapping go from a long name to a shorter one (not strictly a constraint, but if you don&#8217;t do this why bother?) and that the mapped name be unique for the mapping type.</p>
<p>So now, after running through my mapping utility my xml looks something like this:</p>
<pre>
<pre class="brush: xml;">

&lt;tile&gt;
    &lt;tileType&gt;1&lt;/tileType&gt;
    &lt;tileImage&gt;2&lt;/tileImage&gt;
    &lt;someTileData&gt;3&lt;/someTileData&gt;
    &lt;someMoreTileData&gt;4&lt;/someMoreTileData&gt;
&lt;/tile&gt;
</pre>
</pre>
<p>So that can be a decent reduction in file size for xml, but we can take this one step further by also mapping the node names:</p>
<pre>
<pre class="brush: as3;">

public class CellData
{
    public static const TILE_NODE:String = &quot;a&quot;;
    public static const TILE_TYPE_NODE:String = &quot;b&quot;;
    public static const TILE_IMAGE_NODE:String = &quot;c&quot;;
    public static const SOME_TILE_DATA_NODE:String = &quot;d&quot;;
    public static const SOME_MORE_TILE_DATA_NODE:String = &quot;e&quot;;

}
</pre>
</pre>
<p>Resulting in:</p>
<pre>
<pre class="brush: xml;">

&lt;a&gt;
    &lt;b&gt;1&lt;/b&gt;
    &lt;c&gt;2&lt;/c&gt;
    &lt;d&gt;3&lt;/d&gt;
    &lt;e&gt;4&lt;/e&gt;
&lt;/a&gt;
</pre>
</pre>
<p>Or, with no pretty printing:</p>
<pre>
<pre class="brush: xml;">

&lt;a&gt;&lt;b&gt;1&lt;/b&gt;&lt;c&gt;2&lt;/c&gt;&lt;d&gt;3&lt;/d&gt;&lt;e&gt;4&lt;/e&gt;&lt;/a&gt;
</pre>
</pre>
<p>So, mapping xml data to static objects in ActionScript can put a pretty significant dent into the size of an xml document but what about the drawbacks?  The primary downside of this is keeping everything straight.  Node names must be unique, in that you cannot map both &#8220;myNodeA&#8221; and &#8220;myNodeB&#8221; to &#8220;A&#8221;, they must be mapped to separate values.  This means you have to keep track of what&#8217;s been used an what has not been used.  </p>
<p>This method also makes it very difficult to look at your exported xml and find any possible errors if you find yourself in a debugging situation.  The final issue that I&#8217;m running into is that I need to maintain the map in two locations: my level editor application that produces the xml and my game that consumes it (well, technically the editor also consumes this data as it can open saved files).  This last issue is largely a matter of cut and paste, but it is one more thing.</p>
<h3>Some Implementation Details</h3>
<p>So all this theory is good and well, now for some details.  My level editor is an AIR application written in Flex Builder 3 using the Cairngorm framework.  The game is using tile based levels and each level file is a list of each tile, or cell, that contains data of interest (i.e., one that is not blank) and some meta data for the level (think level name, creator, data created, etc.).</p>
<p>When a level is open in the editor all of this data is held in value objects.  I then maintain two mapping classes &#8212; the static classes mentioned above.  One of these classes maps xml node names, the other maps common tile values.  None of the meta data is mapped as it will effectively be unique for each level.  When a level is saved I gather up all the cells and meta data, loop through all this data and look up the mapping for each property and construct an XML object.</p>
<pre>
<pre class="brush: as3;">

// Assuming we have a TileVO like this
public class TileVO
{
    public var tileType:String;
    public var tileImage:Number;
    public var someTileData:String;
    public var someMoreTileData:int;
}

// When I save it would look something like the following

// ... begin snippet

var xml:XML = new XML();
var tileXml:XML;
for each (tile in tiles)
{
   tileXml = &lt;{CellData.TILE_NODE}&gt;&lt;/{CellData.TILE_NODE}&gt;;
   tileXml.appendChild(&lt;{CellData.TILE_TYPE_NODE}&gt;{tile.tileType}&lt;/{CellData.TILE_TYPE_NODE}&gt;);
   tileXml.appendChild(&lt;{CellData.TILE_IMAGE_NODE}&gt;{tile.tileImage}&lt;/{CellData.TILE_IMAGE_NODE}&gt;);
   tileXml.appendChild(&lt;{CellData.SOME_TILE_DATA_NODE}&gt;{tile.someTileData}&lt;/{CellData.SOME_TILE_DATA_NODE}&gt;);
   tileXml.appendChild(&lt;{CellData.SOME_MORE_TILE_DATA_NODE}&gt;{tile.someMoreTileData}&lt;/{CellData.SOME_MORE_TILE_DATA_NODE}&gt;);
   xml.appendChild(tileXml );
}

// ... end snippet
</pre>
</pre>
<p>Looking at this you&#8217;ll notice that I don&#8217;t actually map the value of the properties here, rather the mapping is how all the values are always stored, in memory or on disk.</p>
<p>To read this data in and map it back to value objects there is a slightly different syntax:</p>
<pre>
<pre class="brush: as3;">

// ... being snippet

var tileVO:TileVO;
var tiles:Array = [];
for each (var tileXml:XML in xml)
{
   tileVO.tileType = tileXml[CellData.TILE_TYPE_NODE];
   tileVO.tileImage = tileXml[CellData.TILE_IMAGE_NODE];
   tileVO.someTileData = tileXml[CellData.SOME_TILE_DATA_NODE];
   tileVO.someMoreTileData = tileXml[CellData.SOME_MORE_TILE_DATA_NODE];
   tiles.push(tileVO);
}

// ... end snippet
</pre>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://seanmonahan.org/2010/02/18/compressing-xml-in-actionscript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting SmartFTP?  Prepare to be Ripped Off.</title>
		<link>http://seanmonahan.org/2010/01/03/prepare-to-be-ripped-off/</link>
		<comments>http://seanmonahan.org/2010/01/03/prepare-to-be-ripped-off/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 20:05:17 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Soap Box]]></category>

		<guid isPermaLink="false">http://seanmonahan.org/?p=443</guid>
		<description><![CDATA[I&#8217;ve been using SmartFTP for some time now and aside from the too frequent crashing in the middle of an upload it&#8217;s a pretty nice FTP client.  I like that it supports tabs and is just easy to use effectively.  What I most certainly do not like is the system SmartFTP has in [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="http://smartftp.com">SmartFTP</a> for some time now and aside from the too frequent crashing in the middle of an upload it&#8217;s a pretty nice FTP client.  I like that it supports tabs and is just easy to use effectively.  What I most certainly do not like is the system SmartFTP has in place to force users who paid a &#8220;one-time&#8221; licensing fee to upgrade.<br />
<span id="more-443"></span><br />
I recently upgraded from Windows Vista to Windows 7 and as part of process I reinstalled SmartFTP.  I had purchased the version 3.0 license and I was happy enough with the software to continue using it.  However, version 4.0 had since come out and it was impossible to find version 3.0 anywhere on the web.  It seems the SmartFTP folks had done an excellent job of erasing the 3.0 version from existence.  So even though I had a license that lasted until the end of time for version 3.0 is was screwed since I had neglected to keep the installer file.</p>
<p>Having just been robbed on about $25 I&#8217;m keeping my installer file and license key in a safe place so I can&#8217;t be taken again.  I would love to recommend making a switch to some other FTP client, but sadly, I think SmartFTP is the best one available for Windows.  So instead I&#8217;ll recommend that everyone who purchases a license for SmartFTP keep the installer file and license file in a safe place.</p>
]]></content:encoded>
			<wfw:commentRss>http://seanmonahan.org/2010/01/03/prepare-to-be-ripped-off/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>UPDATE: Adding Build Paths to Flex Projects on Windows 7 64-bit</title>
		<link>http://seanmonahan.org/2009/12/05/adding-build-paths-to-flex-projects-on-windows-7-64-bit/</link>
		<comments>http://seanmonahan.org/2009/12/05/adding-build-paths-to-flex-projects-on-windows-7-64-bit/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 01:12:28 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Build Path]]></category>
		<category><![CDATA[Flex Builder 3]]></category>
		<category><![CDATA[Windows 7 64-bit]]></category>

		<guid isPermaLink="false">http://seanmonahan.org/?p=435</guid>
		<description><![CDATA[I recently upgraded to Windows 7 x64 from Windows Vista x64 and I must say I&#8217;m loving it!  However, much like Vista x64 before it Win7 x64 doesn&#8217;t play nice with Flex Builder.  I still have issues with blank dialogs (for which I found a work around) but now I have an issue [...]]]></description>
			<content:encoded><![CDATA[<p>I recently upgraded to Windows 7 x64 from Windows Vista x64 and I must say I&#8217;m loving it!  However, much like Vista x64 before it Win7 x64 doesn&#8217;t play nice with Flex Builder.  I still have issues with blank dialogs (for which I found a <a href="http://seanmonahan.org/2009/06/12/blank-project-properties-in-flex-builder-3-on-windows-vista-64-bit/">work around</a>) but now I have an issue with adding build paths.<br />
<span id="more-435"></span><br />
When this problem first reared it&#8217;s head I tried looking at the project meta files and was unable to get a fix.  Since I also work on a MacBook Pro where everything works fine, I left it be until I saw <a href="http://www.actionscript.org/forums/showthread.php3?p=947463&#038;posted=1#post947463">this</a> post on the actionscript.org forum.  While posting a response detailing my experience with the bug it occurred to me that this all worked fine on Mac OS so I should probably have the proper build path entries in my project meta files on my Mac.</p>
<p>Sure enough the entries were there:</p>
<pre>
&lt;compilerSourcePath&gt;
      &lt;compilerSourcePathEntry kind="1" linkType="1" path="properties"/&gt;
      &lt;compilerSourcePathEntry kind="1" linkType="1" path="locale/{locale}"/&gt;
&lt;/compilerSourcePath&gt;
</pre>
<p>At this point I&#8217;m not really sure what the <tt>kind</tt> and <tt>linkType</tt> properties are for other than the fact that <tt>1</tt> is the default for both of them.  I&#8217;ll post back as I found out more.  In the meantime this has allowed me to add build paths to my projects with Flex Builder 3 on Windows 7 x64.</p>
<p>UPDATE.</p>
<p>Seems turning off the Logitech software I use for my mouse and keyboard resolves this problem altogether.</p>
]]></content:encoded>
			<wfw:commentRss>http://seanmonahan.org/2009/12/05/adding-build-paths-to-flex-projects-on-windows-7-64-bit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Restoring a Minimized AIR App From the Mac OS Dock</title>
		<link>http://seanmonahan.org/2009/12/02/restoring-a-minimized-air-app-from-the-mac-os-dock/</link>
		<comments>http://seanmonahan.org/2009/12/02/restoring-a-minimized-air-app-from-the-mac-os-dock/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 17:16:38 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Mac OS]]></category>

		<guid isPermaLink="false">http://seanmonahan.org/?p=433</guid>
		<description><![CDATA[Here&#8217;s a link to a post I did over at the BKWLD blog about making AIR apps more seamless on Mac OS.
]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a <a href="http://bkwld.com/blog/2009/11/restoring-a-minimized-air-app-from-the-mac-os-dock/">link</a> to a post I did over at the BKWLD blog about making AIR apps more seamless on Mac OS.</p>
]]></content:encoded>
			<wfw:commentRss>http://seanmonahan.org/2009/12/02/restoring-a-minimized-air-app-from-the-mac-os-dock/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating Application Menus in Mac OSX with Adobe AIR</title>
		<link>http://seanmonahan.org/2009/11/15/creating-application-menus-in-mac-osx-with-adobe-air/</link>
		<comments>http://seanmonahan.org/2009/11/15/creating-application-menus-in-mac-osx-with-adobe-air/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 19:46:36 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Application Menu]]></category>
		<category><![CDATA[Mac OS]]></category>

		<guid isPermaLink="false">http://seanmonahan.org/?p=430</guid>
		<description><![CDATA[I recently wrote a post over on the Buk Life blog about creating native menus with Adobe AIR in Mac OS.  The emphasis of the article is making the &#8220;application name&#8221; menu (e.g., &#8220;Safari&#8221; for the Safari browser) look like it belongs when creating customized application menus.
You can read the full article here: Creating [...]]]></description>
			<content:encoded><![CDATA[<p>I recently wrote a post over on the <a href="http://bkwld.com/blog/">Buk Life</a> blog about creating native menus with Adobe AIR in Mac OS.  The emphasis of the article is making the &#8220;application name&#8221; menu (e.g., &#8220;Safari&#8221; for the Safari browser) look like it belongs when creating customized application menus.</p>
<p>You can read the full article here: <a href="http://bkwld.com/blog/2009/11/creating-application-menus-in-mac-osx-with-adobe-air/">Creating Application Menus in Mac OSX with Adobe AIR</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://seanmonahan.org/2009/11/15/creating-application-menus-in-mac-osx-with-adobe-air/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Job, New Blog</title>
		<link>http://seanmonahan.org/2009/11/15/new-job-new-blo/</link>
		<comments>http://seanmonahan.org/2009/11/15/new-job-new-blo/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 19:38:37 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://seanmonahan.org/?p=424</guid>
		<description><![CDATA[Back in August I took a new job as a Flex Developer at BKWLD in Seattle.  I now primaril work on an Adobe AIR application called Elastic Sales that is a new take on a catalog and ordering systems.
BKWLD also has it&#8217;s own blog so I&#8217;ll be blogging about work-related topics and things I [...]]]></description>
			<content:encoded><![CDATA[<p>Back in August I took a new job as a Flex Developer at <a href="http://bkwld.com">BKWLD</a> in Seattle.  I now primaril work on an Adobe AIR application called <a href="http://elasticsuite.com">Elastic Sales</a> that is a new take on a catalog and ordering systems.</p>
<p>BKWLD also has it&#8217;s own blog so I&#8217;ll be blogging about work-related topics and things I learn about Flex through work there.  You can follow me <a href="http://bkwld.com/blog/author/sean/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://seanmonahan.org/2009/11/15/new-job-new-blo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some Pontiac Ventura Restoration Pix</title>
		<link>http://seanmonahan.org/2009/08/04/some-pontiac-ventura-restoration-pix/</link>
		<comments>http://seanmonahan.org/2009/08/04/some-pontiac-ventura-restoration-pix/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 12:00:25 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Frustration]]></category>
		<category><![CDATA[Pontiac]]></category>
		<category><![CDATA[Restoration]]></category>
		<category><![CDATA[Ventura]]></category>

		<guid isPermaLink="false">http://seanmonahan.org/?p=407</guid>
		<description><![CDATA[I&#8217;ve always wanted to learn about working on cars so I&#8217;ve been helping a buddy restore his grandfather&#8217;s 1973 Pontiac Ventura Sprint Custom Hatchback.  It&#8217;s been a lot of fun and a lot of frustration.

It stared with getting the front bumper off which was secured with about 16 bolts and one metric (yes, metric [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve always wanted to learn about working on cars so I&#8217;ve been helping a buddy restore his grandfather&#8217;s 1973 Pontiac Ventura Sprint Custom Hatchback.  It&#8217;s been a lot of fun and a lot of frustration.</p>
<p><span id="more-407"></span></p>
<p>It stared with getting the front bumper off which was secured with about 16 bolts and one metric (yes, metric on a 1973 American car) bolt.  This took awhile since we didn&#8217;t think two of the bolts needed to be removed to pull the bumper off.  We were wrong, a trend that would continue with this project.</p>
<p>Next we removed the hood and fenders all so we could remove the &#8220;Ventura&#8221; insignia on the fenders and then we started on the rear bumper.  The rear bumper that, much like the front one, we thought we had ready to remove.  The rear bumper that ate a wrench and necessitated the over-nighting of new wrenches.  The rear bumper that had to have a stripped bolt drilled out of it.  The rear bumper that still took twenty minutes to remove <em>after</em> all the bolts were removed.  It&#8217;s off now.</p>
<p>While waiting on the wrenches needed for the rear bumper we went to work on the rest of the car&#8217;s insignia.  This included a &#8220;Custom&#8221; and Pontiac logo on each side behind the rear windows and a &#8220;Custom Hatchback&#8221; insignia on the the back.  Figuring these insignia were much the the ones on the fenders we took apart the interior to gain easy access to the bolts from the inside.  Turns out the interior was welded in such a way to make accessing them impossible.  </p>
<p>So we started pulling them off.</p>
<p>And this proceeded for about an hour with little progress.  We tried razor blades, knives, screwdrivers all to get some leverage.  None of it worked.  In the end we invented the ultimate insignia removing tool.  This tool is constructed from microfiber cloth and duct tape.  It starts with a thin piece of duct tape that gets progressively thicker until it connects to the microfiber.  Using this we were able to remove all the remaining insignia in about fifteen minutes.</p>
<p>Presently the Ventura is sanded and ready to be primed.  Some pix are below.</p>

<div class="ngg-galleryoverview" id="ngg-gallery-13">


	
	<!-- Thumbnails -->
		
	<div id="ngg-image-50" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_010.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_010.jpg" alt="ventura_010.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_010.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 		
	<div id="ngg-image-51" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_009.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_009.jpg" alt="ventura_009.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_009.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 		
	<div id="ngg-image-52" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_008.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_008.jpg" alt="ventura_008.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_008.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 		
	<div id="ngg-image-53" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_007.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_007.jpg" alt="ventura_007.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_007.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 		
	<div id="ngg-image-54" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_006.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_006.jpg" alt="ventura_006.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_006.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 		
	<div id="ngg-image-55" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_005.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_005.jpg" alt="ventura_005.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_005.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 		
	<div id="ngg-image-56" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_004.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_004.jpg" alt="ventura_004.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_004.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 		
	<div id="ngg-image-57" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_003.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_003.jpg" alt="ventura_003.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_003.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 		
	<div id="ngg-image-58" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_002.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_002.jpg" alt="ventura_002.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_002.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 		
	<div id="ngg-image-59" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_001.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_001.jpg" alt="ventura_001.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_001.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 		
	<div id="ngg-image-60" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_019.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_019.jpg" alt="ventura_019.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_019.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 		
	<div id="ngg-image-61" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_018.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_018.jpg" alt="ventura_018.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_018.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 		
	<div id="ngg-image-62" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_017.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_017.jpg" alt="ventura_017.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_017.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 		
	<div id="ngg-image-63" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_016.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_016.jpg" alt="ventura_016.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_016.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 		
	<div id="ngg-image-64" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_015.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_015.jpg" alt="ventura_015.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_015.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 		
	<div id="ngg-image-65" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_014.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_014.jpg" alt="ventura_014.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_014.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 		
	<div id="ngg-image-66" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_013.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_013.jpg" alt="ventura_013.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_013.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 		
	<div id="ngg-image-67" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_012.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_012.jpg" alt="ventura_012.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_012.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 		
	<div id="ngg-image-68" class="ngg-gallery-thumbnail-box">
		<div class="ngg-gallery-thumbnail" >
			<a href="http://seanmonahan.org/wp-content/gallery/ventura-01/ventura_011.jpg" title="" class="thickbox" rel="ventura-01" >
				<img title="ventura_011.jpg" alt="ventura_011.jpg" src="http://seanmonahan.org/wp-content/gallery/ventura-01/thumbs/thumbs_ventura_011.jpg" width="100" height="75" />
			</a>
		</div>
	</div>
 	 	
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>


]]></content:encoded>
			<wfw:commentRss>http://seanmonahan.org/2009/08/04/some-pontiac-ventura-restoration-pix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bingo!</title>
		<link>http://seanmonahan.org/2009/07/06/bingo/</link>
		<comments>http://seanmonahan.org/2009/07/06/bingo/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 17:39:03 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://seanmonahan.org/?p=404</guid>
		<description><![CDATA[After sitting on the fence about Prototype I decided to go ahead and get it and this pretty much nails my thoughts.
]]></description>
			<content:encoded><![CDATA[<p>After sitting on the fence about <i>Prototype</i> I decided to go ahead and get it and <a href="http://penny-arcade.com/comic/2009/6/19/">this</a> pretty much nails my thoughts.</p>
]]></content:encoded>
			<wfw:commentRss>http://seanmonahan.org/2009/07/06/bingo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UPDATE. Blank Project Properties in Flex Builder 3 on Windows Vista 64-bit</title>
		<link>http://seanmonahan.org/2009/06/12/blank-project-properties-in-flex-builder-3-on-windows-vista-64-bit/</link>
		<comments>http://seanmonahan.org/2009/06/12/blank-project-properties-in-flex-builder-3-on-windows-vista-64-bit/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 19:36:01 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Flex Builder]]></category>
		<category><![CDATA[Project Properties]]></category>
		<category><![CDATA[Windows 64-bit]]></category>
		<category><![CDATA[x64]]></category>

		<guid isPermaLink="false">http://seanmonahan.org/?p=399</guid>
		<description><![CDATA[I recently made the switch to Vista 64-bit (loving it by the way, 8GB of RAM is most excellent) and it&#8217;s been a mostly pain-free conversion.  One program that as behaved&#8230;curiously&#8230;since the upgrade is Flex Builder 3.
Just today I found a bug that seems to affect 64-bit Windows user in the Project Properties dialog. [...]]]></description>
			<content:encoded><![CDATA[<p>I recently made the switch to Vista 64-bit (loving it by the way, 8GB of RAM is most excellent) and it&#8217;s been a mostly pain-free conversion.  One program that as behaved&#8230;curiously&#8230;since the upgrade is Flex Builder 3.</p>
<p>Just today I found a bug that seems to affect 64-bit Windows user in the Project Properties dialog.  The bug in question is that the &#8220;Flex Modules&#8221; section of the properties dialog is blank.  So there is no way to add or remove modules from the project build.  To fix this, open the Properties dialog (Project > Properties), click on &#8220;Resources&#8221; and resize the window horizontally to be as thin as possible.  Then click on &#8220;Flex Modules&#8221; and resize the window to be usable again and BAM! just like magic the modules appear!</p>
<p>UPDATE</p>
<p>I&#8217;ve found that an easier way to do this is just adjust the divider between the list on the left hand side of the dialog and the right hand content area.  Just adjusting the divider a smidge will cause everything to magically appear.</p>
]]></content:encoded>
			<wfw:commentRss>http://seanmonahan.org/2009/06/12/blank-project-properties-in-flex-builder-3-on-windows-vista-64-bit/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Changing the Font Size in Flex Builder</title>
		<link>http://seanmonahan.org/2009/04/21/changing-the-font-size-in-flex-builder/</link>
		<comments>http://seanmonahan.org/2009/04/21/changing-the-font-size-in-flex-builder/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 22:54:11 +0000</pubDate>
		<dc:creator>Sean</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Flex Builder]]></category>

		<guid isPermaLink="false">http://seanmonahan.org/?p=397</guid>
		<description><![CDATA[I&#8217;ve had to reset the font size in Flex Builder a few times now and each time I forget, not because it&#8217;d been so long since I&#8217;d last changed the font size, but because the setting is buried away, hidden from view.
To change the font size in Flex Builder click Window > Preferences&#8230;.  In [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had to reset the font size in Flex Builder a few times now and each time I forget, not because it&#8217;d been so long since I&#8217;d last changed the font size, but because the setting is buried away, hidden from view.</p>
<p>To change the font size in Flex Builder click Window > Preferences&#8230;.  In the dialog that pops up click General > Appearance > Colors and Fonts and expand the Basic rollout.  In the Basic rollout there are a bunch of options, click Text Font and then click the Change&#8230; button that appears.  It should be smooth sailing from here.</p>
]]></content:encoded>
			<wfw:commentRss>http://seanmonahan.org/2009/04/21/changing-the-font-size-in-flex-builder/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
