| Servergeek |
| Mickey Williams' weblog |
|
My C# BookMicrosoft Press PageOn Amazon Racing LinksSlalomSkateboarder.comNCDSA slalom page 3dm Ick Sticks Pocket Pistols .NETScott GuthrieRob Howard .NET Notes BradA LonghornScobleChris Sells ServicesDon BoxChristian Weyer All Things Distributed Ingo Rammer Tim Ewald BlawgsBag and BaggageSCOTUS Blog EconArg MaxCapital Spectator OtherWilliam Gibson |
Monday, November 28, 2005
Tuesday, November 08, 2005
TF30177 Error When Installing Team Foundation Beta 3 RefreshPosted 7:09 AMAfter installing the Beta 3 Refresh of Team Foundation Server, I had a small problem -- I couldn't create new team projects. I received a TF30177 error when the team site was configured in WSS. Rob Caron pointed me to the WSS installation, where the default virtual server apparently hadn't been extended. I investigated a bit and found that although the WSS config database did have an entry for the default virtual server in the VirtualServers table, and the config database had been created, the virtual server had apparently not been properly extended. I found that running the service account (TFSservice) as a local admin would enable the Team Foundation Server installation to properly configure WSS. I'm not sure if this is a problem with WSS SP2 (which is now required), or a problem with the TFS install. Update:The error is TF30177, not TF31077. Also, I've run some tests, and it looks like the TFSService account also needs elevated privileges after installation -- if you drop back to just User group membership it's not possible to create a project. Sunday, November 06, 2005
Richard Hale Shaw Fails the Blog ScreenPosted 11:43 AMAs a practice manager, I usually spend a portion of my week interviewing candidates. Occasionally I'll get an incorrect answer delivered with such confidence that I wonder if the candidate has any real experience whatsoever. RHS recently gave some very bad advice about the using statement and is so incorrect that I frankly might immediately flip the no-hire bit if we were in an interview. In fact, he is so off the mark, I hardly know where to begin, but I'll just note that:
Go, read -- it's really just scary in an entertaining way. I'll try to post more later with code Tuesday, October 18, 2005
Ward Cunningham Leaves MicrosoftPosted 6:18 AMWard Cunningham is leaving Microsoft to work at Eclipse. I was really hoping that he would get PAG into a more social frame of mind -- but I guess not. Thursday, October 06, 2005
BPEL Cookbook Online at OTNPosted 11:35 PMOracle is publishing a BPEL cookbook online at http://www.oracle.com/technology/pub/articles/bpel_cookbook/index.html. It's very Oracle-centric, but some useful stuff is in the first three chapters published so far. If you squint just right, it almost looks like C#.
Other Upcoming TalksPosted 11:34 PMIn addition to my internal talks at Neudesic and the .NET Technical Summit in San Diego on Saturday, I also have two upcomming webcasts:
Yes, I can program in more than one language. No, my favorite languages are still Eiffel and C#. I also have a Managed C++ talk coming up, but I'm not sure if it's public. If it is, I'll post details here when I know more.
Saturday! Saturday ! Saturday!Posted 11:32 PMThis Saturday (October 8th), I'll be speaking at the San Diego .NET Technical Summit. I'll be giving a presentation on WCF (pronounced "Indigo"), and there are also talks about ASP.NET 2.0 and TDD. I'll post my slides and bits after the talk, so watch this space. Saturday, October 01, 2005
Visual Haskell is Available!Posted 9:17 AMAre you a funtional programming gearhead that wants (nea, needs) to have GHC running in Visual Studio? Visual Haskell is available from haskell.org (requires Visual Studio 2003.) PutStr "Nice." Friday, September 16, 2005
A few thoughts on var and anonymous types in C# 3.0Posted 10:28 AMNow that generics are becoming more prevalent in C# programming, a common C++ issue starts to rear its head: the really long declaration. Consider: Dictionary<IdentitySlot<Person>, List<Paystubs>> emp2Paystubs = new Dictionary<IdentitySlot<Person>, List<Paystubs>>(); Think about it -- in the general case, the compiler knows what the type of emp2Paystubs should be. Although you might want the variable to be typed as a base type, in the majority of cases the type on the left-hand side matches the right-hand value. In C# 3.0, shown at PDC05, the compiler can simplify your declaration in the most common case, allowing you to specify var as the type: var emp2Paystubs = new Dictionary<IdentitySlot<Person>, List<Paystubs>>(); As a side note, var also helps eliminate the need for the dreaded typedef in C/C++. As a footnote to the side note, if you don't dread the typedef and are urgently demanding its return, perhaps now would be a good time to point out the recently improved syntax for mangaged C++ in Visual C++ 2005. It has typedef, and it's now much easier to use C++ for writing managed code. You're welcome. The rest of you should be using Eiffel for your second language. Keep in mind that var is really just some compiler magic over existing types: A var declaration can only be used as a local variable - it can't appear as a member, parameter, or return type. This enables the compiler to always assign a known type in the IL emitted during compilation, without you actually whispering the type name to the compiler. Further, in a number of scenarios such as when projecting an anonymous Linq type, you don't even know the name of the type. Consider this Linq fragment:
var q = from ord in db.Orders,
prod in db.products
where ord.OrderID == prod.OrderID
select new{ord, prod};
What is the type of q? Although the compiler can certainly assign a type name (perhaps something memorable such as __ilAeizneKeneR), it certainly is not discoverable prior to compilation (although it is available through reflection). It turns out that var enables you to use instances of these anonymous types in a simplified manner. The alternative would be to force you to artificially concoct a name for the type, even though it really isn't important to any actors in the drama, except for several portions of the compiler. More in another post.
|