Uncategorized

Sneak Peek at content from my CFUnited Presentation this Friday

CFUnited speaker badgeThis Friday, August 14, I’ll be speaking at the CFUnited conference in Virginia. My session is titled Riding Coattails to the Top: Using Open Source Flex and ActionScript Projects (yeah, I know my session titles are getting too verbose) and will be all about using the thousands of open-source Flex projects that are out there in the community. I’ll be covering projects like Axiis, Adobe’s Open Source Media Framework, computer vision libraries, and a host of other cool projects that you should know about.

I’m preparing a handful of demo applications that I’ll be showing off as examples of integrating some of the coolest open-source work out there. The goal of each example is to show how to integrate at least two open source projects together to create a sweet application. The screenshots below are from a few of the apps that I’ve been working on, just to give a little taste. If you’re going to be attending CFUnited be sure to stop by my session on Friday at 1:30.

osmf_example

twitpic_example

If you’re going to be at CFUnited be sure to flag me down and say hi or find me at the bar on Friday night!

Standard
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!

Standard
Flex/Flash/Actionscript

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

Slides

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.

Code

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.

Links

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.

Standard
Uncategorized

I got punk’d at 360|Flex (in my own session!)

So there I was at 360|Flex giving my presentation. I guess when you call your session “Cool Shit” you’re just asking for people to fuck with you 🙂 So I’m going through some example applications and I’m near the end of the session and I get to the grand finale. The demo I was about to show was an augmented reality demo, combined with some head tracking stuff too. And I figured since it’s called “augmented” reality I’d do a demo that really captures that word, so while standing there in front of a packed room of developers I take off my shirt to reveal an augmented reality marker on my chest. When I step in front of the webcam the video detects the marker and shows a big muscular chest instead of my wimpy geek body. As I was doing body builder poses and taking silly pictures, suddenly *whack* – I get hit in the face with a flying object. Not quite sure what the fuck just happened, so I keep going on with the presentation like normal (for some reason the fact that someone threw something that hit me in my face didn’t seem all that abnormal). Then suddenly there’s a massive barrage of projectiles raining down on me. It takes me a while to figure out what’s going on, and then finally I understand: the audience is pelting me with little bouncy balls. What the fuck?

This video of part of my session has been floating around a bit, and if you don’t know this back story you probably have no idea what the hell is going on. But check out the video, and when you see me posing with my muscles and then suddenly recoiling in pain, and then you hear everyone laugh, that’s when I start getting hit with a shitload of bouncy balls.

So it turns out that some devious developers (I believe led by Nate Beck) were out drinking at some place where you play games and get tickets that you can redeem for prizes (aren’t you boys a bit old to be at Chuck E Cheese?). So they get a bunch of tickets and what do they decide to cash in for? Bouncy balls. All bouncy balls. Then the next day they come in to my session, and I have no idea how they pulled this off without me noticing, but they hand out these little bouncy balls to everyone in the first few rows of the room. Apparently the instructions were: when Doug takes off his shirt, let the balls fly. Awesome. I guess word had gotten out enough that I was doing something that involved getting partially naked (either from my tweet or just from me spilling some details when I was out drinking). And you gotta admire the guy who threw the first one (and hit me right in the face no less), that takes balls (pun obviously intended).

So that’s the story behind that video for anyone who saw that and had no idea what the hell was going on. Nate, I admire your creativity, you got me good. But you better watch your back, I’m going to be sure to be in the front row of any presentation you might be doing 🙂

P.S. I’m working on posting all my slides and code from my session, hopefully I’ll get all that up tomorrow.

Standard
Flex/Flash/Actionscript

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!

Monday
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 🙂

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

Wednesday
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 🙂

Standard
Flex/Flash/Actionscript

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.

Standard
SpatialKey

SpatialKey launches private beta

All of us at Universal Mind who have been hard at work on SpatialKey are incredibly proud to announce that we have begun a private beta program.

To really launch this product in style, we’ve put together this video to give an overview of the SpatialKey system. Even after watching it a dozen times I get blown away every time I watch it. Make sure to check it out in all its HD full-screen glory!

We’ve also got a whole series of videos that go into much more detail of all the different features. If you spend a few minutes watching some of those we’re betting you’ll start brainstorming ideas about how you can use SpatialKey with your own data.

This private beta period means that you fill out the form requesting access and we will be adding accounts on a first come first served basis over the next few weeks. We will add accounts as fast as we can over the following weeks and then after this private beta period we will open the system up to a full public beta, at which point anyone will be able to sign up for a trial account. SpatialKey will be a software as a service product that you’ll pay for with a monthly subscription based on your usage and data needs (pricing details will be coming very shortly, for now all accounts are a free trial with a cap of 10,000 rows per dataset).

I’ll be posting much more about SpatialKey and what you can do with the software, but until then go check it out and let us know what you think!

SpatialKey has been a long time coming and it wouldn’t be possible without the fantastic work of everyone involved. A personal thank you (in no particular order) goes out to every talented member of the SpatialKey family: Darron, Ben, Andy, Zach, Reggie, John, Tom G, Anthony, Francisco, Robert, Mike, Brandon, and Tom L.

Standard
Flex/Flash/Actionscript

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.

When:
Friday, March 6, 2009

Where:
Hurricane100 Room
BankUnited Center
University of Miami

screenshot087

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

Standard
Uncategorized

My foray into tweetcoding

I finally broke my Twitter silence and tweeted so I could participate in the tweetcoding competition that Grant Skinner launched. Here’s the code of my amazing entry:

if(!i++) { o=new Loader(); o.load(new URLRequest([“http:”,,”is.gd”,”kUV9″].join(“/”))); } if(o && o.width) { stage.addChild(o); }

And here’s the link to the auto-generated SWF produced by that code.

So for those of you who have been following me on Twitter waiting for me to say something, I hope a dorky joke made of code is everything you expected and more. My entry is kind of cheating I suppose, but it’s all for a good laugh 🙂

The tweetcoding competition is really cool, and people who are taking it seriously (obviously myself not included) are making some really impressive stuff in 140 characters. If you haven’t perused the entries, go to this page and explore. Anything tagged with #tweetcoding is shown in that list, and all the entries submitted are automatically compiled.

And as a tip to others, if you’re going to do an entry, make sure to write it and test it in Flash. I first tried just doing an AS3 project in Flex Builder, but running code in an AS3-only Sprite-based project is quite a bit different than running code on the timeline. It wasn’t until I installed Flash CS4 and tested on the timeline that I got an entry that the tweetcoding compiler would compile correctly (I submitted 3 entries that didn’t compile).

Standard
Flex/Flash/Actionscript

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.

Standard