<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">

			<channel>
			<title>Adam Howitt&apos;s Blog - Flash</title>
			<link>http://www.webdevref.com/blog/index.cfm</link>
			<description>A blog for ColdFusion, iPhone Development and other musings</description>
			<language>en-us</language>
			<pubDate>Wed, 08 Sep 2010 05:25:47 -0400</pubDate>
			<lastBuildDate>Fri, 09 Apr 2010 15:54:00 -0400</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>adamhowitt@gmail.com</managingEditor>
			<webMaster>adamhowitt@gmail.com</webMaster>
			<itunes:subtitle></itunes:subtitle>
			<itunes:summary></itunes:summary>
			<itunes:category text="Technology" />
			<itunes:category text="Technology">
				<itunes:category text="Podcasting" />
			</itunes:category>
			<itunes:category text="Technology">
				<itunes:category text="Tech News" />
			</itunes:category>
			<itunes:keywords></itunes:keywords>
			<itunes:author></itunes:author>
			<itunes:owner>
				<itunes:email>adamhowitt@gmail.com</itunes:email>
				<itunes:name></itunes:name>
			</itunes:owner>
			<itunes:image href="" />
			<image>
				<url></url>
				<title>Adam Howitt&apos;s Blog</title>
				<link>http://www.webdevref.com/blog/index.cfm</link>
			</image>
			<itunes:explicit>no</itunes:explicit>
			
			
			
			
			
			<item>
				<title>Apple is Doing the Right Thing Blocking Flash</title>
				<link>http://www.webdevref.com/blog/index.cfm/2010/4/9/Apple-is-Doing-the-Right-Thing-Blocking-Flash</link>
				<description>
				
				I just read &lt;a href=&quot;http://blog.joa-ebert.com/2010/04/09/what-apple-just-did/&quot;&gt;Joa Ebert&apos;s theoretical conversation&lt;/a&gt; parodying the move by Apple to block Flash code-generation tools and thought I&apos;d repost my argument here.  The argument is that Apple is being petty or childish by preventing developers from using code generation tools to develop apps.

I think the author and the flash devs who agree are selfishly angry.  They think this is a move to block them and make things harder for THEM but it&apos;s not about being childish. It&apos;s about a track record, mobile development and maintaining the reputation of the app ecosystem.

&lt;h3&gt;Track Record.&lt;/h3&gt;
I (and many of my mac cohorts) have seen Flash spike CPU on brand new hardware with fast processors and 8GB RAM so how will my poor little iPhone perform?  Sure there is an argument that enabling flash on the devices reduces the demand for native apps but hybrid apps and jQuery are all options now but the native apps continue to flourish.

&lt;h3&gt;Mobile Development.&lt;/h3&gt;
How big is your SWF?  For every flash developer who knows that an optimized lightweight SWF loads faster there are hundreds who build and deploy massive SWF files that take a lot longer to load even on broadband, let alone filtering that through AT&amp;T&apos;s &quot;reliable&quot; network.  From a user experience if I wander onto a page with a bloated flash movie I risk crashing my device or at least locking up my bandwidth.

&lt;h3&gt;Code generation.&lt;/h3&gt;
I&apos;ve been a ColdFusion developer for over 10 years and have written code generation apps from scratch but always with the understanding it gets me 80% of the way there even when I&apos;m generating ColdFusion apps!  Imagine the idea of trying to write codegen in one language for another?!  

It took me over 200 hours of development to release the first version of &lt;a href=&quot;http://www.walkjogrun.net/iphone&quot;&gt;WalkJogRun Running Routes&lt;/a&gt; - and another 200 for each subsequent release.  It&apos;s just that hard.

If the developers using the generated code don&apos;t learn Objective C it puts pressure on the review process.  Just to correct the point in the blog post - review time is less than a week and has been for some time with my record turnaround at 3 days recently.  Starting with this 80% code developers either never submit because they can&apos;t get it working or do submit it and have multiple app rejections because they don&apos;t understand why it breaks.  

