Monthly Archives: September 2008

Macromedia Site of the Day!


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


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


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 :)

MAX 2008 Speaker Benefits


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


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 :)