Sunday, October 29, 2006

TFS Checkin Policy for CI

I just read Buck Hodges blog about a great idea! One that I wish I had thought of. Clark Sell created this custom policy for TFS that checks the CI process via a web service to interrogate the status of the most recent build attempt.  If it is red then you can not check in your code. I've got to have this!

My team is still trying to come to grips with moving our CI process to retrieve code from TFS instead of VSS.  Steve St. Jean, one of my former team members, talks a lot about some of the obstacles of moving from VSS to TFS that our team has hit, among other things, here.  One thing we have struggled with is knowing when CI is Red.  CCNet is great but it is so small in tray and sometimes (often times) gets over looked.  We've talked about creating a web page that would interrogate TFS and turn the whole background of the page what ever color indicates the status of the build.  We would put this on a huge monitor in the middle of the team room for all to see.

But would something like that stop a dev team from continuing their work and checking in their code?  More than likely not.  Enter said checkin policy. It seems to me the devs would get so ticked off about not being able to check in code that they would make sure everyone on the team would know they couldn't.  This might lead to faster build fixes.  On the other hand, how could you check in code that would fix the build??? hmm.. just override the polcy right..  OK, maybe my theory about the devs getting upset is not really that realistic. But you get the idea of how good this checkin policy could be.

I sure do!

Monday, October 16, 2006

patterns & practices team lives the life

At the end of day four of Microsoft's patterns & practices Summit in Redmond Thursday we got to go on one of the best tours I have ever been on.  Tom Hollander was our tour guide and he guided us through a place he knows well:  the patterns & practices development team's workspace.  All I can say is WOW! It must have been embarrassing for my co-workers to have to walk around with me as I drooled all over the floor throughout the entire tour. 

We first started outside of the p&p building where Tom started with the story of Microsoft's building 7.  It seems that Microsoft, with all their expansions and construction, just by-passed building number 7. Tom didn't offer any explanation as to why, but he did say that someone has discovered the mistake and they are doing something about it. They are finally constructing building number 7. Now Tom and the other's @ Microsoft can't send their newbies and co-ops to building 7 to get some paperwork for them and watch as the newbies roam around campus looking for building 7 only to return hours later exhausted.

But, I digress. We entered the building and Tom talked about how the p&p team would borrow conference rooms for as long as they could to facilitate their development style.  Their cubes just didn't work.  Sometimes they would get lucky and stay in a conference room for up to a week without being told they needed to vacate. This went on for a while until some exec got wind of it and decided to do something about it. And something about it, they did! One by one each member of the team was interviewed about what their ideal working environment would look like. An architect was hired and designed a space based off that input.

As I walked through the halls of the building headed toward the p&p space I looked in at the offices of one of the other groups that share the building with the p&p team. I thought, cool they really get to make themselves at home I their offices. One women even had a red throw rug on her office floor with all sorts of little things all over the office that made her feel like she was at home.  each office I passed had little personal things that made each person's office their own.  We stop at the end of the hall in the back part of the building at the entrance to the p&p space.  The wall was adorned with the p&p logo in shining letters.  There were all the p&p books displayed nicely on the right.  But what was this on the left?

A team room.  Not just a team room, but a room where a team could work and be effective.  All of the walls were made of glass.  Some of the glass was white, some of it was clear.  But all of the walls had writing all over them. There were tables in the middle with double monitor stands on them and some of what looked like they could be the most comfortable office chairs you could imagine.  There were three of these types of team rooms.  One even had sliding walls that could slide open to make a bigger team room.  Sorrounding these rooms were the personal offices of the team.  But most of these were shared offices where up to three people shared one office space.  And the lounge.  The plasma TV must have been 60 inches!

It goes to show how much affect your working environment can have on the quality of the work you produce.  Maybe not directly, but definatly indirectly.  When you have the room to communicate and work together, whether you are pair... oops... realtime code reviewing or having standup meetings or design meetings and writing on the walls, you will be more successful.

I leave you with one last thought on this rather long post:

It was a great ending to a week that was full of ways to make me more productive.

Thursday, October 12, 2006

Patterns and Practices Summit - Day 4

Final Keynote - Architecture Evaluation in Practice  - Dragos Manolescu
Interesting session on Architecture Evaluation.  From what i got from the session is there is a comprehensive evaluation of all aspects of architecture.  Someone or some group goes to an organization and interviews, observes and analyses the IT architecture.  Important issues are making sure the evaluator has access to all the stake holders and is able to ask open questions and expect honest answers. Very interest.  An organization needs to be prepared for this evaluation in order for it to add value, certain pre requisites need to be in place.

