The Summer of Flash Page on My Site

I just wanted to point folks to the Summer of Flash Podcast page on my blog. I thought it might be good to have a place on my site where the podcast that features Garth Braithwaite, Stacy Mulcahy, Zach Stepek, and myself droning on and on about the Flash Platform. The "info" links are to the InsideRIA site pages that Garth put together for us, but I wanted to put all the information in one place so that I can refer people to it.

I totally enjoy recording this podcast. It is so much fun and honestly it's almost therapeutic for me. I don't work in a work site environment where there are a lot of Flash and Flex developers. In fact, I am the only one in the office who does that type of work, so getting to "hang out" online with the Summer of Flash crew is pretty healthy.

I want to thank the people at O'Reilly who have been so supportive. This was their idea and I feel lucky to have been asked to come along.

Oh, boy. Did I just say that hanging out with Stacy was healthy? What was I thinking?

Comments (0) | Print | Send | del.icio.us | Digg It! | Linking Blogs
1707 Views

Summer of Flash Podcast Episdode 1

I am pleased to announce that the first episode of O'Reilly's InsideRIA Summer of Flash podcast has been released.

In this episode, Garth, Stacy, Zach and I discuss the recently released Flash Catalyst Public Beta and what we like and dislike about the product.

We're continuing to record episodes and have lined up a few people from the Flash Platform to waterboard... er, grill for infor... er, interview about all things Flash.

If you have any thoughts, ideas, questions or requests, feel free to leave them in the comments for my entry here or at the entry on the InsideRIA site.

Summer of Flash Podcast

 

Comments (0) | Print | Send | del.icio.us | Digg It! | Linking Blogs
1622 Views

Flex and Localization: Setting the default new file encoding in Flex Builder

[Note: I recently presented at 360Flex San Jose on the topic of localization (L10N). During that session, several questions were asked that I did not have the answers to. Over the next few months I will be attempting to answer all of those questions and more.]

In Flex, resource bundles are used to provide localization features — that is, the ability for your application to provide the user with a different language and regional preference — to your applications. All Flex applications start up with US English as the base language here in the United States of America. Even Flex Builder's default compiler options includes "-locale en_US" making it possible for you to begin localizing your application.

The "gotcha" that hit me the first time I created a resource bundle for localization in a Flex application was the file encoding. The default file encoding setting in Flex Builder (Eclipse) is ISO-8859-1, which if you use is ok for English, but if you choose to copy this file and use it for someone to translate your English text to, say, Spanish it could cause you some problems. For instance, I had a main.properties file that I was translating line by line with Google Translate (I know, lame) from English to Spanish. When I had completed the process and saved the new file, boy was I disappointed. All the special characters that Spanish uses were replaced by triangles with question marks. Converting that ISO-8859-1 file to UTF-8 with the tools at hand made things worse. My choice at the time was to start over from scratch making certain that my English file was UTF-8 and then all my future copies would also be UTF-8.

And, of course, when I told this sad story during my presentation at 360Flex San Jose an attendee asked "Isn't there a preference setting for that inside Flex Builder?" My response at the time was, "I'm sure there is but I have not found it." But I have now!

[More]

Comments (6) | Print | Send | del.icio.us | Digg It! | Linking Blogs
3653 Views

Flex Builder: Vote For Templates! (Retracting My "Snippets" Recommendation)

Earlier this week I wrote a paragraph about the merits of adding the Snippets view into Flex Builder. I would like to retract that statement and apologize to anyone who followed my advice.

You see, my experience with snippet-like features was with the Flash Development Tool (FDT) plug-in for Eclipse. FDT does not function like the Snippets that I was recommended. In fact, the plug-in I recommended is basically unusable and could be considered harmful.

With FDT, as I recall, you would create your templates in a basic text field then name and save them. When you needed that "snippet" of text, you'd type the name and hit a specific key combination and the "snippet" would appear, replacing the name that you typed. If your "snippet" had variables, dynamically places in the "snippet" to type text, your cursor would appear immediately in that space and as you typed, every place that that variable appeared would update. Ultimately, it came down to you taking the time to create the right kinds of templates for you to really reduce your coding time and effort. Pretty nice, huh? Check out the JSEclipse templates. They use this method of creating snippets.

I assumed that Snippets, at least the plug-in that I was re-recommending via another blog's post, operated in the same manner. But no, woefully not. It's a usablility nightmare. DO NOT USE IT. I'd give you more details but it would be a waste of time — it's that bad.

