<?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>Jeffry Houser&apos;s Blog - Professional</title>
			<link>http://www.jeffryhouser.com/index.cfm</link>
			<description>Jeffry Houser&apos;s Blog</description>
			<language>en-us</language>
			<pubDate>Thu, 20 Jun 2013 06:25:06 -0400</pubDate>
			<lastBuildDate>Tue, 18 Jun 2013 13:49:00 -0400</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			
			<managingEditor>&#106;&#104;&#98;&#108;&#111;&#103;&#64;&#102;&#97;&#114;&#99;&#114;&#121;&#102;&#108;&#121;&#46;&#99;&#111;&#109;</managingEditor>
			<webMaster>&#106;&#104;&#98;&#108;&#111;&#103;&#64;&#102;&#97;&#114;&#99;&#114;&#121;&#102;&#108;&#121;&#46;&#99;&#111;&#109;</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>Jeffry Houser</itunes:author>
			<itunes:owner>
				<itunes:email>jhblog@farcryfly.com</itunes:email>
				<itunes:name>Jeffry Houser</itunes:name>
			</itunes:owner>
			<itunes:image href="" />
			<image>
				<url></url>
				<title>Jeffry Houser&apos;s Blog</title>
				<link>http://www.jeffryhouser.com/index.cfm</link>
			</image>
			<itunes:explicit>no</itunes:explicit>
			
			<item>
				<title>360|Stack is the rebranded 360|Flex.</title>
				<link>http://www.jeffryhouser.com/index.cfm/2013/6/18/360Stack-is-the-rebranded-360Flex</link>
				<description>
				
				I am buried in my man-cave lately, focusing on writing a book about converting a Flex app to other technologies.  I wanted to pop my head out for a second to let you all know that I&apos;ll be speaking at the &lt;a href=&quot;http://www.360stack.com&quot;&gt;360|Stack&lt;/a&gt; conference coming up in the beginning of August.  

360|Stack is the old 360|Flex conference, but it has a slightly different name.  

I&apos;ll be giving an inspirational presentation entitled &quot;How to Fail Fantastically.&quot;  I&apos;ll be talking about my various business ventures, such sa The Flex Show and Flextras and DotComIt and probably some you had never heard of. 

Even if that doesn&apos;t excite you there is plenty of real technical content covering everything from Google Glass to more JavaScript frameworks than you can shake a stick at.

&lt;img src=&quot;http://360stack.com/images/SpeakerBadge.png&quot; width=&quot;400&quot;/&gt;

I have an extra ticket that I&apos;m undecided what to do with.  I&apos;m thinking maybe some type of contest? 
				</description>
				
				<category>Professional</category>				
				
				<category>Business</category>				
				
				<pubDate>Tue, 18 Jun 2013 13:49:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2013/6/18/360Stack-is-the-rebranded-360Flex</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>Manually configuring ColdFusion with IIS7</title>
				<link>http://www.jeffryhouser.com/index.cfm/2013/4/2/Manually-configuring-ColdFusion-with-IIS7</link>
				<description>
				
				I sent this email out yesterday as part of the Flextras/DotComIt newsletter.  I thought I&apos;d repost it here.  

I recently had the opportunity to move some of my hosted sites to Amazon web services.  The &lt;a href=&quot;http://www.flextras.com&quot; target=&quot;_self&quot;&gt;Flextras&lt;/a&gt; site, &lt;a href=&quot;http://www.theflexshow.com&quot; target=&quot;_self&quot;&gt;The Flex Show&lt;/a&gt;, and &lt;a href=&quot;http://www.jeffryhouser.com&quot; target=&quot;_self&quot;&gt;my personal blog&lt;/a&gt;, are now all hosted on EC2. It has been a few years since I&apos;ve had to deal with my own production server maintenance; and I came across a weird issue with IIS7 and ColdFusion 9. I thought I&apos;d describe the issue and explain my solution.

&lt;h2&gt;IIS6 Compatibility is turned on&lt;/h2&gt;
Normally, when you create a new instance of an IIS web server, you&apos;ll need to associate ColdFusion with it. ColdFusion provides a tool named the Web Server Configuration Tool that can attach an instance of ColdFusion with an instance of IIS. If you happen to be using ColdFusion 9.02--or later--and IIS7; you may receive this error:

&lt;img src=&quot;http://www.jeffryhouser.com/images/IISError.png&quot;&gt;

The Web Server Configuration Tool will not work with IIS7 if IIS6 Management Compatibility is enabled. On this particular server, the management compatibility was enabled for the FTP plugin could be managed on the server. I did not want to uninstall the IIS management compatibility if I could avoid it. How could I tell IIS7 that it should send .cfm requests to ColdFusion for processing without using the Web Server Configuration Tool?

&lt;h2&gt;Editing the applicationHost.config file&lt;/h2&gt;

Under the hood the mappings that tell IIS7 how to communicate with ColdFusion are in a file named applicationHost.config. You can find this file in the &apos;C:\Windows\System32\inetsrv\config\&apos; directory. This file contains a lot of configuration for IIS7.

If IIS7 was already installed when ColdFusion was initially installed, then you can find a section that references an existing IIS7 instance with your existing ColdFusion instance. Look for something like this:


&lt;code&gt;
&lt;location path=&quot;iisInstanceName&quot;&gt;
&lt;system.webServer&gt;
&lt;handlers&gt;
&lt;clear /&gt;
&lt;add name=&quot;ISAPI-dll&quot; path=&quot;*.dll&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; resourceType=&quot;File&quot; requireAccess=&quot;Execute&quot; allowPathInfo=&quot;true&quot; /&gt;
&lt;add name=&quot;CGI-exe&quot; path=&quot;*.exe&quot; verb=&quot;*&quot; modules=&quot;CgiModule&quot; resourceType=&quot;File&quot; requireAccess=&quot;Execute&quot; allowPathInfo=&quot;true&quot; /&gt;
&lt;add name=&quot;AboMapperCustom-130401&quot; path=&quot;*&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\ColdFusion9\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll&quot; requireAccess=&quot;None&quot; responseBufferLimit=&quot;0&quot; /&gt;
&lt;add name=&quot;AboMapperCustom-130411&quot; path=&quot;*.jsp&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\ColdFusion9\runtime\lib\wsconfig\jrun_iis6.dll&quot; requireAccess=&quot;Script&quot; responseBufferLimit=&quot;0&quot; /&gt;
&lt;add name=&quot;AboMapperCustom-130412&quot; path=&quot;*.jws&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\ColdFusion9\runtime\lib\wsconfig\jrun_iis6.dll&quot; requireAccess=&quot;Script&quot; responseBufferLimit=&quot;0&quot; /&gt;
&lt;add name=&quot;AboMapperCustom-130413&quot; path=&quot;*.cfm&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\ColdFusion9\runtime\lib\wsconfig\jrun_iis6.dll&quot; requireAccess=&quot;Script&quot; responseBufferLimit=&quot;0&quot; /&gt;
&lt;add name=&quot;AboMapperCustom-130414&quot; path=&quot;*.cfml&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\ColdFusion9\runtime\lib\wsconfig\jrun_iis6.dll&quot; requireAccess=&quot;Script&quot; responseBufferLimit=&quot;0&quot; /&gt;
&lt;add name=&quot;AboMapperCustom-130415&quot; path=&quot;*.cfc&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\ColdFusion9\runtime\lib\wsconfig\jrun_iis6.dll&quot; requireAccess=&quot;Script&quot; responseBufferLimit=&quot;0&quot; /&gt;
&lt;add name=&quot;AboMapperCustom-130416&quot; path=&quot;*.cfr&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\ColdFusion9\runtime\lib\wsconfig\jrun_iis6.dll&quot; requireAccess=&quot;Script&quot; responseBufferLimit=&quot;0&quot; /&gt;
&lt;add name=&quot;AboMapperCustom-130417&quot; path=&quot;*.cfswf&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\ColdFusion9\runtime\lib\wsconfig\jrun_iis6.dll&quot; requireAccess=&quot;Script&quot; responseBufferLimit=&quot;0&quot; /&gt;
&lt;add name=&quot;AboMapperCustom-130418&quot; path=&quot;*.hbmxml&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\ColdFusion9\runtime\lib\wsconfig\jrun_iis6.dll&quot; requireAccess=&quot;Script&quot; responseBufferLimit=&quot;0&quot; /&gt;
&lt;add name=&quot;AboMapperCustom-130419&quot; path=&quot;*.hbmxml&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\ColdFusion9\runtime\lib\wsconfig\jrun_iis6.dll&quot; requireAccess=&quot;Script&quot; responseBufferLimit=&quot;0&quot; /&gt;
&lt;add name=&quot;TRACEVerbHandler&quot; path=&quot;*&quot; verb=&quot;TRACE&quot; modules=&quot;ProtocolSupportModule&quot; requireAccess=&quot;None&quot; /&gt;
&lt;add name=&quot;OPTIONSVerbHandler&quot; path=&quot;*&quot; verb=&quot;OPTIONS&quot; modules=&quot;ProtocolSupportModule&quot; requireAccess=&quot;None&quot; /&gt;
&lt;add name=&quot;StaticFile&quot; path=&quot;*&quot; verb=&quot;*&quot; modules=&quot;StaticFileModule,DefaultDocumentModule,DirectoryListingModule&quot; resourceType=&quot;Either&quot; requireAccess=&quot;Read&quot; /&gt;
&lt;/handlers&gt;
&lt;/system.webServer&gt;
&lt;/location&gt;
&lt;/code&gt;

If you&apos;re using CF Standard, you can just copy and paste this section; then change the path name on the location to be the name of your new IIS7 server instance. Restart your IIS instance and that should be all you need. Otherwise, you&apos;ll have to create the above section manually; by copying and pasting from above and changing your paths to relate to your own CF Install.  

Although I didn&apos;t have the experience of setting this up using CF Enterprise, I expect the procedure will be similar; you&apos;ll just need to point to the jrun_iis6.dll for your specific instance of ColdFusion. 
				</description>
				
				<category>Professional</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Tue, 02 Apr 2013 09:00:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2013/4/2/Manually-configuring-ColdFusion-with-IIS7</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>How to Create a System for Caching Data</title>
				<link>http://www.jeffryhouser.com/index.cfm/2013/3/1/How-to-Create-a-System-for-Caching-Data</link>
				<description>
				
				I wrote this article for the monthly Flextras newsletter, and thought I&apos;d share it here.  

 I was working with a client recently and we had some performance problems while accessing remote data from within our application. The user interface, built with Flex, was accessing our ColdFusion server, and ColdFusion would relay requests onto another remote system using SOAP web services. The web service data didn&apos;t need constant updates, so we decided to create a caching system for the data to improve performance. I thought the concepts behind that would make an interesting topic for this month&apos;s newsletter.

&lt;h2&gt;What Type of Data to Store?&lt;/h2&gt;

We decided it was best to create a generic system to cache any type of data. The system should handle any type of data we wanted to throw at it. To accomplish this, I created two classes a CacheManager class and CacheData class. The CacheData class is intended to be a generic object used by the CacheManager. Here is a diagram of the class:

&lt;img src=&quot;http://www.jeffryhouser.com/images/CacheData.png&quot;&gt;

The CacheData class is used by CacheManager to store the cached data. It has three properties: the data to store and two dates. The first date is, dateCached, which keeps track of the date and time that the data was first cached. The second element is dateLastAccessed, which keeps track of the date that the data was last accessed. The data property should be protected, or private, or something similar depending upon your language of choice. The two date properties should be publicly accessible.

The class has two methods: get() and set(). The get method returns the data and should also update the last accessed date value to the current date and time. The set method will update the internal data property, as well reset the two dates. In an attempt to keep this as platform agnostic as possible; this would be pseudo code for the class:

&lt;code&gt;
package{ class CacheData{
 // this value stores the data
 protected var data : *;
 // this value stores the date that the data was initially stored
 public var dateCached:Date
 // this value stores the date that the value was last accessed
 public var dateLastAccessed:Date
 // this method can be used to retrieve the data
 public function get ():*{
  dateLastAccessed = getCurrentDate();
  return data;
 }
 // this method can be used to set the data
 public function set(value:*):void{
  data = value;
  dateCached = getCurrentDate();
  dateLastAccessed = getCurrentDate();
} } }
&lt;/code&gt;

This is a very simple class, not much more than a glorified value object.

&lt;h2&gt;The CacheManager Class&lt;/h2&gt;

The CacheManager class is a bit more complicated. This is your application&apos;s window into the cached data. 

This is the class diagram for the CacheManager:

&lt;img src=&quot;http://www.jeffryhouser.com/images/CacheManager.png&quot;&gt;

The CacheManager has two properties; minutesCached and cachedData. The minutesCached property is an internal value will be used to determine when data should be flushed and deleted. The cachedData is also an internal value, but it is a bit more complicated. I created that as an associative array of associative arrays. In Flex, an associative Array would be a Dictionary; in ColdFusion that would be a Struct. The first key of the associative array is the type of data you want to store. I call this the cacheKey. This may be &quot;products&quot; or &quot;orders&quot; or something similar, depending on the data you want to store.  The second associative array&apos;s key is the dataKey. Examples of this may be &quot;ProductID1&quot; or &quot;Order13&quot; or anything that can be used to uniquely identify the type of data, such as its database&apos;s Primary Key.

The combination of the dataKey and the cacheKey is used to retrieve the data. The use of the two key structure allows a single instance of the CacheManager to be used to cache multiple types of data. There are also two methods as part of the cacheManager: store() and retrieve(). The store method accepts three arguments: the data, the cacheKey, and the dataKey. It will create a new object of CacheData object and call the CacheData.set method to store the data. It is the simpler of the two methods.

The retrieve method is where the magic happens. It first check&apos;s to verify that the data exists. Then it checks to make sure that the data is still relevant based on the current date and the date that the data was last accessed. If the data is too old; then it can be deleted. Otherwise it can be returned. This is a pseudo code class:

&lt;code&gt;
package{ class CacheManager{
 // this value specifies how many minutes the data should be cached
 protected var minutesCached : int = 1440;
 // this value contains the cached data; using a two key structure. A CacheKey and a DataKey.
 protected var cachedData:Dictionary = new Dictionary();
 // this method can be used to retrieve the data
 public function store (data:*, cacheKey:String,dataKey:String):void{
  if(!cachedData[cacheKey]){
   cachedData[cacheKey] = new Dictionary();
  }
  cachedData[cacheKey][dataKey] = new CacheData();
  cachedData[cacheKey][dataKey].set(data);
  return data;
 }
 // this method can be used to set the data
 public function retrieve(cacheKey:String,dataKey:String):*{
  var cacheObject = cachedData[cacheKey][dataKey]
  if(!cacheObject){ return; }
  var dateToClearCache :Date = getCurrentDate() - minutesCached
  if(cacheObject.dateLastAccessed &lt;= dateToClearCache){
     cachedData[cacheKey][dataKey] = null; return;
  } Return cacheObject;
} } }
&lt;/code&gt;

Although it is beyond the scope of this article, you could also create a method to automatically clear old cache data.  This is probably more memory efficient than waiting until the data is retrieved to clear it out.

&lt;h2&gt;Putting it All Together&lt;/h2&gt;

Now that we have the code behind our CacheManager, the last step is to put that to use. First, create an instance of it; presumably in some globally accessible variable.

&lt;code&gt;
public var cacheManager :CacheManager = new CacheManager();
&lt;/code&gt;

Let&apos;s say you just loaded a bunch of products from some remote source. You&apos;d loop over them and store them in the CacheManager instance:

&lt;code&gt;
For each product in productArray
 cacheManager.store (product, &apos;products&apos;,product.id):
End For Loop
&lt;/code&gt;

In this code, we use the cacheKey named products and use a product ID for the dataKey. I once read something that said you when you file something; you want to make sure to file it in the way that you can find it when you need it. The dataKey for your cache should follow the same suit. When you need to retrieve the data, you want it to be filed under some name that you can use to retrieve the data later.

Retrieve the data from the cache when you need it, like this:

&lt;code&gt;
var product : Product = cacheManager.retrieve(&apos;products&apos;,product.id);
&lt;/code&gt;

Be sure to check that you actually got a product back from the cache before you try to use it:

&lt;code&gt;
If(!product){
 // do something to retrieve the product data from source
 // or make sure your code accommodates for a non-existent product
}
// process product
&lt;/code&gt;

&lt;h2&gt;Final Thoughts&lt;/h2&gt;
I hope you found this article interesting. I did my best to make this as conceptual as possible, so you may have to modify the code in order to work in the language of your choice. 

I have two other mini-announcements that I added to the recent Flextras Newsletter.  First, the code that never became the Flextras &lt;a href=&quot;http://github.com/mraak/AS-Spreadsheet&quot;&gt;Flex Spreadsheet Component&lt;/a&gt; has been open sourced by the original author. It is a very impressive piece of technology.  Second, if you&apos;re in the mood for interesting weird music; I recorded a full album worth of songs for &lt;a href=&quot;http://fawm.org/fawmers/reboog711/&quot;&gt;February Album Writing Month&lt;/a&gt;.  It is a nice little diversion from programming at times. 
				</description>
				
				<category>Professional</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Fri, 01 Mar 2013 09:00:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2013/3/1/How-to-Create-a-System-for-Caching-Data</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>Do Marketers Care About Interacting with You on Social Networks?</title>
				<link>http://www.jeffryhouser.com/index.cfm/2012/12/18/Do-Marketers-Care-About-Interacting-with-You-on-Social-Networks</link>
				<description>
				
				An &lt;a href=&quot;http://www.rluxemburg.com/&quot;&gt;associate&lt;/a&gt; recently posted a question onto her Google+ wall about how marketers are using social networking.  I wrote up a long winded response--for a social network--and decided to share it here too.

First, the question:

&lt;blockquote&gt;
Seen on a mailing list recently: 

&quot;It&apos;s been really discouraging to see how quickly social media has taken its place next to SEM, email marketing, and all the rest as just another broadcast channel with a revenue goal and ROI attached to it.&quot;

Do you agree or disagree?
&lt;/blockquote&gt;

I generally agree, but sometimes it depends on the company.  

Here are a bunch of random--and true--examples:

If I speak to VirginMobile on twitter; it is always canned/stock answers.  Such as when I asked if they&apos;ll get any Windows Phones; the response was something like &quot;we don&apos;t have any announcements regarding future phones&quot;.  It was very formal.  

I&apos;ve liked &quot;Jakes Wayback Burgers&quot; on Facebook because it is my favorite &quot;fast food&quot; burger place in my town.  If they respond to interaction at all--which is rare--it usually only positive interaction.  For example when I asked Wayback Burger why they were giving away an iPad 2 in a promotion instead of the &quot;latest and greatest model&quot; that was ignored.  But, I have them respond to other queries such as &quot;What time does X store open&quot;.  Very fact based and no personality.   

On Twitter, I complained about MX Energy salesman showing up at my door.  Seriously, I am sick of these people.  I actually posted a sign on my front door that says &quot;no soliciting, especially from MX Energy&quot;  They ring my bell less but that sign has not curbed it completely.  I didn&apos;t even know MX Energy had a twitter account until they followed me.  They were was no response to my complaint, no attempt to communicate me, no apologies for the constant interruptions.  In fact, I&apos;d say MX Energy is the company I hate most in the world--although Wandisco is trying really hard for that top spot.  

Since I brought up Wandisco; let me talk about them.  They just bought SmartSVN from the company that owned it.  I love SmartSVN and it is the best SVN client I&apos;ve used.  So, I&apos;ve been a happy customer for many years.  I did not receive promotional mailings from the SmartSVN folks--until Wandisco bought them.  Now I get emails all the time.  I have unsubscribed from their mailing lists using the Unsub&quot; link in their emails.  Yet, I Still get emails.  I have emailed them back, complaining, but got no response.  I have flamed them on Twitter and that did get a response.  I have to admit that response was human and personable and swore to me that the issue was a mistake on their part and promised to get the issue fixed.  

Fine, mistakes happen.  But, when you tell me it is fixed; I want it to be fixed.  I&apos;m still getting emails from them; despite multiple times of being promised it would be fixed.  After the my last twitter tirade; I got a personal apology emailed to me, promising that this time it was really fixed.  I&apos;m impressed they followed up.  But, five days later I got another round of promo emails from them.  Obviously the issue is not fixed.  The point has almost become laughable now.  I imagine them as a big corporate company with lots of bureaucratic overhead and no one knows what anyone else is doing.  The person who is managing their twitter account (and/or emailing me) is probably promising things they can&apos;t deliver on--such as getting my email removed from every copy of their list.  

Moving away from Wandisco..

If you take a look at &quot;known&quot; bands such as Toad the Wet Sprocket or Soul Asylum; all the communication is one way.  When Dan Murphy left Soul Asylum there were weeks of speculation on their message boards before the band finally responded with a Twitter sized response.  

When Wadjet Eye Games (my favorite Indy Adventure Game Publisher) posted on Facebook that they were looking to do auditions for voice overs for their next game; they did not respond to the 3-5 people who asked for more details.  If they weren&apos;t going to respond; why did they post an announcement on Facebook? 

When Lake Compounce--a local amusement park--asked what people liked best about their season pass; I responded with some snark about how the Halloween attractions were an extra charge.  That comment was quickly deleted.  Instead they could have apologized for the inconvenience.  

On the flip side of things; not all companies [or bands] are bad.  

The GeekDesk twitter account is amazingly personal.  Pretty much any tweet I make regarding my GeekDesk is responded to directly.  when I casually mentioned that the desk was making weird clicking sounds when going up and down they offered to open a ticket for me via twitter.  That is not the first time they&apos;ve done something similar for me.  Clearly someone there gets it.  I cannot recommend GeekDesk enough.  It is the best desk I ever owned.

When I tweeted a &quot;recording&quot; of a recent Bowling for Soup show the lead singer responded from his personal twitter account to thank me for sharing.  And then he followed my twitter account details to my blog and used it to email me to ask if he could re-purpose the recording.  How cool is that?


So, that&apos;s my brain dump.  Some good; some bad.  My perception is that there is more one-way interaction than communication.  It&apos;s a shame because social networking for companies had a lot of promise. 
				</description>
				
				<category>Professional</category>				
				
				<category>Business</category>				
				
				<pubDate>Tue, 18 Dec 2012 22:06:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2012/12/18/Do-Marketers-Care-About-Interacting-with-You-on-Social-Networks</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>Check out the Flextras AutoComplete KickStarter</title>
				<link>http://www.jeffryhouser.com/index.cfm/2012/11/15/Check-out-the-Flextras-AutoComplete-KickStarter</link>
				<description>
				
				Earlier this week, I launched a &lt;a href=&quot;http://www.kickstarter.com/projects/reboog711/help-me-build-an-autocomplete-for-apache-flex&quot;&gt;Kickstarter project for Flextras&lt;/a&gt;.  The intent is to flesh out the API of the &lt;a href=&quot;https://www.flextras.com/?event=ProductHome&amp;productID=19&quot;&gt;Flextras Spark AutoComplete component&lt;/a&gt;, and then donate it to &lt;a href=&quot;http://incubator.apache.org/flex/&quot;&gt;Apache Flex&lt;/a&gt;.

This is an experimental approach to fund some of the the development I want to do around Apache Flex.  At the time of this writing, the project has reached over 10% of it&apos;s goal.  There are a bunch of cool rewards including T-shirts, Flex Show content, and personal mentoring time with me.  If you&apos;re interested in Flex, and how it is going to thrive under Apache, check out, and fund the &lt;a href=&quot;http://www.kickstarter.com/projects/reboog711/help-me-build-an-autocomplete-for-apache-flex&quot;&gt;Flextras AutoComplete Kickstarter&lt;/a&gt;. 
				</description>
				
				<category>Professional</category>				
				
				<category>Flex</category>				
				
				<category>AIR</category>				
				
				<pubDate>Thu, 15 Nov 2012 11:59:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2012/11/15/Check-out-the-Flextras-AutoComplete-KickStarter</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>Quit My Job: Twelve Years Later</title>
				<link>http://www.jeffryhouser.com/index.cfm/2012/10/2/Quit-My-Job-Twelve-Years-Later</link>
				<description>
				
				While randomly surfing the Internet, I came across a blog post entitled, &lt;a href=&quot;http://www.stevekle.in/quit-my-job-for-consulting-two-months-later&quot;&gt;Quit My Job for Consulting: Two Months Later&lt;/a&gt; and it made me smile. It was late September in 1999 that I left my full time job. That led to the formation of DotComIt; and I am entering into my thirteenth year of being on my own. Steve Klein&apos;s post inspired me to share some of my thoughts on the experience; hopefully from a more experienced perspective.  

I wrote up this post for the &lt;a href=&quot;https://www.flextras.com/index.cfm?event=RegistrationForm&quot;&gt;monthly Flextras newsletter&lt;/a&gt; and thought I&apos;d repost it here.


&lt;h2&gt;How Do You Define Yourself?&lt;/h2&gt;

A favorite game in my family is Scrabble. I have siblings scattered throughout the US and it is rare that the whole group of us end up in the same room together. Some of my fondest memories are sitting around the coffee table in my parent&amp;rsquo;s living room on Christmas playing Scrabble. The games can become lovingly cutthroat and it is rare I am on the winning end. My elder brother once pointed out to me that I lost because I always looked to create cool words, without devoting thought to the point value of said words. That sentiment has become a defining factor in my life and career. I often look for cool work even though they are not always the most profitable.

Part of the life outside of a traditional paycheck is to figure out what you want to do, and then figuring out to get a way for people to pay you to do it. (That&amp;rsquo;s probably not a bad approach even if you&amp;rsquo;re after a traditional paycheck, either). The process isn&amp;rsquo;t easy, though. I think the hardest part is figuring out what you want to do.

I am a Technical Entrepreneur! To me, that means I want to create products and services that use technology to solve problems. I get high on process automation and love it when I can do things to help make my clients more efficient and effective in their respective profession.

Over the years I&amp;rsquo;ve been given many different roles. I&amp;rsquo;ve been called a small business owner, a consultant, a contractor, a subject-matter expert, and someone who will shovel shit for money. The work associated with some of those labels isn&amp;rsquo;t always satisfying. I strongly suggest you take your own time to define your identity before someone else does it for you. Then search out clients&amp;mdash;or employers--that fit the identity you want to create for yourself; and you&amp;rsquo;ll find projects that will make you happier and more productive.

&lt;h2&gt;Don&amp;rsquo;t Ignore the Business!&lt;/h2&gt;
When you&amp;rsquo;re not employed by a company, then you&amp;rsquo;re running a business. It may not feel like, especially if a recruiter had placed you as a full time consultant working on-site with a client, but even then you&amp;rsquo;re still a business. I&amp;rsquo;ve seen a lot of great programmers start consulting, only to quickly go back to being full time workers at the first opportunity. I always got the impression that they do not treat their activities as running a business; and are shocked at the amount of time the &amp;ldquo;business stuff&amp;rdquo; is taking. This extra responsibility is one of the key tenants of Steve Klein&amp;rsquo;s post. In this newsletter, I&amp;rsquo;m going to share some of my thoughts on two areas of the Business stuff: including Finance and Marketing.

&lt;h3&gt;Let&amp;rsquo;s Talk about Money&lt;/h3&gt;

You&amp;rsquo;ll have to be careful when it comes to money. You will have clients that don&amp;rsquo;t pay on time. You will have clients that don&amp;rsquo;t pay at all. I made a lot of money mistakes in the early days and eventually had to institute policies to address non-paying clients. When a client is late; I stop all work for that client immediately. That may sound simple and logical, but the programmer in me finds it hard. Incomplete tasks bug me. Stopping work in the middle of a task is like trying to stop a run while in mid-stride.

