<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>(w)asp.net - signalr</title><link>http://www.robychechi.it:80/roby/Tags/signalr</link><description>(w)asp.net - signalr</description><item><title>SignalR Real-time Application Cookbook ready and available on stores!</title><link>http://www.robychechi.it:80/roby/signalr-cookbook-ready-and-available-on-stores</link><description>&lt;p&gt;
	I&amp;#39;ve been quite silent lately, but I really needed to use all my spare time for my last adventure: &lt;a href="new-adventure-writing-a-book-about-signalr"&gt;writing a technical book about Signalr&lt;/a&gt;! Well, the adventure is over and the book is now available on both the &lt;a href="http://www.packtpub.com/signalr-real-time-application-cookbook/book"&gt;Packt online store&lt;/a&gt; and on &lt;a href="http://www.amazon.com/SignalR-Real-time-Application-Cookbook-Roberto/dp/1783285958/ref=sr_1_3?ie=UTF8&amp;amp;qid=1398281697&amp;amp;sr=8-3&amp;amp;keywords=signalr"&gt;Amazon&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
	It&amp;#39;s been a very interesting experience, from which I learned a lot about how tough writing a book is :) And I also improved a lot my knowledge about SignalR itself.&lt;/p&gt;
&lt;p&gt;
	I just want to thank Packt for the opportunity and their support through the whole process, and all the reviewers who helped me improving the content.&lt;/p&gt;
&lt;p&gt;
	Now, some rest and then back to work. Next adventure? Probably ElmahR 2.0 :) And for sure I&amp;#39;ll try to write more here, I&amp;#39;ve been neglecting this blog quite a lot lately...&lt;/p&gt;
</description><pubDate>Wed, 23 Apr 2014 19:45:06 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/signalr-cookbook-ready-and-available-on-stores</guid></item><item><title>New adventure: writing a book about SignalR!</title><link>http://www.robychechi.it:80/roby/new-adventure-writing-a-book-about-signalr</link><description>&lt;p&gt;
	After almost 2 years dedicating my spare time to &lt;a href="http://elmahr.apphb.com/"&gt;ElmahR&lt;/a&gt;, now I&amp;#39;m giving it some rest while thinking about how to accommodate in a hypothetical v2.0 new ideas I have and &lt;a href="https://bitbucket.org/wasp/elmahr/issues?status=new&amp;amp;status=open"&gt;new suggestions I received&lt;/a&gt;. In the meantime, I started a new adventure for the next few months: I&amp;#39;m writing a book about &lt;a href="http://signalr.net/"&gt;SignalR&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;
	It&amp;#39;s an interesting opportunity that &lt;a href="http://www.packtpub.com/"&gt;PacktPub&lt;/a&gt; offered me, I never wrote a book before but I thought it could be a nice challenge. The book itself will be a relatively easy one to write, it&amp;#39;s not about how SignalR works and its architecture, or about esoteric usage scenarios, it&amp;#39;s a &lt;em&gt;cookbook&lt;/em&gt;, a set of readymade &lt;em&gt;recipes&lt;/em&gt; that readers will be able to apply with a small effort in order to tackle specific problems. This kind of content should fit both my limited spoken English and my SignalR knowledge, which is quite extensive (it&amp;#39;s one if the pillars for ElmahR) but maybe not too &amp;quot;hardcore&amp;quot;.&lt;/p&gt;
&lt;p&gt;
	I&amp;#39;m already targeting SignalR 2.0, so this will give me an opportunity to update my knowledge to the latest release.&lt;/p&gt;
&lt;p&gt;
	It will be fun, and I&amp;#39;ll do my best to produce a book which delivers what it promises to.&lt;/p&gt;
</description><pubDate>Sat, 19 Oct 2013 09:35:29 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/new-adventure-writing-a-book-about-signalr</guid></item><item><title>ElmahR 1.1.5, ready for Azure!</title><link>http://www.robychechi.it:80/roby/elmahr-1.1.5-ready-for-azure</link><description>&lt;p&gt;
	Thanks to a notification I received &lt;a href="https://bitbucket.org/wasp/elmahr/issue/65/elmahr-dashboard-deploy-to-azure-website"&gt;here&lt;/a&gt;, I discovered that &lt;a href="http://elmahr.apphb.com/"&gt;ElmahR&lt;/a&gt; was not behaving well on Azure, Actually the problem is a little bit fuzzy, and it has to do with the exact sequence used to initialize SignalR bits, but anyway I found some detail about the problem and, after tweaking a bit the way ElmahR bootstrap, I was able to &lt;a href="https://bitbucket.org/wasp/elmahr/commits/all"&gt;patch it&lt;/a&gt; and deploy a new &lt;a href="https://www.nuget.org/packages/ElmahR.Core/1.1.5"&gt;1.1.5&lt;/a&gt; version on Nuget.&lt;/p&gt;
&lt;p&gt;
	Go and get it :)&lt;/p&gt;
</description><pubDate>Tue, 08 Oct 2013 17:29:05 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/elmahr-1.1.5-ready-for-azure</guid></item><item><title>ElmahR status, a new feature is enabling an interesting scenario</title><link>http://www.robychechi.it:80/roby/elmahr-status-a-new-feature-is-enabling-an-interesting-scenario</link><description>&lt;p&gt;
	During the last few months I took a break from &lt;strong&gt;ElmahR&lt;/strong&gt;, and I did not add any big new feature. I did some bug fixing and I added little things, but the last one I introduced in &lt;a href="http://www.nuget.org/packages/ElmahR.Core/"&gt;1.1.0&lt;/a&gt; is actually interesting, so I decided to talk a little bit about it.&lt;/p&gt;
&lt;p&gt;
	It&amp;#39;s been inspired by &lt;a href="https://bitbucket.org/wasp/elmahr/issue/60/registering-new-client-with-elmahrs-hubs"&gt;a feature request&lt;/a&gt; I received, and the resulting scenario is about connecting to an ElmahR dashboard which does not live under the same domain of the client code. The problem behind this is a &lt;a href="http://en.wikipedia.org/wiki/Same-origin_policy"&gt;well known one&lt;/a&gt;, and SignalR already handles it in a easy way to exploit. The problem with &lt;strong&gt;ElmahR&lt;/strong&gt; was that I wasn&amp;#39;t exposing that feature, but now with 1.1.0 you can specify if you want to enable cross domain requests by simply supplying a &lt;code&gt;true&lt;/code&gt; value to the &lt;code&gt;Bootstrapper.PreBootstrap()&lt;/code&gt; method, which must be called to startup the dashboard and it&amp;#39;s usually called from the &lt;code&gt;ElmahR.Core.cs&lt;/code&gt; file placed in the &lt;code&gt;App_Start&lt;/code&gt; folder by the Nuget package.&lt;/p&gt;
&lt;p&gt;
	With that support in place, it become fairly easy to connect the client-side &lt;strong&gt;ElmahR&lt;/strong&gt; Javascript library to a dashboard living under a different domain. If you check out the &lt;strong&gt;ElmahR&lt;/strong&gt; &lt;a href="https://bitbucket.org/wasp/elmahr/wiki/Home"&gt;repository&lt;/a&gt;, you will find a new simple test web site called CORS, and the &lt;a href="https://bitbucket.org/wasp/elmahr/src/e59c189d7c9033d3499841a454c58b168f64aee8/src/temp/CORS/index.html?at=default"&gt;index.html&lt;/a&gt; page there will illustrate you how easily you can configure the library. The process is quite simple:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		configure the dashboard paths as it&amp;#39;s done in the &lt;a href="https://bitbucket.org/wasp/elmahr/src/e59c189d7c9033d3499841a454c58b168f64aee8/src/temp/CORS/index.html?at=default"&gt;index.html&lt;/a&gt; sample, of course using your specific dashboard address&lt;/li&gt;
	&lt;li&gt;
		call &lt;code&gt;registerBuilder&lt;/code&gt;, which expects an object defining method which extend the &lt;code&gt;elmahr&lt;/code&gt; global object; for example, if you want to receive errors notifications you&amp;#39;ll need to redefine the &lt;code&gt;notifyErrors&lt;/code&gt; callback; the code in index.html should be quite self explanatory&lt;/li&gt;
	&lt;li&gt;
		the new callback will be called at the right moment and each time you&amp;#39;ll receive an array of errors which you&amp;#39;ll be able to examine and manipulate&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	Everything described must be done when the DOM is ready. You can see which events are available on the client library looking at the source code &lt;a href="https://bitbucket.org/wasp/elmahr/src/e59c189d7c9033d3499841a454c58b168f64aee8/src/ElmahR.Core/Scripts/ElmahR/elmahr.core.js?at=default#cl-283"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
	Finally, you might have noticed that the &lt;code&gt;notifyErrors&lt;/code&gt; callback is defined with an object containing a member called &lt;code&gt;replacer&lt;/code&gt;, this way we&amp;#39;re instructing the &lt;code&gt;elmahr&lt;/code&gt; object to remove the default callback and use this new one. If you prefer, you can keep the default callback and just append yours, in this case it is enough to specify your callback directly as the value for the &lt;code&gt;notifyErrors&lt;/code&gt; member of the &lt;code&gt;callbacks&lt;/code&gt; object, without any intermediate object.&lt;/p&gt;
&lt;p&gt;
	On the &lt;a href="http://bitbucket.org/wasp/elmahr/issues?status=new&amp;amp;status=open"&gt;issue tracker&lt;/a&gt; there are a few more interesting suggestions, I&amp;#39;m currently thinking about them and I might do some work to implement them in the next few weeks.&lt;/p&gt;
</description><pubDate>Wed, 28 Aug 2013 19:58:18 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/elmahr-status-a-new-feature-is-enabling-an-interesting-scenario</guid></item><item><title>ElmahR 1.0!</title><link>http://www.robychechi.it:80/roby/elmahr-1.0</link><description>&lt;p&gt;
	Three months after my last port, this one is to announce that &lt;strong&gt;ElmahR&lt;/strong&gt; has reached version 1.0! Last time I was not expecting such a long time to finish the latest &amp;quot;details&amp;quot;, but some feedback I received (like &lt;a href="http://ben.onfabrik.com/posts/centralized-logging-and-diagnostics-with-elmah-and-nlog" target="_blank"&gt;this one&lt;/a&gt;) made me realized that I was still missing more modularity, and that has not been so easy to achieve. I had to deeply reorganize a lot of things in order to separate different concerns not only from a code perspective (that part was already fairly ok), but also from a packaging one. It&amp;#39;s been though, but I&amp;#39;m very happy about what I achieved, and this allowed me to produce a set of new &lt;a href="https://nuget.org/packages?q=elmahr" target="_blank"&gt;Nuget packages&lt;/a&gt; from which you can built a full &lt;strong&gt;ElmahR&lt;/strong&gt; dashboard from scratch in Visual Studio, or add it to any existing monitoring application yo might have in place.&lt;/p&gt;
&lt;p&gt;
	The &lt;strong&gt;ElmahR.Elmah&lt;/strong&gt; package was already available, and was making easy to hook an existing application to a dashboard instance, but now we have several more to build a dashboard:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		&lt;strong&gt;ElmahR.Core&lt;/strong&gt;: this is the foundation of the dashboard, where posted errors are handled, associated to applications and broadcast to client, where all the necessary abstraction and related default implementations, are introduced, and where a basic &lt;em&gt;streaming log&lt;/em&gt; page is deployed&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;ElmahR.Modules.Dashboard&lt;/strong&gt;: this modules works on top of &lt;strong&gt;ElmahR.Core&lt;/strong&gt; and add the full fledged &lt;em&gt;SPA&lt;/em&gt; (Single Page Application) dashboard page I&amp;#39;ve been working on since the beginning of the project&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;ElmahR.Persistence.*&lt;/strong&gt;: while &lt;strong&gt;ElmahR.Core&lt;/strong&gt; by default keeps errors in memory without storing them anywhere, these modules let you persist errors on several different durable support&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;ElmahR.IoC.&lt;/strong&gt;&lt;em&gt;: the main module &lt;strong&gt;ElmahR.Core&lt;/strong&gt; embeds an *IoC container&lt;/em&gt; (thanks to &lt;em&gt;&lt;a href="https://github.com/grumpydev/TinyIoC" target="_blank"&gt;TinyIoC&lt;/a&gt;&lt;/em&gt;)to make dependencies resolution management easier and to integrate it with &lt;em&gt;&lt;a href="http://signalr.net/" target="_blank"&gt;SignalR&lt;/a&gt;&lt;/em&gt; &lt;code&gt;DepandencyResolver&lt;/code&gt;, this set of modules (so far there&amp;#39;s only one implementation for &lt;em&gt;&lt;a href="http://www.ninject.org/" target="_blank"&gt;NInject&lt;/a&gt;&lt;/em&gt;) will allow you to have more integration with your favorite container you might be using already&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	I also took advantage of this step to update &lt;strong&gt;ElmahR&lt;/strong&gt; dependencies to the latest available versions, including the amazing official release of &lt;em&gt;SignalR&lt;/em&gt;!&lt;/p&gt;
&lt;p&gt;
	During the next days I&amp;#39;ll try to write a few more blog posts about some (hopefully) interesting details, in any case I did a lot of work on the &lt;a href="https://bitbucket.org/wasp/elmahr/wiki/Home" target="_blank"&gt;documentation&lt;/a&gt;, you can check it to understand how &lt;strong&gt;ElmahR&lt;/strong&gt; works and for most of the configuration cases.&lt;/p&gt;
&lt;p&gt;
	I&amp;#39;m very excited about this release, and now I&amp;#39;ll hopefully take some rest, I&amp;#39;ll keep on working on the project in order to fix bugs that might come up, and I&amp;#39;ll be thinking about how to make it evolve in useful and interesting directions. I&amp;#39;d really want to thank a all the people who supported me with their feedback or concrete contributions, in particular &lt;a href="http://www.raboof.com/" target="_blank"&gt;Atif&lt;/a&gt;, the author of &lt;a href="https://code.google.com/p/elmah/" target="_blank"&gt;ELMAH&lt;/a&gt;, who I had the pleasure to work with and who supported me a lot especially at the beginning of the project, &lt;a href="http://weblogs.asp.net/davidfowler/" target="_blank"&gt;David&lt;/a&gt;, &amp;quot;SignalR man&amp;quot;, and then &lt;a href="http://gregorsuttie.com/" target="_blank"&gt;Gregor&lt;/a&gt;, &lt;a href="https://twitter.com/nportelli" target="_blank"&gt;Nick&lt;/a&gt;, &lt;a href="http://ben.onfabrik.com/" target="_blank"&gt;Ben&lt;/a&gt;, &lt;a href="http://www.linkedin.com/in/carlossardo" target="_blank"&gt;Carlos&lt;/a&gt;, and my wife :)&lt;/p&gt;
&lt;p&gt;
	As usual, yo can give it a try &lt;a href="http://elmahr.apphb.com/" target="_blank"&gt;here&lt;/a&gt; and check the source code on &lt;a href="https://bitbucket.org/wasp/elmahr" target="_blank"&gt;the repo&lt;/a&gt;.&lt;/p&gt;
</description><pubDate>Sun, 24 Mar 2013 17:56:52 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/elmahr-1.0</guid></item><item><title>ElmahR 1.0? Almost there!</title><link>http://www.robychechi.it:80/roby/elmahr-1.0-almost-there</link><description>&lt;p&gt;
	It&amp;#39;s been &lt;a href="http://www.robychechi.it/roby/tech-blog/elmah-signalr-elmahr"&gt;almost one year&lt;/a&gt; since I started &lt;a href="https://bitbucket.org/wasp/elmahr"&gt;ElmahR&lt;/a&gt;, and it&amp;#39;s been a long journey, with a lot of fun and learning: I added a lot of features, which are described &lt;a href="http://www.robychechi.it/roby/Tags/elmahr"&gt;in my blog posts about the project&lt;/a&gt;, and probably many others could be added, but I think I&amp;#39;m getting near to what I&amp;#39;ll release as version 1.0. In the last weeks I did some cleanup to the plugin system (which is not yet as good as I&amp;#39;d like, but it&amp;#39;s good enough for now), and I enabled some &amp;quot;startup&amp;quot; statistics which allowed me to send down to clients numbers that apply not only to the errors received since the connections, but to the whole errors history. This means that now both the numbers related to the errors grouped by type and the errors piechart reflect the whole persisted errors history, which I think is a more useful information.&lt;/p&gt;
&lt;p&gt;
	But what will bring me to do the move to the 1.0 release will be the &lt;a href="https://github.com/SignalR/SignalR"&gt;SignalR 1.0&lt;/a&gt; RTM (right now it is &lt;a href="https://github.com/SignalR/SignalR/blob/master/ReleaseNotes.md"&gt;1.0 RC1&lt;/a&gt;). I&amp;#39;m pretty excited about that and, as soon as SignalR will be officially released with the &lt;a href="http://weblogs.asp.net/scottgu/archive/2012/12/14/announcing-the-asp-net-and-web-tools-2012-2-release-candidate.aspx"&gt;ASP.NET and Web Tools 2012.2 update&lt;/a&gt; (this should happen in January) I&amp;#39;ll migrate ElmahR from SignalR 0.5.3, and when done I will align its version number. Can&amp;#39;t wait to do that! :)&lt;/p&gt;
&lt;p&gt;
	After that I think I&amp;#39;ll take break from development and I&amp;#39;ll spend more time in documenting it, I wrote a lot about it but &lt;a href="https://bitbucket.org/wasp/elmahr/wiki/Home"&gt;the &lt;em&gt;official&lt;/em&gt; documentation&lt;/a&gt; is not as much complete as I&amp;#39;d like. I will also try to write a new descriptive article about it, with the goal of updating the &lt;a href="http://www.codeproject.com/Articles/377394/ElmahR-equals-ELMAH-plus-SignalR"&gt;current one&lt;/a&gt; available in CodeProject.&lt;/p&gt;
&lt;p&gt;
	So, stay tuned for 1.0 :)&lt;/p&gt;
</description><pubDate>Wed, 19 Dec 2012 20:04:05 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/elmahr-1.0-almost-there</guid></item><item><title>ElmahR cleanup features</title><link>http://www.robychechi.it:80/roby/elmahr-cleanup-features</link><description>&lt;h1&gt;
	Latest additions&lt;/h1&gt;
