Adobe has made the announcement that AIR developers will be able to create applications for Android in late 2010! This is exciting news for AIR developers, since it opens up the mobile devices arena. AIR 2.0 will have support for multi-touch gestures, GPS, accelerometer and screen layout.
Check out the AIR team blog to see their post on the subject.
Personally, I got the Motorola Droid for Christmas, and have been loving it. I’m quite excited to have the opportunity to develop applications for my phone using technologies I already love and know so well.
It’s a new year and that means a great excuse to make some site improvements. I feel like theflexguy.com has been a moving target ever since it’s conception. I was originally hosting my site on GoDaddy. I was fairly pleased, although they gave me a dirty feeling (have you seen their commercials?). Here’s some of the changes I made for the new year, and why.
Hosting is now with DreamHost – I have some friends who use DreamHost and were very pleased. I must say, after dealing with them for a while now, I am quite pleased too. Their customer service is outstanding, they are generous with hosting and bandwidth and it’s all so very easy to use. If you decide to check them out, you can use this promo code THEFLEXGUY_PROMO to get $30 off a year of hosting and a free domain registration, courtesy of me – you’re welcome.
Comment system is easier to use now – I have been struggling with commenting since I use Joomla, and it’s not designed out of the box to have comments. I’m now using JComments to provide a simple interface that doesn’t require any registration.
Pretty URLs – this is something I have wanted for a long time but never could get to work right on GoDaddy. I finally have it working on DreamHost. Hopefully, it’ll be a lot easier to link to blog posts since the urls are a little more meaningful.
I’m hoping to continue to improve the site so that users in the blogosphere can use it easier.
Recently, I was racking my brain trying to solve a problem I had with a DataGrid not refreshing data. It took me a while to find the reason, so to help someone else with the same problem, I decided to write about it.
Background
I had an ArrayCollection of custom classes called Build. Those Build classes each had an ArrayCollection another custom class, Item. Item is simply a class with properties key and value. The collection of Items is called metadata. In the Build, I created a getter to go grab the Item from it’s metadata with the key “STATUS”. This way, I can have the datagrid display the properties of each Build as well as the value associated with the metadata Item that has a key of STATUS. Make sense?
Problem
I’d receive a collection of Build objects back from a web service I was polling routinely. After the first call, I’d compare Build id’s and just update the existing Build with the updated information. The problem was, the DataGrid wasn’t showing the updates to the STATUS even though I could introspect with the debugger and see that it was getting updated.
Solution
I found that when I first created a Build instance, I was creating an ArrayCollection to hold the metadata and assigning listeners to watch for changes. I did that to keep it updated. After assigning the listeners, I would go about creating an ArrayCollection of Items and assigning that ArrayCollection to the metadata property of the Build. Did you catch that? My listeners were now listening to an orphaned ArrayCollection.
Moral
Be careful of when you create your properties and assign your listeners. I hope someone out there will be saved a few hours by this little tidbit.
In this article, I’m going to discuss four considerations for developing high quality custom components:
Portability
Flexibility
Performance
Weight
Using these considerations, you’ll be able to develop more professional, usable components. Even if I don’t think I will use my component in another project, I like to use these principles.
The little “Chat with Marty” module on the left side of my website is a cool little widget I got from Google. It allows visitors to your website to chat with you without revealing your google talk name, or requiring them to add you.
There’s a couple of projects I’ve been working on lately, one of which is the BugQuash QuashBoard, that require a search input. I decided to quit duplicating some of the work I’m doing and create a SearchInput control that extends the TextInput control and wraps the search logic into a reusable component.
The thought process went like this: I wanted a search field that when I typed, the datagrid (or whatever the data was displaying in) would filter out the rows that didn’t match the search terms. FilterFunctions do just that, but they don’t work on the DataGrid or List directly, they work on the dataProvider. The dataProvider must implement ICollectionView to have a filterFunction applied to it. You can figure this out by searching for filterFunction and finding that it is defined in ListCollectionView. ListCollectionView defines the function because it’s in ICollectionView, which ListCollectionView implements. I programmed to an interface, not an implementation.
The next BugQuash is approaching fast (on May 17th) and we’re busy making sure things run smoother this time around.
Bugs In Progress
There’s a lot we’re trying to improve, but one of them is the process by which developers can find a bug to work on or help with. The Adobe Bug System doesn’t have the hooks in it yet to allow a perfect workflow, but we’re getting there. Currently, choosing a bug to work on means you go into the bug system, find the bug you want to tackle and add a comment to the bug that you’re working on it. It’s ok, but if you want to help someone with a bug or provide input or review a bug that had been patched, it wasn’t easy to connect up with that developer.
To remedy that, we’re developing a connect room pod that will allow users to ender the bug number (i.e., SDK-12345) and it will gather the information from the Adobe Bug System and place it in a dataGrid on the QuashBoard that shows bugs in progress. That way, if you want to review someones patch or collaborate on a particular bug, you can see what’s being worked on, in real time.
The first Flex SDK BugQuash is now over and we’re pulling together stats and listing things we learned so that future events will be even better.
Here’s some numbers to show roughly how successful the event was:
Total patches submitted: 57
see what got submitted that day
Previous to the event, there were 111 patches submitted since Flex went open source. That means that in one day, the community submitted half of what had been submitted prior to the event. Phenomonal!
Patches accepted: 19 (at the time of this post)
And growing… Twelve patches were able to be reviewed and accepted by the Flex team that day. This was a Saturday and there wasn’t the entire Flex SDK team available, but that is still amazing. Consider that a patch must be reviewed and considered for it’s impact to the SDK by the team. They were working hard to get through as many as they could.
I’ve subscribed to the forums that show when patches are committed to the trunk. There’s been a number of patches accepted since the BugQuash by members of the SDK team.
The Flex team is under a lot of pressure right now since there is the fx name change they are working on, the additional features for Flex 4 and everything else. The fact that they are still working at getting the submitted patches reviewed shows an incredible dedication to the community. They understand that the community worked hard and they are doing all they can to show that it is appreciated.
Participants in person: 60
This is amazing considering we had around 64 register to be there in person. This kind of turnout is unheard of. There were people attending from Vancouver BC, Utah, Dallas, Atlanta, Portland, Tacoma and Spokane.
Participants online: 122
That’s huge. The connect room had over 50 people in it all day. Many people broke off into ConnectNow rooms to collaborate with other online participants so it’s hard to track exactly how many. The fact that we had 244 registered to participate online means that 50% of those registered actually participated. This number might be a little off since we know that some registered to participate but participated in groups, sharing the connect room so the actual number is probably slightly higher. I am also impressed that even when the event was winding down, the connect session was still going strong.
Here’s a video of Nate and I discussing the event with Ryan Stewart.
I recently ran into a problem that held me up for a little while, although it seemed like it would be a simple problem. After searching around and finding the solution, I found that it is actually pretty simple, just not obvious. Since it took me a while to find the answer, I thought it would be good to share my new found knowledge with the world.
Here’s an application designed for those fund raiser activities where you have a specific goal in mind and you’re encouraging people to donate money. Probably for non-profits and similar organizations.
The scenario would be something like this: You have a monitor (maybe a big LCD screen) facing the audience or the passers by of a convention, and that will show the big thermometer of how close you are to achieving your goal amount. Then, you have a laptop on the same network, or at least with access to a shared network drive, etc. It runs the Fund Meter Admin application that allows you to punch in the dollar amounts people donate. As you enter amounts, it updates the Fund Meter thermometer to show the new amount.
Simple, no big complex configurations. I wanted an easy to use application that would answer 90% of the use cases out there.