The client will often assure you there are no problems and the check is in the mail, but do you want to bank on that? I don&amp;rsquo;t recommend it. More often than not; the client interprets a 30 day payment term to mean that they can start processing your payment whenever they feel like it. It is not a happy feeling to discover that it&amp;rsquo;s time to invoice a client, and you haven&amp;rsquo;t received the previous payment yet. Did you just provide the client with a full month of time you&apos;ll never see a cent for? I have, and it&amp;rsquo;s an expensive lesson to learn.

Sometimes the client will not respond to a late payment inquiry. I know people get busy and have many priorities; but I figure three calls within the span of a week or two is a good way to follow up; and it gives them plenty of time to get back to you. The fourth follow up call never goes to the client; it goes to the lawyer. For some reason, clients seem to find time to respond to a lawyer, even if they don&amp;rsquo;t have time to respond to you.

Taxes can be another issue. In the US you want to be sure to put away 40% of your income (after expenses) for taxes. Yes, it really is that much. Because you don&amp;rsquo;t have an employer to take it out of every paycheck, you&amp;rsquo;ll probably have to pay quarterly taxes to the state and federal governments. If you work full time for a company, or used to, check out one of your pay stubs. You&amp;rsquo;ll find that roughly 30% of your pay is being taken right off the top before you ever see it. The employer is paying another 7.5% to social security. When you&amp;rsquo;re on your own, you have to pay that extra yourself. Sometimes it is a shocking realization, especially if you didn&amp;rsquo;t plan for it.

Beyond the income taxes, you may also have to deal with local sales tax on the services you provide and property taxes on your business property. The sales tax will most likely vary from state to state, so you&amp;rsquo;ll want to talk to an accountant knowledgeable about local laws.

&lt;h3&gt;What is Marketing?&lt;/h3&gt;
When starting out, I never had an explicit marketing plan. My first clients were achieved by a little bit of networking and little bit of luck. If your plan is to wait until the phone rings, then you&amp;rsquo;ll probably have a lot of spare time. If you do nothing to actively search for the right clients, then you&amp;rsquo;ll often be stuck with the low-hanging fruit. I&amp;rsquo;ve found that these projects are neither profitable nor satisfying.

In the beginning, I was doing a lot of marketing work without realizing it. I was writing books, blog posts, and articles. I was presenting at conferences. Later I added podcasting to my repertoire, both with The Flex Show and the Flextras Friday Lunch. Project clients often have no way to judge your ability. When they can see your name in print, or as a conference speaker it gives them confidence in you. That confidence can help you land the project. It can lead to more opportunities, and sometimes higher rates.

I&amp;rsquo;ve often been troubled over my lack of a formal marketing plan. Over the years I&amp;rsquo;ve tried other marketing avenues including ads in the phone book, joining the local Chamber of Commerce, using Google Ads, and sponsoring conferences None of those things have paid off as much as the more grass roots elements, such as writing this newsletter has, though.

&lt;h2&gt;Be a Subject Matter Expert&lt;/h2&gt;
One of the interesting points that Steve makes in his post is that you must become a &amp;ldquo;Full stack&amp;rdquo; developer. He is suggesting you must be able to do everything. My route has been the exact opposite. I have inadvertently marketed myself as a subject matter expert. In the earlier days it was as a ColdFusion developer. The past few years it has been as a Flex Developer. Being a subject matter expert brings lots of benefits.

&lt;ul&gt;
	&lt;li&gt;People have already decided on the technology before contacting me. I&amp;rsquo;m rarely put in a position where I have to make a case for using one technology over the other.&lt;/li&gt;
	&lt;li&gt;People often assume if you have an expertise in one technology, you are also an expert in related technologies. In my earlier days, I was often hired because of my ColdFusion skill, but no one thought twice about having me do HTML/JavaScript development, database design, server setup, or whatever else needed to be done.&lt;/li&gt;
	&lt;li&gt;The more specialized you are, the easier it is to be found. This can lead to higher rates, longer commitments, and more freedom. If you look for a mobile developer, you&amp;rsquo;ll find thousands of people and it may be hard to choose one. If you look for an ActionScript Developer who specializes in Stage3D on iOS, then you&amp;rsquo;re going to find a smaller pool to choose from and it will be eaiser to find a suitable candidate .&lt;/li&gt;
&lt;/ul&gt;

Of course, being a specialist is not without its&amp;rsquo; own limitations. Anyone looking for a Flash developer will never find the ColdFusion guy, for example. Often clients will segment you into what they hire you for and not to think to ask you for the other things which you can do perfectly fine. Being a specialist is a double sided sword. I assume the same is true for being a full stack generalist.

&lt;h2&gt;The Work-Life Balance&lt;/h2&gt;
One of the challenges of being your own boss is that you can set your own hours and work when you want. It is up to you to enforce this balance. It is easy to have &amp;ldquo;five more minutes&amp;rdquo; turn into 6 hours only to find out you skipped dinner, missed seeing the sun today, and your significant other has been asleep for hours.

When I started out, I was budgeting 25-30% percent of my time for actual billable work. The rest of the time was for my business management; such as paying bills, bringing on new clients, negotiating contracts, and doing my marketing activities. This means, out of every four weeks, only one of them was billable. If I were to work 60 hours; it&amp;rsquo;d be a great month. If I were to work 80 hours; then I know next month will be devoid of billable work.

Remember it is okay to say no to projects. This is hard and not what the common logic says. You may be too busy. You may have other commitments; whether work related or not. You may not be interested in the work. I find it is always better to say no, then to say yes and the not deliver. Sometimes you may be able to negotiate deadlines and the schedule to accommodate your other commitments.

Every Sunday night I make a schedule for my week. This includes time for current clients, business stuff, social activities, and whatever else I want to do.&amp;nbsp; This makes me sure that every week I&amp;#39;m saving some time for the important aspects of my life, both within and outside of the business.&amp;nbsp; Getting a new project on my schedule often takes a few weeks; even after the contract is inked.

&lt;h2&gt;Final Thoughts&lt;/h2&gt;
Overall, I recommend managing your career the same way that public companies manage their stock price. Make your commitments and stick to them. Public companies make their commitments in terms of revenues and profits. As a business owner, your commitments are probably around deliverables, timelines, and budgets. If you can, exceed expectations. Prepare your deliverables early. Come in under budget. Address issues head on, as they arise, and be prepared to offer a solution or two.

One thing I have come to learn is that there is no secret sauce to being a success in business. I&amp;#39;ve been lucky.&amp;nbsp; My best advice, is to figure out what you want to do and then find a way to make it happen. 
				</description>
				
				<category>Professional</category>				
				
				<category>Business</category>				
				
				<pubDate>Tue, 02 Oct 2012 04:00:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2012/10/2/Quit-My-Job-Twelve-Years-Later</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>In Defense of Flash - Revisited</title>
				<link>http://www.jeffryhouser.com/index.cfm/2012/9/4/In-Defense-of-Flash--Revisited</link>
				<description>
				
				I wrote this post for a Flextras newsletter.  Before I get into details; I want to remind everyone that they should check out &lt;a href=&quot;http://www.360stack.com/blog/2012/06/announcing-360min/&quot; target=&quot;_blank&quot;&gt;360|Min&lt;/a&gt; coming this October.  It is an unconference style event in Las Vegas by the folks who put on 360|Flex.  It should be lots of fun and educational on stuff happening now.  &lt;br /&gt;
&lt;br /&gt;
Back in November, I wrote a newsletter entitled &lt;a href=&quot;http://www.jeffryhouser.com/index.cfm/2011/11/21/In-Defense-of-Flash&quot;&gt;In Defense of Flash&lt;/a&gt;. There was a lot of client confusion about the future of the Flash Platform; and they were worried that all their apps would suddenly stop working; or that their investment in the platform would turn out to be a significant waste of time and money. My original post spoke about a lot of specific issues; but at the time some things were unknown. I thought it was time to revisit that post and see where things stand, 10 months later.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Flash Player on Android&lt;/h2&gt;
The ball that started the &amp;ldquo;Flash is Dead&amp;rdquo; bandwagon rolling was that Adobe announced it would cease development on Flash Player for Android devices. This made sense to a lot of people. Although, it was nice to have a Flash Player in mobile browsers; no one was building browser based Flash Applications with mobile devices as the target. The fact that the iOS browser did not support Flash in any way decreases the ubiquity that the platform used to offer on desktop devices.&lt;br /&gt;
&lt;br /&gt;
With the release of Android 4.1, Jelly Bean, Adobe has removed the Flash Player from the Android store.
&lt;blockquote&gt;
	There will be no certified implementations of Flash Player for Android 4.1&lt;br /&gt;
	&amp;hellip;&lt;br /&gt;
	Beginning August 15th we will use the configuration settings in the Google Play Store to limit continued access to Flash Player updates to only those devices that have Flash Player already installed.&lt;/blockquote&gt;
&lt;a 06=&quot;&quot; 2012=&quot;&quot; blogs.adobe.com=&quot;&quot; flashplayer=&quot;&quot; href=&quot;http://blogs.adobe.com/flashplayer/2012/06/flash-player-and-android-update.html&quot; http:=&quot;&quot;&gt;Source&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Although, this is sad to see; it is not a surprise. It is interesting to note that a few days after the app was pulled, the BBC pressured Adobe to return the app to the Android UK store; as they do not have another technology solution in place for browser based streaming on mobile devices, yet:
&lt;blockquote&gt;
	Adobe&amp;#39;s mobile Flash Player has returned to the Google Play store in the UK. According to BBC News, Flash&amp;#39;s encore is the result of pressure from the BBC and &amp;quot;strategic partners&amp;quot; that rely on Flash for their Android apps&lt;/blockquote&gt;
&lt;a href=&quot;http://www.theverge.com/2012/8/31/3281876/android-flash-player-back-in-google-play-uk&quot;&gt;Source&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
It&amp;rsquo;s weird that an app with over 500,000 ratings, and a 4.5 star average could be considered a failure. Most of us independent developers can only dream of having that many people try out something we built.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Despite the news about Flash Player, I still believe that Adobe AIR, especially with captive runtime, is still a fantastic choice for building cross platform native mobile applications.
	&lt;br /&gt;
&lt;h2&gt;Long Live Apache Flex&lt;/h2&gt;
&lt;br /&gt;
In the original post, I spoke about Flex and how Adobe planned to donate Flex to the Apache foundation. At the time, details were very sketchy. We have plenty more information now. Adobe has successfully donated Flex to the Apache Foundation. They have contributed the Adobe Flex 4.6 code base, a testing framework named Mustella, and the Text Layout Framework used in many Spark controls.&lt;br /&gt;
&lt;br /&gt;
In a few weeks, Adobe is expected to donate a new ActionScript compiler, named Falcon. The Falcon compiler will be included in Flash Builder 4.7; which was recently released on Adobe Labs. But we&amp;rsquo;ll have the code, and hope to get it integrated with Flex in the future.&lt;br /&gt;
&lt;br /&gt;
In addition to the Adobe donations, there is a lot of new code and bug fixes done by the community. The Apache Flex team has released &lt;a href=&quot;http://incubator.apache.org/flex/download.html&quot;&gt;Apache Flex 4.8&lt;/a&gt;. I wrote about &lt;a href=&quot;https://www.flextras.com/blog/index.cfm/2012/8/1/How-to-Build-Apache-Flex-48-from-the-Source&quot;&gt;building Apache Flex 4.8 from the source&lt;/a&gt; last month.&lt;br /&gt;
&lt;br /&gt;
Since an Apache release must be source only; they have also put together an &lt;a href=&quot;http://people.apache.org/~bigosmallm/installapacheflex_RC1/&quot;&gt;installer Application&lt;/a&gt; which will allow you to easily prep Apache Flex for use in Flash builder. Flex has a lot of dependencies, such as the AIR SDK and BlazeDS, which Apache cannot distribute due to licensing terms. This installer takes care of that downloading and setup for you.
&lt;br /&gt;
&lt;h2&gt;Flash Player on Windows 8&lt;/h2&gt;
&lt;br /&gt;
Another pressing issue is the Flash Platform support on Windows 8. As I stated in my original post, the &amp;ldquo;Windows 8 UI&amp;rdquo;&amp;mdash;previously Metro&amp;mdash;browser will not support plugins. This affects all plugins including Silverlight and Flash. However, Microsoft and Adobe have worked together in order to support Flash in the metro style browsing. Flash Player will be included as part of the browser.&lt;br /&gt;
&lt;br /&gt;
I&amp;rsquo;m going to quote the &lt;a href=&quot;http://www.adobe.com/devnet/flashplatform/whitepapers/roadmap.html&quot;&gt;Flash Platform runtime whitepaper&lt;/a&gt;, as the source here:
&lt;blockquote&gt;
	Flash Player release and debug players will be available and supported for Windows 8 Desktop and Metro style experiences on both x86/64 and ARM platforms.&lt;/blockquote&gt;
This was a happy surprise to many in the developer community, including myself. Flash Player will be supported on all variants of Windows 8. We&amp;rsquo;re still waiting for the formal notice that Adobe AIR will be supported on Windows 8; but for the moment we have to believe the Flash Platform Whitepaper:
&lt;blockquote&gt;
	Adobe is committed to adding both Windows 8 Desktop and Metro as supported platforms for Adobe AIR.&lt;/blockquote&gt;
I&amp;rsquo;m looking forward to converting &lt;a href=&quot;https://play.google.com/store/apps/details?id=air.com.igorKnots.magondaMaze&amp;hl=en&quot;&gt;Igor Knots&lt;/a&gt;, my mobile game, to a Windows 8 experience with Adobe AIR.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;br /&gt;
Two years ago, when a client approached me about building an application with Flex and Flash, I think we made the right decision.&amp;nbsp; Ten months ago, when we decided not to abandon our project, or rebuild it in a different technology, I think we made the right decision.&amp;nbsp; Today, if I were to start a new project, there are very specific questions I&amp;rsquo;d ask about the user base.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Does your app have to run in a mobile browser?&amp;nbsp; If so; then don&amp;rsquo;t use Flash!&amp;nbsp; However, if your target is multiple desktop browsers spread across multiple operating systems in your Enterprise; then Flash can suit your needs.&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Do you want to run on multiple platforms?&amp;nbsp; If so, then AIR allows you to deploy your app to Mac and Windows desktops; and as Native Android or iOS Application.&amp;nbsp; AIR can help your app run on a multitude of devices and desktops.&amp;nbsp; It may be a good choice.&lt;br /&gt; 
				</description>
				
				<category>Professional</category>				
				
				<category>Flex</category>				
				
				<category>AIR</category>				
				
				<pubDate>Tue, 04 Sep 2012 05:00:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2012/9/4/In-Defense-of-Flash--Revisited</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>Thoughts On Flex, Business Models, and Apache</title>
				<link>http://www.jeffryhouser.com/index.cfm/2012/8/27/Thoughts-On-Flex-Business-Models-and-Apache</link>
				<description>
				
				Over the past few years a few friends have told me that I always have a plan.  I didn&apos;t think about it much until it was mentioned to me, but I guess that is true.  I&apos;m always trying to think two steps ahead and plan my next move and carve out a path in life.  Sometimes this is a lot harder than it is.

 Gareth sent me a question through the &lt;a href=&quot;http://www.flextras.com&quot;&gt;Flextras site&lt;/a&gt; about the future of Flex, the availability of mobile components; and the viability of AIR.  

&lt;blockquote&gt;
Hi Jeff, I know things are a little bleak right now with Flex (hopefully with 4.8 SDK release things will perk up with the community), but I was wondering if you&apos;d thought about still doing the mobile component creation. I&apos;m still making AIR apps for mobile and have found the landscape pretty scarce when looking for various components [snip]. 

[snip] ...the flex mobile component still seems to be a viable model. I&apos;ll keep using Adobe AIR to make my cross platform apps until Adobe decides to get rid of that too :) I do the app thing as a supplement to my day job, so being able to purchase low cost components that will help make my apps more &quot;snazzy&quot; is something I&apos;d look into (even at $5-10 a pop would be better than having to write it myself). 

I&apos;ve even considered the whole business model myself, but have not had the infrastructure set up to do it. Anyway, hope things are still going well with the Flex Components side of things. Just wanted to suggest something as I see your Flextras Friday Lunch, but haven&apos;t seen you on the &quot;build&quot; side of things recently.
&lt;/blockquote&gt;

 I responded to this email after a very long day and about 4 hours past my bedtime.  I think I was a bit blunt.  I thought I&apos;d turn my response into this blog post, perhaps with a bit more polish than the &quot;late at night&quot; ramble I sent to Gareth.

&lt;h2&gt;Things are a Little Bleak with Flex&lt;/h2&gt;

I think I agree that things look a bit bleak for browser based Flash applications, and that has affected Flex.  I also hope that Apache Flex can help turn things around; and I believe there are many ways to do this including improving performance on mobile applications (with AIR) and targetting other runtimes (such as HTML5).  

There are also a lot of &quot;little picture&quot; things, such as bug fixes, that can help make Flex more pleasant to deal with.  

I have faith in Apache and I have faith in the community.  I just hope we can prove ourselves while Flex and Flash Player are still relevant.

&lt;h2&gt;Flex Mobile Components seem to be a Viable Model&lt;/h2&gt;

I have been doing some Mobile Component development, but not much.  There are some things in my &lt;a href=&quot;http://svn.apache.org/viewvc/incubator/flex/whiteboard/jhouser/&quot;&gt;Apache Flex Whiteboard&lt;/a&gt;.  I have not wrapped up any of those components into the Flextras component set, though. 

I wasn&apos;t sure what Gareth meant by Model in his original email to me.  If he is referring to a &quot;Development&quot; model.  Then, I agree.  AIR offers a compelling offering.  Right now it feels like there are lots of cross-platform development approaches for native mobile apps.  AIR offers a good solution.  I suspect over time, the market will condense and I hope that AIR is one of the success stories.  I don&apos;t know if AIR will be the winner, but it has the potential to do so.

If Gareth was referring to a &quot;business&quot; model in flex Components, then I&apos;m not sure a successful one ever existed.  Or rather, I haven&apos;t found it yet.  Selling Flex Components was never a viable model for Flextras. It grew to a nice side business, making roughly $10K a year, but that was not enough for me to do it full time.  Even though I did do it full time for 2 years or so, though.

I had planned for a 70% drop in income to launch Flextras, then have it grow from there.  But I actually had a 90% drop in income.  At some point I stopped telling consulting clients to shove it.

Flextras was growing each year, although slowly, but Adobe pulled the rug out from under that.  Generally we did 20% of the sales in December, yet after last November things just nose dived to nothing.  That cut into revenues, of course.  This year sales will be in the $2K range at best, most likely lower.  There are a ton of different reasons for this; and not all of them are Adobe&apos;s fault.  I could probably write a book on the many ways to fail in business.

&lt;h2&gt;What is the Future of Software?&lt;/h2&gt;

The Internet will change software just like it will change music and movies.  Boxed software is going to go away, just like CDs and DVDs.  

The cost of duplication and distribution have fallen close to nothing.  Creation of said software is, basically, a sunk cost that no customer cares about.  Marketing is still needed, though.  People have to notice you.  But, as the cost of software drives towards zero; how does a software development company make income?  

I believe the future of Flextras is in formal support services. I&apos;ve been working on this for a while.  I hope to have it ready in time for 360|Flex in Denver.  In 2011.  I could write another book on why this is so late.  The vendor I hired to rework our shopping cart took 6 months past the deadline to deliver code that worked.

 Delivering code to spec is a completely different issue; and that never happened.  I&apos;ve lost count of the number of times I&apos;ve missed the goal of &quot;Flextras selling Support Services.&quot;

&lt;h2&gt;What Have I Been Up To?&lt;/h2&gt;

I should be spending my summer seeing if I can make the new shopping code do what I want it to do; or if I should throw it out and start from scratch.  But for reasons of personal sanity; I put that aside.  I need to crawl back into my cave and refresh.

I&apos;ve been trying to spend my summer riding waterslides at the local amusement park, going to as many Soul Asylum concerts as I can, and catching up on some video games I hadn&apos;t played yet.  Check out &lt;a href=&quot;http://www.bestbuy.com/site/Delayed-Reaction-%5BBest-Buy-Exclusive%5D---CD/5795067.p?id=2491518&amp;skuId=5795067&quot;&gt;the new Soul Asylum album&lt;/a&gt;; it&apos;s great.  

&lt;h2&gt;What is the Plan?&lt;/h2&gt;

 Ideally, I&apos;ll come back to the shopping cart in 3rd quarter of this year, ready to tackle said problems with a fresh mind.  Then I&apos;ll have 1-2 (or 6 or 12) months to finish the infrastructure problems that would allow Flextras to sell support services around Flextras and [in theory] Apache Flex.  

 Once that infrastructure is in place; I&apos;ll turn my head back to promoting said stuff and building new components.  I have even consider launching a Kickstarter [or two or three] to &apos;fund&apos; my Flex development time.  

 I&apos;d love to create a Spark Alert class that works well on Mobile.  I think I can do better than what is already out there.  I&apos;d love to create a ViewStack that easily supports Spark Components, MX Components, and even non Flex Display Objects because why does a ViewStack need Flex dependencies?  I&apos;d love to create a Spark port of the Flextras Calendar.  That can be mobile optimized easily.

 But a lot has to happen for any of this to come to fruition.  

 Make sure you&apos;re signed up for the &lt;a jhref=&quot;https://www.flextras.com/index.cfm?event=RegistrationForm&quot;&gt;Flextras Monthly Newsletter&lt;/a&gt; if you want to know when stuff like this moves forward.  It&apos;s the best way to keep up on any Adobe Flex or Flextras related news I have to share. 
				</description>
				
				<category>Professional</category>				
				
				<category>Flex</category>				
				
				<category>AIR</category>				
				
				<category>Business</category>				
				
				<pubDate>Mon, 27 Aug 2012 18:15:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2012/8/27/Thoughts-On-Flex-Business-Models-and-Apache</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>Flash Remoting  won&apos;t connect &quot;NetConnection.Call.Failed&quot;</title>
				<link>http://www.jeffryhouser.com/index.cfm/2012/4/4/Flash-Remoting--wont-connect-NetConnectionCallFailed</link>
				<description>
				
				I&apos;ve been doing some with for the &lt;a href=&quot;http://www.flextras.com/&quot;&gt;Flextras promotions&lt;/a&gt; around &lt;a href=&quot;http://www.360flex.com&quot;&gt;360|Flex&lt;/a&gt;.  As part of the promotions I am creating a customized version of &lt;a href=&quot;https://play.google.com/store/apps/details?id=air.com.igorKnots.magondaMaze&amp;hl=en&quot;&gt;my Game&lt;/a&gt;; strictly for Flextras.  It is going to allow people to login and will keep score on our server instead of internally to the app.

 Since this is a Flash app; I&apos;m using Flash Remoting to connect to our ColdFusion server.  Everything worked fine on my local machine.  Everything worked fine on my development server (AKA Staging).  However, my production machine was giving errors that looked like this:

&lt;blockquote&gt;
faultCode: &quot;Client.Error.MessageSend&quot;&lt;br/&gt;
faultDetail: &quot;Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Failed: url: &lt;Your URL Here&gt;&lt;br/&gt;
faultString: &quot;Send failed&quot;	&lt;br/&gt;
&lt;/blockquote&gt;

I&apos;ve tried a lot of different things including not using http instead of https.  I knew that Flash Remoting was working on the production server because I had other Flex apps working without problems.  So, what was the problem?

I&apos;ve been working on this on and off for about five days; so tried a lot of different things.  In the end I discovered two things:

&lt;ol&gt;
&lt;li&gt;Make sure your Flash Remoting URL has a &apos;/&apos; at the end of it.  &apos;https://www.flextras.com/flex2gateway&apos; was not working.  It appeared to add a JSessionID on it; which was causing the server to throw a 404 error; causing the whole call to fail.  However, if I changed this to &apos;https://www.flextras.com/flex2gateway/&apos; that problem went away.&lt;/li&gt;
&lt;li&gt;Turn off the Flash Builder Network Monitor.  The Flash Builder Network monitor was intercepting the call and causing it to fail.  The calls appeared to work fine from a web browser with the Flash Builder Network Monitor enabled, but not from the mobile app.&lt;/li&gt;
&lt;/ol&gt;

I think--but am not completely sure--part of my issues related to using HTTPS on the server instead of HTTP.  That could be the reason I had issues on the production server, but not my local or staging box. 
				</description>
				
				<category>Professional</category>				
				
				<category>Flex</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Wed, 04 Apr 2012 17:54:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2012/4/4/Flash-Remoting--wont-connect-NetConnectionCallFailed</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>How can you use Static IPs with ATT UVerse Service?</title>
				<link>http://www.jeffryhouser.com/index.cfm/2012/3/26/How-can-you-use-Static-IPs-with-ATT-UVerse-Service</link>
				<description>
				
				I&apos;ve been a DSL Customer for close to a decade, starting with SNET when I moved into this house and then becoming an ATT Customer when they swallowed SNET.  I run a home based business, building custom software for small businesses and it has always been beneficial for me to have static IP Addresses.  ATT recently &quot;forced&quot; me to upgrade my service to UVerse, and the upgrade has been a tedious one for me.  There are various reasons for this including the fact that they &lt;A href=&quot;http://www.jeffryhouser.com/index.cfm/2012/3/22/ATT-UVerse-Made-me-Pay-to-Open-Port-25&quot;&gt;block port 25, and forced me to pay to remove the block on my plan&lt;/a&gt;.  The other reason this has been hard is my use of static IP Addresses.  

This post is to tell you how to get your Static IP Addresses working with ATT UVerse.  The documentation out there is somewhere between lacking and non-existent.

&lt;h2&gt;Why do I need static IP Addresses&lt;/h2&gt;

The crutch of this post relates to setting up the static IP Addresses, so first I wanted to discuss why I need static IP addresses.  I&apos;m a programmer, and I make a living by solving the problems of small businesses with technology.  I primarily do development with web based technologies.  I need a static IP for two primary reasons, one to host a server and two to access remote servers that are IP Restricted.  I&apos;ll expand on each of those.

I keep my development server on my home office network.  I host a web server so my clients can check in on development in progress.  The machine also hosts a database server and version control repository.  It is common that I hire remote workers who have to access those services.  The machine also hosts my backup repository.  Every machine on my network is backed up on a daily basis.  While it is not necessary for the backup server to be remotely accessible, there is a level of convenience to still perform my backups while on the road.  

The second reason I need a static IP is so I can access the remote services of my clients.  It is not uncommon that a client will need my static IP in order for them to give me access to their VPN or web server.  It is this very reason I upgraded my SNET account to static IPs in the past.  Not having a static IP was limiting the opportunities.  

I&apos;m sure if you want a static IP for your home network, you have similar reasons.  Before the UVerse upgrade, my network used a Netopia router (The Netopia 3347-02 ) to assign the static IPs based on the MAC Address of the machine.  This was useful for multiple reasons:

&lt;ul&gt;
&lt;li&gt;First, I could give an individual IP Addresses to another router.  I used this to segment the &apos;home&quot; machines from my work machines.  Home machines might be my wife&apos;s laptop or the Wii.  Work machines would be my primary development machine.  &lt;/li&gt;
&lt;li&gt;Second, I could individual IP Addresses to a specific machine.  This is exactly how I set up my server.  I gave its network card an external IP and pointed the DNS back at that IP address for the domain.&lt;/li&gt;
&lt;li&gt;Third, even though the machines had different external IP Addresses, they could be on the same internal network (192.168.1.x ).  This allowed me to easily share files among the machines.  To push a new build from my development machine to the development server, I merely had to move files across the network and not deal with FTP or some other such protocol.  This was convenient.&lt;/li&gt;
&lt;/ul&gt;

Those were my primary reasons for the setup I had.  

&lt;h2&gt;Problems with the UVerse Setup&lt;/h2&gt;

With the UVerse setup, I ran into multiple problems.  The first is that even though I was paying for a block of static IP addresses, those IP Addresses were not distributed to me manually.  So, all my &quot;DHCP&quot; machines were seen externally as some IP Address out of my block.  This was limiting access to remote services I needed to access.  Before the UVerse upgrade, this was not the case.

The second is that there was no way to assign IP addresses at the hardware level.  It had to be done by setting them on the specific machine.  This meant that the internal network access of the machine was limited.  Machines with static IPs were not discoverable on the network or accessible by their network name.  I did discover-eventually-I could access the machines by their external static IP Address, though.  But, remembering &quot;123.987.54.115&quot;: is a lot harder than remembering &quot;DotComItDevServer&quot;.  

I also had another more pressing problem.  Pages wouldn&apos;t load properly.  It would routinely take me three reloads before my profile on Stack Overflow would load.  Or, we would load up our Facebook wall and most of the images wouldn&apos;t load.  These sort of &lt;A href=&quot;http://www.ron-berman.com/2011/11/24/motorola-nvg510-help-page-for-att-u-verse-users/&quot;&gt;dropouts are a documented issue.&lt;/a&gt;; and my wife was not amused.

The fix for the drop outs was to set up the ATT UVerse Router (A Motorola NVG510) to operate as a pass through router; and use another router behind it.  I spent roughly a day trying to make that work with my Netopia before deciding it wasn&apos;t possible.  A friend suggested I try a &lt;A href=&quot;http://www.amazon.com/Cisco-RV042-4-port-100-Router/dp/B0002I7288/ref=sr_1_1?ie=UTF8&amp;qid=1332717938&amp;sr=8-1&quot;&gt;Linksys/Cisco RV042&lt;/a&gt;.  I found &lt;a href=&quot;http://www.connect802.com/download/cisco/VPN_Router_RV042_OperationsGuide.pdf&quot;&gt;the manual&lt;/a&gt; and decided to give it a shot.  It sounded like the one-to-one NAT was exactly what I wanted.  

As a side note, the RV042 manual is the best documentation I&apos;ve ever seen come with a router.  Lots of routers I&apos;ve used would have a page named something like &quot;NVM-142&quot; setup.  The help associated with that page would say &quot;This is where you set up the NVM-142&quot; settings.&quot;  However, they were often lacking in describing what NVM-142 was or why I would want to change the settings.  ( I made up the name NVM-142).

Nevertheless, the RV042 did indeed work to do exactly what I wanted. 

&lt;h2&gt;Step 1: Give the RV042 its own Static IP Address&lt;/h2&gt;

The UVerse router doesn&apos;t act as a pass-through.  A few folks found a &lt;A href=&quot;http://forums.att.com/t5/Features-and-How-To/NVG510-Bridge-Mode/m-p/2928989#M29846&quot;&gt;work around&lt;/a&gt;, but it didn&apos;t work for me with the Netopia.  I didn&apos;t even try that approach this time.  My first step was to see if I could assign one of the static IP addresses from my &quot;block&quot; to the RV042.  I could, and did.   
Sign into your Motorola UVerse router, select &quot;Home Network&quot; from the main tab bar, and Subnets and DCHP from the submenu:

&lt;img src=&quot;http://www.jeffryhouser.com/images/UVerseUpgradeScreenShot1.png&quot;&gt;

The Public Subnet information relates to my block of static IPs and was set up by the UVerse technician who did the install.  The private LAN setup was chosen by me; but based heavily off the initial setup.  The device IPv4 address is the IP address that you will use later to access this Router&apos;s admin system.  Most likely it was set by default to 192.168.1.254 .  I changed the third number to a 2.  I did this because the DV042 router would not me use an IP range different than 192.168.1.*.  (I find this extremely odd and may be something I did).

The start address and end address define the &apos;local&apos; range that will be applied to machines that hook up directly to this router.  I think 64-253 was the default.  I removed the 253 during my experiments, but I don&apos;t think you have to.  The &quot;passthrough&quot; instructions tell you to make sure this assigns only a single IP Address, but I didn&apos;t bother.  

&lt;h2&gt;Give the Cisco RV042 a Static IP&lt;/h2&gt;

Get into the Cisco router admin.  I strongly suggest you use Internet Explorer for the admin; as it was really funky in Firefox.  You may be able to do a lot of this using the setup wizard, but I&apos;ll explain assuming you won&apos;t.  Click the setup, and network options:

&lt;img src=&quot;http://www.jeffryhouser.com/images/UVerseUpgradeScreenShot2.png&quot;&gt;

The host name and domain name came in as the default and I left them unchanged.  I do not believe that UVerse requires those there, but I&apos;m not sure.  

I set the IP mode to IPv4 only.  This idea came from the instructions on the other site about setting up the other router as a passthrough.  I&apos;m not doing anything with IPv6, so this feature doesn&apos;t affect me (yet).  I gave the device IP an address of 192.168.1.253.  I was hoping to get both this router and the UVerse router operating off the same range, but eventually landed on the &quot;two range&quot; approach. 
In my use of this router, I am only using WAN1; and I set it to Static IP.  Click the edit button next to WAN1 and you&apos;ll see this:

&lt;img src=&quot;http://www.jeffryhouser.com/images/UVerseUpgradeScreenShot3.png&quot;&gt;

I set the WAN Connection type to static IP.  Then I specified a WAN IP Address that was in the range provided to my ATT.  I used the same Subnet mask that the ATT Folks set up in the UVerse router (see Screenshot 1).  I specified the default gateway address as the public IP Address specified in the private subnet section of screenshot 1.  

The DNS Servers come from the UVerse Router.  Sign into it again, click the Broadband main menu button and then click Status.  Copy the Primary and Secondary DNS listing from that status page into the RV042 spot here.  I kept the MTU setting to the default.

&lt;h2&gt;Set up DHCP on the DV042&lt;/h2&gt;

Now is a good time to set up your DHCP setting.  My original intent was to make the UVerse router deliver IP addresses on one block (192.169.1.64-253) and the RV042 deliver the rest ( 192.168.1.1-192.168.1.63).  However, that wouldn&apos;t work.  This DHCP setup page wouldn&apos;t let me enter a value below 100 for the end range, and the router would not let me change the actual range to 192.168.2.x .  That is the reason I changed the UVerse router&apos;s default IP addresses instead of this one.
Here is a screenshot of the DHCP page:

&lt;img src=&quot;http://www.jeffryhouser.com/images/UVerseUpgradeScreenShot4.png&quot;&gt;

I truncated some parts of this screenshot; removing the section for Static IP (which we&apos;ll get to later) , the DNS Section (which I did not use, leaving the values at 0.0.0.0), the WINS Server (which I also did not use leaving the value at 0.0.0.0), and the DNS Local database (which I also did not use).

What I did do is enabled the DHCP server, did not enable the DHCP relay.  I set the start value to 192.163.1.1 and the end value to 192.168.1.063.  If I the final number in the range end slot is less than three digits it gives a [confusing] error, which is why I had to add the leading 0.  I could probably use a larger number span, but when I set these values I was still experimenting with getting both the UVerse 
and the DV042 to share the same IP range.  

Around this point in the process, you&apos;ll need to restart the router.  Hook up the WAN1 port on the back of the RV042 and plug it into any Network port on the back of the UVerse router.  Now any machines that connect to the UVerse Router will, externally, show the static IP address assigned to the router, while internally having another address.  This allows us to do the filing sharing internally, and access remote services externally; which is an important piece to why we chose this approach.

&lt;h2&gt;Set up the Cisco Router to assign static Internal IPs&lt;/h2&gt;

There are two steps to route the external static IPs to a single machine in the internal network. The first is to assign an internal static IP to the mac address of the machine.  The second is to tell the router to redirect all incoming traffic to one of the IPs in your block to that internal IP.  I&apos;ll cover each step separately.  
From the DHCP Setup page in the RV042, take a look at the Static IP section:

&lt;img src=&quot;http://www.jeffryhouser.com/images/UVerseUpgradeScreenShot5.png&quot;&gt;

Click the Show Unknown MAC Addresses button.  This button is designed strictly to make it real easy for you to assign internal IPs to the static IP Address.  This popup should open:

&lt;img src=&quot;http://www.jeffryhouser.com/images/UVerseUpgradeScreenShot6.png&quot;&gt;

Choose the MAC Address that represents the machine-or device-you want to assign a static IP address to and click the enable button.  You can also give the machine a name so you remember what it is later.  I use the computer names that I use internally, such as &quot;DotComItDevServer&quot; or similar.  Click the OK button and the settings will be saved.  

Your new entry will show up in the white box below the edit form.  You can change the Internal Static IP Address by clicking on it in the box, making your changes, and then selecting update.  

&lt;h2&gt;Assign External IPs to Internal IPs &lt;/h2&gt;

Next you&apos;ll want to enable one-to-one NAT on the RV042 router.  Select from the Settings navigation on the left and then click the one-to-one NAT button.  I believe this was disabled by default, but there should be a checkbox you can select to enable it. You&apos;ll see a screen similar to this:

&lt;img src=&quot;http://www.jeffryhouser.com/images/UVerseUpgradeScreenShot7.png&quot;&gt;

This part was not intuitive to me; however the full manual provides the details.  This section of the admin will let you assign a range of external IPs to a range of static IPs.  If you use the range, then the first number of the public range will apply to the first number of the private range, and so on.  When using DHCP you really never know which machine is going to get which static IP.  That would be fine for the use of my range to access external computers, but less than idea for providing a public IP that people can access from the outside.  I set up all my ranges with a 1 to 1 ratio.

For the internal IP Address use the one you assigned to a specific MAC address earlier.  ( 192.168.1.3 ).  For the public range, just choose a number from the public block you were provided by UVerse.  For the range length, select 1.  Click the &quot;Add to List&quot; button.  You should be good to go, but you may want to restart the routers and the computers just to be on the safe side.  You may be able to get by doing an IPConfig /release | ipconfig /renew on the computer in question.  

&lt;h2&gt;Setting up a Wireless&lt;/h2&gt;

My next step-which does not relate to static IPs-was to turn off the wireless in the UVerse router, plug my old Netopia router into the RV042, and then set the Netopia&apos;s DHCP to relay mode.  This means any wireless devices that connect to my network will get an internal IP address from the RV042.  

&lt;h2&gt;Final Thoughts&lt;/h2&gt;

This is not the only way to set up static IP addresses. My friend Andrew has &lt;a href=&quot; http://www.flexjunk.com/2010/01/06/utilizing-att-u-verse-static-ips-with-openwrt/&quot;&gt;a post about his adventures&lt;/a&gt; doing the same thing.  He has similar reasons for wanting this that I do.  Andrew took a different approach than me; but his blogging about it inspired me to write this.  If you&apos;re still &apos;researching&apos; then I suggest reading his post too.

I think the &quot;nightmare&quot; portions of my UVerse upgrade are almost over.  I just have to call them to find out if they did force me into a yearly &quot;premium support&quot; subscription-as per the email I got from them or if what I was told about being charged a 1 time fee was the truth. 
				</description>
				
				<category>Professional</category>				
				
				<category>UVerse</category>				
				
				<pubDate>Mon, 26 Mar 2012 14:22:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2012/3/26/How-can-you-use-Static-IPs-with-ATT-UVerse-Service</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>ATT UVerse Made me Pay to Open Port 25</title>
				<link>http://www.jeffryhouser.com/index.cfm/2012/3/22/ATT-UVerse-Made-me-Pay-to-Open-Port-25</link>
				<description>
				
				Words cannot express how seething I am and how I&apos;ve been treated during my DSL upgrade to ATT UVerse.  This is my attempt at getting some closure.

&lt;h2&gt;The Setup&lt;/h2&gt;

Before I get into details, let me start with some background.  I signed up for DSL service when I moved into my house, roughly 10 years ago.  I&apos;m not sure why I chose DSL Internet over Cable Internet, but that is the choice I made.I signed up with &lt;a href=&quot;http://en.wikipedia.org/wiki/Southern_New_England_Telephone&quot;&gt;SNET&lt;/a&gt; a company eventually swallowed up by ATT.  

I run a home based business, and as part of that business I have my own email accounts on my own &lt;a href=&quot;http://www.dot-com-it.com&quot;&gt;domains&lt;/a&gt;.  I also pay for static IP Addresses and run a home based server.  This server contains things I use for development, such as a SVN repository, a database server, a web server, and a &lt;a href=&quot;http://www.backupforworkgroups.com&quot;&gt;backup software&lt;/a&gt;.  

I used a Netopia Router to route the static IPs.  It was pretty cool, at the router level I was able to use any of my static IP Addresses to a machine based on the Mac address.  I gave one to my Vonage router; one to my development server, and one to the rest of the machines in my house.  

During the course of any day, my development server may need to send out email, such as notifications related to the backup software, or errors that occur on server.  To make that happen I have the IIS SMTP Server installed.  It acts as a relay, only accepting emails from the box it is installed on.  This should prevent my server from becoming a big spam bot that some open relays.  

This setup has worked fine for years, with minor changes.  At one point, many years ago, everything stopped and I could not send email.  I got on the phone with support and eventually I found out that--without notice--they started blocking port 25.  Port 25 is used by many email servers to send email.  As best I understand, it&apos;s blockage has become much more common in an effort to stop spam emails from being sent.  I don&apos;t have an inherent problem with that, but my situation is unique and I need that port open. I don&apos;t remember details, but I think this was shortly after SNET merged into ATT.  It was some time on the phone and everything got fixed without issues.

This is a fairly complicated setup for a &apos;standard&apos; home network--although probably dead simple for a corporation.  I fear any changes to the network because they could interfere with my ability to do business.  I&apos;ve looked at the higher bandwidth of Cable Internet service and never made the switch, everything I had was good enough for my purposes.

