Headspring MVC Boot Camp review

Jimmy Bogard taught the last installment of Headspring’s ASP.NET MVC Boot Camp training class last week.  Charlie Solomon wrote a thorough review of the class.  It was a very interesting read.  Here is an excerpt:

“Great training, I would highly recommend anything these guys offer. I enjoy a fast pace, hands on (lots of programming exercises) style of training, and that’s what I got. Jimmy is a good teacher… I already knew that, since I’ve been reading his blog for the past year or so and I’ve picked up a lot a good pointers to things that help me in my work. He is also a good communicator teaching in front of a room full of diverse programmers. If you are new to MVC like I am, this course is great for introducing concepts that may be new to web forms programmers… but like the MVC book that Jimmy co-authored, the class goes way beyond the introduction by showing how they leverage some of the features in MVC (ActionFilters and ResultFilters, HtmlTemplates, Model binding and validation…) to build applications quickly that are easier to maintain. We used the release candidate of ASP.Net MVC 2 in class.”

DVCS (Distributed Version Control System): support for agile?

Glenn Block began an interesting thread on the public “altnetseattle” email list on Thursday:

“Hi guys

I know we just finished a nice thread about GIT, whether it’s hot and why.
We also talked about alternatives like Bazzar, Mercurial, etc…

A different question I have is do these tools (regardless of which one you
use) actually support Agile development? Would you consider them an integral
part of the agile shop of the future, or is it just "the way" to do it
regardless. What I am really asking is are there specific benefits for those
doing agile development?

Thanks
Glenn
” – Glenn Block

Now, Glenn is one of those really smart guys.  You can learn more from someone not by listening to what answers he gives; but by what questions he asks.

The thread has some great discussion, but here is my answer that I posted:

“Every VCS supports agile.  Agile is the way the team works with the VCS, not the other way around.  DVCS systems make branch-per-developer seamless.  With Subversion, it is easy to have multiple people working off the trunk, and the merging is great.  Tools like JetBrains TeamCity will do auto-patch-upload and run the private build remotely at any time so you have build-per-developer without waiting for the local machine.

TFS and VersionManager need more work in order to have multiple people making changes to the same files simultaneously, but agile teams still use them.

Also, the VCS features have a lot more to do with supporting a team SIZE, not a team PROCESS or PHILOSOPHY.  A BDUF team of 2 and an agile team of 2 will probably have similar experiences in wide range of VCS’s.  BDUG teams of 10 and agile teams of 10 will have VERY different experiences based on the VCS in place.

I think the essence of the situation is providing the most versioned "levels of undo" possible.  In John Maeda’s The Laws of Simplicity book, he talks about how putting "undo" everywhere makes the experience of using a product seem simpler.  It may not be simpler, but the impression is that it IS simpler.  With Git (the only DVCS I have experience with),:

  1. I can revert a local commit
  2. I can revert a push to my fork
  3. I can revert a pull to the master
  4. I can revert a commit on the master
  5. I can revert a push to the master

With a centralized system, I can only revert a commit to the centralized branch (along with roll-your-own branch commits and merges).

We need only look at some of the large, fast-moving projects hosted with Git to see that is "supports" whatever it is that we are labeling "agile" these days.  http://git-scm.com/

Best regards,
Jeffrey Palermo
”

Charlie Poole, a lead committer on the NUnit open source project, weighed in early and posted something so profound, I just have to share it.

Charlie has so much experience in software that when he speaks, I listen intently.  I have had the please of meeting him at several Alt.Net conferences.  Here is his first post on the thread:

“Hi Glenn,

I consider DVCS to be agile on a philosophical and practical level.

Philosophically, agile is supposed to be *not* so much about tools. DVCSs
remove many of
the restrictions imposed by centralized tools. Most of them work well in
either mode, so a team
can set up it’s own practices and not be limited by what the tool can do.

One proof of this is that some shops forbid DVCSs because they don’t give
enough central
control over developers – a very non-agile viewpoint.

In practical terms, a DVCS allows me to work how and where I want, creating
a feature
branch if I need to, or keeping a common personal branch for small changes.
I can work
quickly on a spike, throwing it all away or merging it in as I like. This is
something I used
to do with multiple workspaces under SVN or CVS, but when I wanted to merge
two
different workspaces without touching the repository, I had to do it
manually.

So I’d say that DVCSs are a win no matter how you develop, but are a
particularly
good fit for agile development.

Charlie”

Charlie has undoubtedly used twice as many Version Control Systems than I have, so when he compares a DVCS to all the others in his past and calls it a “win”, that’s a pretty strong endorsement.

My experience with Git (the only DVCS I’ve used so far) has been positive.  I use it for MvcContrib and for working on the manuscript for ASP.NET MVC 2 in Action.

Subversion seems to be losing favor among version control users

I haven’t done a study, but Subversion is a very popular Version Control System, but it is centralized.  Centralized VCSes have the notion of a “patch” since you can’t share source without submitting it to the central Version Control server.  Decentralized version control systems are proving to scale much better and actually be more usable in the process.  Git and Mercurial are two of the distributed version control systems that seem to be proving themselves among their customer base.  I have experience with Git, and at Headspring, we are considering running a pilot project on it since we have successfully moved one of our sponsored open-source projects onto the system (MvcContrib).

The point of this post isn’t to point to any single product and say “use this product”.  It is merely to recognize what I see as a shift toward distributed version control.  Because every developer has a cloned repository, the only operations that require a network connection are push and pull (this probably differs a bit).  Conceptually, the advantages of distribution of version control is that it is fast, really fast, to show logs, commit, roll back – because you don’t have to wait for the network to do so. 

With the distributed workflow, you perform the following steps:

  1. Clone the remote repository
  2. Modify some of the source
  3. Commit your changes locally
  4. Do some more modifications and commit
  5. Perhaps roll back some of your modifications
  6. More modifications and commit
  7. “Pull” from the remote repository (merge remote changes to your local repository)
  8. Run your private build to ensure the software is stable
  9. “Push” changes to the remote repository (now the rest of the team can get your changes)

You still go through this cycle very quickly, but it adds another level of being able to describe discreet changes.

We’ll see where the industry goes with distributed vs. centralized version control systems. 

MVC 2 in Action book conducting public reviews

If you’d like to get an early glimpse of ASP.NET MVC 2 in Action, you can participate on the public email list at http://groups.google.com/group/mvc2inaction-discuss.  The first bit of the manuscript is ready to review, and it consists of chapter 23, Data Access with NHibernate.  You can also access every bit of code, text, and image at the book’s GitHub repository.  With the first book, ASP.NET MVC in Action, Manning conducted an Early Access Program (MEAP).  Manning will still conduct it, but our program is a early, early access program.  In other words, you can have access to the unedited, perhaps dirty, manuscript and help as it drives forward to polish and completion.

As each piece of the manuscript is complete, we will post it to this list and ask for feedback.  Anyone who gives us constructive feedback on the list WILL be thanked in the acknowledgements section at the front of the book when it goes to print.  Also, you will have influence in shaping this book so that it is as good as it can be.

Our hope is that this book serves the .Net community that is working ASP.NET MVC 1 and ASP.NET MVC 2 applications.

The author team consists of:

If this book project interests you, and if you know people who should be involved, please blog, tweet, and otherwise post a link to this announcement.

Latest release of Cropper works great on Windows 7 x64

Cropper is still alive and well and has a new release on November 27, 2009.  It works great on Windows 7 x64 Ultimate.  I use the built-in Snipping Tool, but Cropper is just more friendly to use because it automatically drops captures into a defined folder.  When writing articles, books, and blog posts, I can grab my shots and pick them up later.  Here is a shot of the MvcContrib GitHub page:

CropperCapture[1]

And Here is a shot of the download section on the CodePlex.com project site:

CropperCapture[2]

AltNetConf email list is back!

Today, December 2009 is roughly 2 years after the AltNetConf list was changed to “cli_dev”, effectively killing the list.  Just look at the graph of activity for this list:

image

The AltNetConf in October of 2007 kicked off a flurry of discussion about ALT.NET.  The discussion was essentially talk about best practices for .Net.  You can see that this list has been completely dormant since April of 2008.

Jeff Atwood’s recent post about OSS parenting got me thinking about this list.  I started it for the AltNetConf and announced it during the conference (which as largely led by Scott Bellware and David Laribee).  I have largely neglected this list and let spam remain.  I went through the work of cleaning the list of lots of spam and banning the spammers.  I’ve also put moderation in place to prevent spammers from joining, and now the list is groomed and ready to resume serving the community.

As with open-source, I expect the community to vote with its feet.  Either this list will bustle with activity again, or this post will be the only mention of it.  Either way, I’ll try to be a good parent, Mr. Atwood.

You can find the AltNetConf list here: http://tech.groups.yahoo.com/group/altnetconf/

What is the purpose of the list now?  The purpose is stated in the group description, and it is as follows:

“This groups serves as a hub of discussion about ALT.NET conferences, user group meetings, meet-ups, and other "conferencing" of people around the topic of ALT.NET.
This list has a colorful history, and if you have time, please read the archives. It started during the original AltNetConf in October of 2007 and now serves as a way to collaborate on future ALT.NET conferences and the like.”

CodeCampServer Call for Participation

I just posted this message to the discussion list.

Right now on http://codecampserver.com/, there are two active user groups
that are hosted with the platform: http://www.adnug.org/, and
http://www.c4mvc.net/.  CodeCampServer is a multi-tenant application, and
the routing handles knowing which user group the data is for.

We need volunteers in two main areas:

   1. Expanding and maintaining CodeCampServer.com
      – Evangelizing CodeCampServer.com
      – Onboarding new .Net user groups
      – Production server monitoring
   2. Creating and driving CcsContrib (CodeCampServer-Contrib).
      – Organizing and moderating this new open-source project
      – Producing builds that can be deployed with CodeCampServer.com
      – Evaluating and accepting patches to this project.

Overall, we have two companies who have pledged ongoing funding for
CodeCampServer:
ORCSWeb <http://www.orcsweb.com/> is maintaining a dedicated server on which
CodeCampServer runs.  They have graciously donated this server so that .Net
user group might have a website hosted for them for free.
Headspring Systems <http://headspring.com> is maintaining the core
multi-tenant application.  Headspring will continually enhance the core as
well as the CcsContrib plugin model, which is MvcContrib’s Portable
Areas<http://www.lostechies.com/blogs/hex/archive/2009/11/01/asp-net-mvc-po…>.
In this way, CcsContrib will contain perhaps many portable areas that add
lots of new functionality on top of the CodeCampServer core.

If you are interested in contributing either as a CcsContrib developer or a
project manager/facilitator, please reply here.  Based on replies and
interest, I will schedule a conference call to discuss the formation of a
CodeCampServer committee.  All the interest in CodeCampServer has been
organic, and I want to somewhat get out of the way so that the community can
get the most out of this project.

Best regards,
Jeffrey Palermo