A plethora of CS5 generated apps could therefore put a huge strain on the review resources based on these multiple rejections.  Even if an app sneaks through the likelyhood of an app continuing to crash would threaten the reputation of the developer and the app store.

&lt;h3&gt;A solution.&lt;/h3&gt;
I think that if Adobe would be willing to sponsor the addition of a team of Apple Appstore reviewers dedicated to apps built with Adobe&apos;s codegen tools the situation would be very different. It&apos;s easy for Adobe to say their tools would be perfect but until they pay the salaries of the review team it&apos;s hard to accept responsibility for the consequences of their actions.
				
				</description>
						
				
				<category>Flash</category>				
				
				<category>iPhone Development</category>				
				
				<category>Coldfusion</category>				
				
				<pubDate>Fri, 09 Apr 2010 15:54:00 -0400</pubDate>
				<guid>http://www.webdevref.com/blog/index.cfm/2010/4/9/Apple-is-Doing-the-Right-Thing-Blocking-Flash</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Animator vs Animation</title>
				<link>http://www.webdevref.com/blog/index.cfm/2006/7/28/Animator-vs-Animation</link>
				<description>
				
				For all you flash animators out there I just received a link to the funniest &amp;quot;meta-movie&amp;quot; I&apos;ve come across where the animation in Flash rebels against the animator.&amp;nbsp; Great work by &lt;a href=&quot;http://www.deviantart.com/view/34244097/&quot; target=&quot;_self&quot; title=&quot;deviantART&quot;&gt;DeviantArt&lt;/a&gt;&lt;br /&gt;
				
				</description>
						
				
				<category>Flash</category>				
				
				<pubDate>Fri, 28 Jul 2006 14:52:49 -0400</pubDate>
				<guid>http://www.webdevref.com/blog/index.cfm/2006/7/28/Animator-vs-Animation</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>CFLunch Photos from Ben Forta&apos;s visit and sIFR</title>
				<link>http://www.webdevref.com/blog/index.cfm/2005/2/3/CFLunch-Photos-from-Ben-Forta&apos;s-visit-and-sIFR</link>
				<description>
				
				Thanks to &lt;a href=&quot;http://www.forta.com&quot;&gt;Ben Forta&lt;/a&gt; for dropping by in January and adding extra credibility to the CFLunch concept I am fostering in Chicago, soon to be Cleveland and soon to be &lt;font style=&quot;text-decoration: line-through;&quot;&gt;Detroit&lt;/font&gt; (whoops!) Denver.  I&apos;ve just added a &lt;a href=&quot;http://www.cflunch.com&quot;&gt;photo section&lt;/a&gt; to the site and uploaded some great resources from yesterday&apos;s meeting on sIFR, PDF generation, web standards and CSS.

Danilo Celic introduced sIFR to us and is planning an article with Macromedia later this month I believe.  From my own understanding of the information Danilo and Jeff discussed yesterday, the Scalable Inman Flash Replacement (sIFR) is a technique for delivering rich typography to the browser which is standards-compliant and accessible.  I&apos;m off to read about it...
				
				</description>
						
				
				<category>Flash</category>				
				
				<category>Coldfusion</category>				
				
				<pubDate>Thu, 03 Feb 2005 11:50:17 -0400</pubDate>
				<guid>http://www.webdevref.com/blog/index.cfm/2005/2/3/CFLunch-Photos-from-Ben-Forta&apos;s-visit-and-sIFR</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Frogger, by Vexcom</title>
				<link>http://www.webdevref.com/blog/index.cfm/2005/1/25/Frogger,-by-Vexcom</link>
				<description>
				
				&lt;P&gt;&lt;A href=&quot;http://www.vexcom.com/html/team.cfm&quot;&gt;Wesley Warren&apos;s&lt;/A&gt; Vexcom have put together a fun coffee break filler based on Frogger called &lt;A href=&quot;http://www.efrogz.com/&quot;&gt;eFrogz.com&lt;/A&gt;.&amp;nbsp; Duck and dodge your way past the obstacles in our way as we make our way through the IT wilderness.&lt;/P&gt;
