December 2009

Monthly Archive

The Morning Brew - Review of the Year 2009

Posted by Chris Alcock on 31 Dec 2009 | Tagged as: Morning Brew

Its that time of year again where all good (and not so good) bloggers look back over the past year, and I’m no different.

Website and Feed Traffic

2009 was The Morning Brew’s second year of publication, and it started well. The 2008 year in review post was well received by the community and inbound traffic was noticeable higher around New Years Day as as result of that. For the year of 2009 The Morning Brew saw 142000+ visits to the website, along with a lot more people reading from the comfort of their RSS Reader. The traffic for the year grew as the year progressed, with a few notable jumps in traffic.

Morning Brew Traffic 2009

The first major traffic jump was in early June, and was linked to Scott Mitchell including The Morning Brew in his MSDN Magazine Toolbox Column for that month. Arround that time The Morning Brew was also mentioned By Scott Hanselman in his Bytes by MSDN video interview which helped make this the biggest surge in traffic this year. The next traffic jump came in mid July when Scott Hanselman mentioned The Morning Brew once again, this time in a Tweet. Scott further honoured The Brew in early September when he included it in his 2009 Ultimate Developer and Power Users Tool List for Windows in the Websites section. As you can see from the graph above this has continued to provide inbound traffic ever since.

The final traffic surge of the year was of my own creation, as The Morning Brew turned 500 editions old in mid December. This resulted in a great many people Tweeting and blogging about The Brew, which helped us end on a high just before the Christmas traffic slump.

The Morning Brew - Daily .NET News and Views In the 500th Edition I included instructions for how you can get a ‘Reader of’ or ‘Contributor to’ badge for your blog which will link back here, hopefully increasing traffic further in 2010.

Of the people visiting the website, the most exciting statistics involve the break down of new and returning visitors. From the graph below it can be seen that the largest number of visitors are those who have been here before.
New vs Returning Vistors 2009

Two other encouraging facts about returning visitors is the frequency of their visits and the number of visits. It would seem that you, dear reader, are very regularly re-visiting the website for your daily hit of .NET News, as seen in the following two breakdowns:

Number of Visits per Visitor

Time since last visit 2009

During 2009 Feed Reader traffic grew from a start just below 2000 readers, touching 5000 readers in the final weeks of December. The growth in subscribers is mostly down to natural growth with a few major jumps which fit with the events outlined above.
Subscribers to The Morning Brew 2009

The Content

This year The Morning Brew has contained (approximately) 3750 links to blog posts and articles. This number is approximate as I only have machine readable record going back to the start February 2009 after the bookmarking site Ma.gnolia suffered a major outage in late January taking all the links used in January with it. This means that the rest of this analysis is based on 11 months of data rather than the full 12.

As regular readers will know, the Links in The Morning Brew are broken into three regular categories, Software, Information and Community, with occasional special sections for major events coverage. The break down of links this year looks something like:

Link Category Breakdown 2009

These links are pulled from around 500 RSS subscriptions to blogs and aggregated feeds which I monitor daily. These feeds will have contained just over 120,000 posts over the past 12 months, all of which I’ve seen and considered for inclusion. Once again, the number of distinct blogs which have featured is high, with some 500+ blogging sites linked to this year, and over 1000 distinct blogs linked to this year. Once again, I would like to think that The Morning Brew has captured the ‘long tail’ of the .NET world as show below:
The Long Tail 2009 - Blogs against posts taken from them

The high spike on the end is made up of a few large blogging sites such as blogs.msdn.com, weblogs.asp.net, CodeBetter.com, LosTechies.com, etc.

This years top 20 most regularly featured bloggers are:

  1. Oren Eini AKA Ayende with 116 links
  2. Phil Haack with 63 links
  3. Davy Brion with 61 links
  4. Mark Needham with 52 links
  5. Eric Lippert with 51 links
  6. Mathew Podwysocki with 48 links
  7. Jimmy Boggard with 41 links
  8. Brad Abrams with 39 links
  9. Scott Hanselman with 39 links
  10. Greg Duncan with 36 links
  11. Miguel de Icaza with 35 links
  12. Scott Guthrie with 31 links
  13. K. Scott Allen with 31 links
  14. Justin Etheredge with 29 links
  15. Eric Nelson with 27 links
  16. Jak Charlton with 26 links
  17. Jeffrey Palermo with 26 links
  18. Rick Strahl with 23 links
  19. Rob Conery with 23 links
  20. Mike Ormond with 22 links
  21. Bertrand Le Roy with 22 links

