Monday, December 22, 2008

Blogger Holiday Charity Challenge: All 2008 Ad Revenue to Charity

Folks typically aren't clicking on Google Ad links when traveling to my blog. That's ok. It's not a revenue experiment. As a result, there's not much (if any) revenue generated on Effective Thoughts. My other blog, generates a bit more...but not much more.

Regardless, I convinced my blog partner to participate in the Blogger Holiday Charity Challenge and donate our entire ad revenue for 2008 to charity. Here's a snippet of the post I wrote for my other blog, The Freestyle Entrepreneur (TFE):

...As an alternative, TFE will donate 100% of its ad revenue for 2008 to the V Foundation for cancer research. Folks aren’t able to focus on business-let alone their lives and families-if they’re fighting cancer. This nasty character affects people of all ages, socioeconomic statuses, and geographies. It’s past time we knock cancer down for the count. The V Foundation is a 4-star rated charity on Charity Navigator and uses very little of its funds for administrative costs.

We challenge all the friends of TFE to donate to their charity of choice and we wish everyone a safe and happy holiday season.

Sunday, December 21, 2008

TFS Branching Guidance II

Buck Hodges just announced the release of TFS Branching Guidance II.

Thursday, December 18, 2008

TFS Overview to OSU Student Life

On Tuesday of this week, I traveled down to campus with Jeff Blankenburg and delivered a TFS 2008 overview to the fine folks at OSU Student Life. Some follow-ups:

Thursday, December 11, 2008

COALMG January: Lap Around VSTS 2010

Update: Cardinal Solutions will be sponsoring this event with food and drinks.

Due to New Years Day and CodeMash, we rescheduled the next COALMG meeting to Tuesday Jan. 6th from 6PM to 8PM. Randy Pagels will be presenting on Visual Studio Team System (VSTS) 2010.

Tuesday, December 09, 2008

TFS SLG Deep Dive

Thanks for everyone who came out to our State and Local Government (SLG) deep dive on TFS 2008 today. Alexei and I enjoyed the great conversations that ensued. A few follow-ups from the meeting:

Looking forward to hosting a full SDLC in a Box on February 4-5 at the Microsoft MPR at Polaris!

Sunday, December 07, 2008

Code Analysis Invalid Settings Error When Invoked from within VSTS

This issue plagued me for several hours today so I'm posting my resolution. Executing Code Analysis from within Visual Studio Team System - Team Suite kept reporting:
"Invalid settings passed to CodeAnalysis task. See output window for details."
MSBuild is unable to locate the correct binaries to perform Code Analysis on managed binaries. Make sure that either Visual Studio Team System 2008 Development Edition or Visual Studio Team System 2008 Team Suite is installed with the Code Analysis feature. If MSBuild is being run from within the "Visual Studio Command Prompt", specify the path to your analysis binaries by setting the FXCOPDIR environment variable.
At first, after a search, I thought it was an Environment Variable issue regarding the path to FxCopCmd.exe. Very helpful post here. However, after adding the Environment Variable FxCopDir, I was closer but still getting an error.

Finally, I took the FxCopCmd.exe command line string into a command window and executed. It came back with:
Switch '/targetframeworkversion' is an unknown switch.
Microsoft (R) FxCop Command-Line Tool, Version 1.36 (9.0.21022.8)
Copyright (C) 2007 Microsoft Corporation. All rights reserved.
Ah ha. Now we're getting somewhere. Hypothesizing this was an old version of FxCop which didn't understand target frameworks, I downloaded the latest (which provides support for .Net 3.5 SP1) and installed it to %ProgramFiles%\Microsoft Visual Studio 9.0\Team Tools\Static Analysis Tools\FxCop (making a backup copy of the directory first).

After restarting VSTS, I received a successful code analysis result. Whew...back to my demo preparation.

Thursday, December 04, 2008

TFS Reports Out of Date

You may have noticed it takes a while for Team Foundation Server (TFS) reports to reflect changes you've made to work items or builds. Let me guess...about an hour, right? Out of the box, TFS is set to refresh the data warehouse from its transactional store every 60 minutes.

How do I change the frequency of the data warehouse refresh?
  1. Browse to the TFS Controller Web Service on your TFS application tier server within IE at: http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx
  2. Select the ChangeSetting option
  3. Enter RunIntervalSeconds for the settingId and the desired number of seconds for newValue (300 for 5 minutes...5*60)
  4. Select Invoke

refresh-0

How do I force a data warehouse refresh?

Two methods here: either via the above web service or using SQL Server Management Studio.

Via the web service:

  1. Browse to the TFS Controller Web Service within IE at: http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx
  2. Select the Run option
  3. Click Invoke
  4. You should expect a new browser window opening along with an XML fragment with the element reporting true. If false, something went awry.
  5. Close the browser
  6. Click "Click here for a complete list of operations"
  7. Click GetWarehouseStatus
  8. Click Invoke
  9. You should see either idle (it completed) or running

Via SQL Server Management Studio:

  1. Open SQL Server Management Studio
  2. Authenticate with Analysis Services
  3. Drill into Databases to TfsWarehouse
  4. Right-mouse selecting Process
  5. Click Ok, and finally Close when processing completes

refresh-1

My reports still aren't refreshed and reflect an old refresh date. What gives?

For performance and scalability, SQL Server Reporting Services (SSRS) caches reports. By default, it's set to expire the cache every 30 minutes. On a per-report basis, you may change or even eliminate this caching behavior:

  1. Browse to SSRS using IE at: http://localhost/Reports/
  2. Select a report
  3. Click the Properties tab...Execution option
  4. In a production setting, you might dial back the sliding scale from 30 to 15 or 20 minutes. Because I frequently perform demos, I actually eliminate the caching.

refresh-2

Software Configuration Management for Developers

Coming out of my post on locking down merges, Tim Wingfield provided the following intriguing inquiry (paraphrased):

First, most of our clients don't delve into what our dev practices are, what source control we use, how we use it, or any of the specifics below feature/deliverable level. Am I being sheltered from a bigger problem out there?


Secondly, how can we as developers alleviate that issue? Source control, like the language something is written in, really shouldn't matter beyond that of a maintenance issue. A competent dev team is going to make use of all tools available. Removing merging from that list is like telling us to develop in Notepad!

These are great questions. First off, if your team is developing a product or a deliverable but not source, I feel the process and tools your team is using shouldn't be of much concern to the client. We should be leveraging 100% of our best practices and the optimal tools to deliver high quality software in the most efficient method possible. You should be leveraging tools for parallel development such as branching, merging, Test Driven Development (TDD), test plans, automated Continuous Integration (CI) builds, etc.

That said, this rarely happens (clients not caring about process, tools, and/or wanting source code). So, addressing Tim's second, following question, I think senior or lead developers must be well-versed in Software Configuration Management (SCM) and the software development process. Great developers should understand concepts such as:

  • Version control
  • Branching / merging
  • Test Driven Development (TDD) with test harnesses for class libraries
  • MSTest, NUnit, TestDriven.Net, Resharper, etc.
  • Continuous Integration (CI) builds
  • Automated deployment and promotion between environments
  • Automated execution and interpretation code analysis and code metrics/coverage
  • Well-versed in frameworks/methodologies: Scrum, Kanban, TDD, MDD, etc.