&lt;P&gt;Vexcom has regularly sponsored the Atlanta CFUG and offer consulting services in the area.&lt;/P&gt;
&lt;P&gt;Thanks for the distraction Wesley.&lt;/P&gt;
				
				</description>
						
				
				<category>Flash</category>				
				
				<category>Coldfusion</category>				
				
				<pubDate>Tue, 25 Jan 2005 11:09:38 -0400</pubDate>
				<guid>http://www.webdevref.com/blog/index.cfm/2005/1/25/Frogger,-by-Vexcom</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Topical Flash Scrabble - Walmart</title>
				<link>http://www.webdevref.com/blog/index.cfm/2004/11/19/Topical-Flash-Scrabble---Walmart</link>
				<description>
				
				Here is today&apos;s topical Flash Scrabble puzzle brought to you as Walmart announces the &lt;a href=&quot;http://biz.yahoo.com/prnews/041119/daf010_1.html&quot;&gt;12 Toys of Christmas&lt;/a&gt;.  I was surprised to see that Cabbage Patch Kids(R) Dolls are back. (Did they ever leave?)  I went past the original &lt;a href=&quot;http://www.cabbagepatchkids.com/&quot;&gt;birthplace of the cabbage patch kids&lt;/a&gt; on the way to the North Georgia Mountains earlier this year.

&lt;OBJECT classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0&quot; WIDTH=&quot;450&quot; HEIGHT=&quot;200&quot; id=&quot;scrWordValid&quot;  ALIGN=&quot;&quot;&gt;&lt;PARAM NAME=movie VALUE=&quot;http://www.knowmysize.com/blog/scrWordValid.swf?letters=walmart&amp;board=0020e030&quot;&gt;&lt;PARAM NAME=quality VALUE=high&gt;&lt;PARAM NAME=bgcolor VALUE=#000000&gt;&lt;EMBED src=&quot;http://www.knowmysize.com/blog/scrWordValid.swf?letters=walmart&amp;board=0020e030&quot; quality=high bgcolor=#000000 WIDTH=&quot;450&quot; HEIGHT=&quot;200&quot; NAME=&quot;scrScore&quot; ALIGN=&quot;&quot; TYPE=&quot;application/x-shockwave-flash&quot; PLUGINSPAGE=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;&lt;/EMBED&gt;  &lt;/OBJECT&gt;
				
				</description>
						
				
				<category>Flash</category>				
				
				<category>Blogging</category>				
				
				<pubDate>Fri, 19 Nov 2004 12:38:30 -0400</pubDate>
				<guid>http://www.webdevref.com/blog/index.cfm/2004/11/19/Topical-Flash-Scrabble---Walmart</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Flash Scrabble - Clinton</title>
				<link>http://www.webdevref.com/blog/index.cfm/2004/11/19/Flash-Scrabble---Clinton</link>
				<description>
				
				Due to a tough deadline I&apos;ve been bad at posting lately besides my election rants so I thought I&apos;d reward you all with a semi regular Flash Scrabble post.  I developed this for &lt;a href=&quot;http://www.google.com/url?sa=U&amp;start=1&amp;q=http://www.puzzleblog.com/&amp;e=912&quot;&gt;Adam Jones&lt;/a&gt; who was doing this manually but then stopped running the regular spot due to his new job.  I&apos;ll continue and maybe add a daily competition leaderboard if you sign in.  Or not.  Anyhow:


&lt;OBJECT classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0&quot; WIDTH=&quot;450&quot; HEIGHT=&quot;200&quot; id=&quot;scrWordValid&quot;  ALIGN=&quot;&quot;&gt;&lt;PARAM NAME=movie VALUE=&quot;http://www.knowmysize.com/blog/scrWordValid.swf?letters=clinton&amp;board=0102s000&quot;&gt;&lt;PARAM NAME=quality VALUE=high&gt;&lt;PARAM NAME=bgcolor VALUE=#000000&gt;&lt;EMBED src=&quot;http://www.knowmysize.com/blog/scrWordValid.swf?letters=clinton&amp;board=0102s000&quot; quality=high bgcolor=#000000 WIDTH=&quot;450&quot; HEIGHT=&quot;200&quot; NAME=&quot;scrScore&quot; ALIGN=&quot;&quot; TYPE=&quot;application/x-shockwave-flash&quot; PLUGINSPAGE=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;&lt;/EMBED&gt;  &lt;/OBJECT&gt;
				
				</description>
						
				
				<category>Flash</category>				
				
				<category>Blogging</category>				
				
				<pubDate>Fri, 19 Nov 2004 03:17:13 -0400</pubDate>
				<guid>http://www.webdevref.com/blog/index.cfm/2004/11/19/Flash-Scrabble---Clinton</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Best Flash Postcode App Ever</title>
				<link>http://www.webdevref.com/blog/index.cfm/2004/9/22/Best-Flash-Postcode-App-Ever</link>
				<description>
				
				This Flash postcode tool from &lt;a href=&quot;http://acg.media.mit.edu/people/fry/zipdecode/&quot;&gt;Ben Fry&lt;/a&gt; is incredibly good fun to play with.  Start typing your zip and it zooms from a map of the US to your zipcode with each entered digit.
				
				</description>
						
				
				<category>Flash</category>				
				
				<pubDate>Wed, 22 Sep 2004 19:45:32 -0400</pubDate>
				<guid>http://www.webdevref.com/blog/index.cfm/2004/9/22/Best-Flash-Postcode-App-Ever</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Learn Guitar With Flash</title>
				<link>http://www.webdevref.com/blog/index.cfm/2004/9/22/Learn-Guitar-With-Flash</link>
				<description>
				
				I just came home from my 4th guitar class with the chords and bass pattern to Ring Of Fire by Johnny Cash and after some practise I got it going.  In my struggles I couldn&apos;t help but wish there was something out there where I can specify the chords, strum pattern, set a tempo and hit play to get a pace partner.

I scanned around and found a fun site called &lt;a href=&quot;http://actiontab.com/&quot;&gt;ActionTab.com&lt;/a&gt; which has interactive flash fingerpicking demonstrations with two speeds.  It is just okay as a tool for beginners - I think I want what I described above though so I&apos;ll add it to my todo pile and if I get any spare time to work on this I will post it here when I&apos;m done.
				
				</description>
						
				
				<category>Flash</category>				
				
				<category>Music</category>				
				
				<pubDate>Wed, 22 Sep 2004 02:21:02 -0400</pubDate>
				<guid>http://www.webdevref.com/blog/index.cfm/2004/9/22/Learn-Guitar-With-Flash</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Visual Studio .NET Professional $549!</title>
				<link>http://www.webdevref.com/blog/index.cfm/2004/7/22/Visual-Studio-.NET-Professional-$549!</link>
				<description>
				
				You read it right - &lt;a href=&quot;http://msdn.microsoft.com/vstudio/howtobuy/pricing.aspx&quot;&gt;Visual Studio .NET Professional $549!&lt;/a&gt;. If you own a qualifying MS product or Macromedia products or one of the following COMPETING products you are eligible for the discount purchase price:

Competitive products: 
IBM VisualAge, IBM WebSphere Studio, BEA WebLogic Workshop, Oracle Developer Suite, Oracle JDeveloper, Borland C++ Builder, Borland Enterprise Studio, Borland JBuilder, Borland Delphi, Borland Kylix, WebGain Studio, WebGain VisualCafe, TogetherSoft Together ControlCenter, Sun ONE Studio, Macromedia Studio, Macromedia Dreamweaver, Macromedia Flash, IntelliJ IDEA, Intel C++, Metrowerks CodeWarrior  

Talk about agressive marketing strategies to steal programmers away from other languages!  I found this by accident as I installed an old copy of Visual Studio 6 on my new laptop for giggles and went thru to register.  $549 is pretty cheap for everything that comes in Visual Studio .NET 2003 Pro.
				
				</description>
						
				
				<category>Flash</category>				
				
				<category>Tech</category>				
				
				<category>Coldfusion</category>				
				
				<pubDate>Thu, 22 Jul 2004 13:16:59 -0400</pubDate>
				<guid>http://www.webdevref.com/blog/index.cfm/2004/7/22/Visual-Studio-.NET-Professional-$549!</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>3026 lines of JavaScript and a Flash Communication Server</title>
				<link>http://www.webdevref.com/blog/index.cfm/2003/12/14/3026-lines-of-JavaScript-and-a-Flash-Communication-Server</link>
				<description>
				
				Regardless of your opinion on NFL football, check out the incredible work over on the &lt;a href=&quot;http://www.nfl.com/gamecenter/live/NFL_20031214_GB@SD&quot;&gt;NFL Gamecenter Live site&lt;/a&gt; (and hopefully enjoy the Packers getting destroyed).

Not only do the scores update without the page refreshing but it also has audio alerts for the game you are currently watching.  I think it is new this week but it scared the pants off me when I heard my computer spring to life as a voice yelled &quot;TOUCHDOWN!&quot;.  I took the source to seek the Wizard of Oz and it appears to be achieved with a flash swf file connecting for live audio.  

This application of web technology works great and it helps me to track the fate of my Bears when all I get to see is Michael Vick having his tantrums because I live in Atlanta.
				
				</description>
						
				
				<category>Flash</category>				
				
				<pubDate>Sun, 14 Dec 2003 18:26:47 -0400</pubDate>
				<guid>http://www.webdevref.com/blog/index.cfm/2003/12/14/3026-lines-of-JavaScript-and-a-Flash-Communication-Server</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Turkey Shootout</title>
				<link>http://www.webdevref.com/blog/index.cfm/2003/12/1/Turkey-Shootout</link>
				<description>
				
				A little late or maybe a little early depending on your country of origin.  Either way, aim.... fire! This &lt;a href=&quot;http://www.7fire.com/flash/TurkeyShooter.swf&quot;&gt;flash turkey shoot game&lt;/a&gt; is a festive way to kill some time (sorry for the bad joke but I&apos;m still stuffed full of thanksgiving turkey).
				
				</description>
						
				
				<category>Flash</category>				
				
				<pubDate>Mon, 01 Dec 2003 14:32:58 -0400</pubDate>
				<guid>http://www.webdevref.com/blog/index.cfm/2003/12/1/Turkey-Shootout</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Validation</title>
				<link>http://www.webdevref.com/blog/index.cfm/2003/9/30/Validation</link>
				<description>
				
				While &quot;Packers Suck&quot; is perfectly valid it appears there is only one word which can be made using the board in my last post so here&apos;s one that is more functional, demonstrating the puzzleblog puzzle of the day:

&lt;OBJECT classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0&quot; WIDTH=&quot;450&quot; HEIGHT=&quot;200&quot; id=&quot;scrWordValid&quot;  ALIGN=&quot;&quot;&gt;&lt;PARAM NAME=movie VALUE=&quot;http://www.knowmysize.com/blog/scrWordValid.swf?letters=gelties&amp;board=02o00300&quot;&gt;&lt;PARAM NAME=quality VALUE=high&gt;&lt;PARAM NAME=bgcolor VALUE=#000000&gt;&lt;EMBED src=&quot;http://www.knowmysize.com/blog/scrWordValid.swf?letters=gelties&amp;board=02o00300&quot; quality=high bgcolor=#000000 WIDTH=&quot;450&quot; HEIGHT=&quot;200&quot; NAME=&quot;scrScore&quot; ALIGN=&quot;&quot; TYPE=&quot;application/x-shockwave-flash&quot; PLUGINSPAGE=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;&lt;/EMBED&gt;
&lt;/OBJECT&gt;
				
				</description>
						
				
				<category>Flash</category>				
				
				<category>Coldfusion</category>				
				
				<category>Blogging</category>				
				
				<pubDate>Tue, 30 Sep 2003 10:46:39 -0400</pubDate>
				<guid>http://www.webdevref.com/blog/index.cfm/2003/9/30/Validation</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Scrabble/Wordblog with Word Validation</title>
				<link>http://www.webdevref.com/blog/index.cfm/2003/9/30/Scrabble/Wordblog-with-Word-Validation</link>
				<description>
				
				Yesterday I included the code to perform an online word lookup and return an XML packet.  Here is the Flash application which includes the code to consume the xml packets and display a message.  All that remains for me to do is 