This time, I was seriously considering a switch to cable, and was prepared to make the phone call to prepare for the upheaval of my business.  I even spent an hour talking to a sales rep from the cable company to ask tons of questions about port blocking, bandwidth limits, and how to use static IPs on their system.  Then a letter came from ATT, saying that everyone had to upgrade.  I assume this was because I was an SNET customer and they were working to move everyone to the same service.  

On paper, this sounded good.  It would double my bandwidth and I didn&apos;t have to switch providers.  I spoke to a sales rep about static IPs, port blocking, bandwidth limits, and related stuff.  I was assured that the &quot;modem&quot; they provide could handle the static IP Routing.  I was also assured that the setup should be really easy.  

Everything sounded good; I decided to stick with ATT for the upgrade.  ATT didn&apos;t know it; but they kept a customer that day.

&lt;h2&gt;Upgrade Day&lt;/h2&gt;

The upgrade was done on Monday, and it has caused a generally horrible week.  

The guy came to upgrade.  He had never dealt with static IPs before; and had to get his manager to help to get them setup.  I think the installation was delayed at least an hour because he plugged a cable into the wrong phone port.  My house is rigged for two independent phone ports in every room--a relic from the days before Cell Phones and VOIP.

But, my question was &quot;how do I make use of the Static IPs with this router?&quot;  He kept telling me &quot;You souldn&apos;t need to change anything; it should just work.&quot;  I kept saying, but all the information about the Static IPs and routing is in the Netopia Router that is unplugged and sitting on my desk.&quot;  The only other time this guy had to set up static IPs was for a hospital.  My setup was apparently more complicated than theirs.  

We eventually figured out how to use a static IP from the windows machine; just setting the network settings manually.  That would suffice for now.  I&apos;d prefer a hardware solution like I had last time; but I fear that will &lt;a href=&quot;http://www.ka9q.net/Uverse/static-ip.html&quot;&gt;not happen&lt;/a&gt;.

I spent most of Tuesday trying to get my network setup with a hardware solution, using the new Motorola UVerse router in front of my old Netopia Router.  On my server, if I used a static IP; then the machine could not access file sharing on my local network.  If I used a dynamic IP; then the server was not remotely accessible.  Eventually I discovered that I could get files on and off the machine by using the static IP.  That isn&apos;t as elegant as what I had, but I&apos;ll deal with it for now.

In my previous static IP block; my &quot;dynamic&quot; machines would use one from my static block.  That made it easy to tell my &lt;a href=&quot;http://www.fusionlink.com&quot;&gt;managed hosting provider&lt;/a&gt; to just open access to the servers for these IP Addresses.  (They only open things like FTP and SQL Server for specific IP Addresses)  

Unfortunately, with the new system, the public IP of my U-Verse router is not one from my static IP block.  That means my primary dev machine will need to use a static IP address in order to not lose access to the static IP.  This wouldn&apos;t be a problem if I could have just add a router for all my work machines and assigned it a static IP based on the MAC Address of that router.  That router could provide all the machine behind it a dynamic internal IP.  It would be my preferred setup.  

I spent quite a bit of time trying to finagle the ATT provided router and the old Netopia router to work together.  &lt;a href=&quot;http://www.ron-berman.com/2011/11/24/motorola-nvg510-help-page-for-att-u-verse-users/&quot;&gt;Here are instructions&lt;/a&gt; that should work--as a work around.  Alas, I was not able to get them to work.  The IP Mapping feature of the Netopia was ignored.  

I crawled into bed at 5am on Wednesday morning, completely defeated.  I haven&apos;t come that close to an all-nighter since studying for a calculus final freshman year in college with &lt;a href=&quot;http://www.mayerillustrations.com/&quot;&gt;Scott&lt;/a&gt;, &lt;a href=&quot;http://www.facebook.com/jude.barry&quot;&gt;Jude&lt;/a&gt;, and some other girl I do not remember.  If memory serves me, Kurt Cobain was found dead while we were studying and I found out the next morning.  But, I digress.

&lt;h2&gt;Why can&apos;t my server Send Emails?&lt;/h2&gt;

On Wednesday, I tried to resume development (AKA Client Work).  It became immediately apparent that my server was not sending emails it should.  They would end up in the queue directory of the IIS SMTP Server and the event viewer would show me messages like this:

&lt;blockquote&gt;
Message delivery to the host &apos;&lt;redacted&gt;&apos; failed while delivering to the remote domain &apos;&lt;redacted&gt;&apos; for the following reason: The remote server did not respond to a connection attempt. 
&lt;/blockquote&gt;

It was SMTPSVC Error code 4006 for the search engines.

I assumed it was a port blocking problem based on past experience; but wanted to isolate every possibility.  So I spent much of Wednesday trying out all options, including trying to open up specific ports using the UVerse router, which is a Motorola NVG510 for those keeping track.

Eventually, I decided I&apos;m getting nowhere and decide it is time to call ATT Support.  Believe it or not; this is where my story starts.

&lt;h2&gt;The First Set of Calls&lt;/h2&gt;

I start on the &lt;a href=&quot;http://att.com/uversesupport&quot;&gt;ATT web site&lt;/a&gt; and click an IM support link; basically asking if a port is blocked and I can&apos;t send email.  They seem to want to redirect me to someone who can configure my email client.  :ugh: I&apos;m given a phone number and give them a call.  [I can&apos;t find where I wrote down that number, sorry] 

I speak to a bit with someone whose name I didn&apos;t catch.  She redirects me to a second person, &quot;Mickey&quot;.  Mickey sounded like a girl, but the name is usually Male in the US, so I&apos;m not sure.  I go back and forth with Mickey.  She asks about my email client I&apos;m using.  I say &quot;Thunderbird.&quot;  But, of course the problem is not with my email client.  The problem is with an SMTP Server.  

Sending email used to be a problem in the past, but I recently switched to Google Apps which does not use port 25 for their outgoing SMTP server.  

I think we eventually got the the port 25 issue.  Sometimes she was hard to understand.  She gave me the impression that there was on department she couldn&apos;t reach and they may be able to fix it for me; but since she can&apos;t reach them I had to pay a one time fee of $15.  

I was pretty upset about this; as I&apos;ve been a customer for 10 years and they forced me to upgrade.  I argue with her; and ask to speak to her manager.  Somehow she talked me out of that.  I&apos;m, roughly, two days into this now so I decide $15 is a no-brainer so I can get back to servicing real clients.  I say, &quot;okay, let&apos;s go for it.&quot; 

Then she starts reading me the terms and conditions.  The first word that sticks out is &quot;monthly.&quot;  And I call her out on it, because she had said it would be a one time fee to open the port.  She explains that she is reading an old version of the terms of service and not everything will apply to my situation.  I grudgingly let her continue.

Then she comes up to a termination of service fee.  I question that too, as it is a one time fee; not a service.  She explains, once again, that these are old terms of service and do not apply to my situation.  

She also explains that all calls are recorded and she would get fired if she lied to me and she doesn&apos;t want that.  

Even though, Mikey guaranteed me this problem could be fixed tonight; part of the terms and conditions were that I was eligible for the time they spent even if they couldn&apos;t fix it.  

I let her continue.  She shifts me to another line to pay, then I&apos;m transferred back to her.  She says thank you and offers to transfer me to &quot;Connect Tech&quot;.  She gives me the number, 1-877-888-7360 and transfers me to Kevin.


With Mickey I was probably too vague on what my issue was.  Instead of pushing off her queries about &quot;what mail client do you use.&quot; I should have been more explicit.  With Kevin; I decided to be more specific.  &quot;What Mail Client do you use?&quot;  &quot;I use Thunderbird, the issue is not with that, it is with a server that sends outgoing emails.  I&apos;m getting the message that it cannot connect.&quot;  We go on and off; and he eventually tells me he can&apos;t help me.  I need to talk to ConnectTech-360.  I paid for this?

Kevin transfers me to the new ConnectTech-360; which feels like starting from the beginning.  It&apos;s an automated system that appears to want to tell me how to reconfigure my email.  Since I&apos;ve been through this before, I call out agent, and the system disconnects me.  

This was around the time I punched the wall.  

&lt;h2&gt;My Second Round of Calls&lt;/h2&gt;

I spent about fifteen minutes walking around the house trying to think up creative curse words; then decide to try again.  I think I started with the main number [which I can&apos;t find out where I wrote it down].  I go through the automated system again and eventually get to Jason.  At this point, I&apos;m being very specific.  &quot;Is port 25 Blocked?  My outgoing emails are not being sent.&quot;  Jason insists that this is not a problem, and goes through &quot;something&quot; and eventually says &quot;Yes, it looks like it is blocked I missed it the first time.&quot;  He can&apos;t help me, but can forward me to someone who can (Consequently called Connect-Tech).

This time when I&apos;m transferred; they ask me to put in a zip code.  That&apos;s a first, it feels like I&apos;m getting somewhere even if I don&apos;t know where.

Kevin transfers me to AJ.  The number they gave me at this stage was 1-888-905-2838; which is the same as the first Connect-Tech number they gave.  I&apos;m not going in circles too much.  I give AJ some information and I think he eventually shuffled me to Sean.  I spent most of my time on the phone with Sean [and being on hold]

The first thing that Sean did was congratulate me on purchasing a Connect Tech subscription. 

I immediately snap back that I didn&apos;t purchase a subscription and that I was told it was a one time fee.  Somewhere in my mind; I took a breather while practically screaming at him.  

I explained my situation and asked if Port 25 was blocked.  He swore up and down that ATT does not block any ports and everything is open and that is part of what people use it for.  I said &quot;Then is Port 25 being intercepted in any way?&quot;  And he said no; and rattled off a bunch of related ports (110, 80, etc.. ) which should work just fine.  

I was pushing him hard somehow.  Eventually, like magic he said &quot;oh, we do, let me remove that from your account.&quot;  I am surprised at his about face on the blocking, which felt like he changed his mind in mid sentence.  

He told me it&apos;ll take 15 minutes or so to take affect and I should unplug the router and plug it back in.

That is the point where idiot me unplugged the router.  When you a VOIP phone--which my new ATT UVerse phone is--an unplugged router means no phone.  I hung up on them, inadvertently.  

The router restarted, and he called back 5 minutes later or so.  I do give them kudos for that.  I ask if he can remove any and all other port blocks and he says my system should be completely open now.

After the router restart, I also restarted SMTP services on my server and magically the queue of emails immediately got sent.  Things appear to be good; or at least functional.

&lt;h2&gt;It is time to fight the Charges&lt;/h2&gt;

I still have serious issues about having to pay more money just to get the same quality of service I had before they forced me to upgrade.  I regret not going to Cox for cable modem service.  If I was going to go through hell, at least it could have been a brand new hell.

I got this email regarding my purchase, I added emphasis:

&lt;blockquote&gt;
Thank you for your AT&amp;T ConnecTech&#xae; Services purchase.

The following order &lt;redacted&gt; has been processed for your requested service.

The service(s) ordered was/were:

AT&amp;T Support Plus Online with ETF (CSR Only)

If you have questions on your remote service, please contact us at 1-866-294-3464 from 8:00 AM to 11:00 PM Central, seven (7) days a week.

Your AT&amp;T Support Plus Online with ETF (CSR Only) &lt;b&gt;subscription is a 12 month term agreement&lt;/b&gt;. &lt;b&gt;An Early Termination Fee of $120.00&lt;/b&gt; (reduced by $10.00 after each completed month of the term) applies if you terminate service prior to the end of the 12 month commitment.

You will receive another e-mail in the next few days with tips and additional information that will help you get the most out of your new Support Plus service.

Can&apos;t wait? No problem! To get started now, go here and enter your zip code.

The overall price of your order is $15.15 (includes one-time charges, &lt;b&gt;initial subscription period&lt;/b&gt;, discounts and taxes).

For monthly recurring subscriptions ordered, you should expect to pay $15.00 monthly after your initial bill (plus applicable taxes).

All AT&amp;T ConnecTech Services are subject to certain terms and conditions for service. The terms and conditions for your service order are available at www.connectech.att.com. You agree to be bound by these terms and conditions by continuing to receive your ordered services.
&lt;/blockquote&gt;

So, I was clearly told by Mikey that this was a one time charge; but the email (and the comment by the Sean) make me think they signed me up for a recurring subscription.  Honestly, I don&apos;t know if I want to spend another day on the phone to fight it at this point; but I think the principle of the thing is important.  

&lt;h2&gt;A final point about static IPs and Hardware &lt;/h2&gt;

A friend of mine suggested that I try a &lt;a href=&quot;http://www.amazon.com/Cisco-RV042-4-port-100-Router/dp/B0002I7288/ref=sr_1_1?ie=UTF8&amp;qid=1332427776&amp;sr=8-1&quot;&gt;LinkSys RV042 Router&lt;/a&gt;; and I found the manual.  On paper it sounds like their One-to-one NAT function is exactly what I need for the IP Mapping on the hardware level.  I still have concerns it will actually work, due to other stuff I&apos;ve read about what the Motorola modem device does.

Writing this was very cathartic for me; and I am less likely to scream at someone during my next phone call. 
				</description>
				
				<category>Customer Service</category>				
				
				<category>Professional</category>				
				
				<pubDate>Thu, 22 Mar 2012 11:06:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2012/3/22/ATT-UVerse-Made-me-Pay-to-Open-Port-25</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>Migrating Instances from ColdFusion 8 to ColdFusion 9</title>
				<link>http://www.jeffryhouser.com/index.cfm/2012/3/14/Migrating-Instances-from-ColdFusion-8-to-ColdFusion-9</link>
				<description>
				
				Unfortunately, I came back from lunch yesterday to find my laptop was dead.  I couldn&apos;t get it to load.  It was a refurb unit that had served me well enough for three years.  I was hoping to get another 6 months out of it; but it is what it is.

This put me in the unfortunate position of needing to set up a new development machine **NOW**.  Thankfully, I have a new machine here just waiting to be set up for development.  It gives me a slight delay before I have to replace the laptop.  

The old machine had CF8 installed in the multi-server mode.  I had used the CF8 instance manager to deploy multiple CF8 and CF9 instances of ColdFusion for development purposes.  Could I take those instances created in CF8 and somehow use them in CF9 without having to recreate them from scratch?   Yes, the answer is yes.

I wrote a bit my experiences moving these same &lt;a href=&quot;http://www.jeffryhouser.com/index.cfm/2010/9/14/Using-the-Command-Line-to-set-up-a-ColdFusion-Multiserver-Instance-as-a-service&quot;&gt;CF8 instances from one machine to another in the past&lt;/a&gt;.  Here is how I did it:

&lt;ol&gt;
&lt;li&gt;First I installed Apache.  It is my preferred web server.  Then I stopped Apache, backed up the config files, and replaced the &apos;clean&apos; config files with my old config files.  This will give me all the info that attaches Apache to the CF Instances and what not.&lt;/li&gt;
&lt;li&gt;Then I installed ColdFusion 9; the multi-server edition.  During hte install I attached it to my &apos;clean&apos; config of Apache.  I had no idea, when I was doing it, if that was a good idea or not but it worked and the &apos;old&apos; Apache config seemed to connect up to ColdFusion without any issues.  So now I have a working CF Administrator with an instance manager.&lt;/li&gt;
&lt;li&gt;Then I used winmerge to compared my old CF8 install directory and the new CF9 install directory.  I copied over all my server instances--except for the cfusion one that was created by default.  The server instances are located in the servers directory of the install. &lt;/li&gt;
&lt;li&gt;Finally, I scoured over all the differences in the winmerge report to figure out how CF was deciding what was an instance and what wasn&apos;t.  There are two files: 
&lt;ul&gt;
&lt;li&gt;lib\wsconfig\wsconfig.properties&lt;/li&gt;
&lt;li&gt;lib\servers.xml&lt;/li&gt;
&lt;/ul&gt;
I believe these two files contain all the data for how the CF Instance manager finds the instances.  I used winmerge to move all my &quot;old&quot; instances into the new files.  I restarted the Macromedia JRun and Macromedia ColdFusion instances, reloaded the admin and all my old &apos;CF8&apos; instances showed up.  Just like magic.
&lt;/li&gt;
&lt;/ol&gt;

Now all I have to do is create the Windows services for these instances--as I talk about in my other post.  Since CF10 is not going to use JRun, I&apos;m not sure I&apos;ll be so lucky during the next upgrade. 
				</description>
				
				<category>Professional</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Wed, 14 Mar 2012 14:54:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2012/3/14/Migrating-Instances-from-ColdFusion-8-to-ColdFusion-9</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>How do you Organize your Documents?</title>
				<link>http://www.jeffryhouser.com/index.cfm/2011/12/30/Organizational-Issues</link>
				<description>
				
				I recently bought a new computer, and my intent is to retire to other ones I have been using.  They&apos;ll live on a bit; but with specific purposes.  One of them will turn into a full time jukebox for my office.  The other will move to my music room where I will use it for mixing down songs, or digitizing cassettes.

&lt;h2&gt;Where should I put stuff?&lt;/h2&gt;

In an attempt to retire both of these PCs from DotComIt duty; I need to move all the relevant DotComIt stuff onto the new computer.  This has brought to attention the organizational issue I&apos;ve been avoiding for years.  

I have my business files organized like this:

career&lt;br/&gt;
--clients&lt;br/&gt;
----Active&lt;br/&gt;
----Inactive&lt;br/&gt;
--Vendors&lt;br/&gt;
----Active&lt;br/&gt;
----Inactive&lt;br/&gt;


So, at the top level view, I categorize all my interactions between clients and vendors.  Each client--or vendor-will have their own folder, with three more subdirectories:

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Development&lt;/b&gt;: This is the development area.  It primarily contains the source code and eclipse workspaces. Vendors don&apos;t usually have this.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Documents&lt;/b&gt;: This is the &quot;Catch All&quot; directory.  It&apos;ll contain graphical assets, test cases for development, marketing details, product brainstorms, and anything that isn&apos;t development or finance related.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Finance&lt;/b&gt;: This will primarily contain contracts, invoices, time sheets, RFPs, and similar items.&lt;/li&gt;
&lt;/ul&gt;

Sometimes I&apos;ll split up development and documents by project.  Finance is not usually &quot;big&quot; enough to warrant such separation. 

&lt;h2&gt;Why is this a problem?&lt;/h2&gt;

I treat every DotComIt venture; such as &lt;a href=&quot;http://www.flextras.com&quot;&gt;Flextras&lt;/a&gt;, &lt;a href=&quot;http://www.asktheflexpert.com&quot;&gt;AskTheFlexpert&lt;/a&gt;, and &lt;A href=&quot;http://www.theflexshow.com&quot;&gt;The Flex Show&lt;/a&gt; as if I were my own client; so they each have their own directories.  

My problem comes with two items.  The first is projects that may deal with multiple vendors and/or clients.  The second is related assets that spread out across multiple directories.  The DotComIt\Documents folder, for instance, has a directory for Graphics, and one for Articles, and one for Presentations.  But, graphics are often created by a vendor; and articles and presentations are often created for conferences and publications (who are formally clients).

In both cases, I don&apos;t have a single place to go for the all information related to a specific project and it just gets confused.  It&apos;s worst when I&apos;m inconsistent about such stuff.

Let&apos;s talk a bit about &lt;a href=&quot;http://www.360flex.com&quot;&gt;360|Flex and 360|Conferences&lt;/a&gt;.  I think it will do a good job of explaining why there are organizational issues on my end.

These are some tenants of DotComIt&apos;s 360|Flex relationship:

&lt;ul&gt;
&lt;li&gt;I routinely speak at 360|Flex events.&lt;/li&gt;
&lt;li&gt;Flextras routinely sponsors 360|Flex events&lt;/li&gt;
&lt;li&gt;360|Flex routinely sponsors The Flex Show to promote their events&lt;/li&gt;
&lt;/ul&gt;

360|Conferences is both a vendor and a client, at the same time.  There are often separate contracts for all three of these things; but sometimes they get combined.  Where do I store the information related to our relationship?  Do they get a directory in with vendors?  Or with clients?  Or both?

When I create a presentation, or article, I have been storing them in the DotComIt\Documents directory. Often I&apos;ll give a presentation multiple times, so the actual &quot;documents&quot; I&apos;m creating as part of the speaker contract are not stored with the client.  

With articles; I often insist on getting a contract that states I retain copyright and/or have the ability to repost to my personal blog.  Sometimes I have a contract with these publishers and the actual article I create is stored independently.

Even writing this, I&apos;m confusing myself.  I rewrote the last paragraph multiple times.

Unfortunately, the situation where I have different relationships with the same entity has come up multiple times in my business.  

The end result is that for situations like 360|Flex; I have a lot of documents scattered all over the place and no single source for them.

&lt;h2&gt;That&apos;s not so bad, though, is it?&lt;/h2&gt;

It gets worse.  When Flextras sponsors a conference, I have been storing all our related advertising stuff in the Flextras\Documents folder.  I often reuse similar promotional materials for different conferences, so this makes sense to get it in a single spot.  Unfortunately in some cases, I&apos;ve been throwing the legal docs related to that conference in the same directory related to my advertising.

I&apos;ve done similar things in other situations.  For example, I recently hired someone to do some updates to the Flextras web site.  Those project files are split between a directory in the Flextras folder and the vendor&apos;s Vendor directory.  

When I hire a vendor to create graphic assets for a Flextras conference booth promotion; should those assets be put in a folder specific for that conference?  Or should they end up in the Flextras graphics repository?  I&apos;ve done both.  

I need to plow through all this and decide where it goes; and then keep it consistent.  I just haven&apos;t the foggiest idea what it should be.  I wrote this post in hopes of helping my mind figure it out.  It is helping.  

I think the Getting Things Done approach is that everything should be filed in alphabetical order.  Maybe my extra layer of categorization is confusing things.  It made sense to me when I started doing it; but perhaps I need to get rid of the client and vendor distinction.  It worked in my &quot;real world&quot; filing cabinet.  But, it doesn&apos;t solve the underlying problem when things have different, appropriate categorization.  

Does anyone else think about these issues?  Do you have any ideas?  Please share!

&lt;h2&gt;Here is my solution in progress&lt;/h2&gt;

What I&apos;m leaning towards is this approach:

&lt;ul&gt;
&lt;li&gt;The Vendor Specific Directory should store all the finance / legal records related to that Vendor.&lt;/li&gt;  
&lt;li&gt;Graphic related master files, even those created by a vendor, should all go in a single graphic repository for that &apos;project&apos;.  So, Flextras stuff will go in &quot;Flextras\Document\Graphics&quot; and TheFlexShow stuff would go in &quot;TheFlexShow\Documents\Graphics.&quot; [etc..] I do this because I&apos;ve found it to be a huge time saver to put all the graphics in a single spot.&lt;/li&gt;
&lt;li&gt;Any other project specific stuff; should be in some project folder.  For Flextras marketing stuff; this would probably be something like this: &quot;Flextras\Documents\Advertising\&lt;i&gt;PromotionName&lt;/i&gt;&quot;&lt;/li&gt;
&lt;li&gt;Presentations and Articles should be stored in a single repository (Inside &quot;DotComIt\Documents&quot;).  Usually these things are not vendor specific, and I think having a central place to go look for all my presentations/articles this will make sense [just like it does for the graphic stuff].  Even though I create a presentation for a conf; I&apos;m going to try to give it a half dozen other times.&lt;/li&gt;
&lt;/ul&gt;

I&apos;m not sure I want to combine the Vendor and Client directories just yet. I&apos;m toying around with that idea, though, because my directory structure is too deep and it takes a lot of clicks to go down.  

Did I miss anything? 
				</description>
				
				<category>Professional</category>				
				
				<category>Business</category>				
				
				<pubDate>Fri, 30 Dec 2011 09:00:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2011/12/30/Organizational-Issues</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>In Defense of Flash</title>
				<link>http://www.jeffryhouser.com/index.cfm/2011/11/21/In-Defense-of-Flash</link>
				<description>
				
				This is a modified version of a letter I wrote to a client to defend the choice of using Flash.  This issue has come up due to some recent PR heat that Adobe is abandoning Flash.  I believe that Flash and Flex were the right choice for building Enterprise applications a year ago.  I believe that Flash and Flex are the right choice for building Enterprise applications today.  As HTML5 tooling, frameworks, and related resources improve I will reevaluate my needs and the needs of my clients on a routine basis.  I had to remove some client specific information, but the bulk of the information remains the same.  

Here is the letter:

Per our recent discussion, regarding Flash and Flex, I wanted to clarify a few things to in writing.  In the recent weeks, many media outlets have reported that Adobe is abandoning The Flash Platform in favor or HTML5 solutions.  This represents an incomplete understanding of the facts, and I hope to clarify that here.  Such a statement would be like saying Amazon.com is going to abandon selling real world goods because they released the Kindle Fire.  

&lt;h2&gt;What is the Adobe Flash Platform?&lt;/h2&gt;

First, for completeness, I want to clarify what Adobe&apos;s Flash Platform is.  The Flash Platform consists of multiple deployment runtimes, development tools, and frameworks that are integrated across the full Adobe Creative Suite.  Here is a list of some Flash Platform elements:
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;The Flash Player&lt;/b&gt;: Flash Player is a browser plug-in which allows us to deploy web based applications to Windows, Mac, Linux, Android, and Blackberry.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Adobe AIR&lt;/b&gt;: Adobe AIR is a runtime that allows us to deploy native applications to Windows, Mac, Android, iOS, and Blackberry.&lt;/li&gt;  
&lt;li&gt;&lt;b&gt;Flash Professional&lt;/b&gt;: Flash Professional is a tool for developing timeline based animations.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Flash Builder&lt;/b&gt;: Flash Builder is an IDE to help programmer&apos;s write advanced code.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Adobe Flex&lt;/b&gt;: Flex is the Software Development Kit that helps programmers build, debug, and deploy Enterprise applications with the Flash Platform.  Flex includes a UI Component library, a SWF compiler, a command line debugger, an application profiler.&lt;/li&gt;
&lt;/ol&gt;

There are more aspects of the Flash Platform ecosystem, but I highlight these because they come from Adobe and are prominently used by Flash Platform developers. 

We have built our applications using Adobe Flex to target the Flash Player desktop runtimes.  One part of this decision is the breadth of the tooling available to us decreases the time it takes us to deliver a finished application.  The ease of styling the default Flex Components also provides the applications with some cross platform elegance.  They will work without change on the Windows and Mac machines used by your employees.

&lt;h2&gt;Is Flash Really Dead?&lt;/h2&gt;

I want to quantify some of the press announcements over the course of the past week.  The first one is that Adobe will no longer, personally, develop the Flash Player for Mobile Devices.  This means that Adobe will not produce version of the Flash Player for Android, or Blackberry devices.  To quote: 

&lt;blockquote&gt;
&quot;We will no longer continue to develop Flash Player in the browser to work with new mobile device configurations (chipset, browser, OS version, etc.) following the upcoming release of Flash Player 11.1 for Android and BlackBerry PlayBook&quot;  
&lt;/blockquote&gt;

&lt;a href=&quot;http://blogs.adobe.com/conversations/2011/11/flash-focus.html&quot;&gt;Source&lt;/a&gt;

If you look at my list of Flash Platform elements above, it is clear this affects a very small subset of the Flash Platform; and not one we have targeted in our development.  Through Adobe&apos;s &lt;a href=&quot;http://www.openscreenproject.org/&quot;&gt;Open Screen Project&lt;/a&gt;, licensees are able to continue their own development of the mobile Flash Plugin.  RIM has already stated they will do this for Blackberry devices.  To quote: 

&lt;blockquote&gt;
&quot;As an Adobe source code licensee, we will continue to work on and release our own implementations. RIM remains committed to delivering an uncompromised Web browsing experience to our customers, including native support for Adobe Flash Player&quot;
&lt;/blockquote&gt;

