I've been trying to decide how I feel about all the commotion over Hoss Gifford's session at FlashBelt 09, and whether or not to chime in on the whole matter. However, as I watched a few understandably upset individuals snowball into a torch wielding mob RT'ing themselves into a frenzy (ex. @hudsonakridge "Hoss Gifford should be set on fire"), I decided I would proffer a few thoughts.

This was a very tough decision for me, because I'm between a rock and a hard place. On one hand I am risking becoming a new target for the frothing mob, and on the other hand I risk damaging my friendship with Hoss, whom I have known for years. At the end though, I am a believer in moderation, truth, and positive action, and I hope that by adding my own thoughts I can help to steer all of this energy in that direction.

I'm also distressed to see all the bad press this is causing for Flashbelt - Dave did an awesome job on the conference, and I would hate to see this become the primary thing it was remembered for.

I'd like to begin by clarifying some of the things that have been stated about Hoss's presentation:

  1. Yes, his session did open with a photo of him looking up at a (largely obscured) picture of a woman's groin clad in panties that read "drink me". No, this was not photoshopped - it is the entrance to a rather well known club in Amsterdam. Was it irrelevant, and needlessly obscene? Probably.
  2. Yes, he did draw a penis on stage (poorly). It was in the context of explaining that any time you give people a blank canvas to be creative on, they will immediately draw penises and swastikas. This is unfortunately true. Did he go beyond what was necessary to make the point, and wring it for frat house comedic effect? Most definitely.
  3. Yes, he did show a "orgasm simulator", which showed a female face working through 4 or 5 expressions up to orgasm as he moved the mouse up and down. It was crude, and didn't really have anything much to do with his theme, but it wasn't explicit. It's also worth noting that it was originally built for a bar setting at Flash conference in Amsterdam (context matters).

Was Hoss's session crude, juvenile, and unprofessional? Absolutely. Was it inappropriate for the conference? Probably. Was it poorly described in the session book, and a mistake to run it as an all-call "keynote" session with no warning as to the content? Certainly.

Was the session sexist or misogynistic? I don't believe so. It was definitely crude and borderline obscene, and I can see how it could be offensive, but I think you'd have to work hard to describe it as sexist. I actually feel strongly (as does my wife, who was in attendance) that the people calling the session sexist are showing themselves to be sexist. To suggest that showing crude sexual material (including genitals of both sexes) to an audience of men is fine, but to show it to women isn't, demeans women's sexuality and their intellectual/emotional ability to handle crude material. My wife agreed that the material was not appropriate for a professional conference, but she was at no time offended or felt that it was sexist.

--EDIT--
There seems to be a lot of confusion about the definition of sexism and misogyny. People are confusing sexual harassment (unwanted sexual contact or advances) with sexism (discrimination based on gender) and misogyny (a hatred of women). I can understand lumping Hoss's talk into sexual harassment, but it was not directed at only the women in the audience. The crudeness of the content was targeted at everyone in the session, and was reasonably balanced in terms of gender participation. Likewise, calling it misogyny is just being sensationalist. Hoss at no time indicated or promoted a hatred of women. Let's get our labels straight so that we can talk about this maturely and reasonably.
--

I wonder whether the accusation of misogyny was leveled because it carries more weight than crudeness and obscenity.

While none of the following excuses that the session was inappropriate, I think it is worth knowing a little bit about Hoss before you polish your pitchforks and light your torches. Hoss is a marvelously friendly, fun, intelligent, and generally respectful man. He is a good friend, and an excellent father, and from what I know is very good at his job. He has a crude, juvenile streak a mile wide, and definitely jumps over lines of appropriateness without a backward glance. This can be pretty entertaining over some pints with a close group of friends, but doesn't always translate well into public speaking.

Hoss has been doing crude, frat-humor laden sessions for years now, and I've never heard of a complaint in the past. This isn't to suggest that makes it ok, but it's worth noting that this is what he's known for, and what has become expected from him, both by attendees and conference organizers. Recently he confided to me that he would like to do more professional sessions oriented on his work, but has met resistance from conference organizers that want him to entertain, not teach (I'm not at all suggesting Dave is one of these). While I'm not defending his content, it is important to understand that he has been pigeon-holed into it. He chose that path, and he could likely break out of it, but as everyone knows its hard to give up on something that people say you're great at.

I can also sympathize with him a bit because I had an attendee complain that a session I ran a few years ago (playing with yourself for fun and profit) was full of juvenile humor. I haven't had a complaint before or since, but it showed me how people's threshold for appropriateness varies wildly. It only had a few slightly suggestive jokes (none any cruder than the title), but it obviously offended someone.

With all of this in mind, I think we have the opportunity to make a positive change, rather than just lynching Hoss and Dave. I can guarantee that other conference organizers are following this, and revising their plans. Likewise, I'm sure Hoss is trying to reconcile this reaction with his previous experiences of being congratulated for identical behaviour, and pondering his future as a speaker.

I don't think anyone wants the Flash community to become a dry, corporate, politically-correct group of stuffed shirts. At the same time we definitely want to be sure its inclusive and comfortable for everyone. Let's look at how we can encourage this environment in a positive manner. Rather than taking the easy road of joining a witch hunt, provide feedback to organizers and speakers, support programs that encourage diversity in tech, and model positive behaviour to your peers. It's always easier (and hey, more fun) to be sensational than productive, but hopefully some of this energy can be steered into creating real change.


-- UPDATE --
Links
Stacey Mulcahy, a fellow speaker at FlashBelt, has posted a great response everyone should read.

Niqui Merret, another fellow FlashBelt speaker, has posted her thoughts.

Hoss has posted his response. You can read it here.

I'm happy to announce that we have released RegExr 0.3b. The most significant feature additions are the ability to save your patterns locally, and to share patterns on a searchable community database of regular expressions.

RegExr is a tool for learning, editing, testing, and sharing regular expressions (RegEx or RegExp for short). It is available online at RegExr.com, and as a desktop application for Mac OSX, Windows or Linux at regexr.com/desktop. Its features include:


  • real time results: shows results as you type
  • code hinting: roll over your expression to see info on specific elements
  • detailed results: roll over a match to see details & view group info below
  • built in regex guide: double click entries to insert them into your expression
  • online & desktop: regexr.com or download the desktop version for Mac, Windows, or Linux
  • save your expressions: My Saved expressions are saved locally
  • share and rate expressions: search Community expressions and share your own


If you encounter any bugs or have any ideas for improving RegExr, please let us know in the comments below.

I love Adobe AIR! I think it's an amazing platform with a huge amount of potential. However, AIR has one problem that could earn it a bad reputation before it has a chance to truly realize that potential - idle CPU usage.

Try this on a Mac: open FlashCS4. Create a new, completely empty FLA and publish it as an AIR file. Install it, run it, and examine it in Activity Monitor. On my brand new MacBook Pro, that completely empty AIR application uses nearly 4% of my CPU. Doing nothing. In the background.

Now look at the types of applications that are popular on AIR: Twitter apps, news apps, notification apps, mashups. Applications that are designed to be left open all the time. Open a few of these up at once, and you're committing a decent chunk of your CPU to them. And that's when they're doing nothing. I typically have 10-20 applications open at all times. If these were all AIR applications, half of my CPU would be used just from having them open.

Expected CPU use for an idle application doing nothing is ~0%. An acceptable level is <1%. AIR must fit into this range cross-platform to be a serious contender on the desktop.

This issue does not affect Windows. I haven't tested on Linux yet.

It's also worth noting that this problem isn't limited to AIR, it appears to be an issue with the player itself. Try the same test with an empty SWF running in the standalone player or the browser, and you'll notice the same kind of CPU usage. I believe this may be part of the reason that FlashCS4 on the Mac eats so much idle CPU - it has at least 2 instances of the Flash player running in it, one for stage core, and one for panels.

I've been in contact with the team at Adobe, and they have acknowledged that they are aware of the issue, and are actively working to address it. Despite that, I felt it would still be good to write this post for three reasons:

The first reason is to create awareness of this issue, and hopefully through that awareness help to generate some external pressure on Adobe to fix the problem in a timely manner. If you feel this issue is important to you, spread the word about it, and please vote up bug #FP-2009 in the Flash Player bug system. To do so, register on Adobe's JIRA bug system, do a quick search for "FP-2009", and vote for the issue using the link in the left column.

The second reason is that I've had to explain this issue to our clients a few times recently, and I thought it would be useful for other developers to have a post explaining and validating the issue so they could refer their own clients to it.

Finally, I thought it would be good to provide a location where developers can share tips on working around this issue until Adobe addresses it. As a start to that, I have created a simple class that will automatically reduce your application's frame rate when it is in the background, and restore it when it regains focus. You can also temporarily restore the framerate while in the background (for example, if you loaded some new data and wanted to transition it in smoothly). Reducing the framerate is the best method I've found so far for improving idle performance. Using the class is simple:

// this should be called as soon as your application starts up and has an open window.
// the first parameter is optional, and specifies the background fps to use (default is 1)
FramerateThrottler.initialize(2);

// set enabled to false to temporarily restore the framerate while in the background, or prevent it from reducing the framerate
// when your application moves to the background:
FramerateThrottler.enabled = false;

// you can also specify whether to only use this feature when running on a Mac:
FramerateThrottler.onlyThrottleOnMac = true;

You can download the FramerateThrottler class here.


Update:
Robert Christensen, Sr. Product Manager for Adobe AIR has posted an entry on the AIR Team Blog addressing my concerns titled "Performance Tips for Adobe AIR. I think its awesome how responsive Adobe is to issues like these! Thanks Rob!

Arno Gourdol, Sr. Engineering Manager on the Adobe AIR team just posted a blog entry on "Writing well-behaved, efficient, AIR applications". The suggestions break down to reducing your framerate (see above), and minimizing the use of Timers and enterFrame listeners. Worth a read.


Update 2:
As a real world example, we added FramerateThrottler to an AIR application we are currently working on. It was originally using 5-10% CPU idling in the background, with FramerateThrottler it's now using 0.5%. We also tried setting mouseEnabled and mouseChildren to false on the stage of all open windows while in the background, but that had minimal effect, dropping it to ~0.4%.

I recently decided to retest my results on uint, int and Number performance to see what had changed in Flash player 10 (more on that in my next post). I got a little carried away, and wound up building a generic performance testing harness for ActionScript 3. I've been meaning to do this for awhile, but hadn't gotten around to it until now. It's not that its very complicated, it just required a lot of thought into specifically how I would want it to work.

I think the nicest thing about the test harness is how flexible it is. You can easily use it to quickly test a couple of functions on the timeline, or you can build a full set of performance testing suites to support a project under development, similar to unit testing.

Even test suites are super simple. Point it at an instance of a class, and it will test all the public methods on it. Or, use properties or parameters to formalize the tests with names, descriptions, and specific method lists.

You can even use PerformanceTest to test the render time for complex vectors or filters.

You can also easily customize how it logs the results of tests to output them differently, save them to a file, or graph the results.

Continue reading "AS3 Performance Testing Harness"
Powered by Movable Type 3.14 | Hosted by Media Temple