&lt;ol&gt;
&lt;li&gt; edit the color scheme for the app to make it look more like the original.  &lt;/li&gt;
&lt;li&gt; The owner of Puzzleblog has requested that the letters should only go partially transparent once they are on the board and you mouse over them&lt;/li&gt;
&lt;li&gt; Add a publish result button to send your scores to the Puzzleblog site including the number of bad lookups and your top 3 words.&lt;/li&gt;
&lt;/ol&gt;


&lt;OBJECT classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0&quot; WIDTH=&quot;450&quot; HEIGHT=&quot;200&quot; id=&quot;scrWordValid&quot;  ALIGN=&quot;&quot;&gt;&lt;PARAM NAME=movie VALUE=&quot;http://www.knowmysize.com/blog/scrWordValid.swf?letters=packers&amp;board=0102suck&quot;&gt;&lt;PARAM NAME=quality VALUE=high&gt;&lt;PARAM NAME=bgcolor VALUE=#000000&gt;&lt;EMBED src=&quot;http://www.knowmysize.com/blog/scrWordValid.swf?letters=packers&amp;board=0102suck&quot; quality=high bgcolor=#000000 WIDTH=&quot;450&quot; HEIGHT=&quot;200&quot; NAME=&quot;scrScore&quot; ALIGN=&quot;&quot; TYPE=&quot;application/x-shockwave-flash&quot; PLUGINSPAGE=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;&lt;/EMBED&gt;
&lt;/OBJECT&gt;
				
				</description>
						
				
				<category>Flash</category>				
				
				<category>Coldfusion</category>				
				
				<category>Blogging</category>				
				
				<pubDate>Tue, 30 Sep 2003 10:36:05 -0400</pubDate>
				<guid>http://www.webdevref.com/blog/index.cfm/2003/9/30/Scrabble/Wordblog-with-Word-Validation</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Outtage</title>
				<link>http://www.webdevref.com/blog/index.cfm/2003/9/29/Outtage</link>
				<description>
				
				Sorry to anyone who was looking for this site between 1 and 4pm today but cfm-resources.com were upgrading to CFMX 6.1 and I didn&apos;t receive notification.  I suspect several people were looking for my earlier posts about &lt;a href=&quot;http://www.knowmysize.com/blog/index.cfm?mode=entry&amp;entry=94&quot;&gt;IESpell&lt;/a&gt; and &lt;a href=&quot;http://www.knowmysize.com/blog/index.cfm?mode=entry&amp;entry=93&quot;&gt;Screen Scraping for my Scrabble/Wordblog&lt;/a&gt; app.  Should be good now...
				
				</description>
						
				
				<category>Flash</category>				
				
				<category>Coldfusion</category>				
				
				<category>Blogging</category>				
				
				<pubDate>Mon, 29 Sep 2003 17:55:19 -0400</pubDate>
				<guid>http://www.webdevref.com/blog/index.cfm/2003/9/29/Outtage</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Scrabble/Wordblog: Smart screen scraping for Flash</title>
				<link>http://www.webdevref.com/blog/index.cfm/2003/9/29/Scrabble/Wordblog:-Smart-screen-scraping-for-Flash</link>
				<description>
				
				The scrabble application requires us to lookup a word before allowing it to be submitted to ensure that it is valid.  Since writing our own dictionary would be troublesome and the &lt;a href=&quot;http://www.puzzleblog.com&quot;&gt;Puzzleblog&lt;/a&gt; site has a lookup system on it, we will use cfhttp to access the results of the lookup.

