Archive for April, 2009

27
Apr

Problem

In many large projects Flex applications are broken into sub-components to help manage size, loading, content updates, etc. The are multiple ways of breaking a project into sub-components such as using  Flex modules,  building sub-Flex applications that are loaded by the parent application, creating external ActionScript 3 only projects or they may be developed using Flash Professional.   The reason for this architectural decision is based on the nature of the project at hand and the experience of the team building the application.

In large projects, breaking the application into testable parts might be wise.  It also can allow for distributed teams participating in the development process to work together.  Also, if a project is animation and graphical rich, Flash Professional is likely the creation tool for those parts of the application.  To integrate these sub-components into the Flex application, they are most likely loaded via SWFLoaders.  Once loaded into the application domain, the assets can be controlled by the main application.  This is where problems can begin.

Since these sub-application and assets were tested outside of the main application conflict issues do not arise until all of the final pieces are integrated together.  One such problem is the dreaded runtime error “Property [property name] not found on [Class] and there is no default value.

Recently I was asked to debug a client application (we did not initially develop this app), that was throwing this error intermittently.  I struggled for about two hours before I found a pattern in the application and sub-application code base.  The pattern was a common package naming structure.  Each sub-application had the same package structure and some of its classes were named the same. However, the same named classes had a different set of public methods (API).  Now, these same named classes were internal to the sub-application (not declared on the parent app) but this error was still being thrown intermittently at runtime.

Here is an example of the two matching packages with different APIs:

Project A

Project A

Project B

Project B

The problem was, when a  sub-application was loaded into the application, the previous sup-application was not fully unloaded and it’s BaseComponet class was being retrieved from memory instead of the new BaseComponent that was just loaded. At this point the new app is expecting a certain API yet it’s not there, causing the error I outlined above.  This only happens in certain cases (I can’t explicitly define the load order, it just happened when rapidly clicking around loading and unloading applications). But, if the main application also has a BaseComponent declared under the same package structure, this problem will be visible every time. The sub-application’s version is ignored and the error above will happen the first time the sub-application is loaded because the parent instance will always be used.

Main Application

Main Application

Solution

The solution is simple.  Make sure each project has a unique package structure or define a standard Interface that is used across the entire application and sub-applications. To solve this problem in an existing application is just add the project name after “developmentarc” making the structure unique per application.

Project A

Project A

Project B

Project B

Main Application

Main Application

The hard part about the solution is communication. On large teams, this is a topic that needs to be tackled during the planning or architecture phase of a project, not post-development.  Try coming up with a standard package pattern that all members can follow. This can be included with Coding Standards or with other development team guidelines as a project kicks off.   The longer a team waits to tackle collaboration issues like this, the harder it is to change. Refactoring a 100+ projects can be very time consuming and at the end of a project, developers have more important issues to resolve other than a large scale refactor.

Category : ActionScript3 | Flex | knowledge center | news | Blog
2
Apr

