2006 One More MAX ColdFusion BOF
We've added another MAX ColdFusion BOF (no, it won't conflict with the two already scheduled). This new one will be entitled "ColdFusion IDEs", and will present a forum for you to share your opinions on this important subject (admit it, you have a strong opinion about this one!). Discuss what you use and why, talk about what you'd like, speculate about the ideal CF development environment ... we want to hear it all.
We'll be posting the final BOF list to the MAX site shortly.
2006 Steve House On ColdFusion Powered Flex Tree Controls
Steve House has posted a great entry about populating Flex Tree controls using ColdFusion.
2006 Builder.com On Model-Glue:Unity
Brian Kotek has posted an excellent overview of Model-Glue:Unity on Builder.com.
2006 ColdFusion Powers CanadianAlternative
No, I am not advocating migration up North. But, CanadianAlternative, a site that apparently wants to help "conscientious, forward-thinking Americans" to do just that, is powered by ColdFusion. This one sent to me by Jim Collins, thanks (I think)!
2006 ColdFusion Positions In FL and MO
- Point and Pay (Winter Haven, FL) is looking for a ColdFusion developer with at least 3-5 years of ColdFusion development experience. Knowledge of CFCs and SQL is required. Fusebox 4 or 5 experience preferred. Contact Russ Johnson.
- Point and Pay (Winter Haven, FL) is also looking for a software architect to focus on application design for new development. Experience with ColdFusion 7, CFCs, and Fusebox is required. Experience with Adalon and UML diagramming is a plus. Contact Russ Johnson.
- General Dynamics / Scott AFB (St Louis, MO) is looking for an advanced ColdFusion developer to work on a government contract for Scott AFB. Experience with ColdFusion MX 7 is required, as is working with XML. Experience with Fusebox or Model-Glue Framework is preferred. Contact Brian King.
2006 U.K. To Host CFDevCon
CFDevCon is a new U.K. based ColdFusion developer conference that is run by developers, for developers. This event promises to be highly technical, with an emphasis on topics relevant to actual application development. The first CFDevCon will be a one day event on November 9th, 2006, and there is space for 400 attendees.
It's great to see an event like this in the U.K. And it's great to see the old DevCon name used again, talk about warm fuzzies.
I'd love to attend this event, and may indeed do so (I have a schedule conflict right now, but am going to see what I can do to).
2006 Hello From NYC
Last week's ColdFusion/Flex seminars in Chicago and Boston went really well - they were well attended, highly interactive, and (judging by the follow-up e-mails I've received) well received too.
I just arrived in New York, and will be presenting the same seminar here tomorrow morning. And then I'm off to San Francisco to do the same again on Wednesday. There are a few slots still available for both the New York and San Francisco events, so if you're interested in a fast paced crash course on building ColdFusion powered Flex applications, please register and drop by.
2006 ColdFusion BOFs At MAX
BOF stands for birds-of-a-feather, and MAX BOFs are informal get together of like minded individuals, a chance to chat, share, learn, network, and more. MAX BOFs fall into two categories:
- Subject specific BOFs have no formal presenters and no set agendas, instead a moderator helps facilitate the discussion between attendees on a specific subject.
- "Meet The Team" BOFs, are a chance for you to get up close and personal with product teams (engineers, product management, support, and more). We seat product team members up front, and you get to ask, tell, compliment, request, and complain as you see fit.
MAX BOFs run in the evenings, after scheduled sessions (and we are very careful to not allow them to conflict the with annual "special event").
The final MAX 2006 BOF schedule has not been posted yet, but some of you have asked about ColdFusion BOFs, and so, yes, they are two (as of now) you should be aware of, one of each type:
- We will be hosting our annual standing-room-only "Meet The ColdFusion Team" BOF. We are bringing quite a selection of CF team members for you to grill, so you won't want to miss this one. This BOF will likely take place Tuesday evening, and I'll be moderating.
- ColdFusion Components (CFCs) are incredible important, which is why we have several MAX sessions dedicated to them. And Ray Camden will once again be moderating a BOF for CFC users to share ideas, experiences, solutions, and more. This BOF will likely take place Wednesday night (before the special event).
There will also be 8 other "Meet The Team" BOFs (including a "Meet The Flex Team") and many other specific subject BOFs. We'll be posting the final list to the MAX site shortly.
2006 Flex And Session State Management
One question that keeps coming up when presenting Flex (especially to those porting existing apps to Flex) is "how do I maintain session state in a Flex application?".
This is an interesting question. Interesting less because of the problem itself, and more because it demonstrates just how webified we have become. So, let's step back a bit ...
Web apps (powered by ColdFusion, ASP, JSP, PHP, or just about anything else) often need to maintain session state. If a user logs in you need to maintain that information so that it persists across requests or else the user will be prompted to login on each and every request, if a user puts items in a shopping cart that cart must be stored within a user session or else the cart will be empty each time the page changes, and so on.
The reason that session state needs to be maintained is because the web is stateless, each request stands on its own two feet, and within a request there is no awareness or knowledge of prior requests. Each time a page is requested a connection to the server is made (often multiple connections) to retrieve the needed elements, and then that connection is broken. This allows HTTP servers to respond to lots of traffic (far more so than if connections were always kept open), but the down side is that web pages are not aware of any activity performed by the same client previously.
To allow data to persist in the stateless web we've grown accustomed to taking advantage of what might be best described as a hack. In web apps, data to be persisted is stored on the server, so that it'll be present on subsequent requests. Of course, this necessitates that there be a way to associate a specific block of data on the server with a specific client, and so web applications (or application servers) create session identifiers which are sent to the client, and which must be sent back to the server on every subsequent request. These identifiers are most frequently stored in cookies or embedded in URL tokens or hidden form fields. But where they are stored is less important then the fact that they are needed, and must be submitted from the client (the web browser) back to the server on every subsequent request or else session state will be lost.
Life was not always this convoluted, things used to be simpler. Desktop applications and client-server apps never had to rely on state being maintained on the server. In those apps the client itself is stateful - it is not a set of loosely coupled scripts sitting on a server, rather it is an actual application running on the client, an application which does not completely reload when items are selected or clicked on. Requests are indeed made back and forth between the client application and the server as needed, but the client is always present and always running. And so preferences can be stored on the client, as could shopping cart contents, as could login details.
In other words, session state management is not preferred behavior at all. Rather, it is an unfortunate side effect of how the web operates, a way to compensate for the statelessness of the web.
Now back to Flex. Flex applications (or more rightly, Flash applications) are usually served by web servers and run inside of web browsers. But Flex applications are functionally a lot more like client-server applications than they are web applications. Like desktop client-server applications, Flex applications are loaded and the remain running as long as the app is in use. Like desktop client-server applications, Flex applications connect to back-ends and request or interact with data as needed. Like desktop client-server applications, Flex applications do not suffer the limitations of running in a too-thin client. And like desktop client-server applications, variables defined once in the app can remain defined, and objects instantiated can remain so (until you kill them, or until the application terminates).
In other words, Flex apps are stateful, much like desktop applications and client-server applications. If you need to remember user preferences, just create a variable or object to store these in and keep it around for the duration of the application execution. If you need to track shopping cart contents, keep these locally within the Flex app until checkout time when they'll be submitted to the server. And so on.
(As a side note, if you need to maintain values across application usage, then you can even store values locally in local shared objects - the Flash Player's equivalent to browser cookies).
So, the answer to the question "how do I maintain session state in a Flex application?" is "as a rule, don't!".
2006 Viewing Flex Generated ActionScript
When Flex compiles MXML it generates ActionScript which is then compiled to generate the final SWF. At the seminar in Boston yesterday, one attendee asked if he could see the MXML generated ActionScript. The answer is yes, there is a compiler flag that does this, and I promised that I'd post it here for him. The flag in question is -keep-generated-actionscript, just add that (one long word with the three hyphens). To use it open your Flex Builder project, right click to open the project Properties, select Flex Compiler, and add -keep-generated-actionscript to the Additional compiler arguments. You'll then see a new project folder named "generated" which will contain the generated .as files.