Contents tagged with c#

  • ElmahR, a description

    After releasing Elmahr v0.2, I think it's time to describe with more details what it is, how it's done and what are my plans for the next releases. ElmahR is a web dashboard where you can aggregate several monitored applications; adding them to ElmahR configuration will enable them to post error events, which will show them on all the connected client dashboards in real-time.

  • ElmahR v0.2

    This is just a quick announcement about the fact that in the last 2 days I released ElmahR v0.2 (you may call it 'alpha'). ElmahR is a real-time aggregating dashboard for ELMAH, based on a module I wrote to in the official ELMAH Sandbox, and leveraging SignalR for the async real-time communication. I already described how I came up with idea of this project, and in the last weeks I've been working on it to see if I could realize it. I'm quite happy with the results so far, so I decided to share it, let's see if you find it as much interesting as I did.
    The project is still very basic and it's missing features, but at the end of the day it's working, and it's been real fun to work on it because it allowed me to try a lot of great stuff out there:

  • ELMAH + SignalR = ElmahR

    During the last few days I've been working on a new idea. I've been listening and reading about SignalR since a few months, and 2 weeks ago I attended a very interesting session by Marteen Balliauw about it at the UGIALT.NET conference in Milan. At the same time I'm an ELMAH user since a while, and I have the pleasure to share my working hours and my lunches with its author Atif. So, when I was in my car coming back from the conference to where I live, and despite (or maybe thanks to...) a bad cold that was hitting me, I had this idea to join these two libraries to offer real time and interactive experience to the logging capabilities that ELMAH offers. This week I started this experiment and I had a lot of fun working on it.

    First, I cloned the ELMAH Sandbox project repository following the recommended guidelines, and inside it I wrote a new ErrorPostModule for ELMAH. This module is very simple, and so far its implementation is still very basic, its goal is to process an unhandled exception that occurred in the host application and post its Json representation to a specified destination. When you have this module available, in your ELMAH-enable applications you can activate it adding a configuration key like this one:

  • Extending the world, step 4

    Last time we introduced a new simple exercise, where we have a computation which might fails and we want to to try to remove all the noise that the error handling introduces all around the algorithm. We talked about Monads (in a very simplified way) and we defined a way we could write our computation inside a Linq expression, using a Monad to isolate the unwanted error handling code. What we still have to do is actually implement this new Monad and see how we can leverage this concepts and strategies to reach our goal.

  • Extending the world, step 3

    So far in our series we have seen how Linq is a world that can be extended if we craft our types the right way. We learned that Linq is definitely not just for IEnumerable or IQueryable, and I'm more and more convinced that what's most interesting about Linq is the way it guides you to write more functional code. I'm not a functional programmer (yet), so please do not expect too much knowledge about that from my posts, but I'm slowly gaining a more functional view on things, and I'm feeling that it's a good thing to have. There are a few aspects of functional programming that Linq tries to enforce:

  • Extending the world, step 2

    In the previous episode of this short series, I showed how you can define a type in a way that enables it to participate to Linq queries. Linq query syntax defines a set of operators, which are mapped to methods that types involved in a Linq query must provide. If they natively do not, we can still make them work because extension methods come to the rescue. How those methods should be named and shaped is clearly documented, and it would be too much to be explained here, so I will skip these details. I'll go back to our exercise and I'll use it to give you some more details about a couple of interesting points.

  • Extending the world, step 1

    After the general introduction to this short series of post, I would like to set up a sort of roadmap, defining the goals that I have while writing this stuff. But first, a sort of disclaimer: I'm not a big expert of these things at all, and I'm quite new to this kind of approach, but that's exactly the reason why I want to write about it, to illustrate things from the point of view of someone who's really learning to use this new mindset and the related techniques, because I know there are a lot of guys like me out there :) The code I will show will be written by myself in a sort of "learn by trial" process, but it will be strongly inspired by several sources, which I will try to mention as most precisely as possible. If someone reading these posts will find errors or omissions his comments will be welcomed.

  • Extending the world

    After a few months I'm back to write on my blog, but to be honest I had a good excuse, since my wife and I have dealt with a move abroad (I'll talk about it separately), which is not exactly something trivial. However, we are slowly returning to normal, and today I managed to get a little time to write this post.

  • Background and concepts

    The more I work on Parrots and the ideas I have about it, the more I manage to give it a narrow and precise context. This is an important step, because it helps users to decide if and when they should use Parrots instead of any other mocking library around.

  • Why Parrots

    Parrots is my first open-source project ever, for many reasons I never joined one before and it is the first I decided to start, but I've always been attracted by the idea of having a good idea and share it, eventually getting to form a good distributed team of developers collaborating on it.

  • First release

    Today I did the first upload to BitBucket of Parrots, a "record and replay" mocking library I'm working on since a few weeks.

  • AppFabric & "Protocol Buffers"

    In the last few days I've been struggling with a quite hard task: introducing some caching mechanism in an existing and complex infrastructure, which is already using AppFabric caching (aka: Velocity) in some other areas.