Most of the conferences we have attended tend to be along the 2-3 days long, SXSWi is an marathon conference with 5 full days of sessions, panels, keynotes and of course parties; lots of parties. This makes for a long, but exciting week/weekend.

  • The first session of the day, we both attended “Cloud Computing: Defining the Undefinable” which had Kevin Gibbs (Tech Lead and Manager for Google App Engine), Yousef Khalidi (Distinguished Engineer at Microsoft) and Werner Vogels (CTO of Amazon).  They all started the presentation talking about how each company provides cloud services (Google App Engine, Microsoft Azure, and Amazon Web Services) and how each of these services are similar and different from each other.  They delved into security topics, different kinds of clouds such as public and private, and how cloud computing is changing how services are provided to customers. An interesting note is that Amazon is itself a client of its own services and hosts all its sites using AWS. By far, our favorite panelist was Yousef, who clearly was on point, listened to the questions and answered directly and honestly.  Werner was also an amazing member but you could see he had to sprinkle a bit of marketing speak in, being the CTO and all.  Kevin seemed to be just a PR rep who ignored the questions and just talked about how cool App Engine is and how it will be even cooler in the future.  Overall the panel was good and covered the services provided by the big three player.
  • Next up was “Designers and Developers: Can’t We All Just Get Along”.  This was another excellent panel, where they had both developers and designers talk about how they work together and what works and does not work.  Interestingly, they had the panel made up of actual team pairs.  They had Chris Lea (developer/architect at Media Temple and Virb) and Virb’s lead designer Ryan Sims, they had Digg’s lead architect Joe Stump and Creative Director Daniel Burka, finally they had Andy Beaumont (UX Dir, Flutter + Wow) and Rob Corradi (Creative Dir, NeonState) who have worked together in the past.  This was a good idea because the pairs could use real world examples to discuss the challenges and successes of working as a creative/development team.  Our biggest issue with the panel was that they had way, way too experienced people who have spent a cararee excelling in their field.  This was especially true of the designers, since all three of them are expert HTML/CSS developers and UX designers.  This created a problem because when some questions about why designers or developers don’t work well with each other the panelist answered with blank stares or “you should get fire them.”  Ideally, we 100% agree, but the reality is that not all designers or developers are in same league as this panel.  None the less, it was a great and interesting conversation.
  • Aaron jumped over and caught the second half of Tuesday’s keynote conversation between Guy Kawasaki and Chris Anderson.  Chris has a new book “Free: The Past and Future of a Radical Price.“.  The talk was basically about this topic.  Chris discussed his theory of free any why things will be eventually become free and that companies and people will have to offer free services or products to stay competitive.  Why pay when you can get it for free.  He sites the theory that if marginal costs become zero, the price will drop to zero.  This is the exact reason why his book will be free in PDF format. For him to produce the PDF doesn’t cost him anything, so it should be free. He’ll make his money from hard back and speaking engagements.  The book is a selling point, not his cash cow.
  • During the Free session, James headed over to catch a Film panel with Richard Linklater (Detour Filmproduction) and Todd Haynes (Killer Films).
  • For the last day, James took on a lighter load so that he could meet up with his friend Niki once he drove into town for the music part of the conference and due to the fact that he still had another four days of SXSW to attend to (recaps of SXSW music are poster at James’ Awesomecon blog).
  • The Last session of SXSW 2009 for Aaron was “Using GPS & Location to Enhance Social Networking” which featured Tom Marchioro (Garmin), Daniel Gilmartin (ULocate), Thor Johnson (GyPSii), Martin May (Brightkite),  John Adams (Twitter), Bryan Jones (Mobile Blasts).  The panel discussed the how new this emerging market is for location based services.  The topics ranged from how would companies of this type make money. This topic concluded with Mr. Adamns listing a few revenue options for Twitter, such as enterprise types of accounts with more security, exclusiveness and possible certified accounts for celeberties.  The other intresting conversation was around a standard API so that all these great services could communicate with one another.  They announced a new working group revolving around Interoperability called OSLO which has the backing of currently 10+ companies.  One new service that is very interesting is Google’s new Location based service called Latitude, which allows other serivces to share the user’s location.  Another service that we were not aware of was Yahoo’s product FireEagle
Category : news | sxsw | Blog
2
Apr