(OK so there are 21 there, but its only fair since the last two were tied in 22 links)

This year’s Aggregated site leader board looks like:

  1. blogs.msdn.com with 732 links
  2. weblogs.asp.net with 235 links
  3. www.lostechies.com with 172 links
  4. geekswithblogs.net with 146 links
  5. codebetter.com with 141 links
  6. devlicio.us with 115 links
  7. www.codeproject.com with 92 links
  8. elegantcode.com with 49 links
  9. ajaxian.com with 22 links
  10. dotnetslackers.com with 22 links

Some of the key topics that have been covered this year include:

Key Topics 2009
links-per-day 2009
On average the number of links included in The Morning Brew every day has increased over the year, with the busiest week being PDC 2009 in November (as shown by the 5 day rolling average - the black line). The two other biggest peaks are 20th October when beta 2 of Visual Studio 2010 and .NET 4 was released, and 14th April which was after the 4 day Easter Weekend.

The Final Word

All that remains for this year is for me to thank you the readers of The Morning Brew for your continued readership, everyone whose fine technical content has been included in these posts over the past year (don’t forget to get your Contributors badge)- without you folks there would be no Morning Brew.

The Morning Brew will return on Monday 4th January 2010 where we can start this all over again!

Best wishes for 2010!

Other 2009 Review posts:

The Morning Brew #508

Posted by Chris Alcock on 31 Dec 2009 | Tagged as: .NET, Development, Morning Brew

Software

  • jQuery UI 1.8a2 - The jQuery UI team announce the second preview (alpha) release of jQuery UI 1.8. This release adds a new effect (fade), along with restructuring the source file structure to reflect how other jQuery Plugins are structured. There are also numerous small changes outlined in the changelog.

Information

  • Much Ado About Monads - State Edition - Matthew Podwysocki, inspired by re-reading Chris Smith’s Programming F# book, takes a look at the state monad considering the use of it in an example web scripting library.
  • .NET Developer Basics - Recursive Algorithms - Damon Armstrong takes a nice back to basics look at recursive algorithms, looking at the various types, giving some advice on designing recursive algorithms and illustrating with a worked example for calculating factorials.
  • Rich Assertion Messages using CCI (and without expression trees) - Jonathan "Peli" de Halleux takes a look at the Common Compiler Infrastructure (CCI) showing how it can provide a nice way of rewriting assemblies at compile time using the CciSharp post compiler to enhance the simple assert.
  • Dynamic types and ASP.NET MVC - Hadi Hariri shows how simply you can use dyanmic objects in .NET 4 as the ViewModel in your ASP.NET MVC2, and how with ReSharper you even get intelisense.
  • Multiple ModelMetadata Provider support added to ASP.NET MVC Extensibility - Kazi Manzur Rashid discusses his Multiple ModelMetadata Provider implementation which is now included in his System.Web.Mvc.Extensibility library, allowing different modules of your system to use different ModelMetadataProviders and have the application understand all of them.
  • Using AutoMapper’s Custom Formatters - ‘Leftend’ takes a quick look at AutoMapper and shows how the custom formatter support allows you to manipulate the data being mapped during the mapping process.
  • Why MVC Turbine? - Javier G. Lozano answers Rob Conery’s question about the purpose of his ASP.NET MVC Turbine project, giving a nice explanation of the core features of the library which provide IOC/DI framework support and plumbing for all the common ASP.NET MVC types.
  • How To: Turn off Strong Name Validation - Syed Aslam Basha shares the steps involved in removing Srong Name Validation from an assembly using some command line switches of the SN command line tool.
  • Dynamic Lambda Expressions Don’t Use Name Lookup Rules - Paul Kimmel looks the relationship between lambda expressions and expression trees, and talks about a rather unhelpful error message which can occur because of the way lambda expressions are language independent
  • ASP.NET MVC 2 and why Dynamic Area is not supported - Kazi Manzur Rashid looks into the ASP.NET MVC source code and discovers why it is that Dynamic Areas are not possible in ASP.NET MVC 2 as things stand.

