Let’s have a drink and get to know each other
No, I’m not asking for a date. I would like to introduce myself, Marcel Good, as an employee of IdeaBlade, author, and lead developer of Cocktail, and share a little bit of my perspective with you.
A bit of personal history
I found my passion for computers when I was 12 years old or so (I don’t remember exactly anymore) after a brief flirtation with carpentry.
If you hear me talk, you’ll probably notice that I’m not from around here. I was born in the beautiful country of Switzerland. I lived there with my family until I was 24 years old, making my way through the education system all the way up to the equivalent of a Bachelor in Computer Engineering.
After graduating I was awarded a fellowship to continue my studies in the United States. Northwestern University where I studied and also where I met my wife. This year we are celebrating our 10 year anniversary.
In my spare time, I enjoy playing tennis with my wife and friends, traveling, sailing and tinkering with all kinds of gadgets at home. One of my hobby passions is connected home entertainment and I’m a Windows Media Center Enthusiast.
IdeaBlade
I joined IdeaBlade to work with their Professional Services group and take pride in my ability to understand and translate business requirements into real solutions that meet customer needs.
That’s what we do here at IdeaBlade Professional Services. We deliver solutions that meet your needs. As an architect in IdeaBlade’s Professional Services group, my role is very technical. My engagements range from jump start workshops teaching DevForce to architecting and building custom solutions to unique customer challenges.
Cocktail
In addition to being architect and a consultant, I’m also the father of our Cocktail product. You can say that I have one foot in Professional Services and the other foot in Product Development.
When I joined IdeaBlade Professional Services, my first observation was that our customers were trying to reinvent the wheel trying to build data-driven XAML applications in Silverlight or WPF on their own.
Silverlight created even more problems for customers due to the challenges associated with asynchronous programming—which is a pattern that is here to stay if WinRT is any indication of the future.
Being a long time believer myself in solving a problem once and continuously improving upon it over time instead of solving it over and over again from scratch, we decided it was time to build an end-to-end platform on top of which our customers and our Professional Services teams could build their applications. That was the moment Cocktail was conceived (originally named the DevForce Application Framework).
Philosophy
The art of engineering is to take things that work and combine them into something new, improving the status quo in the process. This is exactly the thinking that went into Cocktail. Instead of building something completely new from scratch I made it my mission to combine existing technologies and integrate them seamlessly end-to-end. The name Cocktail is very fitting. It’s a mix of great ingredients, where the whole is greater than the sum of its parts.
I found my main ingredients in Caliburn.Micro, the Managed Extensibility Framework, and of course DevForce.
Caliburn.Micro
I chose Caliburn.Micro as the piece of the puzzle to handle the UI side of the platform. The spirit and ideas behind Caliburn.Micro are very similar to the way I thought about Cocktail. It seemed a natural fit to extend it all the way to DevForce. One of the main concepts behind Cocktail is to keep the housekeeping code to a minimum and out of your way. Caliburn.Micro delivers on that desire with its convention based approach (convention over configuration).
DevForce
For obvious reasons, DevForce was the choice for Cocktail’s persistence layer. After all, we wanted to make it easier for us and our customers to build applications with DevForce. As with Caliburn.Micro, DevForce follows a convention over configuration approach. The domain model and extensions are discovered at runtime from the assemblies that make up your application rather than having to be accompanied by a messy app.config or web.config.
Managed Extensibility Framework
It has long been believed in the community that object-oriented programming never delivered on its core promises. If we look at early frameworks like MFC and others, they are huge class libraries. In order to extend them, change default behavior, and ultimately build your application with it, you had to subclass their classes. Most languages only allow for one base class, which puts you in a bind if you needed to create something that was a combination of two distinct things. C++ tried to address this dilemma with multiple-inheritance … which came with its own set of issues.
Because of all the issues surrounding class libraries, many developers prefer composition over inheritance. Contracts are defined between components via interfaces and the various components are composed together at runtime to form the final application.
Both Caliburn.Micro and DevForce follow the same composition model. In Caliburn.Micro, complex UIs are decomposed to smaller more manageable Views and ViewModels and then composed together at runtime. Similarly in DevForce, we discover extensions and models at runtime and compose the final persistence layer together at runtime.
DevForce uses the Managed Extensibility Framework to perform this composition, so it was an easy decision to let Cocktail build on that base and integrate it with Caliburn.Micro. MEF handles the entire runtime discovery in Cocktail.
Stay tuned
Rob Eisenberg has already hinted that we are working on great things new things for Cocktail. It’s true! The core of Cocktail will continuously evolve and we want to be your top choice when the time comes to building your first WinRT/Metro application … so stay tuned for all the good stuff to come.
Recent comments ( 6 )
I haven’t got into Win8 Programming model yet, but how much of LINQ is brought over to WinRT compared to SL & WPF? How much power & flexibility do we have with LINQ on the client side with Win8?
..Ben
Cocktail, shows a very clean yet powerful implementation on how to build Business Applications.
Would you offer a way to feed data from Entity Frameworks into a Windows 8 Metro XAML application ?
So far we haven’t seen any LINQ deficiencies in Metro. Regarding DevForce, they did just remove Reflection.Emit in the current RC, so that will likely affect our anonymous type support.
Oscar,
Yes, we are working on adding support for Win 8 Metro to DevForce and Cocktail.
Marcel,
Congrats on bringing Rob into your team. Together, I am sure we will see many wonderful products from you. I am taking my time exploring Cocktail and I must say that It is very carefully thought out. As I listened and watched the Cocktail/ Devforce videos and studied the tutorials , I find myself wanting to see a tutorial on TempHire ref app. It is truly a remarkable piece of work and would help many developers to understand the thoughts that went into the creation of this simple but elegant solution. I know that you are extremely busy. But if such a tutorial was available, I would be willing to purchase it. Please give it some thought. As an alternative, If you need a volunteer to do some of the grunt work, I am willing.
Best Regards
hari
Hari,
Thanks for the kind feedback. I’m glad you like TempHire. You are absolutely correct about TempHire needing a tutorial/walkthrough. In fact Ward Bell and I are supposed to shoot a few deep dive videos on TempHire. Our schedules at the moment just haven’t allowed for it. It’s coming, though. Stay tuned.
Follow