Pause ‘n’ play: Asynchronous C# Explained is a quite nice presentation from Microsoft Research’s Claudio Russo about asynchronous programming in C# 5.
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:
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.
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)…
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.
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:
- Microsoft Help Viewer Power Tool – simply adds keyword index capability to the Help Viewer, with an option to display help in a standalone window.
- 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 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…
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:
- Use exceptions when they are really needed, i.e. when something exceptional happened
- Understand Exception guarantees AKA Abrahams guarantees (see more at Exception-Safety in Generic Components – Lessons Learned from Specifying Exception-Safety for the C++ Standard Library by David Abrahams)
- Follow Resource Acquisition Is Initialization AKA Resource Initialization Is Acquisition (or RAII/RIIA in short) principle
DebuggerVisualizers – Boost C++ Libraries has nice introduction to custom Visual Studio debugger visualizers.
I am not using AJAX at this moment, but nevertheless Google’s AJAX API Playground looks quite interesting and can really simplify lives of AJAX developers.
I am using XAML serialization instead of XML serialization more and more – IMHO it is much nicer and natural. There are few things to remember though, and XAML Serialization FTW does excellent job in enumerating those, although the list is not exhaustive.
Ade Miller, development manager at Microsoft patterns & practices group, blogged about launching of patterns & practices Agile Development Showcase. Among others, that resource features interesting Distributed Agile Development at Microsoft patterns & practices article.
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”
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.
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 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.
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.
Thread Synchronization: Wait and Pulse Demystified article on CodeProject describes low-level synchronization between threads in terms of Monitor class and its Wait, Pulse, and PulseAll methods. The MSDN documentation for these methods explains what they do, but not why or how to use them. This article fills this gap and demystifies them.
This is not software-related, but cool nevertheless… The Periodic Table of Videos has a short video about each chemical element. This is work-in-the-progress – videos are constanly updating with new stories, better samples and bigger experiments.