Hi, I'm Ben. This is my blog. I write about Flex,
Flash, software development, and other miscellany.

Switching domains

If you subscribe to the RSS feed it should hopefully be seamless (don’t fail me now Feedburner), but I thought I should mention it here just in case. This blog is moving to benclinkinbeard.com, and returnundefined.com will be forwarded to the new domain. Please let me know at ben.clinkinbeard AT gmail.com if you encounter any issues. Thanks!

Google Group for Flare

I have created a Google Group for the Flare data visualization library. Flare is currently hosted on SourceForge and their forums are terrible. I have started (and will continue for some time) working with Flare pretty extensively, so rather than suffer in silence (something I may in fact be incapable of doing) I decided to create a group somewhere better. Hopefully this better platform will help boost the level of discussion, because it is currently pretty low. If you know current or potential Flare developers, or are one yourself, please help spread the word and join the discussion.

I will soon be starting a series of posts about Flare, so if the library interests you be sure to check back soon.

What the Flex? – HierarchicalCollectionView

If you’ve ever used an AdvancedDataGrid, chances are you’ve encountered HierarchicalCollectionView. If you’ve ever used an AdvancedDataGrid for anything remotely complex, chances are you’ve cursed and shaken your metaphorical fists at HierarchicalCollectionView.

There are likely myriad reasons to despise this class but the one that burned me was this gem: any filterFunction applied to your HierarchicalCollectionView is also applied directly to your underlying child collections. In case the ramifications of that are not immediately clear, what it means is that you cannot simultaneously have two distinct views of a single data set that you have wrapped into a HierarchicalCollectionView. In fact, once applied you will have to manually clear the filter from underlying collections in order to get them back to normal. Because of this, the class is of extremely limited utility, and I would submit that its name is highly misleading. The ‘View’ at the end of the name implies that it will be creating a “virtual” view of the underlying data, leaving the source intact. This is how the immensely useful ListCollectionView class works. Apparently, other languages/frameworks also have “collection view” classes that do not modify the underlying data, so this is quite a departure from convention, not to mention common sense.

If you happen to look at the docs for HierarchicalCollectionView you will notice that filterFunction isn’t even listed as a supported property. Maybe the thinking was if they don’t tell anyone about it, we’ll overlook how poorly implemented it is?

Open Web: Fifteen year old third grader?

I don’t really want to get fully involved in the discussion being had by Ryan Stewart, Asa Dotzler and Simeon Bateman. However, in reading through each argument a few things Asa said struck me as particularly indicative of the fact that he, and I suppose maybe Mozilla as a whole, simply don’t get it. I am admittedly cherry picking here, but I couldn’t resist pulling out a few quotes.

Open is developing the protocols and specifications in a co-operative and participatory environment and then competing on implementations.

Replace “Open is” with “The colossal headache that is developing consistent experiences that are cross browser/platform and engaging to users is thanks to” and you’ve got a true statement. I use Firefox as my primary browser and think overall its a great application but unfortunately, telling a client their new site looks great in Firefox and like garbage in IE won’t exactly result in a lucrative career. Developing for “competing implementations” sucks, and its a large part of why Flash Player is so widely embraced and successful.

If I was in Adobe’s shoes, I’d give everything away, all of it. Hell, I’d pay people to develop on the Adobe platform and I’d encourage dozens of competing implementations of my platform across every type of device imaginable because, in the end, it’d be my platform and I’d decide how and when it evolved and to what ends.

See above for my thoughts on competing implementations.

So, all I can do in this battle for the future of the Web is to advocate for advances in real open Web standards from groups like ECMA, W3C, and WHATWG. It may be a bit slower to market, (hopefully not too much slower,)…

A bit slower? Seriously? Just a bit? Far as I can tell HTML 4.01 was finalized in December of 1999. Nineteen ninety freakin’ nine. Best I can tell the latest Flash Player back then was version 4. So in the 9 YEARS we’ve been stuck with HTML 4 there have been 5 full version releases of Flash Player. If thats a bit then I am just a bit shy of being a billionaire. Yes, Firefox has had a few releases in that time but it wasn’t adding any new capabilities, just improving its implementation of the same old spec.

So be patient everyone, for by 2011 you will almost certainly have a finalized HTML 5 spec and, not only that, your choice of no less than 4 major implementations of it to choose from!

Feedback from my session at 360|Flex Atlanta

Following Adam’s lead, again, I thought I would post the link to the feedback provided by people who attended my session last week in Atlanta. Tom and John rock the transparency vibe pretty hard so I figure its fitting for the speakers to do the same. This was my first time presenting at a conference and overall I was pretty happy with the outcome. I think the feedback stating it focused on FlexMDI a bit too much is probably valid and I apologize for that. My intention was simply to use it as a vehicle to illustrate the concepts I was discussing, I didn’t mean to showcase it in any way. I’d also like to repeat that I was/am not the only developer of FlexMDI. It was a joint effort between myself, Brian Holmes and Brendan Meutzner.

View the feedback

Thanks to everyone who attended, even if you didn’t provide feedback! Though I really like those of you who did :)

Universal-er Mind

Today marks the beginning of my final week as a Fidelity Investments employee. I have accepted an offer to join Universal Mind, where I will get to focus on using Adobe Flex to build great software for their impressive client list. I am super excited and extremely honored that I will get to work alongside Darron Schall, Doug McCune, Adam Flater and a host of other wickedly smart people. I didn’t even realize Darron worked for UM so imagine my surprise when I saw his name on the invite list for my Technical Interview. The dude has written a freakin’ Commodore 64 emulator and a VNC client in AS3. I mean come on. He thankfully didn’t ask me any questions about emulators though and I must have done alright since I officially start on February 19th. I can’t wait to get started and begin contributing to the amazing team Universal Mind has assembled.

Note: The rest of this post is a fairly detailed explanation on my reasoning behind this move. I began writing it simply for posterity and my own benefit but after reading Ryan and Chuck‘s posts I suppose it can serve as another perspective/response to their discussions as well. If you could give a rat’s bleep about my thought process (99.9999% of you by my estimation), you can stop reading now.

Leaving Fidelity was not an easy decision. In addition to the fact that I have made some very good friends and enjoyed the two years I spent there, its a very stable company with amazing benefits and they treat their employees extremely well. The company has also historically been very forward thinking when it comes to technology and continues to devote considerable attention and resources to IT, including a pretty significant adoption of Flex in several areas of the company. They were one of the first, if not the first, financial firms to use things like account management via automated telephone systems, the Web and data centers. Their web site(s) is/are still very good and are consistently rated the best in their industry. If you’re like me and prefer to do just about everything online, (people still writes checks and mail them in envelopes?) I would highly recommend using Fidelity. The rare times you do have to call them you receive top notch customer service from knowledgeable reps. I can also say they are genuinely focused on making their customers successful and prosperous. So why am I leaving a company I obviously hold in such high regard? The department I work in has recently gone through a restructuring to more closely align with overall company goals, and as a result our Flex work has dried up. There is a lot of Flex work going on in other parts of the company, but that doesn’t help me much. If I had stayed I would be doing primarily ASP.NET work for at least the next year, which is not something I am interested in doing full-time.

I decided to use that upheaval as a reason to look into the consulting world everyone has been raving about. As a husband and father I can only consider jobs that provide full benefits, and as a result have been watching the Flex consulting circus from afar for some time now with a mixture of jealousy and curiosity. Before the changes in my department, however, I couldn’t justify leaving the position I was already in. I was working on cool projects that people actually use to do their jobs, was the go to guy for Flash and Flex in my department and I live less than 3 miles from work. I had also casually discussed jobs with a couple of consulting firms in the past, but for various reasons didn’t feel like they were a good fit for me. Having heard good things about UM and seeing they had hired some real all-stars I decided to look into them a bit further. After sending my resume in I had an initial interview and then a second. The second was the Technical Interview I mentioned above and I have to say it was a blast. It was Thomas Burleson, Darron and Doug drilling me with questions for 90 minutes. Very cool, especially since I knew most of the answers. :) Throughout the entire process with UM, the people I dealt with were smart, passionate about their jobs and simply seemed like good people. What more can you really ask for?

I guess what it essentially comes down to is that I want to spend my working hours building killer Flex apps. When I finally started playing with Flex almost two years ago (Flex 2 Beta 2) it renewed a passion for learning and improving my skills that I hadn’t experienced since first discovering Flash and programming in college. When you find something you enjoy this much, you want to do it as much as possible, alongside the best possible people, on the biggest possible stage. For me right now that is UM. My position at Fidelity is definitely what Chuck refers to as a “career job” in that I could work there for another 30 years and retire somewhat early and be very comfortable financially. In the end though I felt like I am young enough and its early enough in my career that I want to take on a new challenge. Out of college I worked in a very small design agency (I was employee #5 when I started) and then moved on to Fidelity where last I heard there are about 46,000 employees. I feel like consulting via UM will allow me to experience a lot of the shades of gray between those two extremes while retaining the relative security of full-time employee status. It also gives me an opportunity to work alongside people I can learn (a lot) from. Don’t get me wrong, I worked with a lot of smart people at Fidelity who could teach me volumes on a variety of topics, but when I hit a brick wall with a Flex problem there weren’t a lot of internal resources to turn to. Not so at Universal Mind. Their existing team reads like a virtual who’s who of the Flex community. Now my problem won’t be getting an answer, it will be trying to not look like an idiot in the process. :)

So to everyone at Fidelity, best of luck and thank you for the past two years. I thoroughly enjoyed and genuinely appreciate everything I experienced there. Hopefully our paths will cross again at some point down the road.

To everyone at UM I can’t wait to get settled, meet those of you I haven’t, and start building first class Flex applications with you. The industry is on fire, lets get our gas cans.

I guess donating code isn't enough anymore

The following is an unedited email thread I have had with a reader over the past week or so. I helped him learn how to add a SWC to a Flex project but apparently that (and FlexMDI) wasn’t good enough. The quotes next to the green bars are mine.

Update: I have decided to remove Keith’s identifying information from this post. While I haven’t received any kind of apology from him, as one commenter pointed out some employers could deem his behavior enough to warrant termination from a job or perhaps prevent the acquisition of a future job. Nothing of that magnitude was what I intended by publishing this. I was simply trying to point out two things. One, don’t be ungrateful, especially when getting something at no cost. Two, just because you’re communicating “on the internet” doesn’t mean its OK to be a jerk, and your actions may very well become public knowledge. I think this post still accomplishes its goals without his info. So you’re welcome Keith, again.

Hey Ben,

Thanks again for all the help in getting the demos to work. As I mentioned in my last post the only problem I am having now is trying to get the maximize and minimize events to work. When I add one of them to a I get “Event type ‘mdi.events:MDIWindowEvent’ is unavailable”

Any ideas??

Thanks,

Keith

Not sure what you mean exactly, can you show some code?

sure
… code snippet …

When I compile that I get “Event type ‘mdi.events:MDIWindowEvent’ is
unavailable” on the MDIWindow code. If I remove
the “maximize” event parameter it compiles and runs fine.

Sorry, I dunno. Maybe try importing MDIWindowEvent?

Ben

Sadly it already is. I just took the sample code and added the maximize parameter.

So its just the explorer with one attribute added?

Any idea ?

Sorry, I don’t really have time to investigate right now. I would suggest posting your issue on flexcoders.

Ben

Lol. Ok. I didn’t realize they would comment on 3rd party code. I apologize — I thought you were one of the developers of this component.

No problem, I am, I just have a lot going on right now. Sorry.

You knoiw what never mind. Pisses me off to no end when a developer won’t take the time to troubleshoot his own code. I’d fire you if you worked for me. Guess now that its published and the articles have been written and your presentations made you don’t give a flip.
There is a another component someone else wrote. I’ll just check it out instead.
Maybe I will post to flexcoders and explain that the person who helped write it wouldn’t take the time to help out. Yeah that should look good.
Thanks for ummm.. Well nothing I guess. Enjoy

Wow, you’re amazing you know it? I have a family, a full-time job and other shit going on, I’ve spent countless hours writing the code, written articles, answered several questions on my blog (including yours) and on flexcoders, and because I don’t have time to investigate your question right now that makes me a bad person/developer? You’ve been given a very good library for zero cost and you throw a temper tantrum because I can’t personally investigate your issue? Why can’t you post to flexcoders? Shit man, put forth some effort! The code has been downloaded over 6000 times and nobody has ever reported this issue. Doesn’t mean its not a valid problem, but asking you to do a little bit more than flood my inbox whining that it doesn’t work is a reasonable request. Please do post your complaint to flexcoders. Please.

Jeez man, you couldn’t be more unappreciative. What exactly makes you feel entitled to free code plus support? Tell you what, send me $100 and I will be glad to investigate your issue personally. After all, I am sure you’re getting paid for the project you’re using our code in, so lets be fair and share the wealth. Right?

Unbelievable.

Ben

Come heckle me at 360|Flex Atlanta

In just under a month, the amazing Tom and John will, once again, orchestrate what is sure to be an amazing conference. If you have any desire at all to improve your Flex skills, meet fellow developers, find a Flex job, hire a Flex developer or just have a really good time with lots of smart, cool people you should definitely attend. For $480 you can’t beat it with a stick.

As the title implies, I will be speaking at the conference. My session is titled “Creating Flexible Components for Reuse and Distribution” and will discuss just that. I will be covering considerations and practices that are useful when you want to create something that will be useful beyond your immediate need or project. Most of the main ideas will be accompanied by examples from flexmdi since reuse and flexibility were main goals of the project, but the concepts will definitely be widely applicable. I would consider it an intermediate level session so you don’t need to be a guru to attend, but hopefully the content will be interesting to developers of all skill levels, including you rock stars out there. Last time I checked I was speaking opposite Ben Forta so if you’re a CFer I will understand if I don’t see you. Otherwise come join me! The session will be pretty free-form and casual; if people want to shout out questions (or insults, whatever) in the middle thats fine by me. In fact, I hope there will be audience participation in the form of questions, comments, alternative approaches, etc. Should be a good time.

So I hope to see you in the audience, but even more so I hope to see you at the conference. Tom and John put on amazing events, have amazing passion for our industry and deserve nothing less than a stellar turnout. If you’ve never been to a 360 event, you owe it to yourself to experience it firsthand. Its awful friggin’ cool. So come out, learn something, meet someone or just enjoy the ATL. I promise you won’t regret it.

360Flex + $480 = lots of learnin' and lots of fun

The awesome guys from 360Conferences have just announced that the next installment of 360Flex will be an even better deal than it already was. They are offering a full day of Flex 101 training the day before the conference begins, meaning even if you have no Flex experience whatsoever, you can spend 4 days in Hotlanta and come out with some serious knowledge. Back in August I went to my first ever tech conference: 360Flex in Seattle. I was immediately hooked. The small size combined with great sessions makes for a really amazing conference and community experience, and for their prices you really can’t beat it. They charge approximately 50% of what most other conferences do.

So do yourself a favor and head to 360Flex in February. Whether you’re a Flex n00b, novice or ninja it will be worth your time and your career will probably thank you for it. I hear they even have some pretty sweet new speakers this time around. :)

See you in Atlanta!

Should I get a Master's degree?

Is it worth it? My employer offers a very good tuition reimbursement program (90%) but I am trying to decide if it is worth the time and effort. I’ve been a professional web developer for over 5 years now but as a design major turned programmer, I was never formally exposed to the conventional Computer Science curriculum of data structures, algorithm design, compiler/language theory, etc. I have gradually escalated my skills from simple ActionScript and HTML/CSS to more OO ActionScript and server-side development to AS3 and Flex, with a bit of dabbling in Java and C# to top it all off. I try to continually improve and grow my skills, read up on things like Design Patterns and theory, and am now wondering if a formal Computer Science program (or something similar) is the best way to continue that and take it to the next level.

Are there things you can’t learn from a book/article/tutorial/experimenting? Do you have a master’s degree? Would you get one if it was super cheap? Do employers care about that stuff? These are all questions I am curious about. On one hand I think it would be cool to have the degree, would look good on a resume, would be a good example to my children, etc, but on the other hand I wonder if my time wouldn’t be better spent learning on my own, trial by fire stylie. Enrolling in a program would almost certainly result in taking classes I am not interested in and that don’t really apply to my career goals/interests, so I wonder if my 10% of the cost would be better applied to my Amazon card and a self-imposed course of study.

What do you think? Should I take the plunge?