I was finally able to win in the CodeProject competition for the best article of the month in the C# category! Thanks to all for supporting me, giving me your votes and reading my articles. Also thanks to valuable suggestions, feedback and comments along the way. This gives me a great feeling, since I was "only" able to win in the "Web Dev" category before. Being a C# MVP, I was hoping to proof this point by winning at least once in this though category.
Right now I am busy finishing Sumerics 1.0.0. This version will include some interesting features like custom folder browser, open and save file dialogs. I will maybe write a few lines about the implementation of those, since they allow any WPF developer to go around those Win32 (or the equivalent Windows Forms wrappers) legacy dialogs.
On the other hand I made some improvements to the OxyPlot library, which I will probably commit to the OxyPlot community. Those improvements have been necessary in my opinion, in order to make Complex plots, Heatmap plots and others possible. I am still thinking if I will try to extend OxyPlot for 3D plots, or if I will decouple this (3D plots) from the OxyPlot package. Right now I see less effort in decoupling it, but I have not evaluated the additional efforts that are necessary for extending OxyPlot in that area.
The Way to Lambda article will be improved even more. Right now I think I will add in at least 3 more patterns. One will be about attributes, another one about creating a custom kind of property, which avoids cyclic references and a third one about recursive lambda expressions. The second and the third one have been introduced by other developers, and provide a lot of information about the usage and using lambda expressions in general. It is important to note, that everything that is done by lambda expressions, could be done with named functions (either in another named class, or in the current class), however, the reasons for using lambda expressions are not given by the requirement of using them, but by the following arguments:
- It requires less effort in writing them (consider using LINQ without Lambda expressions - always creating a method, ...).
- It does not imply that the function could be used elsewhere.
That being said, lambda expressions are to normally expressed methods what public methods are to private methods. They give us a kind of protection - a protection from using the (anonymous) function in a context where using it is not appropriate.