A friend of mine recently send me an article titled, RIP: The Iteration 19?? – 2010. It is an interesting read, but I warn you … you may start asking questions about Iterations.
For myself, I have spent several months thinking a lot about the iterative cycle of development, how to improve the performance of a development team, and what “better performance” even means. Articles like this one really make me evaluate things anew.
I guess that is good.
Confusing sometimes.
But good.
I am a bit behind the times on this feature of SQL Management Studio, but I never thought of it before now. I'm not sure why it just came to mind today, but I like what I found.
SQL Management Studio can use colors to indicate the connection. See a really good post about this here.
I have a web service using Microsoft Unity to hook the pieces together. It all works fine on my PC but when I put it on the web server, I receive this error message:
System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: The value of the property 'type' cannot be parsed. The error is: Method 'GetClaimsForUser' in type 'WebService.Implementation.ClaimsRetriever' from assembly 'WebService.Implementation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=62cac0f1a908971a' does not have an implementation.
If I look at the web.config, I see the following:
<unity>
<typeAliases>
<typeAlias alias="ITokenGenerator" type="WebService.Interfaces.ITokenGenerator, WebService.Interfaces" />
<typeAlias alias="TokenGenerator" type="WebService.Implementation.TokenGenerator, WebService.Implementation" />
<typeAlias alias="IClaimsRetriever" type="WebService.Interfaces.IClaimsRetriever, WebService.Interfaces" />
<typeAlias alias="ClaimsRetriever" type="WebService.Implementation.ClaimsRetriever, WebService.Implementation" />
<typeAlias alias="TokenGeneratorSettings" type="WebService.Implementation.TokenGeneratorSettings, WebService.Implementation" />
<typeAlias alias="String" type="System.String, mscorlib" />
</typeAliases>
<containers>
<container>
<types>
<type type="ITokenGenerator" mapTo="TokenGenerator">
<typeConfig extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement, Microsoft.Practices.Unity.Configuration">
<constructor>
<param name="retriever" parameterType="IClaimsRetriever">
<dependency />
</param>
<param name="settings" parameterType="TokenGeneratorSettings">
<dependency />
</param>
</constructor>
</typeConfig>
</type>
<type type="IClaimsRetriever" mapTo="ClaimsRetriever">
<typeConfig extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement, Microsoft.Practices.Unity.Configuration">
<constructor>
<param name="connectionStringName" parameterType="String">
<value value="devDatabase" type="String" />
</param>
</constructor>
</typeConfig>
</type>
</types>
</container>
</containers>
</unity>
I have another web service, using an almost identical config running on the web server. But this new web service will not run.
Any ideas on what I have not told Unity to do? Or maybe what I told Unity to do incorrectly?
For the past several days I have been working on trying to build a WCF service which returns a list of assertions for a member. Because this information will be handed off to a vendor, I have to meet their requirements for how the SAML will look and be encoded. I am having all sorts of issues getting this to work!
I know WCF and WIF together should help me. I had the original service built in under three hours but the encoding did not match the vendor code's expectations. Thus, I am hunting for a resolution. Any help would be greatly appreciated.
So ... the service takes in a GUID which is used to call the database and return fields. These are then used like so:
DataTable userData = GetDataForUser(userId);
List<Claim> claims = new List<Claim>()
{
new Claim("ClientId", "NameOfClient")
};
foreach (DataRow row in userData.Rows)
{
string memberId = row["MemberId"].ToString().Trim();
string firstName = row["FirstName"].ToString().Trim();
string lastName = row["LastName"].ToString().Trim();
DateTime dob = Convert.ToDateTime(row["DateOfBirth"], CultureInfo.InvariantCulture);
claims.Add(new Claim("MemberId", memberId));
claims.Add(new Claim("FirstName", firstName));
claims.Add(new Claim("LastName", lastName));
claims.Add(new Claim("DOB", dob.ToString("MM/dd/yyyy")));
}
return claims;
Within the service, I then create a SecurityTokenDescriptor like this:
SecurityTokenDescriptor descriptor = new SecurityTokenDescriptor();
The claims are added to the descriptor like so:
descriptor.Subject = new ClaimsIdentity(claims);
The descriptor is instructed to encrypt the token like this:
descriptor.EncryptingCredentials = GetEncryptingCredentials();
and the GetEncryptingCredentials() rotutine looks like this:
private EncryptedKeyEncryptingCredentials GetEncryptingCredentials()
{
// Get the Encrypting Certificate
X509Certificate2 encryptCert = CertificateHelper.FindSingleCertificate(StoreName.TrustedPeople, StoreLocation.LocalMachine, X509FindType.FindBySubjectDistinguishedName, "<<certificate stuff here >>", true);
EncryptedKeyEncryptingCredentials encryptingCreds = new EncryptedKeyEncryptingCredentials(encryptCert);
return encryptingCreds;
}
All of this generates a token which, when written to a file gives me this:
<EncryptedAssertion xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
<xenc:EncryptedData Id="_16584ace-9f3e-4352-9fc9-f6db8b2e925c" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<e:EncryptedKey xmlns:e="http://www.w3.org/2001/04/xmlenc#">
<e:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
</e:EncryptionMethod>
<KeyInfo>
<o:SecurityTokenReference xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<X509Data>
<X509IssuerSerial>
<X509IssuerName><!-- value --></X509IssuerName>
<X509SerialNumber><!-- value --></X509SerialNumber>
</X509IssuerSerial>
</X509Data>
</o:SecurityTokenReference>
</KeyInfo>
<e:CipherData>
<e:CipherValue><!-- value -->CipherValue>
</e:CipherData>
</e:EncryptedKey>
</KeyInfo>
<xenc:CipherData><xenc:CipherValue><!-- value --></xenc:CipherValue>
</xenc:CipherData>
</xenc:EncryptedData>
</EncryptedAssertion>
Great, right? Nope. The vendor needs the <EncryptedData> section to have the following child node:
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
And they need the <KeyInfo><EncryptedKey> section to show this:
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
I have tried every combination I can think of within the GetEncryptingCredentials() routine. Nothing has produced the desired results. Anyone have a suggestion? Don't be afraid to tell me to start all over. That's all right. I just need to get this to work.
Thanks in advance.
Does anyone know of a module for DotNetNuke which allows me to interact with a KeePass data file? I use KeePass a lot and have access to my different KeePass files on my desktop, my mobile phone, etc.
Now I want to create a KeePass file which has things my development team needs access to. I would like to store the KeePass file in a location the web server can access and serve up the information through my DotNetNuke site.
Any ideas on how to accomplish this?
Ever since installing Microsoft Internet Explorer 8 I have been having problems with setting my desktop wallpaper / background image. I like to hide the desktop icons as I never use them.
While the icons are hidden
I can make all of the necessary updates to change the wallpaper but the image will not change. However, if I go through a full reboot of the PC, the image will change.
While the icons are showing
I can make all of the necessary updates to change the wallpaper and the image will change as desired. However, as soon as I hide the icons again, the wallpaper changes back to whatever image was set when the icons where hidden.
While frustrating, I could deal with this issue. Until the PC had an error and blue-screened. Now, when I boot the PC, I receive the white screen telling me to reset my Active Desktop – which I do not use.
After struggling with this for several weeks now, I find out I am not alone.
It looks like this is specifically related to IE8 and the general work-around is to remove IE8. Well, I am too far beyond that restore point for it to be any good. Plus, I like IE8 and need it for the development work I am doing.
So, anyone know of a resolution to this? While it does not affect the performance of my PC, it is aggravating. Any help would be greatly appreciated.
I saw this on Dr. Dobb’s Code Talk today and laughed. Thought the geeks out there might like it too.
A programmer started to cuss
Because getting to sleep was a fuss
As he lay there in bed
Looping 'round in his head
was: while( !asleep() ) sheep++;
I am not the first to post on this, but just in case you have not heard, take a look at http://www.abetterteam.org/. This is a short on-line survey which will plot how you perceive your Agile team is doing. This is a good tool to get the conversations going and see where the differences are in your team’s perceptions of itself.
We recently used the results of this survey in one of our Retrospectives. While we all agreed on several questions, it was where we disagreed that sparked some interesting conversations.
Yes … there is a connection between the two! You just have to love an article which starts with a Star Wars reference.
In Unlearn What You Have Learned, Nimesh Soni does a good job of listing several habits which we must overcome in order to succeed with Scrum. I found this article to be interesting as I looked at my work team and compared us to this list. We’re close in some areas and have work to do in other areas. This is a good check-list which I think I will revisit now and then to see how well we are doing.
For about eight months I have been kicking my foot in the dirt trying to figure out if I really wanted to switch my primary browser. I have been using Maxthon for about three years and love many of the features in this browser.
However, since Maxthon is built on top of the Microsoft Internet Explorer kernel, Maxthon has the same performance problems of MSIE. Mainly that means both browsers load pages slower than I would like.
Since I build web sites, I am often using other browsers like Chrome, Firefox, Flock, Opera, Safari, and more. I like several of these browsers because they are fast. Really fast compared to MSIE.
I know, none of this is revolutionary news or anything, but I just couldn't give up several features in Maxthon. So I drug my feet.
I have been using Firefox as my secondary browser for some time, and decided over the Christmas holiday that I was going to kick the crutch of Maxthon out from under me. After lots of looking for add-ons, I now have a Firefox browser which is configured to do everything I like ... the way I like it. Maybe it is not optimal yet, but it is good enough that I have removed Maxthon from my computer.
And that, my friends, says it all.
So, count me amount the legions of Firefox devotees. Goodbye Maxthon, it has been a great three years.
Interesting post by Alan Shalloway titled Is Scrum Failing Us? I liked the article and thought you might like it too.
My work team is trying to get our minds around Visual Studio Team Systems and we really want to see how it works with our implementation of Scrum. We have seen various add-ins which enable VSTS to do Agile/Scrum, but I am curious if anyone else has experience with VSTS and Scrum.
- Which implementation did you decide on? And why?
- How do you configure your Projects?
- Did you have to change your Scrum process?
- Are you able to easily generate User Stories, Taskboards, Burn Down Charts, etc.?
- Do you think VSTS makes it easier to track Scrum artifacts, or would a bunch of index cards on the wall work just as well?
Any thoughts you wish to share would be greatly appreciated. Contact me through this site if you would rather respond more privately.
About four years ago I got my first glimpse of BizTalk. When I first saw it, I could see lots of possibilities and real potential if this tool was implemented and used properly.
Roughly three years ago I began working in an environment which had a BizTalk solution built. Now, this solution relies heavily on several web sites which use HTTP post methods to do extra transformations of the messages to strings and from strings to XML. Not the best solution, in my opinion, but it works.
Well, to say it simply, this has always left a bad taste in my mouth for BizTalk. We have had issues with the server configurations, keeping the Health & Activity Tracker working, heck even SQL Server fails on us at times. Basically, the BizTalk solution is not fun to work with.
But recently we have begun to work with BizTalk 2006 and experiment with ways to make an asynchronous messaging platform work for us. I have only been working with this for a few days and I can already see reasons to enjoy BizTalk again. So, yeah, I'm taking my mouthwash.
The past few days of discovery have really proven to me that the current implementation, which uses BizTalk for sub-second responses, is not a good long-term solution. We really need to look at other solutions to continue to provide these services.
But the good news is I am beginning to enjoy working with BizTalk again.
Yesterday I found a very interesting post over at Agile & Business. However, I did not get a chance to look at it until this morning. If you have not read it, take a look at, "What's a ScrumMaster Worth?".
I was just told about the death of Gary Gygax. I think the gaming world has lost a true gem, and someone who was able to bring make-believe and fantasy into a tangible, real form for millions.
Image from IGN.com. Used without permission, but I hope they understand.