<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0">
			<channel>
			<title>Josh Knopp - Software Developer</title>
			<link>http://www.joshknopp.com/blog/index.cfm</link>
			<description>Flex development (and occasionally other topics) by Josh Knopp.</description>
			<language>en-us</language>
			<pubDate>Sun, 20 May 2012 06:38:29 -0500</pubDate>
			<lastBuildDate>Sun, 18 Dec 2011 13:34:00 -0500</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>josh@joshknopp.com</managingEditor>
			<webMaster>josh@joshknopp.com</webMaster>
			
			<item>
				<title>[SOLVED] Generate a Stack Trace in an Flex/AIR Release Build</title>
				<link>http://www.joshknopp.com/blog/index.cfm/2011/12/18/SOLVED-Generate-a-Stack-Trace-in-an-FlexAIR-Release-Build</link>
				<description>
				
				This has been a source of frustration for such a long time, I had to share the solution.  Credit for this one goes to &lt;a href=&quot;http://www.mcbrearty.me.uk/index.php/2011/04/28/stack-traces-in-air-release-builds/&quot; target=&quot;_blank&quot;&gt;Martin McBrearty&lt;/a&gt;, and there are a few other blogs out there that support this method.

Important Disclaimer: This method does not appear to be officially supported, and is not guaranteed by me or anyone else to work.  Use at your own risk!  [More]
				</description>
				
				<category>Adobe Flex/AIR</category>				
				
				<pubDate>Sun, 18 Dec 2011 13:34:00 -0500</pubDate>
				<guid>http://www.joshknopp.com/blog/index.cfm/2011/12/18/SOLVED-Generate-a-Stack-Trace-in-an-FlexAIR-Release-Build</guid>
				
			</item>
			
			<item>
				<title>App of the Week: Aldiko Brings Free E-Books to Android</title>
				<link>http://www.joshknopp.com/blog/index.cfm/2011/7/22/App-of-the-Week-Aldiko-Brings-Free-EBooks-to-Android</link>
				<description>
				
				First things first: Aldiko is not the only app to offer free e-books to Android users. Amazon&apos;s Kindle app has been available for a while now, offering access to a wide range of free and paid literature. Overdrive serves up content through a partnership with many public libraries, allowing patrons to virtually borrow books. There are also a number of other e-book readers easily found by searching the Android Market. But many are restricted by proprietary delivery systems and digitally copyrighted content. Aldiko is a different breed.  [More]
				</description>
				
				<category>Android</category>				
				
				<category>App of the Week</category>				
				
				<pubDate>Fri, 22 Jul 2011 06:51:00 -0500</pubDate>
				<guid>http://www.joshknopp.com/blog/index.cfm/2011/7/22/App-of-the-Week-Aldiko-Brings-Free-EBooks-to-Android</guid>
				
			</item>
			
			<item>
				<title>App of the Week: TeamViewer Lets You Control Your PC From Anywhere</title>
				<link>http://www.joshknopp.com/blog/index.cfm/2011/7/15/App of the Week: TeamViewer</link>
				<description>
				
				Have you ever left the house in a hurry, only to realize you need an important document from your desktop PC? If only there was an elf standing by, able to email it to you... TeamViewer is that elf.  [More]
				</description>
				
				<category>Android</category>				
				
				<category>App of the Week</category>				
				
				<pubDate>Fri, 15 Jul 2011 07:57:00 -0500</pubDate>
				<guid>http://www.joshknopp.com/blog/index.cfm/2011/7/15/App of the Week: TeamViewer</guid>
				
			</item>
			
			<item>
				<title>[Fixed] ListBase TypeError #1010</title>
				<link>http://www.joshknopp.com/blog/index.cfm/2011/5/20/Fixed-ListBase-TypeError-1010</link>
				<description>
				
				Today I spent hours tracking down a bug related to inserting and/or deleting data from a &lt;a href=&quot;http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/Tree.html&quot; target=&quot;_blank&quot;&gt;Tree&lt;/a&gt; control.  In certain circumstances, an update to the underlying dataProvider would cause the following to be reported:

&lt;code&gt;TypeError: Error #1010: A term is undefined and has no properties.
     at mx.controls.listClasses::ListBase/makeRowsAndColumnsWithExtraRows()&lt;/code&gt;

After a bit of Googling, I found that I am not alone.  Other folks have the same issue with Tree.  Even more common, it looks like people are getting the same error when manipulating data in an &lt;a href=&quot;http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/AdvancedDataGrid.html&quot; target=&quot;_blank&quot;&gt;AdvancedDataGrid&lt;/a&gt;, in which case it is reported as:

&lt;code&gt;TypeError: Error #1010: A term is undefined and has no properties. at mx.controls.listClasses::AdvancedListBase/makeRowsAndColumnsWithExtraRows()&lt;/code&gt;

&lt;more /&gt;

After drilling down into the &lt;a href=&quot;http://opensource.adobe.com/wiki/display/flexsdk/Get+Source+Code&quot; target=&quot;_blank&quot;&gt;Flex Framework source&lt;/a&gt; and exploring the makeRowsAndColumnsWithExtraRows function, I added some watch expressions in the Flash Builder Debug pane.  (The debug features are really, really useful for this kind of thing.)  The culprit?  The value for verticalScrollPosition was being reported as -1, causing a line of code to look for an array element at index -1.  This array element was in turn undefined, so the error message suddenly makes perfect sense.

The real puzzler here is that verticalScrollPosition could ever be less than zero.  This is the logical equivalent of scrolling to the top of the list, then scrolling up one more spot, which is of course impossible.  In any case, I have decided to assume that -1 is invalid at all times, and that -1 really means 0.  I hope that is a safe assumption!

So, the solution is simple.  In my case I had already subclassed the Tree control.  If you&apos;re using the stock control from the framework, you&apos;ll need to subclass it and simply add the following:

&lt;code&gt;override public function get verticalScrollPosition():Number
{
     return Math.max(0, super.verticalScrollPosition);
}&lt;/code&gt;

All it does is intercept any request for verticalScrollPosition and guarantee that it is greater than or equal to zero.  In brief testing, the error has disappeared and I have seen no side effects.

Like anything else on this blog, use this fix at your own risk, since I can&apos;t guarantee it won&apos;t have any negative impact.

Happy coding! 
				</description>
				
				<category>Adobe Flex/AIR</category>				
				
				<pubDate>Fri, 20 May 2011 11:48:00 -0500</pubDate>
				<guid>http://www.joshknopp.com/blog/index.cfm/2011/5/20/Fixed-ListBase-TypeError-1010</guid>
				
			</item>
			
			<item>
				<title>Modularizing a Cairngorm Project - A Debriefing</title>
				<link>http://www.joshknopp.com/blog/index.cfm/2011/4/27/Modularizing-a-Cairngorm-Project</link>
				<description>
				
				I recently took on the task of a major refactor of an AIR project.  The application had grown into a monolithic beast with lots of conceptually related but logically disparate functionality.  Management of the code was becoming a challenge.  Packages were poorly structured.  It was a mess.

The real catalyst for change, though, was the compile time.  It had gradually crept up from a few seconds to 30+ seconds.  In an effort to return to acceptable levels, I broke out chunks of UI into modules within the main project.  I pulled graphics and sounds assets into a separate library SWC.  But there was no appreciable effect.

The plan of attack was to break out at least two sections of the application, which are essentially mini-applications on their own.  They share only a few common aspects of the main application, such as a common model and server connection manager, and are otherwise self-sufficient.  Luckily, the project is built on Cairngorm principles, meaning that these items are already more or less detached from the view components.

