Task Parallel Library / TPL

It has been very long since my last post here – I was really busy at work. But I will try to “fix it”! :)

I don’t know where Sacha Barber finds time for all his articles and “hobby” projects, but I am glad he does! One of the latest subjects of his investigations is Task Parallel Library (or TPL in short), one of the new parts of .NET 4:

  1. Part 1: Starting Tasks / Trigger Operations / Exception Handling / Cancelling / UI Synchronization
  2. Part 2: Continuations / Cancelling Chained Tasks
  3. Part 3: Parallel For / Custom Partioner / Aggregate Operations
  4. Part 4: Parallel LINQ
  5. Part 5: Pipelines
  6. Part 6: Advanced Scenarios / v.Next for Tasks

Criminal Overengineering

Just a few days ago we talked within a team about this subject, and now I bumped into Criminal Overengineering article that says it all (well, almost all) about the subject of over-engineered design/code. IMHO, this is a must reading for all beginners (and not only, to be honest), and it will be definitely on a list of “things to read” for all new members of our team.

Computer Security Identifier (a.k.a. SID) Myth

Would never believe this, if it would not come from Mark Russinovich:

NewSID has been retired and is no longer available for download. Please see Mark Russinovich’s blog post: NewSID Retirement and the Machine SID Duplication Myth

Sounds fantastic, isn’t it? :) I wonder, if one should use reseal on Windows Embedded images in light of this information: reseal is renaming machine (can be done other way), resets some settings, e.g. mount points (can be done other way), and changes SIDs (which seems obsolete if you are not in domain)…

Debugging MSBuild Scripts (VS2010)

I did not actively search for the subject, but once I bumped into a three-part article about the MSBuild script debugging (Part I, Part II, Part III) on The Visual Studio Blog I immediately though that it is worth remembering about it when (I am not saying if, but rather when here) I need it in the future. The blog itself is also worth checking, as there is much information about VS IDE, MSBuild, and extensibility from the Visual Studio development team.

Help in the Visual Studio 2010

Mmmmm… I don’t know what kind of daemon possessed Microsoft usability engineers when they were designing Visual Studio 2010 help system, but something definitely went very-very-very wrong. :( What’s wrong, you might ask?

  • It opens in a web browser, which kind of sucks as it breaks my normal work-flow (I have to track help tabs in browser, and then close them, and if I open some new tabs, then help is not in place I expect it, etc. etc. etc.)
  • It’s content tree (the thing on the left side) is not really a tree anymore – it just shows top-level hierarchy and then also “path” to current topic. No more, no less. And if you need to go to some other topic, you will immediately lose track of previous topic. So, if you want to “browse around” the documentation – tough luck. What’s even more ugly is that the online help can be at least configured to show full content tree, but offline help won’t allow you any customizations.
  • There is no index. Full stop. Yes, yes – N-O—I-N-D-E-X. They say that there is search, but try to find some API related to paths and that you vaguely remember exists and has name PathBlaBlaBla (where BlaBlaBla is some meaningful name) and you will see that the search is as useless as it can only get.

Conclusion: new help system is VS2010 is light years behind that of VS2008 or VS2005.

Can something be done about it? There are at least two partial solutions:

  1. Microsoft Help Viewer Power Tool – simply adds keyword index capability to the Help Viewer, with an option to display help in a standalone window.
  2. Help 3 Viewer goes much further: it shows VS 2010 help in a traditional help viewer (similar to “old” DExplore) with full TOC and Index, and features multiple document tabs. There are other features too, and it can be set as default VS2010 help viewer.

I hope that these tools will help you with your help experience :) .

Thrive for Developers

Thrive for Developers by Microsoft is “a one-stop community hub that offers job postings, technical content, and community resources. So whether you’re seeking new ways to differentiate yourself on the job, or you need to re-tool your skills for that next big role, Thrive has the resources to help you get there faster.” Looks and sounds interesting, but remains to be seen where it will go…

Exceptions in C++

In Google C++ Style Guide they state that they are not using exceptions in C++ code at Google. They have reasons for it (“historical” mostly, as usual), but I do not necessarily agree with their view on it. Anyway, exceptions are quite a controversial topic in C++ community, and a must-read C++ Exceptions: Pros and Cons article at CodeProject goes deeper into the subject.

Personally I think that exceptions are really great, although I see how people can get things messy/wrong when using exceptions in inappropriate contexts and/or in inappropriate ways. Recipe to avoid problems? My own short list:

Microsoft DevLabs

On the DevLabs site you read: “Any truly remarkable software innovation that introduces a paradigm shift is based on solid inventive ideas. But it also needs discussion, trial, collaboration, and a critical eye. Explore the projects that we are experimenting with in our labs, and let us know if they inspire you.”

Currently there are four projects there:

  • Popfly, a “fun, easy way to build and share mashups, gadgets, games, Web pages, and applications”
  • Small Basic, a “simple and easy programming language with a friendly environment that provides a cool and fun way of learning programming”
  • Pex, an “intelligent assistant to the programmer”
  • CHESS, a “concurrency testing tool for finding and reproducing concurrency Heisenbugs in your code. CHESS can find assertion violations, deadlocks, livelocks, data-races, and memory-model errors. CHESS works both for managed and for unmanaged code”

Garbage Collection in .NET

Still in 2000, Jeffrey Richter wrote a two-part article for MSDN Magazine titled “Garbage Collection: Automatic Memory Management in the Microsoft .NET Framework” (part 1, part 2). I am not sure here, but I guess that not that much has changed in the principles of garbage collector’s inner workings since then, so this article, despite being oldish, is giving a good idea about what is happening during garbage collections and why.

Stanford Engineering Everywhere Courses

The Stanford Engineering Everywhere has launched a series of free online computer science and electrical engineering courses (10 available so far). The courses span an introduction to computer science and an introduction to artificial intelligence and robotics, among other topics, and offer anytime and anywhere access to complete lecture videos via streaming or downloaded media, as well as full course materials including syllabi, handouts, homework, and exams.

More C++ Idioms

More C++ Idioms is a Wikibook aimed toward anyone with an intermediate level of knowledge in C++ and supported language paradigms. The goal there is to first build an exhaustive catalog of modern C++ idioms, and later evolve it into an idiom language, just like a pattern language.

The thing has been started by the author of C++ Truths blog. The blog is interesting by itself, as it has really many interesting articles on advanced C++ topics.

Visible Body – 3D Human Anatomy

My son was asking all kinds of question about human anatomy (he is 7 :), so I decided to find some interactive software that would help me to explain things to him. Pretty much by accident I bumped into Visible Body web application (still in Beta) featuring an interactive 3D model of the human body. It is, according to its developers, the most comprehensive human anatomy visualization tool available today. From what I have seen so far, it looks really cool and promising, although not all content will be available for free.