About Me

I’m Joan Lafferty (once known as Joan Tan) and I am based out of beautiful San Francisco. I’ve been working at Macromedia/Adobe since Feb. 2003 and most recently, I’ve been working in Adobe’s Web Platform and Authoring Group as a product manager. Before that, I did  QA for the Flash platform and the Flex Framework. Long, long ago, I worked on Macromedia Central and a brief stint on the authoring team. While on Flex, I’ve tested features like Effects, itemRenderers, Runtime CSS, DragManager, the PopUpManager, Menu, MenuBar, the Marshall Plan, FXG, Advanced Constraints, Layout Mirroring and the list goes on. I am now a Quality manager on the Flash runtime.

Before working at Macromedia/Adobe, I worked as a consultant at a start-up called Cybrant which was later bought by Blue Martini Software. I have also worked for AMD (Advanced Micro Devices) as a software engineering writing tools for AutoCAD in the microprocessor packaging group. Would you believe I used VB and LISP to write these tools? This was obviously, many years ago now.

I graduated with an undergraduate degree from Santa Clara University back in 1999.

Outside of work??? Well, I’m a cook, a reader, a gym rat, a paper artist and a lover of walking in the city (San Francisco). I don’t get to do a lot of these things as much as I used to because I’m also a mom.

The postings on this site are my own and don’t necessarily represent the position, views or opinions of Adobe.

27 responses

  1. Thanks for your posts.
    I ran into a problem and a deadline at the same time. Your post saved my behind. That and google which brought me to your page 🙂

  2. Awesome! Glad to hear it!

  3. Joan,

    Nice to see you blogging. You are not contributing to the quality of flex-sdk but also to developer community. Keep it up!

    For who those don’t know Joan, she is a great team-member to work with. Indeed an asset…


  4. Hello Joan,

    I just found your blog via google. I have found a little butterfly 🙂 in flex and posted this under http://bugs.adobe.com. (SDK-14177)

    Is there a official flex-forum, where maybe flex-experts can take a look at my bug. Or how long will it take to handle a bug (posted on bugs.adobe.com)?

    Maybe if you have a minute, you can take a look at my bug-post.

    Thanks in advance!

  5. Hi Marcus,
    I will take a look at the bug. The official forum for questions is the Flex SDK Forum on Adobe Labs. Here is the url: http://www.adobe.com/cfusion/webforums/forum/categories.cfm?forumid=72&catid=651&entercat=y
    The Flex team takes turns reading through the posts here and tries to resolve them. But, you did the best thing in filing the bug! I’ll try to get back to you ASAP. Thanks!

  6. Hi, Joan.

    I was very pleased to find your blog. It’s very exciting for us on the ‘other side of the fence’ to get the kind of insider information you offer us here.
    Thank you so much for having this blog up, I’ll certainly be checking here often.

    Oh, and btw, Flex has been making my day for a few years now, so I guess I owe you a thank-you for that too, huh? 😉

    All the Best,
    Jay in Brazil.

  7. Thanks for leaving a comment, Jay. We’ve got a few other team members who blog as well. You can visit their sites on my “Blogroll” 🙂 Happy Flexing!

  8. Hey Joan,

    Thanks for sharing your Flex comments with us! Since you have experience with the popUpManager, I would be so glad if you could answer a pesky problem I’m having with the popUpWindow and dispatching. If you have time, I would be happy to send the code. Thanks for your consideration; I know we’re all busy these days!!

  9. […] Joan announced yesterday about, A Public Forum For the Flex Community Tomorrow. There has been some good and bad feedback regarding the open source aspects of the Flex SDK and the team has decided to go out into the community to hear your thoughts. You can call in to air your concerns or share ideas. […]

  10. Hi,
    I am sorry for posting this here, but couldnt find a contacts page on this site. I made a reference on my site to one of your blog entries (scrolling to the bottom of a container or textarea”, with full credits to you, of course, but still i would like to ask if you are ok with it. Do contact me about it, please, so you can read it and, hopefully, ok it. 🙂

    1. @pag – no problem. All of the posts on this site are free for sharing.

  11. Thank you. Will keep visiting. Its always an interesting read. 🙂

  12. Suhayb Al-Absi | Reply

    Assalam Alyikom,

    really I admire your great work on flex and flash in adobe, because this idea of making powerfull application on web is very great and will lead to a huge revolution , thesedays I am working with your products to develop my own small-applications in my university studying as a mechanical engineer and produce very magnifiecent tools for engineering , I want to ask you if adobe will improve the drawing api to be supported by hardware acceleration features, i now they add some improvements on flash 10 with respect to this subject , but flash player 10 “i think” is still weak in this area , your subject is very nice and i hope to hear some answers about my questions…

    thank you..
    Suhayb Al-Absi

    1. @Suhayb: I’m sorry to say that upcoming work in the Flash Player is not my expertise area, so, I don’t know the answer to your question. Maybe you can post to forums.adobe.com, select the Flash Player and post there. Thanks. Feel free to post Flex questions here, though. I might be able to answer those.

  13. Hello,

    I am new to the Marshall Plan – I just learned about it yesterday in fact and have been doing all my communication between Flex applications loaded into separate ApplicationDomains via LocalConnection.

    I am having a hard time finding examples. I understand how to exchange data via SWFLoader.content.loaderInfo.sharedEvents.dispatchEvent/addEventListener, but I don’t understand anything beyond that.

    Do you know of or have any Marshall Plan practical examples, particularly those involving Drag and Drop operations?

    1. @Edward: If you are using Flex 3.2 and higher, the Marshall Plan will allow you load a Flex application into a SWFLoader. This child application (if it is on the same domain as the parent) will have the ability to drag and drop between the child and the parent. You shouldn’t have to do any other additional work except load the child swf. Your SWFLoader should not need a new ApplicationDomain or SecurityDomain. We do the work for you.

      If your child swf is coming from a different domain than the parent, we restrict all transfer of data between the child and parent for security purposes. So, you won’t be able to drag and drop between these two applications. If you still want to drag and drop between the two different security sandboxes, you will need to roll your own solution.

      One last thing that the Marshall Plan took care of was versioning. Using the loadForCompatibility property on SWFLoader, you can load a child swf compiled in 3.2 into a SWFLoader in a parent application compiled in 3.3 or Flex 4. If you want to do this cross-version loading, you will need ‘loadForCompatibilty=true’ on your SWFLoader.

      For more information regarding the Marshall Plan, you can look at the Adobe livedocs:

      1. Thank you for this remarkably fast and detailed reply.

        I am building a Portal-type system and as it turns out, my use case will indeed involve Flex applications loading being loaded via SWFLoader from different domains and in playing around with setting the loadForCompatibility property to true, I was indeed encountering errors.

        In my current implementation to this point, I have a class that extends SWFLoader and in its constructor I have:

        // get a reference to the Educator 2 Main Container’s SystemManager
        var _systemManager:ISystemManager = Educator2MainContainer.getInstance().systemManager;

        // set the systemManager property on this SWFLoader subclass to the topLevelSystemManager
        // for the entire application
        this.systemManager = _systemManager.topLevelSystemManager;

        // set the loaderContext property for this SWFLoader subclass to a new LoaderContext
        // instance in a brand new ApplicationDomain but in the current SecurityDomain
        this.loaderContext = new LoaderContext(false,new ApplicationDomain(),SecurityDomain.currentDomain);

        Educator2MainContainer is a Singleton class that extends application that is the “main” Portal container.

        Then I have a handler that fires upon encountering the Event.COMPLETE event once the SWF content has loaded that includes the following statement:

        // this step is necessary to enable to removal of the SWF content via unloadAndStop()

        This seems to accomplish the task for now of loading the Flex applications from different domains and I am able to communicate between them via LocalConnection and via the sharedEvents model.

        It sounds as if I’ll need to create my own model for implementing Drag and Drop here as well as other interactivity between the applications.

        If you have any comments or see any problems with the approach I am taking above I’d appreciate any feedback – particularly as far as if I will have any problems with being able to load apps created in different versions of Flex.

        Thank you.

  14. FYI I solved my problem and it seems to be allowing marshalling even when the Flex 3.3 Container loads a Flex 4 app from a foreign domain. Here is the code I am using:

    _swfLoader = new SWFLoader();
    var context:LoaderContext = new LoaderContext();
    context.securityDomain = SecurityDomain.currentDomain;
    context.applicationDomain = new ApplicationDomain();
    _swfLoader.loaderContext = context;

    _swfLoader.loadForCompatibility = true;

    I had to read some of the posts on bugs.adobe.com to get it working as I needed the Flex 3.3 app to target Flash Player 10.

    Also the article you sent a link to was a huge help.


  15. I am really lost here with all of these platforms and acronymns being thrown around lately… Is AIR still a valid platform? Is Flash CS4 Professional not all inclusive to creating AS based applications? Is Flex going away? What is Catalyst and how does it relate to Flex? Is Flash Builder going to be free to those who already purchased CS4? I really don’t understand any of this and find it very confusing…

    :/ frustrated…

    1. @Junior –
      AIR : Adobe Integrated Runtime. Desktop applications that use Flash and/or HTML and Javascript are built on top of AIR.
      Flash CS4 Pro can create any flash application using Actionscript, however, it doesn’t use Flex.
      Flex SDK: Free open source development kit that is built using Actionscript.
      Flash Builder (previously known as Flex Builder) is the IDE built on top of Eclipse for building Flex Applications. It is also used by many Actionscript professionals (who don’t use Flex) because its the best Actionscript editor out there. Flex is not going away anytime soon.
      Catalyst is a new product that will be geared toward designers. You can download the free public beta to check it out. Unlike Flash Builder, its not focused on code, but, rather a time line and behaviors that designers are more familiar with. The output of Catalyst will be a Flex application, however.

  16. might you elaborate on your comment:

    this.systemManager.addChild(this.swfBridge, ….. ?
    Why must you need this to unload the subapplication ?

    What is the swfBridge parameter ?

  17. Hi,
    your blog is very nice.Please have a look on this bug
    Sachin Dev Tripathi

  18. Just wanted to say thanks for all the great content. Seems like I spend half my day Googling how to do one thing or another in Flex and I’ve ended up here on your blog quite often. If you’re around you should drop by 360|Flex in SJ next month. I’m sure there are many there who would like to meet you. I know I would.


    1. @Dan: I’ll be at 360|Flex in SJ. So, please stop by and say hi. I have no specific responsibilities, so, I’ll just be hanging out and checking out some sessions.

  19. Hi Joan,

    Thanks for all the great stuff on Flex. I have some requirement wherein i need to dynamically build the datagrid with the checkboxes and make the checkboxes enabled or disabled based on certain situations. I tried writing a Renderer for it but dint work. Could you please help me on this

  20. Hi Joan,

    Thanks for all the great content on this site! My company is currently doing an audit (for licenses) on our code base, and I noticed that we use one of your examples in our code (the Generic Background Gradient for Containers snippet). I was wondering what was the licensing for code found on your blog?


    1. @Ginger: Feel free to use any code on my blog. I don’t have any copyright or anything like that. Its just FREE ! 🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: