Archive for the '360Flex' Category

360Flex ATL360|Flex wrapped up on Wednesday and I wanted to do a quick writeup of my overall thoughts about the conference. First off, I think this was the best Flex conference ever put on. That’s a bold statement because I haven’t been to some of the other Flex conferences, but I’m fairly confident it’s true. I’ve attended the previous two 360|Flex events and each time the conference just gets better and better.

The speakers are getting damn good
The Flex speaker roster has matured a bit, this conference marked the third 360 event that some of the speakers have done (this was only my second conference as a speaker). I think you can see very visible improvement in both the content and presentation skills of the speakers. There were two sessions I’m kicking myself for missing: Jun Heider’s presentation about memory management, and Michael Labriola’s presentation on what happens during the first few milliseconds of your application startup. Both speakers have posted their slides and material. Hearing the buzz around the conference, it sounded like those two presentations were two of the absolute highlights.

Here’s my theory on why those presentations were so good:

  1. The speakers are maturing in terms of Flex expertise and speaking skills. Both Michael and Jun spoke at previous events (previous 360|Flex and also MAX). It takes a while for speakers to find their groove, and I think with a lot of the Flex speaker roster we’re seeing that people are now at the point where they are confident, badass speakers.
  2. The content is crazy technical and the audience is ready. Previous Flex conferences have been dumbed down in terms of the advanced sessions. 360|Flex Seattle was more technical than the first one in San Jose, but it still didn’t meet the needs of the advanced Flex users out there. This was a tough line to walk, though, because if you did an uber-technical preso you probably would have had about 10 people in the room and only 5 would have understood what you were saying. Jun and Michael’s sessions were way more technical than anything presented at previous 360 conferences. And the audience was able to get it. That says a lot in terms of how much better everyone is getting. I think both of those sessions would have probably bombed at the first 360|Flex back a year ago (god, was that really only a year ago?).

Reflection on my sessions

screenshot010.jpg
(Photo by John Mason)

I had a really good time presenting at this conference. I apologize if I offended any of the sign language translators :) (if you weren’t there let’s just say I had fun getting them to translate certain phrases). My main presentation was on using open source community projects and I’ve posted all the slides and sample code. I thought this session was fun, although I think I crammed a lot of stuff into the 80 minutes and didn’t have as much time as I would have liked for the kind of organic discussion that I find so fun. When I originally told Tom and John the idea for my session they suggested doing an all-day hand-on session on the topic. If I wasn’t so lazy I actually think this would be a really good all-day type of thing. Maybe in the future we can get enough speakers to tag team it, so nobody has to spend the whole day presenting.

The second session that I did, which was unplanned, was a session on building your personal brand. Juan Sanchez and I teamed up for this session and talked about our different approaches on branding and marketing yourself. This session was in place of Jesse Warden’s originally planned session that was on a similar topic (although Jesse planned on covering a lot more content about the business side of things). BTW, if you attended 360, Jesse’s original presentation PDF is on the USB stick, check it out in all of its 215-slide glory. As for me, I had about 8 slides I whipped up 20 minutes before the presentation. This session was a pretty awesome discussion, most of the people in the room contributed and talked about their experiences. Jeff Houser was there and talked about brand building from the perspective of a business-owner (ie not a crazy egocentric nutjob developer like myself). I think the topic of branding is hugely important, and I’d like to see this kind of content presented much more at these kinds of conferences.

I want videos again
This year the presentations at 360 weren’t recorded, and I’m really wishing they were so I could watch Jun’s, Michael’s, and a bunch of other sessions. Last year I didn’t watch the videos of anyone else’s sessions, primarily because the technical level of the content wasn’t quite there. Now I’m pissed because I know there’s some seriously good information in these presentations that I missed (and reading through the slides isn’t nearly the same). I vote for recording this stuff again, even if next time that means we each do it ghetto style and and just stick a crappy camera in the corner of the room.

I love you guys
This is the best developer community. I heard over and over again during the conference about how nice everyone is. There are no asshole prima donna speakers, everyone is approachable and friendly. That goes for the speakers, everyone from Adobe, and all the attendees. Everyone’s just authentically nice. The Flex community is going to grow dramatically over the next few years. Let’s try to keep this awesome small-community vibe that we got going on. This community vibe is why I love presenting at 360|Flex (and the main reason I don’t present at other larger conferences).

Thanks Tom and John! You guys rock.

screenshot009.jpg
(photo by Terry May)

Here are all the examples I showed today in my session at 360|Flex. The demos are the Physics Form, VistaFlow 3D, WindowShade + Degrafa, MP3 Thumbnail CoverFlow, and FlexSpy Event Listeners. All examples have the full source code available and I’ve tried to write up brief descriptions about each one. I’ve also posted a PDF of my slides. View the slides here.