Day four brought us beautiful weather for the first time at SXSW so far.  The sun was out and made our adventure to the BBQ Crash Course that much better.

  • To start the day off, Aaron hit up Finance 2.0 to discover solutions that help the computer nerd save/conserve money in this turbulent economy.  The panel was guided by Stessa Cohen of Gartner whose analyizes the space of social finance.  The panel itself consisted of small business finance blogger Nichelle Stephens (Keeping Nickels), Murali Subbarao CEO of Billeo Inc, Aaron Patzer CEO/Founder of Mint.com, and Michael Ferrari Co-founder of SmartyPig.  The main theme out of the session was to find solutions that meet your individual needs while freeing up time in our busy lives.Mint.com offers a quick and easy solution to gain insight into your personal finance. Where does all that money go? Find out at Mint.com. A note from Mint, their service is read-only, so even if someone gains access to your Mint.com site, they can not drain your accounts.

    SmartyPig offers a saving account alternative solution that allows you to visualize your goals of your savings. If you really want that shiny red bike, open a savings account at SmartyPig and share your goal with your family and friends. They can see your progress and SmartyPig even allows them to contribute toward your goal. Forget that sweater for Christmas, grandma can now add that 10 dollars toward your new bike. SmartyPig offers one of the highest savings rate on the market.

    Billeo offers a smart wallet that helps pay your bills online at the company website, through a private wallet that is attached to your browser (plug-in).  Billeo also allows for faster shopping through many of it’s affiliates.  Auto form filling, including credit cards, speeds you through the checkout process.  Access reports and analysis your shopping habits and your monthly bills.  If you need to make a rush payment, Billeo provides bill pay directly at the company’s website, allowing for those late payments to be processed ASAP without the extra fee most banks charge.

    And lastly Nichelle offers a blog, Keeping Nickels, that provides tips on how to save, invest for personal finance. A great blog, for the money conscious  geek.

  • James headed to “Beyond Aggregation — Finding the Web’s best content”.  The panelist included Marshall Kirkpatrick (VP Content Dev, ReadWriteWeb), Louis Gray (Author/Publisher, louisgray.com), Gabe Rivera (Founder/CEO, Techmeme), Melanie Baker (Community Mgr, PostRank.com), Micah Baldwin (VP Business Dev, Lijit Networks Inc).  The panel focused on how they use tools, search engines, grease monkey scripts, Del.icio.us and other social media services to track down new and interesting content.  One of the most interesting ways of tracking down new content that Marshall Kirkpatrick talked about was a process they are using at ReadWriteWeb.  They are currently going back through their top news stories, they then use Del.ic.ious to find out what users linked to the source content before ReadWriteWeb posted it. They then build a list of users that continue to find interesting data before ReadWriteWeb does and then subscribe to the user’s Del.icio.us feed.  It is a very interesting and smart use of mixed data sources to find leaders in the news aggregation field.
  • Next up Aaron joined the Browser Wars (part III), which is a reoccurring panel at SXSW where the web browser gods battled each other and defended or dodged a series of fireballs thrown at them by panel moderator Arun Raganathan (now of Mozilla).  The panel was interesting from the standpoint of seeing first hand how each of these individuals mix with one another. Remember these are the same folks that collaborate to define the web specification such as ECMA-Script, and HTML 5.  It’s fair to say there was animosity but they played nice and no one got hurt. The foe of the panel was Chris Wilson “the IE guy” who is the main player for Microsoft in the specification groups.  Arun fired many of the  fireballs his way (they were not nice).  I was impressed with Chris and how he came off. I almost walked out of the session with IE as my default browser.A question that stuck with me was one pointed at Darin Fisher of Google, which asked why Chrome picked Webkit as the rendering engine. Darin’s answer was intriguing, they first looked and intended to use Gecko, but soon saw the superior rendering capabilities that Webkit provided. He also said Gecko is an application platform, so it’s large, bloated and does way more things than Chrome was going to do. Panel Members:
    Arun Ranganathan - Mozilla
    Darin Fisher - Google
    Chris Wilson - Web Platform Architect
    Charles McCathieNevile - Chief Standards Office, Opera Software
    Brendan Eich (CTO Mozilla Foundation and Creator of JavaScript)

    Other blogs with more content:
    http://www.appscout.com/2008/03/sxsw_browser_wars_become_brows.php

    Podcast

  • While Aaron was at Browser Wars, James headed over to “Start-up Management: OMG I have to manage people?”.  It was hosted by two of the founders of Catster/Dogster: Steven Reading and John Vars.  They both have been part of multiple startups and they talked about the process of hiring new people (hire as slow as possible) and letting people go (fire as fast as you can).  They talked about how to handle layoffs, encouraging employees, and working as a small team that grows.  It was run in a town hall fashion, where most of the topics were based on the audience’s question.  It was a very good panel and James enjoyed hearing how other small companies are grown and managed.
  • For both of us, the most anticipated event of the week was the BBQ Crash Course at Emo’s.  Emo’s brought together 7 of the best BBQ restaurants in Texas for an all you can eat BBQ ho-down  The name of the game was to unplug for a few minutes and eat as much as you can. We both we eager to participate and we quickly grabbed a couple beers and worked our way around the backyard, piling our plates with pork ribs from Artz Rib House, the most tender brisket either of us ever had from Snow’s (Aaron hopes his Father-in-law isn’t reading this), and amazing BBQ taco by Ranch 616.   While enjoying more than enough food, we got the chance to meet SXSW’s CTO Scott Wilcox.  Scott looked a little stressed and confirmed it when he told us he was on his second week of 14 hour days, dealing with the normal technical challenges anyone faces with trying to put on three conferences in one, with over 15,000 attendees (music, film, interactive), and over 1800 bands.  Scott, after chatting with us for a few minutes, quickly ran off to tackle another technical issue, no rest for the weary.  Big props to Scott for putting on such a great conference and for surviving 14 years of it! One of the nicest stories we heard was from Snow’s BBQ which was recently named the best Brisket in Texas. Before being crowned, Snow’s BBQ was a weekend hobby that produced a few 100 pounds of various BBQ for sale to locals on Saturday morning.  After the best brisket recognition, Snow’s still opens only on Saturdays, and yet consistently sells out of 3x (they dug 2 extra pits) of everything within two hours of opening. Most of the customer base is now tourists seeking out the best BBQ, with only a few locals. However, when a family member sees a local standing in the long lines, they quickly pull them out of line and take their order immediately. It’s good to see community is not sacrificed when success has been found. And for those that can’t travel down to Lexington, TX for a weekend, they ship all over the country, only on Tuesdays though. Below is a list of the rest of great BBQ joints and their website. Visit any of them and you will not be disappointed.  UPDATE: James is currently waiting for his first order from Snow’s.
    Snow’s - http://www.snowsbbq.com/
    Louie Mueller Barbecue - http://www.louiemuellerbarbecue.com/
    Ranch 616 - http://theranch616.com/
    The Country Line - http://www.countyline.com/
    Inman’s Ranch House BBQ - http://www.bbqtours.com/2000/2000inmans.htm
    Artz Rib House - http://www.artzribhouse.com/
  • Wirefames  for the Wicked - was presented by some of the best information architects in the industry; Nick Finck (Blue Flavor), Donna Spencer (Maadmod), and Michael Angeles (Traction Software). The group walked through the various types of wireframes; reference zones, low/high fidelity, storyboards, standalone, specifications.   All the panelist had good things to say about each form and what the censunsus was is that the detail of the wireframe depends on the project, but a wireframe is very important step in the project lifecycle to help convey information architecture to a client (way before you spend all your time on design).  It’s also a contract that helps find and define the features of your project.  Choose the one that best serves you and your project.   A few programs recommend for wireframing were Visio (Donna’s tool), OmniGraffle (Michael has a great set of stencils that the panel recommended), and Axure (Aaron’s favorite) but it’s Windows only.  Here is a link to the slide on slide share. If you are a information architect or are engaged during this stage of the process we recommend you take a quick peek.
  • While Aaron was checking out Wireframes, James headed over to catch Robert Rodriuez and Henry Selick talk about how they are using 3D in their movies.  They were not talking about 3D animation, but actual 3D projection in the theater.  Robert was the first director to bring 3D back into the theaters with his Spy Kids 3D movie.  Since then, we have seen a huge resurgence of 3D movies such as Henry Selick’s Coraline.  One of the coolest aspects of the panel was when Henry talked about how they shot Coraline in 3D.  The typical process is to have two cameras hooked to a single lens with a special mirror splitter to offset the images.  Yet, this was not possible because Coraline was all miniatures shot in stop-motion.  To achieve the 3D effect, take a single frame with the camera, move the camera to the 3D offset and take another frame.  These two frames where then overlaid digitally for the 3D projection.  Brilliant!
  • The most amusing and mind boggling session of the week was Bruce Sterling’s talk. We sprinted as fast as we could to get prime seats and it was well worth it.  Joining us front and center was our good friend Larry Gonzales (Eye-Fi).  Bruce is renowned for putting on a great presentation.  His insights into the tech world are deep, rich, spot-on and very very amusing.  He referred to us as the group formally known as the audience and delved into how technology such as the iPhone and Twitter have the potential to destroy the previous definition of interaction.  He teased (rightly so) that most of the audience was Twittering away as he presented.  He questioned if people where truly paying attention when they twittered.  To point this out he joking said some very rude/crude statements to jest with us about who would hear the comment correctly and who would just twitter “omg did you hear what Bruce said!” without full context.  Bruce then proceeded to open up bags of chips and eat them while he talked.  We have lost formality, if the audience doesn’t pay attention why should he, as the speaker, be civil?  It would be incorrect to state that Bruce is opposed to Social Media and the changes being wrought on society, but he is concerned that we may be losing things of value for the sake of progress.  Is all progress good?  Should we just open our arms and accept all that changes?  This is an issue that we in technology should keep in the back of our minds as we blindly adopt the newest and greatest thing.  Just because something is old or “outdated” does not mean it has lost its value.  It was truly a great presentation about the state of social media.
Category : news | sxsw | Blog

Bad Behavior has blocked 514 access attempts in the last 7 days.