So, here I go again: let's bring true coding templates to Flex Builder! It's issue FB-11842 in the Flex Bug and Issue Management System (log in required, but worth the time). Please vote for this feature. It may actually save you a week-end or two a year. Think about that.

 

Comments (4) | Print | Send | del.icio.us | Digg It! | Linking Blogs
2917 Views

Vote for Flex Builder Source Formatting (or Pedro)

I was reading a blog entry on Flex Builder Enhancements at InsideRIA last night and thought that I would bump the entry and my comment up to the surface for more exposure. RJ Owen's article laments features that are available from the Java Developer Kit and not a part of the Eclipse project itself, thus not immediately available for Flex Builder users. He cites useful features like "TODO", Snippets, Mylyn integration, and a fix to the Open Resource menu bug (something I had never run into). The article also links to where you can acquire these enhancements. All of these features are worthy of mentioning to my team here at Roundbox Global.

Snippets was one of t ne features that I was used to using in Flash Development Tool (FDT) back when I was doing Flash development on a regular basis. This feature allows developers to use templates to help speed up common coding tasks. If you want to be able to have code created for you via Snippets, you first create the template, then in your code type the string associated with the template and "bam" the code is there. All you need to do then is tab through the template variables you set up and enter the data you need. OK, so, it isn't that simple, but once you set it up and get it into your workflow it's powerful.

The comments for the article featured a few people fired up about the lack of source formatting. I mention the lack of this feature privately a while back and could never raise anyone's temperature. But someone else had thought enough about the feature to have entered a bug into the Flex Bug and Issue Management System over at Adobe. The issue, FB-8297, deserves the attention of anyone who wants source formatting in Flex Builder. At this time, the issue has 22 votes but I now feel certain that more people are interested than that.

Although FB-8297 is listed as a "Minor Enhancement", I am certain that Adobe's engineers will look at this issue as more than minor because it isn't just formatting ActionScript code similar to how Java code is structured; this task will require ActionScript, MXML and ActionScript+MXML all to be formatted by Flex Builder, something that is more than what the JDK is able to do. In the issue's comments, I've added some further enhancements to the issue — like making sure the "x" comes before "y" in the MXML which is something that drives me nuts during code reviews.

If you want this feature, vote for it.

 

Comments (1) | Print | Send | del.icio.us | Digg It! | Linking Blogs
2648 Views

360Flex Atlanta + Adobe = Special Event

Yeah, if you live here in Atlanta you should already be attending this event because you're attending 360Flex Atlanta right? It's a great conference focused on your favorite RIA platform? All for only $480.00 (and you get to sleep in your own bed and miss out on those tiny airline seats with no leg room).

Well, if you can't gnaw off the business-hours ankle chain your employer welded to your desk, then here's your chance to mingle with people just like you! 360Flex has invited members of the Atlanta design and development community to a little get-together being held at Stats Sports Bar not far from where 360Flex Atlanta is being held. Yeah, that does mean adult beverages. Yummy.

So come out and see what's up. But you need to RSVP. Get your details here, here or here, but RSVP.

 

Comments (0) | Print | Send | del.icio.us | Digg It! | Linking Blogs
1752 Views

Last Night's Flex and AIR Pre-release Tour in Atlanta

I thoroughly enjoyed last night's Flex and AIR Pre-release Tour event here in Atlanta. There were a ton of people at the event and I believe that everyone had a great time. It was exceptionally great to see some faces that I had not seen in years (more than ten years in a couple of cases). As always, getting to see everyone was great.

Special thanks to John Mason, president of the AFFUG and to Adobe for setting up everything.

The thing about Ben Forta, the presenter at last night's event, is that you don't want the event to end. Ben keeps relating relevant information to you about whatever the event's topic happens to be. Ben is a wealth of information — that is, the information that he can reveal at an event, not that people didn't try to get release dates out of him — and I know that whenever Ben comes to town that it's a must see event.

I am truly excited about Flex 3. I've been using Flex Builder 3 full time since the first public release and have been enjoying the experience. I do not have a specific favorite Flex 3 feature, really. I just love all of the efficiencies they have put into Flex Builder; things like smoothing out the designer/developer workflow (while we wait for "Thermo"), code refactoring, and a few wizards that I have found surprisingly useful. I think the feature that will have the most impact on Flex developers in the long run will be what Adobe calls Persistent Framework Caching. That is the feature that allows for reduction of application size by making the Flex runtime library available separately for download. If your user has visited another Web application that uses Flex 3, they will not have to download the Flex library as it will be called from the browser's cache. Adobe says that this can reduce the download size by up to 500k.

