Screencast: What’s New in Visual Studio 2008?

February 29, 2008

A few days ago I have recorded a 14' pilot screencast (in Hebrew) titled "What's New in Visual Studio 2008?", aiming to show developers and decision makers what kind of new functionality to expect in the recently released Visual Studio.  In other words, what's in the box? My expression on the left (which BTW is a static photo, unfortunately) is very grim, but don't worry, I get more vivid during the screencast. Among the things I demonstrate: Multi-targeting support Multi-threaded debugging improvements Code metrics First steps in LINQ Feel free to watch...
2 comments

TechEd 2008 (Israel): Next Generation Production Debugging

TechEd Israel 2008 is going to take place on April 6-8, in Eilat (as usual).  By the way, if you haven't registered yet, there might still be some room so hurry up! At the upcoming conference, I will be speaking about production debugging in a session cleverly titled "Next Generation Production Debugging".  I am just about to finalize the list of topics and demos that I will be talking about. To help you decide, some talented people at Sela and you-niversity helped me film a short promo video (about 5 minutes long) introducing myself and the TechEd session.  Feel...
4 comments

Interception and Attributes: A Design-By-Contract Sample

February 23, 2008

A Design-By-Contract programming paradigm specifies that classes and methods in the language specify pre- and post-conditions which must hold when entering and leaving the class code.  For example, the following Eiffel snippet is a counter class which can be incremented, decremented and reset to 0.  Note the ensure, require and invariant clauses sprinkled across the definition: class TINY COUNTER feature item: INT feature increment is do item = item + 1 ...
2 comments

.NET to C++ Bridge

February 16, 2008

Most people have encountered the need for interoperability between managed and unmanaged code.  There are plenty of patterns and tutorials which explain every detail of writing managed code which can call into unmanaged code.  The techniques we can use, from most common to least explored, are: Straightforward P/Invoke (static extern, , sprinkle a or two and we're set - there are even tools to help); COM interop (import the type library and you're good to go); C++/CLI wrapper class; Calling unmanaged function directly (CALLI instruction with Reflection.Emit). The opposite way around, however, is something...
tags: ,
21 comments

Synchronization Objects and Vista’s Wait Chain Traversal

February 6, 2008

Debugging issues which have to do with synchronization objects, such as deadlocks and other types of hangs, has traditionally been a very difficult task.  Normally left to consultants, it was a great source of income too. How does Windows actually keep track of synchronization objects?  What does Vista have to do with this (as the title of the post suggests)?  If this floats your boat, read on. The Win32 synchronization objects, as well as their managed counterparts (such as the .NET Monitor, EventWaitHandle and others) are merely a convenient API wrapper around synchronization primitives provided by the...
one comment

Cross-AppDomain Workflow Local Services

I stumbled across an interesting issue today that I thought might be worth sharing.  The design of my application server requires hosting multiple workflow types, potentially of multiple versions (the workflows are exposed as Workflow Services, using the WorkflowServiceHost class).  Since the server is long-running, it is feasible that several versions of the same workflow will be deployed and active on the same server, and several instances of each version will be created. The only way to provide this behavior cleanly is through hosting each workflow in a separate AppDomain.  In this way, the server can be truly...
tags: , ,
no comments