My Apache Flex Logo Contest Submissions

Now that Flex is being moved to the Apache Software Foundation, it’s time for a new logo. A logo contest is currently underway (ends today I think). Here are my two submissions. Each one has more detailed variations and explanations of the thought process if you view the full submission.

Logo 1

Main Themes: Cross-platform, progress, advancing forward, new beginnings

This logo is meant to combine the symbols of an arrow and an X. The arrow means “moving forward”, which has a number of connotations (moving forward with Apache, a fresh start for the project, advancing the state of the art in web/desktop/mobile development). The X means “cross platform”, which should be pretty self-explanatory to anyone who uses Flex. The combination of the two symbols means “Advancing cross-platform development.”

See the full treatment with explanation.

Logo 2

Main Themes: Stability, strength, enterprise

The second logo tries to capture the enterprise story. Flex is the foundation of many enterprise applications. It provides a core set of components and tools, on top of which we build stable, powerful, robust applications that drive real businesses. This logo has Flex as a strong base. Built on top we have a symbolic chart, but this symbol is also meant to represent a skyline of skyscrapers. Our apps power large enterprises and drive business. Flex is the foundation of enterprise development.

See the full treatment with explanation.


Reflections on the first 360|Flex

The next 360|Flex conference is coming up in March in San Jose. I got to thinking about my history with 360|Flex and wanted to reflect on how important the conference has been for me. This post is about the very first 360|Flex conference that was in March 2007. It’s self-indulgent, but I hope it doesn’t come off as egotistical. My goal is to explain my personal experience and my path, not to brag about how cool I am.

I attended the first 360|Flex conference in San Jose simply as an attendee. I barely knew anyone (at least personally) in the Flex world. I had been attending the Flex user group meetings in San Francisco for just a bit before this conference and so I had met a few people very briefly like Tom Ortega (conference organizer) and Ted Patrick (Adobe evangelist). I had been blogging for literally only 3 months. I was still very inexperienced (even if I tried to mask that) and I wasn’t at all confident in myself (I really tried to mask that).

Opportunity #1:

The night before the first keynote of 360|Flex I got an email from Mark Anders from Adobe (who I had never met) telling me he was going to be showing a demo app of mine during the keynote. In the email he said:

“Make sure you attend the keynote, because I’m going to feature your RSS reader in it as a demo!  I hope that’s ok! 🙂  I’ll also be asking you to stand up and take a bow, so make sure you look great!  See you tomorrow!”

anders_rss_reader_360flexHope it’s OK? Fuck yeah, it’s awesome. Completely unexpected. I had butterflies in my stomach all night until the next morning, I was like a little schoolgirl. I got there early the next day, I wore a black sweater that I thought looked kind of professional in a dorky tech way, sort of Steve Jobs inspired. I realize now that I probably looked like a tool, but hey, it worked alright for me. Keynote came, the demo was shown, people seemed impressed and clapped and I did a little stand up wave kind of awkward thing. Super nervous, totally weird, but people saw my face. And after the keynote I met Mark and chatted with him and some fellow Adobe employees a bit (at the time I was seriously considering trying to get a job at Adobe, so I was sucking up pretty big time I think).

Opportunity #2:

On the second day of the conference Ted Patrick approached me and asked if I could put together a demo of FlexLib components to be shown at the keynote on the last day of the conference. I think this was in the afternoon and he was going to show it the next morning. I proceeded to go sit in the back of the last session of the day and crank out a little demo explorer app to showcase some of the components. To spice things up I threw in an extra water eyecandy effect that I was in the middle or working on. I threw the demo together fairly quickly and got it over to him for the next day. The demo was just a small part of his keynote, but during it he did get my name in there and point me out in the crowd, and people seemed to dig the water effect nonsense 🙂

So with a whole lot of luck I had managed to get my name mentioned in both the keynotes of 360|Flex. I’m grateful for these opportunities, they felt like they came out of nowhere and suddenly people were coming up to me to talk (as opposed to me sheepishly approaching people in the awkward tech-dork way).

Opportunity #3:

I remember sitting in the back of some session (can’t for the life of me remember anything about the session) and I happened to be sitting next to Tom Link and Brett Cortese from Universal Mind. I wasn’t at all tapped into the Flex consulting scene at that time, so I didn’t know the name Universal Mind. But I was sitting there in the back and Tom was reviewing some app that UM was working on. It was a sort of business dashboard app that had a slick UI that let you customize various charts. I can’t remember the exact conversation, but I remember looking over his shoulder and being impressed with the app and chatting about it a bit. He mentioned Darron Schall’s name at some point. I had been collaborating with Darron a bit on FlexLib and so I got online and started asking him about UM. Turns out he had only good things to say (and he apparently said good things about me to UM as well). After 360|Flex I left Tom with one of my ridiculous business cards. We ended up getting in touch shortly after and following up and the rest is history. I just passed my two year anniversary working for UM and I’ve had a hell of a good time.

Swing and miss

At the conference Ted Patrick introduced me to a guy from Yahoo. He was interested in hiring a Flex contractor for an internal project. If I recall correctly the basic plan was to have this Flex app that let Yahoo employees create different layouts and combinations of various Yahoo widgets, which would eventually turn into Yahoo web pages. It was sort of a prototyping tool for internal use. I had never done Flex consulting work before. I had never done any independent consulting whatsoever. I didn’t have the utmost confidence in my own abilities and I certainly didn’t feel comfortable asking for a lot of money. But I figured, fuck it, what’s the worst that can happen?

So with no prior consulting experience I quoted him $125 an hour. Pulled straight out of my ass. My logic was that I didn’t actually need the work yet (I was happily unemployed) but that if it came through and I was making over a hundred dollars an hour I’d would dive in head first (and be scared shitless in the process). I was far more scared of actually getting the gig than not, since then I’d have to actually be worth what I saw as such a ridiculous rate. I ended the email like this (parentheses are my thoughts, not in the actual email): “I’m happy to discuss the project further. I find the concept very interesting (I didn’t really), so even if I’m not involved in the development I’d be more than happy to give my opinions on the project (this was true, since I had no experience whatsoever I figured that any involvement would help me). Let me know how you want to proceed, and regardless let’s keep in touch about work that Yahoo is doing with Flex (having contacts inside companies like Yahoo can never hurt).” Send. And then I never even got a response. Ego bruised, but not badly.

The Jesse Warden validation

warden_thumbThis is funny because it’s a story I’ve never told Jesse (or anyone for that matter) and it showcases just how insecure I was at the time. I had been talking to Tom from UM about consulting and he had mentioned that Jesse Warden had been doing a bit of consulting for them as well, and that I should talk to him to see what UM was like. Jesse (who I had never met) was sitting against some wall working on a laptop and I walked over and said some awkward introduction like “Hey Jesse, it’s nice to meet you, I’m Doug McCune.” After being caught completely off guard with Jesse’s caffinated million-word-a-minute style of speech we got to talking a bit and then he said something like, “Where the hell did you come from? Like all the sudden here’s this Doug McCune guy coming out of nowhere making our computers blow up with this crazy fire and shit.” (I had recently released a fire effect demo). It’s funny how that interaction sticks so vividly in my mind. I probably laughed it off and said some kind of thanks, but inside I was beaming with pride. Jesse fucking Warden knew who I was and thought my shit was cool. That’s actually the exact moment that I knew that I was on some kind of path here, that this was actually going to work out.

This conference was huge for me

I had no expectations going into the conference, I figured I’d attend like I had attended various conferences before, sit in the back of sessions, take notes and write down links, and hopefully learn good material. I had no idea I’d get the kind of exposure in the keynotes that I ended up getting, or that I’d make the connections that I did. I ended up meeting Jesse, Deepa, Ben Stucki, Renaun Erickson, Mark Anders, Ely Greenfield, and countless other people. And these people that I met actually knew who I was. I couldn’t fucking believe it. My head was literally spinning at the end of it all.

Data Visualization, Flex/Flash/Actionscript

Stalking Someone with Data

Data can often tell you far more about people than you originally think. In my previous post I presented some of the data from the history of the FlexCoders mailing list. I showed some of the details of the individual usage patterns for different people. One of those people was the Flex product manager, Matt Chotin. Matt’s involvement with FlexCoders is pretty interesting if you start to dig into the data. In this post I’ll try to identify some changing trends in his usage patterns and we’ll see if we can do some detective work to figure out why his behavior changed.

