Breaking the build server is Serious Business. Fortunately there are a set of rules put together by a group of wise and thoughtful men to encourage good build server practice. And beer.
Build Server Rules
- The penalty for breaking the build is a beer.
- A broken build beer can only be written up while the build is broken.
- Once the build is broken, broken build beers will not be given until the build is fixed. It is considered bad form for other users to check in while the build is broken.
- Broken builds resulting from environmental factors on the build server such as locked files or other transient behavior shall not be penalized.
- Amnesty can be requested for tasks that can only be tested on the build server.
- Amnesty must be requested in advance.
- Amnesty requires the agreement of the build server council.
- While amnesty is in effect anyone can check into the build server with impunity.
- Amnesty ends once the task is complete and the build server is green.
- Build beers must be cashed in upon a contributor reaching 12 broken builds. Multiples of 6 may be purchased.
- Disputes are judged by a majority ruling of the build server council. Decisions and lulz are final.
Like developers must learn to honor the build server, testers must also be kept on their toes for that rare occasion when your code contains a bug.
- Each undiscovered bug in a release, judged as one that should have been found by the council, is a beer.
- The penalty for a bug found existing in multiple releases is a QA beer per release.
The rip in the fabric of space time between our universe and the bizzaro universe, where I am a SharePoint expert, continues to grow. First I presented a 400 level SharePoint session at TechEd and now I have helped put together a SharePoint presentation for PDC!
“Creating SharePoint Applications with Visual Studio 2008” presented by Chris Johnson walks through creating a SharePoint application using the Visual Studio 2008 extensions for SharePoint (VSeWSS). A bunch of people from Intergen contributed to the end product. I helped write the overall script with Mark Orange, one of Intergen’s actual SharePoint experts, and I wrote the application used in the presentation.
The application featured a new project announced at PDC: the Silverlight Control Toolkit. SharePoint hosted a Silverlight chart control that visualized data called from a WCF web service and SharePoint’s web services.
The Wellington .NET usergroup had a special event last week covering what was announced at PDC. I gave a brief 15 minute introduction to using the Silverlight chart control. You can get the slides from my talk (all 6 of them!) here.
C# 4.0 Dynamic Lookup
I really like the way the C# team tackled bring dynamic programming to the language. C# is a static language but it is good to see that the C# team is pragmatic enough to realise that will always be situations where you don’t have type information at compile time.
With C# 4.0 rather than having to bust out ugly System.Reflection operations to interact with unknown objects, the new dynamic lookup hides any ugliness away from the developer. Statically typing an object as dynamic is a great solution as it lets you treat a specific object, which you don’t have type knowledge of, as you want with regular property and method calls while still keeping static typing throughout the rest of your application. I think this is a much better solution than the dynamic block discussed in the past.
Dynamic lookup also opens up some new interesting paradigms by offering the IDynamicObject interface to developers. The first thing I thought of when I saw it was Dynamic LINQ to JSON. I’m sure uses will come out of it that no one ever considered
C# 4.0 Covariance and Contravariance
Very happy to see this feature. I bumped my head into generic variance issues a number of times when writing LINQ to JSON. No longer having to worry about IEnumerable<JToken> not being compatible with IEnumerable<object> is great. They even kept it type safe!
C# 4.0 Named and optional parameters
Is it just me or did Anders wince when announcing named and optional parameter support in C# 4.0? Microsoft has said that they plan to keep the C#/VB.NET languages in sync and I wonder if this is C# inheriting VB.NET features by default.
.NET 4.0 Code Contracts
From everything I have seen of it so far I love the Code Contracts feature. Statically defining type information has been around forever and is A Good Thing. Its about time that we are able to statically define valid values as well.
.NET 4.0 Parallel Extensions
It is interesting to see parallel programming come as a library addition in the form of Parallel Extensions rather than a language feature (ditto for code contracts). I guess with a library you only need to create it once rather than having to figure out new concurrent programming syntax for every .NET language.
Bring on VS2010.