Agile development versus Frequent delivery -- Continous Delivery

Jez Humble has a quite cool presentation on this topic @ InfoQ.
In our agile development process developing software at high velocity with good quality is already there.
However as Macaulay Culkin is the only one good in "home alone" style. Working with other teams as testing and operation can be tough and iterating again and again in release testing and launch doesn't work very well at my company and project.
I am seeking for any means to revolutionize the release and launch process from a feature being code-complete to being available to customers.
@8:38 - big bang releases are bad, small deltas are cool! Release in incremental fashion.
Probably replacing subsystems while running could do the trick?
@10:35 - this reflects also real project progress
done is nothing else than done. anything less is not done!
manifesto: satisfy the customer early and continuous delivery of valuable software
this is a team metric!
@13:00 - create a completely automated system to test if code is production ready
==> code will be always production ready.
no one is done until sw is done!
everyone is on the topic to make the product production-ready
@15:00 - project teams are created, then after sw is ready, project team is dismantled, operation team is created. huge barrier, huge waste.
product team shall be created: developers, testers, operation people.
cross functional teams are essential.
@19:22 - deployment pipeline, automated acceptance tests, then user acceptance tests
fast feedback!
@23:10 - if it hurts, do it more often and bring the pain forward
create a repeatable, reliable process for releasing
automate (almost) everything!
everyone is responsible for quality & testing: developers, operation (project managers, business analysts, CEO)
if something fails: everyone should focus on the problem
done means released
continuous improvement - do not make one big step now, it will not work!
@26:10 - "how long would it take your organization to deploy a change that involved just a line of change?"
(cycle time)
@27:50 - build binaries once, include config data separately.
bad clearcase model: build again-and-again.
@31:00 - continuous integration = working on main line
branching is bad, causes major bugs
@36:00 - testers should not do any regression testing! it must be automated
@37:00 - canary releasing, release to a small set of users. (A-B testing)
small set of users are redirected to version+1
use only high quality - do not use this for testing!
(my question: how to use data migration / data schema changes? we should separate A-B users completely beforehand? should not use same data tables for data ids? e.g. primary keys for result raw tables)
As I understand recommended further readings are

sizeof(T) where T : struct

I have been messing around with this nice face recognition API, and just got thinking on one code line in the samples retrieving the size of a struct.

thesize =  sizeof(double) + 3*sizeof(int)

Why on earth would anyone do this? I've been coding in C# for 5-6yrs, however, I have never ever needed the sizeof operator. Have you ever?
So I went the straightforward sizeof way.

I got a nice error:
struct does not have a predefined size, therefore sizeof can only be used in an unsafe context (consider using System.Runtime.InteropServices.Marshal.SizeOf)

I have found an excellent post on how to retrieve the size of a structure on informit.

A small ride to the new horizon of MVC3

Started my first sample project with ASP.NET MVC3 beta.

Cool concept, yet I am eager to find the non db presistency layer (such as SessionState in ASP.Net 3.5 and Backing Beans in JSF).

Probably wrong concept from my side.

Why should we use agile & scrum?

In these days I had to summarize why I was pushing my team & project to an agile/scrum life style.

First I felt happiness.
Talking about Scrum is great! However working & living in a development project accoring to scrum, is just slightly better.

So: why all the scrum?

Requirements change without notice.
I tried small companies with outsourced projects, big companies with own or outsourced projects.
All the same.
Sometimes there is a little fuss or bureaucracy after the change, anyway the change will take place. They occur right now, and there is really no sense walking forward on the wrong path.
Sounds familiar?

If changes happen, one should play with it and instead of being nervous or sad about it, one should really take advantage of the creative and happy atmosphere scrum can provide.

Please note: scrum, if misused can be even worse than a classic waterfall. And we do not want a new broom that is stinky and leaves bad odor around ;).
Walking on water and developing software from a specification are easy if both are frozen.

IIS tricking me and the WCF service again

Once upon a time my team started implementing a thin client for an SaaS solution.

It happened, that we needed webservices. Cool, just add some traditional asxm webservice, working fine.

Afterwards the customer came and asked for some domain change.
No problem, the installer added additional domains to the IIS bindings to the same protocol for backwards compatibility.

We understood the need for a service API e.g. for performance or automated testing to access some business functionality through a carefully crafted Service API layer.
However we have visioned service with WCF technology. Brighter, nicer, more trendy ;)

Then came the suprise:

Server Error in '/Services/InternalApiService' Application.
This collection already contains an address with scheme http.  There can be at most one address per scheme in this collection.
Parameter name: item
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentException: This collection already contains an address with scheme http.  There can be at most one address per scheme in this collection.
Parameter name: item

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[ArgumentException: This collection already contains an address with scheme http.  There can be at most one address per scheme in this collection. 
Parameter name: item]
   System.ServiceModel.UriSchemeKeyedCollection.InsertItem(Int32 index, Uri item) +11526110
   System.Collections.Generic.SynchronizedCollection`1.Add(T item) +67
   System.ServiceModel.UriSchemeKeyedCollection..ctor(Uri[] addresses) +49
   System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses) +129
   System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(Type serviceType, Uri[] baseAddresses) +28
   System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses) +331
   System.ServiceModel.HostingManager.CreateService(String normalizedVirtualPath) +11666348
   System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +42
   System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +479

[ServiceActivationException: The service '/Services/EnterpriseApiService/EnterpriseApiService.svc' cannot be activated due to an exception during compilation.  The exception message is: This collection already contains an address with scheme http.  There can be at most one address per scheme in this collection. 
Parameter name: item.]
   System.ServiceModel.AsyncResult.End(IAsyncResult result) +11536522
   System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +194
   System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext) +176
   System.ServiceModel.Activation.HttpModule.ProcessRequest(Object sender, EventArgs e) +278
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

After some minutes of painful debugging and staring at the stack-trace we have discovered the root cause.
One cannot add a WCF service to a site with multiple bindings to same protocol.
It clearly seems to be a design problem with WCF, however as I am not an expert, wouldn't judge.

e.g.: &

Anyway, it is a painful constraint.

Workaround is easy: create a dedicated web site....

Just a stupid coding blog with some agile spice

Hi everyone.

Day by day I meet or rather suffer from ... and after a mere hour or day ... laugh at smaller or bigger tech issues.
It is always fun to share or write down some miserable details.

I have always felt the urge to start a tech blog.

This is it.
full stop.
void main()