The Morning Brew #507

Posted by Chris Alcock on 30 Dec 2009 | Tagged as: .NET, Development, Morning Brew

Software

Information

The Morning Brew #506

Posted by Chris Alcock on 29 Dec 2009 | Tagged as: .NET, Development, Morning Brew

Looks like the .NET world has been busy over the Christmas break…

Software

  • Now Available: Visual Studio 2010 Beta 2 Virtual Machines with Sample Data - Brian Keller highlights updated Visual Studio 2010 Beta 2 virtual machines for HyperV, Virtual PC 2007 and Windows 7 Virtual PC. Also available are virtual machine instances of Visual Studio Team Foundation Server 2010 Beta 2.
  • Introducing MarkdownSharp - Jeff Atwood announces the release of MarkDownSharp, a C# server side implementation of the MarkDown markup language under an open source license
  • Json.NET 3.5 Release 6 Binary JSON (BSON) support - James Newton-King announces the latest release of Json.NET 3.5, bringing support for reading and writing Binary JSON format data, removing dependency on the Entity Framework, automatic serialization of DataSets and DataTables, along with improved FAQ documentation
  • SharpTestsEx 1.0.0Beta : Satisfy your test - Fabio Maulo announces the release of SharpTestsEx 1.0.0 Beta. SharpTestsEx aims to bring a set of extensible extensions to testing which allow assertions to be written in a concise expressive manner using IDE intellisense as a guide using a fluent interface.

Information

Community

  • The cloud silver bullet - ThoughtWorks kick off their 2010 Manchester GeekNights events series with Chris Read talking about cloud computing, and event to be held in Manchester UK on 21st January 2010. These ThoughtWorks events are a great way to meet developers from right across the technical spectrum

The Morning Brew #505

Posted by Chris Alcock on 24 Dec 2009 | Tagged as: .NET, Development, Morning Brew

The Morning Brew Christmas Holiday Posting Schedule

As regular readers know, The Morning Brew is published every week day with the exception of UK public holidays. As we are entering the Christmas Holiday period posting will be a little patch (as there are quite a few public holidays, some occurring on unusual days due to holiday days falling at the weekend). I thought it would be useful to outline when you can expect editions of the next week or so:

  • Thursday 24th December 2009 - Normal post
  • Friday 25th December 2009 - No post, Christmas Day
  • Saturday 26th December 2009 - No Post
  • Sunday 27th December 2009 - No Post
  • Monday 28th December 2009 - No Post, Boxing day stand-in holiday
  • Tuesday 29th December 2009 - Normal post, although likely to be later in the day than usual
  • Wednesday 30th December 2009- Normal post, although likely to be later in the day than usual
  • Thursday 31st December 2009- 2009 Wrap Up Post
  • Friday 1st January 2010 - No Post - New Years Day
  • Saturday 2nd January 2010 - No Post
  • Sunday 3rd January 2010 - No Post
  • Monday 4th January 2010 - Normal Posting Resumes

Best wishes to all The Morning Brew’s Readers, and Contributors for the Christmas Holidays!

Software

  • ReSharper 5.0 Beta Comes Out - JetBrains announce the Beta release of ReSharper 5.0 which operates with Visual Studio 2008 and 2010. This is a beta release, so if you do try it out please report any issues you find back to the folks at JetBrains so they can get them fixed before the final release
  • Orderly JSON - Ajaxian highlights a project from Lloyd Hilaiel - a textual format to represent JSON objects which allows schema to be created in JSONSchema format