&lt;p&gt;
	So, lately I&amp;#39;ve been working on features that improve the way &lt;a href="http://elmahr.apphb.com/" target="_blank" title="ElmahR demo"&gt;ElmahR&lt;/a&gt; help you in maintaining ElmahR itself healthy. Earlier &lt;a href="http://www.robychechi.it/roby/tech-blog/elmahr-low-level-logging" target="_blank" title="Low-level Logging"&gt;I improved the way it notifies about error happening in ElmahR itself&lt;/a&gt;, and lately I added a new feature that allows you to see how many historical errors have been recorded for each monitored app. It also let you clean up those error offering a set of &amp;#39;trash bin&amp;#39; buttons which give you a (hopefully) easy way to clear ranges of errors that are not interesting anymore. Each application box has a new icon like this:&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="Errors stats" src="http://elmahr.apphb.com/Content/Images/glyphicons_041_charts.png" title="Errors stats" /&gt;&lt;/p&gt;
&lt;p&gt;
	If you press it a popup window will appear, with all the details that I just described. It&amp;#39;s more easy to actually &lt;a href="http://elmahr.apphb.com/" target="_blank" title="ElmahR demo"&gt;try it&lt;/a&gt; than explaining it.&lt;/p&gt;
&lt;h1&gt;
	Future steps&lt;/h1&gt;
&lt;p&gt;
	I think that I will not add any particular new feature until I&amp;#39;ll decide to go to 1.0, I will just go back to do some clean up which is there in the queue since a while, expecially regarding javascript and css, but also around the persistence server side code. I will also wait for &lt;a href="https://github.com/SignalR/SignalR" target="_blank"&gt;SignalR&lt;/a&gt; to go 1.0 before going 1.0 myself, and I will also take my time to move the project to Visual Studio 2012. A lot of things to do yet, but mainly behind the scenes.&lt;/p&gt;
&lt;p&gt;
	Keep on polling the project for the latest bits, and if you are using it please let me know, any feedback is welcome!&lt;/p&gt;
</description><pubDate>Thu, 20 Sep 2012 15:40:02 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/elmahr-cleanup-features</guid></item><item><title>ElmahR 0.9.1 is out</title><link>http://www.robychechi.it:80/roby/elmahr-0.9.1-is-out</link><description>&lt;p&gt;
	I&amp;#39;m enjoying my vacations, and today I was having a nice, quiet and relaxing day at home, so at some point I said &amp;quot;there&amp;#39;s no better day than today to fix some &lt;a href="http://elmahr.apphb.com" target="_blank"&gt;ElmahR&lt;/a&gt; bugs&amp;quot; :)&lt;/p&gt;
&lt;p&gt;
	During the last few weeks I have been notified about &lt;a href="https://bitbucket.org/wasp/elmahr/issue/26/zip-download-not-working-on-64bit-systems" target="_blank"&gt;a couple&lt;/a&gt; of &lt;a href="http://stackoverflow.com/questions/11847911/elmahr-doesnt-load-properly-on-iis" target="_blank"&gt;problems&lt;/a&gt; with ElmahR, and at the same time I&amp;#39;ve been working on ElmahR internals to introduce some mechanisms to make it more robust and to give people an easier experience when installing it. ElmahR is doing quite good when dealing with errors from other applications, but it was still missing, for example, a good way to notify about errors happening inside ElmahR itself. You know, s**t can happen in any place, right? Let&amp;#39;s suppose, for example, that we have a problem with the database where ElmahR persists errors, if we do not handle that case the right way the risk is that external errors don&amp;#39;t reach the connected clients, and nobody will notice them. At the same time we had no easy way to know that such a problem occurred.&lt;/p&gt;
&lt;p&gt;
	In theory I could have treated ElmahR as an errors source like any other application, and have it posting errors to itself through &lt;a href="http://code.google.com/p/elmah/"&gt;ELMAH&lt;/a&gt; and the &lt;a href="https://bitbucket.org/wasp/elmahr/src/a5e65de53cb9/src/ElmahR.Elmah/ErrorPostModule.cs"&gt;ErrorPostModule&lt;/a&gt;, but that way it could have been easy to trigger infinite loops of errors. I needed something more directly targeting this kind of scenario, but at the same time the basic ELMAH strategy seemed to me the way to go: an HTTP module subscribing to the application-level Error event. That works quite fine when something happens during a regular HTTP request (i.e. when an error POST arrives), but it doesn&amp;#39;t when &lt;a href="https://github.com/SignalR/SignalR/" target="_blank"&gt;SignalR&lt;/a&gt; hubs are involved. At the time of this writing, &lt;a href="https://github.com/SignalR/SignalR/issues/147" target="_blank"&gt;SignalR swallows any unhandled exception coming out of a hub public method&lt;/a&gt;, and this makes impossible to centralize any&amp;nbsp;&lt;span style="font-family: Tahoma, 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: 13px; font-style: normal; "&gt;management of&amp;nbsp;&lt;/span&gt;unhandled errors in an HTTP module. This problem &lt;a href="https://github.com/SignalR/SignalR/issues/548" target="_blank"&gt;will be solved in future versions&lt;/a&gt; of SignalR, so I decided to handle it with a &amp;#39;quick and dirty&amp;#39; approach while waiting for some nicer way to do it. I added some exception handling logic in every public method exposed by my main hub, and the same logic is available in an HTTP module called &lt;a href="https://bitbucket.org/wasp/elmahr/src/a5e65de53cb9/src/ElmahR.Core/ErrorTrapModule.cs" target="_blank"&gt;ErrorTrapModule&lt;/a&gt;, which you can add to your configuration if you want to track error during regular HTTP requests. The result of this logic is that errors happening inside ElmahR are treated like errors coming from an external app, and it is possible to associate them to a specific error feed. You will need to do 2 things to your &lt;code&gt;web.config&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		add an &lt;code&gt;application&lt;/code&gt; element inside your &lt;code&gt;elmahr&lt;/code&gt; section to represent the feed of errors happening inside ElmahR&lt;/li&gt;
	&lt;li&gt;
		add the &lt;code&gt;ErrorTrapModule&lt;/code&gt; to your HTTP modules&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	The result will be something like this:&lt;/p&gt;
&lt;pre class="brush:xml"&gt;
...
&amp;lt;elmahr&amp;gt;
  ...
  &amp;lt;application name=&amp;quot;Myself&amp;quot; sourceId=&amp;quot;###ElmahR###&amp;quot; 
                             boxColor=&amp;quot;boxColorElmahR&amp;quot; /&amp;gt;
&amp;lt;/elmahr&amp;gt;
&amp;lt;system.webServer&amp;gt;
  &amp;lt;modules runAllManagedModulesForAllRequests=&amp;quot;true&amp;quot;&amp;gt;
    &amp;lt;add name=&amp;quot;ErrorPost&amp;quot; 
         type=&amp;quot;ElmahR.Core.ErrorTrapModule, ElmahR.Core&amp;quot; /&amp;gt;
  &amp;lt;/modules&amp;gt;
&amp;lt;/system.webServer&amp;gt;
...
&lt;/pre&gt;
&lt;p&gt;
	It should be quite straightforward, we just have to pay attention to 2 small pieces:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		&lt;p&gt;
			the &lt;code&gt;sourceId&lt;/code&gt; value is a special one, its value is &lt;code&gt;###ElmahR###&lt;/code&gt;, and such a value allows ElmahR to understand that this is a feed for internal errors; this default value can be changed to any other string with an additional attribute to the &lt;code&gt;elmahr&lt;/code&gt; tag called &lt;code&gt;selfSourceId&lt;/code&gt;, like this:&lt;/p&gt;
		&lt;pre class="brush:xml"&gt;
...
&amp;lt;elmahr selfSourceId=&amp;quot;foo&amp;quot;&amp;gt;
  ...
  &amp;lt;application name=&amp;quot;Myself&amp;quot; sourceId=&amp;quot;foo&amp;quot; 
                             boxColor=&amp;quot;boxColorElmahR&amp;quot; /&amp;gt;
&amp;lt;/elmahr&amp;gt;
...
&lt;/pre&gt;
	&lt;/li&gt;
	&lt;li&gt;
		&lt;p&gt;
			the &lt;code&gt;boxColor&lt;/code&gt; attribute allows us to associate the box representing any feed with a specific CSS class, this way we can &lt;em&gt;highlight&lt;/em&gt; special boxes like this one with any ad-hoc styling&lt;/p&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	This strategy is already available in the source code repository, and it works quite fine. It can be improved, I&amp;#39;ll work on it, but it&amp;#39;s already quite helpful. Such a system would have helped to easily spot the cause of the error happening &lt;a href="https://bitbucket.org/wasp/elmahr/issue/26/zip-download-not-working-on-64bit-systems" target="_blank"&gt;in this first scenario&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
	I will also work some more on the client-side part of ElmahR, to make easier to solve problems when they happen there, but that&amp;#39;s where thing could become more hard to grasp, and where only deep testing can really give strong guarantees. &lt;a href="http://stackoverflow.com/questions/11847911/elmahr-doesnt-load-properly-on-iis" target="_blank"&gt;The second problem&lt;/a&gt; I was mentioning at the beginning of this post was actually caused by a couple of javascript problems. One of them was 100% my fault, and it&amp;#39;s fixed, but the other one was because of javascript inconsistencies across browser versions. During the last few weeks I honestly did not spend much time in testing ElmahR on IE7/8, but one of the latest addition to the project (the &lt;em&gt;plugins&lt;/em&gt; system) introduced a subtle bug happening only on those versions. Now it&amp;#39;s fixed, but this will work as a good reminder for me about always testing on all the browser versions I want to support. Automated client-side &amp;nbsp;testing will probably be one major step I will have to take soon.&lt;/p&gt;
&lt;p&gt;
	While I was working on these problems, I also decided to follow &lt;a href="https://twitter.com/GregRatner" target="_blank"&gt;@GregRatner&lt;/a&gt; advice, and now both &lt;a href="https://bitbucket.org/wasp/elmahr" target="_blank"&gt;the main solution&lt;/a&gt; and &lt;a href="https://bitbucket.org/wasp/elmahr/downloads/ElmahRSampleSetup.0.9.1.zip" target="_blank"&gt;the sample setup zip&lt;/a&gt; contain an MVC source application, which will allow me to keep the testing phase more complete, and it will work as a sample for anybody wanting to monitor MVC apps with ElmahR.&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;PS&lt;/strong&gt;: &lt;em&gt;the bug related to javascript issues was at first appearing to be related to a problem with IIS 7.5, so in order to reproduce the issue exactly as described I needed to test it under Windows 2008 R2. I downloaded a test VHD from Microsoft, but then I discovered that it was not possible to run such a virtual machine with Virtual PC on Windows 7. That&amp;#39;s where &lt;a href="http://ocpbbc.blogspot.ch/2012/04/run-windows-2008r2-vhd-under-vmware.html" target="_blank"&gt;this post&lt;/a&gt; became very useful :)&lt;/em&gt;&lt;/p&gt;
</description><pubDate>Fri, 17 Aug 2012 15:46:59 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/elmahr-0.9.1-is-out</guid></item><item><title>Making ElmahR more rock solid</title><link>http://www.robychechi.it:80/roby/making-elmahr-more-rock-solid</link><description>&lt;p&gt;
	After the &lt;a href="http://www.aspconf.net/" target="_blank"&gt;aspConf&lt;/a&gt; session I slowed down a little bit because I needed some rest, and right now I&amp;#39;m having some vacation, so my work on &lt;a href="http://elmahr.apphb.com/" target="_blank"&gt;ElmahR&lt;/a&gt; is going on at a lower pace. As I mentioned in earlier posts and im my &lt;a href="http://channel9.msdn.com/Events/aspConf/aspConf/ElmahR-ELMAH-SignalR" target="_blank"&gt;aspConf session&lt;/a&gt;, ElmahR is growing but it still needs some work to make it more error proof. ElmahR is about errors happening on monitored applications, but errors can happen inside ElmahR itself, no? In the latest days I started working on this particular aspect, and soon an ElmahR dashboard will be able to treat errors happening on the dashboard itself. You might think that this is not a problem: why didn&amp;#39;t I just configure the dashboard to post errors to itself through ELMAH + ErrorPostModule? Well, that&amp;#39;s possible of course, but it&amp;#39;s also very easy to fall in cases where this scenario could generate endless loops of errors. Imagine you have a problem connecting to the database where errors are stored: when ElmahR receives a new error from a monitored source, it tries to store it and it fails, the error is intercepted, posted to ElmahR itself and received, then ElmahR will try to store this one too, and that will fail, and the loop starts again... &amp;nbsp;A different approach is needed, and I begun to work on it. I already released some bits of it, but soon after my short vacation I will review a couple of details to make it cleaner, and I&amp;#39;ll tell you more about the internals of this piece.&lt;/p&gt;
&lt;p&gt;
	Switch off! :)&lt;/p&gt;
</description><pubDate>Mon, 13 Aug 2012 09:56:36 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/making-elmahr-more-rock-solid</guid></item><item><title>ElmahR and Appharbor: plugins and structure review</title><link>http://www.robychechi.it:80/roby/elmahr-and-appharbor-plugins-and-structure-review</link><description>&lt;p&gt;
	&lt;a href="http://www.robychechi.it/roby/tech-blog/elmahr-0.8.5-will-be-at-aspconf" target="_blank"&gt;Last time&lt;/a&gt; I&amp;#39;ve been already mentioning the new &lt;a href="https://appharbor.com/" target="_blank"&gt;Appharbor&lt;/a&gt; integration plugin I&amp;#39;ve been working on, but there&amp;#39;s more to tell about it, mainly for two reasons: the plugin system deserves some more details, and along with the Appharbor plugin I completed a quite deep restructuring of &lt;a href="https://bitbucket.org/wasp/elmahr/wiki" target="_blank"&gt;the whole project&lt;/a&gt;, which actually makes much easier to start from a repository clone and build up a fully functional and customizable ElmahR installation with just a few clicks. Nothing is perfect, and actually these advantages come with a little more maintenance burden on my side, but so far I&amp;#39;m happy with it and when I&amp;#39;ll have some more time I&amp;#39;ll work on it. But first let&amp;#39;s see more about the finished Appharbor plugin.&lt;/p&gt;
&lt;h2&gt;
	Appharbor build events integration&lt;/h2&gt;
&lt;p&gt;
	When you add a source application inside a dashboard, you know that you will receive there any unhandled exception occurring on the monitored application in real-time. In a context where applications are monitored for errors, probably you will have someone taking care of fixing them, and when fixed a new application version will be deployed. People monitoring the applications must be very interested in knowing when the mentioned deploys occur, and what this plugin makes possible is to have live notifications about the builds occurring if the hosting infrastructure is from Appharbor. The plugin takes advantage of the Appharbor HTTP API, and it&amp;#39;s basically creating an endpoint where build events can be sent through HTTP POSTs by any service hook you may configure inside your Appharbor control panel. When those are received, a new &lt;a href="https://github.com/SignalR/SignalR" target="_blank"&gt;SignalR&lt;/a&gt; hub packs and routes them to the dashboard, which the plugin enriches with some new UI elements where the messages end up stacking up, as for the error messages.&lt;/p&gt;
&lt;h2&gt;
	But how a plugin works?&lt;/h2&gt;
&lt;p&gt;
	Let&amp;#39;s see how a plugin (which by the way is a new .NET class library, no surprise here) in the context of ElmahR project is composed by up to 5 components:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		&lt;strong&gt;a server-side endpoint&lt;/strong&gt;: a plugin might set up an endpoint where external system would send messages, such an endpoint should normally be built as an http handler where to POST data&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;a server-side hub&lt;/strong&gt;: if the plugin is not about errors, it might need to deliver real-time communication events about different type of messages, therefore a new type of SignalR hub might be necessary; this piece is actually very easy because SignalR infrastructure already does all the discovery job, so adding a Hub-derived type inside the plugin assembly will do the trick&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;client-side logic&lt;/strong&gt;: the plugin might need some javascript code to do its job on the client, and this will be mandatory if you have an additional hub sending stuff down to the client&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;client-side rendering&lt;/strong&gt;: ElmahR is a visual dashboard, so quite likely a plugin will need to emit appropriate HTML, which could be created with whatever DOM manipulation strategy you like, but probably the easiest way would be to leverage the already integrated &lt;a href="http://knockoutjs.com/" target="_blank"&gt;Knockoutjs&lt;/a&gt; support for this&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;client-side resources&lt;/strong&gt;: images, css... those will be needed too, right?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	Several of the just described pieces are straightforward, but there is one of them which is actually tricky: if you need to integrate new client-side visual widgets or processing logic, you need to integrate them inside a framework which must be totally unaware of the added plugin. That&amp;#39;s obvious, a plugin requiring some manual intervention on the existing code or UI in order to be used is not really a plugin, but that actually poses a small challenge, because you&amp;#39;ll need a way to add those pieces at run time, which also mean at the right time. Back to the Appharbor plugin, I needed to add a new messages counter for each enabled application, and also a container where to stack received build messages. It&amp;#39;s similar to what happens for errors, but these are not error messages, so they have ad hoc data and visual representations. ElmahR is a &lt;em&gt;Single Page Application&lt;/em&gt;, and that page is there unaware of plugins, how can we enrich it with new UI widgets? Believe it or not, it&amp;#39;s again SignalR coming to rescue. Here you have the main steps:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;
		I defined a few points inside default.cshtml where I might want to drop UI widgets, and I just put there divs with well-known ids&lt;/li&gt;
	&lt;li&gt;
		when a plugin wants to fill one of more of those extension points with its stuff, all it has to do is put cshtml &lt;strong&gt;extensors&lt;/strong&gt;&amp;nbsp;(that&amp;#39;s how I call them now) files inside &lt;span style="font-family:courier new,courier,monospace;"&gt;App_Data&lt;/span&gt; folder of the target dashboard, with a well-known subfolders&amp;nbsp;structure (which I&amp;#39;ll document as soon as possible); extensor are mainly pieces of &lt;strong&gt;Razor&lt;/strong&gt;-enabled html, but thanks for some naming conventions in place they can also be blocks of javascript or css&lt;/li&gt;
	&lt;li&gt;
		when default.cshtml kicks in on the browser, it first does a call to a SignalR endpoint called &lt;span style="font-family:courier new,courier,monospace;"&gt;commands&lt;/span&gt;, which is bound to a &lt;a href="https://github.com/SignalR/SignalR/wiki/QuickStart-Persistent-Connections" target="_blank"&gt;persistent connection&lt;/a&gt; that looks for extensors, compiles them through &lt;strong&gt;RazorEngine&lt;/strong&gt;, caches them, and sends them back to the client&lt;/li&gt;
	&lt;li&gt;
		when the extensors are received, they are dynamically added to the DOM through jQuery&lt;/li&gt;
	&lt;li&gt;
		at this point the normal lifecycle starts, the SignalR hubs are initialized and Knockoutjs bindings are applied&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
	Why using a &lt;em&gt;persistent connection&lt;/em&gt;? As far as I know (and I might not know the whole story), SignalR initializes all the hubs at the same time with the call to the &lt;span style="font-family:courier new,courier,monospace;"&gt;start()&lt;/span&gt; javascript method, and at that moment all the javascript callbacks must have been already added to the client side hub counterparts, so that SignalR machinery can register them. This means that a plugin must have a chance to add its javascript pieces before hubs start. The only way to use SignalR before hubs are started is using a persistent connection, which is not related to hubs infrastructure and can be used beforehand. Sequencing asynchroous client-side callbacks in an appropriate way, I&amp;#39;ve been able to guarantee that extensors get added to the DOM before hubs kick in, and to ensure that Knockoutjs bindings are applied as the last step. This last detail is also important, because it allows us to enrich our view models before Knockoutjs starts running, therefore plugins can take full advantage of the MVVM infrastructure in place.&lt;/p&gt;
&lt;p&gt;
	This is been a very interesting pieces to build, and I could say more about it, but there one more piece that deserves more details now.&lt;/p&gt;
&lt;h2&gt;
	A new structure for the project&lt;/h2&gt;
&lt;p&gt;
	The plugins infrastructure brings several advantages, but in order for it to be effective the host must be of course unaware of any extension. This brought to my attention a problem that was already there since the beginning of the project, but whose importance became relevant just after these latest additions. ElmahR solution was made of a few libraries and a web application, which was setup to be up and running after a build with all the features enabled, and that was the way I arranged the solution because I wanted an easy and seamlessly way to deploy it to Appharbor, but this organization was also bringing some confusion to any people wanting to try themselves to setup an ElmahR dashboard for their infrastructure. &lt;a href="http://elmahr.apphb.com/" target="_blank"&gt;The demo application&lt;/a&gt; was playing both source and dashboard roles, and despite to some documentation I wrote I had the feeling that this was not enough clear. The plugins made this even worse, and a reorganization became necessary. Now the project contains 3 web applications:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		&lt;strong&gt;ElmahR&lt;/strong&gt;: this is a dashboard with minimal configuration, ready to use and with no unnecessary configuration bits, hardcoded plugins or fake parts&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;ElmahR.SampleSource&lt;/strong&gt;: this is a minimal web application which is there just to show how to raise errors and send them to a dashboard; it is already configured to talk to ElmahR dashboard just mentioned, making very easy to test things with no effort&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;ElmahR.Demo&lt;/strong&gt;: this is a more complex setup, it&amp;#39;s the dashboard hosted on Appharbor which is able to play as a set of sources and as an aggregating dashboard; its dependencies are declared directly inside the &lt;em&gt;csproj&lt;/em&gt;&amp;nbsp;file&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	When I say &lt;em&gt;project&lt;/em&gt;, I do not mean a C# project, or a web application project, but I mean the whole ElmahR work in a more general sense. In such a way, the project is composed by 3 web apps, a few libraries and 2 solutions, one called &lt;em&gt;ElmahR &lt;/em&gt;containing all the other pieces, and one called &lt;em&gt;Appharbor &lt;/em&gt;which is the one the gets deployed on Appharbor infrastructure thanks to some naming conventions in place, and which contains only one web application, &lt;strong&gt;ElmahR.Demo&lt;/strong&gt;. The project also contains all the bits necessary to build 2 Nuget packages, &lt;a href="https://nuget.org/packages/ElmahR.Elmah" target="_blank"&gt;one for the ElmahR.Elmah&lt;/a&gt; assembly which exposed the &lt;strong&gt;ErrorPostModule&lt;/strong&gt;, and &lt;a href="https://nuget.org/packages/ElmahR.Appharbor" target="_blank"&gt;one for ElmahR.Appharbor&lt;/a&gt;. Both can be found in the Nuget Gallery.&lt;/p&gt;
&lt;h2&gt;
	Conclusions&lt;/h2&gt;
&lt;p&gt;
	In the next weeks I&amp;#39;ll try to write more formal documentation about all these things, for now what I want to say to close this long post is that it should be much easier for you to play with ElmahR code, and more straightforward to hack a repository clone for your need in your real infrastructure, and maybe to try to contribute back with interesting stuff. Just try and let me know :)&lt;/p&gt;
</description><pubDate>Sun, 01 Jul 2012 11:04:02 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/elmahr-and-appharbor-plugins-and-structure-review</guid></item><item><title>ElmahR 0.8.5 will be at aspConf!</title><link>http://www.robychechi.it:80/roby/elmahr-0.8.5-will-be-at-aspconf</link><description>&lt;p&gt;
	Last time I blogged about &lt;a href="https://bitbucket.org/wasp/elmahr/overview" target="_blank"&gt;ElmahR&lt;/a&gt; progress was less that 2 weeks ago, but to me it seemed much more than that, probably because I worked a lot on it, and amount of things I did made me feel those days have been longer. Most of the work I did has been &amp;#39;behind the scenes&amp;#39; stuff, reorganizing projects and files in order to make room to new things, so if you will give it a try you will not notice big changes, but still there are a couple of new features, and the new structure will help a lot to build more of them.&lt;/p&gt;
&lt;p&gt;
	But before going into details, I have to tell you that I&amp;#39;m really excited because &lt;a href="http://www.aspconf.net/speakers" target="_blank"&gt;I&amp;#39;ve been accepted as a speaker for the next aspConf&lt;/a&gt;! I&amp;#39;ll be talking about ElmahR of course, but not because the project itself is really relevant, but because it&amp;#39;s been a very interesting and challenging playground where to learn and experiment about what the ASP.NET platform and the web Open Source world give us today to build (hopefully) great and cool applications. If you feel you have a good idea, there is a lot of great stuff out there you can use to make it real, in my talk I&amp;#39;ll try to expand on this showing those pieces in action inside ElmahR. It will be my first time as a speaker in a conference (and this is a BIG one), and I&amp;#39;ll be surrounded by awesome speakers, I hope I won&amp;#39;t be too bad. No pressure :) For more details go to &lt;a href="http://www.aspconf.net/" target="_blank"&gt;the aspConf web site&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
	Appharbor integration&lt;/h2&gt;
&lt;p&gt;
	&lt;a href="http://elmahr.apphb.com" target="_blank"&gt;ElmahR is hosted on Appharbor infrastructure&lt;/a&gt;, which since the very first days has revealed as a very good place where to easily deploy it. Reading stuff about Appharbor platform I came to know a little more about their HTTP API, and one of the things I read made me think that I could build some more direct integration with their platform. ElmahR is about monitoring errors, and an errors normally implies building a solution for them and deploying it. Therefore I began finding interesting the way Appharbor allows you to configure a &amp;#39;service hook&amp;#39; in your monitored application, in order to post info about how a build went when triggered. This way a dashboard user would know that a new version of the buggy app is available, and would therefore monitored it with different eyes :)&lt;/p&gt;
&lt;p&gt;
	Looking at Appharbor docs it&amp;#39;s been quite easy to build such a functionality, and now ElmahR supports this feature. Whenever your monitored application is hosted on Appharbor infrastructure, you can have the dashboard notified about build events related to that application, and have them displayed real-time inside the box associated to the source application. So far the implementation is quite basic, and most noticeable there is no persistence for build info events yet, but after some more code reorganization it should be quite easy to store them for future retrieval.&lt;/p&gt;
&lt;h2&gt;
	A plugin system, and related projects reorganization&lt;/h2&gt;
&lt;p&gt;
	ElmahR codebase it&amp;#39;s always been very simple, we always had just a web application and a .NET assembly where the ErrorPostModule lives. But during the last week I reorganized it in a slightly more complex, but more flexible structure. Now most of the code of ElmahR moved in an assembly called ElmahR.Core, including things like the SignalR hub or the persistence system.&lt;/p&gt;
&lt;p&gt;
	Why did I do this? I just told you about the Appharbor integration, that&amp;#39;s indeed a very interesting feature, but to be honest I worked on it because it was a (good) excuse to find a way to build a plugin system into ElmahR. I started writing the new functionality first, and then working on it to extract it out in a way that I could get to the point where that piece becomes totally isolated to the rest of ElmahR, and easily pluggable, maybe soon with a Nuget package. And, by the way, that&amp;#39;s the only way it would have made sense, having Appharbor related stuff hardcoded inside ElmahR would have been a too much strong statement, especially&amp;nbsp;&lt;span style="font-family: Tahoma, 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: 13px; font-style: normal; "&gt;if your hosting platform is different&lt;/span&gt;. Reorganizing the code base has been a first step towards that goal, and having isolated ElmahR.Core helped with it, and it will in general do for future pluggable features.&lt;/p&gt;
&lt;p&gt;
	I&amp;#39;ve been thinking a lot about how an ElmahR plugin should look like, and so far I identified 5 components:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		&lt;em&gt;server-side endpoint&lt;/em&gt;: a plugin might set up an endpoint where external system would send messages&lt;/li&gt;
	&lt;li&gt;
		&lt;em&gt;server-side hub&lt;/em&gt;: if the plugin is not about errors, it might need to deliver real-time communications about different type of messages, therefore a new type of SignalR hub might be necessary&lt;/li&gt;
	&lt;li&gt;
		&lt;em&gt;client-side logic&lt;/em&gt;: the plugin might need javascript code to do its job on the client&lt;/li&gt;
	&lt;li&gt;
		&lt;em&gt;client-side rendering&lt;/em&gt;: ElmahR is a visual dashboard, so quite likely a plugin will need to emit appropriate (and possibly Knockoutjs-integrated) HTML&lt;/li&gt;
	&lt;li&gt;
		&lt;em&gt;client-side resources&lt;/em&gt;: images, css... those will be needed too!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	Working on this vision, I refactored out most of the Appharbor stuff into a new assembly (ElmahR.Appharbor), containing a dedicated endpoint and a specific hub. I said &amp;#39;most of it&amp;#39; and not &amp;#39;everything&amp;#39; because the client-side stuff is still in the main ElmahR projects, but that&amp;#39;s just a matter of a more general reorganization of the whole solution, which is pending since a while and I&amp;#39;ll try to achieve soon. If we forget about this last tiny detail, the plugin system works just fine, and actually it&amp;#39;s been a very interesting piece to develop because it allowed me to learn more about SignalR, which in this context I used in a less conventional way: a content distribution system. Curious about this? Next time... :)&lt;/p&gt;
</description><pubDate>Mon, 25 Jun 2012 17:15:15 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/elmahr-0.8.5-will-be-at-aspconf</guid></item><item><title>ElmahR 0.7.5</title><link>http://www.robychechi.it:80/roby/elmahr-0.7.5</link><description>&lt;p&gt;
	ElmahR reached today 0.7.5, with more improvements in several areas. Let&amp;#39;s see them very briefly.&lt;/p&gt;
&lt;h2&gt;
	Settings Persistence&lt;/h2&gt;
&lt;p&gt;
	Now ElmahR is smarted and recognizes the current settings you have in place when you decide that you want to be remembered and tick the corresponding checkbox, while previous version was remembering only settings changed after ticking it. It also remembers about more things: as you might know you can reorder the application boxes as you like, now ElmahR records the positions you gave them and restores them when you reconnect. Persistence of error types status coming soon.&lt;/p&gt;
&lt;h2&gt;
	Connection status diagnostics&lt;/h2&gt;
&lt;p&gt;
	On the top right corner of your window you might notice messages appearing every now and then, those are giving feedback about things that SignalR does under the hood when dealing with connection glitches, those messages are there mainly for me for debugging purposes and to understand better what goes on, they should not get too much in your way.&lt;/p&gt;
&lt;h2&gt;
	SignalR groups, finally!&lt;/h2&gt;
&lt;p&gt;
	The latest version does a first network optimization thanks to &lt;a href="https://github.com/SignalR/SignalR" target="_blank"&gt;SignalR&lt;/a&gt; groups. This feature allowed me to represent each monitored application as a group of connections. Each client is added to the corresponding application group when he/she decides to observe it (&amp;#39;play&amp;#39; button in app boxes), or is removed from the group when the user is not interested in that app anymore (&amp;#39;pause&amp;#39; button). Those settings are recorded as already explained, and both this stateful info and the tracking of user&amp;#39;s current interactions with the dashboard allowed me to leverage SignalR groups, and send errors only to clients interested in observing the source applications. This could potentially save a lot of network bandwidth if monitored applications are a lot, and users selectively turn off uninteresting ones.&lt;/p&gt;
&lt;p&gt;
	What about how I implemented this feature? Has it been difficult? Absolutely not, I just read the &lt;a href="https://github.com/SignalR/SignalR/wiki/Hubs" target="_blank"&gt;SignalR docs&lt;/a&gt; about it and applied it in the right places, it&amp;#39;s been easy and quick to do :)&lt;/p&gt;
&lt;h2&gt;
	Test Exception&lt;/h2&gt;
&lt;p&gt;
	If you go to &lt;a href="http://elmahr.apphb.com" target="_blank"&gt;the demo website&lt;/a&gt; you will see nice skulls all over the place :) Each application can be enabled to raise &lt;a href="http://code.google.com/p/elmah/" target="_blank"&gt;ELMAH&lt;/a&gt; test exception, and when it is ElmahR shows a skull in the corresponding box, pressing it will issue a GET request for &lt;em&gt;elmah.axd/test&lt;/em&gt; back to the source, which is a documented way to ask ELMAH to raise a test exception inside the monitored application, exception that should then be posted back to the dashboard. It&amp;#39;s a useful way to test if things are configured correctly, if the exception does not popup you will know that something&amp;#39;s wrong with your setup.&lt;/p&gt;
&lt;h2&gt;
	Summary&lt;/h2&gt;
&lt;p&gt;
	Many things are happening around ElmahR, the project is doing good (and slow) progress, and the community is starting contributing back with concrete pieces, like the help I received from the &lt;a href="http://nuget.org/packages/ElmahR.Elmah" target="_blank"&gt;Nuget package&lt;/a&gt;, and feedback in form of feature requests or blog posts, like &lt;a href="http://gregorsuttie.com/2012/06/04/elmahr-elmah-fused-with-signalr/" target="_blank"&gt;the one&lt;/a&gt; from &lt;a href="https://twitter.com/#!/gsuttie" target="_blank"&gt;@gsuttie&lt;/a&gt; that today made it to &lt;a href="http://www.asp.net/community" target="_blank"&gt;the official ASP.NET community home page&lt;/a&gt;! Cool! :)&lt;/p&gt;