&lt;a href=&quot;http://allthingsd.com/20111109/so-now-what-will-ipad-rivals-say-in-their-commercials/&quot;&gt;Source&lt;/a&gt;

Moving forward, Adobe will focus on development of Flash Player 12 for desktops, and focus on using Flash Platform technologies to deploy Native Apps to mobile devices:

&lt;blockquote&gt;
&quot;Our future work with Flash on mobile devices will be focused on enabling Flash developers to package native apps with Adobe AIR for all the major app stores.&quot;

&quot;We are already working on Flash Player 12 and a new round of exciting features&quot;
&lt;/blockquote&gt;

&lt;a href=&quot;http://blogs.adobe.com/conversations/2011/11/flash-focus.html&quot;&gt;Source&lt;/a&gt;

According to the Adobe Max 2011 keynote, the Adobe touch apps, including Photoshop touch, were built using the Flash Platform.  This is the surest sign of Adobe&apos;s commitment to the Flash platform.  

&lt;blockquote&gt;
&quot;You&apos;ve already seen some incredible examples of applications built in Flash.  What do you guys think of the touch apps that Kevin showed you yesterday?  So, they were useful and usable, they had rich UI, performed really well, very engaging interfaces.  What you weren&apos;t told is that almost all of those applications were actually built in Flash!&quot;
&lt;/blockquote&gt;

&lt;a href=&quot;http://tv.adobe.com/watch/max-2011-keynotes/mobile-apps/&quot;&gt;Source&lt;/a&gt; ~14 minutes, 20 seconds

Flash Platform technologies are continuing to evolve and provide a strong value proposition for our current use.

&lt;h2&gt;What does this mean for Flex?&lt;/h2&gt;

A big part of the work we have done together has been based on the Flex SDK, and I wanted to highlight some changes about the future of Flex.  The model with which Flex is developed will change.  First, Adobe is working on making Flex part of the Apache Foundation:

&quot;Adobe is in the process of preparing two proposals for incubating Flex SDK and BlazeDS at the Apache Software Foundation.&quot;

&lt;a href=&quot;http://www.adobe.com/devnet/flex/articles/flex-announcements.html&quot;&gt;Source&lt;/a&gt;

The Apache Foundation is one of the leading Open Source Foundations and the project will be managed by Adobe and some high profile Flex Community members from the &lt;a href=&quot;http://www.spoon.as&quot;&gt;Spoon.as&lt;/a&gt; project, an effort from the Flex development community to help improve the Flex Framework.

Continued development will take place under the open source foundation, however Adobe still plans to implement the road map they discussed at Adobe Max.  This will include new components that make building applications easier, and an improved compiler that will make development easier.  

Additionally, Adobe is committing to future Flash Builder improvements, with support for the future releases of the Flex SDK:

&lt;blockquote&gt;
&quot;Future versions of Adobe Flash Builder will continue to provide code editing, compilation, debugging and profiling support for Flex applications. Adobe will undertake the required work to ensure Flash Builder is compatible with future releases of Flex SDK.&quot;
&lt;/blockquote&gt;

&lt;a href=&quot;http://www.adobe.com/devnet/flex/articles/flex-announcements.html&quot;&gt;Source&lt;/a&gt; 

The future of Flex is strong.

&lt;h2&gt;HTML5, ColdFusion, and Silverlight&lt;/h2&gt;

Much of the recent press talks about how Adobe is abandoning Flash in favor of HTML5 development.  I believe the information above is clarification that Adobe is not abandoning Flash.  However, it is undeniable that they are investing heavily in HTML5 development tools.  The primary reason for this focus is mobile device support.  All major mobile web browsers-Android, iOS, and Blackberry--use the same rendering engine, Webkit, therefore providing a consistent experience across mobile devices.  

Adobe is undertaking some work to help bridge the gap from The Flash Platform tools to HTML5 and JavaScript.  The next version of Adobe Flash Professional will have an export to HTML5 feature:

&lt;blockquote&gt;
&quot;Wallaby is the codename for an experimental technology that converts the artwork and animation contained in Adobe(r) Flash(r) Professional (FLA) files into HTML.&quot;
&lt;/blockquote&gt;

&lt;a href=&quot;http://labs.adobe.com/technologies/wallaby/&quot;&gt;Source&lt;/a&gt;

The Flex team has an experimental Flex to HTML/JavaScript compiler that will be given to the Apache Foundation as part of the Flex code base:

&lt;blockquote&gt;
&quot;Will Adobe provide migration tools to enable existing Flex applications to be converted to HTML/JavaScript? We have undertaken some experimental work in this area, but remain unsure as to the viability of fully translating Flex-based content to HTML.&quot;
&lt;/blockquote&gt;

&lt;a href=&quot;http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html&quot;&gt;Source&lt;/a&gt;

HTML5 is something to watch carefully over the next 3-5 years, but it is not yet ready for Enterprise applications.

Another Adobe technology used in our projects is ColdFusion.  ColdFusion is alive and well, and not affected by any of the recent announcements:

&lt;blockquote&gt;
&quot;There is no change in plan for next version of ColdFusion codenamed Zeus and we continue to go aggressively trying to make Zeus a kick ass release.&quot;
&lt;/blockquote&gt;

&lt;a href=&quot;http://blogs.adobe.com/coldfusion/2011/11/15/coldfusion-no-changes-in-plans-for-zeus/&quot;&gt;Source&lt;/a&gt;

&lt;blockquote&gt;
&quot;We&apos;re still here--same leadership, engineers, and sales team as before last week--and we&apos;re still selling ColdFusion 9 and working hard on the next version of ColdFusion, codenamed ColdFusion Zeus.&quot;
&lt;/blockquote&gt;

&lt;a href=&quot;http://blog.joshuaadams.com/index.cfm/2011/11/14/ColdFusion-Staying-the-Course&quot;&gt;Source&lt;/a&gt;

With ColdFusion, we have nothing to worry about.

We had discussed Silverlight as a possibility, so I wanted to make you aware that many of the same issues which Flash Player experiences on Mobile devices will also be issues for Silverlight.  In Windows 8, Metro style browsing will not support plugins:

&lt;blockquote&gt;
&quot;The Metro style browser in Windows 8 is as HTML5-only as possible, and plug-in free.&quot;
&lt;/blockquote&gt;

&lt;a href=&quot;http://blogs.msdn.com/b/b8/archive/2011/09/14/metro-style-browsing-and-plug-in-free-html5.aspx&quot;&gt;Source&lt;/a&gt;

This means that the Windows 8 Metro UI will not support Flash or Silverlight.  Traditional desktop browsing will still support both, but many believe that the metro interface will be the Microsoft interface for Tablets and other mobile devices.  Additionally, rumors are that Silverlight 5 will be the last release of the player:

&lt;blockquote&gt;
&quot;Several of my customer and partner contacts have told me they have heard from their own Microsoft sources over the past couple of weeks that Silverlight 5 is the last version of Silverlight that Microsoft will 
release.&quot;
&lt;/blockquote&gt;

&lt;a href=&quot;http://www.zdnet.com/blog/microsoft/will-there-be-a-silverlight-6-and-does-it-matter/11180&quot;&gt;Source&lt;/a&gt;

Converting existing projects to Silverlight would not solve any issues for us at this time, and may introduce other issues later.

&lt;h2&gt;Final Thoughts&lt;/h2&gt;

Right now, today, I still believe that Flex is the right choice for the development we are doing together.  We should continue to evaluate the state of alternate technologies on a routine basis to verify our choices.  But, today I leave you with this quote

&lt;blockquote&gt;
&quot;..the performance, framework maturity and robust tooling provided by Adobe are cited as critical factors by enterprise customers as to why they continue to select Flex.&quot;
&lt;/blockquote&gt;

&lt;a href=&quot;http://blogs.adobe.com/flex/2011/08/flex-where-were-headed.html&quot;&gt;Source&lt;/a&gt;

Sincerely,



Jeffry Houser&lt;br/&gt;
DotComIt, Owner 
				</description>
				
				<category>Professional</category>				
				
				<category>Flex</category>				
				
				<category>AIR</category>				
				
				<pubDate>Mon, 21 Nov 2011 09:00:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2011/11/21/In-Defense-of-Flash</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			
			<item>
				<title>Seven Reasons to be a Happy Flash Developer</title>
				<link>http://www.jeffryhouser.com/index.cfm/2011/11/16/Seven-Reasons-to-be-a-Happy-Flash-Developer</link>
				<description>
				
				There have been a lot of emotion in the Flex and Flash community over the past few days; regarding certain decisions that Adobe has made about Flex and Flash and their utter failure to communicate with us, the developer community.  The news, and responses, have been overwhelming negative.

 I grew up an eternal optimist.  While I see a lot of challenge ahead, I also see a lot of opportunity.  

Here are seven reasons I&apos;m happy to be a Flash Developer today.

&lt;ol&gt;

&lt;li&gt;Adobe is focusing their Flash related efforts to allow us to easily build cross platform native applications.  Let&apos;s face it; on mobile devices native apps are lot cooler than browser based apps.    

&lt;blockquote&gt;
&quot;Our future work with Flash on mobile devices will be focused on enabling Flash developers to package native apps with Adobe AIR for all the major app stores.&quot;
&lt;/blockquote&gt;

&lt;A href=&quot;http://blogs.adobe.com/conversations/2011/11/flash-focus.html&quot;&gt;Source&lt;/a&gt;

&lt;/li&gt;

&lt;li&gt;
Flex being released to 3rd party open source foundation, most likely the Apache Foundation.  This is kind of like the &lt;a href=&quot;http://www.spoon.as&quot;&gt;Spoon project&lt;/a&gt; with a +10 power up.

&lt;blockquote&gt;
&quot;We are preparing two proposals for incubating Flex SDK and BlazeDS at the Apache Software Foundation.&quot;
&lt;/blockquote&gt;

&lt;a href=&quot;http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html&quot;&gt;Source&lt;/a&gt;

Some of the smartest community members in the Flex Community involved.  As a corollary I&apos;ve heard some talk of decoupling Flex from the Flash / AIR runtimes so it can cross compile to alternate technologies such as HTML and JavaScript.  Apparently Adobe even has a prototype on this which will be included as part of the open source code.  
&lt;/li&gt;


&lt;li&gt;
A lot of &lt;a href=&quot;http://tv.adobe.com/watch/max-2011-develop/flash-platform-roadmap-flex-flash-builder-flash-player-air/&quot;&gt;Adobe&apos;s 
Flex Roadmap&lt;/a&gt; discussed at Max will be implemented to completion, including the new Falcon Compiler, and some new spark components.
Additionaly, Adobe will continue with Flash Builder, which is Adobe&apos;s best ActionScript editor.    
&lt;/li&gt;

&lt;li&gt;
The next version of Flash Player will be developed on Desktops; and that is all many Enterprise Applications Need anyway.  

&lt;blockquote&gt;
&quot;We are already working on Flash Player 12 and a new round of exciting features which we expect to again advance what is possible&quot;
&lt;/blockquote&gt;

&lt;a href=&quot;http://blogs.adobe.com/flashplatform/2011/11/flash-to-focus-on-pc-browsing-and-mobile-apps-adobe-to-more-aggressively-contribute-to-html5.html&quot;&gt;source&lt;/a&gt;
&lt;/li&gt;


&lt;li&gt;
Adobe wants to use the Flash player to continue to extend the web.  Many of their innovations will be used a test bed to bring things back to formal HTML standards bodies.  &lt;a HREF=&quot;http://labs.adobe.com/technologies/pixelbenderplugin/&quot;&gt;PixelBender&lt;/A&gt; turning
into &lt;a href=&quot;http://www.adobe.com/devnet/html5/articles/css-shaders.html&quot;&gt;CSS Shaders&lt;/a&gt; and the poster child of this approach.

&lt;blockquote&gt;
&quot;We will continue to leverage our experience with Flash to accelerate our work with the W3C and WebKit to bring similar capabilities to HTML5 as quickly as possible&quot;
&lt;/blockquote&gt;

&lt;A href=&quot;http://blogs.adobe.com/conversations/2011/11/flash-focus.html&quot;&gt;Source&lt;/a&gt;

This approach is good for web standards; and good for all developers.  We could easily argue this is what early browser makers did, and continue to do to move forward HTML.  
&lt;/li&gt;

&lt;li&gt;
Many of the skills we have developed using Flash Platform tools will be easily applicable to the next generation of HTML5 related tools.  That can give us a head start in the job market.  Adobe is going to be adding HTML5 support for many of the tools we already know, such as &lt;a href=&quot;http://labs.adobe.com/technologies/wallaby/&quot;&gt;the Flash Professional export to HTML&lt;/a&gt; &lt;a href=&quot;http://www.leebrimelow.com/?p=3104&quot;&gt;feature&lt;/a&gt;.  
&lt;/li&gt;


&lt;li&gt;
And If all else fails, HTML approaches to cross browser development will take 2-8x longer depending on the tasks at hand.  
You can laugh all the way to the bank.  
&lt;/li&gt;

&lt;/ol&gt;

I don&apos;t know how this will all play out.  I don&apos;t know what the future holds for me, &lt;a href=&quot;http://www.theflexshow.com&quot;&gt;The Flex Show&lt;/a&gt;, or &lt;a href=&quot;http://www.flextras.com&quot;&gt;Flextras&lt;/a&gt;.  But, I&apos;m cautiously optimistic about what the future holds. 
				</description>
				
				<category>Professional</category>				
				
				<category>Flex</category>				
				
				<category>AIR</category>				
				
				<pubDate>Wed, 16 Nov 2011 09:00:00 -0400</pubDate>
				<guid>http://www.jeffryhouser.com/index.cfm/2011/11/16/Seven-Reasons-to-be-a-Happy-Flash-Developer</guid>
				<author>info@theflexshow.com (Jeffry Houser and John Wilker)</author>
				
				
			</item>
			</channel></rss>