As for AIR, I've really enjoyed using it. I have been lucky enough to have already used AIR in client work (yes, before AIR has been released — I know, it's crazy). The SQLite engine is great. Being able to read and write files on the system, associate file extensions with your AIR application, and being able to use native windows and the system tray or dock are all great features. Sometimes they remind me of the work I did years ago using Flash MX and Screenweaver and/or SWF Studio Pro (which are still very valuable given some of AIR's security restrictions).

All in all, last night was a great way to re-energize me for the upcoming final release of Flex 3and AIR.

 

Comments (0) | Print | Send | del.icio.us | Digg It! | Linking Blogs
1602 Views

Atanta Stop for the Flex and AIR Pre-release Tour with Adobe's Ben Forta

UPDATED: 2008 - 01 - 18

Flex 3 and AIR are getting close to launch and in preparation, Ben Forta from the Adobe Flex/AIR product team is traveling to select cities to show off the great new features and help prepare us for this exciting launch.

Flex 3 is a feature-packed release, adding new UI components like the advanced datagrid and improved CSS capabilities; powerful tooling additions like refactoring; and extensive testing tools including memory and performance profiling, plus the addition of the automated testing framework to Flex Builder.

Adobe AIR is game-changing in so many ways, extending rich applications to the desktop, enabling access to the local file system, system tray, notifications and much more. Now you can write desktop applications using the same skills that you've been already using to create great web apps including both Flex and AJAX.

Don't miss out on the opportunity to see and hear about this highly anticipated release of Flex 3 and AIR during this special pre-release tour. Plus, in addition to giving away some one of a kind Flex/AIR branded schwag, we will also be raffling off a copy of Flex Builder 3 Professional (pending availability) and a full commercial copy of CS3 Web Premium at this event!

Event Information:

This event is on January 22, 2008 from 6:30 PM - 9:00 PM

Official Event Web Site

IMPORTANT: THE LOCATION HAS BEEN CHANGED!

South Terrace at Perimeter
115 Perimeter Center Pl NE
Atlanta, GA 30346
Driving Directions
RSVP

 

Comments (0) | Print | Send | del.icio.us | Digg It! | Linking Blogs
1694 Views

The Cairngorm Microarchitecture's Future and Cairngorm Code Generators

In my morning review of the MXNA I saw a couple of interesting posts related to the Cairngorm Miroarchitecture.

First off, if you didn't already know, Cairngorm 2.2.1 has been released. From what I understand from the Adobe Consulting team, Cairngorm 2.2.1 is now stable and will remain at this version for a while. And while you are looking at the new version, take a look at the fact that Adobe has split Cairgorm into two different flavors: Cairngorm and Cairngorm Enterprise. Basically, if you are going to be using LiveCycle Data Services (formerly Flex Data Services) you will want to use Cairngorm Enterprise, otherwise you should use Cairngrom that comes in a SWC library with a much smaller file size. It is my understanding that Adobe has also been pulling some of the framework code that is only needed for using LCDS out of the Flex Framework and adding it to the SWC for LCDS. Getting better organized is an awesome thing to do. Find out more about the other things Adobe is doing with the Flex Framework here.

Adobe Consulting's Steven Webster posted "So What's Happening Next with Cairngorm" where he makes light of everyone asking about how to pronounce "Cairngorm". (Cairngorm is the name of a mountain range in Steven Webster's homeland Scotland and is pronounced "cayre-n-gorm" (except that it sounds a whole lot better when it is said by a Scotsman). Steven also mentions that there is a lot of thinking going on about "the kind of architectures that evolve as you begin to leverage LiveCycle Data Services" (in this instance, leverage is pronounced "lee ver age" ;-), which Peter Martin, also with Adobe Consulting, presented at last week's MAX 2007. So that makes it obvious where the focus for Cairngorm is headed.

Later in the same post Steven mentions that the Adobe Consulting team has been looking at some Eclipse plug-ins to increase developers productivity when using Cairngorm. I am so totally for that it isn't even funny. Steven says it is coming, so I'll have to be patient.

Speaking of Wizards and code generation, Tim Buntel is asking about Wizards in relation to Flex Builder in his latest post. Hop by there to give him your opinion.

While I am waiting, I thought that I should mention two other projects focused on Cairngorm that we have been keeping an eye on: 1) Eric Feminella has the Cairngen, a Cairngorm code generator that allows for a quick set-up of the code for a Flex project that uses Cairngorm, and 2) Tyler Beck's Cairngorm Creator that also generates the start-up code but in a Flex application. Pretty neat.

 