&lt;p&gt;
	But there&amp;#39;s still a lot to do... &lt;a href="https://bitbucket.org/wasp/elmahr" target="_blank"&gt;wanna help&lt;/a&gt;? :)&lt;/p&gt;
</description><pubDate>Wed, 13 Jun 2012 21:05:29 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/elmahr-0.7.5</guid></item><item><title>ElmahR has its Nuget package</title><link>http://www.robychechi.it:80/roby/elmahr-has-its-nuget-package</link><description>&lt;p&gt;
	As already mentioned, a few days ago &lt;a href="https://twitter.com/#!/gsuttie" target="_blank"&gt;@gsuttie&lt;/a&gt; offered his help in building &lt;a href="http://nuget.org/" target="_blank"&gt;Nuget&lt;/a&gt; packages for &lt;a href="https://bitbucket.org/wasp/elmahr" target="_blank"&gt;ElmahR&lt;/a&gt;. We discussed and agreed that the most meaningful place to start was a package to easily configure a source, and he did a good job coming out with a first version. But then I soon realized that it would have been much easier to have the process more integrated with ElmahR project itself, taking advantage of all the Nuget packaging features. So I took over the task and finalized it, and now &lt;a href="http://nuget.org/packages/ElmahR.Elmah" target="_blank"&gt;an &amp;#39;official&amp;#39; Nuget package&lt;/a&gt; is available!&lt;/p&gt;
&lt;p&gt;
	A few considerations:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;
		The package is called &lt;em&gt;&lt;strong&gt;ElmahR.Elmah&lt;/strong&gt;&lt;/em&gt;, and it helps you configuring a source, adding the necessary pieces to your web.config&lt;/li&gt;
	&lt;li&gt;
		ElmahR is still under development, and the same stands for the Nuget package, which has the same version number of the currently available binaries (0.7.2). The package might not be perfect, if you discover anything weird in it please let me know&lt;/li&gt;
	&lt;li&gt;
		The package manages the dependency on &lt;a href="http://code.google.com/p/elmah/" target="_blank"&gt;ELMAH&lt;/a&gt; through Nuget itself&lt;/li&gt;
	&lt;li&gt;
		This package does NOT help you to configure a dashboad instance, for that you&amp;#39;ll have to check the repository and start from there&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
	In order to implement things easily and consistently, I went through an overall reorganization of the project:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;
		The ElmahR.Elmah assembly, which was already there but mainly for technical reasons, now is a first citizen in the project because it absorbed the ErrorPostModule, which before was gently hosted by the&amp;nbsp;&lt;a href="http://code.google.com/p/elmah-sandbox/" target="_blank"&gt;Elmah Sandbox&lt;/a&gt; project. This change simplified the overall project maintenance and made easier to build a consistent Nuget package&lt;/li&gt;
	&lt;li&gt;
		I changed the .NET framework version of this assembly from 2.0 to 3.5, this way it will still work fine with ASP.NET 2.0 web site, but at the same time I&amp;#39;ve been able to take advantage of Linq while moving ErrorPostModule.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
	I&amp;#39;ll write more about it in the next few days, probably in the project &lt;a href="https://bitbucket.org/wasp/elmahr/wiki/Home" target="_blank"&gt;wiki&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
	Demo &lt;a href="http://elmahr.apphb.com/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
</description><pubDate>Wed, 06 Jun 2012 22:18:39 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/elmahr-has-its-nuget-package</guid></item><item><title>ElmahR persistence is evolving</title><link>http://www.robychechi.it:80/roby/elmahr-persistence-is-evolving</link><description>&lt;p&gt;
	Quick update about &lt;a href="https://bitbucket.org/wasp/elmahr/overview" target="_blank"&gt;ElmahR&lt;/a&gt;. After &lt;a href="http://www.robychechi.it/roby/tech-blog/elmahr-persistence-and-what-about-documentation" target="_blank"&gt;preparing the ground to support persistence&lt;/a&gt;, and building errors persistence on top of it, I went a step further, enabling a first draft of a simple &amp;#39;user settings&amp;#39; storage system. The functionality if really a basic one, what it does is just storing a guid in a persistent cookie, and using that guid to associate a bunch of setting to the current user and store them inside the same database used for errors persistence, provided the user activated the functionality ticking the corresponding option. The implementation itself is not really worth many words, what&amp;#39;s maybe more worth noting is the fact that this work is been the preparation for something more useful like profiling &amp;#39;real&amp;#39; users connecting to ElmahR through whatever authentication mechanism you&amp;#39;d want to use. In fact the idea here is to let user authentication as an external piece, letting implementors choose the most appropriate one or maybe even write their own ways to handle the problem, ElmahR will just leverage IIdentity interface and all the related concepts to store settings.&lt;/p&gt;