TDD and Guidance Automation - Chris Tavares
"lipstick on pigs" Had to be here - sorry.  Recipe == wizard kinda.  Chris presented more about Guidance Automation and how to test it than he did about TDD.  If your organization has the initiative to create a recipe with GAX then your organization will be much better off.  Imagine you are working on a project that is a year long project.  During that year you have 15 to 20 some iterations.  In each iteration you create 4-6 new projects of various types. You have resources coming in and out and want to keep the consistency in the look, feel, structure and naming conventions. Having recipes made for each project type and basic structure using your own domain language would make your life a lot easier.  This is something that i think i will definitely explore further.

Web Client Software Factory - Michael Puleio
Similar in construction and intent with the rest of the Software factories, the Web Client Software factory will be able to generate a lot of the plumbing associated with creating Web Clients.  My company has recently made the decision to go to Smart Clients for a number of reasons so this will not directly affect me when it is released. But, it looks like something that anyone who is creating Web Clients will be able to utilize immediately.  One wish i have is that it should include the Web Application project type as well as the Web Site.  I am not a fan of the 2005 Web Site for many reasons but primarily deployment is a pain if you want to use an msi.  Sometimes there is organizational reason why not to just xcopy code to a Server.

Services Software Factory - Chris Kinsman
This is pretty neat if you are working on projects that do not have any consistent architecture.  The Soap ExceptionShielding was cool. I was kind of excited about this when Chris first started to present it. After he got through what is actually happening with the InstanceId I began to think the actual implementation of it doesn't fit with what I need from a business exception point of view. What we have done in our projects is wrap the business exception in soap and let the client deal with the exception.  What the Services Factory UI reminded me of was some of the stuff in Access.  Interesting how it has made it's way into a Visual Studio Service Factory. Don Smith came out and talked about WCF releases.  The second release of WCF is going to be released in the December time frame. 

Smart Client Software Factory - Wojtek (Voytek) Kozaczynski
Unfortunately I was unable to be a part of this presentation due to some items that needed my attention at my real job.  From what i understand, though, it was a good presentation about the Smart Client Factory.  This is not something that I will be utilizing at my organization but it does look like something i might want to investigate on my own time for some personal learning.

SI & Designing for Operations - David Aiken
Instrumentation is key to finding out why my application is not working.  This is one thing I got from this presentation.  David is an effective speaker and brings some British humor to what could be a dry subject to some.  What is also interesting about this is the power of Windows PowerShell and how easy it is to use. MMC can be your friend if you let it.  Why do we need to Instrument for our Operations?  Because on average 70% of an IT budget is spent on support.  I am not sure our budget fits that number but it could. Good solid session.

Keynote -Architectural Guidance with Software Factories - Jack Greenfield
I was glued to the deck and listening intently.  Possibly the one presentation so far that I was completely attuned to.  At the outset , Jack said he was not going to drill into specific domains.  He presented a clear, well thought out, notion of why Factories are a good thing.  I was hoping it would be more into the depths of what factories are and how they are created.  Unfortunately, what I call the meat of the presentation, was held to end of the presentation. Jack was running out of time so he fast forwarded through these slides and topics.  He covered everything in the beginning with more detail than I think this audience needed.  I think we were looking for more of the detail. Also, there was not any time for Q&A which was unfortunately.  All in all it was a good presentation but not having the time to ask questions was a hindrance.

Wednesday, October 11, 2006

Patterns and Practices Summit - Day 3

Again, today I will be updating this blog after every session.

Today's sessions, in a word, were "supercalafragalistickexpialladosous".  that may be spelled wrong, but who cares!

Micro-Pairing - Peter Provost & Brad Wilson
(why arguing while you code is fun and productive)
"Real time code review" - Stop calling it Pair Programming! Have I used the term "tag team"?  This is pretty cool stuff.  some new concepts for me include passing the keyboard at every step - Red, Green, Refactor.  I would not want to get in an argument with either one of these guys about TDD or Pair... wait .. Real time code reviewing.  One other interesting point was the discussion about team members and their skill level.  What do you do with devs that just don't want to work this way?  re-think the added value that that team members gives you. Maybe there is another place in the organization for them.  Or as Peter says - "Fire Them!"  Actually, the discussion moved toward this not being an Agile problem but a management problem.  Can you tell I enjoyed this session?  you bet!  It makes me want to go back to my organization and work harder at making this part of the agile process work.