...and this is probably the short list. If you're an aspiring developer wanting to ascend to the next level, my advice to you: get great with SCM and the software development process. You will differentiate yourself significantly from other developers.

How about the situation where we're on site developing a solution the client will eventually maintain? As with most client situations, you're there to provide expertise and advice. If there's an existing SCM solution, certainly we should adhere to this--but seek to optimize! In an amicable and calm manner, gently make suggestions for improvement to your clients. "Hey, I've had great success and increases in quality through introducing test harnesses with continuous integration into the process. I could set up a demo in a day if you like."

System Integrators (SI), in my opinion, aren't hired to provide amazing development expertise. They're hired to solve problems. Typically, development shops have business problems but they also perpetuate software development issues due to shortcomings in SCM technique. You, as that trusted advisor, need to evangelize and lobby for optimal and proven processes and tools which increase the likelihood of quality and success in software development.

Go forth and optimize with SCM! To this end, here is my list of resources to aid your journey with SCM.

Sunday, November 30, 2008

Verified by Visa: Everything We Tell Folks to Avoid

Phishing is defined by F-Secure as:
"Fraudulent e-mail or website claiming to be legitimate seeking indentifiable information. Phishing is an attempt to steal your personal data."
When I recently attempted an online purchase from WalMart using my VISA card, being a security wanta-be, I immediately thought phishing when redirected to verifiedbyvisa.com and saw this dialog:

Seriously, these folks have to be kidding. You're asking for my personal data during a transaction and claim that's its a service "...at no additional cost." Wow! Thanks...but absolutely not, you jokers. As a malicious thief, I can go a long way with this data.

This is exactly the type of experience which aids malfeasance and the folks trying to steal personal data / identities. How long have we been working to educate folks to avoid providing this type of data under these type of circumstances? Years. And we're just now starting to turn the corner.

