<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Pointillism</title>
    <link rel="alternate" type="text/html" href="http://blogs.4point.com/taylor.bastien/" />
    <link rel="self" type="application/atom+xml" href="http://blogs.4point.com/taylor.bastien/atom.xml" />
    <id>tag:blogs.4point.com,2008-10-27:/taylor.bastien/3</id>
    <updated>2011-09-21T18:03:53Z</updated>
    <subtitle>A RIA developer blog by Taylor Bastien</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.25</generator>

<entry>
    <title>Taylor&apos;s Software and UX Design Lexicon, Volume I</title>
    <link rel="alternate" type="text/html" href="http://blogs.4point.com/taylor.bastien/2011/07/taylors-ux-lexicon-volume-i.html" />
    <id>tag:blogs.4point.com,2011:/taylor.bastien//3.217</id>

    <published>2011-07-19T22:31:24Z</published>
    <updated>2011-09-21T18:03:53Z</updated>

    <summary>When communicating complex information, simple metaphors can go a long way.This past week, my lovely wife pointed out that when I talk about complex subjects, I often resort to metaphors and analogies from unrelated areas of life. She said that...</summary>
    <author>
        <name>Taylor Bastien</name>
        
    </author>
    
        <category term="UX" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.4point.com/taylor.bastien/">
        <![CDATA[<div class="yui-wk-div"><font class="Apple-style-span" style="font-size: 1.25em; ">When communicating complex information, simple metaphors can go a long way.</font></div><div class="yui-wk-div"><br></div><div class="yui-wk-div">This past week, my lovely wife pointed out that when I talk about complex subjects, I often resort to metaphors and analogies from unrelated areas of life. She said that it serves me well as a communicator because it can simplify otherwise difficult concepts ...and since she <i>is</i> my wife, I must <i>of course</i> agree.</div><div class="yui-wk-div"><br></div><div class="yui-wk-div">The way I see it, when dealing with a sometimes obscure or confusing subject like software design and development, appealing to abstract, common sense ideas helps highlight the important bits while avoiding getting bogged down in details.&nbsp;There's no reason why I shouldn't be able to explain key software concepts to competent, non-technical people.&nbsp;They might be bored to tears but they should at least be able to understand what I'm talking about.&nbsp;In fact, as a consultant, I consider it a fundamental skill of the trade: if I can't explain to people (i.e. clients) what they're paying for, then why on earth should they be buying it in the first place?</div><div class="yui-wk-div"><br></div><div class="yui-wk-div">What follows is a very incomplete list of some of the homegrown expressions I use most often when discussing software design. I've long been planning on writing entire articles for some of these (and most likely will at some point) but with my work schedule being as full as it is, here they are for now in a more concise form:</div><div class="yui-wk-div"><br></div><div class="yui-wk-div"><br></div> ]]>
        <![CDATA[<div><b><font class="Apple-style-span" style="font-size: 1.25em; ">"The Iceberg Principle"</font></b></div><div><b><br></b></div><div><b>Concentrate your efforts on the small part of an application that people can actually see.</b></div><div><br></div><div>Roughly only 1/8th of an iceberg's volume is above water. A similar principle applies to software: you can often only see and touch but a small portion of the actual development effort. Therefore, make sure you prioritize the quality of the visible parts (i.e. the User Experience) because psychologically, that's the portion of your solution for which clients are primarily paying. No matter how rock solid your back end might be (and it had better be good), if your UX is poor, the total package can still be a complete failure in the eyes of users.</div><div><br></div><div><br></div><div align="center"><hr width="50%"></div><div><br></div><div><b><font class="Apple-style-span" style="font-size: 1.25em; ">"Push on a Pull Door"</font></b></div><div><b><br></b></div><div><b>Never provide more than one proper way to use a control.</b></div><div><br></div><div>Some doors can be pulled, others pushed while even others can be both pushed or pulled (saloon doors anyone?) If something so simple as a door can lead to broken noses and bruised egos, then how frustrating can an unpredictable UI component be? This also relates to a warning I've often given myself and other developers: if you make a smart user feel dumb, you're just asking for trouble. Therefore, make the purpose of your UI controls, as well as how users are to interact with them crystal clear.</div><div><br></div><div style="text-align: center;"><span class="yui-non"><img alt="FarSide_gifted.jpg" src="http://blogs.4point.com/taylor.bastien/2011/07/19/FarSide_gifted.jpg" width="321" height="266" class="mt-image-center yui-img" style="text-align: center; display: block; margin: 0 auto 20px;"></span></div><div><br></div><div align="center"><hr width="50%"></div><div><br></div><div><b><font class="Apple-style-span" style="font-size: 1.25em; ">"The Free Coke Effect"</font></b></div><div><b><br></b></div><div><b>It feels especially good to get something for free when you expected to pay for it.</b></div><div><br></div><div>There is a special, warm, fuzzy feeling you get when you go to buy something (e.g. an ice cold Coke from a vending machine) and receive it for free instead. In this case, expectation is everything. You see, receiving a gift feels good but not nearly as great as pulling out your wallet and being told not to bother. This is because gifts are <i>supposed&nbsp;to be free</i>. Pound for pound, getting an unexpected freebie is altogether more surprising and enjoyable. Try to inspire this feeling of visceral satisfaction in your users whenever possible and you'll soon be a UX hero.</div><div><br></div><div>For more on this topic, please read&nbsp;<a href="http://uxmag.com/design/ux-emotion-and-free-coke-machines" style="text-decoration: underline; " class="">my article</a>&nbsp;at UXMag.</div><div><br></div><div><br></div><div align="center"><hr width="50%"></div><div><br></div><div><b><font class="Apple-style-span" style="font-size: 1.25em; ">"Self Medication"</font></b></div><div><b><br></b></div><div><b>People with undiagnosed ailments will often intuitively turn to homemade cures.</b></div><div><br></div><div>Certain people suffering from mental distress will turn to substance abuse to soothe their unidentified ailment. Their addiction can therefore be seen as a symptom of another, underlying issue. Likewise, if you discover an overabundance of spreadsheets, Access databases, shared folders, or other homegrown solutions on a client site, expect to find heretofore unidentified business process or business system deficiencies.</div><div><br></div><div>For reference: <a href="http://en.wikipedia.org/wiki/Self-medication" style="text-decoration: underline; " class="">http://en.wikipedia.org/wiki/Self-medication</a></div><div><br></div><div><br></div><div align="center"><hr width="50%"></div><div><br></div><div><b><font class="Apple-style-span" style="font-size: 1.25em; ">"Smart Dog Software"</font></b></div><div><b><br></b></div><div><b>The expression "Even a dog knows the difference between being stumbled over and being kicked" also applies to software</b>.</div><div><br></div><div>Make sure that your software is designed to differentiate between different levels of error/warning. Popping up "scare windows" every five minutes is a sure fire way to get users to ignore real problems when they occur. Think about it: if a sleeping dog is smarter than your software, you should probably expect trouble.</div><div><br></div><div>This can also sometimes be referred to as "crying wolf".</div><div><br></div><div><br></div><div align="center"><hr width="50%"></div><div><br></div><div><b><font class="Apple-style-span" style="font-size: 1.25em; ">"Shouting at the Deaf"</font></b></div><div><b><br></b></div><div><b>Don't berate lost users, show them the way.</b></div><div><br></div><div>Whenever you must guide users through complex forms, failed validation, etc. it is often better to show them the right way of doing things than to berate them when they make a mistake. If they couldn't figure it out on their own to begin with (i.e. by following instructions or labeling), anything short of showing them how to do it right might also go ignored. After all, there's no use in shouting at someone who won't hear you.</div><div><br></div><div><br></div><div align="center"><hr width="50%"></div><div><br></div><div>So there you have it: Volume I of Taylor's Software and UX Design Lexicon (tm). I hope you enjoyed reading it. If you start using these expressions, please let me know, and feel free to send along any of your own useful software-related analogies and metaphors in the comments.</div><div><br></div><div>Oh, and if you're into such things, please take the time to <a href="http://twitter.com/#!/RIAGrande/" style="text-decoration: underline; " class="">follow me on Twitter</a>.&nbsp;</div><div><br></div><div>Take care!</div>]]>
    </content>
</entry>

<entry>
    <title>Sony Hearts Robots, Boosts Android</title>
    <link rel="alternate" type="text/html" href="http://blogs.4point.com/taylor.bastien/2011/01/sony-hearts-robots-boosts-android.html" />
    <id>tag:blogs.4point.com,2011:/taylor.bastien//3.199</id>

    <published>2011-01-31T14:02:58Z</published>
    <updated>2011-01-31T15:12:15Z</updated>

    <summary><![CDATA[If software makes a platform, Sony has just raised the fortunes of Android with the announcement of the PlayStation Suite.The internet is abuzz over Sony's&nbsp;announcement that they are bringing a whole new PlayStation-branded gaming store to the Android platform. This...]]></summary>
    <author>
        <name>Taylor Bastien</name>
        
    </author>
    
        <category term="Android" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Flash" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.4point.com/taylor.bastien/">
        <![CDATA[<div class="yui-wk-div"><font class="Apple-style-span" style="font-size: 1.25em; ">If software makes a platform, Sony has just raised the fortunes of Android with the announcement of the PlayStation Suite.</font></div><div class="yui-wk-div"><br /></div><div class="yui-wk-div"><span class="yui-non"><img alt="SonyPlusGoogle3.png" src="http://blogs.4point.com/taylor.bastien/2011/01/27/SonyPlusGoogle3.png" width="350" height="341" class="mt-image-right yui-img" style="float: right; margin: 0 0 20px 20px;" /></span></div><div class="yui-wk-div"><font class="Apple-style-span" style="font-size: 1.25em; "></font>The <a href="http://www.engadget.com/2011/01/27/sony-announces-playstation-suite/" target="_blank" class="">internet</a> is <a href="http://www.pcmag.com/article2/0,2817,2376741,00.asp" class="">abuzz</a> over Sony's&nbsp;<a href="http://uk.playstation.com/home/news/articles/detail/item340561/Introducing-PlayStation-Suite/" target="_blank" class="">announcement</a> that they are bringing a whole new PlayStation-branded gaming store to the Android platform. This new functionality will be branded the "Playstation Suite" and will be available to phones running Android 2.3 (aka "Gingerbread").&nbsp;The Suite will include emulated PlayStation One games to start and will eventually feature new titles built expressly for the platform.</div><div class="yui-wk-div"><br /></div><div class="yui-wk-div">As you may be aware, recently, the hype meter has been <a href="http://www.engadget.com/2011/01/26/sony-ericsson-xperia-play-playstation-phone-preview/" target="_blank" class="">cranked up to overload</a>&nbsp;over the anticipated release of the PlayStation phone, this unforeseen announcement is arguably even bigger news than expected. While Sony-Ericsson will indeed be launching an Experia-branded "gaming" Android phone that includes a D-pad, etc., thanks to the PS Suite,&nbsp;<u>every</u> Android 2.3 phone can now in effect be considered a "PlayStation Phone".</div><div class="yui-wk-div"><br /></div><div class="yui-wk-div">Now <u>that's</u> news.</div><div class="yui-wk-div"><br /></div><div class="yui-wk-div"><b><br /></b></div><div class="yui-wk-div"><b>What about us "serious" developers?</b></div><div class="yui-wk-div"><br /></div><div class="yui-wk-div">Before I answer that question, let's take a little history lesson.</div><div class="yui-wk-div"><br /></div>]]>
        <![CDATA[<div>If my assertion that "software makes a platform" is true, then let's consider a prime past example of this principle by jumping in the&nbsp;<a href="http://en.wikipedia.org/wiki/WABAC" target="_blank" style="text-decoration: underline; " class="">WABAC</a>&nbsp;(pronounced "WayBack") Machine and returning to the early days of the PC vs Mac wars.</div><div><div><br /></div><div>You may recall people in the mid-nineties going&nbsp;<i>on and on</i>&nbsp;about the superior usability and "slickness" factor of Mac OS, of how few viruses it was subject to and how darned reliable it was. It was just plain better than Windows, you see. Strangely, this high opinion of Mac OS was shared by many PC owners. If the OS was so great, then w<i>hy on earth</i>&nbsp;would they still own a PC?&nbsp;Surely it wasn't because the Mac was short one mouse button.</div><div><br /></div><div>The fact is that the software that most people wanted to use was only available on Windows. The amount of software available to&nbsp;PC users dwarfed that available on Mac, especially when it came to games. As we've discovered with iPods today, gaming was (and is) a huge driver of hardware sales. What started out as an afterthought (i.e. playing games on a business machine/playing games on a portable media player) became a core reason for the success of both the PC and the iPod/iPhone.</div><div><br /></div><div>Now let's apply this logic to Android phones: for application developers, it doesn't matter&nbsp;<u>why</u>&nbsp;someone owns a device as long as they have one. Non-gaming software developers will benefit from having more Android devices in the hands of potential customers, even if those customers bought their Android phone or tablet primarily to play games on.</div><div><br /></div><div>If this helps grow the Android install base, it will be reason for even us "serious" enterprise Flex/Flash developers to rejoice.</div><br /><b>What's Next?</b><div><br /></div><div>Following the logic explained above, if I had my way, Sony and Google would once again put their heads together and find a way of bringing&nbsp;<a href="http://www.google.com/tv/" target="_blank" style="text-decoration: underline; " class="">GoogleTV</a>&nbsp;to the PS3. GoggleTV is a hugely promising area for further growth in Flex/AIR innovation (and revenue generation) and one I am hoping to delve into in the near future (release the SDK already, Google!).</div><div><br /></div><div>If Sony replaces the XMB OS and browser with Android and Chrome with a&nbsp;<i>working</i>&nbsp;Flash Player 10.x, they will have instantly brought an install base of some 40+ million new GoogleTV boxes into the market. This would represent an explosion of opportunity for Android-based developers (including us Flex RIA and AIR for Android guys).</div><div><br /></div><div>I understand that, by definition, the GoogleTV platform requires HDMI-in. That can be addressed either by the release of a new HDMI-enabled&nbsp;<a href="http://uk.playstation.com/playtv/" target="_blank" style="text-decoration: underline; " class="">PlayTV</a>-type device, or Google could decide to bend their own rules a little and allow "TV-less" GoogleTV for the sake of us all.</div><div><br /></div><div><b>Your take?</b></div><div><br /></div><div>I'd love to hear your take on all of this and the upcoming release of the Honeycomb Android OS for tablets, which I'll surely be addressing in another blog entry sometime soon.</div><div><br /></div><div>Before I go, I can't very well mention "Sony" and "Robots" without including this video:</div><div align="center"><div style="text-align: -webkit-auto;"><br /></div><iframe title="Dancing Robots" class="youtube-player" type="text/html" width="480" height="390" src="http://www.youtube.com/embed/9vwZ5FQEUFg?rel=0" frameborder="0" allowfullscreen=""></iframe><br /></div><div><br /></div><div>Thanks for stopping by.</div></div><div><br /></div>]]>
    </content>
</entry>

<entry>
    <title>Where&apos;s the LCDS Love?</title>
    <link rel="alternate" type="text/html" href="http://blogs.4point.com/taylor.bastien/2010/11/wheres-the-love-in-lcds.html" />
    <id>tag:blogs.4point.com,2010:/taylor.bastien//3.182</id>

    <published>2010-11-08T22:00:41Z</published>
    <updated>2010-11-08T21:06:28Z</updated>

    <summary><![CDATA[Why do you think that many enterprise Flex developers don't use LiveCycle Data Services?Someone recently asked me why I thought the take-up of LiveCycle Data Services among developers isn't more, um&nbsp;enthusiastic.&nbsp;Unlike almost any other development tool I've used, I don't...]]></summary>
    <author>
        <name>Taylor Bastien</name>
        
    </author>
    
        <category term="Flash" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Java" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="LiveCycle ES" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.4point.com/taylor.bastien/">
        <![CDATA[<font class="Apple-style-span" style="font-size: 1.25em; ">Why do <b>you</b> think that many enterprise Flex developers don't use LiveCycle Data Services?</font><div class="yui-wk-div"><br /></div><div class="yui-wk-div"><span class="yui-non"><img alt="LCDS.jpg" src="http://blogs.4point.com/taylor.bastien/2010/11/04/LCDS.jpg" width="160" height="160" class="mt-image-left yui-img" style="float: left; margin: 0 20px 20px 0;" /></span><div class="yui-wk-div">Someone recently asked me why I thought the take-up of <a href="http://www.adobe.com/products/livecycle/dataservices/" class="" target="_blank">LiveCycle Data Services</a> among developers isn't more, um&nbsp;<i>enthusiastic</i>.&nbsp;Unlike almost any other development tool I've used, I don't recall hearing anyone complaining about the level of functionality offered by&nbsp;LCDS. That's certainly to the credit of the product managers and development team at Adobe, but exactly why isn't such a powerful tool more popular in the developer community?</div><div class="yui-wk-div"><br /></div><div class="yui-wk-div">It's certainly a difficult question and I wouldn't dare profess to have a definitive answer. I've therefore decided to share my thoughts while humbly asking for yours. You never know, maybe someone at Adobe will read this and take note.</div><div class="yui-wk-div"><br /></div><div class="yui-wk-div">Keep in mind that all I have to go on are conversations with developers and from reading blogs, so definitely consider these musings "non-scientific" and loaded with lots of hyperbole (the spice that makes blogging fun).</div><div class="yui-wk-div"><br /></div></div>]]>
        <![CDATA[<div>Here's my list:</div><div><div><div><br></div></div><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><div><b>Cost - a.k.a. "And here I was hoping to retire some day"</b></div></div><div><div><br></div></div></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><div>Dare I go so far as to say that cost is the number one&nbsp;<u>stated</u>&nbsp;reason that people stay away from LiveCycle Data Services?&nbsp;</div><div><br></div><div>Everybody loves a free ride, but&nbsp;developing&nbsp;a set of tools as complex as LCDS requires a highly-skilled team (i.e. "it's astronomically expensive"). To recoup that cost usually means one of two things: sell a large volume of licenses or charge a lot for a few.&nbsp;Frankly, this question is way outside my realm of expertise: how exactly&nbsp;<i>do</i>&nbsp;you price something with so much undeniable value but that is very costly to create and maintain?</div><div><br></div><div>Some&nbsp;<a href="http://flexblog.faratasystems.com/2010/06/22/disappointed-with-adobe" style="text-decoration: underline; " class="" target="_blank">well-respected voices</a>&nbsp;in the Flex developer community have gone out of their way to express their unhappiness with the LCDS pricing model.&nbsp;They&nbsp;<i>want</i>&nbsp;to use LCDS but in some cases&nbsp;<i>can't</i>&nbsp;because their customers simply can't afford it.&nbsp;If developers know/assume that their clients can't or won't pay for LCDS, they won't promote it and likely won't even bother learning how to use it (which can contribute to my second point below.)</div></div></blockquote></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><div><br></div></div><div><div><b>Ignorance - a.k.a. "L. Seedy Hess... Who dat?"</b></div></div><div><div><br></div></div></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><div>This is, to me, the number one&nbsp;<u>unstated</u>&nbsp;reason. (Admittedly, that I hold this opinion may just be a symptom of my own prejudices.) Some developers simply don't understand the benefits of using AMF and remoting, etc. (this point can therefore apply to both LCDS and BlazeDS) They understand and trust SOAP and XML and the simplicity of REST-like web services, so they default to WebService and HttpService calls over LCDS. Consequently, their apps end up architected a lot like "standard" web apps, which can be all fine and good, up to a point.</div></div><div><br></div><div>If you're reading this and either&nbsp;<b>a)</b>&nbsp;don't know anything about the benefits of LCDS or&nbsp;<b>b)</b>&nbsp;don't see a benefit to using a binary protocol for streaming data to your Flex client, please check out&nbsp;James Ward's eye-opening Flex data transfer&nbsp;<a href="http://www.jamesward.com/2007/04/30/ajax-and-flex-data-loading-benchmarks/" style="text-decoration: underline; " class="" target="_blank">benchmark tool</a>, for starters.</div></blockquote></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><div><br></div></div><div><div><b>Intimidation - a.k.a. "Fear of the nuclear option"</b></div></div><div><div><br></div></div></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><div>LCDS has a certain "only the big boys use it" reputation and therefore, some developers nervously back away from any mention of it. I call this visceral and perhaps irrational uneasiness "fear of the nuclear option".&nbsp;</div><div><br></div><div>This point also applies to LiveCycle in general: many people just don't understand what it really is, so in their psyche it remains in the category of things best left to the rarified air of Olympus (i.e. "code of the gods"). Perhaps that perception is something that Adobe could help with.</div></div></blockquote></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><div><br></div></div><div><div><b>Habit - a.k.a. "I <i>like </i>wearing what's left of my lucky gym shorts"</b></div></div><div><div><br></div></div></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><div>Some developers come from a more "static" web development background. They are used to&nbsp;<i>and enjoy</i>&nbsp;writing pages built with HTML forms (or hyperlinks containing URL-encoded parameters) and submitting data to a server that builds and returns more HTML (e.g. JSPs, PERL, ASPs). Some of these people are perfectly happy with the limitations of a synchronous, more "old-school" web application development approach (i.e. build, render, submit, build, render, submit). Others prefer to simulate real-time behaviours using an AJAX framework. Whatever the reason, they see no pressing need for (quasi) real-time data updates and a strongly-typed object model on the client side that mirrors the one on the server side.</div></div></blockquote></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><div><br></div></div><div><div><b>It's Overkill - a.k.a. "Bring a nuke to a pillow fight"</b></div></div><div><b><br></b></div></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><div>In some cases, developers&nbsp;<i>do</i>&nbsp;want the speed of binary data transfer and the convenience of sharing a strongly-typed data model between client and server code but simply&nbsp;<i>don't need the scalability and push capabilities of LCDS</i>. Those developers will often stick to BlazeDS because sometimes, polling is good enough. You really have to analyze what your client's needs are before making these important decisions. I've probably chosen LCDS over BlazeDS (easy call) in certain situations because a customer is using LiveCycle and already has a license for LCDS whereas I&nbsp;<i>might</i>&nbsp;have otherwise settled for using Blaze. As with anything else in life, the decision becomes a little more difficult when there is an additional cost attached to it.</div></div></blockquote></blockquote><div><div><br></div><div><b>Please Weigh In!</b></div><div><br></div><div>As I said earlier, I have no answers, only vague impressions built on whispers and (sometimes) vicious innuendo. I'd therefore love to hear why&nbsp;<u>you</u>&nbsp;think that many Flex developers don't use LCDS.</div></div><div><br></div><div>If LCDS interests you and you haven't heard, I suggest you check out this session on&nbsp;<a href="http://tv.adobe.com/watch/max-2010-develop/new-livecycle-data-services-support-for-html5javascript-android-apple-ios-java-and-net/" class="" target="_blank">what's coming next for LCDS</a>, including support for .NET on the back end and HTML/JavaScript, Java (e.g. Android) and iOS on the client-side. It's <u>very</u> exciting stuff,&nbsp;<i>if you're into that kind of thing.</i></div><div><br></div><div>Thanks for dropping by!</div></div><div><br></div>]]>
    </content>
</entry>

<entry>
    <title>Flex, Flash and Spock... What&apos;s Not To Love at MAX 2010?</title>
    <link rel="alternate" type="text/html" href="http://blogs.4point.com/taylor.bastien/2010/10/flex-flash-and-spock-whats-not-to-love-at-max-2010.html" />
    <id>tag:blogs.4point.com,2010:/taylor.bastien//3.180</id>

    <published>2010-10-20T18:07:49Z</published>
    <updated>2010-10-21T01:51:36Z</updated>

    <summary><![CDATA[Whether you're a waiter who dreams of being an actor, a trekker on a lifelong pilgrimage to meet your Vulcan mentor&nbsp;or are an avid Flash or Flex developer, there's only one place to be next week: Adobe MAX 2010 in&nbsp;sunny&nbsp;Los...]]></summary>
    <author>
        <name>Taylor Bastien</name>
        
    </author>
    
        <category term="Acrobat" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Flash" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Java" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="LiveCycle ES" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="PDF" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="UX" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.4point.com/taylor.bastien/">
        <![CDATA[<font class="Apple-style-span" style="font-size: 1.25em; ">Whether you're a waiter who dreams of being an actor, a trekker on a lifelong pilgrimage to meet your Vulcan mentor&nbsp;or are an avid Flash or Flex developer, there's only one place to be next week: </font><b><font class="Apple-style-span" style="font-size: 1.25em; ">Adobe MAX 2010 in</font></b><font class="Apple-style-span" style="font-size: 1.25em; ">&nbsp;</font><b><font class="Apple-style-span" style="font-size: 1.25em; ">sunny</font></b><font class="Apple-style-span" style="font-size: 1.25em; ">&nbsp;</font><b><font class="Apple-style-span" style="font-size: 1.25em; ">Los Angeles, California</font></b><font class="Apple-style-span" style="font-size: 1.25em; ">.</font><br /><br />
<a href="http://max.adobe.com/" target="_blank" style="color: rgb(26, 65, 145); text-decoration: none; ">
  <img src="http://4.bp.blogspot.com/_twN-1ByDEmg/TL8rCywz_0I/AAAAAAAAKyc/FXVPBEbT0io/s400/NemoyMAX3.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5530186194420498242" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-width: initial; border-color: initial; position: relative; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(233, 233, 233); border-right-color: rgb(233, 233, 233); border-bottom-color: rgb(233, 233, 233); border-left-color: rgb(233, 233, 233); -webkit-box-shadow: rgba(0, 0, 0, 0.0976563) 1px 1px 5px; float: right; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 10px; cursor: pointer; width: 400px; height: 78px; background-position: initial initial; background-repeat: initial initial; " /></a>I will be attending&nbsp;
<a href="http://max.adobe.com/" style="color: rgb(26, 65, 145); text-decoration: none; " target="_blank">Adobe MAX</a>&nbsp;for the first time, this year. Needless to say, I'm very excited and grateful to my employer,
<a href="http://4point.com/" style="color: rgb(26, 65, 145); text-decoration: none; " target="_blank">4Point</a>, for sending me on their dime (I surely could never afford it). I've registered for the most interesting sessions I can though my sense is that I'll be missing more than I'll be taking in. Hopefully they'll be recording all of the sessions so that I can catch up on what I missed later. One thing I won't miss will be the MAX Awards, since&nbsp;
<a href="http://www.imdb.com/name/nm0000559/" style="color: rgb(26, 65, 145); text-decoration: none; " target="_blank">Leonard Nemoy</a>&nbsp;(heard of him?) is presenting. The geeks will be swooning in ecstasy, no doubt.<br /><br />To maximize the amount of information I can jam into my sleep-deprived brain, I intend to squeeze in as many 360Flex and FITC "Un-Conference" sessions as possible. Hopefully the rooms will be close enough together to skip quickly from one session to another so I can miss as little as possible.<br /><br />Since I'll most likely be on my own most of the time, feel free to drop me a line so we can meet up. I'm getting there near noon on Sunday and will have most of the afternoon free. I'm flying back out on Thursday morning.<br /><br />Hope to see you there!
(Cross-posted at <a href="http://riagrande.com">riagrande.com</a>)]]>
        
    </content>
</entry>

<entry>
    <title>See You In The Re-Runs: Adobe Dev. Week Sessions Now Online</title>
    <link rel="alternate" type="text/html" href="http://blogs.4point.com/taylor.bastien/2010/08/see-you-in-the-re-runs-adobe-dev-week-sessions-now-online.html" />
    <id>tag:blogs.4point.com,2010:/taylor.bastien//3.174</id>

    <published>2010-08-05T17:32:57Z</published>
    <updated>2010-08-05T17:52:35Z</updated>

    <summary>Once Burned, Twice Shy. If you missed Adobe Developer Week (I did), not all is lost.If you wanted to get a second chance at attending one of the many free sessions given by Flash Platform experts during Adobe Developer week,...</summary>
    <author>
        <name>Taylor Bastien</name>
        
    </author>
    
        <category term="Flash" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Java" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.4point.com/taylor.bastien/">
        <![CDATA[<div><b><font class="Apple-style-span" style="font-size: 1.25em; ">Once Burned, Twice Shy. If you missed Adobe Developer Week (I did), not all is lost.</font></b></div><div><br /></div><div>If you wanted to get a second chance at attending one of the many free sessions given by Flash Platform experts during <a href="http://blogs.4point.com/taylor.bastien/2010/04/attend-a-seminar-in-your-pjs-free-adobe-dev-week-webinars.html" target="_blank">Adobe Developer week</a>, you're in luck. Adobe has posted all 19 sessions online, for free. Since they all run at roughly one hour each, you'd better get cracking, my friend.</div><div><br /></div><div><b>The available sessions are:</b></div><div><br /></div><div><div><ul><ul><li>Welcome and introduction to the Adobe Flash Platform</li><li>Building multi-screen applications with the Adobe Flash Platform and Adobe Creative Suite 5</li><li>New features in Adobe Flex 4 framework</li><li>New features in Adobe Flash Builder 4</li><li>Adobe Flash Catalyst CS5 for developers</li><li>Building mobile applications: Create a game</li><li>What's new in Adobe Flash Builder for Java developers</li><li>New features in Adobe Flash Player 10.1</li><li>Creating sexy applications with the Adobe Flash Platform: Designer-developer workflow</li><li>A basic CRUD application with Zend AMF and Adobe Flex 4</li><li>Adobe Flash Builder 4 and Adobe ColdFusion 9</li><li>Advanced features in Adobe Flex</li><li>ActionScript 3 for Java developers</li><li>Adobe Flash Platform and Salesforce.com</li><li>What's new in Adobe Flash Builder for PHP developers</li><li>Using advanced features with Adobe Flex and PHP</li><li>Adobe ColdFusion 9 and Adobe Flash Catalyst CS5</li><li>Adobe Flex and BlazeDS integration with SpringSource</li><li>Building desktop applications with Adobe AIR 2</li></ul></ul></div></div><div><br /></div>What the heck are you waiting for? Click <a href="http://www.adobe.com/devnet/flex/events/#dev_week" target="_blank">here</a>&nbsp;and go straight to the videos. <i>Sheesh!</i><br /><br />]]>
        
    </content>
</entry>

<entry>
    <title>Tilde Console Gets Free Plug on The Flex Show</title>
    <link rel="alternate" type="text/html" href="http://blogs.4point.com/taylor.bastien/2010/08/tilde-console-gets-free-plug-on-the-flex-show.html" />
    <id>tag:blogs.4point.com,2010:/taylor.bastien//3.173</id>

    <published>2010-08-05T15:19:52Z</published>
    <updated>2010-08-05T16:04:24Z</updated>

    <summary><![CDATA[When you get mentioned on the premiere Flex-related podcast, you know you've finally arrived.Episode 115 of The Flex Show podcast is primarily an interview with Nate Beck and Ben Garney, key members of the pure Actionscript (but wholly Flex friendly)&nbsp;PushButton&nbsp;games...]]></summary>
    <author>
        <name>Taylor Bastien</name>
        
    </author>
    
        <category term="Flash" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.4point.com/taylor.bastien/">
        <![CDATA[<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="Thumbnail image for Tilde.png" src="http://blogs.4point.com/taylor.bastien/assets_c/2010/06/Tilde-thumb-250x164-192.png" width="250" height="164" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /></span><div><b><font class="Apple-style-span" style="font-size: 1.25em; ">When you get mentioned on the premiere Flex-related podcast, you know you've finally arrived.</font></b></div><div><br /></div><div><a href="http://www.theflexshow.com/blog/index.cfm/2010/7/21/Pushbutton-Engine-with-Ben-Garney-and-Nate-Beck-The-Flex-Show-Episode-115" target="_blank">Episode 115</a> of <a href="http://www.theflexshow.com/" target="_blank">The Flex Show</a> podcast is primarily an interview with Nate Beck and Ben Garney, key members of the pure Actionscript (but wholly <i>Flex friendly</i>)&nbsp;<a href="http://pushbuttonengine.com" style="text-decoration: underline; " target="_blank">PushButton</a>&nbsp;games engine project.&nbsp;When asked how PushButton can be used in non-gaming Flex applications, among other things, Nate mentioned how I forked off the Console part of the engine for use in any Flex application. It was a very kind thing to do, even though he <b>almost</b> forgot my name ;)</div><div><br /></div><div>Much thanks to Nate for giving Tilde a mention and to Ben for coding up a clever, elegant and <b>blazingly</b> <b>fast</b> text rendering solution for the console as only an experienced&nbsp;<i>über</i>&nbsp;low-level C++/Actionscript games developer could.</div><div><br /></div><div><div>So now that the word about Tilde is finally getting out, I'd&nbsp;<i>love</i>&nbsp;to hear from someone out there who's tried it, is using it, loves it or hates it. I use the console extensively in my own development and it has proven itself invaluable... hopefully someone else out there will agree.</div></div><div><br /></div><div>Related links:</div><div><ul><ul><li>You can listen to the podcast <a href="http://www.theflexshow.com/blog/index.cfm/2010/7/21/Pushbutton-Engine-with-Ben-Garney-and-Nate-Beck-The-Flex-Show-Episode-115" target="_blank">here</a>.</li><li>If you haven't checked it out yet, the source code for the Tilde Developer Console can be found <a href="http://code.google.com/p/tildeconsole/" target="_blank">here</a>.</li><li>To see what it all looks like, check out the Tilde demo app <a href="http://blogs.4point.com/taylor.bastien/2010/06/21/TildeDemo1/TildeDemo.html" target="_blank">here</a>. (Hint: after you've clicked the button to start up logging, hit the tilde key (i.e. "~") to display the console.)</li></ul></ul></div>]]>
        
    </content>
</entry>

<entry>
    <title>Try It Out: Tilde Developer Console Demo</title>
    <link rel="alternate" type="text/html" href="http://blogs.4point.com/taylor.bastien/2010/06/try-it-out-tilde-developer-console-demo-app.html" />
    <id>tag:blogs.4point.com,2010:/taylor.bastien//3.169</id>

    <published>2010-06-21T13:17:38Z</published>
    <updated>2010-06-22T03:46:59Z</updated>

    <summary>Seeing is believing so try out the Tilde Console with this simple demo application.The Tilde Developer Console was launched very late (my time) on Friday. After a weekend spent catching up on my sleep, it&apos;s Monday and I&apos;m happy to...</summary>
    <author>
        <name>Taylor Bastien</name>
        
    </author>
    
        <category term="Flash" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.4point.com/taylor.bastien/">
        <![CDATA[<div><font class="Apple-style-span" style="font-size: 1.25em; "><b>Seeing is believing so try out the Tilde Console with this simple demo application.</b></font></div><div><font class="Apple-style-span" size="4"><span class="Apple-style-span" style="font-size: 16px;"><br /></span></font></div>The <b>Tilde Developer Console</b> was <a href="http://blogs.4point.com/taylor.bastien/2010/06/enter-the-tilde-developer-console-flex-open-source-project.html" target="_blank">launched</a> very late (my time) on Friday. After a weekend spent catching up on my sleep, it's Monday and I'm happy to release the Console testing tool I promised in my original launch post.<div><br /></div><div>Built using the latest version of the library (I checked in a few tweaks to the Console this weekend and tagged v1.1), the tool provides the following functionality:</div><div><ul><li>Buttons for submitting log entries at the different severity levels</li><li>The ability to generate random log message text (in case you don't much like typing)</li><li>A button for manually starting up the Logger. If you submit log entries before clicking on this button, you will be able to see how deferred log entries are handled.</li><li>I wired in a custom callback command ("dog") almost identical to the example I provided in the original <b>Tilde</b> <a href="http://blogs.4point.com/taylor.bastien/2010/06/enter-the-tilde-developer-console-flex-open-source-project.html" target="_blank">launch post</a>.</li><li>For good measure, I've thrown in the Tilde logo in order to demonstrate the semi-transparent nature of the console.</li></ul></div><div><br /></div><div>Click on the image below to launch the demo in a new window. Once you've&nbsp;tried it out, please let me know what you think and check out the source code at the <a href="http://code.google.com/p/tildeconsole/" target="_blank">Google code project</a>.</div><div><br /></div><div><form mt:asset-id="194" class="mt-enclosure mt-enclosure-image" style="display: inline;">

<a href="http://blogs.4point.com/taylor.bastien/2010/06/21/TildeDemo1/TildeDemo.html" onclick="window.open('http://blogs.4point.com/taylor.bastien/2010/06/21/TildeDemo1/TildeDemo.html','popup','width=800,height=500,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">
<img alt="ConsoleDemo.jpg" src="http://blogs.4point.com/taylor.bastien/assets_c/2010/06/ConsoleDemo-thumb-400x250-194.jpg" width="400" height="250" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a>]]>
        
    </content>
</entry>

<entry>
    <title>Flex Open Source Project Launch: The Tilde Developer Console</title>
    <link rel="alternate" type="text/html" href="http://blogs.4point.com/taylor.bastien/2010/06/enter-the-tilde-developer-console-flex-open-source-project.html" />
    <id>tag:blogs.4point.com,2010:/taylor.bastien//3.168</id>

    <published>2010-06-18T20:03:34Z</published>
    <updated>2010-06-21T20:00:48Z</updated>

    <summary>Flex developers rejoice! Once only reserved for advanced games engines, the tilde-activated developer console has finally arrived to empower Flex coders everywhere.I am proud to announce the long-delayed release of the Tilde Developer Console open source project into the wild....</summary>
    <author>
        <name>Taylor Bastien</name>
        
    </author>
    
        <category term="Flash" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.4point.com/taylor.bastien/">
        <![CDATA[<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://blogs.4point.com/taylor.bastien/2010/06/21/Tilde.png"><img alt="Tilde.png" src="http://blogs.4point.com/taylor.bastien/assets_c/2010/06/Tilde-thumb-250x164-192.png" width="250" height="164" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /></a></span><div><b><font class="Apple-style-span" style="font-size: 1.25em; ">Flex developers rejoice! Once only reserved for advanced games engines, the tilde-activated developer console has finally arrived to empower Flex coders everywhere.</font></b></div><div><br /></div><div><b><font class="Apple-style-span" style="font-size: 1.25em; "></font></b>I am proud to announce the long-delayed release of the <b>Tilde Developer Console</b> <a href="http://code.google.com/p/tildeconsole/" target="_blank">open source project</a> into the wild. This Flex library makes powerful development tools from the <b>PushButton Games Engine</b> available to all Flex developers.</div><div><br /></div><div><b>[June 21, 2010 - Update:</b> Check out the Tilde Console demo application <a href="http://blogs.4point.com/taylor.bastien/2010/06/try-it-out-tilde-developer-console-demo-app.html" target="_blank">here</a>.<b>]</b></div><div><br /></div><div>I do enterprise Flex RIA development for a living and extracted this powerful tool set for my own use a few months ago after attending <a href="http://blog.natebeck.net/" target="_blank">Nate Beck</a>'s presentation on the aforementioned games engine at <b>360|Flex 2010</b> in San Jose, California. The console quickly became one of my most important tools, in particular when saving my bacon multiple times during user acceptance testing for a large, complex project. Because I wrote so little of it myself, I intended to release the source code to the public from the outset but have been altogether too busy to even think about it.</div><div><br /></div><div>This week, things have started quieting down again (<i>I know, I know</i>... it won't last) so I fetched and merged in the latest code from the <b>PushButton Engine</b> (which contains some very cool new optimizations to the console display) and polished it all up for public consumption. Given how much I've personally benefited from using the console, I'm excited to finally be able to share this with my fellow Flex developers. If I wasn't&nbsp;confident that many of you will appreciate these tools every bit as much as I have, I wouldn't have bothered to create a logo. (Using <a href="http://inkscape.org" target="_blank">Inkscape</a>, I might add... a fine, free, open source SVG tool.)</div><div><br /></div><div>The key tools in this package are:</div><div><br /></div><div><p style="max-width: 65em; color: rgb(0, 0, 0); font-family: arial, sans-serif; "><strong>Developer Console</strong></p><ul style="max-width: 65em; padding-left: 40px; color: rgb(0, 0, 0); font-family: arial, sans-serif; "><li>A versatile "tilde-activated" console similar to that found in many 3D games engines (e.g. Unreal, Source, etc.)</li><li>Tab-based command auto-completion, command history and built-in help</li><li>Powerful ability to register custom call-back commands at run-time. These are treated identically to the built-in commands.</li><li>Utility functions for serializing object information to the console</li><li>Integrated&nbsp;<a href="http://mrdoob.com/blog/post/582" rel="nofollow" target="_blank">"Hi-ReS! Stats"</a>&nbsp;graph from Mr.doob</li></ul><p style="max-width: 65em; color: rgb(0, 0, 0); font-family: arial, sans-serif; "></p><p style="max-width: 65em; color: rgb(0, 0, 0); font-family: arial, sans-serif; "><strong>Client-Side Trace Logging</strong></p><ul style="max-width: 65em; padding-left: 40px; color: rgb(0, 0, 0); font-family: arial, sans-serif; "><li>Statements are logged to both the console and the Flash Player debugging trace.</li><li>Multiple logging-levels are supported and entries are color-coded by severity in the console. (e.g.&nbsp;<font color="grey">DEBUG</font>,&nbsp;<font color="green">INFO</font>,&nbsp;<font color="orange">WARN</font>,&nbsp;<font color="red">ERROR</font>)</li><li>Logging verbosity can be set using a simple console command.</li><li>Deferred logging: even if log statements are sent before a Logger instance is created, they will be stored until one does exist, allowing log entries to be submitted from the moment the application starts.</li><li>Explicitly turning off logging causes all logging calls to be disregarded so they don't impede application performance. (All pending deferred log calls are also discarded.)</li></ul></div>]]>
        <![CDATA[<div><br /></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: arial, sans-serif; "><div><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: arial, sans-serif; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><b><font class="Apple-style-span" style="font-size: 1.25em; ">Give Credit Where Credit is Due</font></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; ">As mentioned above, the&nbsp;<b>Tilde Console</b>&nbsp;is built almost exclusively using code from the&nbsp;<a href="http://pushbuttonengine.com/" rel="nofollow" style="text-decoration: underline; " target="_blank">PushButton Games Engine</a>&nbsp;and all due credit goes to the original developers for their fine work. My contribution to the source has been minimal. Because of the nature of their work, games developers are the very best in the business at getting every last drop of performance out of their code and that fact is evident throughout the work of the&nbsp;<b>PushButton</b>&nbsp;team. It&nbsp;was a personal pleasure working with their code which is clearly the work of professionals: it is elegant, readable and although eminently clever, always easy to follow.</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; ">I'd like to thank the&nbsp;<b>PushButton</b>&nbsp;team for making their excellent work freely available and for the many tricks I've picked up while working my way through their code. If you are at all interested in learning how to write well-optimized Actionscript code, I&nbsp;strongly suggest that you check out their promising project.</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; max-width: 65em; "><b><font class="Apple-style-span" style="font-size: 1.25em; ">Adding The console To Your Project</font></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; ">The simplest way to integrate the console into an application is to add the following line to your Application "creationComplete handler:</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; max-width: 65em; ">
<textarea cols="80" name="text" rows="1">
Logger.startup(Logger.LOGGER_UI_MODE);</textarea></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; max-width: 65em; ">This will add the event listener for the tilde key (i.e. "~") which toggles the console and will cause all deferred Logger calls to be processed. The other mode is called "LOGGER_TRACE_MODE" which only provides debugging trace logging functionality and not the graphical UIConsole.</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; max-width: 65em; ">The Logger can be explicitly turned off (which also frees up memory by discarding any deferred trace statements and blocks any subsequent Logger calls from being handled) by adding this line to your application:</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; max-width: 65em; "><textarea cols="80" name="text" rows="1">Logger.disable();</textarea></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><b><font class="Apple-style-span" style="font-size: 1.25em; "><a href="http://blogs.4point.com/taylor.bastien/2010/06/18/Console.jpg" target="_blank"><img src="http://blogs.4point.com/taylor.bastien/assets_c/2010/06/Console-thumb-400x210-179.jpg" alt="click to view example Console output" width="400" height="210" class="mt-image-left" style="float: left; margin: 0 20px 20px 0;" /></a>The Console Display</font></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; ">As you can see in the example image, the console color-codes the trace statements by severity. There are five levels, including the vanilla "print" level which has no severity and is always displayed, regardless of the Logger's verbosity setting. The colors are as follows:&nbsp;<span class="Apple-style-span" style="color: rgb(128, 128, 128); ">grey for&nbsp;</span><span class="Apple-style-span" style="color: rgb(128, 128, 128); "><b>DEBUG,&nbsp;</b></span><span class="Apple-style-span" style="color: rgb(0, 128, 0); ">green for&nbsp;<b>INFO,&nbsp;</b></span><span class="Apple-style-span" style="color: rgb(255, 165, 0); ">orange for&nbsp;<b>WARN&nbsp;</b></span><span class="Apple-style-span" style="color: rgb(255, 165, 0); "><b><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-weight: normal; ">and&nbsp;</span></b></span><span class="Apple-style-span" style="color: rgb(255, 0, 0); ">red for&nbsp;<b>ERROR</b></span>. Plain old print calls are displayed in white.</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; ">To log an entry, add the following to your source:</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><textarea cols="80" name="text" rows="3" style="margin-top: 2px; margin-bottom: 2px; height: 49px; margin-left: 2px; margin-right: 2px;">Logger.error(&lt;the class that's logging&gt;, &lt;the name of the method where the loggincall is made, as a String&gt;, &lt;the statement to log, as a String);</textarea></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; ">e.g.</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><textarea cols="80" name="text" rows="1" style="margin-top: 2px; margin-bottom: 2px;">Logger.error(MyClass, "myMethod", "This is an error log entry!");</textarea></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><b><font class="Apple-style-span" style="font-size: 1.25em; "><br /></font></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><b><font class="Apple-style-span" style="font-size: 1.25em; ">Built-In Commands</font></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; ">The commands that come built-in are the following:)</p></span></div><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; color: rgb(0, 0, 0); font-family: arial, sans-serif; "><b>help</b></p></div></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; color: rgb(0, 0, 0); font-family: arial, sans-serif; ">This command lists all available commands, including developer-added custom commands (see below),&nbsp;along with their descriptive text.</p></div></blockquote></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; color: rgb(0, 0, 0); font-family: arial, sans-serif; "><b>clear</b></p></div></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; color: rgb(0, 0, 0); font-family: arial, sans-serif; ">This clears the contents of the trace.</p></div></blockquote></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><b>copy</b></p></div></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; ">This command copies the contents of the console to the system clipboard. Another way to do this is to double-click on the console.</p></div></blockquote></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: arial, sans-serif; "><b>fps</b></span></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: arial, sans-serif; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><span class="Apple-style-span" style="font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; color: rgb(51, 51, 51); "></span></p><div><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: arial, sans-serif; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-style: initial; border-color: initial; max-width: 65em; ">This adds Mr.doob's Stats graph to the screen. This can be handy in determining, among other things, frame rate,&nbsp;memory usage and&nbsp;when garbage collection is fired by the Flash Player.</p></span></div></span><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; "></p></div></blockquote></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: arial, sans-serif; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><span class="Apple-style-span" style="font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; color: rgb(51, 51, 51); "></span></p><div><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: arial, sans-serif; "></span></div></span><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; "></p></div></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: arial, sans-serif; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><b>listDisplayObjeccts</b></p></span></div></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: arial, sans-serif; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; ">This outputs the indented tree structure of all display objects in the display list.</p></span></div></blockquote></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: arial, sans-serif; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><b>verbose</b></p></span></div></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: arial, sans-serif; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; ">This command takes one parameter (a number between 0 and 2) to set the verbosity level of the console output. This allows you to filter down the level of detail of the entries that are captured (e.g. drops the fully qualified package of the "logged from" Class).</p></span></div></blockquote></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: arial, sans-serif; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><b>version</b></p></span></div></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><div><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: arial, sans-serif; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; ">Outputs the operating system and current Flash Player version to the trace.</p></span></div></blockquote></blockquote><font class="Apple-style-span" color="#000000" face="arial, sans-serif"><div><font class="Apple-style-span" color="#000000"><b><font class="Apple-style-span" style="font-size: 1.25em; "><br /></font></b></font></div><div><font class="Apple-style-span" color="#000000"><b><font class="Apple-style-span" style="font-size: 1.25em; ">Hotkeys</font></b></font></div><div><font class="Apple-style-span" color="#000000" face="arial, sans-serif"><br /></font></div><div><font class="Apple-style-span" color="#000000" face="arial, sans-serif">When in the console, a few hotkeys are available to you. They are as follows:</font></div><div><font class="Apple-style-span" color="#000000" face="arial, sans-serif"><br /></font></div></font><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><font class="Apple-style-span" color="#000000" face="arial, sans-serif"><div><b>TAB / SHIT+TAB</b></div></font></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><font class="Apple-style-span" color="#000000" face="arial, sans-serif"><div>This allows you to cycle forward and backwards through all of the available commands. If you type in one or more of the first few characters of an existing command and hit&nbsp;<b>TAB</b>, the command name will be auto-completed, much like in some command-line shells.</div></font></blockquote></blockquote><font class="Apple-style-span" color="#000000" face="arial, sans-serif"><div><br /></div></font><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><font class="Apple-style-span" color="#000000" face="arial, sans-serif"><div><b>CTRL+HOME / CTRL+END</b></div></font></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><font class="Apple-style-span" color="#000000" face="arial, sans-serif"><div>This allows you to jump directly to the beginning or end of the trace.</div></font></blockquote></blockquote><font class="Apple-style-span" color="#000000" face="arial, sans-serif"><div><br /></div></font><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><font class="Apple-style-span" color="#000000" face="arial, sans-serif"><div><b>PGUP / PGDN</b></div></font></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><font class="Apple-style-span" color="#000000" face="arial, sans-serif"><div>Jumps one page up or down in the trace.</div></font></blockquote></blockquote><font class="Apple-style-span" color="#000000" face="arial, sans-serif"><div><br /></div></font><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><font class="Apple-style-span" color="#000000" face="arial, sans-serif"><div><font class="Apple-style-span" color="#000000" face="arial, sans-serif"><b>double-click on the trace</b></font></div></font></blockquote><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><font class="Apple-style-span" color="#000000" face="arial, sans-serif"><div><font class="Apple-style-span" color="#000000" face="arial, sans-serif">This will copy the contents of the trace into the system clipboard.</font></div></font></blockquote></blockquote><font class="Apple-style-span" color="#000000" face="arial, sans-serif"><div><font class="Apple-style-span" color="#000000" face="arial, sans-serif"><br /></font></div><br /></font><div><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: arial, sans-serif; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><b><font class="Apple-style-span" style="font-size: 1.25em; ">Adding Custom Commands</font></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; ">One of the most powerful pieces of functionality included is the ability to wire callback functions into the console. These functions are then available at run-time as commands in the console, indistinguishable from the built in commands. It is even possible to feed parameters to these functions.</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; ">Here is an example of how this is done:</p><textarea cols="80" name="text" rows="20" style="margin-left: 2px; margin-right: 2px; margin-top: 2px; margin-bottom: 2px;">Console.registerCommand(
  // The command
  "dog",
  
  // The callback function
  function(myParam:int=-1):void {
    if (myParam &lt; 0)
    {
      Alert.show("I have no dog.");
    }
    else
    {
      Alert.show("My dog is " + myParam + " years old.");
    }
  },

  // The help text
  "Outputs the age of my dog. If no age is provided then no dog exists."
);
</textarea><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><b><font class="Apple-style-span" style="font-size: 1.25em; "><br /></font></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; max-width: 65em; "><font class="Apple-style-span" style="font-size: 1.25em; "><font class="Apple-style-span" style="font-size: 0.8em; ">Note that though the method takes a parameter, if none is provided, the default will be used. If you don't provide a default then, no harm no foul, an exception will be traced at the "ERROR" level in the console.</font></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; max-width: 65em; "><font class="Apple-style-span" style="font-size: 1.25em; "><font class="Apple-style-span" style="font-size: 0.8em; "><br /></font></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><b><font class="Apple-style-span" style="font-size: 1.25em; ">How I Use It</font></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; ">In my most recent Flex projects, I've set up the application to be configured at run-time from XML-based resource bundles. This allow me to set up an application to run in different contexts, based on the contents of a configuration file.&nbsp;For instance, the application can be set to run in either "LIVE" or "TEST" context. Furthermore, the console is only activated and the callbacks are only ever declared&nbsp;in "TEST" mode.&nbsp;</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; ">Having access to the trace has been a godsend during quality assurance and user acceptance testing because we don't ever use the debugging Flash Player for this kind of testing. By using the console, if a failure does occur, testers can still provide developers with the application trace as part of their bug report. This trace can often reveal specifics about an error that are otherwise invisible to the user and that would be irretrievable in a non-debugging Flash Player.</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><b><font class="Apple-style-span" style="font-size: 1.25em; ">Where To Get It</font></b></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><font class="Apple-style-span" style="font-size: 1.25em; "><font class="Apple-style-span" style="font-size: 0.8em; ">The source code is available through Google code at:&nbsp;</font></font><span class="Apple-style-span" style="font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; color: rgb(51, 51, 51); "><a href="http://code.google.com/p/tildeconsole/" style="text-decoration: underline; " target="_blank">http://code.google.com/p/tildeconsole/</a>&nbsp;</span>It is licensed through the MIT open source license which you'll find included in the project.</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; ">Compiling it for yourself is the best way to go but if you prefer you can grab one of the following <u>untested</u> SWC binaries:&nbsp;<a href="http://blogs.4point.com/taylor.bastien/2010/06/19/TildeDeveloperConsole-FlexSDK3.3.swc" target="_blank">Flex 3.3</a>&nbsp; <a href="http://blogs.4point.com/taylor.bastien/2010/06/19/TildeDeveloperConsole-FlexSDK3.4.swc" target="_blank">Flex 3.4</a>&nbsp; <a href="http://blogs.4point.com/taylor.bastien/2010/06/19/TildeDeveloperConsole-FlexSDK3.5.swc" target="_blank">Flex 3.5</a>. I'll try and upload a Flex 4.0 SWC as soon as I have time to build one.</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; ">Since seeing is believing,&nbsp;I also intend to make a test application available in the next few days so that people can see the console in action before downloading the project. I'll worry about that later because for now I really have to get some well-deserved rest.</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; "><span class="Apple-style-span" style="font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; color: rgb(51, 51, 51); "><b>[June 21, 2010 - Update:</b>&nbsp;Check out the Tilde Console demo application&nbsp;<a href="http://blogs.4point.com/taylor.bastien/2010/06/try-it-out-tilde-developer-console-demo-app.html" target="_blank" style="text-decoration: underline; ">here</a>.<b>]</b></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; max-width: 65em; ">Thanks for dropping by and please feel free to leave me a comment. It's always gratifying to hear from my visitors.</p></span></div></span></div>]]>
    </content>
</entry>

<entry>
    <title>Have Android? Got Froyo? Grab Flash 10.1 Pronto!</title>
    <link rel="alternate" type="text/html" href="http://blogs.4point.com/taylor.bastien/2010/05/have-android-got-froyo-grab-flash-101-pronto.html" />
    <id>tag:blogs.4point.com,2010:/taylor.bastien//3.164</id>

    <published>2010-05-20T20:03:59Z</published>
    <updated>2010-05-20T20:03:36Z</updated>

    <summary>Beta Mobile Flash Player 10.1 for Android is finally available in the Android Market. What are you waiting for?In news that&apos;s certain to please my Nexus One-owning younger brother, you can finally download the first public beta of Flash Player...</summary>
    <author>
        <name>Taylor Bastien</name>
        
    </author>
    
        <category term="Flash" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.4point.com/taylor.bastien/">
        <![CDATA[<div><b><font class="Apple-style-span" style="font-size: 1.25em; "><font class="Apple-style-span" style="font-size: 1.25em; "><font class="Apple-style-span" style="font-size: 0.8em; ">Beta Mobile Flash Player 10.1 for Android is finally available in the Android Market. What are you waiting for?</font></font></font></b></div><div><br /></div><div>In news that's certain to please my Nexus One-owning younger brother, you can finally download the first public beta of <a href="http://labs.adobe.com/wiki/index.php/Flash_Player_10.1_for_Android">Flash Player 10.1</a>&nbsp;from the Android Market. The <i>caveats</i> are that you must be running Android OS 2.2 (a.k.a. "Froyo") and&nbsp;have an ARM-8 or better CPU, which currently limits you to one of the&nbsp;Nexus One, Motorola Droid, HTC Incredible and Sprint EVO (this,&nbsp;<a href="http://www.pcmag.com/article2/0,2817,2363965,00.asp" style="text-decoration: underline; ">according to</a>&nbsp;PCMag).</div><div><br /></div><div><b><font class="Apple-style-span" style="font-size: 1.25em; ">Wait, There's <u>More</u></font></b></div><div><b><br /></b></div><div>If you haven't heard of "Froyo", well it's the next generation of the Android OS. Thanks to&nbsp;the improved Dalvik virtual machine (VM) core and its brand-new support for "just in time" (JIT) compilation, Froyo has been clocked by the good&nbsp;folks at <a href="http://androidpolice.com">Android Police</a>&nbsp;at&nbsp;<a href="http://www.androidpolice.com/2010/05/11/exclusive-androidpolice-coms-nexus-one-is-running-android-2-2-froyo-how-fast-is-it-compared-to-2-1-oh-only-about-450-faster/">450% faster</a>&nbsp;than its predecessor, Android 2.1 (a.k.a. "Éclair").</div><div><br /></div><div>(Interestingly enough, "Éclair" isn't just a delicious pastry, it's also the French word for lightning... which now seems like a misnomer. <i>But I digress.)</i></div><div><br /></div><div>There are a whole lot of other improvements baked into Froyo, including support for WiFi tethering and the ability to save apps to a miniSD card. Not bad for an OS named after a sweet, delicious frozen dessert.</div><div><br /></div><div><b><font class="Apple-style-span" style="font-size: 1.25em; ">Grab It Now, If You Can</font></b></div><div><br /></div><div>According to <a href="http://techie-buzz.com/mobile-news/nexus-one-and-droid-to-get-android-22-froyo-ota-update.html">techie-buzz.com</a>, Froyo is available "over-the-air" to Nexus One owners right now and will be coming to Motorola Droid owners in the very near future.&nbsp;Over at the Android developers' blog, Xavier Durochet has just posted <a href="http://developer.android.com/sdk/android-2.2-highlights.html">the details</a>&nbsp;of what's included in Froyo, some <a href="http://android-developers.blogspot.com/2010/05/android-22-and-developers-goodies.html">links</a> to new developer tools and the official Android 2.2 "trailer" video. Very cool stuff.</div><div><br /></div><div>Now you may or may not know this, but <a href="http://4point.com">4Point</a> (my employer) is a <a href="http://www.google.com/enterprise/gep/index.html">Google Enterprise partner</a>. In our case, that means that we're authorized to resell and service Google search appliances. I just have to figure out some angle whereby it also entitles me to get my hands on some of this <i>slightly more mobile</i>&nbsp;Google kit.</div><div><br /></div><div>I'm open to suggestions ;)</div><div align="center"></div>]]>
        <![CDATA[<div><br /></div><div><div><b><font class="Apple-style-span" style="font-size: 1.25em; ">Videos, We Want Videos!</font></b></div><div><br /></div><div>I'm done talking. Check out the vids. As always, I welcome any comments you might have.</div><div><br /></div><div align="center"><br /></div><div align="center"><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/yAZYSVr2Bhc&amp;color1=0xb1b1b1&amp;color2=0xd0d0d0&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://www.youtube.com/v/yAZYSVr2Bhc&amp;color1=0xb1b1b1&amp;color2=0xd0d0d0&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="385"></object></div><div><br /></div><div><br /></div><div>James Kendrick from&nbsp;<a href="http://jkontherun.com" style="text-decoration: underline; ">JK On The Run</a>&nbsp;has a pretty comprehensive video demoing the new OS and a little Flash (plus, he seems like a really nice guy). Enjoy!</div><div style="text-align: center;"><br /></div><div align="center"></div><div style="text-align: center;"><br /></div><div align="center"><script src="http://player.ooyala.com/player.js?width=600&amp;deepLinkEmbedCode=5rZHVlMTonYcikrIwUMLwAr8tp1zIUN0&amp;height=336&amp;embedCode=5rZHVlMTonYcikrIwUMLwAr8tp1zIUN0"></script></div>

<div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;">Over at CNet, Jessica Dolcourt has a put together a pretty concise summary demoing Flash Player 10.1 on Froyo.</div><div><br /></div><div><br /></div><div align="center"><object width="364" height="280"><param name="movie" value="http://www.cnet.com/av/video/flv/universalPlayer/universalSmall.swf" /><param name="wmode" value="transparent" /><param name="allowFullScreen" value="true" /><param name="FlashVars" value="playerType=embedded&amp;type=id&amp;value=50087792" /><embed src="http://www.cnet.com/av/video/flv/universalPlayer/universalSmall.swf" type="application/x-shockwave-flash" wmode="transparent" width="364" height="280" allowfullscreen="true" flashvars="playerType=embedded&amp;type=id&amp;value=50087792"></object></div><div align="center"><br /></div></div>]]>
    </content>
</entry>

<entry>
    <title>Live A Little: Try A Flash Dynamic Desktop Background</title>
    <link rel="alternate" type="text/html" href="http://blogs.4point.com/taylor.bastien/2010/05/a-little-fun-flash-app-as-dynamic-desktop-background.html" />
    <id>tag:blogs.4point.com,2010:/taylor.bastien//3.163</id>

    <published>2010-05-18T22:45:28Z</published>
    <updated>2010-05-20T00:11:28Z</updated>

    <summary>Flash, Javascript, an iFrame and a little imagination make for cheap and easy desktop fun.You know those good ideas you have but put off trying, saying &quot;I&apos;ll get to that later&quot;? Well, Windows has long allowed an HTML file to...</summary>
    <author>
        <name>Taylor Bastien</name>
        
    </author>
    
        <category term="Flash" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.4point.com/taylor.bastien/">
        <![CDATA[<div><b><font class="Apple-style-span" style="font-size: 1.25em; "><font class="Apple-style-span" style="font-size: 1.25em; "><font class="Apple-style-span" style="font-size: 0.8em; ">Flash, Javascript, an iFrame and a little imagination make for cheap and easy desktop fun.</font></font></font></b></div><div><br /></div><div>You know those good ideas you have but put off trying, saying "I'll get to that later"? Well, Windows has long allowed an HTML file to be used as a desktop background and I've been hoping to experiment with this for a few years now. I finally got around to trying it out yesterday and can say that thanks to that thing of beauty we call the "iFrame", I was able to embed any site I cared to, including&nbsp;Flash apps, as my Windows background. It worked so well that I&nbsp;pushed the idea a little further and made a Javascript-driven HTML page that anyone can download and easily use to experiment with this little-known trick.</div><div><br /></div><div><b><font class="Apple-style-span" style="font-size: 1.25em; ">How It Works</font></b></div><div><br /></div><div>The trick to it all is pretty low-tech and leverages Javascript, a cookie (to save user preferences) and an iFrame. When the HTML page is done loading, I call a Javascript function that injects an iFrame into an empty DIV that fills the screen.</div><div><br /></div><div>The resulting (run-time) HTML looks a little like this:</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div>[code]</div></div><div><div><div>&lt;div id="myFrame"&gt;</div></div></div><div><div><div>&nbsp;&nbsp;&lt;iframe name="dynDesktopFrame" src="http://www.fwaphoto.com"</div></div></div><div><div><div>&nbsp;&nbsp; &nbsp;width="100%" height="100%" frameborder="0"&gt;&lt;/iframe&gt;</div></div></div><div><div>&nbsp;&nbsp;&lt;/div&gt;</div></div><div><div>[/code]</div></div></blockquote><div><div><br /></div><div>The iFrame and CSS style code embedded in the document do the rest: your screen is filled with the page found at whatever URL is set into the iFrame's "src" attribute. This URL isn't hard-coded, but it set using a configurable cookie, so you can dynamically change your Windows wallpaper at will.</div></div>]]>
        <![CDATA[<div><b><font class="Apple-style-span" style="font-size: 1.25em; ">How To Set It Up</font></b></div><div><span class="mt-enclosure mt-enclosure-image" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; display: inline; "><img alt="DesktopScreenie.jpg" src="http://blogs.4point.com/taylor.bastien/2010/05/19/DesktopScreenie.jpg" width="303" height="340" class="mt-image-right" style="float: right; margin-top: 0px; margin-right: 0px; margin-bottom: 20px; margin-left: 20px; " /></span></div><div><br /></div><div>Keep in mind that I'm still running Windows XP so my instructions reflect that fact. I'm betting that the process is pretty much equivalent for other, slightly less ancient Windows OSes.&nbsp;</div><div><br /></div><div>My apologies to Macintosh users. If you'd like to use this file, you'll have to install a 3rd party tool to allow your static image wallpaper to be replaced by a web page. Check&nbsp;<a href="http://code.google.com/p/webdesktop-macosx/" style="text-decoration: underline; " target="_blank">here</a>&nbsp;and&nbsp;<a href="http://www.versiontracker.com/dyn/moreinfo/macosx/20165" style="text-decoration: underline; " target="_blank">here</a>&nbsp;for (free) examples.&nbsp;I'm afraid I can't afford a Mac, so I can't test them out for you. That said, I heartily welcome your input if you try.</div><div><br /></div><div><b>Step 1</b></div><div>Download <a href="http://blogs.4point.com/taylor.bastien/2010/05/19/MyDynamicDesktop.html" style="text-decoration: underline; " target="_blank">this HTML document</a>. (Right click the link and select "Save Link As"/"Save Target As" or equivalent.) Put the HTML file in a safe place. I put mine in my "Windows" directory.</div><div><b><br /></b></div><div><b>Step 2</b></div><div>Pop open your Windows Display settings, go to the "Desktop" tab, click "Browse..." and select the HTML file. Click "Apply". The webpage will load in a few seconds.&nbsp;</div><div><b><br /></b></div><div><b>Step 3</b></div><div>The default URL used by the page is <a href="http://thefwa.com" target="_blank">FWA</a>'s (aka the "Favourite Website Awards") "<a href="http://www.fwaphoto.com/" style="text-decoration: underline; " target="_blank">One Photo a Day</a>" page. I chose this because is it Flash-driven and makes for a good background but the whole point is to use the Flash app or web page of your choice as content. Just mouse-over the bottom of the screen to bring up the menu, set&nbsp;the URL to use and click the "Save" button. (This stores your preference in a local cookie, so no server-side code is required.)</div><div><br /></div><div>The image below shows what the menu looks like. I think it's self-explanatory. I've even included a button to allow users to easily visit my blog. Just click it to visit me and click again to return to your selected website. (You'll have to forgive me a little self-promotion.)</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; display: inline; "><img alt="DynDeskMenu.jpg" src="http://blogs.4point.com/taylor.bastien/2010/05/19/DynDeskMenu.jpg" width="564" height="34" class="mt-image-center" style="text-align: center; display: block; margin-top: 0px; margin-right: auto; margin-bottom: 20px; margin-left: auto; " /></span></div><div>To keep from interfering with your access to the desktop, 5% of its height will be left free.</div><div><div><br /></div></div><div><b><font class="Apple-style-span" style="font-size: 1.25em; ">It's Not (Just) All Fun and Games</font></b></div><div><br /></div><div>While I've had fun playing with this, I think that the same principle can also be used for more serious purposes.&nbsp;For instance, say you want to keep your employees informed of up-to-the-minute news critical to their work. You could develop a&nbsp;lightweight, Flash or web-based corporate widget that feeds dynamic content to your users and embed it in their desktop backgrounds.&nbsp;Since Flash supports audio, this widget can set off a chime when new content comes in or something important has occurred. Furthermore, by using one or more cookies, you have nearly unbounded possibilities for user personalization without requiring server-side infrastructure to maintain the application's state.</div><div><br /></div><div>A&nbsp;similar means of achieving this kind of functionality would be to wrap your Flash app in a Google Desktop widget. This is a perfectly legitimate solution and offers its own benefits, however of the two options, only the desktop background trick allows you to display an arbitrary webpage or web application as-is.</div><div><br /></div><div><div><b><font class="Apple-style-span" style="font-size: 1.25em; ">The Bad, Not The Ugly</font></b></div><div><br /></div><div>Obviously, nothing in this life is free, and I was a little concerned that this would prove taxing on my laptop's limited CPU cycles and memory, so I did a little experimenting and found that when the page is loaded (i.e. going from no Windows background to the HTML page), the memory footprint for the "Explorer" process gains about 30MB, or roughly the cost of an instance of Internet Explorer. If you find can't live with that, I completely understand.</div><div><br /></div><div>For some unknown reason, I'm unable to drag and drop items on my desktop into folders that are also sitting on my desktop (e.g. into the Recycling Bin). I thought I'd mention it, even though this is the case whether or not I have a background set. It therefore doesn't appear to be related to the changes I've made to my desktop settings.</div></div><div><br /></div><div><b><font class="Apple-style-span" style="font-size: 1.25em; ">Now It's Your Turn</font></b></div><div><br /></div><div>That's it for me. If you own or know of a site,&nbsp;Flash-based or otherwise, that you think people would like to try as an OS background, please leave a note in the comments. Also, if you've tried this on a Mac and would like to share your experience, please fill me in.</div><div><br /></div><div>Thank for reading and enjoy!</div>]]>
    </content>
</entry>

<entry>
    <title>Attend A Seminar In Your PJs: Free Adobe Dev. Week &quot;Webinars&quot;</title>
    <link rel="alternate" type="text/html" href="http://blogs.4point.com/taylor.bastien/2010/04/attend-a-seminar-in-your-pjs-free-adobe-dev-week-webinars.html" />
    <id>tag:blogs.4point.com,2010:/taylor.bastien//3.154</id>

    <published>2010-04-27T18:53:27Z</published>
    <updated>2010-04-27T19:41:08Z</updated>

    <summary><![CDATA[ Adobe shows some love to the folks who actually make their technologies relevant: developers. Admit it: without good "3rd party" developers to make it dance and sing, no platform or technology would ever succeed. That's why&nbsp;Adobe is holding its...]]></summary>
    <author>
        <name>Taylor Bastien</name>
        
    </author>
    
        <category term="Flash" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Java" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.4point.com/taylor.bastien/">
        <![CDATA[<div>
  <font class="Apple-style-span" style="font-size: 1.25em; ">
    <font class="Apple-style-span" style="font-size: 1.25em; ">
      <font class="Apple-style-span" style="font-size: 0.8em; "><b>Adobe shows some love to the folks who actually make their technologies relevant: developers.
      </b></font>
    </font>
  </font>
</div>
<div><br />
</div>
<div>Admit it: without good "3rd party" developers to make it dance and sing, no platform or technology would ever succeed. That's why&nbsp;Adobe is holding its annual "Developer Week" from May 10-14, 2010, to encourage existing developers to delve deeper into their offerings and to entice novices into the fold. The key part of this event are 20 free web training seminars Adobe is running to cover a gamut of Adobe-related development technologies, from Flash and Flex to Coldfusion.
</div>
<div><br />
</div>
<div>Yes, they are "Web Seminars" and all you need is a browser, the Flash plug-in and an internet connection to participate. Of course Adobe calls them "Webinars". How very "2.0" of them. <i>&lt;cough&gt;</i></div><div><i><br /></i></div><div><b>Bonus:</b> anyone who registers and attends a session is eligible to win a copy of Flash Builder 4 Professional or Creative Suite 5 Web Premium, with one copy of FB4 Pro being awarded per session and 3 copies of CS5 Web Premium being drawn among all attendees.</div><div><i><br /></i></div>
<div><i>
    <span class="Apple-style-span" style="font-style: normal; "><i>
      </i><div>You can register online&nbsp;<a href="http://www.adobe.com/cfusion/event/index.cfm?event=detail&amp;id=1489921&amp;loc=en_us" style="text-decoration: underline; " target="_blank">right here</a>. Enjoy!
      </div>
    </span></i>
</div>
<div><br />
</div>
<div><b><font class="Apple-style-span" style="font-size: 1.25em; ">Got Training?</font></b><font class="Apple-style-span" style="font-size: 1.25em; ">
</font></div>
<div><br />
</div>
<div>If you missed 360|Flex but would like to get some Flex/Flash developer training for free, you definitely should check this out. All sorts of topics will be covered, from 
  <a href="http://www.adobe.com/cfusion/event/index.cfm?event=session&amp;id=1607625&amp;loc=en_us" target="_blank">introductory</a>&nbsp;level to&nbsp;<i>
    <a href="http://www.adobe.com/cfusion/event/index.cfm?event=session&amp;id=1613211&amp;loc=en_us" target="_blank">überflashalicious</a></i>. Besides, admit it: you've never been trained by industry-leading experts while eating munchies in your pajamas before, have you? Now's your chance, so get on it already.
</div>
<div><br />
</div>
<div>Seminars I think people (by "people" I of course mean "myself") will find particularly interesting are:
</div>
<div><br />
</div>
<div>
  <ul><li>
    <span class="Apple-style-span">
      <a href="http://www.adobe.com/cfusion/event/index.cfm?event=session&amp;id=1613218&amp;loc=en_us" target="_blank">Creating Sexy Applications with the Adobe® Flash® Platform: Designer-Developer Workflow</a>
    </span></li>
  </ul>
  <ul><li>
    <span class="Apple-style-span">
      <a href="http://www.adobe.com/cfusion/event/index.cfm?event=session&amp;id=1613224&amp;loc=en_us" target="_blank">Advanced Features In Adobe® Flex®</a>
    </span></li>
  </ul>
  <ul><li>
    <span class="Apple-style-span">
      <a href="http://www.adobe.com/cfusion/event/index.cfm?event=session&amp;id=1613563&amp;loc=en_us" target="_blank">Adobe® Flex® and BlazeDS Integration with SpringSource</a>
    </span></li>
  </ul>
</div>
<div><br />
</div>
<div><b><font class="Apple-style-span" style="font-size: 1.25em; ">Don't Wait, Educate</font></b><font class="Apple-style-span" style="font-size: 1.25em; ">
</font></div>
<div><br />
</div>
<div>If you are a student or are currently unemployed/employed outside of the software development field, this is by far your best chance to start building some salable skills <b>for free</b>. Go fetch&nbsp;
  <a href="https://freeriatools.adobe.com/" target="_blank">a free, legal license</a> to Flash Builder from Adobe and get yourself trained up. I'll see you in the trenches. Kudos to Adobe for making their development tools and experienced trainers available to the next generation of Flash/Flex developers.
</div>
<div><br />
</div>
<div><b><font class="Apple-style-span" style="font-size: 1.25em; ">Paging Dr. Livecycle</font></b><font class="Apple-style-span" style="font-size: 1.25em; ">
</font></div>
<div><br />
</div>
<div>Finally, looking at the seminars on tap, my only real disappointment is that I don't see any Livecycle-related training on tap. As my colleague and friend Kevin would say: "What up?" If Adobe doesn't promote their own flagship enterprise technology to developers, then who the heck will? They should get one of their gurus (
  <a href="http://coenraets.org/" target="_blank">Christophe</a> or 
  <a href="http://gregsramblings.com/" target="_blank">Greg</a>, for instance) and spread the word.
</div>
<div><br />
</div>
<div>As always, I invite your comments. Ciao!
</div>]]>
        
    </content>
</entry>

<entry>
    <title>Video - What if 80&apos;s Games were Real?</title>
    <link rel="alternate" type="text/html" href="http://blogs.4point.com/taylor.bastien/2010/04/video---what-if-80s-games-were-real.html" />
    <id>tag:blogs.4point.com,2010:/taylor.bastien//3.148</id>

    <published>2010-04-09T20:53:39Z</published>
    <updated>2010-08-05T18:06:58Z</updated>

    <summary><![CDATA[ French film-maker Patrick Jean resurrects 80's games and takes over the world. More news at 6:00.In honour of all you nostalgic souls out there, here is a video to lighten your melancholy mood.&nbsp;I caught wind of this short movie...]]></summary>
    <author>
        <name>Taylor Bastien</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.4point.com/taylor.bastien/">
        <![CDATA[ <div><font class="Apple-style-span" style="font-size: 1.25em; "><font class="Apple-style-span" style="font-size: 1.25em; "><font class="Apple-style-span" style="font-size: 0.8em; ">French film-maker Patrick Jean resurrects 80's games and takes over the world. More news at 6:00</font>.</font></font></div><div><br /></div><div>In honour of all you nostalgic souls out there, here is a video to lighten your melancholy mood.&nbsp;I caught wind of this short movie over at 
  <a href="http://www.aintitcool.com/node/44571">Ain't It Cool News</a>.&nbsp;It's a very clever "What if" disaster film called "PIXELS" that serves up a tasty tribute to retro gaming's greatest icons and development studios. Running a terse 2:34, it's a delicious treat for people like me who recall the 80's -- and 80's gaming, in particular -- fondly. (Wow, two food metaphors in a row... I must be hungry.)</div>
<div><br />
</div>
<div>Enjoy, and try to see if you can name all of the gaming allusions. There are just so many, and some of them are hidden, so you might need to keep your finger on the pause button. Triple bonus nostalgia points if you can tell me what inspired the style of the special <a href="http://www.onemoreproduction.com/">One More Production</a>&nbsp;logo at the beginning of the clip. I recognized it instantly. (Hint: the answer is hidden in the film itself.)</div>
<div><br /></div><div>For fun, I welcome you to post your favourite 80's video game in the comments section. Don't hold back, I just <i>know</i> you have one!</div><div><br />
  <div align="center">
    <object width="480" height="270">
      <param name="movie" value="http://www.dailymotion.com/swf/video/xcv6dv_pixels-by-patrick-jean_creation" />
      <param name="allowFullScreen" value="true" />
      <param name="allowScriptAccess" value="always" />
      <embed type="application/x-shockwave-flash" src="http://www.dailymotion.com/swf/video/xcv6dv_pixels-by-patrick-jean_creation" width="480" height="270" allowfullscreen="true" allowscriptaccess="always"/>
    </object><br /><b><br /></b>
  </div>
  <div align="center" style="text-align: left;"><b><br /></b>
  </div>
</div>]]>
        
    </content>
</entry>

<entry>
    <title>Cross-Compile This: Apple Crosses Street to Kick Adobe</title>
    <link rel="alternate" type="text/html" href="http://blogs.4point.com/taylor.bastien/2010/04/cross-compile-this-apple-crosses-street-to-kick-adobe.html" />
    <id>tag:blogs.4point.com,2010:/taylor.bastien//3.149</id>

    <published>2010-04-09T17:19:40Z</published>
    <updated>2010-04-09T19:08:54Z</updated>

    <summary>Not content to just block the Flash Player, Apple leaves the safe confines of its previous excuses to ban cross-compiled Actionscript from iPhones.As reported all over the Flash platform blogosphere, Apple has just changed their iPhone Developer Program License Agreement...</summary>
    <author>
        <name>Taylor Bastien</name>
        
    </author>
    
        <category term="Flash" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.4point.com/taylor.bastien/">
        <![CDATA[<div><font class="Apple-style-span" style="font-size: 1.25em; "><font class="Apple-style-span" style="font-size: 1.25em; "><font class="Apple-style-span" style="font-size: 0.8em; ">Not content to just block the Flash Player, Apple leaves the safe confines of its previous excuses to ban cross-compiled Actionscript from iPhones.</font></font></font></div><div><br /></div><div>As <a href="http://blog.everythingflex.com/2010/04/09/the-apple-is-really-rotten/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed:+Everythingflex+(EverythingFlex)" target="_blank">reported</a> <a href="http://daringfireball.net/2010/04/iphone_agreement_bans_flash_compiler" target="_blank">all over</a> the Flash platform blogosphere, Apple has just changed their iPhone Developer Program License Agreement which applies to all iDevices (i.e. iPhone/iPod/iPad). This change, which targets any code not originally written in an Apple-approved language has effectively killed the idea of cross-compiled Actionscript making it onto the App Store... smothering <a href="http://labs.adobe.com/technologies/flashcs5/" target="_blank">Flash CS5</a>'s flagship feature in the crib mere days before its release.</div><div><br /></div><div>That's not what we generally call "playing well with others".</div><div><br /></div><div><b>The Smoking Gun</b></div><div><br /></div><div>Here is the offending text:</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div>3.3.1 Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. <b>Applications must be originally written in Objective-C, C, C++ or JavaScript as executed by the iPhone OS WebKit engine</b>, and only code written in C, C++ and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).</div></blockquote><div><br /></div><div>(Possibly in case some might try to argue that by being an ECMAScript variant, Actionscript is a form of Javascript, Apple explicitly states that for any Javascript to be acceptable, it has to run in the "iPhone OS WebKit engine". Just goes to prove that when it comes to lawyers, Apple can afford the best, as the Beatles <a href="http://news.bbc.co.uk/2/hi/entertainment/3105444.stm" target="_blank">have learned</a>.)</div><div><br /></div><div><b>It's My Party (And I'll License You If I Want To)</b></div><div><br /></div><div>Here, to add to the many other voices out there, are my thoughts on this whole unfortunate dust-up:</div><div><br /></div><div><ol><li>Apple's official defense of blocking Flash on iDevices has been that they are looking out for their consumers by attempting to guarantee a minimal level of consistent performance on what are not very powerful devices. I call this the "It's for the children" defense: as long as the ends are all sunshine and roses, it doesn't matter what underhanded things you are actually doing.</li><li>Adobe knew all along that in developing their cross-compiler and threatening Apple's development monopoly, the folks at Apple could easily pants them like this. They were obviously out on a limb, so I assume that the smart folks at Adobe was banking on the idea that Apple wouldn't step outside the safe confines of their previous excuses for blocking Flash. Like the ruthlessly territorial animal that it is, however, Apple chose to bite, not bark. Thus comes to an end the short and tumultuous life of cross-compiled Flash on iPhone. <i><a href="http://en.wikipedia.org/wiki/Johnny_I_Hardly_Knew_Ye" target="_blank">Johnny, we hardly knew ye.</a></i></li><li>With this malicious licensing change, Apple has gone well beyond the safe confines of their original (arguably) defensible position. They no longer have the cover of saying that the license is meant to protect users. <i>Au contraire.</i> It is very clearly meant to protect Apple's interests. That's fine. I'll gladly defend the profit motive. I just don't think this is a guaranteed long-term win for Apple.</li><li>With a ream of powerful Android phones and <a href="http://www.nvidia.com/page/handheld.html" target="_blank">Tegra II</a> tablets on the way anytime now, Apple is about to face a lot of competition in the smart phone and "iPad" or "touch screen, internet-enabled, not quite a laptop" space. At the vanguard of this assault is Adobe with <a href="http://labs.adobe.com/technologies/flashplayer10/">Flash 10.1</a> (on Palm, Android and Blackberry) and <a href="http://www.engadget.com/2010/02/15/adobe-brings-air-to-android-promises-flash-10-1-in-the-first-ha/" target="_blank">AIR on Android</a> (surely to be followed by AIR on other mobile OSes).</li><li>Granted, Adobe loses this first battle. They invested a lot of money in developing this (open-source-based) iPhone cross-compiler and selling the idea to developers. However, these new non-Apple smartphones and impending tablets are all much <a href="http://www.pcworld.com/article/193764/nvidia_tegra_2_smartphones_coming_in_fourth_quarter.html" target="_blank">more powerful</a> and most likely less expensive than the iPhone and iPad. If both Adobe and we Flash platform developers play our cards right, the technical and functional superiority of this new wave will overcome the iDevices' strengths (i.e. the app store, latte-drinking fanboy base, casual users whose nephew told them that Apple products are always better) and win the war.</li><li>The smart thing to do is not for Adobe to kick back at Apple (as some less temperate souls have suggested), but to continue eroding its monopoly. First, stay the course. Second, make a cross-platform, cross-vendor App Store killer. Enough with the multiplicity of App Store clones (e.g. Android Market, Adobe AIR Marketplace, individual carriers' app stores). Come up with a licensing and profit-sharing scheme and band together for the good of you all. Just make sure you give developers a fair shake because they are the key to your success.</li></ol></div><div><br /></div><div><b>The Big Picture On Small Devices</b></div><div><br /></div><div>In the end, as developers, ours isn't a battle to get Flash on iPhone, it's to get our code <i>on the most devices possible</i>, making our non-objective-C skills more valuable. If Flash and AIR-enabled devices eventually get the lion's share of the market over iDevices, then we will have won, no matter what Steve "I'm geniuser than you" Jobs and his many lawyers decide.</div><div><br /></div><div>I always say that no movie really starts until you know who the bad guy is. In this case, Jobs and his buddies have put their money where their mouths are: the iPhone/iPod/iPad space is closed and they own the keys. Frankly, it's nice to get some clarity here rather than second-hand quotes of <i>The</i>&nbsp;<a href="http://blogs.zdnet.com/gadgetreviews/?p=11925" target="_blank">Steve Jobs calling Adobe "lazy"</a> or some such other silly thing.&nbsp;</div><div><br /></div><div>Now we really know exactly where Jobs and Apple stand: alone. The exact same place you'll find every other kid on the playground who waves his finger at his peers and says "It's my ball and you can't play with it."</div><div><br /></div><div>That's ok, Stevie. We have our own.</div> ]]>
        
    </content>
</entry>

<entry>
    <title>Read My New Article on UX and Emotion at UXMag.com</title>
    <link rel="alternate" type="text/html" href="http://blogs.4point.com/taylor.bastien/2010/04/read-my-new-article-on-ux-and-emotion-at-uxmagcom.html" />
    <id>tag:blogs.4point.com,2010:/taylor.bastien//3.146</id>

    <published>2010-04-05T16:51:35Z</published>
    <updated>2010-04-05T17:35:56Z</updated>

    <summary>A random event involving a Coke machine at 360|Flex inspired me to write an article on emotion and User Experience (UX). Rather than post it on my blog, I instead submitted it to the fine people at UX Magazine hoping...</summary>
    <author>
        <name>Taylor Bastien</name>
        
    </author>
    
        <category term="UX" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.4point.com/taylor.bastien/">
        <![CDATA[<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://uxmag.com/design/ux-emotion-and-free-coke-machines" target="_blank"><img alt="UXMagCover.png" src="http://blogs.4point.com/taylor.bastien/2010/04/05/UXMagCover.png" width="350" height="362" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /></a></span>A random event involving a Coke machine at 360|Flex inspired me to write an article on emotion and User Experience (UX). Rather than post it on my blog, I instead submitted it to the fine people at <a href="http://www.uxmag.com" target="_blank">UX Magazine</a> hoping they might be interested. I'm proud to say that it was accepted and that after a few minor edits, has just now been posted.<div><br /></div><div>The principle I discuss is that while we often talk about emotion in UX, it can be difficult to objectively identify what actually triggers a user's
emotions. I therefore try to provide some guidance on how to leverage user expectations to elicit positive emotions and avoid setting off negative ones.</div><div><br /></div><div>Please hop over to UX Magazine and let me know what you think. If you haven't read this fine online publication before, it is&nbsp;written and edited by the leading minds of the UX revolution, so I'm confident you'll find it a great source of wisdom, guidance&nbsp;and inspiration in all things "UX".</div><div><br /></div><div>You can check out the article here: <a href="http://uxmag.com/design/ux-emotion-and-free-coke-machines" target="_blank">UX, Emotion and Free Coke Machines</a>.</div>]]>
        
    </content>
</entry>

<entry>
    <title>Source for &quot;Flash Doom Triple Pack&quot; Released</title>
    <link rel="alternate" type="text/html" href="http://blogs.4point.com/taylor.bastien/2010/03/source-for-flash-doom-released.html" />
    <id>tag:blogs.4point.com,2010:/taylor.bastien//3.145</id>

    <published>2010-03-22T15:54:41Z</published>
    <updated>2010-03-23T14:08:55Z</updated>

    <summary>A while back, I posted an entry on the universe of cross-compiled code and the power of Adobe Alchemy. At that time, I put in a good word for the most publicized example of Alchemy at work: Flash Doom. Well,...</summary>
    <author>
        <name>Taylor Bastien</name>
        
    </author>
    
        <category term="Flash" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blogs.4point.com/taylor.bastien/">
        <![CDATA[A while back, I posted <a href="http://blogs.4point.com/taylor.bastien/2009/11/cross-compiling-javacruby-to-iphone.html">an entry</a> on the universe of cross-compiled code and the power of <a href="http://labs.adobe.com/technologies/alchemy/">Adobe Alchemy</a>. At that time, I put in a good word for the most publicized example of Alchemy at work: Flash Doom. Well, not content to just please the nostalgic gamer masses, <a href="http://mike.newgrounds.com/">Mike Walsh</a>, the creator of this surprising port, is&nbsp;bringing smiles to curious Flash developers everywhere. He has just&nbsp;released the source code for the latest version of the conversion, the <a href="http://www.newgrounds.com/portal/view/470460">Doom Triple Pack</a>. The<i>&nbsp;Triple Pack</i> includes the shareware episodes of Doom, Hexen, and a personal favourite of mine, Heretic.<div><br /></div><div>In case you wanted a refresher on what Alchemy does, here is the one sentence "nutshell": Alchemy allows C and C++ code to which hooks have been added to be cross-compiled to AVM2 byte-code and built into a SWF file which can be loaded into a Flash application. The intent of this experiment was to provide a means of making existing (legacy or&nbsp;open source)&nbsp;libraries available to serious, business-driven Flash applications. As is often the case, despite the "useful" nature of this technology, game developers have driven the cutting edge and come up with something quite unexpected.</div><div><br /></div><div><b>Get the Source</b></div><div><br /></div><div>As mentioned above, Mike posted <a href="http://github.com/Herschel/flash-doom">the source</a> to the Triple Pack on GitHub&nbsp;a few days ago,&nbsp;to little fanfare. If you'd like to see exactly how he pulled it all off, now's your chance. I've only had time to poke around a little but his custom pre-loader is in there, as are reams of C code (ah, the nostalgia!). Shortly after the original release of Flash Doom,&nbsp;Mike explained the ins and outs of his endeavour in <a href="http://www.peterelst.com/blog/2008/12/18/porting-doom-to-flash-interview-with-mike-welsh/">this interview</a> with Peter Elst.</div><div><b><span class="Apple-style-span" style="font-weight: normal;"><br /></span></b></div><div><b><span class="Apple-style-span" style="font-weight: normal;">Also, here is <a href="http://bruce-lab.blogspot.com/2009/09/build-your-doom-in-flash-step-by-step.html">a link</a> to a step-by-step guide to compiling your own Alchemy-powered Doom. It is not by Mike but might help in making heads or tails of his source.</span></b></div>]]>
        <![CDATA[<div><b>My Wish List</b></div><div><br /></div><div>When I first heard about the Doom Flash conversion, a number of games I'd love to see converted immediately jumped to my mind. There are so many great candidates from over the years but my personal wish list would have to include...</div><div><br /></div><div><b>Codename Eagle</b><div><br /></div><div><b></b>One of my all-time favourites,&nbsp;<a href="http://en.wikipedia.org/wiki/Codename_Eagle" style="text-decoration: underline; ">Codename Eagle</a>&nbsp;is the cult precursor to the Battlefield series (i.e. Battlefield 1942, BF2, BF:2042, BF:Bad Company, etc.). It is set in an alternate history of WWI and features some of the most hectic, hilarious multiplayer capture the flag action you've ever seen. We're talking tanks, trucks, sidecar motorcycles, biplane bombers and fighters, rocket-launching gyro-copters and&nbsp;<i>a zeppelin</i>, for crying out loud! When I bought my copy, I paid $10 CDN at a local pharmacy, not knowing just what I was getting myself into. The single-player mode wasn't very impressive but multiplayer was simply a revelation.</div><div><br />In my opinion, Codename Eagle was the first game to strike a balance between physical realism and stunt-filled visceral fun. Brings a tear to my eye just thinking about it. I used to run a dedicated Codename Eagle server while I was in my Computer Science classes back in the day. As far as I know, the source hasn't been released and I doubt that Flash could handle the engine... but one can always dream.</div><div><br /></div><div>There are, however, Codename Eagle mods for BF:1942 (<a href="http://battlefield2.filefront.com/file/;10655" style="text-decoration: underline; ">link</a>) and Battlefield 2 (<a href="http://bf2ce.rex3d.net/" style="text-decoration: underline; ">link</a>).</div><div><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-style: initial; border-color: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; "><br /><div align="center"><embed id="VideoPlayback" src="http://video.google.ca/googleplayer.swf?docid=7423873409142701967&amp;hl=en&amp;fs=true" allowfullscreen="true" allowscriptaccess="always" type="application/x-shockwave-flash" style="width: 400px; height: 326px; "></div><div><br /></div></blockquote></div></div><div><b>Shadow Warrior</b></div><div><b><span class="Apple-style-span" style="font-weight: normal; "><br /></span></b></div><div><b><span class="Apple-style-span" style="font-weight: normal; ">"Lo Wang", as my bro, cousin and I called it (after the senior citizen ninja main character) is an underrated 3D shooter powered by the Build Engine of Duke Nukem 3D fame. The source-code is now open (though the assets have to be downloaded separately), so this game is just begging for an enterprising (i.e "single") Flash developer to get it done.</span></b></div><div><b><span class="Apple-style-span" style="font-weight: normal; "><br /></span></b></div>A misunderstood title (its silly sense of humour was so different from the testosterone-filled macho shooters of the time, many people had a hard time making heads or tails of it), SW provided some of the best pure deathmatch play I've ever experienced. With crazy ninja weapons like sticky bombs and caltrops, as well as a nuclear missile and a flame-shooting disembodied monster head, what's not to like? The level of immature, irreverent zany fun SW offered was off the charts. This was another game I bought unsuspectingly. It came in a boxed set with Duke Nukem Atomic Edition for $10 in the bargain bin. I wanted to introduce my bro to Duke but we hardly ever played it. Lo Wang was our guy.<div><br /></div><div>You can get a Windows and Linux port&nbsp;<a href="http://www.proasm.com/sw/swp.html" style="text-decoration: underline; ">here</a>. Enjoy (it's not for kids, though).<br /><blockquote class="webkit-indent-blockquote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; background-repeat: no-repeat repeat; ">
<br />
<div align="center">
<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/hwOYJ2ctPsQ&amp;hl=en_US&amp;fs=1&amp;rel=0&amp;color1=0x2b405b&amp;color2=0x6b8ab6" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/hwOYJ2ctPsQ&amp;hl=en_US&amp;fs=1&amp;rel=0&amp;color1=0x2b405b&amp;color2=0x6b8ab6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></object>
</div>

<div><b><br /></b></div></blockquote><b><div><span class="Apple-style-span" style="font-weight: normal;"><span class="Apple-style-span" style="font-weight: 800;"><br /></span></span></div></b><div><div><b>What game would you Alchemize?</b></div><div><b><br /></b></div><div>For the sake of a little shameless nostalgia (let it all out, folks!), I'd love to hear what old game you'd like to see converted to Flash. Even better, follow Mike's example: go out and do the conversion yourself! You could be just that close to Flash gaming superstardom.</div><div><br /></div><div>Also, if you've used Alchemy in one of your own projects, I'd love to hear how it went and what you used it for.&nbsp;</div><div><br /></div><div>As always, thanks for dropping by!</div></div></div>]]>
    </content>
</entry>

</feed>

