# Sunday, April 30, 2006

A couple of weeks ago my laptop was renamed as part of an Active Directory change. Since then I have been debugging problems related to services not starting or database connection strings that had the old machine name in them. This weekend I ran into another problem that I think was caused by the machine rename although I don't have any direct proof of that. When I would create a project in Visual Studio 2005 and attempt to debug it I would get the error that the binding handle is invalid. I was able to compile and run the application but not debug. Even something as simple as a default windows application with jsut Form1 in it wouldn't debug. I spent several hours on the option to fix Visual Studio 2005 but even after that I still got the error message.

I ended up looking on the Internet and found this is a known bug. The bug report shows it as a bug in the CTP that is closed but it had a workaround that fixed the problem for me. The solution is to not use the VShost for debugging. You do this by going into the project properties on the debug tab and unchecking the option to Enable the Visual Studio hosting process.

Just in case you are wondering what the Visual Studio hosting process is (I know I was) it is explained at http://www.dotnetjunkies.com/WebLog/mihirsolanki/archive/2005/11/06/133588.aspx as a process that enables faster debugging and also debugging in partial trust environments. For the most part I am all for that especially since I normally don't run as administrator on my machine but in this case I guess I will have to settle for slower and untrusted debugging that works until I have the time to repave my machine.

Sunday, April 30, 2006 1:56:25 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Friday, April 28, 2006

<shamelessness mode="on">

The other day I got an award from my employer.  It was given to me "for exemplary perfomrance in Achievement Through Teamwork". This is the first such award I have gotten in over 13 years of working under basically the same management. I am somewhat surprised that I got the award since I didn't do anything that much beyond what I have been doing since I started working.

</shamelessness mode="off">

So the whole award thing got me thinking about how to recognize employees. I have this pipe dream of one day leaving the corporate world and becoming an independent consultant and eventually building up a company that would employ no more than 20 highly focused and extremely talented individuals. I say pipe dream because I am addicted to a steady paycheck but that doesn't stop me from thinking about how to recognize people.

I have seen many different ways of showing your appreciation for people who have done a good job. The most obvious is the "employee of the week/month/year" type award. I have long been opposed to those because there are usually way more deserving people than time periods to recognize them. If you make the period too short, the award seems trivial i.e. Today's employee of the day is Bob because he made it to work 2.8 seconds before anyone else. If the time period is too long you end up with something like: I know all 10 of you worked yourself to death to complete the project but only one of you can be employee of the decade so Susan will get the reserved parking spot and exlusive use of the company car until 2016. Keep up the good work and maybe your turn will come around.

I have also seen monetary rewards. These seem to be recieved the best when presented correctly. Most of the time I have been given a gift certificate to a local resturant so I could take my wife out. The certificate rarely covered the meal but it let us go someplace nice for very little money. I did get one one time where my manager said something like "I know you have worked 100 hours of overtime in the last 2 weeks. Here is a $25 gift certificate. I hope this makes up for it." I was obviously less than pleased about the implication that my personal time was worth so little to the company especially considering the fact that they billed the client for all of my overtime hours. So maybe money is not the best idea.

For some people extra perks are a good motivator. I would love to see a program at Keane or any company that I worked for where you were rewarded with training or going to a conference. Maybe I am just too much of a geek but I love learning new things and the best thing is that I can use the knowledge I get at a conference to further my career. The only problem I have come up with when thinking about rewards like that is how to quantify what kind of contribution would qualify for a large conference like TechEd or PDC. Oh well, I guess I have a lot of time to think about it before I make the plunge into the world of running my own business.

Friday, April 28, 2006 9:29:32 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Monday, April 24, 2006

The Mercury News has an aritcle at http://www.mercurynews.com/mld/mercurynews/business/14418693.htm about Scott McNealy stepping down as the CEO of Sun. He will remain at Sun as the Chairman of Sun Federal. Whether you agreed with him or not there is no denying that Sun has pushed other hardware vendors and that Java has influenced Microsoft .NET so the competition has helped all of us in IT. I don't expect Sun to have any major changes other than the rumored large layoffs but it will be interesting to see what the future brings.

Monday, April 24, 2006 10:09:19 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Monday, April 10, 2006

I got word that an article I started writing last November has finally made it through all the editing and other stages and has been posted on-line. It covers how to use reflection and the CodeDOM to create a proxy for a web service. It also has a Windows application that uses the dynamically generated proxy and will allow you to call that web service. The URL to the article is http://msdn.microsoft.com/vstudio/default.aspx?pull=/library/en-us/dnvs05/html/CallWebServ.asp

Monday, April 10, 2006 7:51:50 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [5]  | 
# Wednesday, April 05, 2006

I spent 5 hours today chasing down what I thought was a SQL server error to finally find out it was a problem with nested web.config files. When I came in this morning I was told that a web service that had worked for many months wasn't working. When I checked the event log on the web server it had an error that the SQL server did not exist. That usually means that the user can not log in. I tried logging into the SQL server and it failed so I set the password back to the value that I know it should be and was able to log in. I thought the problem was that someone else had changed the password without telling me. The only problem was that the error didn't go away.

