I’ve never met Miguel de Icaza, but I found this interview and it is quite possibly the most intelligent interview I have listened to in the last few years. He’s an extremely “balanced” individual, fair and accurate. I like that. No, I don’t like it, let me re-phrase: It’s important to me. :) If you are looking into Mono and want to get a feel for the guy behind it, then this is the interview you should listen to.

Wow.

Note: Pay attention to the part about the Mono compiler being a service to allow dynamic C#. Now. Today.

DotNetKicks Image

In an nutshell the plan is to do 1 or 2 releases that tighten up the existing code base in 2009. We won’t do too many drastic things as there doesn’t appear to be a need based on the community feedback. There are some things here and there, but overall the feedback has been overwhelmingly positive.

What does it mean in the not-so-near term? Well, dashCommerce is going to move towards an enterprise solution. What does that mean? It means a lot of things, but mainly it means we are going big. Huge. Enormous. :) Why are we going to do that? Because my spidey sense is tingling. And I’ve been fortunate enough to see things recently that I have not seen before and the end result of that is a focus on going enterprise with dashCommerce. The enterprise edition will also have a more liberal licensing model – the kind that makes developers happy. :) More on that to come. :)

We are also going to focus on making Mono a first class, supported platform for dashCommerce. What does that mean? It means dashCommerce will be cross-platform: Windows, Linux, OS X, and BSD. Why? Well, we need a broader base and being able to run only on Windows is a limiting factor. It’s the same reason people program in Ruby, PHP, Perl, etc. – they can run anywhere. Will this piss off Microsoft? Dunno. I doubt it, since they made it possible. :) I think we will also see a huge upside from a community that is well experienced and entrenched in the open source world as we bring in developers from the Linux world. (fingers crossed)

I’d love to hear your thoughts on the direction we are taking and if you have any pointers, I’d love to hear those as well.

Oh, one last thing, I want to make the engineering of dashCommerce v.Next very transparent, so I want to do some screencasts as we move through the process. I’d like you to be a part of that. I’m looking for a broad range of talent, skill, etc. So if you think you have something to contribute, let me know and we can set something up. If you are interested in sponsoring the development of dashCommerce v.Next, please drop me a note here or send me an email or PM me in the dashCommerce forums (user id chris.cyvas).

Onward and Upward! :D

DotNetKicks Image

Here you go.

 

Considering they just released 2.2 not too long ago, and judging by the commit rate, they seem to be moving along quite well.

 

Now if only I can get into the mix a bit . . .

DotNetKicks Image

I’ve been digging into Mono a bit. The thing that is taking most of my time right now is looking at the libraries I would like to use for dashCommerce v.Next to see if they might work on Mono, using the Mono Migration Analyzer. So far, things are looking ok, but there are definitely some challenges. But, let me just say – this is a good thing:

 

fubuMVC_MoMA

This was an analysis of FubuMVC.

DotNetKicks Image

Yep, that’s all it took. Installed as a VM. openSUSE is very nice so far.

DotNetKicks Image

I’ve been in mad scientist mode for a few months now and especially over the last few weeks, feeding off of every interesting thing I could find / read.

It’s the binge. You know it.

You know how it usually ends up – a million ideas, too much to do, and not enough time in the day to accomplish any of it.

It’s the binge. You know it.

One of the ideas got me out of bed and doing internet research in the wee hours of the night. It’s a good idea and it has legs.

It’s the binge. You know it.

I’ve also been looking at all sorts of things that I haven’t looked at in years – Linux distro’s (my 2000 experience was shoddy at best, so I put it on the back burner ;) ) – I am currently looking at CentOS and Ubuntu server. Thanks to some of the folks I follow on twitter (faithfulgeek, coreyhaines), I was able to get some guidance.

Why was I looking at Linux distro’s? Because I was looking at Mono.

I also spent some time reading on Google Chrome – it’s a great idea and one that is lost in all the stock browser quips you’ll find. Essentially, my point is that making a comparison of Chrome to IE is not really an apples to apples comparison and any comparison like that just dulls the effectiveness of something like Chrome. Check out the cartoon story on Chrome.

I’ve also been looking at different frameworks for development. I’ve been checking out different parts of the Castle stack as well as CSLA. Then using MoMa to see how Mono compliant they are. :)

And i installed Ruby and Rails because I was intimidated into doing it . :)

Oh, and I’ve been re-vamping my blogroll. I’ve had some unsavory experiences that have forced me to put an increased focus on quality (note to self: stay away from bloggers that use phrases such as meh, teh, and yo). I try to filter bloggers in and out pretty regularly, but recently I’ve gone on a huge purge and clean and focusing on finding high quality bloggers that talk about the things I want to read about. The good news is that I now have a more focused blogroll. The downside is I found all sorts of stuff. Turns out the internet is BIG. Who knew!!?? ;)

I’ve been reading lots of books / articles as well. Books / articles on Ubuntu, Ruby, Getting Real, Expert C# 2008 Business Object, Pro LINQ, WPF Unleashed, and a bunch more. I haven’t made much head way on any of them because, as it turns out, my kids like having me around a lot and vacation time is “Play Time with Daddy!!” time. 12 days off is nice, but not nearly enough to do all the things I was hoping to do.

It’s the binge. You know it.

MEF is the Managed Extensibility Framework, which is a project out on CodePlex. The aim of the project is to allow greater reuse of applications and components. Microsoft has said that they will be using it in the next rev of Visual Studio – so there’s some buy-in there. :)

In dashCommerce we allow you to drop in your own providers for Tax, Shipping, and Payment. There are others coming, but one thing that seems to be tripping people up is how, exactly to pull that off. Now, I think it’s pretty darn easy, but I built it, so it makes perfect sense. ;) In addition, people are doing some pretty amazing things with dashCommerce and the application is growing – quickly. And there is a ton of room for additional functionality and flexibility.

With that in mind I started playing with MEF to see what the basic facilities were. And I had something in mind that I wanted to test right off the bat – dropping assemblies into the bin directory and see if they would auto-magically appear for use by the application. I built a windows service a few years back that allowed you to do just that – it was pretty slick, but I never went any further with it. Well, MEF allows us to make the shift from statically compiled applications to dynamically composed applications. There is a lot of power there. A lot.

So, with my minimal goals in mind, I set out to create a simple Cashier application that would try to charge something (actually, it doesn’t charge anything, but it says it does). On the first pass through, there are no classes that implement IPayment so it looks like this:

 mef-1.gif

If I then browse the solution and drop the Payment assembly into the Cashier\bin\Debug directory and press the space bar, I will see this:

mef-2.gif

You can see that without stopping and restarting the application, it has recognized that I have dropped in an assembly that has a particular type of export in it:

  [Export(typeof(IPayment))]

I can then browse to the Authorize assembly and drop it into the same location and press the space bar once again and I see this:

mef-3.gif

Now it recognizes that it has two classes that implement IPayment and it is exercising the Charge() method on each of them. Now, if we couple this with dropping the configuration controls into a specific location, we will get rid of the registration process that currently has to happen in dashCommerce and we will be on our merry way to composing dashCommerce in a highly flexible way! Very sweet!

[UPDATE:]

I did try to upload the sample solution, but WordPress doesn’t allow the uploading of .zip files. So, I had to do a little thing to get it to work. You can get it here.

DotNetKicks Image

My friend Corey Haines recently embarked on an interesting experience. He has spent the last three weeks traveling around the central midwest pair programming with people that would put him up for a few days. I’ve been watching the videos and the twitter traffic on the experience with real admiration. This apparently has caught the eye of quite a few folks as there is a write up on InfoQ about Corey and his experiences.

This really captures the essence of the best part of programming – programming with others. And, I think it highlights some of the disappointment I’ve had recently with my own programming experiences.

When I started programming, I had just come from about 6 years of traveling around. The bulk of 2 years I spent traveling around, doing road trips and working in Yellowstone National Park. That was followed by 4 years in the U.S. Navy on the USS Normandy – a guided missile cruiser. At the time, the Normandy was considered one the best CG’s on the east coast, which means we got to spend a lot of time at sea and traveling. After the navy, I was finishing my degree at a small university here in Cleveland – John Carroll University. I was pursuing a business degree with a concentration in business technology. That resulted in me literally falling into programming. I was taking a course in database design which dovetailed into some web work that I wanted to do. My interest in the topic was noticed by one of my professors and when he took on some side work, he asked me if I would like to do the project with him. Looking back on the following six months, I realize now that we spent a good portion of those six months pair programming. It started with me watching over his shoulder and trying to keep up with what he was doing. Over time, I started to get it and at the end of the six months, we were swapping turns at the keyboard, while the other focused on the task at hand.

I had no idea that what we were doing was so “cutting edge”. :) It was a practical example of him trying to teach me so that I could take on the load and earn my portion of the contract.

I’ve also been trying to think about how I want to go about creating the next version of dashCommerce, and I think I would like to take some inspiration from Corey and pair program as much as I reasonably can. I’d also like to capture as much of that as possible in some screencasts and put them up for review by others.

So, who will I pair program with? Well, hopefully, I’ll be able to convince some of the core members of dashCommerce to do this with me, but I also want to do it with members of the community that have an interest in trying out pair programming that may not have an opportunity to do it in their everyday life. So, if this sounds like something you would be interested in, please drop a comment here and I’ll set something up with you. I figure we can do it over Skype and with Microsoft SharedView. I’ve got Camtasia installed to capture the screen cast stuff and I figure we can do 1 or 2 hour sessions and then distill out of that some smaller screen casts that capture the best moments of the experience.

My plan is to start the next version of dashCommerce the 2nd or 3rd week of January, so if you are interested, please drop me a note.

For those of you out there looking to free yourself from The Cubicle Nation, you should definitely check out the Microsoft BizSpark program. This is an enormous package for basement startups and I wish, oh do I wish, something like this would have been available years ago. Well done Microsoft, you definitely go this one right!

What do you get? Check it . . .

Microsoft® BizSpark™ is a global program designed to help accelerate the success of early stage startups by providing key resources when they need it the most:

  • Software. Receive fast and easy access to current full-featured Microsoft development tools, platform technologies, and production licenses of server products for immediate use in developing and bringing to market innovative and interoperable solutions. There is no upfront cost to enroll.
  • Support. Get connected to Network Partners around the world — incubators, investors, advisors, government agencies and hosters — that are equally involved and vested in software-fueled innovation and entrepreneurship who will provide a wide range of support resources.
  • Visibility. Achieve global visibility to an audience of potential investors, clients and partners
    As a Microsoft BizSpark member, you’ll be tapping into a rich, vibrant ecosystem of peers, partners and support resources around the globe, helping you grow and succeed. Microsoft BizSpark is the quickest way to get your Startup fired up.

There are some things that I WANT desperately to get right before we start on dC v.Next and one of those is documentation. I am talking about conceptual, code examples and and API documentation. The API documentation is pretty well taken care of with some xml comments and some discipline, but the code examples and conceptual stuff is not so easy to get in there as part of the development process.

Ideally, the build process will spit out the documentation – all of it into one help package. The guys as Mindscape have briefly documented their documentation process, which I may use, but I was hoping to avoid the Ruby stuff.

I found the DocProject project, but it’s still a very manual process.

Does anyone out there have any good processes in place to take care of this? Are there any OSS or commercial applications that make this easy?

« Previous PageNext Page »