<?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"
	>

<channel>
	<title>joeberkovitz.com &#187; Uncategorized</title>
	<atom:link href="http://joeberkovitz.com/blog/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://joeberkovitz.com/blog</link>
	<description>Just another WordPress weblog</description>
	<pubDate>Tue, 30 Dec 2008 15:57:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>Going Back to Cali</title>
		<link>http://joeberkovitz.com/blog/2008/12/30/going-back-to-cali/</link>
		<comments>http://joeberkovitz.com/blog/2008/12/30/going-back-to-cali/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 15:57:34 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://joeberkovitz.com/blog/?p=131</guid>
		<description><![CDATA[Although not exactly the Cali represented in LL Cool J&#8217;s immortal deadpan number.  (Also check out the wonderful sax solo at the end, playing a minor 3rd up from the key of the tune.)
On Friday, I fly to San Francisco, rent a car, drive to San Rafael, meet spouse who is already there, and then [...]]]></description>
			<content:encoded><![CDATA[<p>Although not <em>exactly</em> the Cali represented in<a href="http://www.youtube.com/watch?v=IC7iIttp6cY"> LL Cool J&#8217;s immortal deadpan number</a>.  (Also check out the wonderful sax solo at the end, playing a minor 3rd up from the key of the tune.)</p>
<p>On Friday, I fly to San Francisco, rent a car, drive to San Rafael, meet spouse who is already there, and then we&#8217;ll spend 6 glorious days moseying around the wilds of the Mendocino County and northern Marin coastlines.  Goodbye, work, for a while.  I predict there will be some kind of trip report!</p>
]]></content:encoded>
			<wfw:commentRss>http://joeberkovitz.com/blog/2008/12/30/going-back-to-cali/feed/</wfw:commentRss>
		</item>
		<item>
		<title>David Coletta at Boston Flex Users Group 11/11</title>
		<link>http://joeberkovitz.com/blog/2008/11/06/david-coletta-at-boston-flex-users-group-1111/</link>
		<comments>http://joeberkovitz.com/blog/2008/11/06/david-coletta-at-boston-flex-users-group-1111/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 13:17:24 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://joeberkovitz.com/blog/?p=98</guid>
		<description><![CDATA[A quick squib here to note that my friend David Coletta will be talking about building unified codebases for AIR and Flex at the November Boston Flex User Group meeting.
Go see David.  Go see David.  Go see David.
Is there anything about &#8220;Go see David&#8221; that you don&#8217;t understand?  He&#8217;s a dynamic, intelligent and very, very [...]]]></description>
			<content:encoded><![CDATA[<p>A quick squib here to note that my friend <a href="http://colettas.org">David Coletta</a> will be talking about building unified codebases for AIR and Flex at the November <a href="http://bostonfug.org/">Boston Flex User Group meeting</a>.</p>
<p>Go see David.  Go see David.  Go see David.</p>
<p>Is there anything about &#8220;Go see David&#8221; that you don&#8217;t understand?  He&#8217;s a dynamic, intelligent and very, very informative speaker.  Hope to see you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://joeberkovitz.com/blog/2008/11/06/david-coletta-at-boston-flex-users-group-1111/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Heading to Atlanta to Speak at 360Flex</title>
		<link>http://joeberkovitz.com/blog/2008/02/23/heading-to-atlanta-to-speak-at-360flex/</link>
		<comments>http://joeberkovitz.com/blog/2008/02/23/heading-to-atlanta-to-speak-at-360flex/#comments</comments>
		<pubDate>Sat, 23 Feb 2008 14:00:56 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.joeberkovitz.com/blog/2008/02/23/heading-to-atlanta-to-speak-at-360flex/</guid>
		<description><![CDATA[After a far-too-short breather from the last snow-encrusted landing at Logan Airport, I will be flying to Atlanta on Monday to speak at the 360Flex conference Tuesday morning.  I really like this conference because it&#8217;s small, 100% focused on Flex development and has an extra-congenial, hang-friendly atmosphere.
Many of my speaking topics have to do [...]]]></description>
			<content:encoded><![CDATA[<p>After a far-too-short breather from the last snow-encrusted landing at Logan Airport, I will be flying to Atlanta on Monday to speak at the <a href="http://360flex.eventbrite.com/">360Flex</a> conference Tuesday morning.  I really like this conference because it&#8217;s small, 100% focused on Flex development and has an extra-congenial, hang-friendly atmosphere.</p>
<p>Many of my speaking topics have to do with architecture, patterns, or some kind of preaching about best engineering practices.  I love all that, but, to be completely frank, it feels a bit abstract and windy sometimes.  I like to build concrete stuff that does something useful, and that&#8217;s where my real interests lie.  (&#8221;Dammit, captain, I&#8217;m an engineer, not a methodologist&#8230;&#8221;)  So this year I&#8217;ve made a pact with myself to only do talks about real live projects.</p>
<p>At 360 Flex I&#8217;ll be sharing a detailed case study of the architecture and implementation inside the most challenging and interesting product we&#8217;ve built at Allurent to date: the Allurent Display Platform.  This system includes an engine that visually renders XML markup as Flex components &#8212; but unlike MXML or HTML, the markup resolves bindings to nonvisual data objects (usually products or product categories) that can live anywhere in a &#8220;virtual namespace&#8221; of content.  Allurent Display also includes a fully-featured visual authoring tool for this markup similar to Flex Builder Design View.</p>
<p>This talk is a case study, not a product demo: I will be sharing the big decisions we made, the Flex or Flash technologies we used, the implementation tricks we had to resort to, the alternate approaches we considered (maybe the audience will propose something better).  I think it&#8217;ll be a fun time.  Anyway, hope to see you there, if this kind of thing interests you!</p>
]]></content:encoded>
			<wfw:commentRss>http://joeberkovitz.com/blog/2008/02/23/heading-to-atlanta-to-speak-at-360flex/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Flex Builder Source Folders Need to Go Back in the Oven</title>
		<link>http://joeberkovitz.com/blog/2007/10/31/flex-builder-source-folders-need-to-go-back-in-the-oven/</link>
		<comments>http://joeberkovitz.com/blog/2007/10/31/flex-builder-source-folders-need-to-go-back-in-the-oven/#comments</comments>
		<pubDate>Wed, 31 Oct 2007 14:56:53 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.joeberkovitz.com/blog/?p=57</guid>
		<description><![CDATA[&#8220;The pain, the pain&#8230;&#8221;
&#8211; Jonathan Harris as Dr. Zachary Smith in the original Lost in Space
Dr. Smith was famous for whining, and so am I.  Here&#8217;s my latest: Flex Builder does not work very well with multiple source folders in a project&#8217;s path.  Probably the worst breakage is that integrated SVN source control [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>&#8220;The pain, the pain&#8230;&#8221;<br />
&#8211; <em>Jonathan Harris as Dr. Zachary Smith in the original </em>Lost in Space</p></blockquote>
<p>Dr. Smith was famous for whining, and so am I.  Here&#8217;s my latest: Flex Builder does not work very well with multiple source folders in a project&#8217;s path.  Probably the worst breakage is that integrated SVN source control (via the Subclipse plugin) doesn&#8217;t work inside them (<a href="https://bugs.adobe.com/jira/browse/FB-9989">FB-9989</a>).  Second worst would be that library projects can&#8217;t compile classes from multiple source folders (<a href="https://bugs.adobe.com/jira/browse/FB-9988">FB-9988</a>).  Yet another baddie: <a href="https://bugs.adobe.com/jira/browse/FB-5564">FB-5564</a>: if you use Ctrl-click to navigate to a definition in a class which is in a linked source folder, a new window is opened unnecessarily, as if FB didn&#8217;t know that two files were actually the same.  All this is too bad, because source folders are a really good solution to another serious problem with Flex Builder, and one that is probably harder for Adobe to fix: poor performance with multiple library projects.</p>
<p>If you&#8217;re using Flex Builder on some large applications with a number of library projects, you may have noticed it gets <strong>real</strong> slow.  Yeah, I&#8217;ve noticed that too.  It&#8217;s too bad, because using lots of small-to-medium libraries forces developers to be much more careful about dependencies between packages.</p>
<p>At Allurent, our approach to this problem has been to structure our Flex Builder projects for speed rather than strict dependency checking.  We use Ant for all production builds (it builds multiple .swcs for dependency checking), while developers can use Flex Builder for incremental builds while they work on a project, if they want.  To get around the big slowdown problem, we create mega-projects that include all the libraries&#8217; source code directly via multiple source paths.  While such projects are slow to open and start up, once you build them and warm up Eclipse&#8217;s caches they perform quite well.</p>
<p>The big fly in the jam jar &#8212; I know it&#8217;s usually ointment that metaphorical flies get stuck in, but that phrase gets kind of old, doesn&#8217;t it? &#8212; is that source folders are kind of semi-functional in Flex Builder.  The fact that Subclipse doesn&#8217;t treat the contents of source folders as versioned (even if they are) is really frustrating.  Maybe some folks out there are frustrated too.  If you are please consider voting on the above bugs!</p>
]]></content:encoded>
			<wfw:commentRss>http://joeberkovitz.com/blog/2007/10/31/flex-builder-source-folders-need-to-go-back-in-the-oven/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Please Rinse Your Used Planet Before Recycling</title>
		<link>http://joeberkovitz.com/blog/2007/09/13/please-rinse-your-used-planet-before-recycling/</link>
		<comments>http://joeberkovitz.com/blog/2007/09/13/please-rinse-your-used-planet-before-recycling/#comments</comments>
		<pubDate>Thu, 13 Sep 2007 13:04:36 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.joeberkovitz.com/blog/?p=52</guid>
		<description><![CDATA[Lately I had been taking occasional solace from the fact that our planet seemed to be one of those disposable models.  We have been making a royal mess of it, but at least (or so I had thought) in 5 billion years Earth would be incinerated in a thermonuclear explosion, courtesy of our Sun&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Lately I had been taking occasional solace from the fact that our planet seemed to be one of those disposable models.  We have been making a royal mess of it, but at least (or so I had thought) in 5 billion years Earth would be incinerated in a thermonuclear explosion, courtesy of our Sun&#8217;s transition into a red giant.  I thought of Earth as sort of a planetary Huggie, something that gets dirty and smells bad but ultimately gets thrown away, burning into nuclear ash and leaving a cleaner galaxy behind it.</p>
<p>But today, courtesy of the New York Times, I read:</p>
<blockquote><p>About five billion years from now, astronomers say, the Sun will run out of hydrogen fuel and swell temporarily more than 100 times in diameter into a so-called red giant, swallowing Mercury and Venus and dooming life on Earth, but perhaps not Earth itself.  Astronomers are announcing that they have discovered a planet that seems to have survived the puffing up of its home star, suggesting there is some hope that Earth could survive the aging and swelling of the Sun.</p></blockquote>
<p>So it appears that Earth may instead be destined for some kind of galactic curbside recycling bin.</p>
<p>If so, I think it would make sense for us to leave the planet in some kind of reasonable shape after all.  You wouldn&#8217;t recycle filthy, unwashed food containers out on the street, where they would attract flies.  Would you?  No, I thought not.  Likewise, you shouldn&#8217;t leave a nasty, polluted planet lying around the solar system where it might attract&#8230; well, I&#8217;m not sure what.  Anyway, my plea stands: let&#8217;s clean this place up so it&#8217;s ready for recycling.  We can do this any time in the next 5 billion years or so.</p>
]]></content:encoded>
			<wfw:commentRss>http://joeberkovitz.com/blog/2007/09/13/please-rinse-your-used-planet-before-recycling/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Wii be rollin&#8217;&#8230;</title>
		<link>http://joeberkovitz.com/blog/2007/04/16/wii-be-rollin/</link>
		<comments>http://joeberkovitz.com/blog/2007/04/16/wii-be-rollin/#comments</comments>
		<pubDate>Mon, 16 Apr 2007 11:58:04 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[Bicycling]]></category>

		<category><![CDATA[Miscellaneous]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.joeberkovitz.com/blog/?p=43</guid>
		<description><![CDATA[I&#8217;ve just emerged from my thrice-weekly morning session with the bike trainer.  It&#8217;s gotten a lot easier to deal with the boredom of stationary pedaling thanks to the Wii that we bought &#8220;for the kids&#8221;.
No, dear reader, I am not in fact coordinated enough to play Zelda or Wii Sports while pedaling furiously.  [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just emerged from my thrice-weekly morning session with the bike trainer.  It&#8217;s gotten a lot easier to deal with the boredom of stationary pedaling thanks to the Wii that we bought &#8220;for the kids&#8221;.</p>
<p>No, dear reader, I am not in fact coordinated enough to play Zelda or Wii Sports while pedaling furiously.  (OK&#8230; make that semi-furiously.)  What I am able to do is surf the web using the Wii&#8217;s built-in web browser, pointing and clicking the Wii Remote in one hand while maintaining pace and position on the bike.  And this, from my point of view, is one very good reason to get hold of one of these gadgets.  Now I can read a wide variety of stuff while doing my workout, and exercise free choice over it.  <em>That&#8217;s</em> progress!</p>
<p>There are plenty of other reasons to check out the Wii.  The remote (which has 6 degrees of free motion as well as buttons and internal accelerometers) is a really interesting input device, and it can interface via Bluetooth with a PC or Mac, and folks are coming out with some great homebrew hardware and software to provide connectivity for developers.  Combine the remote with <a href="http://flex.org">Flex</a>, <a href="http://www.wiiflash.org/">WiiFlash</a> and <a href="http://www.papervision3d.org/">Papervision3D</a>, and suddenly you&#8217;re looking at an impressive 3D visualization platform.  Hmmm&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://joeberkovitz.com/blog/2007/04/16/wii-be-rollin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>An ActionScript interpreter, courtesy of JavaScript and Apollo</title>
		<link>http://joeberkovitz.com/blog/2007/04/12/an-actionscript-interpreter-courtesy-of-javascript-and-apollo/</link>
		<comments>http://joeberkovitz.com/blog/2007/04/12/an-actionscript-interpreter-courtesy-of-javascript-and-apollo/#comments</comments>
		<pubDate>Thu, 12 Apr 2007 22:28:07 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.joeberkovitz.com/blog/?p=42</guid>
		<description><![CDATA[I&#8217;ve been experimenting quite a bit this week with Apollo, in preparation for a wee talk on the subject at Harvard.  I&#8217;ve been building out that dependency analysis tool in Apollo and exploring the cool Javascript/Actionscript bridging capabilities in a series of examples.
Something amusing came up in the course of exploring script bridging: because [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been experimenting quite a bit this week with <a href="http://labs.adobe.com/technologies/apollo/">Apollo</a>, in preparation for a wee talk on the subject at Harvard.  I&#8217;ve been building out that dependency analysis tool in Apollo and exploring the cool Javascript/Actionscript bridging capabilities in a series of examples.</p>
<p>Something amusing came up in the course of exploring script bridging: because JavaScript has the <tt>eval()</tt> function, and because AS3 objects are visible in an Apollo HTML DOM as fully fledged Javascript objects, one can easily use eval() in a Javascript context to evaluate live AS3 function calls, property assignments, and so on.  Very, very nice!</p>
<p>For example,</p>
<pre>
&lt;head&gt;
&lt;script&gt;var obj;&lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;input id="expr" type="text" size="80"/&gt;
&lt;a href="#" onClick="eval(document.getElementById('expr').value)"&gt;
  Evaluate
&lt;/a&gt;
&lt;/body&gt;
</pre>
<p>If you stuff this HTML into an HtmlControl, set that control&#8217;s <tt>window.obj</tt> to some AS3 object (say a <tt>Label</tt> for argument&#8217;s sake), then you can eval expressions like <tt>obj.setStyle(&#8221;fontFamily&#8221;, &#8220;Tahoma&#8221;)</tt> inside the HtmlControl and watch them take effect before your eyes.  Should be a great debugging hack in Apollo.</p>
]]></content:encoded>
			<wfw:commentRss>http://joeberkovitz.com/blog/2007/04/12/an-actionscript-interpreter-courtesy-of-javascript-and-apollo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Secret Life of SWFs: Flex 2&#8217;s undocumented SwfxPrinter tool</title>
		<link>http://joeberkovitz.com/blog/2007/04/08/secret-life-of-swfs/</link>
		<comments>http://joeberkovitz.com/blog/2007/04/08/secret-life-of-swfs/#comments</comments>
		<pubDate>Sun, 08 Apr 2007 00:35:07 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.joeberkovitz.com/blog/?p=41</guid>
		<description><![CDATA[It&#8217;s apparently a well-kept secret, but the Flex SDK includes a very useful tool for examining the structure and contents of SWF files.  The Java class flash.swf.tools.SwfxPrinter, which lives in the Flex 2 SDK&#8217;s lib/swfkit.jar library, is an undocumented utility that dumps AS3 SWF files as XML documents.  These dumps can provide really [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s apparently a well-kept secret, but the Flex SDK includes a very useful tool for examining the structure and contents of SWF files.  The Java class <tt>flash.swf.tools.SwfxPrinter</tt>, which lives in the Flex 2 SDK&#8217;s <tt>lib/swfkit.jar</tt> library, is an undocumented utility that dumps AS3 SWF files as XML documents.  These dumps can provide really useful insight into what is taking up space in a compiled AS3 Flash or Flex application.</p>
<p>If you&#8217;re in the <tt>FLEX_HOME/lib</tt> directory you can run it as follows:</p>
<p><code><br />
java -classpath asc.jar;swfkit.jar flash.swf.tools.SwfxPrinter [options] swfFilename<br />
</code></p>
<p>Here&#8217;s a somewhat random excerpt from some output; this includes some Flash sprite definitions:</p>
<pre>
  &lt;DefineSprite id='28'&gt;
    &lt;!-- sprite framecount=1 --&gt;
    &lt;PlaceObject2 idref='27' depth='2' matrix='t0,0'/&gt;
    &lt;ShowFrame/&gt;
  &lt;/DefineSprite&gt;
  &lt;ScalingGrid idref='28' grid='(80,80),(1200,360)'/&gt;
</pre>
<p>The valuable <tt>-showoffset</tt> option causes the output to include the offset and size of each element in the file.  For instance, the following <tt>DefineFont3</tt> element shows the size of an embedded font from a Flex CSS stylesheet:</p>
<pre>
  &lt;!-- offset=86441 size=35356 --&gt;
  &lt;DefineFont3 id='112' font='Myriad' numGlyphs='232' italic='false' bold='false' ansi='false' wideOffsets='false' wideCodes='true' shiftJIS='false' langCode='0' hasLayout='true' ascent='17019' descent='5120' leading='614' kerningCount='0' codepointCount='232' advanceCount='232' boundsCount='232'&gt;
</pre>
<p>Sadly, in a regular application SWF, there is no information about how the code is broken up; all you get is a single element representing the entire code of the application in a single lump:</p>
<pre>
  &lt;!-- offset=291066 size=1338571 --&gt;
  &lt;DoABC2 name='frame2'&gt;
  &lt;/DoABC2&gt;
</pre>
<p>Not to worry.  Far more useful are the results of using SwfxPrinter on the SWF that&#8217;s inside a SWC (just use any ZIP decompression tool to unpack <tt>library.swf</tt> from a SWC file).  Now you&#8217;ll see information like this:</p>
<pre>
  &lt;!-- offset=2130104 size=4192 --&gt;
  &lt;DoABC2 name='mx/effects/CompositeEffect'&gt;
  &lt;/DoABC2&gt;
  &lt;!-- offset=2134296 size=670 --&gt;
  &lt;DoABC2 name='mx/effects/Parallel'&gt;
  &lt;/DoABC2&gt;
  &lt;!-- offset=2134966 size=4111 --&gt;
  &lt;DoABC2 name='com/allurent/containers/AnimatedViewStack'&gt;
  &lt;/DoABC2&gt;
</pre>
<p>Now <strong>that&#8217;s</strong> more like it!</p>
<p>So&#8230; I&#8217;m in the process of writing an Apollo-based tool that analyzes SwfxPrinter dumps, along with the linkage dependency information found in a SWCs, and allows developers to analyze both code size, linkage dependencies and associated source code/documentation in a single environment.  Granted, it would probably make more ultimate sense to do this as an Eclipse plugin alongside Flex Builder, but which would you rather do to read in swfx dumps: deal with the Java XML APIs or hack some E4X?  Also a lot of the analyzed information is easy to display in HTML, and Apollo has that nice built-in web browser.</p>
<p>Here&#8217;s a screen shot of some work in progress:</p>
<p><img src="/projects/sizing/screenshots/SizeAnalyzerShot.png" alt="screenshot" /></p>
<p>One can use a tool like this to find out exactly how much space each individual class or package in the application takes up, and use that to tune its space requirements, Module loading strategy, and so on &#8212; this takes a lot of work, of course, but it&#8217;s a lot easier with the right information at one&#8217;s fingertips.</p>
<p>I&#8217;m thinking about the dependency-analysis angle.  My current thought is to support two complementary approaches: 1) discover what other classes a given class/package depends on (and thus drags into the SWF), and 2) discover which dependencies caused the inclusion of a given class/package in the SWF.  The first approach is useful when one has a good heuristic notion about what should be separated out (like a complex but rarely displayed view).  The second is useful when you can see a large bunch of code and you&#8217;d like to understand what other stuff is using it, so you can separate out <strong>that</strong> stuff and avoid dragging the expensive code into the SWF up front.  Either way, you identify candidate classes for modification, removal, or placement in a loadable module, in the name of a smaller download size.</p>
<p>Note: A somewhat more convenient way to run SwfxPrinter is to just copy this <a href="/projects/sizing/swfxprinter.jar">swfxprinter.jar</a> file into <tt>FLEX_HOME/lib</tt>; then you can run it in any directory as follows:</p>
<p><code><br />
java -jar %FLEX_HOME%/lib/swfxprinter.jar [options] swfFilename<br />
</code></p>
<p>(I&#8217;m not redistributing any Adobe code here of course; the JAR file just contains a manifest with references to class and library names.)</p>
]]></content:encoded>
			<wfw:commentRss>http://joeberkovitz.com/blog/2007/04/08/secret-life-of-swfs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Abrupt YouTube security policy change</title>
		<link>http://joeberkovitz.com/blog/2006/12/14/abrupt-youtube-security-policy-change/</link>
		<comments>http://joeberkovitz.com/blog/2006/12/14/abrupt-youtube-security-policy-change/#comments</comments>
		<pubDate>Thu, 14 Dec 2006 21:15:31 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.joeberkovitz.com/blog/?p=36</guid>
		<description><![CDATA[There was a brief glitch in ReviewTube operation this last week, as the fallout from an unexpected YouTube security policy change.
Some links:

CSRF exploits and crossdomain.xml
Death of open crossdomain.xml’s?

YouTube, crossdomain


Possibly due to an exploit, they abruptly changed their crossdomain.xml file to only allow access from the youtube.com domain.  As a result, YouTube developer API calls [...]]]></description>
			<content:encoded><![CDATA[<p>There was a brief glitch in ReviewTube operation this last week, as the fallout from an unexpected YouTube security policy change.</p>
<p>Some links:</p>
<ul>
<li><a href="http://blog.monstuff.com/archives/000302.html#more">CSRF exploits and crossdomain.xml</a></li>
<li><a href="http://renaun.com/blog/2006/12/13/167/">Death of open crossdomain.xml’s?</a>
</li>
<li><a href="http://weblogs.macromedia.com/jd/archives/2006/12/youtube_crossdo.cfm">YouTube, crossdomain</a>
</li>
</ul>
<p>Possibly due to an exploit, they abruptly changed their <tt>crossdomain.xml</tt> file to only allow access from the youtube.com domain.  As a result, YouTube developer API calls from Flash no longer work if the SWF was downloaded from a non-youtube.com domain.  This broke a few aspects of ReviewTube that used that API.</p>
<p>I quickly got around the problem by proxying the YouTube requests through my own web server.  Recall that ReviewTube was created to demonstrate an architecture for remote Flex applications.  Well, in a validation of that architecture, it took changes to about 3 lines in 3 source files to make this change.  Two changes were to code in the Service layer, and one change was to the component configuration file.  (Full disclosure: also about 10 new lines of Rails code on the server side to do the proxying.)</p>
<p>So&#8230; we&#8217;re back live.</p>
<p>YouTube, if you want to be safe and not screw up Flash/Flex developers, please move your API to a different domain and put a liberal crossdomain.xml on <em>that</em> host.  Thanks.</p>
]]></content:encoded>
			<wfw:commentRss>http://joeberkovitz.com/blog/2006/12/14/abrupt-youtube-security-policy-change/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Day 2: Lizard Head Pass to Bolam Pass</title>
		<link>http://joeberkovitz.com/blog/2006/07/11/day-2-lizard-head-pass-to-bolam-pass/</link>
		<comments>http://joeberkovitz.com/blog/2006/07/11/day-2-lizard-head-pass-to-bolam-pass/#comments</comments>
		<pubDate>Tue, 11 Jul 2006 12:29:45 +0000</pubDate>
		<dc:creator>joe</dc:creator>
		
		<category><![CDATA[Bicycling]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.joeberkovitz.com/blog/?p=21</guid>
		<description><![CDATA[This morning it was crystal-clear, with no hint of the previous day&#8217;s nasty weather.  We could clearly see the dramatic surroundings of our campground: the 14,000+ peaks of El Diente and Mt. Wilson stared across the valley, with the eccentric volcanic plug of Lizard Head itself rising nearby.  (Lizard Head, by the way, [...]]]></description>
			<content:encoded><![CDATA[<p>This morning it was crystal-clear, with no hint of the previous day&#8217;s nasty weather.  We could clearly see the <a href="http://www.flickr.com/photos/84703588@N00/190870144/in/set-72157594201014729/">dramatic surroundings</a> of our campground: the 14,000+ peaks of El Diente and Mt. Wilson stared across the valley, with the eccentric volcanic plug of Lizard Head itself rising nearby.  (Lizard Head, by the way, was considered the hardest climb in Colorado for much of the first part of the 20th century, because it&#8217;s made out of crumbly, unreliable garbage rock.  Climbing guides of the period advised taking a photo of Lizard Head and turning around to head home.  The lizard-head-looking part apparently decayed and fell off some time ago, leaving everyone to wonder what was the idea behind the name.)  <span id="more-21"></span></p>
<p>After a very hearty breakfast, and futile attempts to dry our wet gear from last night, we packed up our tents and gear and prepared to leave.  The hail from last night was still lying on the ground, a reminder of what we might expect at any time from the fickle mountain skies.</p>
<p>We set off down the East Fork Trail which began in a soggy meadow right outside the campground, and smiles began to break out.  After a messy, muddy climb up a rise, the trail topped out on a grassy hill and began to descend in a series of sunny open alpine meadows alternating with rocky, rooty alcoves of cool spruce and fir.  The East Fork of the Dolores River roared unseen, far below us on our right; further right across the valley was a steep rock wall with forest above and below.  The trail swooped up, down, and around, with tricky biker-unfriendly water bars to spice up our ride.  I did a graceful, super-low-speed endo after jumping a water bar only to trap my wheel behind a small rock 2 feet beyond it; fortunately I caught the bike before it could start tumbling down towards the river!  It was a little object lesson in the ways of my rental bike, which was 1.5&#8243; shorter than my usual machine: the front wheel was closer to my body, and I was going to have to take account of an increased propensity for nose wheelies and endos by sitting further back.</p>
<p>I felt energetic at first but after a lot of East Fork swooping, I did begin to tire and start to walk some of the steeper climbs; the altitude was getting to me again.  We arrived at the midpoint of our ride soon after that, a trail intersection in an open glade with a small creek running through it.  We were all grinning, because this was the kind of riding and scenery we had come for, and the weather was cooperating.</p>
<p>The remainder of that ride was a steep fire-road climb of some 5 miles.  Even though it was a lot steeper than the initial day on the Galloping Goose, the knowledge that it was shorter, my increasing adaptation to the altitude and the fine weather all contributed to making it a pleasant leg of the trip.  As we ascended towards Bolam Pass at 11,000 feet, the scenery slowly morphed around us.  Open spaces with <a href="http://www.flickr.com/photos/84703588@N00/190870327/in/set-72157594201014729/">brilliant wildflowers</a> became more frequent.  The air, cool to start with, became cooler.  After about 90 minutes or so, we reached the pass and coasted down another 1/2 mile or so to <a href="http://www.flickr.com/photos/84703588@N00/190870612/in/set-72157594201014729/">our beautiful campsite</a> beneath the pines.  The truck was there, and the rain canopy had been erected just in time as the skies suddenly cut loose with more hail and rain and the temperatures plummeted from the 70s to the 40s.  I picked a campsite, and started to set up my tent.</p>
<p>And that was when I discovered that I had left my dry bag full of all my gear back at Lizard Head Pass.</p>
<p>Mortified, I told Rachel and Scott.  They weren&#8217;t angry, but obviously they weren&#8217;t terribly happy either &#8212; Lizard Head was a long, long way away by road.  Biking back there to get it was out of the question; the dry bag was enormous.  I checked every dry bag, but there was no question.  I clearly remembered leaving my dry bag at my tent site at last night&#8217;s camping spot.  Fortunately I had a day pack with a complete change of clothing, down jacket, and fleece hat, so I didn&#8217;t have to freeze in my biking clothes, and there was a spare sleeping pad and bag on hand.  Worst come to worst, I&#8217;d do the rest of the trip with only two sets of clothes.</p>
<p>Scott already had an unpleasant driving errand on his hands: after several reversals of fortune, &#8220;Frank 2&#8243; had finally arrived in the Durango area with his baggage (it had been mistakenly put in some sort of broom closet in the Durango airport and then reported as missing) and was being shuttled to the nearby town of Rico, so Scott needed to pick him up first, bring him back to Bolam Pass.  He offered that if the weather was still OK at that point, he would go to pick up my bag at Lizard Head.  I don&#8217;t think I need to say that I was unbelievably grateful to him for rescuing me after my total bozo forgetfulness.</p>
<p>&#8220;Frank 2&#8243; arrived, and turned out to be a young emergency room doctor from Vancouver.  (For the rest of the ride, people enjoyed pestering him with questions beginning with, &#8220;You know on ER when&#8230;&#8221;)  We didn&#8217;t ride for the rest of the day due to bad weather; in some of the non-rainy periods we went down to the nearby lake and washed the mud of the previous day and a half out of our sorry-ass drive trains, which perked up and decided they might shift properly again someday.</p>
<p>While Scott was off retrieving my gear, a man and two boys came through our campsite with a train of 3 llamas and an Airedale.  He allowed as how he&#8217;d rented the llamas.  Each llama was carrying the volume of, say, 3 enormous backpacks.  They were traveling to Durango via the Colorado Trail.  The kids, carrying little or nothing, looked cranky and exhausted.  The llamas looked like they were having a Sunday walk in the park.  They all walked down to the lake to camp there.</p>
<p>That night there was a piercingly loud animal fight somewhere nearby.  I was convinced that it was a death battle between a pack of coyotes and the Airedale.  I could clearly hear a &#8220;woof&#8221; sound in counterpoint to the weird squealing and yelping of coyotes.  This went on for almost 30 minutes.  It took me a long time to get to sleep afterwards.</p>
<p><a href="http://joeberkovitz.com/blog/2006/07/12/day-3-excursion-to-section-point/">Read the next entry</a></p>
]]></content:encoded>
			<wfw:commentRss>http://joeberkovitz.com/blog/2006/07/11/day-2-lizard-head-pass-to-bolam-pass/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