Cfhttp calls rely on http and as such can take longer than expected or even fail.  To reduce the coupling between this application and the lookup system we create a cached dictionary of words each day to ensure each word is only looked up once.  Now theoretically, with all 7 letters (excluding any fixed tiles) you have 7! (factorial) potential combinations = 7*6*5*4*3*2*1 = 5040 lookups but since you can use 7 or less letters we get 7!+6!+5!+4!+3!+2+1!= 5913 combinations.  I say theoretically because most people playing the game would have a reasonable vocab and would know that &quot;bbeedrm&quot; is not even a valid construction, let alone a valid word.  I set the cache to flush daily since a new word is added daily and this will keep the dictionary small and current.  As time goes by, words from previous days will receive fewer lookups by the nature of the game.

To communicate with the flash application, I output the results as a simple xml document.  While the document is slightly larger than a comma separated values format, it is extensible such that if I wanted to add more information into the resultset later, or perform multiple lookups at once, I could do so without having to perform a huge overhaul on the flash function to decode the results.

Here&apos;s some heavily commented ColdFusion code to do the job:
 
&lt;style&gt;
.cfcode { color:maroon;}
.cfcomment,.othertags { color: blue;}
.formstuff {color: orange;}
.styleclassname {color: fuchsia;}
.styletag {color: purple;}
.stylevalue {color:red;}
.otherstyleelements {color:navy;}
.cfcomments {color:gray;}
&lt;/style&gt;

