[{"data":1,"prerenderedAt":317},["ShallowReactive",2],{"i-feather:search":3,"i-feather:x":8,"i-feather:moon":10,"i-feather:sun":12,"i-lucide:house-heart":14,"i-fa-brands:youtube":16,"i-fa-brands:twitch":20,"i-fa-brands:github":22,"i-fa-brands:linkedin":25,"i-fa-brands:stack-overflow":28,"i-simple-icons:bluesky":31,"i-fa-brands:mastodon":33,"i-fa-regular:envelope":35,"i-fa-solid:rss":37,"tag-c":39},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"11\" cy=\"11\" r=\"8\"\u002F>\u003Cpath d=\"m21 21l-4.35-4.35\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M18 6L6 18M6 6l12 12\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":11},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M21 12.79A9 9 0 1 1 11.21 3A7 7 0 0 0 21 12.79\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":13},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"5\"\u002F>\u003Cpath d=\"M12 1v2m0 18v2M4.22 4.22l1.42 1.42m12.72 12.72l1.42 1.42M1 12h2m18 0h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":15},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M8.62 13.8A2.25 2.25 0 1 1 12 10.836a2.25 2.25 0 1 1 3.38 2.966l-2.626 2.856a.998.998 0 0 1-1.507 0z\"\u002F>\u003Cpath d=\"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":17,"height":18,"rotate":4,"vFlip":6,"hFlip":6,"body":19},576,512,"\u003Cpath fill=\"currentColor\" d=\"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597c-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821c11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305m-317.51 213.508V175.185l142.739 81.205z\"\u002F>",{"left":4,"top":4,"width":18,"height":18,"rotate":4,"vFlip":6,"hFlip":6,"body":21},"\u003Cpath fill=\"currentColor\" d=\"M391.17 103.47h-38.63v109.7h38.63ZM285 103h-38.63v109.75H285ZM120.83 0L24.31 91.42v329.16h115.83V512l96.53-91.42h77.25L487.69 256V0Zm328.24 237.75l-77.22 73.12h-77.24l-67.6 64v-64h-86.87V36.58h308.93Z\"\u002F>",{"left":4,"top":4,"width":23,"height":18,"rotate":4,"vFlip":6,"hFlip":6,"body":24},496,"\u003Cpath fill=\"currentColor\" d=\"M165.9 397.4c0 2-2.3 3.6-5.2 3.6c-3.3.3-5.6-1.3-5.6-3.6c0-2 2.3-3.6 5.2-3.6c3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9c2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9c.3 2 2.9 3.3 5.9 2.6c2.9-.7 4.9-2.6 4.6-4.6c-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2c12.8 2.3 17.3-5.6 17.3-12.1c0-6.2-.3-40.4-.3-61.4c0 0-70 15-84.7-29.8c0 0-11.4-29.1-27.8-36.6c0 0-22.9-15.7 1.6-15.4c0 0 24.9 2 38.6 25.8c21.9 38.6 58.6 27.5 72.9 20.9c2.3-16 8.8-27.1 16-33.7c-55.9-6.2-112.3-14.3-112.3-110.5c0-27.5 7.6-41.3 23.6-58.9c-2.6-6.5-11.1-33.3 2.6-67.9c20.9-6.5 69 27 69 27c20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27c13.7 34.7 5.2 61.4 2.6 67.9c16 17.7 25.8 31.5 25.8 58.9c0 96.5-58.9 104.2-114.8 110.5c9.2 7.9 17 22.9 17 46.4c0 33.7-.3 75.4-.3 83.6c0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252C496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2c1.6 1.6 3.9 2.3 5.2 1c1.3-1 1-3.3-.7-5.2c-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9c1.6 1 3.6.7 4.3-.7c.7-1.3-.3-2.9-2.3-3.9c-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2c2.3 2.3 5.2 2.6 6.5 1c1.3-1.3.7-4.3-1.3-6.2c-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2c-1.4-2.3-4-3.3-5.6-2\"\u002F>",{"left":4,"top":4,"width":26,"height":18,"rotate":4,"vFlip":6,"hFlip":6,"body":27},448,"\u003Cpath fill=\"currentColor\" d=\"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5c0 21.3-17.2 38.5-38.5 38.5m282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7c-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5c67.2 0 79.7 44.3 79.7 101.9z\"\u002F>",{"left":4,"top":4,"width":29,"height":18,"rotate":4,"vFlip":6,"hFlip":6,"body":30},384,"\u003Cpath fill=\"currentColor\" d=\"M290.7 311L95 269.7L86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8l153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24l119.3 160.3l32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":32},"\u003Cpath fill=\"currentColor\" d=\"M5.202 2.857C7.954 4.922 10.913 9.11 12 11.358c1.087-2.247 4.046-6.436 6.798-8.501C20.783 1.366 24 .213 24 3.883c0 .732-.42 6.156-.667 7.037c-.856 3.061-3.978 3.842-6.755 3.37c4.854.826 6.089 3.562 3.422 6.299c-5.065 5.196-7.28-1.304-7.847-2.97c-.104-.305-.152-.448-.153-.327c0-.121-.05.022-.153.327c-.568 1.666-2.782 8.166-7.847 2.97c-2.667-2.737-1.432-5.473 3.422-6.3c-2.777.473-5.899-.308-6.755-3.369C.42 10.04 0 4.615 0 3.883c0-3.67 3.217-2.517 5.202-1.026\"\u002F>",{"left":4,"top":4,"width":26,"height":18,"rotate":4,"vFlip":6,"hFlip":6,"body":34},"\u003Cpath fill=\"currentColor\" d=\"M433 179.11c0-97.2-63.71-125.7-63.71-125.7c-62.52-28.7-228.56-28.4-290.48 0c0 0-63.72 28.5-63.72 125.7c0 115.7-6.6 259.4 105.63 289.1c40.51 10.7 75.32 13 103.33 11.4c50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.5 102.5 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7c56.12-6.7 105-41.3 111.23-72.9c9.8-49.8 9-121.5 9-121.5m-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175c25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5l11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1c23.71 27.3 18.4 53 18.4 175z\"\u002F>",{"left":4,"top":4,"width":18,"height":18,"rotate":4,"vFlip":6,"hFlip":6,"body":36},"\u003Cpath fill=\"currentColor\" d=\"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48m0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49c-16.841 13.247-50.201 45.072-73.413 44.701c-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646c21.857 17.205 60.134 55.186 103.062 54.955c42.717.231 80.509-37.199 103.053-54.947c49.528-38.783 82.032-64.401 104.947-82.653V400z\"\u002F>",{"left":4,"top":4,"width":26,"height":18,"rotate":4,"vFlip":6,"hFlip":6,"body":38},"\u003Cpath fill=\"currentColor\" d=\"M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041s64.04 28.673 64.04 64.041m175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018c111.832 7.284 201.473 96.702 208.772 208.772c.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79m144.249.288C439.596 229.677 251.465 40.445 16.503 32.01C7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999c191.179 7.839 344.627 161.316 352.465 352.465c.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504\"\u002F>",{"title":40,"posts":41},"C#",[42,50,56,63,71,77,84,91,97,103,110,116,122,128,134,141,148,154,161,168,174,180,187,194,200,206,213,219,225,231,237,243,249,257,263,269,275,281,287,293,299,305,311],{"id":43,"title":44,"date":45,"dateModified":46,"timeToRead":47,"description":48,"permalink":49},"posts\u002Fposts\u002F2021\u002Fdotnet-boxed-visual-studio-integration\u002Findex.md",".NET Boxed Visual Studio Integration","2021-05-27T11:00:00+00:00",null,1,"You can now create .NET Boxed projects directly from Visual Studio. Here's a short post showing you how.","\u002Fdotnet-boxed-visual-studio-integration\u002F",{"id":51,"title":52,"date":53,"dateModified":46,"timeToRead":47,"description":54,"permalink":55},"posts\u002Fposts\u002F2018\u002Fasp-net-core-hidden-gem-queryhelpers\u002Findex.md","ASP.NET Core Hidden Gem - QueryHelpers","2018-07-14T00:00:00+00:00","How to build a URL containing dynamic query arguments using the ASP.NET Core QueryHelpers.AddQueryString method. A hidden gem in ASP.NET Core.","\u002Fasp-net-core-hidden-gem-queryhelpers\u002F",{"id":57,"title":58,"date":59,"dateModified":46,"timeToRead":60,"description":61,"permalink":62},"posts\u002Fposts\u002F2017\u002Fasp-net-core-caching-in-practice\u002Findex.md","ASP.NET Core Caching in Practice","2017-10-20T00:00:00+00:00",5,"How to use and implement Cache-Control, Cache-Control Immutable, E-Tag, Last-Modified and If-Modified-Since Caching HTTP headers in ASP.NET Core.","\u002Fasp-net-core-caching-in-practice\u002F",{"id":64,"title":65,"date":66,"dateModified":67,"timeToRead":68,"description":69,"permalink":70},"posts\u002Fposts\u002F2017\u002Fgeneric-editorconfig-file\u002Findex.md","A Very Generic .editorconfig File (Updated)","2017-10-01T00:00:00+00:00","2018-07-01T00:00:00+00:00",2,"An .editorconfig file helps define and maintain consistent coding styles between different editors and IDEs for files with different file extensions.","\u002Fgeneric-editorconfig-file\u002F",{"id":72,"title":73,"date":74,"dateModified":46,"timeToRead":68,"description":75,"permalink":76},"posts\u002Fposts\u002F2017\u002Fstructured-data-using-schema-net\u002Findex.md","Structured Data using Schema.NET","2017-07-02T00:00:00+00:00","Schema.NET is Schema.org objects turned into strongly typed C# POCO classes for use in .NET.","\u002Fstructured-data-using-schema-net\u002F",{"id":78,"title":79,"date":80,"dateModified":46,"timeToRead":81,"description":82,"permalink":83},"posts\u002Fposts\u002F2017\u002Fasp-net-core-lazy-command-pattern\u002Findex.md","ASP.NET Core Lazy Command Pattern","2017-04-08T00:00:00+00:00",4,"Move your ASP.NET Core MVC action method logic into lazily loaded commands using the command pattern, to reduce Controller complexity.","\u002Fasp-net-core-lazy-command-pattern\u002F",{"id":85,"title":86,"date":87,"dateModified":46,"timeToRead":88,"description":89,"permalink":90},"posts\u002Fposts\u002F2017\u002Fdotnet-new-feature-selection\u002Findex.md","dotnet new Feature Selection","2017-03-26T00:00:00+00:00",9,"How to add feature selection to your dotnet new template using symbols (bool, string, choice, computed) and pre-processor directives.","\u002Fdotnet-new-feature-selection\u002F",{"id":92,"title":93,"date":94,"dateModified":46,"timeToRead":81,"description":95,"permalink":96},"posts\u002Fposts\u002F2016\u002Fmaking-application-insights-fast-and-secure\u002Findex.md","Making Application Insights Fast & Secure","2016-12-11T00:00:00+00:00","Implementing Application Insights into your ASP.NET Core application with performance and security as a top priority in this advanced scenario.","\u002Fmaking-application-insights-fast-and-secure\u002F",{"id":98,"title":99,"date":100,"dateModified":46,"timeToRead":81,"description":101,"permalink":102},"posts\u002Fposts\u002F2016\u002Fsubresource-integrity-taghelper-using-asp-net-core-part-2\u002Findex.md","Subresource Integrity TagHelper Using ASP.NET Core - Part 2","2016-03-12T00:00:00+00:00","Use an ASP.NET Core TagHelper to implement Subresource Integrity (SRI) to ensure that external resources have not been tampered with. With is part 2.","\u002Fsubresource-integrity-taghelper-using-asp-net-core-part-2\u002F",{"id":104,"title":105,"date":106,"dateModified":46,"timeToRead":107,"description":108,"permalink":109},"posts\u002Fposts\u002F2016\u002Fsubresource-integrity-taghelper-using-asp-net-core\u002Findex.md","Subresource Integrity TagHelper Using ASP.NET Core - Part 1","2016-03-06T00:00:00+00:00",3,"Use an ASP.NET Core TagHelper to implement Subresource Integrity (SRI) to ensure that external resources have not been tampered with.","\u002Fsubresource-integrity-taghelper-using-asp-net-core\u002F",{"id":111,"title":112,"date":113,"dateModified":46,"timeToRead":68,"description":114,"permalink":115},"posts\u002Fposts\u002F2016\u002Fcolorful-console\u002Findex.md","Colorful.Console","2016-02-14T00:00:00+00:00","Colorful.Console is a C# library that wraps around the System.Console class, making your console apps more colourful. Write ASCII art using Figlet fonts.","\u002Fcolorful-console\u002F",{"id":117,"title":118,"date":119,"dateModified":46,"timeToRead":107,"description":120,"permalink":121},"posts\u002Fposts\u002F2016\u002Flogging-with-serilog-exceptions\u002Findex.md","Logging with Serilog.Exceptions","2016-01-31T00:00:00+00:00","Log exception details and custom properties that are not output in Exception.ToString() using Serilog.Exceptions for .NET.","\u002Flogging-with-serilog-exceptions\u002F",{"id":123,"title":124,"date":125,"dateModified":46,"timeToRead":68,"description":126,"permalink":127},"posts\u002Fposts\u002F2015\u002Fwhats-new-in-asp-net-5-mvc-6-boilerplate\u002Findex.md","Whats New in ASP.NET Core Boilerplate","2015-08-23T00:00:00+00:00","With the release of ASP.NET Core Boilerplate, this post discusses what's new and what is currently missing due to ASP.NET Core still being in beta.","\u002Fwhats-new-in-asp-net-5-mvc-6-boilerplate\u002F",{"id":129,"title":130,"date":131,"dateModified":46,"timeToRead":81,"description":132,"permalink":133},"posts\u002Fposts\u002F2015\u002Fdynamically-generating-robots-txt-using-asp-net-mvc\u002Findex.md","Dynamically Generating Robots.txt Using ASP.NET MVC","2015-07-31T00:00:00+00:00","How to dynamically generate a robots.txt file using a simple ASP.NET MVC action method and only a few lines of code.","\u002Fdynamically-generating-robots-txt-using-asp-net-mvc\u002F",{"id":135,"title":136,"date":137,"dateModified":46,"timeToRead":138,"description":139,"permalink":140},"posts\u002Fposts\u002F2015\u002Fcanonical-urls-for-asp-net-mvc\u002Findex.md","Canonical URL's for ASP.NET MVC","2015-07-14T00:00:00+00:00",11,"Use canonical URL's in ASP.NET MVC for better Search Engine Optimization (SEO) using ASP.NET Core Boilerplate and the RedirectToCanonicalUrlAttribute.","\u002Fcanonical-urls-for-asp-net-mvc\u002F",{"id":142,"title":143,"date":144,"dateModified":46,"timeToRead":145,"description":146,"permalink":147},"posts\u002Fposts\u002F2015\u002Fbuilding-rssatom-feeds-for-asp-net-mvc\u002Findex.md","Building RSS\u002FAtom Feeds for ASP.NET MVC","2015-06-26T00:00:00+00:00",19,"How to build a fully featured RSS\u002FAtom feed for ASP.NET MVC, including Google's PubSubHubbub and the 'Subscribe to this feed' button.","\u002Fbuilding-rssatom-feeds-for-asp-net-mvc\u002F",{"id":149,"title":150,"date":151,"dateModified":46,"timeToRead":60,"description":152,"permalink":153},"posts\u002Fposts\u002F2015\u002Fc-6-0-saving-developers-from-themselves\u002Findex.md","C# 6.0 - Saving Developers From Themselves","2015-05-10T00:00:00+00:00","C# 6.0 helps reduce human error and save developers from themselves using the nameof operator, string interpolation and the null-conditional operator.","\u002Fc-6-0-saving-developers-from-themselves\u002F",{"id":155,"title":156,"date":157,"dateModified":46,"timeToRead":158,"description":159,"permalink":160},"posts\u002Fposts\u002F2015\u002Fcontent-security-policy-for-asp-net-mvc\u002Findex.md","Content Security Policy (CSP) for ASP.NET MVC","2015-03-17T00:00:00+00:00",22,"Content Security Policy (CSP) is a HTTP header which white-lists content the browser is allowed to load. This post discusses its application in ASP.NET MVC.","\u002Fcontent-security-policy-for-asp-net-mvc\u002F",{"id":162,"title":163,"date":164,"dateModified":46,"timeToRead":165,"description":166,"permalink":167},"posts\u002Fposts\u002F2015\u002Fnwebsec-asp-net-mvc-security-through-http-headers\u002Findex.md","NWebSec ASP.NET MVC Security Through HTTP Headers","2015-02-05T00:00:00+00:00",6,"The NWebSec NuGet packages help secure your ASP.NET MVC site using HTTP headers. The ASP.NET Core Boilerplate project template configures them our of the box.","\u002Fnwebsec-asp-net-mvc-security-through-http-headers\u002F",{"id":169,"title":170,"date":171,"dateModified":46,"timeToRead":68,"description":172,"permalink":173},"posts\u002Fposts\u002F2014\u002Freactive-extensions-part7-sample-events\u002Findex.md","Reactive Extensions (Rx) - Part 7 - Sample Events","2014-12-24T00:00:00+00:00","Shows how to use the Reactive Extensions (Rx) Sample method to reduce the number of subscribed events by taking a sample from them over a given time period.","\u002Freactive-extensions-part7-sample-events\u002F",{"id":175,"title":176,"date":177,"dateModified":46,"timeToRead":138,"description":178,"permalink":179},"posts\u002Fposts\u002F2014\u002Fsecuring-the-aspnet-mvc-web-config\u002Findex.md","Securing the ASP.NET MVC Web.config","2014-12-17T00:00:00+00:00","The web.config file is insecure in the default ASP.NET MVC project template. This post talks you through securing the ASP.NET MVC Web.config file.","\u002Fsecuring-the-aspnet-mvc-web-config\u002F",{"id":181,"title":182,"date":183,"dateModified":46,"timeToRead":184,"description":185,"permalink":186},"posts\u002Fposts\u002F2014\u002Fcustom-visual-studio-project-templates\u002Findex.md","Custom Visual Studio Project Templates","2014-12-10T00:00:00+00:00",7,"A guide to creating custom Visual Studio project templates in .zip and VSIX form and submitting them to the Visual Studio Gallery, so it can be downloaded.","\u002Fcustom-visual-studio-project-templates\u002F",{"id":188,"title":189,"date":190,"dateModified":46,"timeToRead":191,"description":192,"permalink":193},"posts\u002Fposts\u002F2014\u002Finternet-favicon-madness\u002Findex.md","Internet Favicon Madness (Updated)","2014-11-24T00:00:00+00:00",17,"Add favicon's to your website to support iOS, Android, Windows 7, Windows 8, Windows Phone and more. Find out where icons are used on each platform and how.","\u002Finternet-favicon-madness\u002F",{"id":195,"title":196,"date":197,"dateModified":46,"timeToRead":184,"description":198,"permalink":199},"posts\u002Fposts\u002F2014\u002Fasp-net-mvc-boilerplate\u002Findex.md","ASP.NET Core Boilerplate","2014-11-12T00:00:00+00:00","ASP.NET Core Boilerplate is a professional ASP.NET MVC template for building secure, fast, robust and adaptable web applications or sites.","\u002Fasp-net-mvc-boilerplate\u002F",{"id":201,"title":202,"date":203,"dateModified":46,"timeToRead":81,"description":204,"permalink":205},"posts\u002Fposts\u002F2014\u002Felysium-extra-1-1-released\u002Findex.md","Elysium Extra 1.1 Released","2014-11-05T00:00:00+00:00","Elysium Extra Version 1.1 is a Windows Presentation Foundation (WPF) SDK providing Metro styles for built in WPF controls and some custom controls.","\u002Felysium-extra-1-1-released\u002F",{"id":207,"title":208,"date":209,"dateModified":46,"timeToRead":210,"description":211,"permalink":212},"posts\u002Fposts\u002F2014\u002Fmodel-view-viewmodel-mvvm-part4-inotifydataerrorinfo\u002Findex.md","Model-View-ViewModel (MVVM) - Part 4 - INotifyDataErrorInfo","2014-09-09T00:00:00+00:00",12,"An base class implementation for the INotifyDataErrorInfo interface. Used in the Model-View-ViewModel (MVVM) pattern. Targeted for best performance.","\u002Fmodel-view-viewmodel-mvvm-part4-inotifydataerrorinfo\u002F",{"id":214,"title":215,"date":216,"dateModified":46,"timeToRead":107,"description":217,"permalink":218},"posts\u002Fposts\u002F2014\u002Fnaming-conventions\u002Findex.md","Naming Conventions","2014-09-04T00:00:00+00:00","Code is written to be read by humans, not machines. Naming conventions and standard code styling can boost productivity, particularly if working in teams.","\u002Fnaming-conventions\u002F",{"id":220,"title":221,"date":222,"dateModified":46,"timeToRead":138,"description":223,"permalink":224},"posts\u002Fposts\u002F2014\u002Fmodel-view-viewmodel-mvvm-part3-inotifypropertychanged\u002Findex.md","Model-View-ViewModel (MVVM) - Part 3 - INotifyPropertyChanged","2014-06-18T00:00:00+00:00","An base class implementation for the INotifyPropertyChanged interface. Used in the Model-View-ViewModel (MVVM) pattern. Targeted for best performance.","\u002Fmodel-view-viewmodel-mvvm-part3-inotifypropertychanged\u002F",{"id":226,"title":227,"date":228,"dateModified":46,"timeToRead":81,"description":229,"permalink":230},"posts\u002Fposts\u002F2014\u002Fmodel-view-viewmodel-mvvm-part2-idisposable\u002Findex.md","Model-View-ViewModel (MVVM) - Part 2 - IDisposable","2014-06-13T00:00:00+00:00","Implementing IDisposable correctly is ridiculously hard. A Disposable base class can make it easier. Using IDisposable in Model-View-ViewModel (MVVM) really helps.","\u002Fmodel-view-viewmodel-mvvm-part2-idisposable\u002F",{"id":232,"title":233,"date":234,"dateModified":46,"timeToRead":60,"description":235,"permalink":236},"posts\u002Fposts\u002F2014\u002Fmodel-view-viewmodel-mvvm-part1-overview\u002Findex.md","Model-View-ViewModel (MVVM) - Part 1 - Overview","2014-05-14T00:00:00+00:00","What really goes into using Model-View-ViewModel (MVVM) in .NET. Base classes for INotifyPropertyChanged, INotifyDataErrorInfo, IDisposable and a lot more.","\u002Fmodel-view-viewmodel-mvvm-part1-overview\u002F",{"id":238,"title":239,"date":240,"dateModified":46,"timeToRead":47,"description":241,"permalink":242},"posts\u002Fposts\u002F2014\u002Fportable-class-library-version-of-notificationsextensions-nuget-package\u002Findex.md","Portable Class Library (PCL) version of NotificationsExtensions NuGet package","2014-05-06T00:00:00+00:00","NotificationsExtensions.Portable is a Portable Class Library (PCL) used to Create Windows 8.1 or Windows Phone 8.1 Tile, Toast and Badge Notification XML.","\u002Fportable-class-library-version-of-notificationsextensions-nuget-package\u002F",{"id":244,"title":245,"date":246,"dateModified":46,"timeToRead":60,"description":247,"permalink":248},"posts\u002Fposts\u002F2014\u002Freactive-extensions-part6-task-toobservable\u002Findex.md","Reactive Extensions (Rx) - Part 6 - Task ToObservable","2014-04-25T00:00:00+00:00","How and where to use the Reactive Extensions (Rx) ToObservable Extension method to turn a Task Parallel Library (TPL) Task into an IObservable.","\u002Freactive-extensions-part6-task-toobservable\u002F",{"id":250,"title":251,"date":252,"dateModified":253,"timeToRead":254,"description":255,"permalink":256},"posts\u002Fposts\u002F2014\u002Fgethashcode-made-easy\u002Findex.md","GetHashCode Made Easy","2014-04-14T00:00:00+00:00","2019-06-12T00:00:00+00:00",8,"Implementing GetHashCode is hard work and little understood. Learn how to implement GetHashCode as quickly and as simply as possible.","\u002Fgethashcode-made-easy\u002F",{"id":258,"title":259,"date":260,"dateModified":46,"timeToRead":254,"description":261,"permalink":262},"posts\u002Fposts\u002F2014\u002Fwpf-metro-part4-elysium-extra\u002Findex.md","WPF Metro Part 4 - Elysium Extra","2014-03-19T00:00:00+00:00","Elysium Extra is an excellent Windows Presentation Foundation (WPF) SDK providing Metro styles for built in WPF controls and some custom controls.","\u002Fwpf-metro-part4-elysium-extra\u002F",{"id":264,"title":265,"date":266,"dateModified":46,"timeToRead":68,"description":267,"permalink":268},"posts\u002Fposts\u002F2014\u002Fwpf-metro-part3-elysium\u002Findex.md","WPF Metro Part 3 - Elysium","2014-03-17T00:00:00+00:00","Elysium is an excellent Windows Presentation Foundation (WPF) SDK (On CodePlex) providing Metro styles for built in WPF controls and some custom controls.","\u002Fwpf-metro-part3-elysium\u002F",{"id":270,"title":271,"date":272,"dateModified":46,"timeToRead":107,"description":273,"permalink":274},"posts\u002Fposts\u002F2014\u002Freactive-extensions-part4-replacing-timers\u002Findex.md","Reactive Extensions (Rx) - Part 4 - Replacing Timers","2014-03-11T00:00:00+00:00","You should definitely consider using Reactive Extensions (Rx) is as a direct replacement for .NET Timers. This post will explain how.","\u002Freactive-extensions-part4-replacing-timers\u002F",{"id":276,"title":277,"date":278,"dateModified":46,"timeToRead":107,"description":279,"permalink":280},"posts\u002Fposts\u002F2014\u002Fwpf-metro-part2-mahapps-metro\u002Findex.md","WPF Metro Part 2 - MahApps Metro","2014-03-02T00:00:00+00:00","MahApps Metro is an excellent Windows Presentation Foundation (WPF) SDK providing Metro styles for built in WPF controls and several custom controls.","\u002Fwpf-metro-part2-mahapps-metro\u002F",{"id":282,"title":283,"date":284,"dateModified":46,"timeToRead":107,"description":285,"permalink":286},"posts\u002Fposts\u002F2014\u002Fwpf-metro-part1-modern-ui-for-wpf\u002Findex.md","WPF Metro Part 1 - Modern UI for WPF","2014-02-19T00:00:00+00:00","Modern UI for WPF is an excellent Windows Presentation Foundation (WPF) SDK providing Metro styles for built in WPF controls and several custom controls.","\u002Fwpf-metro-part1-modern-ui-for-wpf\u002F",{"id":288,"title":289,"date":290,"dateModified":46,"timeToRead":68,"description":291,"permalink":292},"posts\u002Fposts\u002F2014\u002Freactive-extensions-part3-naming-conventions\u002Findex.md","Reactive Extensions (Rx) - Part 3 - Naming Conventions","2014-02-14T00:00:00+00:00","Reactive Extensions (Rx) Advantages of using IObservable property naming conventions and comparison between C# events.","\u002Freactive-extensions-part3-naming-conventions\u002F",{"id":294,"title":295,"date":296,"dateModified":46,"timeToRead":107,"description":297,"permalink":298},"posts\u002Fposts\u002F2014\u002Freactive-extensions-part2-wrapping-events\u002Findex.md","Reactive Extensions (Rx) - Part 2 - Wrapping C# Events","2014-02-13T00:00:00+00:00","Reactive Extensions IObservable wrappers for C# events and hiding the C# events entirely from subscribers using explicit interface implementations.","\u002Freactive-extensions-part2-wrapping-events\u002F",{"id":300,"title":301,"date":302,"dateModified":46,"timeToRead":81,"description":303,"permalink":304},"posts\u002Fposts\u002F2014\u002Freactive-extensions-part1-replacing-events\u002Findex.md","Reactive Extensions (Rx) - Part 1 - Replacing C# Events","2014-02-11T00:00:00+00:00","You should definitely consider using Reactive Extensions (Rx) is as a direct replacement for C# events. This post will explain how.","\u002Freactive-extensions-part1-replacing-events\u002F",{"id":306,"title":307,"date":308,"dateModified":46,"timeToRead":107,"description":309,"permalink":310},"posts\u002Fposts\u002F2014\u002Fstop-brace-wars-use-stylecop\u002Findex.md","Stop The Brace Wars, Use StyleCop","2014-02-08T00:00:00+00:00","StyleCop analyzes C# source code to enforce a set of style and consistency rules. Rehan advocates its use in this thought provoking article.","\u002Fstop-brace-wars-use-stylecop\u002F",{"id":312,"title":313,"date":314,"dateModified":46,"timeToRead":68,"description":315,"permalink":316},"posts\u002Fposts\u002F2014\u002Fconfigureawait-task-parallel-library\u002Findex.md","ConfigureAwait in Task Parallel Library (TPL)","2014-02-07T00:00:00+00:00","The importance of using ConfigureAwait when using the Task Parallel Library (TPL) to improve performance and reduce context switching.","\u002Fconfigureawait-task-parallel-library\u002F",1793144468928]