Patterns for Connected Systems - Ted Neward
Ted present a thorough review of some patterns that are related directly to Integration. He then connected each pattern to how it would be implemented in WCF.  This will be very useful once we can make the move to WCF. Even though the code samples were in Java (which he integrated nicely into the presentation) I could see how we can make specific patterns work.  He took each pattern and presented the Problem space it addresses and then the Forces behind the patterns implementation. Another interesting aspect to this presentation was the constant exchange of viewpoints between Ted and Rocky. Can you say agree to disagree?

Agile Testing Guidance - Alan Ridlehoover
A brilliant reminder to me why CI and testing is so important.  My team has been without a CI process for several weeks now because of our migration to TFS and the loss of some key personnel.  So my pain is real.  My deployment to QA last week is still going on.  One reason for this is because of the lack of a working CI process.  Alan goes so far as to suggest that a ailing CI freezes all development until fixed.  This might be a little extreme for our team at the moment but the point was that if you are to make the CI process work you have to take it seriously.  I have a tendency to agree!  Thanks for the reminder Alan.

Presenting the Model - Brad Wilson
Testable UIs are challenging.  Brad made it look simple using the MVP pattern.  What is MVP?  It is Model-View-Presenter similar to Model-View-Controller except that the Presenter only talks to the View.  The View has no logic at all, it is told everything via the presenter.  Brad also does all of his demos using Test Driven Development.  This is great because he exposes the ease of TDD in what is a typical coding scenario.  He never wrote a piece of code without having a test for it first.  He used the typical TDD process Red, Green, Refactor. So what Brad is doing is testing the presenter and not the view.  In his words, not mine, "I have a QA dept for that". Great job by Brad!

Lunch discussion - patterns & practices Incubation
Requirements Gathering and Management
- John Socha-Leialoha
This is a new project that may or may not turn into a full fledged product.  This looks like it would fill a gap that currently exists between Developers and Business Analysts.  Have you ever tried to gather all of the requirement artifacts associated with a specific iteration?  It can be a vary tedious process and then you still might miss some.  It looks like this tool will address that gap as well as many others.  The idea that requirements wont get lost in the vastness of sharepoint or that we will be able to always be looking at the latest and greatest artifact with updated links and everything is fantastic!  I, for one, am very excited about this tool. I hope it comes out sooner rather than later. You can find out more at CABPedia.com

Continuous Integration - Wayne Allen
Wayne is very mild mannered.  His presentation style is slow and deliberate but for the most part effective.  Most of the material he covered we have already implemented at my organization.  As a whole the presentation was very basic and high level.  It was more of an overview of CI and what it is as opposed to a deeper level how do I implement presentation.  That being said I did learn about the amount of different tools available for CI that I was not aware of.  We us CruiseControl.Net inconjunction with MSBuild.  I also thought there would be more folks out there using CI but from the raise of hands I could see that we are ahead of the curve in this area.

An Agile Talk on Agility - Peter Provost & Michael Puleio
This was cool!  We were presented Agile development in an Agile manner.  We created a backlog of discussion items, prioritized the backlog and had 10 minute iterations. My organization utilizes a customized version of Agile development.  One of the key things I took away from this presentation was that Agile can succeed given buy-in from developers, business analysts, upper management etc..  Another key thought is last responsible decision making.  What does that mean? It means there is a point of time when it becomes irresponsible to put off a decision. That is the proper point at which the decision should be made. This is Cool!

Future of patterns & practices - Rick Maguire
Rick's Keynote this morning was informative and I was interested in learning about how p&p came about and where it's going.  The real value of this session was the frank feedback and questions that came up at the end of the presentation.  Some thought it was hard to see p&p in a concise location and there was some uncertainty regarding who we should contact for certain feedback as we go on. They are giving us a usb key with all the contact info and the presentation decks which I will post some of at the end of the summit.

Tuesday, October 10, 2006

Patterns and Practices Summit - Day 2

I am blogging this conference realtime after each session.  Check back every hour or so for updates.

My friend Steve is also blogging about this conference you can read his recitative here.

