"It would be hard to imagine doing Ishophere.com without Generator. It rocks!" -
Theodore E. Patrick, project developer, Ishophere
It is really an out of body experience to look back in time like this. It is really great to see how far Flash has come as a platform since those early days. Back then AS1 was hot and __proto__ was a property few dared to mess with.
DIGG IT!
0
Comments Published
Monday, September 29, 2008
at
11:32 AM
.
For the readers of my blog, I got a "Friends Of Ted" discount for Adobe MAX NA 2008. The discount enables full registration at $1295 and is the lowest price for the MAX NA event if you missed Early Bird registration. Please feel free to share the discount code with friends and coworkers as the code is time based.
DIGG IT!
2
Comments Published
Wednesday, September 24, 2008
at
9:55 AM
.
Flash Player has an open bug database so that anyone can log a bug regarding Flash Player 10. So here is what you need to do:
I know it would help the player team a ton if more people tested their content under Flash Player 10 for both compatibility and working with the new features.
So before you post in a blog about some issue with Flash Player, make sure you log a bug. It is impossible to fix issues that do not get reported.
DIGG IT!
1
Comments Published
Thursday, September 18, 2008
at
3:32 PM
.
The Premiere Express team is now mashing up the NFL. Pick your team, grab the latest highlights, and make your own highlight video on nfl.com. It is great to see video editing go online and great to give the power to end users to write the web with premium content.
DIGG IT!
18
Comments Published
Wednesday, September 17, 2008
at
10:59 AM
.
In my role of MAX Content Lead, I manage speakers and session content for MAX North America, Europe, and Japan. As an event we need to provide benefits to our speakers who contribute to MAX and make the event great. Today a respected speaker blogged about our seemingly inconsistent policy, so I wanted to clear the air and explain. Lets start with the benefits for speakers at MAX 2008:
1. MAX Conference Pass and Meals 2. Hotel during MAX 3. Session recording, and video syndication. (500x larger audience) 4. Gift for Speakers
Last year I obtained an additional $20K to spend on MAX 2007 and I chose to spend money to get speakers who were traveling a great distance to MAX. We got Geoff (AU), Aral (UK), and several other “Inspire Speakers” to MAX but I was very discrete about the travel arrangements. It is actually my fault that things were inconsistent last year but I wanted MAX to be a better event and I thought that helping speakers traveling great distances was the right thing to do. This year we decided to make the speaker benefits consistent, so we ended the inconsistent and exclusive policy of assisting with some speakers travel.
In talking with speakers, the primary benefit of speaking at MAX is exposure and this year we are underway with plans to greatly expand the reach of MAX online. I have been working with a small team to record all sessions (400+ hours) at MAX worldwide and we will be releasing the content for free online over time (immediately for attendees) in a new video portal currently in development. MAX as a venue globally this year will reach 10,000 attendees live in person but there are potentially 10,000,000 designers and developers who would benefit greatly with access to the content. As a benefit for those speaking at MAX and to expand the reach of Adobe tools and technologies, we will be recording MAX NA, Europe, and Japan and other events like 360Flex and AJAX Experience.
Overall I feel very strongly that we have improved speaker benefits year over year but I can understand other perspectives on the matter. I really want to make MAX a better event for all attendees and expand the reach of our events for everyone's benefit. MAX is an investment for Adobe and choosing where and how to best invest year over year is really hard. If we chose to do one thing it is often at the expense of another budget-wise. This year we are focused on making the benefits consistent for every speaker and expanding the event viewership. Ideally these changes will benefit the designer/developer community and the entire ecosystem of customers leveraging Adobe tools and technologies.
If you have any feedback regarding speaker benefits or our policy towards speakers, I am always listening at ted@adobe.com.
DIGG IT!
21
Comments Published
Monday, September 15, 2008
at
8:42 PM
.
This is the last argument in the addEventListener method and it just might be one of the most important. Whenever you subscribe to events you have the option to set useWeakReferences to false (the default) or to true (unfortunately not the default). What seems incredible to me is the fact that this is the last argument and that it defaults to false.
When useWeakReferences is false the following happens:
THE CLASS INSTANCE OF THE SUBSCRIBED METHOD WILL NOT GARBAGE COLLECT. Even if the instance is destroyed by lightening and crushed by your car, it will remain alive stuck within the addEventListener inner workings til you unsubscribe to the listener. Worse is that you most likely lost the instance that you subscribed and that is required to use removeEventListener successfully. The instance will remain in memory and the method will keep getting called, uggghhhhhhh.
A better way...
When useWeakReferences is true the following happens:
THE CLASS INSTANCE OF THE SUBSCRIBED METHOD WILL GARBAGE COLLECT, AHHHHHHH. Even if the instance is destroyed by lightening and crushed by your car, it will die and the method subscribed will never be called again.
Garbage collection is a very tricky business. The Flash Player VM is constantly looking for objects without a strong reference to them to collect. The real dilemma is that strong references are very easy to create.
All it takes is one:
var a = foo;
or
var b = foo.method; // yes closures come with an instance reference... :(
and foo will never garbage collect until 'a' and 'b' are removed as references and removeEventListener is called. With complex apps there can be a ton of events and you need to be super careful with references. References are the devil in the details.
I am knee deep in event code for BX and I am being extra careful to make sure that events are easier to work with. Be careful with references, they can make a real mess if you are not careful.
DIGG IT!
9
Comments Published
Wednesday, September 10, 2008
at
8:11 AM
.
A detailed look into efficiency practices of conference organizers including those at Adobe MAX.
Nice work Phillip and yes we do lose money every year!
Post a video and get into the Adobe MAX Keynote! I am also working on getting 3 MAX passes for the best videos submitted.
DIGG IT!
2
Comments Published
Tuesday, September 09, 2008
at
7:32 AM
.
If you haven't taken a walk through the MAX NA sessions scheduler yet, you should. There are quite a few sessions on "Thermo" and Flex 4. MAX will be the big unveiling of the "Thermo" product including the real product name, "Thermo" is just a codename.
Here is a list of the "Thermo" sessions at MAX NA.
Adobe XD on Interactive Experience Design Join the Adobe XD team for a deep dive into the science and art of interactive experience design and its integration with traditional development workflows. We will explore how the evolution of interactive experiences is driving consequent evolution in the design patterns that direct user interaction. Speakers: Ethan Eismann Tuesday, November 18, 1:30 pm - 2:30 pm
Designer Best Practices with Flex Learn how to use familiar design tools in Adobe Creative Suite to integrate visually rich interfaces with unique, custom components created by Flex Builder developers. Apply design, motion, and interactivity to reusable components while collaborating smoothly with Flex developers to create stunning rich Internet applications. Speakers: Aaron Pedersen, James Polanco Tuesday, November 18, 4:30 pm - 5:30 pm
Developer Best Practices with Flex Learn how Flex developers can benefit from using Thermo, Adobe's upcoming interactive authoring tool for designers (first previewed at MAX 2007). We'll discuss how Thermo can help Flex developers build and extend user interface components for designers to integrate with Creative Suite to create visually compelling RIA experiences. This session will cover best practices, coding conventions, and processes to maximize collaborative workflows with designers for Flex development. Speakers: James Polanco, Aaron Pedersen Tuesday, November 18, 9:00 am - 10:00 am
Flex Project Workflows Learn the end-to-end process for designing and developing a complete Flex based consumer website. The session explores the detailed process used for coordinating development and design, the pitfalls that are often encountered, and how to avoid such pitfalls. Speakers: Doug Winnie Tuesday, November 18, 3:00 pm - 4:00 pm
Flex Workflows with Flash Professional Learn how to integrate the expressive design capabilities in Flash Professional with Flex development to create visually compelling rich Internet applications. Join us in this deep dive on Flash and Flex to find out how Flash Professional users can build content that is easily integrated into Flex applications, and to explore best practices for designing Flex applications that interact with Flash Professional content. Maximize your designer and developer collaboration workflows with Flash Professional and Flex. Speakers: Serge Jespers Tuesday, November 18, 3:00 pm - 4:00 pm
Introduction to Thermo Thermo, Adobe's upcoming interactive authoring tool for designers (first previewed at MAX 2007), is poised to change how developers and designers collaborate on building rich Internet applications. This session will give you an introduction to Thermo and provide insight on the next generation of Flex authoring tools. Speakers: Ryan Stewart Monday, November 17, 3:30 pm - 4:30 pm
Looking Ahead to the Next Version of Flex Hear one of the Flex architects discuss the future direction of Flex and its related products. We'll discuss exciting updates being planned that will affect new and existing developers. Speakers: Ely Greenfield Monday, November 17, 11:30 am - 12:30 pm
Next-Generation Flex Skinning See how skins and behaviors can be created with the next version of Flex. We'll explain how to design skins and how to change basic functionality separate from appearance. We'll also explore how component development works across Adobe's products for designers and developers. Speakers: Marc Dennert Tuesday, November 18, 4:30 pm - 5:30 pm
Sketching Interactivity See a variety of tutorials and examples that visually explain innovative ways for you to map, plan, and organize your RIA or Adobe AIR application. Attendees will walk away with hands-on examples from real-world RIAs and AIR based applications. Speakers: Ethan Eismann Monday, November 17, 5:00 pm - 6:00 pm
Wireframing Experiences and Applications Learn how to plan and build a user interface "wireframe" before creating designs and code for interactive experiences and applications. Iterate and collaborate with designers and developers using your wireframe to build a solid understanding of your project design and specification. Speakers: Peter Flynn Wednesday, November 19, 9:30 am - 10:30 am
Interesting a Lab for "Thermo" too.... This one will be popular!
Hands-on with Thermo: Creating Interactive Designs Learn how to use your existing design skills and Creative Suite tools to build rich Internet applications for the Flex framework. Designers will learn how to work collaboratively with their developer partners to build compelling Flex experiences. This session will include a discussion about Thermo, Adobe's upcoming interactive authoring tool for designers (first previewed at MAX 2007). Speakers: Narciso Jaramillo, Serge Jespers Wednesday, November 19, 11:00 am - 12:30 pm Wednesday, November 19, 4:00 pm - 5:30 pm
DIGG IT!
0
Comments Published
Saturday, September 06, 2008
at
2:59 PM
.
I put together a detailed list of initially supported events. These map to the events available in Flash Player 9+.
I will be adding several other higher level events to capture more detailed interactions. Examples of the higher level events would be "drag", "drop", "drag_over", "drag_out". With better higher level events, much more complex interactions are possible.
Also due to the naming conflict with BRIX-CMS, I have opted for a codename of "BX". All good.
DIGG IT!
12
Comments Published
Thursday, September 04, 2008
at
8:42 PM
.
Now that I have entered the world of management I have been feeling a bit lost without a project to code on as a hobby. For the past 2 years at Adobe I have been thinking about a simple light framework for building apps using XML/AS3. Whether it turns into anything or just a big pile of experiments, who knows. The plan is to dedicate evening time to "BX" and blog about my finding regardless of where they go. The first stop for "BX" is looking at events and rethinking them.
"BX":Events ------------------ About 6 months ago I ran some tests with the event model in FP9 and did a little proof on the scalability of various event models. In FP9 DOM level 2 events were added and these events provide the benefit of propagating across the display list from root to target and back. Now events are powerful things but if you get to many of them in your app or framework things can become hard to manage and ideally you want to have as few events subscribed as possible. So in "BX" I want to implement events differently and provide a bit more flexibility and allow name based events and system level events like so:
//name based events import brix.Surface class MyButton extends Surface{ function MyButton():void { this.events.click = this.upClick; //event wiring } function upClick( event:Event ){ trace('upClick');} }
or //system level events bx.events.click.push( myInstance.upClick ); bx.events.doubleclick.push( myInstance.upClick );
Notice addEventListener is never used. If you compiled this to a SWF and clicked on this an instance it would fire the click event. The "BX" framework simply handles dispathing the events directly, no muss or fuss. So then I got to thinking about bubbling and whether it was really necessary. I know I survived 6 years without it and looking back at the majority of my FX apps I never really leveraged bubbling or capture. I am going to leave it out for now, maybe a good use case will hit the project and I will add it in later.
So how is this possible, well the base class using "BX" has several event listeners that catch events when they are dispatched at the root in capture phase. The trick is that they are immediately canceled and use the event object passed to dispatch an event directly. Basically this short circuits the system and passes the event direct to the target. Where the player might waste time walking the display list, "BX" simply skips to the target. What I like is that regardless of how deeply nested the target it, the event always hits its target first without any walking or time wasted. I say this with a word of caution, this is a hack and although it speeds things up and simplifies how events work, the loss of DOM level 2 behavior a one way trip (but I could reverse that later). Instead of tracking who is subscribed to what, I simply change the names of the events and am able to rewire everything quickly with simple property changes.
I am seeing an issue with needing to fire 1+n things with a single event but this seems easy to solve as well. The event dispatcher here is simply calling a function and passing a single argument. So at runtime I can detect if it is an Array/Object and do something different like walk the Array dispatching events or simply call it if it is a function instance. This also allows you to chain events or dispatch events to a parent. With closure support in as3 I can set events to functions in other display objects and things just work without delegation.
There are some issues in terms of organizing events. I want to organize events into an object path for named events like so: myInstance.events.click = this.myClick
The nice thing here is the ability to pass an entire events tree preconfigured. You might have 3 states within a component where events need to be shifted around and by simply swapping out the 'events' object you get sets of events to change all at once.
Well that is a long post for a single evening. I will keep blogging about "BX" and my progress. It should be a fun exploration into the unknown. Next time some code to munch on.
DIGG IT!
6
Comments Published
Wednesday, September 03, 2008
at
12:09 PM
.
I have been playing with an internal build of AIR targeting a release later this year. The new release has some great features under the hood for HTML/JS developers. Given the Webkit browser engine was used in AIR, we are refreshing it in the next AIR release. The updated engine even in early internal alpha passed the ACID 3 HTML/CSS tests with a 100/100 score.
DIGG IT!
5
Comments Published
Tuesday, September 02, 2008
at
12:00 PM
.
On Sunday, Linda (fiancee) and I ran 13.1 miles at the Disney 1/2 marathon in Anaheim. It was a really great weekend and after light training for 2 months we were prepared. We finished in 2:43:32 hours, pretty good enough for my first half marathon, eh. The course wound through DisneyLand out to the Ducks and Angels stadium and back.
Completing this was a really great experience. If you are looking for a challenge this is a great way to spend some quality time, get fit, and push your limits.
DIGG IT!
0
Comments Published
at
11:47 AM
.
The MAX team met this morning and we decided to extend the Early Bird registration til Sept 19. Make sure to register and get a discount before the new deadline.