Yesterday, Einar Ingebrigtsen and I had a co-talk at NNUG Vestfold, titled:  “Sugarcoating your front-end, one ViewModel at a time“.

We had a great turn-up and a good Q&A thereafter. I think we got a few people to star thinking slightly differently in regards to how to treat web-pages more like web-apps. We pushed hard on the MVVM pattern and how that conceptually fits the way web, and web-apps work. KnockoutJS certainly is a framework I’m starting to really love, and I’m sure there are other out there ready for it. We also emphasized the need for well-tested JavaScript testing of your code, and everything that’s involved. JavaScript is still code! :)

It’s really a jungle out there, and there’s no lack of frameworks and solutions. There is one thing for sure though, and this is valid for all frameworks, they all focus on enabling Single Page Applications, and users are starting to expect that exact functionality.

Checkout the slides on slideshare. Please don’t hesitate to drop off a comment :)

NNUG Vestfold Meetup 29. Feburary

NNUG Vestfold Meetup 29. Feburary

Announcing NNUG Vestfold’s first meetup of 2012.

I’m pleased to get started with the first NNUG Vestfold session this year. Last year didn’t really turn out the way I expected, with a total of 1 meeting!

In an ongoing effort to push my comfort zone, I’ve decided to hold a session for this meeting.

After talking to a colleague of mine, my small talk suddenly became a 2-man-show!

Without further ado, I’d like to welcome you to my first talk: “Sugarcoating your frontend one ViewModel at a time” a co-session with Einar Ingebrigtsen.

Sign up here!

Bifrost – A little background

In this past year at work, we’ve been in the process of developing a new platform from the bottom up with new functionality. One of the goals was to move away from an old unmaintainable solution to a new maintainable solution based on expected coding standards, and of course to meet the business’ needs about scalability and rapid feature development. With an overloaded domain, responsibilities were mingling with each other and business rules and validation was all over the place. Based on our needs, we felt it was that CQRS was the way to go. CQRS has been the talk in the DDD community for a while, and this pattern was something we could really relate to. In comes Bifrost!

Originally a helper-project for Einar Ingebrigtsen, we decided to leverage and contribute to Bifrost as an open sourced platform for web-app development. At it’s very heart Bifrost adheres to CQRS and is taking it “to the next level” by delivering a platform to deliver rich web applications.

Basic archtecture with an MVC application frontend - from Bifrost docs

Because of the way Bifrost as a platform was conceived, it has evolved in parallel with the product we are building. As project needs arise, amendments are made in Bifrost. This enables steady, controlled development on Bifrost without introducing features (too far) ahead of time. Though this is a good way of driving the project forward, it isn’t building out all the aspects of Bifrost. On the plus side, the platform is well-tested, thought through, and works well (with some known limitations and needed improvements).

On the web aspect of things Bifrost supports ASP.NET MVC and works well with the framework. Validation and binding of commands is something that just works, and I’m sure it’s something that people will appreciate. The next natural step is to actually not depend on MVC, and build out the client-side aspect of the platform. For this Knockoutjs comes in handy.

Knockoutjs is a JavaScript library that adheres to the MVVM pattern, which can be traced back to WPF and Silverlight. This allows the view (html) and viewModel (data, behaviour, commands) to be separate, sharable pieces of code. What this gives us is a clear way to bind our Query data from the server to a UI, and allow commands to be fired back into the system.

Bifrost has its implementation of CQRS quite well done already, and with it you can go in and whip up a great app with what’s there now, but you’re going to get little, to no help in regards to client-side features. There’s a clear focus on developing for the client-side aspect of things as well, which will enable Bifrost as an application platform. It’s a great convention-based platform that can solve many business needs, and its future looks bright :)

I hope to write more about the different aspects of Bifrost in the coming weeks. Until then, here’s some further reading: