Ted Patrick - Demos & MAX @ Adobe Systems


Note: This is the personal blog of Ted Patrick. The opinions and statements voiced here are my own.



Macromedia Site of the Day!

DIGG IT!     1 Comments Published Tuesday, September 30, 2008 at 9:09 PM .

I was searching the 2001 Google Index and found this old Macromedia.com site of the day showcase on my old company ishophere.com. It is a really fun look back. We built the Ishophere.com shopping service in Flash 5 using Macromedia Generator in 2000 and we got site of the day on March 14 2001.

"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.

Cool, 97.6% supported on FP5, maybe it is a trend.

Cheers,

Ted :)


Friends Of Ted MAX NA Discount

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.

The code will expire on Oct 10 at 11:59PM PST!


Discount Code: TED888


REGISTER FOR MAX North America.

Cheers,

Ted :)


BUGS.ADOBE.COM --> Flash Player Open Bug Base

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:

1. INSTALL FLASH PLAYER 10 (MAC/WIN/LIN)

2. TEST TEST TEST TEST

3. LOG A BUG HERE

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.

Cheers,

ted :)


Adobe CS3 used on Mac for Microsoft "I am a PC" ads

DIGG IT!     6 Comments Published Friday, September 19, 2008 at 3:59 PM .

Now remember use the right tool for the right job...

http://www.flickr.com/photos/ldiazsantana/2869094754/
http://www.roughlydrafted.com/2008/09/19/microsofts-im-a-pc-ads-created-on-macs/
http://www.microsoft.com/presspass/windows/imageGallery.aspx

Have a good weekend.

Cheers,

Ted :)


Mashup the NFL

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.



Oh yeah that is Flex too...

Cheers,

Ted :)


MAX 2008 Speaker Benefits

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.

See you at MAX 2008!

Regards,

Ted Patrick
MAX Content Lead
Adobe Systems


useWeakReferences:Boolean = false

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... :(

or

this.addEventListener( MouseEvent.CLICK , foo.method );

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.

cheers,

Ted :)


MAX Awards - LAST CALL

DIGG IT!     0 Comments Published Thursday, September 11, 2008 at 3:19 PM .

Tommorrow, Sept 12, is the entry deadline for the MAX 2008 Awards.

If you want to win you have to enter here.

Cheers,

Ted :)


30onMAX - The Frugal Businessman by Phillip Kerman

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.

Ted :)


"Thermo" Sessions at MAX

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


See you at MAX!


Ted :)


"BX" - Initial event list

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+.

surface events:
instance.events.down
instance.events.up
instance.events.over
instance.events.out
instance.events.move
instance.events.wheel
instance.events.drag
instance.events.drop
instance.events.drag_over
instance.events.drag_out
instance.events.click
instance.events.double
instance.events.key
instance.events.key_down
instance.events.key_up
instance.events.focus_in
instance.events.focus_out

system events:

bx.events.activate
bx.events.add
bx.events.stage_add
bx.events.deactivate
bx.events.frame
bx.events.remove
bx.events.stage_remove
bx.events.render
bx.events.tab_children_change
bx.events.tab_enabled_change
bx.events.tab_index_change
bx.events.focus_in
bx.events.focus_out
bx.events.key_focus_change
bx.events.mouse_focus_change
bx.events.key
bx.events.key_down
bx.events.key_up
bx.events.click
bx.events.double
bx.events.down
bx.events.move
bx.events.out
bx.events.over
bx.events.up
bx.events.wheel
bx.events.drag
bx.events.drop
bx.events.drag_over
bx.events.drag_out
bx.events.out
bx.events.over

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.

Cheers,

Ted :)


"BX" - My hobby AS3 framework

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.

cheers,

Ted :)


Did Microsoft just jump the shark?

DIGG IT!     23 Comments Published at 6:38 PM .





cheers,

Ted :)


NFL Kickoff with Adobe Flash Player

DIGG IT!     1 Comments Published at 4:06 PM .

NBC just launched an NFL application for watching football online using Flash Player.

Launch


cheers,

Ted :)


Amazon Video on Demand using Adobe Flash Player

DIGG IT!     3 Comments Published at 6:41 AM .

Amazon launched a new on demand video service using Adobe Flash Player today.



NewTeeVee Article

Go Flash Go!

Ted :)


Internal Alpha build of AIR scores 100/100 on ACID3 Tests

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.



Does your browser, ahem, application container pass?


See you at MAX!


Cheers,

Ted :)


13.1 Miles

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.

Cheers,

Ted :)


MAX NA Early Bird Registration extended til Sept 19!

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.

REGISTRATION

Cheers,

Ted :)


Where to find me:

Ted on Twitter - @AdobeTed
Ted on Adobe Groups
Ted on LinkedIn
Ted on Facebook
Ted at Adobe


Latest

Lists

Links

Jobs

Flex Jobs
city, state, zip

Archives