Architecture for the Next Generation - Scott Isaacs
History lesson to start.  Extremely interesting account of events related to the Internet over the last 15 years.  Key take away's from this presentation are Mash-ups, microformats and AJAX or Atlas.  I enjoyed listening to Scott present and could follow him completely.  If you are building new external web applications this presentation is a must. get more info at some of these sites:
http://atlas.asp.net, http://dev.live.com, http://gallery.live.com, www.microsoftgadgets.com, www.microformats.com, www.liveclipboard.org

Evolving Patterns - James Newkirk
This is one reason why I am here.  This presentation was about patterns as a development tool. Pattern = context, problem, and solution. we use tools to increase efficiency.  Patterns allow us to do this consistently.  the 2nd person pays.  Refactoring to include patterns is an underlying strategy to success. refactor to prevent broken windows - pragmatic programmer.  Re-enforced refactoring as a personal responsibility everyday of every developer.  When refactoring, tests are extremely important.  Tests allow for refactoring to at a minimum give you what you had before.  Spent a lot of time coding an example of the Dependency Injection pattern.  Great example for isolating tests.

Agile Presentation Layer Design - Andrew Flick
UI design - looking at the world in a different light.  Is it my fault or is it bad design?  Wow! Made me think about how I look at things around me.  Not just the software UI design but about the door I just walked through.  Andrew used the example of 3 Mile Island and the design of the control panel.  It was extremely complicated.  Could that disaster have been avoided with a better console design?

Contractual Zen - Scott Hanselman & Patrick Cauldwell
Strongly typed Contracts are good!  This was cool!  These guys are using all the really cool stuff. Code generation, contracts, 1st, 2nd and 3rd class interfaces. Completely decoupled components.  Cool stuff, but stuff that works and provides value to their product and company.  There were a lot of references to voodoo and pixie dust.  This was because the end users don't need to know about all the stuff on the inside.  To them it is pixie dust.  My take away from this is that my company is on the right track.  for the most part we are doing what we need to do to enable use to change rapidly and have that change have a minimal effect to the users.  Cool!  Also, the tag team presentation was very effective. You could tell they have been together for a long time.

Security Patterns for Services - Jason Hogg
Very interesting presentation. Not so much about Security Patterns but more about the implementation of the Web Service Factory and the Web Service Security Factory. The later gives you the ability to choose the type of security you want to implement and have the tool auto-magically generate the code in your Web Service. Microsoft really did some great stuff here. They also allow you to enforce a specific Security Model for all your Enterprise Web Services.
There was mention about a PDF on Security Patterns located here: http://msdn.microsoft.com/practices

Versioning Web Services 2.0 - Don Smith
Great discussion.  Don is a great presenter with lots of energy.  His way of making a point is clear and honest. This topic has been something my organization has had some issues with but we have made it through with minimal pain.  Our pain will be greater as we continue to develop our next release.  Some Key concepts:  Communication is key. Contract validation shouldn't be more strict than it needs to be. Loose contracts allow for greater extendibility.  Ignore the data you don't understand. don't let it be a burden to your service.

Re-Engineering to Support WorkflowBilly Hollis
Yeah - code samples in VB! Workflow Foundation opens lots of opportunities. You don't need to have Visual Studio to run the WF designer. Includes a number of generic set of Activities that are used in the workflow. There is the anticipation that 3rd party vendors will create more activities.

Two types of workflows

  1. Sequential- Flow chart types of workflow
  2. State Machine - State transition diagram type

Workflow Foundation demo was interesting. Workflows are on a separate thread so getting things in and out of a workflow is not as simple as grabbing a handle and setting a property.

 

They just announced a tour of the P&P build which is going to be really cool!

Today was a great day of presentations.  The subject matter was closer to what I expected and more applicable for me and my org.  Signing off!

Monday, October 09, 2006

Patterns and practices Summit - Day 1

When I attend conferences or training I usually have certain expectations of what I can and cannot get out of them.  My expectations of day 1 of Microsoft's Patterns and Practices Summit where somewhat open because I have never been to the Microsoft campus nor have I been to a conference or training put on by a specific Microsoft group.

So have I been satisfied that I was right to keep my expectations open? You bet!

So how do I communicate that satisfaction to you all?  Well, I'll try to keep it brief and to the point.  I will also update with links and more clarity if needed.  Here it goes...

Keynote:  Principles of Framework Design - Brad Abrams
Expectation: Some key points when designing a framework others will use.
Satisfied? Yes
Brad presented his 5 Principles of framework design.  There was some emphasis on things one might not think about like Simplicity and knowing your users.  Simplicity was what Brad fell back on throughout this presentation.  This re-enforced something's we are working on in my organization.

Dependency Injection Architecture - Brad Wilson
Expectation: none
Satisfied? Yes
This subject was one I didn't really have any insight into prior to this session.  I was introduced to Dependency Injection for the first time.  What is DI?  From what I understand it is about objects that depend on other objects can all be a part of a DI Component that can control the order of instantiation and whether an object is shared as a singleton or as a separate instance each time. More about this later because I want to explore this in more depth given some time.

Enterprise Library 3.0 - Tom Hollander
Expectation: none
Satisfied?  somewhat
At the organization I work for we do not use the Blocks Microsoft gives us in the Enterprise Library.  It was interesting to hear how Microsoft, as a development organization, uses the Agile process.  All features are prioritized and then a "Minimal Credible Release" feature list.  All of the features below the line are candidates for scope cut.  Some of the new features and fixes planned for the 3.0 release sound really interesting.  Read more at tom's blog: http://blogs.msdn.com/tomholl

Lunch chat with guys from Microsoft Research - don't have their names - sorry - email me or leave a comment if you have their names.
Expectations: none
Satisfied?  Wow!
These guys presented a tool that is in the research phase for Visual Studio that allows for modeling your application and then generating tests from the model. Cool!  One of the other guys from from my organization, Brooke Hamilton, attended the side discussion following the lunch presentation and he was impressed.  This type of tool can help make sure that your application models - activity diagrams etc.. do not become out of date as soon as you begin your coding.

CSLA Framework - Lessons Learned - Rocky Lhotka
Expectations: none
Satisfied? somewhat
This was an interesting presentation. Rocky talked about some of the decisions he made doing the evolution of his framework and how they can apply to any who are creating frameworks.  One key thought I got out of this presentation was sometimes we make need to make design decisions for the overall good and the 80% rule is in effect.

Application Framework Projects in IT - Johnathan Wanagel
Expectations: Close to my heart.  I had high expectations about this one.
Satisfied? Without a doubt!!
The use and success of a framework has been a struggle at my organization.  We currently have about 6 frameworks or versions of frameworks in our production environment.  The maintenance and support of those frameworks has been a challenge.  Our approach to a framework within our organization has changed since the move to .net 2.0.  We have thought a lot about our past challenges in this area and have come up with what we think is a viable solution given our organizational structure.  I say that because we do not have a specific project team which owns our common code.  We combine an open source approach with a team ownership.  We rely heavily on communication between the dev leads when changes need to occur.  This approach has its draw backs and was not the one recommended by Johnathan but was preferred by him with the absence of a team to own the code.

Architecting for Security - Shawn Veney, CISSP
Expectations: What are the key points of Security within a framework architecture?
Satisfied? Yes
This was a good presentation but I am not sure the audience was appropriate.  Good information about Threat Modeling.  Though, in my day to day duties my concern for security is directly related to authorization and credentials not threats.  Our security group does the monitoring and generates the guidelines associated with security.  I would like to think they have developed threat models for all our applications but I have no insight into this.  For more info visit:  http://msdn.microsoft.com/security/sdl and http://msdn.microsoft.com/threatmodeling

Generating Skeletal Baseline Applications - David Trowbridge
Expectations: none
Satisfied? somewhat
Global Bank Application Narrator review and demo - good but moved to fast. I missed most concepts early in the presentation.  seemed to be presented with the assumption that the audience had a greater understanding of the material than I had.  Orcas demo of Team Architect.  The questions after the presentation helped me clear up what I was seeing.

 

All and all it was a day in which I either learned some new things or I had re-enforced some of the design decisions we have made at my organization.  If you are attending the conference I would be interested in your comments.

Sunday, October 08, 2006

The Beginning!

The world of blogging is not something new to me as a consumer, but as a writer it is completely new.

My co-worker and friend, Steve St. Jean suggested that I join him in the world of blogging. So here I am.

The Microsoft Patterns & Practices Summit in Redmond, WA is where I am this week and will begin my recitative from. Look back here for my thoughts of each days events and sessions.

rec‧i‧ta‧tive  / [res-i-tuh-teev]
1. of the nature of or resembling recitation or declamation. –adjective
2. a style of vocal music intermediate between speaking and singing. –noun
3. a passage, part, or piece in this style. –noun
[Origin: 1635–45; < It recitativo. See recite, -ive]