VISA, get rid of this! When folks submit to this lunacy (more often because they don't know any better), they only become softened against the threat of phishing. Personally, I'm refusing to submit to this and will leverage another card to complete my purchase.

Wednesday, November 26, 2008

TFS VirtualPC Refresh Planned

Update 12/25/2008: Refreshes are out...here!

Update 12/10/2008: Apparently, there's a way to edit the VPC config file (.VMC) to disable time synchronization with the host operating system. Might make demos relying on a sprint/iteration interesting but it's very helpful.

------------------
We rely on the TFS / VSTS 2008 VirtualPC instances Microsoft pumps out for demos, presentations, and even some training. Yes, I can kit out a VPC on my own but it takes at least a day or two, it lacks the scenarios and test users, and sharing 20+GB files across the team can be challenging.

I'm excited to announce the TFS team will be refreshing the 12/31 expiring VPC instances soon...with SQL 2008 and all the latest bits! Thanks, Jeff Beehler for this insight.

Tuesday, November 25, 2008

TFS: TF.exe Workspace Maps $/ by Default

Team Foundation Server's (TFS) command-line interface tf.exe workspace option maps a working folder to the server root $/ by default. That I can find, there's no way to turn this off. To combat this behavior, you'll want to unmap the default after adding in your desired folder mapping(s).

>tf workspace /new /noprompt /s:http://TFSRTM08:8080 MyWorkspace

>tf workfold $/SampleProject c:\src\SampleProject /workspace:MyWorkspace /s:http://TFSRTM08:8080

>tf workfold /unmap $/

Friday, November 21, 2008

MSB4019: "...targets not found" during TFS Build

Recently creating a TFS 2008 build for VS.Net 2005 projects, I kept receiving the following:

...error MSB4019: The imported project "C:\Program Files\MSBuild\Microsoft\VisualStudio\v8.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.

I discovered the v8.0 hive didn't even exist on the file system. At first, I thought I was missing something like the .Net 2.0 SDK. Unfortunately, installing that didn't add the files to v8.0. Eventually, I simply copied the v8.0 hive off a VS.Net 2005 developer machine and onto the build server. Maybe not the prettiest but it solved my build problem.

Friday, November 14, 2008

VSTS Tester 2010 Mark Mydland Heartland Tour (CONDG)

Jennifer Marsman, one of our beloved Heartland District Developer Evangelists, arranged for Mark Mydland, Principle Group Manager with Microsoft in Redmond for the VSTS Tester Edition to tour our area and deliver a presentation on VSTS Tester 2010. This also doubled as the November Central Ohio .Net User Group (CONDG) meeting. Thanks, Microsoft for the food and swag.

Along with some great product development stories, Mark highlighted the following:

Playback - often, the written repro scenario provided along with the defect isn't clear (if it even exists). This feature enables developers and other roles to watch a video of the functional / UI test from the Tester live, in action.

Test Case vs. Actual Capture - for manual tests, a list of steps involved with the test can be compared to what steps the tester actually took.

Work Item Categories - classify a work item type into categories with one work item serving as the default.

Cut/paste screen shots - easy to [Alt]+[Prnt Scrn] and paste a defect screen shot into a TFS defect work item.

Testing Activity Center - a UI for the layperson tester. No Visual Studio...just a lightweight app to manage test cases and iterations, execute automated tests, and manage defects.

Thread Debugger Agent - from within the playback for a test case, you can step through the code. It only works with events in the CTP but it will include methods and properties for RTM. It works by attaching to CLR profiler, registering for events and then logging them to the test case/defect. This is tied to a specific version of the asset stored within TFS. Wow.

Distributed Test - agents run as Windows services assigned to a single controller to execute and instrument (collect data metrics) distributed testing scenarios. Included in this instrumentation, called Data and Diagnostics, can concurrently capture things such as the Event Log, System Information, custom logging files, PDBs, and even a video recording. Each agent may possess configuration elements to accommodate environmental differences e.g dev/test/staging...different database connection, etc. 

PEX - this is a tool which while available in 2010, is downloadable for 2008 from the link. This neat feature executes your methods and recursively discovers all the code paths. It does this by throwing varying values and types at your method attributes e.g. nulls, strings, etc. This produces a Pex Exploration Results. Then, one can use this to  generate test harness classes leveraging this sample set. Wow.

Chess - Not here for the CTP but it should come online for a future Beta release. Chess sets up test cases and allows you to debug and break on any context change. Chess intercepts requests to the thread scheduler and re-executes them. Using some magic algorithm, Chess continues to execute thread requests in differing order. This helps determine and test if your code is thread-safe and yields the expected outcome regardless of the order in which it was executed.

Coded UI Test - A new test type which will produce managed code based off a UI recorder.

Thanks for visiting, Mark and thanks for bringing such talent to the district, Jennifer!

Thursday, November 13, 2008

Re-creating my TFS 2008 VirtualPC Instance

After lots of demos leveraging the TFS 2008 VirtualPC (VPC) trial instance released last April, I decided it was time to clean out the garbage and start from scratch. I realized, however, a lot had changed in those few short months. Now, this will be moot for this image on 12/31/2008 when it expires (and I hope replaced...please?) but here are the steps I followed (still a lot easier than starting from scratch):
  1. Update/upgrade Virtual PC client software to SP1.
  2. Apply TFS 2008 SP1
  3. Apply TSWA 2008 SP1 (uninstall TSWA 2008 first)
  4. Apply TFS Power Tools October 2008 (uninstall Dec 2007 first)
  5. Apply any custom process templates: Scrum for Team System 2.2
  6. Install the latest FxCop (v1.36) to %ProgramFiles%\Microsoft Visual Studio 9.0\Team Tools\Static Analysis Tools\FxCop

Tuesday, November 11, 2008

Using Windows Media Encoder for Screen Captures

My primary tools of choice for screen captures are Camtasia and Captivate. However, sometimes clients don't want to pay for these or you just need something quick and dirty. Windows Media Encoder (WME) provides a great, free alternative. You won't be editing or producing SWF files as robustly as the high-end tools but you'll get the capture. Steps:

1. Download and install Windows Media Encoder x86/x64.
2. Start up WME and choose "Capture screen"













3. Indicate what you'd like to capture: window, region, or screen.

















4. Choose the output file: Windows Media is the only option (wmv, wma)
5. Select the quality: low, medium, or high
6. Click "Start Encoding" to begin the screen capture.
7. When complete, switch back to the WME icon in your toolbar and click "Stop"

Easy blue-cheesy.

Central Ohio Technology Community Resources

As co-lead for a user group and a frequent presenter, it suddenly occurred to me, in a way, I posses the moniker of "community organizer". Yikes...not something I pursued. Well, as such, I'm very plugged into the central Ohio technology community and wanted to share a few resources I've discovered to assist our community groups:

Microsoft - Say what you will but Microsoft and the local evangelists step up to the plate every single time. Whether it's use of their Multi-Purpose Room (MPR) up at Polaris Parkway, co-sponsoring an event, or joint marketing, Microsoft supports the community in a huge way.

Platform Lab / Tech Columbus - Serving as a high-end testing lab and technology incubator facilities, respectively, these entities provide large, functional meeting facilities and access to a wealth of start-up and entrepreneurial assistance. They both produce event calendars which reach several thousand Ohioans you may use to promote your events. (Just contact them...what they ask in exchange is very minimal.) They also support joint-technology marketing and community events.

Columbus Tech Life - Ben Blanquera has established an amazing technology following in Central Ohio on his Tech Life blog. His resources include a comprehensive calendar, a wiki, as well as regularly scheduled MeetUp events.

Technology Consulting Firms - I purposely left out names here (because I work for one and usually keep it out of this blog) but you know who they are. I'm in awe of the amount of effort the staff from these firms put into the community.

OCLC - It's a library! It's a data center! It's corporate office space! These guys actually own and maintain the Dewey Decimal system. Cool, huh? Regardless, they open their doors frequently providing free meeting space to a number of area groups. Nice.

Thanks to all these entities for making central Ohio an excellent technology community. Please connect with these resources to further grow the community!

Sunday, October 26, 2008

SLG: TFS Day

If you work for a State or Local Government operation in central Ohio, bug your boss to attend TFS Day December 9th and 10th. Along with Brian Prince and Alexei Govorine, I'll be delivering a full day and a half on VSTS and TFS. Look forward to seeing you there!

BPM, Collaboration, and Workflow using Microsoft Office SharePoint Server

Cardinal Solutions is presenting a free seminar titled "BPM, Collaboration, and Workflow using Microsoft Office SharePoint Server", Thursday November 6th.

Many organizations already own pieces of SharePoint, but struggle to leverage the tool to solve real business problems outside of team workspaces. In this Lunch and Learn, we will cover the various feature areas of MOSS and the business problems that each of them solve. We will discuss the different versions of SharePoint and compare / contrast what is included in each. Finally, we will take a deeper dive into Business Process Management to demonstrate the various options when implementing workflow-based solutions with MOSS.

Who should attend?
  • IT Managers who are involved in application development and enterprise integration
  • Enterprise Architects who drive the technical vision for the organization
  • Senior Leadership who wants more flexibility and agility out of existing IT assets

Click Here to Register Or Call 877-673-8368 Event ID: 103 239 2201

Meet the Principal Group Manager of VSTS Test!

"Mark Mydland is the Principal Group Manager of the Visual Studio Team System Test Edition team (that means that all program managers, developers, and testers on VSTS Test in Redmond report up to him)." See Jennifer's post.

We'll be hosting Mark on November 14th during the day at a client but I'm also excited to announce he'll also be delivering a technical talk that evening in conjunction with CONDG and COALMG at the Microsoft Polaris offices.

Wednesday, October 22, 2008

Enabling Unit Test Harnesses Against Internal Methods

Being a purist, I like to lock down my classes and methods with private and internal so as not to expose functionality unnecessarily as public. This presents a problem with unit testing. The test harness cannot see internal methods...even on a public class. I had been editing the code to mark the method public, executing tests in debug mode, and then re-editing the method back to internal. Hokey...at best.

As a far more optimal and usable alternative, add an InternalsVisibleTo directive to your AssemblyInfo.cs file. It opens the door to test harnesses to internal methods.

Microsoft Dog Food Developer Conference

On November 20th in Columbus, OH I'll be participating in the Microsoft Dog Food Developer Conference at the Microsoft Polaris offices. Hope to see you there!

(I'll let Brian Prince articulate the details...)

Update (11/26/2008): Blankenburg's photos from the day. Not my best side. ;-)

Monday, October 20, 2008

Microsoft Gold Partner Training Links

If you're a Microsoft Gold Partner in the Heartland District, check out these training links. There's even one being published as a blog/feed now. FTW!

Microsoft Heartland District Upcoming Training for Gold Partners
Microsoft Partner Learning Portal Access

Friday, September 19, 2008

"I'm a PC"...Come Again?

So I'm over at the local Microsoft office this morning for a meeting. I get there a little early to chat with my peeps and everyone keeps saying, "I'm a PC". Huh? Is this some new addition to the mountain of acronyms out of Redmond? Crap. I need wireless. Save me Google. Even the admin (whom I've befriended over the years...) is busting this out along with a sly, knowing smile. (Me returning the smile with a forced gesture likely resembling The Joker in Dark Knight). "Oh, how lovely. My 1-year-old threw up on me yesterday", was the response brewing in my head.

As this scenario keeps repeating itself, that old I-forgot-to-wear-pants-today-but-don't-realize-it nightmare sets in and I'm all freaked out. I have this deep-seated fear of calling someone by the wrong name (I'm terrible with names...sorry, I really do care about you) and I'm getting that clammy, can't-believe-I-just-called-Chuck-the-name-Ralph feeling of idiocy.

Finally, someone throws us a bone and identifies the elephant in the room (much to my relief) as Microsoft's new marketing campaign: "I'm a PC". Ohhhhh. It's actually very well done.

It's the first message from Redmond I can remember that, well, doesn't suck. ;-) I also found it impressive *every* Microsoft employee was in on it and behind the campaign. Good show. Enjoy.

Wednesday, September 17, 2008

SQL Server 2008 Express Installation Prerequisites

Attempting to install SQL Server 2008 Express recently, I kept receiving "...must install Microsoft .Net Framework 2.0 SP2". Huh? There was no SP2, AFAIK. Turns out there was but it's only wrapped into the .Net 3.5 SP1 redistributable. Leveraging this helpful MSDN forums post, I installed the following and successfully brought SQL Server 2008 Express up on a Win2k3 SP1 box.
Why does everything need to be so damn complicated?

Sunday, September 14, 2008

Virtual TFS User Group

It's a rough time (9PM EST) but some of the TFS heavyweights created a Virtual TFS User Group. Your local ALM group (COALMG) clearly is superior in community and value, however. ;-)

Sunday, September 07, 2008

Spirit of Columbus Half Marathon

Last Sunday, I completed the Spirit of Columbus Half Marathon. I beat my goal (under 2 hours) but the last 4 miles were killer. It showed. Training offered for an enjoyable summer of exercise but I'm hanging up the running shoes for a while...need to work on strength, flexibility, and balance.

Saturday, September 06, 2008

HOWTO: TFS: Can I Prohibit Merging?

Recently a client inquired if it were possible within the Team Foundation Server (TFS) Source Control authorization capabilities to prohibit merging. Having a long week, I brainlessly looked at the authorization options within Source Control Explorer (right-mouse Properties >> Security tab):

image

Nothing there. Then I knocked my forehead and realized one would configure this authorization as part of the branching mechanism. Duh. Merging is a client-side activity. If you can access the TFS server, you can merge. However, committing changes to server source repository requires Check In authorization.

My personal preference is to empower and entrust developers with a fair amount of responsibility. Thus, I like to enable merging into the integration branch for developers. However, this client wanted to restrict developers from merging and reserve this responsibility for accounts belonging to a TFS group (created by default) named "Project Administrators". These are folks playing, for example, the team lead role. Our developers have been added to another TFS group (also created by default) named "Contributors".

Let's assume we're leveraging a simple: Development >> Main >> Production branching mechanism within source control. The Development branch is somewhat wild-wild-west in that you want to impose few impediments to check-ins. Frequency of check-ins usually leads to higher quality (because you're undergoing unit testing and integration more often). So, I have authorization configured to allow Contributors to Read, Check In, etc.:

image

In contrast, the Main branch serves as an integration branch. It should be less wild-wild-west but still flexible. The golden rule here is that no code should be directly checked into Main. It should [almost...a few exceptions] always obtain updates through a merge from the Development branch.

Following my typical paradigm, I would enable Check In for the Contributors within Main. However, for this client, we will revoke that permission for Contributors reserving it for Project Administrators (Note: you'll likely need to uncheck "Inherit security settings"). We'll explicitly deny Check In and Lock while Allow'ing Read:

image

Project Administrators retain full rights:

image

So let's take this one step further into the Production branch. Once the team completes integration testing in the Main branch, we start to call on the Release Manager role. S/he owns the Production branch and should treat it as highly restrictive. In theory, merging from Main into Production should be a formality (ok, in reality, we know this isn't the case but go with me here). With this in mind, let's create a third TFS project group named "Release Managers".

image

We'll keep full rights for the TFS server administrators group but restrict Project Administrators to Read rights and prevent Contributors from even seeing this code (just for fun). (Note: You'll need to explicitly add the Release Managers group we created by clicking the Add button.)

Release Managers:

image

Project Administrators:

image

Contributors:

image

Happy merging!

Wednesday, September 03, 2008

Team System Web Access 2008 SP1

Amidst all the .Net 3.5 SP1 and VSTS 2008 SP1 excitement, Team System Web Access (TSWA) got pushed aside. Not to be left behind, the TSWA team announced their SP1 recently.

Installing it this morning, I encountered this error:
"Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel."
I posted to the forums about this and it turns out one must uninstall first and then re-install. Maybe I'm the odd one out but I can't recall ever uninstalling to apply a service pack. Regardless, here are the steps I followed:

1. Note IIS settings/configuration:


2. From Add/Remove Programs, remove Visual Studio Team System Web Access. Keep all your settings:



3. Kick off the TSWA MSI installer.

4. When you encounter the existing site conflict, configure to leverage/use the existing site and application pool:





5. I chose Windows authentication but choose whatever is appropriate for your environment:



Afterwards, it took a while for the IIS pool to spin up but TSWA was back and better than ever.

Saturday, August 30, 2008

COALMG: MSBuild 3.5 and Team Build 2008 Continuous Integration

Session Details:
Did you know that .csproj and .vbproj files are really MSBuild files? More than build processes though, MSBuild is a full-featured automation language. It includes structured control flow, variables, refactorability, error handling, logging, and powerful extensibility. You can easily integrate MSBuild into your own enterprise processes and start adding value right away. We'll also look at how Team Foundation Build extends on MSBuild and adds robust integration with Team Foundation Server.

Speakers Bio:
Steve Andrews is a Team System MVP, and has been working as a developer for more than 9 years. During this time, he has designed and developed applications in such widely varying areas as trust accounting, medical information management, supply chain management, and retail systems. He is currently employed at RDA Corporation in Philadelphia, PA, as a Software Engineer and a team member in their Architectural Guidance evangelism team. Steve is also an MCP, ICSOO, Speaker Liaison for the Philly .NET User Group, and all around .NET fanatic.

Thursday, August 28, 2008

Microsoft Server vs. Services

Learned something new listening to a RadioTFS podcast yesterday. I believe it was Martin Woodward who identified the meme that Microsoft products entitled "Services" are free but those entitled "Server" cost. Examples:

Windows Sharepoint Services: free
SQL Reporting Services: free
Windows Server: cost
SQL Server: cost
MOSS (Server): cost

And there's your odd tidbit of the day. I'm wasting precious brain cycles trying to find an exception to this rule. ;-)

Monday, August 18, 2008

TFS Installation and Port 8080

By default, Team Foundation Server (TFS) wants to expose services on port 8080. Installing for a client recently, I kept receiving a conflict during the pre-installation checks regarding 8080. There is an option to modify the port using an INI file associated with the installation but I didn't want to introduce a non-standard port for my client.

Running a netstat -a command from the command line revealed something running on port 8080 but failed to identify the process ID. Next, I downloaded TCPView from SysInternals (Microsoft), ran it, and "bam" there was: miniwinagent.exe. Excuse you? A quick search yielded this IBM KB posting. The EXE is a file copying agent for the IBM RAID hardware/software. Fortunately, I'm an admin on the box. I simply disabled the "ServeRAID FlashCopy Agent" service and let the hardware folks know what I had done.

Other helpful posts here and here.

Wednesday, July 16, 2008

Get Your Team Foundation Server Hate On!

[Google ranking skyrockets... ;-)]

I'm a big fan of TFS/VSTS. However, there are a good pocket of folks who take issue with the way TFS handles or implements a certain feature. Well this is your chance to vent!

I'm planning a presentation around the "Top 10 TFS/VSTS Hates and How to Alleviate Them"...or something along those lines. But I need your help. Post a comment below detailing your dislike. If it's legitimate, I'll highlight it in the presentation and [hopefully] provide an alternative, resolution, or work-around.

Thanks in advance!

Update 7/19/2008: Version Control and Microsoft

Friday, July 04, 2008

Contribupendence Day

I'm a day late here but read more about Contribupendence Day on Jeff Blankenburg's blog. Our community here in central Ohio runs strong and it's 100% attributable to individual contributions. Thank you to all these folks for the contributions they've made in helping others (especially me) achieve their goals. My props:

Josh Holmes - When first reaching out to the community, Josh went out of his way to provide great advice and some seriously cool opportunities for me to get involved. He regularly writes and presents on topics which help community leaders improve themselves. Additionally, he helped organize CodeMash and the Ann Arbor Give Camp--regional events which often exceed the quality of national, professional, thousands-of-dollars events.

Carey Payette - There isn't a Heartland/Ohio event I don't see Carey attend. She took over the reigns for CONDG and is one of the most selfless people I know. How she manages 3 kids of her own, internal company user groups, CONDG and stuff I'm not even aware of, I'll never know.