Information

  • Testing Agatha’s Caching Functionality With QuickNet - Davy Brion delves deeper into the tests he has written for Agatha’s caching layer which use QuickNet, along the way providing a good introduction to the capabilities of QuickNet and an understanding of how to use it.
  • Introducing Fluent MetadataProvider for ASP.NET MVC - Kazi Manzur Rashid announces a new feature for his System.Web.MVC.Extensibility project, a fluent interface which allows you to build the metadata model in code, adding to the attribute based approach some additional type checking to help ensure that what you write is correct, and also allowing you to inject dependencies
  • Creating Multiple Choice Exam Application Using ASP.NET MVC Framework - Mohammad Azam walks through the creation of a simple Multiple Choice Exam application using ASP.NET MVC with plenty of code to illustrate in the article and a download of the sample application.
  • Comments on Corey Haines’ String Calculator TDD Kata Implementation - A few months back Roy Osherove proposed a TDD Kata exercise for relating to strings, and in this post he provides some feedback on Corey Haines implementation of this Kata in Ruby (of which a full video is provided). Its always interesting to see TDD well done, and also interesting to see it in a less familiar language (to the average C#’er)
  • Deep Dive Into WCF Part 2: Serialization on the speed of light with Google Protocol Buffers - Alexey Zakharov looks at building High Performance RESTful web serices using ASP.NET MVC and the Google Protocol Buffers library. The article is accompanied by plenty of source illustrating the process of getting started with the C# port of protocol buffers
  • Swiss Cheese and WF4, or, An Introduction to ActivityAction - Matt Winkler takes a look at the new ActivityAction functionality of Windows Workflow 4, which allows for your Workflow to have custom logic bolted into specified ‘holes’
  • Castle Typed Factory Facility reborn - Krzysztof Kozmic looks at the idea behind a Typed Factory implementation, showing how you can implement it your self, and then introduces the re-introduced Typed Factory Facility which is a automatically created factory created by the IOC container but which does not require your consuming code to know about the container.
  • C# Support for Tuples - Miguel de Icaza posts some more proof of concept extensions for C# as a part of the Mono Project, in this post the use of Tuples, and how support for them could be included in numerous places in the framework
  • Specifications - Mark Nijhof shows his home brewed Specifications ‘Framework’ which backs onto NUnit and Moq. Mark runs through how the ‘framework’ is constructed in stages, showing a nice simple base class, and building on that to the full ‘framework’
  • Free C# Legacy Chapters - Jim Minatel shares some chapters from Wrox publishing books which are being cut from the latest editions of books as the feature areas of the language have not see significant development in the .NET 4 time frame, and are being cut (And made available for free) in order to free space for new chapters.
  • Exposing the View Model to JavaScript in ASP.NET MVC - Matt looks at three techniques for providing access to the View Model data in your ASP.NET MVC page’s JavaScript code.

The Morning Brew #504

Posted by Chris Alcock on 23 Dec 2009 | Tagged as: .NET, Development, Morning Brew

Software

Information

  • Cool Things to Do with Dynamics in dotNET 4 - Kevin Jones takes a look at some of the fun things that can be done using the new dynamic support in C#4 looking at how you can interact with the resolver which resolves calls on a dynamic object allowing you to provide methods at runtime with an example based on reading some XML.
  • Property Copying With Dynamic Objects in .NET 4.0 - Joel Holder also explores dynamic functionality with a look at creating an expando object which allows for setting property names at runtime allowing that object to copy properties from another object. This uses similar techniques to the previous post and serves as another good sample.
  • How QuickNet Found 2 Bugs That You And I Didn’t - Davy Brion talks about his use of the QuickNet Property based testing library in his test for his Agatha Project, and how it help uncover some bugs that he doubts would be found using other testing strategies.
  • [Video] Spark View Engine Part 2 - Mike Ormond shares the second part of his Video series on the Spark view engine for ASP.NET MVC, and promises part 3 in the new year
  • AutoMapper DSL design post-mortem - Jimmy Bogard talks about some of the things he wishes he had done differently in his AutoMapper project, looking at a few aspects of the way the DSL is constructed and the configurations created.
  • POCO Proxies Part 1 - Jeff Derstadt & Diego Vega of the Entity Framework Team start a 2 part series looking at the Proxy support in Entity Framework 4, and how the proxies allow for functionality such as lazy load to be added to the POCO class implementations.
  • My favorites .Net development toolkits - Dody Gunawinata shares an excelent link list to .NET Development Toolkits classified into various types, including but not limited to Scripting, database, serializers, Workflow, infrastructure, testing, etc. Some of them will be familiar, the rest look like they will be worth checking out.
  • Using RestSharp to consume RESTful Web Services - Michael Stum shows how the RestSharp library helps make consuming RESTful web services easier from C# illustrating with a simple example consuming a search serivce
  • How to mock extension methods - Daniel Cazzulino talks about how he organises his extension methods to avoid API explosion on root types, and shows how this can help in providing means of mocking the extension methods.
  • Guided Tour: jQuery - Array wannabes - Sergio Pereira continues his series of posts looking at the innards of the jQuery library with a look at some array based code.
  • Understanding The Application Controller Through Object Messaging Patterns - Derick Bailey looks at the relationship between code patterns and the messaging based equivalents, along with providing some help in deciding which to use. Sample applications code is also provided to further illustrate the ideas in this post
  • The Static Spider Web Pattern - Justin Etheredge takes a sarcastic look at a common (anti) pattern in application development where the whole application is based around static objects

The Morning Brew #503

Posted by Chris Alcock on 22 Dec 2009 | Tagged as: .NET, Development, Morning Brew

Information

  • Accelerator and F# (I.): Introduction and calculating PI - Tomáö Pet?í?ek takes a look at the Microsoft Research Accelerator project which is a C# library which allows array manipulations to be run on the GPU. In this article Tomáö looks at using the Accelerator library to speed up the calculation of an accurate value of Pi in F#, complete with source for the sample.
  • Views and Databases Donít Mix - Jason Dentler talks about the reasons to introduce a true ViewModel to avoid your views triggering unexpected database activity
  • A JavaScript Event Bus - Simon Ince shares a prototype implementation of an Event Bus in JavaScript which can be used to provide a means of loose coupling between JavaScript / AJAX components
  • [Video] Spark View Engine Part 1 - Mike Ormond continues his series of posts looking at the Spark View Engine with a Video version of the previous few posts in the series looking at replacing the standard View Engine with Spark.
  • 6 Of My Favorite Visual Studio Shortcuts - Hatim Rih shares his 6 favourite Visual Studio keyboard shortcuts and asks for your suggestions of other good ones in the comments (where a good list is starting to form)
  • Entity Framework troubleshooting and performance - Simon Sabin outlines his plans for a series of posts looking at the Entity Framework and its effects on the database when being used, along with how you can shape your usage to avoid bad queries
  • Making Sense of ASP.NET Paths - Rick Strahl gives a good summary of the various paths which are exposed by the .NET Framework in ASP.NET looking at their meanings, along with looking at resolving paths, and parsing URL paths
  • High CPU in .NET app using a static Generic.Dictionary - Tess Ferrandez talks about an investigation she did with the ASP.NET team looking at some High CPU usage in an application which worked with the Generic Dictionary held as a static refernce when the application was under high load, and explains how and why the problems were occurring
  • Which Profiling Mode Should I use? - ‘Daryush’ looks at the various profiling modes supported by the Visual Studio 2010 Profiler, looking at what each does, and where it is particularly useful.
  • Three-tier .NET Application Utilizing Three ORM Technologies. - Bryan Thomas Weikel shares an indepth article which looks at the use of the three most common ORM solutions (LINQ to SQL, Entity Framework, and NHibernate) in use in creating a WinForms application using a Three Tier architecture.
  • When using LINQ don’t forget about deferred execution - Mark Meyerovich reminds us that Deferred Execution of LINQ statements can result in some strange behaviour due to the way variables are captured by the statements
  • OR-ing criteria with NHibernate, or "How to include it all" - Kyle Baley looks at some of the more advanced querying support in NHibernate building searches for entities based on the entities contained in a few of their collections.
  • Effectus: Isolated features - Ayende has been posting a number of follow on posts which continue looking at the Effectus sample application which was created for his MSDN Magazine article. This post talks about the organisation of the implementation of features and how each feature is implemented in isolation. Be sure to check out the other posts around this one.
  • Using conventions with Passive View - Mark Nijhof picks up a theme from one of Ayende’s Effectus posts and talks about the conventions used in his Command Query Responsibility Separation Sample application

Community

  • CodeCampServer Call for Participation - Jeffrey Palermo issues a call for assistance with the CodeCampServer open source project for managing a usergroup’s events. The project team are looking for assistance with the maintenance of the project (recruiting usergroups, supporting the hosting environment, etc) and running a CssContrib project to contribute new ideas to the project. A great opportunity to get involved with a well known community project.

The Morning Brew #502

Posted by Chris Alcock on 21 Dec 2009 | Tagged as: .NET, Development, Morning Brew

Software

  • ASP Classic Compiler 0.6.0 released. It can run FMStocks 1.0 - Li Chen announces the release of Version 0.6 of the Classic ASP Compiler which takes Classic ASP code written in VBScript and runs it under the ASP.NET / CLR. This release is significant in that it runs the Fitch and Mather Stocks 1.0 sample application completely. Currently this requires a few minor modifications to the original, but even so, its pretty impressive stuff
  • Pex 0.20.v0.20.41218.2: Beavers, new Event View and bugs fixes - Jonathan "Peli" de Halleux announces the release of Pex 0.20. This release introduces Beavers’ which are models which build on Moles, adding behaviour to the mole. Thsi release also adds a global event view to Visual Studio allowing you to more easily see the outcome of your explorations. Thsi release also contains the usual bugfixes and improvements, along with a few breaking changes.
  • Agatha 1.0 - Davy Brion announces the 1.0 release ofAgatha, his Request Response Service Layer implementation. This release adds support for one-way requests to the framework, but other than that is the same as the 1.0 beta 2 release
  • Blogging code samples stays easy [Update to free ConvertClipboardRtfToHtmlText tool and source code for Visual Studio 2010!] - David Anson (AKA Delay) releases an update to his utility which converts from the Visual Studio Rich Text clipboard format into formatted HTML. This update now supports the current beta release of Visual Studio 2010 which uses a slightly different clipboard format.
  • Windows Azure AppFabric SDK v1.0 Released (Service Bus and Access Control) - Greg Duncan highlights the latest release of the Azure AppFabric SDK (V1.0). The SDK contains all the API’s nexessary for working with Azure, including the Service Bus and AppFabric Access Control functionality for WCF, and also includes numerous samples and sample applications covering the range of internet applications in use today.

Information

  • ASP.NET MVC 2 and Visual Studio 2010 - Phil Haack outlines the compatibility issues and limitations introduced between ASP.NET MVC 2 releases and Visual Studio 2010 beta releases, and shares his hopes that the VS2010 RC will be able to include the RC release of ASP.NET MVC 2
  • Passing anonymous objects to MVC views and accessing them using dynamic - David Ebbo shares a custom implementation of ViewPage which makes it possible to pass anonymous types through to the ASP.NET MVC View and work with them using the Dynamic support in .NET 4
  • Open Source Licensing, Copyright Notices, Contributions: What To Do? - Davy Brion discusses some of the issues involved actually applying an open source license to his work, and seeks community assistance with where the license boilerplate should be placed, and what it should contain.
  • Introducing FunctionalNHibernate - Robert Pickering introduces FunctionalNHibernate, an attempt to make working with NHibernate from F# easier, and to utilise some of the F# functionality such as quotation system in place of C# expression trees.
  • Adding a bit of Spark to Nerd Dinner - Mike Ormond continues his exploration of the Spark view engine with a look at introducing the Spark engine into the MVC Nerd Dinner Sample application
  • The Polyglot Tester - ‘Uncle’ Bob Martin argues for the idea of Polyglot’s in testing, meaning that testers are able to choose the best method of testing for the particular problem, Illustrated with some examples of where the Given-When-Then style testing is better replaced with a table based approach,
  • Trying MonoDevelop On OS X, Part Two - Davy Brion re-explores the idea of developing .NET on OSX with a look at the latest releases from the Mono Project
  • What Is The Difference Between an IoC Container and MEF? - Jak Charlton sets about looking at the differences between the Managed Extensibility Framework (MEF) and standard Inversion of Control (IOC) containers, looking at how MEF is an architectural decision which brings more to the table, where as IOC is a code level decisoin.
  • Logging Guidelines - Tom Czarniecki gives some guidelines as to what should be logged at the various logging levels provided by Log4Net (and many other logging frameworks)
  • C# String Interpolation - Miguel de Icaza discusses a proposed extension to Mono which will allow for easier string interpolation by using different string syntax. Interesting discussion in the comments

Next Page »