Chad Myers and I are more or less volunteering to put on a 4 hour session at the 2010 Austin Code Camp (for a variety of reasons this is the first time I’ve been to it since ’06) just presenting an insider’s look at some of the project work we’re doing in the spirit of our “Opinionated MVC” talk from KaizenConf in ’08. We can talk about almost anything but actual business logic, but here’s the topics I’m thinking of:
- Dovetail’s “rules engine.” We have a custom rules engine built on the standard Event – Condition – Action pattern that works against our domain model. The E-C-A parts are all composed with StructureMap and the rules configuration is done by an external DSL editor that presents a near English experience for users. It’s also very extensible for those pesky customer customizations down the road. I think this is the most challenging project I’ve ever done by far. Oh, and we can add new “Condition’s” and “Action’s” to both the engine and DSL without changing one single line in our core Dovetail code. How ’bout them apples?
- How we use StoryTeller and Selenium to do automated web testing. Lots of challenges and lessons learned to make testing go faster and be less brittle in an Ajax heavy site.
- Using FubuMVC. How it really plays out. Using the Html conventions to really go fast and kill repetitive coding — and it goes way beyond what anything in MSMVC2 is capable of w/o heavy gymnastics. Advanced model binding. How we get eliminate the “tag soup” problem in our views.
- Tying jQuery together with server side conventions and Html helpers. A lot of the pizzazz of jQuery is only unleashed when you combine it with your server side Html generation.
- Our “ActionRouter” / Continuation model for some Ajax handling. It’s a cool little sample of making an internal DSL pay off dividends
- Convention over Configuration from our Domain Model back to the database and forward to the UI
- Extension properties. We have a need in our application to allow customers (or really our professional services folks) to add new properties to our system and capture this data on the screen with fullblown validation and edit in place functionality without touching our core code. Lots of Fluent NHibernate and FubuMVC trickery to make it work.
Anything you want to hear about? We’ll get it filmed and posted on Viddler or something similar.