&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;CFsilent&amp;gt;&lt;BR&gt; &lt;/font&gt;&lt;font class=&apos;cfcomments&apos;&gt;&amp;lt;!--- Create the application with a 1 day timeout so the dictionary doesn&apos;t get too large ---&amp;gt;&lt;/font&gt;&lt;BR&gt;
&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;CFapplication name=&lt;font class=&quot;cfcomment&quot;&gt;&quot;myDict&quot;&lt;/font&gt; applicationtimeout=&quot;#createtimespan(1,0,0,0)#&quot;&amp;gt;&lt;BR&gt; &lt;/font&gt;&lt;font class=&apos;cfcomments&apos;&gt;&amp;lt;!--- Create an application structure to store our dictionary ---&amp;gt;&lt;/font&gt;&lt;BR&gt;
&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;CFif not isdefined(&lt;font class=&quot;cfcomment&quot;&gt;&quot;application.wordLookup&quot;&lt;/font&gt;)&amp;gt;&lt;BR&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;CFset application.wordLookup=structNew()&amp;gt;&lt;BR&gt; &lt;/font&gt;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;/CFif&amp;gt;&lt;BR&gt; &lt;/font&gt;&lt;font class=&apos;cfcomments&apos;&gt;&amp;lt;!--- Check if our word is in our 1 day old dictionary already.  No sense in looking it up again!  ---&amp;gt;&lt;/font&gt;&lt;BR&gt;
&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;CFif not StructKeyExists(application.wordLookup,&lt;font class=&quot;cfcomment&quot;&gt;&quot;#url.q#&quot;&lt;/font&gt;)&amp;gt;&lt;BR&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcomments&apos;&gt;&amp;lt;!--- Define the page to scrape ---&amp;gt;&lt;/font&gt;&lt;BR&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;CFset theUrl=&lt;font class=&quot;cfcomment&quot;&gt;&quot;http://www.mattelscrabble.com/cgi-bin/chambers/scrabbleword.pl?action=action&amp;amp;word=#url.q#&quot;&lt;/font&gt;&amp;gt;&lt;BR&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcomments&apos;&gt;&amp;lt;!--- cfhttp can be problematic so just in case it fails, use a try catch block ---&amp;gt;&lt;/font&gt;&lt;BR&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;CFtry&amp;gt;&lt;BR&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcomments&apos;&gt;&amp;lt;!--- Make the call to the page. Cfhttp page content is stored in cfhttp.filecontent ---&amp;gt;&lt;/font&gt;&lt;BR&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;CFhttp url=&lt;font class=&quot;cfcomment&quot;&gt;&quot;#theUrl#&quot;&lt;/font&gt; timeout=&quot;20&quot; method=&lt;font class=&quot;cfcomment&quot;&gt;&quot;get&quot;&lt;/font&gt; &amp;gt;&amp;lt;/cfhttp&amp;gt;&lt;BR&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--- Create a variable to hold the chunk of text you we are looking for, in this case an img&lt;BR&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tag representing the image no_sorry.gif (tells us the word doesn&apos;t exist)  ---&amp;gt;&lt;BR&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;CFset searchstring=&apos;&amp;lt;img src=&lt;font class=&quot;cfcomment&quot;&gt;&quot;../../en/adults/images/chambers/no_sorry.gif&quot;&lt;/font&gt; alt=&quot;Sorry&apos;&amp;gt;&lt;BR&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcomments&apos;&gt;&amp;lt;!--- Set the variable content accordingly and use -1 if the call fails ---&amp;gt;&lt;/font&gt;&lt;BR&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;CFif findnocase(searchstring,cfhttp.filecontent) gt 0&amp;gt;&lt;BR&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;CFset content=0&amp;gt;&lt;BR&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;CFelse&amp;gt;&lt;BR&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;CFset content=1&amp;gt;&lt;BR&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;/CFif&amp;gt;&lt;BR&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;CFcatch type=&lt;font class=&quot;cfcomment&quot;&gt;&quot;Any&quot;&lt;/font&gt;&amp;gt;&lt;BR&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;CFset content=-1&amp;gt;&lt;BR&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;/CFcatch&amp;gt;&lt;BR&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;/CFtry&amp;gt;&lt;BR&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcomments&apos;&gt;&amp;lt;!--- Add the word we just looked up to our application structure dictionary ---&amp;gt;&lt;/font&gt;&lt;BR&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;CFset temp= structInsert(application.wordLookup,url.q,content,false)&amp;gt;&lt;BR&gt; &lt;/font&gt;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;CFelse&amp;gt;&lt;BR&gt; &lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcomments&apos;&gt;&amp;lt;!--- If the word exists in our dictionary set the content variable using the one from our cache ---&amp;gt;&lt;/font&gt;&lt;BR&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;CFset content=structFind(application.wordLookup, &lt;font class=&quot;cfcomment&quot;&gt;&quot;#url.q#&quot;&lt;/font&gt;)&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt; &lt;/font&gt;&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;/CFif&amp;gt;&lt;BR&gt; &lt;/font&gt;&lt;font class=&apos;cfcomments&apos;&gt;&amp;lt;!--- Finally create an xml document to display the single result, the url to lookup the word if in doubt and the word itself ---&amp;gt;&lt;/font&gt;&lt;BR&gt;
&lt;font class=&apos;cfcode&apos;&gt;&amp;lt;/CFsilent&amp;gt;&amp;lt;cfoutput&amp;gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;&amp;lt;root&amp;gt;&amp;lt;result&amp;gt;#content#&amp;lt;/result&amp;gt;&amp;lt;url&amp;gt;#urlencodedformat(theUrl)#&amp;lt;/url&amp;gt;&amp;lt;word&amp;gt;#url.q#&amp;lt;/word&amp;gt;&amp;lt;/root&amp;gt;&amp;lt;/cfoutput&amp;gt;&lt;BR&gt; &lt;/font&gt;
				
				</description>
						
				
				<category>Flash</category>				
				
				<category>Coldfusion</category>				
				
				<pubDate>Mon, 29 Sep 2003 10:29:40 -0400</pubDate>
				<guid>http://www.webdevref.com/blog/index.cfm/2003/9/29/Scrabble/Wordblog:-Smart-screen-scraping-for-Flash</guid>
				
			</item>
			
		 	
			</channel></rss>