What follows is a set of principles for successfully breaking down a large Flex application into separate, manageable module-based projects.  These techniques seemed to have worked for me, although of course it is still a work in progress and there is much optimizing left to do.  Really, this post is probably more for me as a future reference than anything else, but if it can help someone else, that would be terrific.  Your mileage may vary, and if it does, leave me a comment to let me know what you&apos;ve done differently!  [More]
				</description>
				
				<category>Adobe Flex/AIR</category>				
				
				<pubDate>Wed, 27 Apr 2011 20:45:00 -0500</pubDate>
				<guid>http://www.joshknopp.com/blog/index.cfm/2011/4/27/Modularizing-a-Cairngorm-Project</guid>
				
			</item>
			
			<item>
				<title>[Fixed] Flash Builder CSS Warning</title>
				<link>http://www.joshknopp.com/blog/index.cfm/2011/4/26/Fixed-Flash-Builder-CSS-Warning</link>
				<description>
				
				If you&apos;re looking for a solution to the Flex 4.0 compiler warning &quot;&lt;i&gt;The style &apos;dropShadowVisible&apos; is only supported by type &apos;mx.controls.List&apos; with the theme(s) &apos;spark&apos;.&lt;/i&gt;&quot;, here it is (see the comment from Carlos Bonilla): &lt;a href=&quot;http://bugs.adobe.com/jira/browse/SDK-25720?focusedCommentId=394880&amp;page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_394880&quot; target=&quot;_blank&quot;&gt;http://bugs.adobe.com/jira/browse/SDK-25720&lt;/a&gt;

The fix is a one-liner, and just requires going into the SDK and commenting out a line in a CSS file.

I ran into this issue months ago with a Flex 4.0 project and applied a workaround, which basically consisted of ignoring all CSS-related warnings in the Flash Builder compiler.  This didn&apos;t feel quite right, but I didn&apos;t have time to keep screwing with it.

Fast-forward to last week, and a separate project, and here it was again.  I like to have a clean &quot;Problems&quot; view when I&apos;m working in a project, so I found this menacing.  I needed a proper fix once and for all.

The solution is posted in the Adobe Forums for the world to see, but it took me a while to find it.  The only reason for this post is the hope I can spare some poor soul out there the frustration of tracking it down.

Happy Coding! 
				</description>
				
				<category>Adobe Flex/AIR</category>				
				
				<pubDate>Tue, 26 Apr 2011 19:32:00 -0500</pubDate>
				<guid>http://www.joshknopp.com/blog/index.cfm/2011/4/26/Fixed-Flash-Builder-CSS-Warning</guid>
				
			</item>
			
			<item>
				<title>Ripoff Report: HDMI Cables</title>
				<link>http://www.joshknopp.com/blog/index.cfm/2009/12/4/Ripoff-Report-HDMI-Cables</link>
				<description>
				
				As I wandered around an electronics store the other day on my lunch break, I was reminded of a disturbing price-gouging scam that seems to be so widely accepted that it has become status quo.  I&apos;m talking about cables; specifically, digital A/V cables like HDMI, DVI, optical TOSLINK, etc.

Big-box stores are expoliting confusion about the differences between analog and digital signals, and the effect that small changes in the signal quality might have on the picture you see on your TV or the sound from your audio receiver.  See, in the dark ages (up until a few years ago), A/V signals were commonly transmitted in an analog format, which turns out to be remarkably inefficient in comparison to digital.  Another downfall of analog signals, more pertinent to this discussion, is that they are susceptible to a number of adverse distorting effects caused by loss of signal strength.

You&apos;ve seen the effects that moderate to severe interference or attenuation can have on an analog TV signal - snowy, ghost-like or rolling images, rendering your favorite shows unwatchable.  You&apos;ve also seen the effects of minor signal interference, which can typically be ignored but are annoying nonetheless.  Cable manufacturers have a rich history of fighting against common causes for analog signal weakening.  Many household devices produce some level of electromagnetic interference, so manufacturers introduced magnetic shielding.  These higher-end cables made a real, perceivable difference in picture clarity.

The time of battling the shortcomings of analog signals has passed.  Today, digital video and audio devices are the standard,  Digital signals are based on a simple protocol that consists of 1s and 0s.  There is very little room in a digital signal for errors.  Either the picture appears on your TV, or it doesn&apos;t.

Expensive brands like Monster Cable want you to believe there is a difference in the signal carried by their product.  This just isn&apos;t true.  So please, if you&apos;re looking for an HDMI cable to hook up your new 52-inch plasma, don&apos;t spend more than $10.