A little background: Matt has been involved in Flex since basically forever. He was an engineer at Macromedia and is now the product manager for Flex. Matt has been quite prolific on flexcoders over the years (in the overall ranking he’s #3). So to start I was interested in his overall post volume on the list. Take a look at the timeline showing his posts per month and you’ll notice there’s a distinct drop-off:


Here’s a closeup of a period:


See that big drop from April to May of 2006? Well in May Matt changed jobs to become the product manager of Flex. On his blog he noted:

So if you notice the number of flexcoders posts going down it’s because my brain will be slowly atrophying as I move away from the details of our vast offering.

And that’s exactly what happened.

Daily routines

Seeing the correlation between a change in professional life and a drop in activity is cool, but we can dig deeper. Not only is this data telling us when Matt changed his behavior throughout the year, but we can also figure out something about his daily routines and how that changed as well. I started looking at when (as in what time of day) Matt was posting to the list.

Here’s a chart that shows the distribution of posts by hour of day and day of week. It groups the posts by the combination of what day and what hour they occur on.


So you can see that Matt posted the most on weekday mornings (around 9-11am on Monday-Friday) and weekday evenings (around 8-10pm Monday-Thursday, note that he rarely posts on Friday nights).

This pattern is actually very similar to Alex Harui’s activity as well, although Alex’s activity is more weighted to during work hours than at night (except for Sunday night!).

I found the evening hotspots interesting (both in Matt and Alex’s cases). Clearly Matt was answering people’s questions a lot after work hours from home.

I dug a bit further into Matt’s trends. Here’s the graph of his activity by hour of day for 2005:


We can see in 2005 he actually answered more questions in the evening than in the morning. Taking a look at 2006 this became even more pronounced, almost all his activity was at night (I wasn’t the only one who noticed this, see Ryan Stewart’s post about Matt posting at 9pm):


And then there was a change in 2007. The graph for 2007 shows that he started answering more question during the workday. And that shift continued into 2008 and 2009, by which time almost all of Matt’s activity was during work hours.


If you dig even deeper into the data you can find out that the transition from mainly evening activity to work-day activity happened mostly during the months of April 2007 – June 2007. After about July 2007 Matt almost primarily posts during the day. Taking a look at the release history of Flex, we see that the beta of Flex 3 came out in June 2007. So my guess is that Matt changed to a management role in May of 2006, but had far too much work to do to get Flex 3 ready and out the door between then and June 2007 (meaning his devotion to flexcoders had to be delegated to the evening hours). Finally once the Flex 3 beta was out the door he could devote some actual work hours to being involved in the community, instead of having to do it all from home.

Vacation Time

As if knowing the intimate details about Matt’s daily routine isn’t enough, we can learn something about his historical vacation time off as well. Matt’s impressive in that he’s never missed a month without posting. If you go even more granular there are actually very few weeks that he missed (as his overall activity declined in 2009 this became more common). So if we look at Matt’s activity around the holidays something interesting pops out (well, it’s only interesting if you’re a total stalker, but if you’ve read this far then you probably are). Here are a few timelines of different years, showing columns grouped by week. In 2005 we see Matt was posting pretty regularly through the holidays. There actually was a 5 day stretch with no posts, but that was it (due to the way the weeks are grouped that gap doesn’t show in this chart).

2005 is similar:

But then 2006 has a big gap:

And being the stalker that I am, I noticed that and then went to investigate further. Turns out Matt wrote about taking a vacation that year.

I’ll be on vacation until mid-January so emails to me will go unanswered as will responses to various forums and blog comments 🙂 Happy Holidays to all!

The data never lies.

Looks like a long vacation over the holidays didn’t turn into a regular thing though, since he was right back at it the following year:

I’m not a total nut job

I know it seems like I’m obsessed with Matt Chotin. And regardless of whether that’s true or not, I do want to assure people I’m not totally off my rocker. This little experiment in data mining and analysis isn’t really about Matt. It’s about the stories data tells about all of us. There are mountains of public information out there about us all, and the tiny little bits that we put out there, even if those are just little Facebook or Twitter status messages, can say a lot about us. Sure, a single Facebook status message doesn’t tell anyone much, but when you look at all of them over a multi-year period you can start learning a lot about a person. And often that information that the aggregate data tells about us isn’t something we’re aware of. From this data experiment I know when Matt eats dinner (pretty typical range of 6-8pm), when he goes to bed (around midnight), and when he gets to work (again pretty normal between 8-9). And this is all from only 4,000 data points. With social networking and microblogging sites we’re starting to create thousands of little data points like this all the time.

Thanks to Matt Chotin

I ran this post by Matt first, since I know it’s a bit creepy. He was cool with me posting it, so thanks Matt! And thanks for all the years of hard work answering questions on flexcoders, we’re a stronger community because of it.

The Data

Read more about the data here. This is 5 and a half years of mailing list activity, comprising about 148,826 individual email messages. Matt himself posted about 4,000 messages. You can download the full CSV dataset here.


FlexCoders Mailing List Stats, Pretty Graphs, Full Dataset

In this post I’m going to dive into details about the stats of the FlexCoders mailing list usage over the past 5 and a half years. It’s full of graphs of various fun statistics, like who’s most active on the list, when people post, and the overall traffic over time. It’s a bit of a trip down memory lane, and I apologize if I ramble, I like data and pretty pictures, and I have a soft spot in my heart for FlexCoders, so bear with me and hopefully for those of you on the mailing list it will be a fun trip.


I’ve been on the FlexCoders mailing for a few years now (my first post was back in September 2006). As the Flex community grew, the list grew, some would say it grew to unmanageable levels. It’s certainly a lot of mail, I currently have 22,100 unread flexcoders emails in GMail. At one point we even debated furiously whether the list should be split up into multiple more focused lists, or if the whole thing was going to die. Regardless of that outcome the flexcoders list remained as it has been for years. One thing did change though: Adobe replaced their official forum (which was literally God’s worst forum software) with a new one. And the Adobe employees definitely seemed to be pushing people there, which isn’t to say they stopped answering flexcoders questions, but the community was certainly now split between two lists.

I subscribe to both flexcoders and the Adobe Flex forums (which you can setup to receive emails from). I started noticing a trend. Take a look at this picture of my inbox (only flexcoders and Adobe forums emails) as of right now:


The orange label is used to tag the posts from flexcoders and the green label is posts from the Adobe forums. I started noticing that the number of posts from the forums were more than on flexcoders. That obviously made me wonder if the overall traffic on flexcoders was in decline. I’ve been inactive on the list for quite a while (been quiet for most of 2009). So I didn’t exactly have my finger on the pulse of flexcoders.

The Data

So I wanted to download the entire Yahoo group dataset to start playing with it. Turns out Yahoo doesn’t make this easy, but I found a sweet program called PG Offline that I used to pull down the entire list. It took me a few days to get all 148,826 messages (as of about 7pm tonight). But PG Offline worked incredibly well and I then had an Access database file with all the emails (it was about 1.5 gigs). I then used another program called MDB Converter to convert that to a text CSV file.

If you want to play with the data yourself you can download the CSV file (11 megs). It includes columns for the sender, date, and subject. I did not include the full-text of the emails, since that would make it a gig and a half.

Analyzing the Trends

I pulled the data into SpatialKey (which is what I work on for my day job) and started digging into the data. Here’s the report setup I created in SpatialKey to play around and filter down the data (click for a larger view):


So we can start seeing the overall trend in the main timeline, which shows the rise and fall in traffic.

So there certainly has been a decline in traffic to the list. The most active month ever in the list’s history was March 2008 with 3,834 posts. And then it’s been a fairly steady decline since that peak.

Some other interesting high level stats are the hours of the most activity. This chart shows the number of posts by hour of day. Hour of day is Pacific time.


You can clearly see the work-day hours there. 8, 9, and 10am are the most active, and then it slows down as the work-day finishes up (earlier for east coast people), and then there’s another small bump around 9pm in the evening.

Who’s Most Active?

Anyone who reads FlexCoders knows that Alex Harui (from Adobe) is the king. Here are two charts showing the top 10 posters of all time and the top 10 from just 2009.


Alex certainly still holds the number one spot overall, but Tracy has him beat for this past year.

Diving into Individual Activity

It’s also pretty interesting to look at how different individuals use flexcoders, and how their usage has changed. Here are just a few selected people that I was curious about:

Alex wasn’t always the king. He had a few messages back in 2005, but his heavy involvement on the list actually started relatively late, in March of 2007 (which is also when he started blogging coincidentally).

Tracy Spratt, on the other hand, has been on the list since its very beginning:

Matt Chotin (Flex product manager) has also been active since the list started:

Actually, Matt Chotin and Tracy Spratt are the only two people who have posted to the list at least once every single month since the very beginning (from April 2004 to now). They get the FlexCoders Lifetime Achievement Award!

Some people were around in the early days but then dropped out. Here’s Jesse Warden‘s activity:

Some people get sucked into the list fast and then fizzle out. Josh McDonald was the third most prolific poster of 2008, but then stopped posting as quickly as he started:

And some people stop posting when it’s no longer part of their job, like Roger Gonzalez who worked for Adobe and left in March 2007 (which was also the last time he posted to the list):

Ely Greenfield (Principal Architect at Adobe working on Flex 4) used to be fairly active back in 2006/2007, but hasn’t said a word in the past two years:

And what about me? I was fairly active on the list from about 2007 through the beginning of 2009, then pretty much radio silence:

And some people don’t live in the USA and post at completely different times. Here’s Tom Chiverton‘s (4th most prolific poster of all time) usage pattern by hour of day and day of week. It groups the posts by the combination of what day and what hour they occur on.

At first glance it looks like Tom emails the list in the middle of the night, until you realize that he lives in England 🙂

I’ve had a lot of fun drilling into the history of this list. It’s really cool what kinds of trends you can find (probably another post in more detail on that later).

Want to play with the data?

You can download the complete CSV file and use it if you want. I’d love to see people turn it into much more interesting visualizations. This dataset goes up until November 2 2009. Since it’s a bit of a pain to keep it updated I probably won’t update it very often, but if there is interest I might do so once a month or so.

Notes on privacy

All this data is public, you can see it all by going to the Yahoo group and searching. There are no email addresses in this data (unless perhaps if someone used their email address as their name as well). Any names in this data are there because the person knowingly emailed the public flexcoders email list. This CSV download is obviously a much easier format to work with all the data, and it can certainly be mined for interesting trends. I just ask that people play nice with the data. We’re a community, and this is data that represents our lives (or at least one small sliver of our lives) for the past 5 years.

Flex/Flash/Actionscript, Maps, SpatialKey

Drinking at 10am and geeking out on SpatialKey and Flex

James Ward and Jon Rose just published the latest episode of Drunk on Software that features members of the SpatialKey team, including myself, Tom Link (CTO of Universal Mind), and Brandon Purcell (Director of Technology for UM).

As a brief disclaimer in case I slur any words near the end: I was in Denver for a short trip and we squeezed in a time to meet with Jon and James right before I had to head to the airport to fly home. The only problem was that we had to meet at about 10am in the morning. And since the show is called Drunk on Software we obviously had to be drinking. So by the time I got on my flight I was probably 6 beers down 🙂

A big thanks to Jon and James for making the time to have us over (that’s the living room of Jon’s house). And thanks for the beer guys!


Slides, code, and links from my “Cool Shit” presentation at 360|Flex Indy

Another 360|Flex has come and gone and I’ve returned home with my liver and dignity partially intact. This post contains the slides from my presentation as well as all the code for the examples that I showed during the presentation. The slides are embedded below or you can download a PDF of them here.

The problem with these slides, however, is that if you read them out of context a lot of it probably won’t make that much sense (and some of it may very well be misunderstood completely). So I’m planning on doing a follow up post shortly after this that will try to put my slides in context by providing some notes about what I was talking about when I was showing each slide. So don’t look at the slides like the one that says “Fuck Flex” and jump to any conclusions. I’m not ditching Flex development, I wasn’t angry, and I wasn’t just trying to shock people with swear words on slides. If you saw my presentation then I hope it all made sense and I hope some of it resonated with you. If you didn’t make it to my session then I’ll be posting a few followup posts about the main topics that I covered. I’ll be doing some posts that go into detail about steganography, head tracking (including detailing some of the optimizations I came up with), and augmented reality (hopefully with some good video).


UPDATE: Turns out SlideShare’s embeddable player is throwing errors, so you can view the presentation slides directly on SlideShare here.

Or download the PDF of the slides.


Here’s all the code of all the examples that I showed.

  • STEGAsaurus
    This is an AIR app that hides secret data (either text or files) in PNG images. It uses the PNGEncoder class in the Flex framework and the PNGDecoder class written by Heriet. When you run the app it allows you to drag and drop an image file to either encode secret stuff or to decode secret stuff that has already been encoded in the image (it can only decode PNGs created with the app itself).
    Download the AIR installer | Download the source
  • Modified Marilena head tracking library
    The Marilena library is part of the libspark project and it is a port of a facial detection algorithm from OpenCV that uses a technique called Haar Cascades. I used an optimized version by Mario Klingemann as the base that I started with, and then I made further optimizations from there. The main optimizations that I made have to do with not having to rescan the entire image every pass (since we’re concerned with live webcam tracking) and also checking for different rotations of the face to allow the user to turn his or her face at an angle.
    Download the source
  • Head Tracking Targets
    This was a simple demo that uses Flash Player 10 3D stuff (no PaperVision or 3D library used). I was trying to recreate the fantastic demo that Johnny Lee did that uses the Wiimote to detect head movement. This demo should detect your face and move the targets as you move your head around.
    Run the demo | View the source
  • Crappy Top Gun game (controlled with your head)
    This is another demo that uses head tracking. This one is a little Flash game that recreates part of the original Top Gun NES game. You control the plane by moving your head in the direction you want to fly and the objective is to avoid getting hit by rockets. It’s a really crappy game and isn’t very fun to play, but it was intended to just be a proof of concept.
    Run the demo | Download the source
  • Safe Sexting
    This is another head tracking demo that can automatically blur out your face. It’s sort of a Photo Booth type of application that lets you take pictures of yourself. The general concept is that it’s for all those young teenagers out there who are getting in trouble for sexting. Being the good citizen that I am, I wanted to come to their aid. This app will let you take dirty pictures while concealing your identity!
    Run the demo | View the source
  • Augmented reality demo with fake chests (male and female)
    And for the finale of the presentation I pulled off my shirt to expose an augmented reality marker on my chest. I then “augmented” myself with a 3D muscular male chest that made me look like a bodybuilder, and then to top it off I threw some fake 3D breasts on my chest (all while simultaneously blurring my face with the Safe Sexting app). If you want to try the augmented reality stuff out you’ll need to print out this marker and hold it up the the camera (or tape it to your chest for the full effect).
    Run the demo | View the source

So that’s all the slides and code. I’ll be putting together a series of blog posts that go over each of the individual topics I covered in much more detail. And like I mentioned, I’ll be doing a post that puts the slides in context for those of you who didn’t get to see the presentation live. I think there might also be some video floating around of most of the presentation, so if I can get my hands on that then I’ll be sure to post it.


In addition to the slides, here are the direct links to all the videos or demos that I referenced in my slides:

Were you there?

I’d love to get some feedback on how you thought the session went. Was it engaging? Was the technical content good? Too technical/not technical enough? Let me know in the comments or feel free to shoot me an email: doug@dougmccune.com.


My 360|Flex Itinerary

360FlexI’m leaving for the 360|Flex conference in Indianapolis tomorrow, so as I was getting ready I was looking over the schedule to get a feel for the sessions that I might attend. This list below is my tentative itinerary. It sort of represents the stuff that I personally find most interesting, but it certainly shouldn’t be thought of as a ranking or judgment or anything like that. 360|Flex is sweet because there’s usually a few sessions occurring at the same time that are all interesting, so I tend to jump around a lot. And of course I also tend to just hang out with people instead of going to any sessions at all, so we’ll see how many I actually attend. I’ll be presenting my session, “Cool Shit”, on Wednesday at 10:00 am, so be sure to at least come to that one!

10:00 – Michael Labriola – assertYourself
Michael Labriola is always one of the best speakers at 360|Flex (you hear that Labriola? you got a serious reputation to live up to now). In the past he’s given top-notch presentations that go into crazy amounts of uber-technical detail, and somehow people always walk out of the sessions entertained. Unit testing is a huge weakness of mine, something that I know I need to do and do better. So if Labriola brings his game like usual then this session should be entertaining as well as useful.

1:00 – Leonard Souza – Get Phidgety with Phidgets
I’m really excited for this session. Phidgets are little physical devices that you can connect to your computer and control. Simple things like RFID readers, or little sensors of various kinds, or small motors. You can talk to them from your Flex apps and make them do your bidding. The integration with physical devices is something that has fascinated me for a long time, and I’m really looking forward to seeing some cool stuff.

2:30 – Sean Hess – Creating a Realtime Multiplayer Game with AFCS
I was toying with the idea of using some of Adobe’s realtime services (either AFCS or RTMFP) for some gaming ideas. I haven’t had the time to try out any of my ideas, but maybe this session will reinvigorate me. And I figure I might as well stay on top of whatever Adobe is offering with Cocomo just so I’m aware of what the options are.

4:00 – Joe Berkovitz – Dynamic Audio Synthesis on the Flash/Flex Platform
The audio capabilities of Flash Player 10 are something I really haven’t dug into, but I’d like to get a good grasp of what the possibilities are. I’m torn between trying to go see Labriola’s (second) session in this same time slot, but if I see him present in the morning then I can’t be caught in his other session otherwise I’ll seem like a stalker 🙂

8:30 – Joe Johnston – FLEXperience – Putting the Flex in UX
Honestly, I doubt I’ll make it out this early. I’ve been to enough 360|Flex conferences to know that the chances of getting up early for the second day are almost none (to all the presenters in the morning: I feel for you). But if I can get out of bed, I’ll be checking out Joe Johnston’s preso on User Experience. Joe’s a fellow Universal Mind guy, does some sweet work, and I’ve never seen him present.

10:00 – Ben Stucki or Tom Gonzalez
So here I’m really torn. Ben is a good friend of mine (and former coworker on SpatialKey) and he’s been working on an audio startup for a while now. He’ll be presenting the progress he’s made on his startup, AudioSpike, and I’m sure he’ll be covering some cool Flash Player 10 audio stuff. But at the same time Tom Gonzales (who I’ve also had the pleasure of working with on SpatialKey) will be presenting Axiis, which is a new data visualization library he’s been working on with Michael VanDaniker. I’m big into data vis stuff, so seeing what he’s cooked up would definitely be interesting and probably more useful in everyday life, so I really don’t know which session I’ll end up in (maybe hopping between both).

1:00 – Francisco Inchauste – RIA Mojo – Making Your Flex Application Stand Out with Great UX
Francisco is yet another fellow UM employee and also a member of the SpatialKey team. Universal Mind has really been focusing on building a fantastic UX team over the past year and I’ve had the pleasure of working with Francisco before, so I know he does fantastic work. This session (along with Joe Johnston’s) will sort of give me an additional look behind the curtain at their UX process.

2:30 – Jeremy Saenz – Shedding Skins – Programmatic Skinning of Flex
So I don’t really care all that much about programmatic skinning (not that it’s not a worthwhile topic), but Jeremy is the dude who did the Flex Gangsta video, so I’m looking forward to seeing him present. Half the reason for going to sessions at these conferences for me is to check out how other people present, see how they interact with the audience, etc. I’m hoping Jeremy busts some geeky badass-ness.

4:00 – Laura Arguello – Breaking Down Your Applications with Mate Framework
I’ve heard great things about Laura presenting on Mate. Developers seemed to gush all over Mate the instant it was released, and yet somehow I still haven’t built an app using it. So it’s about time I get a good handle on what they did with the framework and start playing around.

10:00 – Doug McCune – Cool Shit
This session is going to be the bomb! I can’t wait! 🙂 In all seriousness, my session should be a hell of a lot of fun. I’ve got a few fun tricks up my sleeve and as long as I don’t get banned from the hotel by the end of the session we should all have a good time. I’ll be writing a little preview blog post to give some details about what I’ll be covering, but until then you’ll just have to trust that you’ll be entertained. It will be super dorky, hopefully inspirational, and maybe a bit scandalous.

After this I’ll probably pass out for a few hours before my flight out later Wednesday evening. But if I actually make it to any sessions afterward, this is what they’ll be:

1:00 – Paul Robertson or Jun Heider
Again, torn between two sessions. I’ve heard Jun gives a really good presentation (which I’ve never had a chance to see), but I could probably also use the information about AIR encrypted databases and security that Paul will be covering. I’ll probably walk back and forth poking my head into a few sessions during this slot.

2:30 – Ryan Campbell or Adam Flater
I’ll probably duck into both these sessions because I’m curious what kind of examples Ryan is going to show that use OpenFlux, but I’d also like to get the lowdown on Merapi (and heckle Adam from the back of the room). So we’ll see what I end up doing. Will be jumping around again for these sessions.

4:00 – Ryan Phelan – Bending and Flexing
Last slot of the conference, that’s a tough one. God bless you all for holding it up at the end, someone has to do it. I’d love to check out the presentation on Pixel Bender (is this really the only presentation about Pixel Bender??). My flight out of Indianapolis leaves at 6pm, so I assume I’ll have to miss this session, which is a shame because I could really use some Pixel Bender knowledge. I wonder if any of the other sessions will be mentioning Pixel Bender…

So that’s my initial list. Like I said, this is just the stuff that I’m interested in, not an endorsement or ranking or anything like that. If I didn’t put your session down you can feel free to come punch me in the face at the conference.

If you’re going to be at 360|Flex definitely come to my session or stop me walking around and say hi. I will definitely be at any of the parties or bars, so come share a beer 🙂


Interview up on InfoQ

screenshot102 An interview I did with Jon Rose of InfoQ was just posted. I talk about my experience with Flex component development, the Flex commuity as a whole, and the current state of the enterprise software market in general. I’ll probably get some shit for some of my comments about enterprise software where I say that it’s all “almost uniformly horrible” 🙂 I don’t really mean to call all enterprise software crap, it was more a broad strokes comment, the kind I’m apt to make after a few beers. So if you’re making awesome enterprise software, don’t be mad at me, keep doing awesome stuff.

Here’s just a small excerpt from the interview, read the entire thing at InfoQ.

Enterprise software is almost uniformly horrible, but there’s no reason for that. We’re seeing a “UX revolution” in RIA design, and for all the buzzword nonsense surrounding “user experience, ” there’s something real happening in terms of the overall quality of the experience delivered by RIAs. We’ve seen some really great and innovative work in consumer RIAs, with a trend toward simple and intuitive interfaces. And yet in enterprise software this trend has barely even begun, it’s all still complex. I want to see enterprise applications treated like consumer apps, with the same attention to the user experience and with a consistent drive to simplify and make everything more intuitive. Complex systems don’t have to be presented with confusing software. But it takes more work to figure out the simple, elegant solution. It’s far cheaper and faster to make bad complex software than good simple software.


FlexCamp. Miami. Friday.

UPDATE: This event has passed. For some reason this post showed up again on the Adobe aggregator. Apologies for that, don’t got to Miami on Friday unless you just want to get some sun.

If you’re in the Miami area or could use a nice weekend vacation, go check out FlexCamp Miami and get your Flex groove on Miami Vice style. The event’s got a great lineup of speakers and some pretty dope topics from Flex 4 to frameworks to robots to UX. I hear that Andy Powell’s session that’s called “How to Blow Your Mind with AIR” might actually have blow for all attendees. And word on the street is that Greg Wilson from Adobe is going to be doing the keynote in his underwear. If you’re in the area you should definitely stop by, and if you’re from out of town maybe you can grab a plane ticket for dirt cheap (stimulate that economy!) and fly in and even buy up some nice foreclosed waterfront property while you’re there. The event itself is recession-priced at a measly $30, and you can even pony up the cash at the front door when you walk in.

Friday, March 6, 2009

Hurricane100 Room
BankUnited Center
University of Miami


Disclaimer: I have no actual information that suggests Andy will be dealing drugs or that Greg Wilson will be naked.


How are you doing global exception handling in Flex/Flash/AS3?

On the project I’m currently working I was recently assigned the following bug:

runtime errors hose application
It seems that when a RTE encountered, the app is pretty much hosed (somewhat unpredictably) until the app is reloaded.

Since non debug players simply swallow the error without any other action, I assume users of the nondebug player who encounter RTEs will report odd behavior with is more of an effect that a cause.

Is there anything we can do to handle this any better?

This is a well known issue with Flash Player. There’s no global exception handling. It’s the most voted on issue in the Flash Player bug database (https://bugs.adobe.com/jira/browse/FP-444). It’s duplicated within the Adobe bug database a few times, and even one of the duplicates is the second most voted on bug in the AS Compiler bug database (https://bugs.adobe.com/jira/browse/ASC-3139). Combine those votes and you’ve got by far the single most wanted feature in Flash Player.

My initial response to this issue was to just say it’s impossible given the current state of Flash Player. But then I got thinking about possible solutions.

What about using JavaScript?
So let’s say I’m resigned to the fact that I cannot have any kind of global exception handling. What if I set up a simple pingback function in my Flash application that was called with JavaScript through ExternalInterface? The only purpose of this function would be to notify the HTML wrapper that the application is responding. Basically the HTML pages says “Yo Flash, you alive?” and Flash says “Yup, still pinging!”

Then if you ever don’t get a ping back you know that something is seriously wrong. Like, application-is-totally-hosed type of seriously wrong. You could then at least display a big ugly crash screen overlay on top of your app and give the user a little description field to file a bug report to tell you what they were doing when the app broke. You wouldn’t be able to save the app from breaking, but you would at least tell the user that the app is broken (which is much better than letting them keep trying to use a broken application) and you might get valuable bug reports to help you find the issue.

So here’s my big question:

In your experience with Flash applications and runtime errors that cause the application to stop functioning correctly, would a simple pingback function of the main application:

  • A. continue to run after the RTE (since the pingback function is so simple, doesn’t do any Flash rendering, or for whatever other reason)
  • B. always stop running after a RTE
  • C. sometimes keep running and sometimes stop running depending on the type of RTE

I have a feeling that the answer is C, which is half useless (although might be better than nothing). But if you know for a fact that you can write some kind of function that will always stop running after ANY runtime error in your application, please let me know (maybe this could include checking something in one of the Flex manager classes? verifying your main application is still laying itself out to the right dimensions? still able to add and remove a simple item from the stage?).

Yes, I am crowdsourcing my bugs.