Now, a 3rd option, IIS Express

ScottGu announced IIS Express.

IIS Express will become a new way for developers to do local web development in a safe, administrative-account-free way, yet get the full experience of IIS 7. I’d bet the days of the ASP.NET Development server are numbered if IIS Express actually works as well as is suggested (if the same debug/test/run cycle is maintained, and the perf is good, I can’t see any reason why not).

The only bad news is that the announcement precedes the availability of IIS Express and also precedes the availability of patches for VS 2010 to make integration with this new option simple. The latter sounds like it’s farther out than IIS Express itself.

I’d like to see a feature for allowing the web sites hosted within IIS Express to be available from other machines and not just localhost. It would make sharing current development with other team members, QA, managers, etc., much simpler. For developers on older versions of Windows (like XP), they have no option for locally hosting a IIS7 web site and showing it to others. (From the initial blog post, it’s not mentioned if this scenario is supported).

Visual Studio 2010 Crashes Repeatedly

If you have my kind of luck and Visual Studio 2010 crashes every time you open a specific project or solution, try deleting the .suo file associated with the solution (the Visual Studio Solution User Options). It’s located in the same folder as the solution (.sln) file, and often is hidden.

It usually works for me.

The stack dump from the mini-dump taken by Visual Studio isn’t real enlightening. Things went wrong. Smile

     ntdll.dll!@RtlpLowFragHeapFree@8()  + 0x89 bytes   
     ntdll.dll!_RtlFreeHeap@12()  + 0x7e bytes   
     apphelp.dll!_SdbFree@4()  + 0x22 bytes   
     apphelp.dll!_HashFree@4()  + 0x3c bytes   
     apphelp.dll!_SdbpReleaseSearchDBContext@4()  + 0x6d bytes   
     apphelp.dll!_SdbGetMatchingExeEx@32()  + 0x2b9 bytes   
     apphelp.dll!_InternalCheckRunApp@76()  + 0x21c bytes   
     apphelp.dll!_ApphelpCheckRunAppEx@56()  + 0xa7 bytes   
     kernel32.dll!_BaseRestoreImpersonation@4()  – 0x75d55 bytes   
     kernel32.dll!_BaseCheckRunApp@52()  + 0x46 bytes   
     kernel32.dll!_BasepCheckBadapp@60()  + 0x1a1 bytes   
     kernel32.dll!_BasepQueryAppCompat@68()  + 0x63 bytes   
     kernel32.dll!_CreateProcessInternalW@48()  + 0x961 bytes   
>    kernel32.dll!_CreateProcessInternalA@48()  + 0x123 bytes   
     kernel32.dll!_CreateProcessA@40()  + 0x2c bytes   
     devenv.exe!DwCreateProcess()  + 0xc0 bytes   
     devenv.exe!LaunchWatson()  + 0x2b2 bytes   
     devenv.exe!DwExceptionFilterEx()  + 0xed bytes   
     devenv.exe!DwExceptionFilter()  + 0x1f bytes   
     mscoreei.dll!InternalUnhandledExceptionFilter()  + 0x1c bytes   
     kernel32.dll!_UnhandledExceptionFilter@4()  + 0x5e2 bytes   
     ntdll.dll!___RtlUserThreadStart@8()  + 0x369cc bytes   
     ntdll.dll!@_EH4_CallFilterFunc@8()  + 0x12 bytes   
     ntdll.dll!ExecuteHandler2@20()  + 0x26 bytes   
     ntdll.dll!ExecuteHandler@20()  + 0x24 bytes   
     ntdll.dll!_KiUserExceptionDispatcher@8()  + 0xf bytes   
     ntdll.dll!@RtlpLowFragHeapFree@8()  + 0x89 bytes   
     ntdll.dll!_RtlFreeHeap@12()  + 0x7e bytes   
     ole32.dll!CRetailMalloc_Free()  + 0x1c bytes   
     ole32.dll!_CoTaskMemFree@4()  + 0x13 bytes!0daff77b()    
     [Frames below may be incorrect and/or missing, no symbols loaded for]!0daff77b()!0dafdfcd()!0daff642()!0dafdfcd()    
     cslangsvc.dll!CEditFilter::QueryStatus()  + 0x13c bytes   
     cslangsvc.dll!CVsEditFilter::QueryStatus()  + 0x95 bytes!5af61753()!0dae99eb()!0dae9a1c()!6dce2ae4()!6dcdf98c()    
     msenv.dll!CVSCommandTarget::QueryStatusCmd()  + 0x423c bytes   
     msenv.dll!`anonymous namespace’::QueryStatusForController()  + 0x63 bytes   
     msenv.dll!`anonymous namespace’::GetQueryStatusFlags()  + 0x3a bytes   
     msenv.dll!CSurfaceCommandingSupport::IsCommandEnabled()  + 0x1bbb bytes   
     msenv.dll!`anonymous namespace’::DoCommonStateUpdating<CommandUI::Models::IButtonController,`anonymous namespace’::<lambda1> >()  + 0xa2 bytes   
     msenv.dll!CUpdateVisitor::VisitButtonController()  + 0x1b bytes   
     msenv.dll!CControllerVisitorBase::DispatchVisit()  + 0x3bf bytes   
     msenv.dll!CControllerVisitorBase::VisitController()  + 0x22 bytes   
     msenv.dll!CSurfaceCommandingSupport::Update()  + 0x2e bytes   
     msenv.dll!CommandUI::Models::Impl::CControllerBase::Update()  + 0x21 bytes   
     msenv.dll!UpdateChildCollectionWithSeparators()  + 0x17f bytes   
     msenv.dll!CUpdateVisitor::VisitToolBarController()  + 0x2a6 bytes   
     msenv.dll!CControllerVisitorBase::DispatchVisit()  + 0x226 bytes   
     msenv.dll!CControllerVisitorBase::VisitController()  + 0x22 bytes   
     msenv.dll!CSurfaceCommandingSupport::Update()  + 0x2e bytes   
     msenv.dll!UpdateCommandModels()  + 0x147 bytes   
     msenv.dll!CmdUpdateForceInternal()  + 0x28 bytes   
     msenv.dll!CMsoComponent::FDoNonPeriodicIdle()  + 0x991 bytes   
     msenv.dll!CMsoComponent::FDoIdle()  + 0x17 bytes   
     msenv.dll!SCM::FDoIdleLoop()  + 0xf3 bytes   
     msenv.dll!SCM::FDoIdle()  + 0xc7 bytes   
     msenv.dll!SCM_MsoStdCompMgr::FDoIdle()  + 0x13 bytes   
     msenv.dll!CMsoCMHandler::EnvironmentMsgLoop()  + 0x74a bytes   
     msenv.dll!CMsoCMHandler::FPushMessageLoop()  + 0x79 bytes   
     msenv.dll!SCM::FPushMessageLoop()  + 0x8c bytes   
     msenv.dll!SCM_MsoCompMgr::FPushMessageLoop()  + 0x2a bytes   
     msenv.dll!CMsoComponent::PushMsgLoop()  + 0x28 bytes   
     msenv.dll!VStudioMainLogged()  + 0x22a bytes   
     msenv.dll!_VStudioMain()  + 0x78 bytes   
     devenv.exe!util_CallVsMain()  + 0xdb bytes   
     devenv.exe!CDevEnvAppId::Run()  + 0x693 bytes   
     devenv.exe!_WinMain@16()  + 0x88 bytes   
     devenv.exe!operator new[]()  + 0xa59d bytes   
     kernel32.dll!@BaseThreadInitThunk@12()  + 0x12 bytes   
     ntdll.dll!___RtlUserThreadStart@8()  + 0x27 bytes   
     ntdll.dll!__RtlUserThreadStart@8()  + 0x1b bytes   

Things that made me laugh today

#1) Our cat, on our screened back porch, (who by the way, has only been allowed on the screen porch a few times) … apparently, things on the inside are better than being on the outside. She often sits on a desk that is on the inside of the window, longingly looking out the window. Apparently, she’d like to know what it looks like from the other side.


#2) Best Break up Letter, Ever?

#3) Highlight what’s bad

And a whole different type of humor:

#4) Stargate, built in backyard

To Cul-de-sac or not?

From Seattle Transit Blog, a discussion of the effect of cul-de-sacs on walkability.


We’re living out in rural southern Wisconsin, so these issues don’t really affect us in any way. However, we’ve lived in suburban areas for a few years, and always enjoyed the areas that had more connectivity for walking and biking than those that did not. I’m not saying that a “grid” pattern is better, but leaving green space for walking/biking trails between cul-de-sac areas seems like something that should be part of every community development plan these days.

We enjoyed the suburban areas we walked in a lot more when there was some walking variety. Not the same street, same neighbor, same dilapidated porch, etc. Our first home was suburban-rural and only had a few walking options. It wasn’t nearly as much fun to walk there routinely as when we lived in Bellevue, Washington for a few years.

(I’m intentionally ignoring part of the blog-post’s issues that were raised regarding convenience factors of living on a grid-based road system).


Prudential User Experience Fail

I was updating my life insurance beneficiaries (for insurance provided by my employer) and I had just added my wife as a primary beneficiary and then indicated that I wanted to add another. I must be a total screw up:

You have recently updated your beneficiary details. Please wait one day to perform one more transaction.

Uh – I’m allowed one “transaction” per day? I guess that’s one way to make a scalable web system and not overload the database system too much.