&lt;p&gt;
	At the time of this writing the system remembers for each user the status of each application feed, which can be &amp;#39;running&amp;#39; or &amp;#39;paused&amp;#39;. In the next steps it will remmeber more things, like the position of the application boxes on the left column or the status for the error types.&lt;/p&gt;
&lt;p&gt;
	There&amp;#39;s another interesting news, last week a parallel project about building a Nuget package for ElmahR source applications has been started thanks to &lt;a href="https://twitter.com/#!/gsuttie" target="_blank"&gt;@gsuttie&lt;/a&gt;, soon there will be goon news on that front too :)&lt;/p&gt;
&lt;p&gt;
	As usual, you can give ElmahR a try &lt;a href="http://elmahr.apphb.com" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
</description><pubDate>Mon, 04 Jun 2012 20:03:29 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/elmahr-persistence-is-evolving</guid></item><item><title>ElmahR persistence, and what about documentation?</title><link>http://www.robychechi.it:80/roby/elmahr-persistence-and-what-about-documentation</link><description>&lt;p&gt;
	My work on ElmahR is going on, during the last few days I&amp;#39;ve been adding useful features which I&amp;#39;ll describe here briefly. Then I&amp;#39;ll spend a few words about what&amp;#39;s going to become more and more important very soon: documentation.&lt;/p&gt;
&lt;h2&gt;
	Persistence&lt;/h2&gt;
&lt;p&gt;
	Up to version 0.6 ElmahR dashboard life cycle was strictly related the the web application life cycle itself. As soon as the server was starting receiving error notifications, it would just accumulate them in memory. New clients connecting would therefore be able to receive &amp;#39;old&amp;#39; errors only if still in memory on the server application. We all know that web applications can (and should) be recycled every now and then, that means that old errors can go away any moment. My idea about what ElmahR is has always been about a &amp;#39;realtime&amp;#39; notification system, but it&amp;#39;s true that a (short) historical time window can be useful, especially in the event of reconnections. We cannot trust the server application itself, so we need a system to recover historical errors. One way would be to go directly to the monitored applications, &lt;a href="http://code.google.com/p/elmah/" target="_blank"&gt;ELMAH&lt;/a&gt; gives us at least a couple of ways to look at old errors, so we could ask those details, but it&amp;#39;s true that most of the times those kind of endpoint could be secured and not easily availables. So I decided to go the other way, implementing a persistence mechanism on ElmahR side.&lt;/p&gt;
&lt;p&gt;
	The &amp;#39;in memory&amp;#39; persistence was already implemented as a specific &amp;#39;module&amp;#39;, so it&amp;#39;s been actually quite easy to build a new one persisting errors on a database table, which can be selected through configuration. To implemented I decided to go with Entity Framework, which is actually like using a bazooka to kill a mosquito :) I know that, the persistence here is really simple and it needs just one table with a bunch of columns, it would have been really easy to go with plain old ADO.NET or some simple data access library, so why use a fulll fledged ORM when I don&amp;#39;t really have &amp;#39;entities&amp;#39; to handle? I asked myself all those questions, but then I thought that this project is also a playground for me, and I was quite curious about using Code First and Migrations, so I gave them I try. It&amp;#39;s been really easy and quick to implement the data access and I had the persistence up and running in a couple of hours, so I&amp;#39;m happy with my choice so far, knowing that there&amp;#39;s always time to adapt this piece to another strategy.&lt;/p&gt;
&lt;p&gt;
	Persistence actually helped to improve an already, but still quite new, existing feature which allows a user to ask for older errors on demand. On first connection ElmahR sends the last 25 errors he received, and the user can decide to ask for older errors, again in chunks of 25 messages. The previous &amp;#39;volatile&amp;#39; persistence mechanism was not consistent across multiple connections, but now with more &amp;#39;stable&amp;#39; historical data this feature works much better. Just scroll the page down to the bottom of the main errors feed and you will see how to ask for older errors. Check it out &lt;a href="http://elmahr.apphb.com/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
	Documentation&lt;/h2&gt;
&lt;p&gt;
	So we&amp;#39;ve reach version 0.7, there are still a lot of things to do but what&amp;#39;s there starts being quite solid, with a number of features that I think makes ElmahR worth a try. What&amp;#39;s really missing now is some more consistent documentation to actually implement a solution based on ElmahR. I&amp;#39;ve been blogging quite a lot about it, describing technical aspects of the project and showing configuration samples, but those info are not really organized in a way a user can easily and quickly go through them and figure out what&amp;#39;s needed in order to have ElmahR up and running with no pain. So that&amp;#39;s my next step, write some simple and straightforward docs to help you out there using ElmahR along with your applications. Stay tuned here and &lt;a href="https://bitbucket.org/wasp/elmahr/wiki/Home" target="_blank"&gt;on the repo&lt;/a&gt; :)&lt;/p&gt;
</description><pubDate>Tue, 22 May 2012 20:27:04 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/elmahr-persistence-and-what-about-documentation</guid></item><item><title>Upgrading ElmahR to SignalR 0.5</title><link>http://www.robychechi.it:80/roby/elmahr-and-signalr-upgrade-to-0.5</link><description>&lt;p&gt;
	During the last two weeks I&amp;#39;ve been quite busy at work, so I haven&amp;#39;t got many chances to go on implementing new on &lt;a href="https://bitbucket.org/wasp/elmahr/overview" target="_blank"&gt;ElmahR&lt;/a&gt;, I&amp;#39;ve been just able to dedicate small time slices to the project and I used them to do mostly housekeeping. One of the things I did was to upgrade &lt;a href="https://github.com/SignalR/SignalR" target="_blank"&gt;SignalR&lt;/a&gt; to version 0.5. SignalR is evolving quite fast so I wanted to keep in sync with it, I already knew that I would have had to fix a couple of things in my code because of breaking changes that 0.5 introduced, but those have been very easy. Everything was working fine so I deployed it on &lt;a href="http://elmahr.apphb.com/" target="_blank"&gt;the demo site&lt;/a&gt;, but there something unexpected started to happen, the error feeds started getting filled by a recurring exception saying that &lt;em&gt;&amp;#39;ElmahR.ElmahRHub&amp;#39; hub could not be resolved&lt;/em&gt;. I immediately thought that something must have changed in SignalR, and that someone around the world was having a browser window open and pointing at the demo, but because that window was using an older version of SignalR javascript pieces the server was not able to understand those &amp;#39;pollings&amp;#39;, and therefore it started raising an &lt;span style="font-family:courier new,courier,monospace;"&gt;InvalidOperationException&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;
	It was already late night, so I just thought &amp;quot;those browser windows will be closed soon&amp;quot; and I did not worry that much, I just twitted about the new version and I went to bed. But the day after the errors were still popping up, and at a higher frequency, and every time I was connecting to check I could observe those exceptions bloating the error feeds.&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://weblogs.asp.net/davidfowler/" target="_blank"&gt;David Fowler&lt;/a&gt; from SignalR team noticed it too and immediately pointed me at the problem, they effectively changed something in the SignalR protocol and so far there is no versioning mechanism for that, but they should work on that piece for the next versions. That is good news of course, but I still had the problem. I was really thinking that it wouldn&amp;#39;t have last that much, but it&amp;#39;s been a surprise to see how many people around have been using, and still use, the demo website to see how the project goes :) The bad part of this is that many of them are returning visitors with cached versions of the SignalR &amp;#39;end point&amp;#39;, making the application raise those exceptions.&lt;/p&gt;
&lt;p&gt;
	The first thing I thought I could do to minimize the problem was to add an &lt;a href="http://code.google.com/p/elmah/" target="_blank"&gt;ELMAH&lt;/a&gt; filter to trap and discard those specific errors, but then I realized that another approach was probably more suitable to this case. If &amp;#39;old&amp;#39; clients are connecting, I would really want to opt them out, so what I thought I might do was to &amp;#39;cut&amp;#39; their path to the demo. When you use the hubs from SignalR, you must reference a dynamically generated javascript piece at &lt;span style="font-family:courier new,courier,monospace;"&gt;signalr/hubs&lt;/span&gt;, but luckily since 0.5 of SignalR this path is customizable. So I decided to add myself the piece SignalR is still missing: protocol versioning, through the end point. How? Easy, I just customized the path to be&amp;nbsp;&lt;span style="font-family:courier new,courier,monospace;"&gt;signalr&lt;span style="color:#ff0000;"&gt;05&lt;/span&gt;/hubs&lt;/span&gt;. To achieve it I just had to do 2 things:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
		go to &lt;span style="font-family:courier new,courier,monospace;"&gt;global.asax.cs&lt;/span&gt;, and in the &lt;span style="font-family:courier new,courier,monospace;"&gt;Application_Start&lt;/span&gt; handler add a route like this:
		&lt;pre class="brush: csharp"&gt;
