Pause ‘n’ play: Asynchronous C# Explained is a quite nice presentation from Microsoft Research’s Claudio Russo about asynchronous programming in C# 5.
Category Archives: Learning
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:
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.
Code Contracts Primer
Code Contracts Primer by Derik Whittaker looks like a nice intro to Code Contracts:
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:
- 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
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…
Lean and Kanban Software Development
Found an interesting post on Edge of Chaos | Agile Development Blog (done by TargetProcess people) titled Lean and Kanban Software Development Digest and containing links to really interesting articles about the topic, and Kanban vs Scrum comparison among them.
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:
- 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
Visual Studio Debugger Visualizers
DebuggerVisualizers – Boost C++ Libraries has nice introduction to custom Visual Studio debugger visualizers.
40+ Essential Front End Web Developer Cheat Sheets
40+ Essential Front End Web Developer Cheat Sheets lists essential cheat sheets for the most common web technologies, including both client-side (e.g. HTML, XHTML, CSS, javascript, jQuery, etc.) and server-side (php, ASP.NET, etc.) markup and development.
Google AJAX API Playground
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.
A .NET Cryptography Primer
Found A .NET Cryptography Primer on State Street Gang blog. It is a four-part article:
XAML Serialization
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.
ItemsControl: A to Z
Dr. WPF has a great series titled ItemsControl: A to Z. Following parts are available so far:
Microsoft’s Paper on Distributed Agile
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.
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.
Prioritizing Your Product Backlog
Mike Cohn, the author of Agile Estimating and Planning and User Stories Applied for Agile Software Development, the founder of Mountain Goat Software, a blogger, and a founding member of the Agile Alliance, gave an excellent Prioritizing Your Product Backlog presentation on Agile 2008 Conference.
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.
Thread Synchronization: Wait and Pulse Demystified
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.
The Periodic Table of Videos
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.