HossGate09: Finding Balance.

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, has a penchance for spending too much time on online slots casinos (and winning more than he loses on them in general), 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.

RegExr 0.3b Released: Share & Save RegEx!

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.

Idle CPU Usage in Adobe AIR and Flash Player

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%.

AS3 Performance Testing Harness

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 →

Adobe Releases AS3 Facebook API

Adobe just released the “ActionScript 3.0 Client Library for Facebook Platform API”, which is a wordy name for a pretty straightforward AS3 Facebook API we’ve been working on for the past few weeks.

The library is an updated version of a library originally developed by Jason Crist. We’ve been working with Adobe, Facebook, and Jason to extend it to support all of the Facebook APIs (Canvas, Connect, and Desktop), and to clean up some of the code. That’s not to imply that Jason’s original work wasn’t great, there’s just a limit to how much you can do for free as one guy on an open source project.

The end result is an open source AS3 API that mirrors the documented Facebook API almost exactly. We’ve also added a few helper methods, and some samples to make it easier to get started.

You can get more info here, or grab the library from google code here.

Free Update to Flash CS4 Project Panel

As many of you know, the project panel in Flash CS4 is a rebuilt version of the gProject panel that Adobe acquired from us. For a variety of reasons, the project panel shipped with a few rough edges that I was never entirely happy with. So when we had some free time here at the office, we looked to rectify some of those issues. Here are the major changes:

  • Skinned to match the CS4 interface (based on Library panel)
  • Tightened up the actions menu
  • Added a utilities submenu, which you can add your own utilities to
  • Specify whether to open files in Flash or via the OS on a per file type basis in Panel Preferences > Settings
  • Option to import assets to stage or library in Panel Preferences > Settings
  • Shrunk some dialogs, and made them scroll to reduce minimum panel size
  • Added more file type icons
  • Added an API for scripting the panel with JSFL (details below)
  • Minor UI tweaks

Continue reading →

GTween and Tweenlite Unite?

I have always had a lot of respect for Jack Doyle. Before creating gTween, his TweenLite library was my tweening library of choice – I’m even a member of Club Greensock. We have stayed in touch since I released gTween, and I’m happy to announce that we are currently evaluating ways to integrate the two tweening libraries to create something better than either of them.

Jack will bring years of experience building tweening engines, boundless energy and enthusiasm, and a dedication that I simply can’t match to the new library. I will hopefully be able to contribute a lot in terms of new ideas, formal architecture, code cleanliness, and hopefully even the odd optimization

here and there.

We’re hoping we can bring the best of both projects into a combined library, and would love to hear what you’d like the end product to be. For example, if you’re a gTween user, what made you choose it over TweenLite? Or vice versa. Feel free to give us feedback in the comments below or on the Greensock forums.

There’s no guarantee that this collaboration will bear fruit, but we’re both committed to trying. One phenomenal tween engine would be preferable to two great ones.

I will release at least one more version of gTween, fixing a bunch of issues and adding a few minor features. I realize that people are using this library actively, and have no intention of simply dropping support and leaving them at the mercy of existing bugs.

You can get additional information on Jack’s blog entry. We’re both very excited to move forward with this, and hope our respective users are too!

#tweetcoding Winners Announced!

We just announced the winners for round 1 of tweetcoding. There was a surprise tie for first place between @tomee6’s “diagonal snake” and @piXelero’s “Tunnel of Stripes“. Thankfully, our wonderful sponsors, Adobe and Friends of Ed, were nice enough to accommodate the tie, and both winners will be getting a copy of Flash CS4 and AdvancED ActionScript 3.0 Animation.

The two runner ups, @vectorcinco’s “the drummer” and @dickwolf’s “Ghost Marquee” will each receive a copy of AdvancED ActionScript 3.0 Animation.

All three judges (me, Ted Patrick, and John Grden) had a very difficult time narrowing down the field of almost 250 entries to our winners and runner ups. We judged entries based on aesthetics, code, interaction, and uniqueness at time of submission. It’s a testament to the high quality of submissions that with 3 of us making top ten lists, we wound up with 24 different entries.

“diagonal snake” is an amazingly functional game for 140 characters of code, even having a death sequence. “Tunnel of Stripes” is highly polished with the glow effect and even some basic interaction. “the drummer” was an awesome example of interactive sound in so little code, and “Ghost Marquee” both looks good, and has some insane code powering it.

Be sure to check out the #tweetcoding round 1 winners page to see these entries, and the other 20 entries that made our judges lists.

We will definitely be holding another #tweetcoding contest in the near future. I’m working with a couple of people to polish up the interface and automate things a little more. I also want to incorporate the language translations people graciously provided. Once that’s done, I’ll probably put out an open call for people to suggest gimme code frameworks.

Thanks again to our sponsors (Adobe and Friends of Ed), our judges, @machine501, and everyone who contributed an entry, blogged it, tweeted it, or otherwise got involved. It was a ton of fun, and I can hardly wait until the next one.