Now to follow up [the previous post](http://squeedee.tumblr.com/post/388804844/robotlegs-on-the-wrong-foot), I thought I'd share a list of useful resources you can use to make your life better with [Robotlegs](http://www.robotlegs.org) MVCS. ## MVCS vs Core First, a very quick but important point. Robotlegs ["Core"](http://api.robotlegs.org/org/robotlegs/core/package-detail.html) is a very light prescription that defines interfaces only, for however you might want to structure your application. You can use as little or as much as you want. It is in fact, more complicated than the MVCS base implementation. I am going to focus on the [MVCS implementation](http://api.robotlegs.org/org/robotlegs/mvcs/package-detail.html). Notice those last two links are to the asdoc's of Robotlegs? I urge you to ignore them. There are better ways to 'grok' how Robotlegs works. ## MVCS is all you need. To write a fantastic, best of breed, cleanly coded, easily maintainable application, all you need is the Robotlegs MVCS. Sincerely. There are some nice additions cropping up that improve some aspects, but not so significantly that you can't do without them. ## MVCS is only part of the picture. To contradict myself, the Robotlegs MVCS is _only_ a prescription for your application architecture. Specifically, it helps you string together service calls, domain modelling, mediation of views and user generated events. On top of that, it gives you, by default, a supremely simple and efficient IoC framework called [SwiftSuspenders](http://github.com/tschneidereit/SwiftSuspenders). MVCS does not: - Replace a UI framework. - Replace a game loop. - Help with animations. - etc... It should be evident, that if you want some 2D physics functionality, it wont be in Robotlegs. But whatever you pick for your physics engine, Robotlegs won't get in the way :) ## Okay, So how do you get started? - Keep the [Robotlegs Best Practices](http://wiki.github.com/robotlegs/robotlegs-framework/best-practices) handy. - Install [Git](http://git-scm.com/) and a nice graphical Git client. I like [SmartGit](http://www.syntevo.com/smartgit/index.html) - Download the Robotlegs swc, it's simpler than working from the source. Use the download link on the [Robotlegs homepage](http://www.robotlegs.org/). - Use git to check out the [Robotlegs demo bundle](http://github.com/robotlegs/robotlegs-demos-Bundle). - Start with the [introduction to dependency injection](http://wiki.github.com/robotlegs/robotlegs-framework/best-practices#dependencyinjection) - Use the demo 'Hello[Flex|Flash]' example, and my favorite, the 'FlickrImageService' demo. You will find these in the demo bundle. The Flickr demo is Flex 4, but it still makes a lot of sense and works well as cliffnotes. - Continually re-read the Best Practices. ## Re-read best practices? Snore! No really. I don't mean start to end. I mean every time you question yourself, check the appropriate section. It does a great job of describing the responsibilities of each class of your application. This is the point. Deep down, Robotlegs is for craftsmen, people who think that a brilliantly engineered, easy to repair, well laid out classic car is a thing of beauty. For people who remember being able to mod their Commodore 64. A vintage piece of furniture get's restored because it's worth restoring. Code written 2 years ago is still maintainable when it's worth maintaining. This is your investment in the future. You get to this place by separating concerns and being as consistent as possible. ## Use a State Machine to bootstrap As your first projects get bigger, the context will get really spammy. I recommend Joel's approach of [using a state machine to bootstrap](http://github.com/robotlegs/robotlegs-utilities-StateMachine). I'm not a fan of the XML markup state machine, but it's better than nothing. Visfleet has a StateMachine that's described as a DSL, it works in house with an adaptor I've written, and I hope to release this, wrapped with tests, shortly. ## How about help when I get stuck? - Twitter with #robotlegs often helps. - Ask the [Robotlegs Knowledgebase ](http://knowledge.robotlegs.org/) - It's important you ask your sensible questions here so that the community gains the collective's answers in one place. - Search the [Robotlegs Knowledgebase ](http://knowledge.robotlegs.org/) - see previous point. - [The chat](http://www.robotlegs.org/community/chat.html). It's quiet now, but it's growing. We had 10 users in there the other day, which meant that most questions this week got answered. It's nice sometimes to be interactive. - [Read the groups](http://groups.google.com/group/robotlegs), but as I mentioned in [the previous post](http://squeedee.tumblr.com/post/388804844/robotlegs-on-the-wrong-foot), it's easy to get lost on there. ## Any other great resources? Sure there are! - [Joel's presentation slides](http://joelhooks.com/2009/11/14/texflex09-robotlegs-slides-and-a-robotlegs-t-shirt-giveaway/) are awesome - [The community blog](http://www.robotlegs.org/community/) lists recent contributions, samples, demos, screencasts and what-not from the community at large. I try to maintain that page, so drop me a line if you think something needs a mention. - Twitter, again, search #robotlegs. - User groups are starting to pay attention. Hopefully here in Auckland I'll present Robotlegs to the Auckland Flash Platform Group sometime soon. - Robotlegs is getting a lot of mention at conferences. Take a look at [FATC](http://www.flashandthecity.com/) and [360Flex](http://www.360flex.com/) ## Good Reads - [Martin Fowler's Refactoring ](http://www.amazon.com/exec/obidos/ASIN/0201485672) - Hell, [Martin's whole site](http://www.martinfowler.com/) :) - [Rob Martin's Clean Code](http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) - I hear this is good, I've not found time to read it yet. ## Did I miss anything? Did I? Have any other points of view to share? I remembered to bring disqus over to this blog last night so we have comments :) Look forward to hearing from you.