Hi All, I am going to be heading up from San Diego to attend the FlashCamp @ Adobe’s headquarters tomorrow (Friday, May 29th). If you are going to be attending, let me know and we can try and meet up. Hope to see some of you there!
For the last few projects, we have found ourselves at DevelopmentArc creating more custom ActionScript based Flex components then MXML based components. One of the challenges with this kind of development in the Flex Framework is understanding where and when to handle component configuration. When should we set styles? How do we update children components? How can I improve performance and scalability of my application? Trying to define the best answers for these questions have been rolling around in our heads for a while, and we are not the only people asking them.
We felt that the best way to approach solving this issue was to first understand the Flex Framework lifecycle. The lifecyle provides four main stages: creation, growth, maturity and destruction. Adobe has talked about this since the launch Flex but not all developers are familiar with the actual process. Even if you are familiar with the lifecycle, understanding the intricacies and what is available to you as a developer is not well documented or easily digestible. We are seeing a movement of Flex experts researching the topic and trying to provide better insight into the overall process. At Flex|360, RJ Owen and Brad Umbaugh did entire presentation on the subject. At Adobe MAX, there were multiple sessions that covered these concepts.
Yet, even with this kind of coverage, the topic is so broad and deep that many of these sessions have to skim over some of the more minuet details for brevity’s sake. Our own curiosity had been peaked and we decided to pull back the covers of the Flex SDK and take a look for ourselves. Over the last two months we have spent hundreds of hours working on a white-paper (research, discussion, writing and editing) that explores the Flex Component and Application lifecycle. We are proud to announce the release of new DevelopmentArc™ Article section and the white-paper “Understanding the Adobe Flex® 3 Component and Framework Lifecycle“.
This article is a living document, one that we hope to grow and expand over time. We are always looking for feedback and questions about the content of the article. As you read the document and you find yourself with a question or idea to improve upon let us know! We hope that reading this article is as enlightening to you as it was to us…
Hey all, once again I am at SXSW. This year I am doing the whole conference: 11 days / 10 nights of intense panels, films and music. I am not going to be doing much blogging via Vivisecting Media this round, so tune into my company blog at DevelopmentArc for SXSW Interactive updates and head over to my newest site, AWESOMECON.com for music updates from Niki and I.
This year will be a lot less intensive night by night updates on the blog post side, its just too much work to come back to the hotel room and write up such in-depth reports. I will be taking notes, trying to post some recap details and will probably add more in-depth posts later on to augment the recaps. Thanks to the over the top Twitter usage here at SXSWi, I have finally been pushed over the tipping point and I now use twitter. I plan to use twitter from my iPhone as a way to update peeps with what is going on for the music aspect. So tune in at @jamespolanco for up to the moment thoughts and show notes.
More coming sooooooon!
The newest release of DevelopmentArc Core is now available on the Google Code Repository. This release is the first release of the library under the new Core moniker. Previously the library was released under the Vivisecting Media Code Library, which has been now been deprecated since Core is publicly available. All updates and new features will be added to the Core system moving forward.
From the code depot you can download a compiled SWC or a ZIP file that contains all the source and ASDoc generated files. We have posted the ADoc files on-line so that you can easily access them if you do not download them. Currently, we have 219 unit tests running and passing for the library, which are all available from the source tree if you wish to access them.
The current release of Core contains the following functionality. We have marked new and updated features that have been changed from the Vivisecting Media Library to the new Core Library:
- Task Management System new! – The Task system is a priority queuing system that enables an application to execute specific bundles of business and/or server logic in a specific order leveraging priority and the ability to override previously queued bundles. These bundles are encapsulated inside of Task objects, which can be then bundled Task Group objects. Tasks and task groups have the ability to take priority over other Tasks or Task Groups inside of the queue, as well as replace existing tasks in the queue based on a set of overrides an individual task can define.
- Command Action Delegation System (CAD) new! – Provides a pre-built solution for implementing the Command Pattern within ActionScript/Flex/AIR applications. The command / action system allows for commands to be dispatched to the ActionDelegate which then executes any assigned functionality via an Action.
- Selection Management System updated! – The Selection Management system enables any kind of object to become selectable and treated as part of a Selection group. In most cases this would be a UI Component that should behave similarly to a radio button group, where only one item can be selected at one time. This system also allows for multi-select and deselection of items that are members of a selection group.
- Local Connection Management updated! – The Local Connection manager is a helper class to quickly establish and manage local connection instances within an application. The Local Connection manager also supports the ability to maintain strong class types when the data object is passed over the local connection instance.
- Event Broker Utility – The Event Broker is a utility class that acts as a router for specified events. The Event Broker is a single point of contact that any object can broadcast to or subscribe to. This functionality is intended to be the focal point for implementing the mediator pattern within the application.
- Instance Factory Utility new! – The Instance Factory allows for the ability to make sure there is only one instance of a specified class within the instance of the factory. This is useful for using in Locators that handle generating a new instance on the first request but then making sure the original instance of the requested item is returned on subsequent requests.
- Singleton Factory Utility new! – Similar to the Instance Factory, the Singleton Factory verifies that there is only one instance of a requested item, but instead of being limited to the instance of the factory, the Singleton Factory verifies there is only one instance of the requested item in the entire application.
- Adjustable Date Utility new! – The adjustable date wraps a Flash Date object and provides a series of helper methods to adjust time and dates quickly and easily. Example uses included the ability to adjust a date by a specific number of days forward or backwards, making sure that the number of days in the month and Leap Years are respected during the adjustment.
- Queue Data Structures updated! – The Queue system allows for items to be stored in either a LIFO or FIFO based queue order or in a priority queue order and then retrieved from the data structure depending on how the items are ordered.
- Hash Table Data Structure – The Hash Table is key/value that allows any value or object to be used as a reference key to another value or object item. The Hash Table is similar to Flex’s ArrayCollection in how items can be referenced but unlike the collection, this is ActionScript independent, is not intended for data pagination and is focused on performance for larger data sets.
- Browser Location Utility new! – Utility class used to query the current url in the application. The class provides static properties for each piece of the application url.
In my previous post, I introduced the “Future of Flex Builder” session I attended at Adobe MAX North America, how the Flex Builder team is approaching new feature development and looked at the two main Design Fidelity features they are adding to Flex Builder.
In this post I will be delving deeper into the new/updated feature set that focuses on the aspect of the “Test & Tune” workflow. Test & tune is the day-to-day development workflow that we are all used to: Navigating our projects, creating new code, documenting, re-factoring, debugging and testing. A lot of these features may seem small but they provide a lot of power and can drastically improve development time and ease frustration that we experience during the development cycle.
One of the more interesting sessions at MAX this year was the Future of Flex Builder. The session was presented by Rob Brambley III, Tim Buntel, Tom Lane, David Zuckerman of the Flex Builder team. Tim Buntel, product manager for Flex Builder, started the session by first talking about how most users approach Flex Builder and how the development team is focusing on new features to make these user approaches easier. From Adobe’s research, most Flex Builder users approach using Flex Builder from two main entry points:
- Design Fidelity / UI Creation
- Data / Service Management
Design Fidelity / UI creation is focused around a Flex developer that is responsible for bringing in the initial design for that application and making it a reality. This process includes layout, skinning, styling, animation and effects creation with the core goal of meeting the required design fidelity for the final product. The second entry point is for the developer that is responsible for the Data / Services management aspect of the application. This process includes creating data services, data model creation and loading management. To be clear, these two separate approaches do not mean they are handled by different developers, this is just a way at looking at how developers approach their Flex development duties.
Because there are the two main entry points for most developers, the Flex Builder team is first working on new and improved features that focus on these two areas. There is also a general initiative to work on improving general day-to-day use in Flex Builder, re-factoring management and debugging of Flex applications (they called this process “Test & Tune”). This general initiative covers both the design and the data aspect of application development.
I am going to be breaking this article into three separate posts. This first post will cover the workflow and new features added to Flex Builder for the Design Fidelity aspect of development. Post two will cover the overall day-to-day use features that are being updated/added and how the Flex Builder team is improving the “Test & Tune” workflow. The third post will look at the data services features that are being added to the Flex Builder 4 (Gumbo). One thing to note is that this session was a mini sneak-peek of Flex Builder, and there is a chance (albeit very small) that some of the features discussed in the post may not see the light of day (or change drastically). Also, all the screen caps in the posts are from the MAX Preview release, so there is always a chance that the UI and functionality shown will change. Okay, let’s get to it!
Well, I made it back from Milan without a hitch… except I caught a nasty cold on the way back, but that seems to be par for the course now-a-days. Getting to Milan was a different story entirely, though. It started off with an 18 hour delay leaving SFO for Heathrow. Yes, 18 hours. Apparently the plane had technical issues in London and didn’t get in the air for almost 8 hours after it was supposed to. Because of this delay, our plane could not leave till noon the next day due to airport hours in London. If we took off once the plane landed at SFO, as intended, we would have arrived when the airport was closed so we had to wait. Luckily we found out about the delay while at home and this meant I could at least sleep in my own bed while we waited for our new flight time.
We finally got loaded and on the runway at 12:30pm the next day but we then got an announcement that a passenger on the plane didn’t have enough medicine to make the flight and the doctors felt it was a life threatening risk, so we had to roll back to the stand and have the passenger exit. This caused another hour delay while the passenger was deplaned. Due to this new delay we missed our 7:50am flight from Heathrow to Milan, and we had to take the 9:50am. Luckily we made that one and finally got into Milan around 1pm Monday afternoon. We were supposed to get in at 9pm Sunday evening. Joy.
Just to add salt to the wound, British Airways managed to lose Aaron’s luggage. Of course we had to wait for all the luggage to come out before we figured this out and then Aaron had to go report it missing. It ended up that it never made it out of Heathrow. Of course both Ashley (Aaron’s wife) and my luggage made it so how they only lost his is mind boggling. The “wait for the luggage” delay made us miss our train from Malpensa (airport) to Codorna (train station in Milan) and we had to wait another 40 minutes for the next train. At this point we just started laughing and sat back and got our first espresso from the airport bar.
We got to our hotel around 4pm and by that point we had no interest in exploring the city. We were hungry but all the restaurants are closed from about 3pm till 7:30pm or so. The typical meal structure for a Milanese is to go to a bar after work, grab a light snack and coffee and then eat dinner around 9pm. We were so exhausted by that time we just decided head over to the conference, register, get our passes, head back to the hotel to call it a night and get room service for dinner. There was no way I could make it past 7pm after a trip like that.
The next day, Aaron and I got up early, ate breakfast at the amazing breakfast buffet the hotel put on (seriously one of the best I have had) and then headed over for our first 9am session. The session went very well, it was standing room only (150+ people) and the audience was very receptive to what we had to say. Aaron was told by multiple people it was the best session they had had so far. By this point, we were totally tech/conference burnt out (North America MAX was intense) so we decided to bail on the conference till our next session at 2:45pm and meet up with Aaron’s wife Ashley. We caught the Metro down to the Duomo, scoped it our and then wandered the central part of town for a few hours. We got a nice lunch and found a fantastic street market that sold all kinds of goods and foods.
We then headed back for our 2:45 session which went over well, but as usual we had a bit of push back from a few designers (I still owe you all a full post on our session, more on this to come I promise!). Outside of some heated discussions with a few designers, the session went very well and we headed back out for more exploring and dinner. That night we met up with Ryan Stewart, Mark Anders, Jim Corbett, Doug Winnie, Ted Patrick and many many other Adobe employees (and fellow hangers-on) for the classic after sessions hotel bar drink-a-thon. We had some killer conversations and Enrique Duvos introduced us to the local drink, the Negroni. Its like a martini but they add Campari to give it some kick and flavor. Doug said it tasted like a combination of shag carpet and wheatgrass, but Aaron and I loved them. Thank you Enrique for showing us the way… next time you are in town we will take you to the Redwood room for Negronis on us.
The next morning we hit the Naviglio Grande Canals and then headed back to MAX to join Doug Winnie for his “Flex Project Workflows” session. Doug built his session around a project that we all worked on together. Aaron and I chimed in on points that we learned over the lifespan of the project and talked about how Flex Gumbo and Catalyst would change the way we operate in the future. After the session Doug was all done with his responsibilities for MAX and we all headed to the Brea district for dinner.
Doug headed back to the States the next morning and Aaron, Ashley and I headed off to a city tour that we had booked. We got to tour the Castello Sforzesco, we had a chance to see “The Last Supper” by Leonardo Da Vinci, we got a peek inside the Teatro alla Scala and we toured inside the Duomo. It was a great guided tour and I snapped a ton of pics of the city. We then grabbed some amazing pizza for lunch, walked the shopping district and drank Pina Coladas at Cova (I ordered Panna Cotta, the waiter heard Pina Colada, sigh). We headed back to the hotel for a nap and then went back to the Brea district for Indian food at the Curry House. We were kind of burnt out on Pizza and Pasta by that time.
Aaron and Ashley headed out the next morning to meet some friends in Switzerland (damn I am jealous) and Heidi Williams (of the Flex Builder team, and my old boss) and I happened to have the same flight so we headed off to the airport to go home. The flight home was uneventful (minus the cold) and I am back home trying to recover from jetlag. Nothing like getting up at 4am wide awake. I have posted a few choice pics from the trip that covers our time in Milan and MAX Europe and I can’t wait for our next adventure!
Its the day before Thanksgiving, Turkey’s eve I guess, the most glorious of American gluttony-days, uh I mean holidays. A wonderful day full of family, football and of course food. Oh the food! I am only being semi-facetious, I really do love the three F’s of the holiday. This year, the travel is crazy. I am flying down to Southern California to spend the holiday with my fiancée’s family and then I fly back home Friday night to pack and then Aaron and I head out to Milan for the Adobe MAX EU the next evening.
Aaron and I have a TON of notes and thoughts that are being worked on, all thanks to MAX North America. I am sure we will have even more coming from MAX EU. We will both be working on a ton of new posts over the coming few weeks and at the same time we are in the process of getting our DevelopmentArc site proper (don’t forget client work and other assorted projects we are working on too!). More to come on that later. So, for those of you in/from the States that celebrate T-day, enjoy! For those of you that don’t, no worries, you can laugh at us as we Americans stumble around in a triptiphane induced food coma.
Oh, and for those of you that read this blog for Flex/Flash/Technology info, read up on my newest obsession while I am away: Degrafa. Degrafa is short for “Declarative Graphics Framework” and it is a set of Classes that enable you to create simple to complex graphical content using MXML instead of having to write a bunch of ActionScript graphics calls. But that is just the tip of the iceberg, you can actually make component skins (states and all!) using their framework. Its rare for me to get this excited about a new framework, I am usually super hesitant about jumping in, but after a demo at the MAX Birds of a Feather, and now getting my hands dirty in it, I am super impressed. Good work guys!
The session featured Justin Cone of Motionographer.com and he talked about what Motion Graphics are, how they are evolving in the industry and being adopted by advertising and branding. The session started with an introduction about what Motion Graphics are and how they are very hard to define. They are made up of three main areas:
- Visual Effects
- Graphic design
Justin feels that if the 20th century was the century of graphic design, the 21st century is the century of motion graphics. Everything around us is moving. Go to an airport and you will see LCD screens with motion everywhere. In Dubi, they are building the Podium building which has a 33 story LCD screen. Look at Time square, it is all motion… There is a reason for this, if the ad stands still, it is lost in the motion, it can not stand out. Adoption of motion in thw world is due to the fact that the eye tracks movement, and having static advertising does not attract the eye.
Motion Graphics in projects often attempted to be bolted on at the end of a cycle instead of instead of starting as the core of the project. Adobe is now considering motion as the heart of their new marketing strategy because motion is playing such an important part in attracting attention. Motion Graphics can help create and define a brand.
Examples And Points To Focus On
- Girl Effect – Man vs. Magnet: Contrast can be very important. Black white orange, yet powerful. The text itself is moving but without the motion the impact is lost. The pacing of the text breaks the old standard of showing text by moving changing it quickly, yet we don’t lose the message due to the contrast and pacing.
- Sundance – Write Light: shows content by using light to create motion. The contrast between light and dark… it can be text or in this case people. It can be synthetic or live action. In this case the video uses live action as graphics.
- Peter Saville – Optical Illusions: Simple animation with dark and light yet creates a powerful motion. The key to this is the dimension of time and how the fourth dimension changes content
- Simon Robsin – Taking Liberties: The example uses text and layout to make points of the audio narration.
- Telavisa – Des Madrugadus: The ability to set tone and pacing can be achieved using type, fonts and color.
- Flicker Mood: Rhythm and repetition can strengthen a statement.
- Shake Out: The video was essentially a powerpoint video (bullet points) yet used motion graphics to hit home the points.
- Cost Of War – Good Magazine: The video is based around numbers and how much the Iraq war is costing us. Elements of the video are used over and over to tie in each point and repeat the message. Both of these examples could be boring presentations, driving home points yet the message is stronger by leveraging motion.
Continuity / Discontinuity
- Rob Chu – The Ronin: The piece uses sound and editing to blend the imagery together and make a statement.
- Freelances Union – Life Long Friendship Society: All done with still images in place of live action, yet the statement still works to the humor and proper stitching/editing.
2.5D – Flat Images in 3D space & 3D
- Rob Chu – Black Day: The idea of taking still images that are familiar and then sliced into layers and the placed on a z order depth then animated creates a rich sense of motion and spatial experience.
- Shilo – Burma Emergency: Using matte painting mixed with true 3D which creates a huge sense of depth without having to create a huge complex 3D space.
The second day keynote at MAX is always a more laid back, humors look at what Adobe is doing. This year’s focus is much more on designer / developer workflow and enabling much stronger cross-application and cross-discipline integration. I took notes on the fly and I will post the highlights here and the full notes after the jump.
- Flash Catalyst’s (codenamed Thermo) ability to directly import PSD, AI, PNG files, maintain their complete layout structure and content yet the output is a Flex App. Aaron and I will blog a lot more about Catalyst, its current feature set for the public preview and how we see it changing workflows within a project and the community.
- Flash Alchemy, an Adobe Lab technology that translates C/C++ code into ActionScript 3. Alchemy demo’s included the classic Quake port example shown last year, a NES ROM emulator, OGG file reading / playback and encryption functionality using standard open source libraries.
RMFTP – A new video / audio protocol within Flash Player 10 that supports the ability to enable peer-to-peer communication without the requirement of FLash Media Server as a single point of contact / distribution.