Jeff Blankenburg - I've been loving on the Developer Evangelist position from Microsoft since its creation. Our last DE made for a tough act to follow. Now I feel sorry for the next guy. Jeff is that good. I think he was custom molded for the position. His outgoing personality, strong technical skills, clear writing/presenting, and his genuine desire to help truly make a difference in the Heartland. I'm glad he's on the case.

Brian Prince - A one-time competitor of sorts, I'm constantly amazed at Brian's almost paternal-like instincts and attitude. Near immediately following the announcement of his role as Architect Evangelist, with a 1000 things to do, he reached out with, "Hey, how can I help you?" Help me?! Wow. Brian's uber-smarts and services experience makes him a tremendous asset for the Heartland. I'm dreading the day he's tapped to head to Redmond. No Drew, you can't have him! ;-) Along with Drew and Dave, CONDG (and several other user groups in central Ohio) are what they are today because of Brian. Finally, Brian does a tremendous job of breeding leaders. Who's running and contributing to the community in central Ohio? Most have a connection to Brian.

Leon Gersing - Leon contributes by challenging the status quo and making us think. He also contributes by doing. Rather than pitching a fit about developer tools within the Sharepoint arena, he went off and developed a unit test harness solution. Bam. His presentation style is that of a calm, peaceful old friend--and the point really gets across. I'm glad he's still here in Ohio...if not working for my firm. ;-(

Jim Holmes - A lot of folks aren't aware of even half what Jim contributes to the community. He's one of the most humble guys I know. Just FYI, CodeMash is Jim's baby. He has lots of help from Brian, Josh, Jason, et. al. but he's the brainchild. And Central Ohio Day of .Net, Dayton .Net User Group, writing books, reviewing books, presenting, etc. A true contributor. Even when he's griping about TFS, he remains a gentleman. Despite working for a competitor, I'd relish working with him on a project--I'd learn a ton.

Mike Wood - Mike rolls just like Jim: completely humble, just wants to help, always contributing. Just an amazing kind of person. Mike runs the Cincy .Net User Group and the Central Ohio Day of .Net...in addition to touring all over presenting on cool stuff like WF. His creativity with delivering more and more value to the community (CINNUG "special events", tie-ins to Day of .Net, Microsoft, etc.) make the Cincy community significantly stronger.

Monday, June 30, 2008

VSTS / TFS 2008 VirtualPC User Roles

I use the Visual Studio Team System / Team Foundation Server VirtualPC trial frequently for demos. However, I can never remember the users and their roles presented in the various scenarios / labs. (and they don't appear to be documented anywhere) For the record:

Darren - Administrator
Nicole - User
Andrew - CIO
Art - Architect
Grzegorz - Developer
Jacqui - PM
Larry - BA
Renee - Tester
Sonia - DBA
TFSSetup - Administrator

Thursday, June 19, 2008

PowerShell...for SQL Server

PowerShell is the bomb. I use it for any sort of file system or OS-related task. Now PowerShell will enter into the land of SQL Server with the SQL Server PowerShell Extensions.

Friday, June 06, 2008

Software Development Meme

Called out by Jeff Blankenburg (isn't this like a chain letter from the 80's? ;-)...

How old were you when you started programming?
Trying to remember...I think about 11. Somehow, my Dad had this premonition prediction that computers would become important and bought a Timex-Sinclair 1000 for me--with a whopping 2KB of memory. Reviewing the manual on how to program with BASIC (not sure about those semi-colons...):

10 Print "Hello";
20 Goto 10;
Run

I had written my first program! I tried saving it to the cassette tape (huh?) drive but that never seemed to work quite right.

About the same time, my neighbor acquired a Commodore 64--with a 5 1/4" floppy! (they were loaded ;-). He also subscribed to some Commodore magazine where they listed (yes, this was before the Internet...and before including disks with magazines) 1,000+ line programs which one could type in. Well, we actually did this. That's where I learned to type without looking and when I first "learned" programming constructs. (Wow, that's sad.) One can learn a lot from reading and typing in code.

How did you get started in programming?
I started off in engineering in college (OSU) but quickly washed out of freshman physics. A 1.8 didn't sit well with the family (or me). I flipped to MIS and started making the dean's list. Unfortunately, [curse them] the MIS program at OSU in 1992 still taught COBOL. I'd had FORTRAN with engineering but COBOL was my first pragmatic language. MacPascal was a quick third.

What was your first language?
BASIC.

What was the first real program you wrote?
Technically, see question #1. However, the first program I wrote from scratch was in BASIC on a TI-99 that featured a rudimentary, blocked out face that blinked. For some reason, the school district embraced TI-99's and I got to use them after school and during summer programs [geek].

What languages have you used since you started programming?
(In quasi-chronological order...) BASIC, FORTRAN, COBOL, MacPascal, JCL, HTML, VB3-6, SQL, VBScript, C#, Javascript, ActionScript, PHP, VB.NET, CSS, ...and some Spanish ;-)

What was your first professional programming gig?

I landed an internship with Nationwide Insurance in Columbus, OH on the Integrated Customer Account Record (ICAR) group as a sophomore (or was it junior?). It was an early data warehouse. Revolutionary...at the time. I think they let me edit a single line the entire quarter and then hack together some JCL to execute it on the mainframe. Scary.

When I graduated, my first full time code came at Crowe Chizek in Indianapolis, IN writing in some 4GL. Fortunately, I quickly graduated to VB3 and Oracle 6.

If you knew then what you know now, would you have started programming?
I think Blankenburg responded "Absolutely." I'm likely more a "probably". I've always had a certain "vibe" with software and systems...but I think I could have just as easily become an attorney or an entrepreneur. I like to be the guy to figure out the hard stuff and then let the team refine it. Most of my programming nowadays comes in the form of "figure it out" or "make it better/faster/higher quality" as opposed to "implement it from end-to-end".

If there is one thing you learned along the way that you would tell new developers, what would it be?
Don't be a primadona. There's something to learn with every language and every experience. Some wise person said (roughly), "Go with the experience...the money will come". Oh, and don't participate in language wars. All languages posses benefits (hell, it all seems to go back to 1979 and SmallTalk anyway ;-)..."your" language isn't better than any other language. Right tool for the right job.

What's the most fun you've ever had ... programming?
I have to say that programming has gotten pretty darn fun lately with the innovations coming from Redmond with .Net and the OSS community. But, reaching back in history, I had the opportunity to lead a team building the Art.com e-commerce site on ASP/VB6 back in 1999...the heart of the Dot Com Boom. It looks like they're still using some of the original platform. Cool...maybe those 18 months made a difference.

Thursday, May 29, 2008

Friday, May 23, 2008

CONDG Entity Framework Presentation Follow-ups

Thanks to everyone who came out last night (73...a great showing considering the start of Memorial Day weekend and the Indiana Jones IV opening) to CONDG for my Entity Framework presentation. We had some great questions I didn't know the answers to which I'll investigate and respond to soon.
  • Is there a caching mechanism for ObjectContext? Thinking of this in a web (ASP.NET), disconnected between request/response environment.
  • Is the conceptual, mapping, and schema XML loaded up all at once or is the XML representing entities loaded up individually upon instantiation / use?
  • The EF wizard interrogates the physical data store and produces the 1:1, Type per Table initial EDM. Is it possible to model the EDM first leveraging it to generate the physical schema?
  • Referring to this performance comparison between the traditional Sql Client, Entity SQL, and LINQ to Entities, what's the break-down of time consumed?
    • The ADO.NET team posted a follow-up with the break-down here. Granted, it's beta3 bits but there is some fascinating insight into the innards of EF on this post. Here is the final installment of posts on performance.
  • (I responded to this one but want to delve in further...) Are transactions built into EF and the ObjectContext? Is the ObjectContext transaction-aware?
  • Is the EF and ObjectContext interface based? Meaning, can I leverage a mock testing framework to unit test my EDM?
  • Clarification on lazy loading in EF. Thanks to Kevin Sprague for correcting me on how NHibernate handles both lazy and eager loading.
    • I can't state it any better than the EF FAQ. Lazy loading is the default but eager loading is supported on a query-by-query basis. One needs to explicitly call Load (or Include) to pull related entities into the object graph. Related postings on lazy loading here, here and here.

Wednesday, May 21, 2008

CONDG: Entity Framework Presentation

In advance of my presentation, I'm posting the slides and sample projects on SkyDrive. Hope you enjoyed the presentation and please post questions and/or comments here. Thanks for attending.

Friday, May 16, 2008

I'm Presenting the Entity Framework at CONDG Next Thursday

Come see my Entity Framework presentation on Thursday the 22nd at CONDG

When: Thursday, 5/22/2008, 6:00pm - 8:00pm
Where: Microsoft Office - Columbus (scroll down for directions)

Sponsorship
This meeting is being sponsored by Cardinal Solutions (www.cardinalsolutions.com), food and beverages will be provided.

Topic
Decomposing the ADO.NET Entity Framework

Abstract
As Microsoft continues to evolve the data access stack, the outlook continues to improve for developers. This presentation explores Microsoft's latest offering: ADO.NET Entity Framework. We'll cover what the Entity Framework promises and what it delivers v1.0 as well as how it compares with other data access frameworks. Learn how you can transpose the physical database model into a more developer-friendly, application-centric model.

Speaker
Jeff Hunsaker (www.jeffreyhunsaker.com)

Jeff is a managing consultant and team lead in the Microsoft and ALM practices for Cardinal Solutions Group in Columbus. Working for a variety of consultancies and firms for the past dozen years, he typically plays the architect or lead developer role (yes, he still codes). Jeff gets excited about efficient, resourceful, and elegant technology solutions, agile development techniques, and providing value for clients quickly and regularly. He's constantly looking for faster and more -able: (scalable, maintain, reliable, secure, etc.) ways of delivering software and loves learning new things. In his spare time, Jeff enjoys his family (two boys, wife Lisa), reading, and writing.


Directions to the Meeting
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
The CONDG meets at the Microsoft office on the North side of Columbus, OH at Polaris Center.

Address: Polaris Center, 8800 Lyra Dr. 4th Floor, Columbus, OH 43240


Contact Information
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
If you have any questions about the Central Ohio .NET Developers Group or the upcoming meeting, please contact us at contact@condg.org. If you would like to be removed from the Central Ohio .NET Developers Group mailing list, reply to this message with the subject of "Remove".

Tuesday, May 13, 2008

Installing VS2008 / .NET Framework 3.5 SP1 BETA1

I've been awaiting an improved Entity Framework EDM designer tool since the CTP released in December. Well, with an Entity Framework presentation looming (May 22nd), the Redmond gods responded: VS2008 and .NET Framework SP1 BETA1.

I uninstalled all sorts of CTPs and now am the proud owner of a laptop with VS2008 and .NET 3.5 SP1 BETA1.

Below find the steps I followed. Please heed the warnings and directions within the readme (.NET 3.5 Framework SP1 BETA1, VS2008 SP1 BETA1) explicitly. Also, this is BETA software...expect minor issues and don't install on production equipment.

Scott Gu Braindump
Brian Harry Post

Uninstalled:
Microsoft ASP.NET 3.5 Extensions CTP
Microsoft ASP.NET Futures (July 2007)
ADO.NET Entity Framework Beta3
ADO.NET Entity Framework Tools CTP
Silverlight Tools Beta for Visual Studio 2008
KB949325

Did *not* uninstall:
Microsoft ASP.NET MVC Preview 2
Microsoft Silverlight

Installed:
.NET 3.5 Framework SP1 BETA1
VS2008 SP1 BETA1

Of note:
  • After the .NET 3.5 Framework SP1 BETA1 download completed, I kept being prompted to close the installation before proceeding. Huh? Finally, I simply clicked on Ignore and the installation completed successfully.
  • I had to reboot after the .NET 3.5 Framework SP1 BETA1 installation completed.
  • I needed to locate the vssetup.msi and original Visual Studio installation media to proceed with the VS2008 SP1 BETA1 installation.

Saturday, May 10, 2008

VS 2008 / .NET 3.5 SP1 BETA Released

Update (5/12/2008): And...we're back!

Visual Studio 2008 and .NET Framework 3.5 Service Pack 1 Beta
Scott Gu
Somasegar

Remarkably, they delivered M:M conceptual modeling in the Entity Framework designer. Thank you! (Stayed up 'til 3AM a while back trying to get it working...yeah, it wasn't supported then. Super.)
----------------------------------------------------------------------------------

Update (5/10/2008): Looks like the Elegant Code post was pulled. Sigh. We'll have to wait for the official announcement.

----------------------------------------------------------------------------------

It doesn't appear to be all that pronounced just yet but Service Pack 1 for both Visual Studio 2008 and .NET 3.5 is out! This should give much relief to the eight steps and MSIs now required. (Hey, it's beta/CTP, right?) Credit to Elegant Code for providing the links.

How to get VS2008 SP1
Download links from Elegant Code

Friday, April 25, 2008

Copy/Paste VS Error Message Pop-ups: Thank you VS Team!

You've been there: big long error message within a pop-up...need to copy/paste it into a search dialog...blast, can't copy!

The fine folks on the Visual Studio team have changed all that. Thank you! (It's the little things in life...)

Wednesday, April 23, 2008

Inaugural COALMG Meeting: Tuesday April 29th

Announcing the first meeting of the Central Ohio Application Lifecycle Managment Group (COALMG). First, check this post to discover more about Application Lifecycle Managment (ALM).

To accommodate the schedule of our speaker, we've moved our meeting this month to Tuesday April 29th from 5:30-7:30pm at the Polaris Microsoft office. (Normally, we meet every other month on the 1st Thursday, opposite the MOCSDUG.org user group.) Our web site is www.COALMG.org. Look forward to seeing you there!

Writing Maintainable and Robust Applications with Visual Studio Team System

Meeting Date & Time: 4/29/2008 5:30PM

Session Description:
Microsoft Visual Studio Team System is an extensible, life-cycle tools platform that helps software teams collaborate to deliver modern, service-oriented solutions. Visual Studio Team System is designed so every role in the development team has an integrated, seamless experience with the tools they are most comfortable with. Code Analysis, Code Metrics, Code Profiling, and Unit Testing are tools that are part of Team System and can be used through the software development lifecycle to improve quality. The impact of software defects is one of the reasons it is difficult to control the costs of the development and deployment activities on software projects. It is commonly accepted that defects that get resolved later in the development cycle cost more to fix. Learn how you can reduce defects by using the tools provided in Visual Studio Team System Developer Edition 2008.


Speaker Bio:
Randy Pagels - ALM Technology Specialist, Microsoft Corporation
Randy is an Application Lifecycle Management (ALM) Technology specialist for the Heartland District providing expertise on the Visual Studio Team System and Team Foundation Server products. He helps customers get the most out of their ALM tools by explaining best practices, installation, and configuration through presentations, workshops, or quick starts. Prior to Microsoft Randy worked as a developer for 16 years in the IT area of DTE Energy. He has architectured and development many .Net web applications using agile methodologies.

What is ALM?

I'm asked this frequently. What is ALM? First off, the acronym stands for Application Lifecycle Management. Here's the WikiPedia write-up on ALM but essentially, it's the process and tools your team uses to construct software. Kind of like SDLC but a whole lot more.

The best explanation of ALM (I think) comes from Eric Sink who asks and answers "What is ALM? Traceability." Yes, it's long but worth the read.

We hope to answer this and lots of other questions about software development with the new group we formed called the Central Ohio Application Lifecycle Management Group (COALMG). Check it out. We hope to see you there!

Monday, April 21, 2008

CODODN: What's New in the ASP.NET 3.5 Extensions: Resources

Thanks for attending my presentation. Resources I referenced:

.Net 3.5 Enhancements Training Kit Download
Overview of ASP.NET 3.5 Extensions Preview
ASP.NET 3.5 Extensions Preview
(unrelated) Central Ohio Application Lifecycle Management Group: COALMG


Update 4/22/2008: Props to Dan Hounshell for finding this CODODN video. I'm in there 2-3 times. Nice!

Friday, April 18, 2008

CODODN What's New ASP.NET 3.5 Extensions

In advance of my presentation, I'm posting the slides and sample projects on SkyDrive. Hope you enjoyed the presentation and please post questions and/or comments here. Thanks for attending.

Sinus Relief: My Approach

Quick off-topic post about allergy relief...

I've been plagued by allergies since childhood: trees, cats, dogs, ragweed, you name it. I've been on every drug on the list. I can remember being sick every Easter and every birthday (end of September) for...well ever. A few years ago, I consulted an allergist who ran me through a series of tests, determined my exact allergies, and gave me some solid guidance.

Following my allergist's advice, I've not been 100% allergy/cold-free but I've noticed a significant improvement. His recommendations:
  1. Exam from an Ear, Nose, and Throat (ENT) doctor. I have a slightly deviated septum and some nasal dollops but otherwise, nothing horrid. He checked my jaw, my hearing...all kinds of stuff. Fortunately, nothing major is/was wrong. He did recommend I wear a mouth guard at night to prevent teeth grinding (which may cause eustachian tube clogging).
  2. Take a daily Loratadine (generic Claritin).
  3. Daily Fluticasone steroid nasal spray (generic Flonase).
  4. NeilMed Sinus Rinse in the morning and before bed.
  5. (I think I came up with this one but...) Wear a particulate mask (just one of the cheap ones) when mowing the lawn. I'm sure the neighbors think I look like a weirdo but [without scientific evidence] it helps keep the dust and particles from getting into my sinuses...and causing infections.
The NeilMed Sinus Rinse is the big one for me. I'd done the other drugs for a while with limited success. The sinus rinse is similar to a neti pot...if you've heard of that. Essentially, it's a saline rinse for your sinuses. It's awkward at first but the benefits are tremendous--significantly fewer sinus infections!

I hope you find relief from your allergies. Looks like this spring will be rough.

Wednesday, April 16, 2008

Upgrading TFS Beta 2 to RTM

I have a client migrating to TFS 2008 who was leveraging an old version: 2008 Beta 2. We had difficulty getting the RTM software bits so I ended up extending the license for 30-days. (previous post) Well, it expired yesterday. Arg.

We finally got the RTM bits and I'm upgrading now. My steps:
  1. Follow the uninstall steps to the letter. Get rid of all that old stuff!
  2. Backup your existing TFS databases.
  3. Kick off the TFS 2008 installation and follow instructions
  4. Restart
  5. Install everything else you need: Build, Proxy, Explorer, etc. Oddly, the installation utility must be re-executed and these services installed individually.
  6. Execute the TFS Best Practices Analyzer (BPA) found within the TFS 2008 Power Tools.
    (Good how to here on BPA from Richard Hundhausen.)
  7. Resolve issues discovered with the BPA tool.
My experience (pretty darn good):



The databases were updated automatically.



I received a "Processor type and speed do not meet recommendations." warning but pushed on...this is a proof-of-concept box.



Excuse you? I can't run the services under the account I'm installing under? Great...starting over.

Had some red flags with the Best Practices Analyzer but they were easily fixed. BPA is a great tool (check out this tool for other products as well: Sharepoint, SQL Server).

Tuesday, April 15, 2008

PowerShell Directory Clean Up Script

Just a quick post of a PowerShell script I leveraged to clear out a directory of files older than 7 days. Props to Jeffery Hicks.

powershell.exe -command "Get-ChildItem 'C:\Temp\' -recurse | where {$_.LastWriteTime -le (Get-Date).AddDays(-7)} | remove-item -recurse"

Tack on a -whatif to the end of the script to see what would be affected without actually executing the action. Very powerful. PowerShell.

Entity Framework, Data Services to Release with .Net 3.5 SP1

The Entity Framework and ADO.NET Data Services will ship gold with the .NET 3.5 Service Pack 1. Now when that will release is anyone's guess...what's the over/under?

[I missed this but props to Michael Collier for catching it.]

Saturday, April 12, 2008

Central Ohio Day of .Net Schedule Released

Come see my "What's New in ASP.Net 3.5 Extensions" talk at 11:40AM. Here's the entire schedule. Hope to see you there!

Silverlight 2.0 Beta1 CrossDomain Issues

Preparing for my upcoming "What's New with ASP.NET 3.5 Extensions" presentation at the Central Ohio Day of .Net, I ran into a roadblock with my simple Silverlight demo.

I have a Silverlight application calling an ASP.Net Web Service (traditional ASMX). The Silverlight application is hosted on an ASPX page served up in an ASP.Net Web Application.

I kept receiving a mix of the following two errors:

An exception of type 'System.ServiceModel.CommunicationException' occurred in System.ServiceModel.dll but was not handled in user code

Additional information: [CrossDomainError]

---------------------------------------------------------------

An exception of type 'System.ServiceModel.ProtocolException' occurred in System.ServiceModel.dll but was not handled in user code

Additional information: [UnexpectedHttpResponseCode]
Arguments:Not Found

Essentially, this is saying, "hey this control/page you're browsing on safesite.com is trying to interact with something over on unsafesite.com...and we're preventing it". Good for security, bad for demos.

Originally, when creating my Silverlight application, I chose the "Generate an HTML test page to host Silverlight within this project" option instead of creating a new web application. Bad idea. You'll always experience this cross domain issue using the HTML hosting page while calling a backend service. I quickly switched to a web application.

The easiest fix for me was to switch the web site and web service from using Cassini  localhost with dynamic ports to the machine name and named virtual directories.

Here's my original properties on the web service project:

image

I switched it to:

image

The fine folks at Microsoft even provided a helpful "Create Virtual Directory" button.

Within my Silverlight project, I also needed to update the Service Reference (orginal):

image

I switched it to:

image

After you Configure Service Reference (above), make sure you Update Service Reference (below) to update the configuration code built for you by Visual Studio:

image

Despite the Silverlight 2.0 Beta1 recent release, there is much traffic about this issue in the forums and on blogs. It's actually nothing new. I ran into this issue with Flash a while back. Another, more production-ready solution is to leverage a policy file indicating to the object (Silverlight, in this case) that it's ok to interact with a particular service on some other domain. This is a file named crossdomain.xml and/or clientaccesspolicy.xml. More information at "Some tips on cross-domain calls" and "How to: Make a Service Available Across Domain Boundaries".

RELATED

Silverlight 2.0 and WCF

Silverlight Forums CrossDomainError

Wednesday, April 02, 2008

Shrinking WSS (Sharepoint) SQL Server Log Files

Yesterday, while migrating a source repository from StarTeam to TFS, I received the following error:
"TF30042: The database is full. Contact your Team Foundation Server administrator."
Excuse you? Sure enough, my 100+ GB drive was full on the server. But I'd only migrated around 1000 items. Surely SQL wasn't consuming 100MB per file.

Turns out (yes, there was a lot of crud on the drive but...) the majority of the space, almost 40GB was being consumed by the Windows Sharepoint Services WSS Content data and log SQL Server files. Huh? I still need to investigate and understand why this portal, which is 100% unused, grew so large. Regardless, here's what I did to resolve:

  1. Since this is not yet a production database, I flipped the SQL recovery option from Full to Simple for WSS Content and several other databases. Detail here and here.
  2. Executed the maintenance plan for all the databases to get backups and clear out some of these files. That didn't help much. The Auto_Shrink == true didn't assist us in trimming the file sizes.
  3. Executed the following SQL as described here to understand the space available.
  4. Executed the following SQL as described here to shrink the log file down to 1GB (1000MB)
  5. Checked the data
  6. Performed a second backup for safe keeping
In the end, I recovered more than 80% of the previously consumed hard drive. Check with your DBA and / or your Sharepoint admin should you encounter this issue in a production environment. I had the luxury of being a bit cavalier because I was in a near-empty, non-production environment.

Monday, March 31, 2008

Mid-Ohio Connected Systems Developers User Group - Delbert Murphy

Man, I'm pissed to miss this. (I'll be at CINNUG Thursday watching Randy Pagels speak on ALM.)

Monish announced the inaugural MOCSDUG meeting--and they landed Delbert Murphy! I've not seen him speak but he's well known and carries a very positive reputation. Hopefully, I'll catch the live meeting. Details below.



Introducing MOCSDUG (Mid-Ohio Connected Systems Developers User Group)
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The Mid-Ohio Connected Systems Developers User Group (MOCSDUG) has formed to facilitate education and knowledge exchange around topics of Business Process and Enterprise Integration. The group will specifically focus on the Microsoft Connected Systems product stack which includes: BizTalk Server, WF, WCF and other related technologies. The MOCSDUG seeks to connect developers, architects, and IT decision makers in the Mid-Ohio region with best practices, architectural concepts, and case studies. The group will work very closely with Microsoft and its community leaders to deliver the latest information on BizTalk Server, WF, and WCF. The MOCSDUG will strive to remain agile by evolving as technology changes to meet the needs of its members.
Microsoft’s Project Oslo: Past, Present, Future By Delbert Murphy
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
When: Thursday, April 3rd, 2008, 6:00pm - 8:00pm
Where: Microsoft Office - Columbus (Address Below)
Now that code from Microsoft’s project Oslo is being demonstrated to Analysts from firms like Gartner and Forrester—and those analysts are actually excited about what they see—people in the Information Technology industry are starting to wonder if Oslo really will change the landscape of how application software is designed, developed, deployed and managed. Delbert Murphy, a BizTalk Technical Specialist and SOA Insider from Microsoft Corporation, will discuss the roots and the direction of Microsoft’s project Oslo—and most importantly—how this new paradigm in the software lifecycle will affect you.
To learn more about Oslo prior to the meeting, visit: http://www.microsoft.com/soa/products/oslo.aspx.
Directions to the Meeting
-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The MOCSDUG meets at the Microsoft office on the North side of Columbus, OH at Polaris Center.
Address: Polaris Center, 8800 Lyra Dr. 4th Floor, Columbus, OH 43240
Can't make it in person?
-=-=-=-=-=-=-=-=-=-=-=-=-=
Delbert Murphy has invited you to attend an online meeting using
Microsoft Office Live Meeting.
AUDIO INFORMATION
Conference call:
Number: 1-866-500-6738
Participant Passcode: 4968936
FIRST-TIME USERS
To save time before the meeting, check your system to make sure it is
ready to use Microsoft Office Live Meeting.
TROUBLESHOOTING
Unable to join the meeting? Follow these steps:
1. Copy this address and paste it into your web browser:
2. Copy and paste the required information:
Meeting ID: D5T4T5
Entry Code: FxB4@}9/D
If you still cannot enter the meeting, contact support:
NOTICE
Microsoft Office Live Meeting can be used to record meetings.
By participating in this meeting, you agree that your communications
may be monitored or recorded at any time during the meeting.
Contact Information
-=-=-=-=-=-=-=-=-=-=-=-
If you have any questions about the Mid-Ohio Connected Systems Developers User Group (MOCSDUG) or the upcoming meeting, please contact Monish Nagisetty at mnagisetty@gmail.com. MOCSDUG is currently in the process of setting up its website. Please stay tuned to the mailing list for more details on the site.