Update: (2007-10-19): I wanted to update this post with more information that was provided by Ramsey in the comments (thanks for reading Ramsey) and wanted to bump them up to the post in case people are not reading the comments. To quote Ramsey:

Just thought I'd toss these 2 other tools for Cairngorm into the mix to see if anyone can get some help from them:
Cairngorm Flex Assistant - http://cairngormflex.sourceforge.net/
AS3VOGenerator - http://blog.everythingflex.com/category/as3vogenerator/

 

Comments (3) | Print | Send | del.icio.us | Digg It! | Linking Blogs
4047 Views

10 Questions About FlexUnit and Cairngorm

Since I have been struggling with FlexUnit in my "free time" over the past few weeks I was anticipating Wednesday night's AFFUG meeting featuring John Mason presenting Unit Testing and Test Driven Development (TDD) for Flex & ActionScript 3.0. John gave us a good overview of where unit testing came from and how it is applied to Flex and Actionscript. He also showed an example application that worked, created a couple of tests for it which promptly failed and then fixed the code.

[Leif's Note: If you want to skip the introduction to this entry, feel free to skip down to "1. Who is using FlexUnit?"]

What is FlexUnit, Anyway?

FlexUnit, which is based upon JUnit, is a framework that allows for unit testing with Flex applications. Wikipedia says that unit testing is "a procedure used to validate that individual units of source code are working properly." Ideally, a developer would create a unit test that tests a feature before beginning to program the feature. This process empowers the developer to fully understand the feature they have been assigned to create and to plan for all the potential problems that could occur with the feature. The end result is that the project would have a unit test to verify the feature is working and that all the unit tests could be run every time a build is created to verify that all features work. Unit testing is a fundamental part of test-driven development and continuous integration, concepts that I will not be discussing today but needed to mention.

So, What is Your Beef with FlexUnit?

The way John Mason presented it, FlexUnit seems very cut-and-dried simple until you consider two things: 1) Actionscript is/can be asynchronous and 2) we use the Cairngorm framework at Roundbox Global when we create applications in Flex. Also consider that it is likely that these two factors would be considered too advanced to be covered at any user group meeting that I could attend, may be too complex for a 55 minute session at MAX, and not many people are even talking about FlexUnit much less Cairngorm. Is there some vast conspiracy to keep this kind of information away from me?

Why is FlexUnit so Important?

FlexUnit is important because rich Internet applications (RIA) are complex. As a developer, I believe that it is my responsibility whenever possible to make certain that my code works well — not only should functions meet their requirements, but I should investigate that feature so that my code has as few bugs as possible, and that my code does not break other parts of the application. With the complexity of a modern RIA and the the larger teams needed to create these applications, this ideal is difficult to achieve. Developers need to utilize any tools available to reduce the stress of quality assurance (QA) departments (as well as the stress between development departments and QA departments) by eliminating defects in development. Unit testing is one of those tools.

With the size of the applications being built and the teams required to build them today, no company can afford to have seemingly endless cycles of our QA department finding things that developers should have thought of or found before committing their code. Developers must take responsibility for their work! They can not give excuses like "it wasn't in the wireframes", "I didn't think about that", "it's not my fault my code broke their code", or the classic "it works great on my machine" without impacting harshly on the whole team's deliverables, deadlines and work schedules. Ultimately, we all want to have a 40 hour work week.

What we are trying to do at Roundbox Global is establish a best practice of creating unit tests to establish a build's viability before handing the build off to QA for testing. Passing these unit tests should reduce the chance of QA receiving a build that, after hours of testing, is found to be invalid because of some flaw. We are also hoping to add some automated testing to our process in the near future as well.

So here are my questions to anyone who wishes to answer. Yes, there are more than ten questions. Consider them as ten groups of questions. Jump into the comments to let me know any facts or opinions that may help me and any readers out there. Hopefully I will be able to update this post with more details before the end of the month.

1. Who is using FlexUnit?

At Wednesday's event I got the impression that there were not that many developers already using FlexUnit. Are developers out in the wild using FlexUnit? Or are developers not doing any unit testing at all for Flex projects? I've heard that the folks at Universal Mind are using FlexUnit. Who else? And are they using FlexUnit with their over-all unit testing plan or just with Flex? And are they using continuous integration?

