Developer Essentials Passport

If you are a developer or an IT Pro, you know that keeping up with essential skills is a constant challenge.   One of the primary benefits of a Premier Support relationship is having access to the many training options and advisory services available directly from Microsoft.  Workshops, Webcasts, Tech Talks, and Chalk Talks are ...
Comments are closed.0 0

Testing the Testing Strategy

Having healthy application lifecycle management (ALM) processes is crucial to producing robust software.  ALM guidance is one of the primary services the Premier Development consulting team delivers and our ALM consultants are highly in demand!  Our team is growing and this past summer we were lucky to have Geoff Gray join our team.&...
Comments are closed.0 0

Welcome to Premier Developer

Software is our era’s driving force of innovation.  It is constantly changing how we live and work, and businesses everywhere are adapting to mobile, connected, and global economies.  Cloud innovations that open new markets and optimize resources are creating competitive advantages on a daily basis – and these advantages are capitalized ...

So many exceptions… but only one can throw

When a method may throw for more than one reason, the thoughtful programmer might ask “which exception should be thrown?”Consider a method which performs argument validation, is cancelable, and also might throw based on the state of the object. What order should these validations occur so that the best exception is thrown? Here is ...

Asynchronous and multithreaded programming within VS using the JoinableTaskFactory

Everyone appreciates a fast and responsive UI, and Visual Studio is no exception. Extensions that run in Visual Studio play a significant role in how responsive the IDE will be for its users. Visual Studio has been evolving over the past few cycles to not only improve performance, but also responsiveness during operations that may take a while...

Recommended patterns for CancellationToken

Whether you're doing async work or not, accepting a CancellationToken as a parameter to your method is a great pattern for allowing your caller to express lost interest in the result. Supporting cancelable operations comes with a little bit of extra responsibility on your part. Optional CancellationToken ...

Immutable Object Graph updates

In my last post, I introduced a T4 template that constructs efficient and quite capable immutable objects based on the simplest mutable type definition. I also mentioned that the published sample is (necessarily, ala T4 style) open source and hosted online. Two outsiders have already submitted pull requests that have been accepted. Some ...

Simple immutable objects

We’re all familiar with immutable collections now. But immutability is only as immutable as it is deep. And an immutable collection of mutable objects may not provide the depth you’re looking for. So how can one create an immutable object? Suppose you would define the mutable version like this: An immutable version might be ...

Immutable collection algorithmic complexity

I received some feedback from my recent BCL blog post on the prerelease of the immutable collections that my algorithm complexity table left a few important entries out. Here is the table again, with more data filled in (particularly around list indexer lookup and enumeration): A noteworthy trait to call out here is that where a List<...

The cost of context switches

Context switches are not free. But how expensive are they? I wrote a small program to find out, and I’m sharing the program and its results here. I focused on purely context switches (no work is actually performed between context switches). So it’s not a real-world scenario, but it really brings out the hidden costs. Below are the results...