- 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.
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.
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?
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.
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.
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:
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.
You can get the widget from here: http://www.google.com/talk/service/badge/New
Update: I removed the chat widget after getting quite a few interruptions during my work day. ï¿½Word of advice, use with caution.
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.
I’d like to personally thank my wife and Nate’s wife for supporting us while we were preparing for the event.
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.
For the past couple weeks, Nate Beck and I have been working on putting together a little get-together where us and a few of our friends work on bugs in the Flex SDK. Well, that little get-together has exploded into something much, much greater!
Announcing, the first ever, worldwide Flex BugQuash!
Hosted at Adobe’s Seattle site on March 28th, we’ll have a room full of people dedicated to fixing as many bugs in the Flex SDK as possible in 10 hours. We’ll have an Acrobat Connect session for remote participants to join in and watch the room live. Even a keynote with Mark Anders from Adobe.
See details and register at http://www.bugquash.com.