After trying a lot of different things I was finally able to use a different program to call the web service and I got a message back that the version of the DLL that I am using from the configuration management application block didn't match with the version in the assembly manifest. I thought that was strange but maybe someone had copied a newer version of the .DLL into the bin directory so I uninstalled and reinstalled the web service. Still I was getting the version mismatch error from the web service and the SQL server connection error in the event log.

I finally found someone who had a similar error on the Internet. The resolution that they posted was to look at a virtual directory higher up and see if there is a web.config file there that has slightly different settings. Sure enough in the wwwroot directory there was a web.config file that had been copied from a different virtual directory. It had slightly different settings for the configuration management application block DLLs. When I deleted that web.config everything started working again. I don't know why the original error message said that it couldn't connect to the SQL server but if it hadn't told me that I might not have wasted so much time looking at the SQL server.

Wednesday, April 05, 2006 4:26:45 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Tuesday, April 04, 2006

Looking to upgrade your computer or buy a new one? Well, Microsoft has released a hardware guide for Windows Vista. You can use this to make sure that your newest machine will not be outdated when Vista ships.

The guide can be found at http://www.microsoft.com/technet/windowsvista/evaluate/hardware/vistarpc.mspx

Tuesday, April 04, 2006 7:24:23 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Monday, March 27, 2006

I just got this in my e-mail. If you are going to be at Tech Ed and have any really cool topics to discuss you can sign up.

If you’re going to Tech·Ed 2006, June 11–16, in Boston, you’ll be listening to Microsoft experts, partners and gurus on a range of topics. But what about the other topics you find important and interesting? Where, among thousands of your peers at the conference, do you find the folks who share your questions or passions on some particular technology or concern? Where do you go to take part in discussions after listening all day? That’s what Birds of a Feather sessions are for!

 

A Birds of a Feather session is a one-hour open discussion on any topic that concerns you. It is proposed and moderated by you, community members, not Microsoft employees. It is not a talk, it is not a presentation. There are no slides or projectors. It is not scary. It is just you and your fellow professionals seizing the opportunity to have a discussion and meet one another.

 

Leading a Birds of a Feather session is as easy as 1-2-3!

 

1. Propose a topic for discussion. Submit proposals here. Proposals are due by March 31, 2006.

 

2. Tell your friends and colleagues to vote for your session so we can see there’s interest. Vote for sessions here.

 

3. Show up at Tech·Ed 2006 and spend an engaging hour with people who share your interests.

 

Anyone can propose a Birds of a Feather session for Tech·Ed 2006 on any topic. You do not need be a rock star, expert, or legend to lead a Birds of a Feather session. You just need to be you. If you have some knowledge about the topic, some good questions to get things rolling, and can call on people to speak, then you’ve got what it takes!

 

Act today! Proposals need to be submitted no later than March 31, 2006, and you want people to have a chance to vote for your proposal as one of their favorites!

 

The Birds of a Feather sessions are of, by, and for the community. They are directed jointly by the premier user group community organizations — INETA for the developers and Culminis for the IT professionals.

 

Connect with your community, propose a Birds of a Feather session, and attend the Birds of a Feather sessions at Tech·Ed.

 

Birds of a feather really do flock together!

 

Stuart Celarier, INETA

Paul Gross, Culminis

Tech·Ed 2006 Birds of a Feather track co-chairs

Monday, March 27, 2006 9:11:48 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, March 22, 2006

From Username & Passsword to "InfoCard"

Richard Turner - InfoCard Product Manager and Garrett Serack - Program Manager

AntiPhishing.org has stats on how many phishing sites there are.

InfoCard lets me use differetn identities at different web sites based on what information I want to give out.

InfoCard is PC based. MS is working on a device based solution.

Self issued cards are stored locally and not corroborated anywhere.

Managed cards are used by a trusted 3rd party. It doesn't contain any actual data, just the list of fields and a place to go to get the details.

InfoCard runs under a separate, restricted desktop.

Web site receives encrypted token and needs to decrypt it to get the information. This helps to protect against man-in-the-middle attacks.

InfoCard has basically 1 method called GetToken that you can program against.

With a managed card you have to authenticate to the STS (Secure Token Service) using a token, X509, Kerberos, hash, or user name and password. That will then get the data to put into the card to return back to the relying party.

Identity Metasystem - Standards based infrastructure for exchanging identity information across federated providers over the Internet.

Integrating with InfoCard

1 Update the database to associate a user with a card

2 Create an association page - Accept the info card

3 Update the sign in page

4 Update the registration page

IdentityBlog.com has code in PhP to accept InfoCard running on Apache.

WinFX which includes InfoCard wil be on Vista. There will be a deployment mechanism for XP and Windows 2003 Server.

Beta 2 coming soon with a release 2H06 (he said Q406).

You can import and export cards in v1 to synchronize between PCs. They are working on ideas of devices.

There is a commitment from the AD team to support STS in Active Directory. Until they create it Microsoft will ship code to integrate.

InfoCard v2 will support one time password generators.

There is not revocation mandated with v1. It is up to the issuer and possibly the trusting party to handle the revocation.

 

IIS7 as a Developer Platform

