My FOTB presentation on “Robotlegs 2 and your brain”

Wow. What a blast presenting a session at Flash on the Beach was!

I was lucky to get it out of the way early – and to have plenty of friendly faces in the audience.

It’s somewhat difficult to recreate the session purely as a set of slides, as the interaction (which the attendees were very generous about) was key to the experience, but I’ve produced an extended version of my slide deck which includes the main points that I covered verbally and the instructions for the exercises. Do give them a go.

If you’re brand new to Robotlegs then the slides won’t sufficiently explain the architecture – you’ll need to pick up a copy of our ActionScript Developer’s Guide to Robotlegs for that!

I’m also pondering doing a VO / screencast version, but it would run at over an hour and I’m not sure you’ll want to sit through it.

So – for now, here’s the Slide Share embed, and don’t forget to pick up your “man brain” file from this post.

About the Author

I'm an actionscript programmer living and working in a tiny village in the Yorkshire Dales, UK. I used to be a TV reporter, but my inner (and often outer) geek won. I also write stuff. Most recently Head First 2D Geometry.

Visit Stray's Website

Share the post

Delicious It Digg this! Stumble this! Share on Reddit Share on Buzz Share on FriendFeed
  • Robert Penner

    So much content, wow! And very easy on the eyes.

    • stray

      Thanks Robert :)

      I explained the argument invalidator game during my presentation – I expect it to be an olympic sport within the decade!

  • Robert Penner

    That’s odd–the presentation is repeated. Slides so nice you showed them twice!

    • stray

      Oh – well spotted! Something flaky in the Slide Share processing. I’ll re-upload it and see if it fixes that.

  • Anonymous

    no, I’d sit through a screen cast of an hour. 
    not really sure what the man brain down load is for… can I jack it straight into the back of my head?

    • stray

      Ha! I’m afraid you still need your computer to actually run the “man brain” entry. (If you haven’t installed it yet then do that and all will be revealed).

      I’ll get that VO or webcam version done soon then.

      • Anonymous

        From what I’ve experienced from you already, soon probably means before lunch today…

  • Anonymous

    I want to start a stray fanclub. Ruby can be the president.

    • stray

      Ruby is *so* totally president of my fanclub already. She’s just the only member!

      Thanks Joel, I will mark this page and return to your comment next time I’m freaking out about being asked to write or present something and wondering what I could possibly have to say that everybody doesn’t already know.

  • Gavin Jackson

    thanks for posting these up, couldn’t make fotb this year and was gutted i was going to miss your talk. Robotlegs 2 looks great - loving the fluent builders but my favourite slide has got to be the spaghetti taco metaphor for view controllers – very apt!

    • stray

      Thanks Gavin – yes, we’re hoping hooks will provide people with something that definitely avoids the need for spaghetti tacos in future. To me, they’re the definitive example of things that you’d only choose to eat when drunk (or under the age of 10)!

  • Pingback: My FOTB presentation on “Robotlegs 2 and your brain” | xxcoder | Everything about Flash |

  • Neil Webb

    “Dependency Inception” … made me chuckle out loud :] Looks like I missed an excellent talk.
    (and +1 for the screencast)

  • Anonymous

    And I need to know more about CommandFlows!

  • Alessandro Bianco

    i’d totally sit through the screencast, the slides just wet my appetite and having someone explaining some of it would be great
    anyway, thanks for sharing with us who weren’t at fotb, rl2 is turning out to be awesome

  • Robert Penner

    I gotta speak up for constructor injection. Constructor injection lets you create a class that keeps the injected properties private, uses no metadata, and allows the constructor to enforce that dependencies are supplied if you’re not using the Injector. I use [Inject] a lot more these days. But I suspect many people don’t know you don’t have to use [Inject]. And I think a lot of people are unaware that Injector can inspect constructor parameters without using metadata.

    • stray

      Agreed – and I didn’t mean to imply that [Inject] was the only way – I just had about 4 minutes to cover that section of my presentation, to get those unfamiliar with RL1 up to speed before moving to RL2. The disadvantage is the disposable instance – which still feels a little hacky to me, but it’s definitely a technique worth including in your repertoire.

  • Alan Shaw

    Very DSLy, looks like it’ll be a real pleasure to use RL2!
    BTW do you know this paper about the evolution of jMock:
    Of course the fluent interface goes back at least as far as the 1970s UNIX principle:
    “always return this;”

    • stray

      Great paper – thanks for passing it on. I have Fowler’s book on DSLs. Lovely.

  • Jason Hanson

    Great slides!!  I have a question about RobotLegs 2 and the notion of Many-mediators-per-view on slide 126.  How does that pattern relate & contrast to a view with a multiple presentation models injected into it?  Does each mediator have a dependency on on the view, or is it the other way around?  e.g. do both mediators hold the instances of the same view, or does the view hold an instance of both mediators (in the ‘spaceshipMediator, enemyMediator, enemySpaceshipView’ sample).

    Thanks :)

    • stray

      Thanks Jason,

      Each Mediator holds a reference to the view. In the Robotlegs take on the mediator pattern, the view has no knowledge of the framework at all – it simply presents an API for the mediator to use (or any other class), and it dispatches events (or Signals) when Stuff Happens.

      • Jason Hanson

        Thank you for the clarification.  It will be interesting to see how that pattern (multiple mediators holding an instance of the same view) works out when it comes to race conditions, 

        EX: If both mediators are listening to the same application ‘event’, perform logic on the payload of the event, and then set a value on the “EnemySpaceShipView”.  For instance if the app needs to update the ‘hit points’ of the enemy space ship in response to a “laser zap event”.  The EnemyMediator may have logic to reduce the ‘hit points’ by n.  The SpaceShipMediator may have logic to reduce the ‘hit points’ by n – 10 (due to spaceship armor).  The is probably some way to solve this with inheritance, but just an example of a possible race condition.Very Interesting.  I am gong to think on this for a bit.Great work.–jason

        • stray

          That’s an excellent point Jason – and it’s a great example of how encapsulation can solve these things. If the mediator actually *sets* the hit points then you have a race condition, but if the mediators instead ask the view to *adjust* the hit points, then it doesn’t matter what order they happen in.

          That’s a beautifully clear teaching case for encapsulation! Expect to see it used by me a lot in explaining approaches to designing your API for working with RL2!

  • Pingback: Flash On The Beach – 2011 | Brondbjerg Design & Development Blog

  • Pingback: mvcExpress, PureMVC and RobetLegs code comparison | mvcExpress