«
December 2005
»
Recruiting C++ Programmers
Scoble mentions that Microsoft teams are finding it difficult to recruit C++ programmers. I think that has also been the recent experience on the team I work on. I get the impression that most developers don't see C++ as long-term career building experience. Even the developers I've interviewed for Windows-based C++ positions over the last couple of years have all been concerned about when they would be moving to C#. Increasingly C++ work will mean maintenance of legacy code and how many good developers really want to do that (managers who think there is a big pool of developers wanting to do that sort of work are sadly mistaken). So basing a long-term project strategy on using C++ seems unwise from a recruiting point of view, let alone all the other reasons such as the much higher maintenance cost of using C++.
NUnit 2.2.4 Released
Via Sam Gentile I noticed that NUnit 2.2.4 has been released. This is the first production release since 2.2 was released in August 2004 and there is a build specifically for .NET 2.0, which means no more fiddling around with the config file as I described a few weeks ago.
The downloads are available here.
Typepad Problems
I wondered why I couldn't access some TypePad-based blogs yesterday. Via Brent Simmons' post I got to an update on the Six Apart site. Given that it is going to take several days to restore everything it must have been a pretty serious meltdown. They won't be having a very pleasant weekend. As a developer I agree with Brent that they deserve our moral support. If we haven't been somewhere similar at some point in our careers then we've probably been very lucky. As a non-tech customer I imagine I might be somewhat less forgiving.
UPDATE: Niall Kennedy has the transcript of an interview he did with Anil Dash of Six Apart, in which they discussed yesterday's problems.
Capitulation
I suppose it was inevitable. When it comes to taxpayers' money this Labour government has shown itself to be rather profligate so maybe we should think ourselves lucky that it is only a mere one billion pounds a year that has been given away for nothing in return other than saving face for Tony Blair's presidency of the EU. I don't imagine the French farmers who rake in money from the Common Agricultural Policy will be overly concerned about the agreement to hold a review of EU spending including the CAP. But the implications are wider than this. By throwing away a strong bargaining position the position of the CAP has been strengthened and the EU will continue its enormous damage to third world farmers. Unfortunately the socialist principles of the EU don't extend to refraining from causing poverty in the rest of the world.
On the other hand this might prompt more people in the UK to wake up to the reality that we are pouring money into an organization which is riddled with fraud and corruption (the European Court of Auditors recently rejected the EU's annual accounts for the eleventh year in a row, quote "the vast majority of spending was still affected by 'errors of legality and regularity'"), and that 40% of the EU budget goes to farmers, who comprise less than 5% of the EU population. Opinions are changing slowy but surely. Who in their right mind would now argue that the UK should move to the Euro? And we have seen how the proposed EU constitution was abandoned (though no doubt many of its aims are still being pursued via the usual non-democratic processes within the EU). Maybe now even more fundamental issues about the EU will be opened up for discussion.
MSN Spaces XML-RPC Problem
In case you attempt to use the MSN Spaces XML-RPC API following Dare Obasanjo's recent announcement, please note that it is currently returning invalid XML in its XML-RPC responses (two byte order marks instead of one). As a result XML-RPC.NET throws an exception when it tries to load the response stream into an instance of XmlDocument.
Channel9 Video on Singularity
Last night I watched the second Channel9 video on Singularity. Some notes I made while watching:
- Dependability is the main goal - not performance.
- Managed code right down to the lowest level of the OS stack.
- Device drivers in managed code.
- 12 people working fulltime - about 20 other contributors.
- OS not JIT'ed - obvious bootstrap problem.
- 2% of files assembly code, 3% C++, 18% unsafe C#.
- 18% of files contain unsafe C# - but only parts of each file - better than mix of C# and C++ because no interop problems and easier to encapsulate unsafe code.
- Plans for verification of more unsafe code in future - for example array bounds checking.
- Apps must be 100% verified managed code.
- Status - kernel up and running - file system - network stack - web server (based on Cassini).
- Running modified SPECWeb tests - latency better than Windows - throughput worse due to poor performance of current filesystem.
- Processes are "closed" - cannot load code dynamically or do codegen - allows better program analysis - for example convert virtual calls into static calls.
- Processess communicate with other processes via "channels" - no shared memory so that process state is completely independent - if one process fails does not require other to be shut down.
- Channels are defined via contract - format of message and legal sequence of messages (state machine so buffers required for a channel can be determined at compile time).
- Implementation of channels is opaque to processes and once message has been sent the sending process loses ownership and cannot modify message (guaranteed by compiler).
- A channel is not a process - has own memory but not code.
- Why have threads in process and associated synchronization problems - support multiple async channels - also better code structure when using threads as opposed to event handling.
- Other threading mechanisms being explored - for example "transactional memory" - traditional transactional guarantees when accessing data structure in memory (atomic, rollbacks, etc).
Towards the end of the video they drew an outline of the Singularity architecture on a whiteboard. It looked something like this:
The diagram is taken from An Overview of the Singularity Project. This document covers the topics in the video in much more detail and is well worth reading for a glimpse of the type of OS we might be using in the future.
Consolidated Outlook Object Model
If you want to do managed code development for Outlook/Exchange at a similar level to Extended MAPI you're out of luck at the moment. Perhaps you are tempted to write a managed wrapper for Extended MAPI. If so this MSDN newsgroup posting may give you pause for thought. Stephen Griffin from Microsoft warns against this in several posts to the thread, including:
That said - I must strongly encourage Sagui not to follow your advice concerning MAPI and CDO with .Net. I'm one of the guys these crashes and hangs come to for analysis when they get reported. We've had a number of Fortune 500 companies have critical line applications come to a dead halt because they chose to ignore us and develop a component of the application with MAPI or CDO and .Net. The problems ARE there when you start scaling up. If you haven't hit them yet, you've just been lucky.
Fortunately the situation should improve. I mentioned Exchange Web Services a couple of months ago and I've just had a look at the slides of the PDC presentation Office 12: Developing Solutions Using the Consolidated Outlook Object Model(PPT) The Outlook 12 Object Model is a set of enhancements to the existing Object Model and is fully supported for managed code developers. Some of the features that could be useful for me are:
- Much better performance for handling large collections in Folders and Search Folders.
- Access to MAPI Store/Folder properties not in Outlook OM.
- Enhanced event handling.
- Access to hidden messages.
It will be interesting to see if it supports everything you can do in Extended MAPI.