Physics Form
I mashed together the most generic, boring, crappy Flex form example app with a physics engine. The end result is an example that shows how you can add in physics simulations into “normal” applications (as opposed to only games or whatever). In the example below, click on the Login button to watch what happens (hint: after you click login try dragging around the controls). Oh, and I threw in the PromptingTextInput component from FlexLib to meet my requirement of using at least two open source projects in each example.

This movie requires Flash Player 9.

Open source stuff used:

View the example | View Source

VistaFlow
This example uses the FlexMDI library (now part of FlexLib!) to manage multiple open windows and switch focus between them. I combined that with a slightly modified version of my CoverFlow component that I posted before, and I made an effect similar to Vista’s Flip 3D. When you launch the example try adding a few windows with the “Add Window” button and then press Shift-Enter to cycle through the windows (ie hold Shift and then keep pressing Enter to move through the list of windows).

screenshot006.jpg

Open source stuff used:

  • FlexMDI (now in FlexLib)
  • Extended Flex CoverFlow component

View the example | View Source

WindowShade + Degrafa example
In this example I used the newly added WindowShade component in FlexLib, combined with the CanvasButton control (also from FlexLib), combined with Degrafa for some custom graphics drawing and CSS skinning. It’s a simple example of creating a “drawer” type of component that docks to the top of the screen and drops down when the user clicks the handle.

screenshot007.jpg

Open source stuff used:

View the example | View Source

MP3Flow AIR app
This demo is an AIR application that lets you drag and drop MP3 files onto it and it will extract the thumbnail image from the MP3 file and use that image in a CoverFlow UI. To extract the thumbnail I’m using Metaphile, which is a project created by Ben Stucki for reading and writing metdata from files. This app also uses another of Ben Stucki’s components, which does the audio visualization stuff.

screenshot008.jpg

Open source stuff used:

NOTE: I used the last AIR/Flex 3 Beta for this example. I have not updated it to AIR 1.0. If you have the new AIR 1.0 runtime I assume this app will not install. I’ll try to update this example within a few days, but for now it will probably only work if you have not upgraded the AIR runtime on your machine.

Download the AIR installer | View Source

FlexSpy with Event Listeners
I decided to show this example even though I had already released the code on my blog. I realized that this example was perfect for showing the benefit of keeping a running list of open source projects in your head. I remember seeing FlexSpy when it first came out, I read about it on a few blogs and briefly checked it out by playing with the example. But I didn’t ever download the code or use it in my app. And then last week when I was monkey patching FlexSprite to add extra event listener functionality and I realized that this was a perfect place to use FlexSpy. I couldn’t remember the exact name (I thought it was something like Flexray), but I googled around, determined to find the project that I knew existed. Pretty quickly I found it, pulled it down, started reading the source and hacked in the functionality I wanted.

After doing that I realized that this is exactly what I was going to be talking about in my 360 session. Since I had been reading Flex blogs when FlexSpy was released I at least knew it existed. Since I love open source projects I had initially checked it out and understood what it did. Then later, in a completely unrelated project, something clicked in my mind and from some far corner I pulled up that memory of the FlexSpy project.

Open source stuff used:

View the example | View Source

screenshot004.jpg
Degrafa
screenshot005.jpg

So tomorrow at 360Flex at 10 am we’re getting together a bunch of open source Flex developers to talk about a few key open source projects, what it’s like to start an open source project, and whatever other random stuff people want to talk about. The truth is, I don’t know what will end up being covered, it’s sort of an open panel discussion thing. The basic idea went something like this: since we’ve got a bunch of guys involved with various open source projects all at the same conference, why not shove em all in the same room and see what happens? So Adam Flater’s going to talk about Merapi, some dudes from the Degrafa team (Juan, Andy, Pavan?) are going to talk about Degrafa, Ben Stucki’s going to talk about OpenFlux, I’ll probably say something about FlexLib, and Ben Clinkinbeard will talk about flexmdi. This is going to be pretty informal, I don’t think we’re going to have slides (unless someone is going to be a dork and over-prepare). So we’ll just hang out and talk open source and Flex. And if you’re working on an open source project be sure to come by and tell us all about it.

When: Tuesday @ 10 am
Where: Maple Room A (Hands-on room)