Thomas Deml - Lead Project Manager IIS

IIS7 ships on Vista and Longhorn server

Error support is better in IIS7 with a stack trace on the local machine. The messages are tied to a database that will evolve to give you better trouble shooting.

<system.webServer> tag in web.config to configure IIS settings.

New configuration GUI supports both ASP.NET and IIS settings.

New UI is completely remotable over HTTPS.

Extend IIS with C, C++, C# and VB.NET.

Use features of ASP.NET for different file types ie. Forms auth for jpeg.

IIS7 Ectensibiltiy - Class based C++ API or managed code implementing IHttpModule or IHttpHandler and can take advantage of built in features.

IIS7 has an ISAPI mode that provides compatibility with IIS6 Integrated mode puts the work from aspnet_isapi.dll directly in the pipeline. Configured at the application pool level.

IIS7 will ship on Vista including the home SKU. On the lower end SKUs only 10 requests will be processed concurrently.

Metabase is gone. Configuration loaded in process.

 

Build Your Next Generation Internet Site Using SharePoint Technologies 2007

Jackie Bodine - Program Manager - Windows SharePoint Services

SharePoint is an ASP.NET 2.0 application with master pages and all of the controls. You can plug in other ASP.NET 2.0 controls into SharePoint 2007.

There will be functionality for governance. Integration with WF to do workflow.

Page layout can be customized based on content type using master pages. You can have many layouts for a particular content type.

Will integrate with ASP.NET 2.0 web parts.

Content Query Web parts that integrate with RSS feeds so you can click on the web part and get the results as a feed.

Web services for the content and admin functionality.

Submitting content for approval will start an approval workflow.

UI provides "Item Pickers" to allow you to choose what you want to put in the content pages without having to write a lot of HTML.

Support for RSS on everything, Blogs, Wikis, and Discussion Boards

SharePoint 2007 supports multiple farms. You can have an authoring farm and from there push content out to the production farm. The users from the Internet only hit the production farm so any mistakes won't be visible to them.

Document Library and task list synchs to Outlook.

Pictures can be put in-line. The markup is "sanitized" based on the tags that Microsoft knows about. Any un-recognized tags will be removed.

Wednesday, March 22, 2006 1:51:07 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [2]  | 
 

Joe Belfiore - Corporate Vice President - Microsoft Corporation

Off line capability and rich 3D graphics can help you to create applications that will be immersive for the end users and help you to have a deeper, richer relationship with them.

Darin Brown - President Avenue A Razor Fish

Smart client can enable rich advertising so even though we skip TV adds they can find us on the web.

Joe

Ultra Mobile PC

Windows Mobile Devices

Smart Phones?

Windows Vista Media Player will allow you to group your music by genre, artist, title, etc. as well as year.

Windows Media Center will allow your application to appear on millions of TVs world wide.

Windows Vista will have 2 SKUs for consumers that have the Media Center extensions in it and it will be available in 190 countries.

 

Lessons From the Trenches - Engineering Great AJAX Experiences

Scott Isaacs - Architect- windows Live Frameworks

Mashups (Remixing other people's context) is the real revolution in Web 2.0.

Mashup is a philosophy in design that allows you to integrate. It is reuse within a site and leveraging code already written.

In windows Live every UI element is a gadget.

Live Clipboard lets you copy, paste, and share content across the web. Bind behavior to classes in the CSS. Interoperable between IE and FireFox due to microformat embedded in the page.

You need to be aware you can ony have 2 connections to a web site so when you are doing AJAX you might hit that limit in getting lots of content. You need to prioritize connections. Usually user actions are higher priority. Put images, scripts, etc. in their own sub domains so they have their own 2 connections.

When a browser loads a script it is single threaded and serialized.

Never expire static content. Instead change the URL to break the cache.

LocalLive.com has a permalink button to get you to the start. The live site updates the hash (after the # sign) to make a new URL for the browser so the back button works correctly and you don't need to reload the entire page.

 

Windows Presentation Foundation/Everywhere

Not dependent on WPF.

CTP in Q3 later this year.

Plugin expected to be < 2MB

Grid, Canvas (absolute positioning), and stack layouts.

Use JavaScript and built in WPF/E controls to scale, spin, and rotate vector graphics in the browser.

Support .NET Framework model that uses IL and a small managed runtime to provide standard coding model.

Support for WPF styles.

 

Artificial Artificial Intelligence - Using the Amazon TURK and Web Services

Amazon has a lot of web services. You can store data with them but they charge you for the access and the storage.

You load information into Mechanical TURK and your Amazon payment information and then some human will do the work.

The idea is to replace expensive R&D with relatively inexpensive human labor.

Amazon Mechanical Turk provides web services API for computers to integrate artificial artificial intelligence directly into their processing by making requests of humans.

www.mturk.com has a realtime listing of jobs available and how much the person offering the job is willing to pay.

You can set qualifications on what the people have to know before they can work on your HIT (Human Intelligence Task) and also you can reject work that someone has done if you don't feel that they did something useful. Of course the workers can rate the requester and if you reject too often then you get a bad reputation.

Wednesday, March 22, 2006 12:05:08 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |