Software


.NET Runtime version 2.0.50727.3603 – Fatal Execution Engine Error (7A036050) (80131506) – mscoree.dll

I ran into this problem this morning. When opening a solution within Visual Studio the application would process each of the projects and then exit abruptly. The application simply closed without any error dialog or feedback as to any problem that had occurred. I checked the event log and found the following .NET runtime error in the application log: .NET Runtime version 2.0.50727.3603 - Fatal Execution Engine Error (7A036050) (80131506) Fortunately a quick search on google led me to this page: http://michaelsync.net/2009/10/31/net-runtime-version-2-0-50727-3603-fatal-execution-engine-error-7a036050-80131506-mscoree-dll. Thank you to Michael Sync for the helpful and detailed walkthrough. I installed the updates from the Microsoft site as recommended and...

The angle bracket is mightier than the pen

Indeed it has been known for many centuries that the written word could depose rulers more swiftly than any sword. "The indispensable catalyst is the word, the explanatory idea. More than petards or stilettos, therefore, words - uncontrolled words, circulating freely, underground, rebelliously, not gotten up in dress uniforms, uncertified - frighten tyrants." -- Ryszard Kapuscinski, Shah of Shahs In the modern world however the typed word and even the encoded word has become the more powerful entity. Newspapers yield their control of popular media to an internet of blogs and the world finds itself more dependent upon technology than ever...

Mathematical Notation on the Web

It's a tricky problem and one that I'm currently researching. I began with an investigation into MathML, which I have written up here: http://devblog.stuartthompson.net/2009/08/mathnotationontheweb/

Mine is the pattern...

Software is broken, from the first version Fowler has spoken, his gospel word. Praise for the patterns, praise for MVP Praise for our passive view of our world. Hear there's a new thought, coming from Redmond Wait it's an old thought we already had. Praise for MVC, in its new format Sprung in completeness where their feet pass. Mine is a castle, and it's named Windsor Born not from one light, silver or gray. Praise it with caution, praise it with warning MS' recreation of the new way. (C) MVVMVPVC

DirectX 10 - Learning from scratch

It's been several years since I did any games programming.  I have always maintained an avid interest in 3d modelling and graphics programming and love the world of video games and video game development, however I have found it hard to set aside the time necessary to really dig into the field further.  I've been unwilling to consider becoming a professional games developer because the reality is that all but a select few earn the kind of money that is available in commercial software development.  As the head of household and provider for our family I can't justify cutting my...

Dynamic OrderBy in LINQ

Have you ever found yourself writing this code? switch (columnName) {     case "Name":         return objList.OrderBy(o => o.Name);     case "Address":         return objList.OrderBy(o => o.Address);     ... etc ... } If so then you have probably wished you could do this:     return objList.OrderBy(columnName); However, that's not going to work because the LINQ method is looking for an expression tree rather than a column name. There are a few libraries out there such as the Dynamic LINQ Library, but if that feels a little heavyweight for you then the following solution may help. This class is a generic sorter for collections of type T. There are two...

Walking in other shoes

Your l33t sk1llz are so bad ass that if given an open canvas you could write software to solve all the world's problems and still be home in time for tea. Unfortunately for you, a thousand and one project managers feel the need to get in the way and provide direction, appoint technical leads with no clue what they are doing, and generally hamper your ability to kick ass at every turn. However, the thought of you stepping into those shoes and "showing them how it is done" has you saying "No way man!" This article is a great...

The Secret to Organizational Agility

Mike Cottmeyer wrote an excellent article about the importance of eliminating dependencies in agile projects: http://www.leadingagile.com/2008/12/secret-to-organizational-agility.html How many times have the following been true: "Many teams are trying to sprint through product development using a traditional MRD or PRD." "Many teams are working with traditional project managers who are doing their best to be agile, but have been trained to manage dependencies and tell people what to do." "Teams are trying to be agile with tightly coupled software architectures, insufficient test coverage, legacy code bases, and unable to do a daily build." Removing dependencies...

NDepend Part II - Beginning CQL

In my continuing use of NDepend on both my work and home projects, I have been investigating CQL more and more, especially from the perspective of use in continuous integration.  NDepend provides some incredibly powerful analysis features and I find the idea that constraints can be applied and warnings reported as part of day 1 builds to be extremely appealing.  I'm all about keeping code clean, constrained, and consistent.  NDepend provides another great tool in my kit to ensure that my own code is marshalled to my standards from the very first line that is written.  As David Muhondro put so eloquently in...

New Array of Anonymous Objects

While coding up a couple of prototype LINQ queries this morning I came across a rather interesting syntax using anonymous types and object initializers.  I wanted to show an example of using a where clause upon a property of an object but didn’t want to put a bunch of plumbing around it just to set up the example.  In my head an array containing three Person objects would suffice, with each person object having Name and Age properties that I could use in my query.  I wasn’t sure if this would compile but dropped it into the wonderful LinqPad and sure enough...

Virtual CDRom Control Panel - Mount Failed

I use the Windows XP Virtual CDRom Control Panel regularly.  It's a great utility for mounting .iso files to a virtual cd rom drive to avoid having to burn them to an actual disk.  Many large development tools (especially from MSDN) are distributed in .iso format for download.  However, one of the most frustrating errors with the tool is the ambiguous "Mount Failed" exception that is sometimes thrown. I received that error this morning while trying to mount the Visual Studio 2008 Pro image.  I remembered running into this exception on numerous other occasions but couldn't remember the exact cause.  After a small amount of googling...

Count > 0 vs Count != 0

I came across an issue today that I think perfectly exhibits the principal of forward thinking in coding.  Consider the following block of code: IList<MyObject> myList = myAdapter.Read(); if (myList.Count != 0) {     ... do some work ... } The if statement is only executing its contents if the count of objects in the list is not zero.  This seems pretty harmless on the surface.  We're taking an IList<T> after all and we know that List<T>.Count returns zero if the list is empty.  Therein lies the trap.  We're not necessarily talking about List<T> here, we're talking about any class that implements the IList<T> interface.  You can see the facepalm coming...

Yield - Enumeration Candy

As we all know, I'm a little slow on the uptake.  This time I managed to miss a really great keyword in C#: yield.  The combination yield return is a lovely piece of C# candy that can be used to simplify a common function.  Consider the following section of code: private IEnumerable<MyObject> FindObjectsWithThreeChildren(IEnumerable<MyObject> sourceList) {     IList<MyObject> results = new List<MyObject>();     foreach (MyObject obj in sourceList)     {         if (obj.Children.Count == 3)             results.Add(obj);     }     return results; } We've all written something along those lines before.  Build a collection up based upon some predicate and then return it.  Now yes, this could actually be solved much more...

Top 3 TFS Peeves

I've been using TFS for a little over six months now and despite having its good sides, it also rears several quite ugly ones.  I'm not going to harp on the obvious feature deficiencies such as branch and merge because we all know they aren't in there and that comes down to a technology choice.  No, the things that really get under my skin about TFS are things that should be basic to any piece of software. 1) Check In, Lose Comments       * This is an extremely frustrating flaw in TFS for me.  If you check in, but a later version of the...

VSLive! Conference Schedule

In all my cross-posting, I forgot to include the conference schedule indicating which classes and workshops we attended.  Here it is for reference. The following table details the schedule for the conference.  I've highlighted the talks and workshops that Laura attended as well as those I attended to show our coverage of the available material. Pre-Conference Workshops - Monday, October 15th 2007 ...

VSLive! Notes

Disclaimer: The series of notes that I have posted from the sessions I attended at VSLive! are just that: notes.  I have tried where possible to turn them into posts that have some cohesion but having attended nine hours of talks per day for four days, editing time was falling a little sparse.  As I fill out these notes and write sample projects in some of the new technologies I have learned, I will update these posts accordingly.  For now I wanted to get them posted and out there in a timely fashion to avoid the ideas and thoughts falling...

VSLive! Day Three - Creating Custom WCF Behaviors

Presenter: Rob Daigneau Code: http://www.designpatternsfor.net I think it must either be Rob Daigneau or the topic of Windows Communication Foundation because this was yet again another superb talk.  WCF was of little interest to me when I first arrived at this conference, however now I found myself extremely interested in learning more about how it might improve the architecture of my projects.  It doesn't feel, like so many unfortunately do, like a technological solution in search of a problem.  I can already see where I could apply WCF to bring a robust communication framework into the design of my applications. Aspect-Oriented Programming Aspects encapsulate the handling of...

VSLive! Day Three - Using the Windows Workflow Rules Engine Standalone

Presenter: Michael Stiefel Windows Workflow Foundation contains a very powerful rules engine.  However, the applications for such a rules engine do not always lend themselves to a Windows Workflow implementation.  In this talk, Michael was able to show how the rules engine can used outside of the WWF framework.  These notes will be updated in future posts as I work through the development of a custom wrapper and service class for abstracting the use of the rules engine. Policy Activities Policy activities contain rule sets.  It is these rule sets that are processed when this policy activity is executed. Rule Sets A rule set consists of...

VSLive! Day Two - WCF for .ASMX and Remoting Developers

Presenter: Richard Hale Shaw To understand why WCF was developed, first take a look at the existing technologies in the .NET framework: Remoting Remoting was one of the earliest parts of the .NET framework that was developed.  While extremely powerful, the APIs themselves do not conform to a lot of the common trends established in other parts of the framework.  It is rumored that Remoting was not initially intended for release with the .NET framework. ASMX Web services were a huge part of the hype involved in the initial release of the .NET framework.  There are a number of limitations with the implementation regarding the areas of performance,...

VSLive! Day Two - Implementing SOA Design Patterns with WCF

Presenter: Rob Daigneau (Chief Architect, SynXis) Blog: http://www.designpatternsfor.net Author of an upcoming book on SOA Design Patterns published by Addison Wesley. This was definitely the most interesting talk of the conference so far.  It's pleasing to see an advanced course that really got into some great architectural discussions and provided applicable techniques for solving difficult SOA problems such as maintenance, versioning, forward, and backward compatibility.  This session is geared towards the WCF developer who is looking to improve their service oriented design architecture.     There are two typical types of SOA services: Domain Services These are the elemental building blocks upon which everthing else is built. Enterprise...

VSLive! Day Two - Creating Custom Data Source Controls

Presenter: Rocky Lhotka Code: http://www.lhotka.net This discussion contains information about creating custom data source controls.  Before diving into the concepts involved, lets first consider a justification for such development.  This is provided in the form of an analysis of the two most commonly used controls that are available for that purpose: SqlDataSource The SqlDataSource object allows developers to retrieve data from a database directly and use data-binding to display and edit the data inside of web or windows forms.  However, this is really only useful in 2-tier applications and leads to a poor architecture.  I find the SqlDataSource control to be most useful in prototyping. ObjectDataSource The ObjectDataSource, while vastly...

Null-Coalescing Operator

While at a rather disappointing MSDN event yesterday, I came across one gem of C# 3.0 candy in the form of a null-coalescing operator.  This is basically a short-cut for the oft seen: string emailAddress = parsedValue != null ? parsedValue : "(Not provided)"; OR string emailAddress = String.Empty; if (parsedValue != null) {     emailAddress = parsedValue; } else {     emailAddress = "(Not provided)"; } Using the Null-Coalescing Operator These can now instead be re-written using the new null-coalescing operator as: string emailAddress = parsedValue ?? "(Not provided)"; This can roughly be read as "Set emailAddress equal to parsedValue unless it is null, in which case set it to the literal (Not Provided)"....

Using Anonymous Method Predicates to Search Lists

I use System.Collections.Generic.List all over the place.  Generics are a couple of years out of date and most people are done with them in terms of cool factor, but that doesn't in any way detract from the coolness they add to my life each and every day.  I still eat toast and that's been around for ages.  I answered a question this morning that made me realize that while the generic list class has been generally embraced by most, it perhaps has also been generally muddled by some attempting to keep up with the oft quick pace that is .NET.  I've seen quite a...

SqlDependency - Creating a Smarter Cache

I recently got the chance to learn about a technology that has interested me for quite some time: SQL dependencies.  The premise of my encounter with SqlDependency was to create a smarter cache.  The project I'm currently working on was employing a sliding expiration policy to invalidate the contents of a cache of database lookup values and I proposed some research be conducted into using SQL dependencies to automatically invalidate the cache items when the corresponding database contents were changed.  I had experimented with the SQL dependency classes when .NET 2.0 was first released using a test SQL 2000 database.  The example I was...

Effective Meetings and Reality vs Negativity

In a book that I've been reading recently, I came across the following sentence "Each time, I ask what the problem is, and we get to it immediately.  I like to keep a handle on all my [projects], and the problems are to be expected.  The time I worry the most is when there aren't any problems.  That's usually the result of misinformation or wishful thinking on someone's part." -- Donald J. Trump, How to Get Rich, ISBN: 0-345-48103-8 This statement applies very well to software projects and yet the number of meetings I attend where anything but the truth is presented absolutely...

Assertions - No Need for Rocket Ships

This article speaks briefly about refactoring and code structure, focusing on several stylistic thoughts that have crept up time and time again throughout my career as a software developer.  The art of software development has many facets, however many of the goals that distinguish great software from its counterparts are often ignored, even more often ignored unintentionally.  The quality of a piece of software lies in many more areas than its ability to fulfil a requirement or perform a task.  The development lifespan of most software spans far beyond the initial release, and often beyond the initial developer.  Sooner or later, someone else is...

.NET CLR in SQL Server 2005

Of recent interest to me has been the ability to deploy user-defined managed functions, stored procedures, and other objects to SQL from within Visual Studio 2005. With the .NET CLR in SQL Server 2005, these managed functions can be written and deployed from within Visual Studio, even as part of an automated build process. In wanting to investigate this further, I've decided to write a few articles on how this technique is used and on how it may be useful to you. When I first heard about the ability to (essentially) deploy .NET assemblies into SQL Server and then have...

Ambiguous Error Messages

Last night I came across an instance of poor software design that is all too common in modern applications, one that has troubled and annoyed me ever since I became involved with computers and software development. Worse than my ruffled feathers, this is an issue that is responsible for such a vast amount of wasted time and money that it never ceases to amaze me how little has been done to correct it. I have a Canon Powershot A710 IS digital camera. It's a middle of the range compact digital camera with just enough features to give me power without having...