My talk at 2:30 – Using Open Source Community Projects
I’m also giving my presentation at 360|Flex tomorrow at 2:30pm. My session has a similar theme, but will be entirely different content. I’ll be talking about a wide range of open source projects out there that you can use (physics, 3D, graphics, audio, etc etc). The official sub-title of my presentation is “How to be lazy and make cool shit.” I’m showing a bunch of cool examples (well at least I think they’re cool…) of mashing up various open source projects to make impressive looking stuff without much work. I won’t be digging into Degrafa, OpenFlux, or Merapi, since those will be covered in the panel discussion in the morning and other individual sessions later in the conference.

Oh, and I’ll have an extra hand-bedazzled 360|Flex shirt (like the one Matt Chotin wore at today’s keynote) to give out at my session, so if that doesn’t make you want to come to my session I don’t know what will. Come to my session, it’ll be fun.

When: Tuesday @ 2:30
Where: Pine Room (Custom Components room)

This conference rocks hard
360FlexThis is probably the most fun I have ever had at a conference. Seriously. This community just frickin’ rocks so much, it’s like hanging out with good friends for a few days. Juan Sanchez and I filled in for Jesse Warden today (get well Jesse!) and had a really fun session about building your personal brand. We got a sweet discussion going and people had awesome stuff to talk about in terms of marketing yourself and getting famous. I had a blast and I hope the people in the session enjoyed it.

Since the next 360|Flex is fast approaching, I thought I’d post the full recording of my session at the last 360|Flex in Seattle. You can do whatever you want with this video, embed it wherever, watch it wherever, you can even download the original mp4 video file. Hopefully the embedded video is good enough quality to read the code on the screen, if not go ahead and download the full size version, that’s the best quality we got.

At the next 360|Flex at the end of this month in Atlanta I’ll be speaking on “Using Open Source Flex Projects”. If you’ve never been to a 360|Flex event, maybe this video will give you an idea of what they’re like. An important thing to note in this video is that there might be chunks of silence when people in the audience were speaking. I didn’t do the best job of repeating everything people said, but it wasn’t like I could just repeat questions people asked. The session was really a discussion among lots of people in the audience, and it really had a great community vibe to it, with people answering each others questions and teaching me lots of cool stuff. That’s what I love about the 360 events, it’s just a bunch of dorks hanging out and talking shop.

My 360|Flex shirts and my bedazzler just arrived, so I’m now officially pimped out and ready for 360|Flex in Atlanta next month.
atl_shirt3.jpgliljohnatl.jpg
The picture doesn’t really do the shirt justice, but in real life as I move it sparkles, take that Lil John.

A few pictures of the bedazzling in progress:
atl_shirt1.jpgatl_shirt2.jpg

You can order your own shirt with the bling 360|Flex logo here. Assuming I have extra rhinestones I’ll probably bring the bedazzler to the conference, so if you want to get your shine on between sessions you can pimp your own gear. I’ll also have a few extra bedazzled shirts, one of which is going to the winner of the Degrafa contest.

If you haven’t made up your mind about coming to 360|Flex you need to go buy your ticket now.

So Tom and John, the guys putting on the 360|Flex conference in Atlanta in February, asked me to make a logo/badge for the conference. The conference is in Atlanta, so they wanted me to do some kind of design like a peach. But if the peach doesn’t satisfy your inner bling bling pimp, here’s a real ATL badge.

360Flex ATL

Cha-ching! I’m getting this on a t-shirt and I’m getting a bedazzler and putting rhinestones all over it. It’s gonna be hot.

If you want to use this badge on your blog or wherever, you can download a zip file here that contains the badge in various sizes. Here’s a version at 150px wide that might be good for a blog sidebar.

My presentation that I gave at 360Flex has been translated into Chinese by Robert Shuie. Thanks Robert! He translated my slides, as well as my blog post about the samples I presented. This is a bit of old news, since this happened about a month ago, but I’m trying to catch up on my life so I’m finally getting around to posting now :) Anyway, fricking sweet that we’ve got such an awesome Flex community overseas that someone goes through the trouble of translating presentation slides.

Robert sent me an email when he did the translation and I loved this comment:

It is hard to translate “monkey patching” term into Chinese. I recently mark it as “????”, which means “force to evolve”. I have no idea if it fits the origin idea.

Ha :)

Here are a few small video clips from my 360Flex presentation. The first is my favorite moment in the presentation when I get applause for saying “God damnit, make that protected.” :) And the second clip is 7 minutes of the presentation where I talk about monkey patching (or “underriding”) the core Flex framework classes. I thought this was one of the cooler parts of the talk, so I decided to post the video of that section. You can get the full video (1 hour 20 minutes) of the presentation here.

The videos are licensed under Creative Commons license, so I’m supposed to do some attribution thing. They were filmed at the 360|Flex conference that was put on by John and Tom, video work done by Bryan Zug. You can get all the videos here. Cool?

The 360Flex folks have posted some of the recorded videos of the conference. You can see them all here, or here’s a direct link to mine. You can download the whole thing (my video is 280 megs). They’re selling the vids for $3.60, I think I get some kickback if you buy mine, although I’m unsure of the details.

So buy that! I’m gonna make millions. And I’m competing with Juan Sanchez for video “views,” so if you just want to go to the page and hit refresh a lot on my video that would help :) I’m gonna be a millionaire AND a cheat!

360Flex logoI’ve been reflecting on how my session at 360|Flex went. Overall I was very happy, I really enjoyed the communal vibe we got going with the discussions. The session ended up being a conversation among developers. I started out giving a presentation with slides and all that jazz, but that quickly got sidetracked and we ended up just sort of shooting the shit and sharing different tips on custom component development. Awesome. That meant I was able to chill and let everyone else teach the session. It kept me interested, and I hope it did for everyone in the session too.

David Coletta took notes during my session (as he did for all the sessions he attended at 360Flex, friggin good work with the notes David). I should also point out that David contributed a lot to the discussion while he was note-taking, impressive! Dan from polygeek.com has some thoughts on the session as well. He wrote that the “session itself was sort of open source,” which I think is really cool that that’s how it turned out. There are a few more notes on the session from some guy named Dave. Apparently he overheard someone say “will there be notes posted from this meeting? This is really kind of scattering my thoughts.” I worry that it was a bit too incoherent, I definitely jumped from slides to code to pulling up random websites to discussion. I hope it was a good balance for people, but I could see how it might have been difficult to follow.

If you have any thoughts about what you liked about the session and what you didn’t, please email me and let me know, or leave comments.

The thing I liked the most about the session is that I learned a bunch of stuff. I don’t claim to know everything about developing custom components, a lot of the people in my session knew a ton more than me. Here’s a list of the things that I learned during the session:

  1. I suck at properly using commitProperties and invalidating properties correctly for optimal component performance. This was pretty hilarious during the session because before the session I was talking to Deepa and she asked if I was going to go over when to use commitProperties and using dirty flags for property validation and all that. I said that I don’t know how to do that, I end up not doing it in my code, so no, I wasn’t going to cover it. She was appalled. It was like I told her I’m naming my first child Silverlight. So then the funny part is that I’m up there at the podium and the very first question that was asked was Andy McIntosh asking “Doug, can you explain when to use commitProperties?” I almost died, it was hilarious. So I promptly responded that no, I don’t know a good explanation of the proper use of commitProperties, would Andy like to discuss how he does it? And then Andy and Deepa taught the session for a while while I took notes. Awesome.
  2. Monkey Patching is a sweet term. I called it “underriding” classes in the framework, not sure where I got that term, it’s certainly not a “correct” term, but I didn’t have anything better. So then Tony Hillerson pipes up and tells me that in other languages there’s a term called monkey patching that is used to describe pretty much the exact same thing. Cool, I had no idea.
  3. There’s a [Mixin] metadata tag. I had never even heard of this. I was going over using a static function to initialize default styles for your component and then Adam Flater yells out that you could use the [Mixin] metadata tag and that would allow you to have an init() method that would get called once for your class. So in the session I pulled up the blog post on Adam’s site and we went over the code straight off his blog. Cool.
  4. I sound like Tom Hanks with Tourette’s. I disagree with this one, but it’s hard for me to judge my own voice. Doug Schmidt seems pretty adamant about this, so it must be true.
  5. Other random stuff. When we were talking about styles vs properties on custom components Tony talked about using both styles and properties to define the same property, which meant that a developer could take their pick and use either the property or the style (ie they could do it all with CSS if they want, or all via direct properties in AS). Nice, hadn’t thought of doing that. We all bitched about not being able to reference static variables for our Event names in the Event metadata. Doesn’t seem like anyone’s found a solution to that one (same for defining possible enumerated values for properties in the Inspectable metadata tag). Someone else mentioned that when I was showing my custom event code I had forgotten to have a Event.clone() function to clone the custom event. Yup, my bad, good catch. That’s what I love about participatory audiences.

We ended up covering a lot more material with a lot more expert knowledge than I would ever have been able to provide on my own. I think maybe instead of a single presenter running a session we should think about doing more panel-like discussions on a specific topic. Get four or five badass Flex devs together, have one person in charge of making sure things don’t get completely off track, and then just let the discussion take over. Let everyone share the tips that they know. It might end up being the worst session ever, but I think it would turn out really well. What do you guys say… Deepa, Tony, Andy, Adam, David, you all in?