I use &lt;a href=&quot;http://www.monoprice.com/&quot; target=&quot;_blank&quot;&gt;monoprice.com&lt;/a&gt; (unsolicited plug!)  They carry quality products and their prices are second to none.  Try them or another online retailer, and save 80% of your hard-earned money. 
				</description>
				
				<category>Misc</category>				
				
				<pubDate>Fri, 04 Dec 2009 09:38:00 -0500</pubDate>
				<guid>http://www.joshknopp.com/blog/index.cfm/2009/12/4/Ripoff-Report-HDMI-Cables</guid>
				
			</item>
			
			<item>
				<title>I Am So Idiot</title>
				<link>http://www.joshknopp.com/blog/index.cfm/2008/7/22/I-Am-So-Idiot</link>
				<description>
				
				Today I found myself chasing my tail for a bit. This function threw an exception at runtime, which indicates that the argument passed in does not match the designated cfargument type.  I spent a half hour finding different ways to verify that both inputs, Group_ID and Max_Allowed, were indeed of type Numeric.&lt;br&gt;  [More]
				</description>
				
				<category>Coldfusion</category>				
				
				<pubDate>Tue, 22 Jul 2008 16:29:00 -0500</pubDate>
				<guid>http://www.joshknopp.com/blog/index.cfm/2008/7/22/I-Am-So-Idiot</guid>
				
			</item>
			
			<item>
				<title>Hair-Trigger</title>
				<link>http://www.joshknopp.com/blog/index.cfm/2008/6/25/HairTrigger</link>
				<description>
				
				I spent most of my morning chasing a sneaky little bug.  Basically, once upon a time one of our tables contained a column (to protect the innocent, let&apos;s say it was called Meaningless_Data).  Several months ago, my team removed the column from the DB schema as well as all references to it in the code.

I grabbed the changes and continued on my merry way... until today, which apparently is the first time I&apos;ve tried to use a function that touches that particular table.  I kept getting an error:

&lt;code&gt;Type: Database
Message: Error Executing Database Query.
Detail: Invalid column name &apos;Meaningless_Data&apos;.&lt;/code&gt;

So it&apos;s looking for the column and not finding it.  Not surprising, since we deliberately deleted it a long time ago.  I triple-checked the code, but couldn&apos;t find a single reference to Meaningless_Data in any SQL statement (or anywhere else in the codebase, for that matter).

I drove myself batty for way too long before copying the query straight from CFCATCH.SQL and manually running it against my local DB.  Same error.  Okay, it&apos;s &lt;i&gt;not&lt;/i&gt; a Coldfusion issue...

Then I ran it against the DB on our development server.  Worked like a charm.  Getting warmer...

I generated SQL scripts for the table on each machine and diffed them, and the culprit was revealed.  A trigger was pointing to the missing column, and was firing every time I touched the table.  The other developer had updated the triggers on his local DB and the dev server, but when I grabbed the schema and code updates, I didn&apos;t think to look there.

File under lessons learned. 
				</description>
				
				<category>Lessons Learned</category>				
				
				<category>SQL</category>				
				
				<pubDate>Wed, 25 Jun 2008 12:39:00 -0500</pubDate>
				<guid>http://www.joshknopp.com/blog/index.cfm/2008/6/25/HairTrigger</guid>
				
			</item>
			
			<item>
				<title>Shady McShadingtons, Exhibit A: Experts-Exchange.com</title>
				<link>http://www.joshknopp.com/blog/index.cfm/2008/3/28/Shady-McShadingtons--Exhibit-A-ExpertsExchangecom</link>
				<description>
				
				&lt;p&gt;
As a web developer, I often find myself in need of professional help. (Don&apos;t we all?)  Sometimes all that stands between me and a completed project is a quick Coldfusion, SQL, or Actionscript example.  At times like these, I turn to Google.
&lt;/p&gt;

&lt;p&gt;
Much of the time I can find what I need in the first few search results.  A code example here, a syntax clarification there.  One site that used to bug me, however, was Experts-Exchange.com.
&lt;/p&gt;  [More]
				</description>
				
				<category>SQL</category>				
				
				<category>Coldfusion</category>				
				
				<category>Misc</category>				
				
				<pubDate>Fri, 28 Mar 2008 12:36:00 -0500</pubDate>
				<guid>http://www.joshknopp.com/blog/index.cfm/2008/3/28/Shady-McShadingtons--Exhibit-A-ExpertsExchangecom</guid>
				
			</item>
			
			<item>
				<title>BlogCFC on GoDaddy (or, Why I&apos;m Going Gray at 26)</title>
				<link>http://www.joshknopp.com/blog/index.cfm/2008/3/14/BlogCFC-on-GoDaddy</link>
				<description>
				
				&lt;p&gt;
I&apos;ve been wanting to get a blog up and running for some time, and so a couple of weeks ago I downloaded &lt;a href=&quot;http://www.blogcfc.com/&quot;&gt;BlogCFC&lt;/a&gt;, an absolute work of art spearheaded by &lt;a href=&quot;http://www.coldfusionjedi.com/&quot;&gt;Raymond Camden&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
I popped open the zip file, read the documentation, saw how easy it was to set up BlogCFC, and basically got my hopes up.  Then I remembered that my site is hosted by GoDaddy, and as many of you already know, this generally means headache and heartache for a Coldfusion developer.
&lt;/p&gt;  [More]
				</description>
				
				<category>Coldfusion</category>				
				
				<category>GoDaddy</category>				
				
				<pubDate>Fri, 14 Mar 2008 12:03:00 -0500</pubDate>
				<guid>http://www.joshknopp.com/blog/index.cfm/2008/3/14/BlogCFC-on-GoDaddy</guid>
				
			</item>
			
			<item>
				<title>SQL Date Conversions - More Than You Want To Know</title>
				<link>http://www.joshknopp.com/blog/index.cfm/2008/3/11/SQL-Date-Conversions--More-Than-You-Want-To-Know</link>
				<description>
				
				&lt;p&gt;
Today I was writing a query that performed some date formatting and found myself using &lt;a href=&quot;http://sqljunkies.com/Article/6676BEAE-1967-402D-9578-9A1C7FD826E5.scuk&quot;&quot;&gt;this resource by Manuj Bahl&lt;/a&gt;, to which I&apos;ve often referred but to which I&apos;ve rarely given any thought.  By dumb luck, I fat-fingered one of the codes and ended up with something not listed on the table, but the query ran fine.
&lt;/p&gt;

&lt;p&gt;
Curiousity sufficiently piqued, I wrote a simple Coldfusion script, and a few seconds later found myself looking at a complete table of date/time conversion codes.  Most of them are not terribly useful, but in case anyone wants an exhaustive list of every conversion code available, you&apos;ll find it behind the cut.
&lt;/p&gt;  [More]
				</description>
				
				<category>SQL</category>				
				
				<pubDate>Tue, 11 Mar 2008 20:16:00 -0500</pubDate>
				<guid>http://www.joshknopp.com/blog/index.cfm/2008/3/11/SQL-Date-Conversions--More-Than-You-Want-To-Know</guid>
				
			</item>
			
			<item>
				<title>GoDaddy and Flash Forms</title>
				<link>http://www.joshknopp.com/blog/index.cfm/2007/2/10/GoDaddy-and-Flash-Forms</link>
				<description>
				
				Once upon a time, GoDaddy had an issue displaying Coldfusion-generated Flash Forms in Internet Explorer. I spent a few hours on the issue and found that it was related to a file that was unavailable, for whatever reason, to ColdFusion at runtime. I spent a lengthy amount of time working with GoDaddy&apos;s tech support personnel, who have since resolved the issue (good work!). However, I know that other companies that provide hosting may have similar problems, so the following is a workaround.  [More]
				</description>
				
				<category>Coldfusion</category>				
				
				<category>GoDaddy</category>				
				
				<pubDate>Sat, 10 Feb 2007 11:22:00 -0500</pubDate>
				<guid>http://www.joshknopp.com/blog/index.cfm/2007/2/10/GoDaddy-and-Flash-Forms</guid>
				
			</item>
			</channel></rss>