2. Who is Using FlexUnit with Cairngorm?

John asked the audience at Wednesday's event if they used the Cairngorm framework. Only a tiny minority raised their hands. You may already know how I feel about Cairngorm — it blows my mind when I hear about large projects that were not created using the Cairngorm framework. So, if a minority of people use Cairngorm and a minority of Cairngorm users use FlexUnit, where does that leave us? Considering that sites like FlexExamples have one or two entries daily, I'd call it a communication void.

3. Must I Change FlexUnit to Use Cairngorm with FlexUnit?

In my searches for FlexUnit information online I ran into several blog posts about using FlexUnit and Cairngorm. Each of the entries seem sincere, although somewhat incomplete, these post seem to say one thing: FlexUnit is not ready for Cairngorm. Must we make changes to the FlexUnit to get the asynchronous functionality necessary with Actionscript and Cairngorm? Could there be a good way to get the changes needed committed to the repository? Or are there issues with adding these modifications to FlexUnit?

4. Where are the example applications (using Cairngorm or not)?

Using FlexUnit is probably "no big duh" to a seasoned Java developer. But as John showed us Wednesday night, FlexUnit makes a lot of assumptions of users. For instance, did you know that test method names need to start with the word "test"? It's not just a naming convention, as we were shown last night, it's a requirement. So, for those of us who aren't seasoned Java developers with years of unit testing experience, where the heck are our FlexUnit examples? It would be nice to have some easy and complex examples of unit testing applied to something like the Flex Store (or the Flex Cairngorm Store, or the Flex Cairngorm ColdFusion Store). I'd do it myself (and may yet) but I am still getting my head around using FlexUnit.

Leif's note: I posted a few locations of FlexUnit examples in another blog post here.

5. What do we test with FlexUnit?

So what exactly do developers test with FlexUnit? I believe that we can completely test our connections to the back-end fairly well with FlexUnit — we can test that proper data is returned from the server using different types of data. But, without getting into an automated testing discussion, isn't there something more we can test? For instance, with Cairngorm, we can test Delegates. But shouldn't we take it a step further and test the Event, Command, and Delegate sequence? (I like to call that the ECD chain, by the way) Sure, making certain that the Delegate is working is important, but if you are using Cairngorm correctly you would never call a Delegate without invoking an entire ECD chain. And are developers testing for results of Delegates, or are they testing

6. What is the best way to use setUp and tearDown with Cairngorm?

As you may know, it is common best practice to use the setUp and tearDown methods for every test. When I use Cairngorm and I want to test a specific Delegate or ECD chain, often there are items that need to be set in the model for the Command to call the Delegate properly. Would it be all right for me to directly set things in my ModelLocator, i.e. without using an Event like these items would normally be set in the application? Same question goes for the tearDown.

7. What else are other developers using with FlexUnit?

Are there other "gotcha's" with FlexUnit that I don't know about? Seriously, no one is talking much about FlexUnit and the docs are minimal. Are developers modifying FlexUnit to work around problems or bugs? Are developers successfully using FlexUnit with Cruise Control?

8. Why is FlexUnit stuck at version .85?

Besides the changes to allow for the use of the Cairngorm framework, what functionality is missing from FlexUnit that has it stuck on version .85? What kind of effort will it take to get FlexUnit to a rock-solid 1.0 version? I realize that most of the owners of FlexUnit are either busy working on Flex 3, AIR or consulting for Adobe. But since I do not see a road map, I have no idea what is missing and how developers may assist them to reach this necessary goal. And while we are at it, when the heck is Cairngorm going to get the same open source treatment as FlexUnit? I love what you did to simplify Cairngorm in version 2.2!

9. What is next for FlexUnit?

Could there be more modifications necessary in FlexUnit to make it more compatible with the asynchronous nature of Actionscript? Are there new features in JUnit that need to be added to FlexUnit? Again, what is our roadmap?

10. Does Flex 3 take advantage of FlexUnit or Cairngorm?

With the upcoming release of Flex 3, will there be any new features around creating projects using Cairngorm or creating unit tests with FlexUnit? Flex Builder Wizards like Cairngen? Wouldn't it be great to point a Flex Builder Wizard at a folder of Delegates and have simple unit tests created for you? Mmmmm, goodness.

 

Comments (6) | Print | Send | del.icio.us | Digg It! | Linking Blogs
5681 Views

More Entries