RouteTable.Routes.MapHubs(&amp;quot;~/signalr05&amp;quot;);&lt;/pre&gt;
	&lt;/li&gt;
	&lt;li&gt;
		change the references (just 1 place actually)&amp;nbsp;to the dynamic javascript path with the new one (&lt;span style="font-family:courier new,courier,monospace;"&gt;&amp;#39;signalr05/hubs&amp;#39;&lt;/span&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	Now the demo works fine again, the errors have disappeared and the &amp;#39;old&amp;#39; clients are blocked but they will work again as soon as they refresh the web page. This problem will be probably solved in future versions of SignalR, but for now this is a quick, clean and easy way to work around it. If you are planning to upgrade SignalR to 0.5 you may find this fix useful.&lt;/p&gt;
</description><pubDate>Wed, 16 May 2012 20:42:07 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/elmahr-and-signalr-upgrade-to-0.5</guid></item><item><title>ElmahR v0.6</title><link>http://www.robychechi.it:80/roby/elmahr-v0.6</link><description>&lt;p&gt;
	ElmahR reached v0.6, and a lot of improvements happened since previous version, most of them on the UI. Finally we had time to concentrate on the visual aspects of the dashboard, trying to come up with something more reactive, better at bringing the right information and at scaling along with the number of monitored applications. This last issue has been worrying us the most, it&amp;#39;s not easy to accomodate the potentially quite big volume of info that ElmahR handles. We let ourselves be inspired by &lt;a href="https://twitter.com/" target="_blank"&gt;Twitter&lt;/a&gt; web site user experience, and we took advantage of the &lt;a href="http://twitter.github.com/bootstrap/" target="_blank"&gt;Twitter bootstrap&lt;/a&gt; framework to build a responsive layout. It is a very interesting framework, it allowed us to greatly improve how the dashboard looks like, and now we have better support of different form factors and browsers. Now IE9 is well supported too, while we still have problems with older versions, we&amp;#39;ll try to target IE7 and IE8 in next iterations. Twitter bootstrap is quite simple, but it can also help deliver sophisticated UIs and to do that it can get pretty complex. We cannot really say we understood everything of it, but we also wanted to deliver soon, so we found a quite good and quick compromise analyzing a sample application and modifying it to our needs. You might notice it in the css files, one of them is still quite &amp;#39;in progress&amp;#39; and it also contains stuff coming from the original sample and that we do not really use, but it&amp;#39;s like that because we&amp;#39;ll try to understand more of it in the next days.&lt;/p&gt;
&lt;p&gt;
	Should you try &lt;a href="http://elmahr.apphb.com/" target="_blank"&gt;the demo web site&lt;/a&gt;, you will notice that we have a &lt;a href="http://en.wikipedia.org/wiki/Responsive_Web_Design" target="_blank"&gt;responsive layout&lt;/a&gt;, normally composed of 3 columns which collapse to just 1 when the available width goes below a certain limit, as it happens on a phone. The first columns is composed by summary boxes. The first box shows overall info like the total number of errors, info about the latest error and the name of the application which raised it. The remaining boxes are similar, but specific for each monitored application. Those app-specific boxes are sortable by dragging and dropping them, they can be expanded to show the errors belonging to each of them, and the relative error feeds can be paused or resumed. The second column is a global feed where all the errors are stacked up, the newest ones being on the top, this column let the user know about the latest errors occurred at a glance. Each error is expandable to see full details in a popup, which is disabled when the dashboard runs on small form factors because we&amp;#39;re still looking for a better way to show details on those kind of devices. The third column is intended to host additional pieces, so far we built 2 statistical &amp;#39;plugins&amp;#39; which should be considered samples about how to build such extensions, this area still needs more exploration but it&amp;#39;s working quite fine and could be already leveraged to augment the info ElmahR gives to its users.&lt;/p&gt;
&lt;p&gt;
	With this release we&amp;#39;ll leave the UI alone for a while, and the efforts will move to the server side. There are a lot of interesting &lt;a href="https://github.com/SignalR/SignalR" target="_blank"&gt;SignalR&lt;/a&gt; features that could be used to improve ElmahR efficiency, the most notable being &amp;#39;groups&amp;#39;, so part of the energies will be allocated to further investigation on this amazing library. The new UI introduced a few new usage &amp;#39;idioms&amp;#39; that would take advantage of some server side improvements, like user profiling and smarter errors buffering, so these will be the areas where most of the work will be done in the next few weeks. I&amp;#39;ll also try to blog more about the work process and the concrete code, I admit I&amp;#39;d like to have ElmahR evolve in a way that people would consider it a &amp;#39;good sample app&amp;#39; for libraries like &lt;a href="http://code.google.com/p/elmah/" target="_blank"&gt;ELMAH&lt;/a&gt;, SignalR or &lt;a href="http://knockoutjs.com/" target="_blank"&gt;Knockoutjs&lt;/a&gt;. I cannot say when (and if) this goal will be reached, if some of you guys out there &lt;a href="https://bitbucket.org/wasp/elmahr/wiki/Home" target="_blank"&gt;want to help me&lt;/a&gt; in this effort (even simple advices or suggestions are very welcomed) I&amp;#39;d be glad to try with you :)&lt;/p&gt;
</description><pubDate>Wed, 02 May 2012 18:52:14 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/elmahr-v0.6</guid></item><item><title>People like ElmahR!</title><link>http://www.robychechi.it:80/roby/people-like-elmahr</link><description>&lt;p&gt;
	Yesterday I blogged and twitted about &lt;a href="http://www.robychechi.it/roby/tech-blog/elmahr-v0.5" target="_blank"&gt;the v0.5 release of ElmahR&lt;/a&gt;, and after a few retweets an amazing sequence of interactions started to happen! In the last 24 hours I received many retweets, new Twitter followers appeared and my tweet has been favorite by several people. The &lt;a href="http://elmahr.apphb.com/" target="_blank"&gt;demo web site&lt;/a&gt; received hundreds of simulated errors (which actually helped me to spot at least 2 bugs :) ), my blog post has been visited by more than 400 unique visitors, and &lt;a href="https://bitbucket.org/wasp/elmahr" target="_blank"&gt;ElmahR repository&lt;/a&gt; has 4 new followers. And there&amp;#39;s more, I became member of the &lt;a href="https://twitter.com/#!/W3Max/software-development" target="_blank"&gt;Software Development&lt;/a&gt; list, and today ElmahR was on the home page of &lt;a href="http://blog.cwa.me.uk/2012/04/17/the-morning-brew-1086/" target="_blank"&gt;The Morning Brew&lt;/a&gt;, and in a very good company indeed! Those are not particularly big numbers for most of you, of course, but for me they are :)&lt;/p&gt;
&lt;p&gt;
	I&amp;#39;m pleasantly surprised by the reception that ElmahR has been given by the community, I had the feeling that it was an interesting idea when I first developed it, but it&amp;#39;s only after such reactions that I realized all the work done so far has been worthwhile. This of course raises the expectations, and now I cannot really screw it up :) I&amp;#39;ll do my best to do the right moves now in order to deliver the value which such a tool is supposed to give. At the same time I would really like to make ElmahR a project driven by the community, and contributions would be really welcome. In the next days I&amp;#39;ll try to go on implementing stuff and refining the UI, at the same time I&amp;#39;ll be working on a clear enough roadmap, and I&amp;#39;ll be trying to identify the steps, the procedures and the tools which would help in making ElmahR a community project. It&amp;#39;s all new to me, but I&amp;#39;ll try to do my best.&lt;/p&gt;
&lt;p&gt;
	So, see you soon :)&lt;/p&gt;
</description><pubDate>Tue, 17 Apr 2012 20:11:50 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/people-like-elmahr</guid></item><item><title>ElmahR v0.5</title><link>http://www.robychechi.it:80/roby/elmahr-v0.5</link><description>&lt;p&gt;
	ElmahR v0.5 has just been pushed on the &lt;a href="http://elmahr.apphb.com/" target="_blank"&gt;demo site&lt;/a&gt; and in the &lt;a href="https://bitbucket.org/wasp/elmahr" target="_blank"&gt;source repository&lt;/a&gt;. A global errors feed has been added, and now the applications resume shows for each source what the last error has been and how many errors have been raised.&lt;/p&gt;
&lt;p&gt;
	The amount of information starts getting big, and potential UI scalability problems are clear, so this release has been an intermediate step towards a new layout. This will be the next step, a more Twitter-like applications, I&amp;#39;ll blog about it in details when ready (hoping to get there in a couple of weeks...).&lt;/p&gt;
</description><pubDate>Mon, 16 Apr 2012 20:55:17 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/elmahr-v0.5</guid></item><item><title>ElmahR v0.3</title><link>http://www.robychechi.it:80/roby/elmahr-v0.3</link><description>&lt;p&gt;
	Short post, I just pushed v0.3 of &lt;a href="http://elmahr.apphb.com/" target="_blank"&gt;ElmahR&lt;/a&gt; in the &lt;a href="https://bitbucket.org/wasp/elmahr" target="_blank"&gt;source repository&lt;/a&gt;. This release has been about Javascript cleanup, making code much more modular and with a draft plugin structure. I also update &lt;a href="http://jquery.com/" target="_blank"&gt;jQuery&lt;/a&gt; to 1.7.1, and introduced &lt;a href="http://requirejs.org/" target="_blank"&gt;RequireJS&lt;/a&gt; for handling dependencies, but so far I just played with it and it&amp;#39;s not yet used, this will happen in the next days along with some UI improvements. After that I&amp;#39;ll improve the HTTP traffic between client and server, adding more but optimized roundtrips, and then I&amp;#39;ll move to work on the server side of the system.&lt;/p&gt;
</description><pubDate>Thu, 22 Mar 2012 23:10:06 GMT</pubDate><guid isPermaLink="true">http://www.robychechi.it:80/roby/elmahr-v0.3</guid></item></channel></rss>