[{"data":1,"prerenderedAt":1192},["ShallowReactive",2],{"i-feather:search":3,"i-feather:x":8,"i-feather:moon":10,"i-feather:sun":12,"i-fa-brands:youtube":14,"i-fa-brands:twitch":18,"i-fa-brands:github":20,"i-fa-brands:linkedin":23,"i-fa-brands:stack-overflow":26,"i-simple-icons:bluesky":29,"i-fa-brands:mastodon":31,"i-fa-regular:envelope":33,"i-fa-solid:rss":35,"post-\u002Fis-asp-net-core-now-a-mature-platform\u002F":37,"post-navigation":788,"i-fa-solid:share-alt":1172,"i-fa-brands:facebook":1174,"i-fa-brands:twitter":1176,"i-fa-brands:reddit":1178,"i-fa-brands:patreon":1180,"i-simple-icons:buymeacoffee":1182,"i-fa-brands:paypal":1184,"i-fa-regular:question-circle":1186,"i-feather:arrow-left":1188,"i-feather:arrow-right":1190},{"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":15,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":17},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":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":19},"\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":21,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":22},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":24,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":25},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":27,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":28},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":30},"\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":24,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":32},"\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":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":34},"\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":24,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":36},"\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>",{"id":38,"title":39,"author":40,"body":41,"comments":499,"date":759,"dateModified":760,"description":761,"extension":762,"headings":763,"heroImage":777,"meta":778,"path":779,"permalink":779,"published":78,"stem":780,"tags":781,"timeToRead":787},"posts\u002Fposts\u002F2018\u002Fis-asp-net-core-now-a-mature-platform\u002Findex.md","Is ASP.NET Core now a Mature Platform?","Muhammad Rehan Saeed",{"type":42,"value":43,"toc":496},"minimark",[44,59,79,110,113,133,136,139,153,156,159,174,177,191,194,203,217,226,229,232,246,260,263,272,275,289,315,329,332,347,366,380,400,409,423,426,435,444,458,473,487,490,493],[45,46,50,56],"div",{"className":47},[48,49],"custom-block","tip",[51,52,55],"p",{"className":53},[54],"custom-block-title","Update (12 January 2019)",[51,57,58],{},"It seems that Damian Edwards (The ASP.NET Core Project Manager) likes this post and agrees with the points I've made! It's great to hear that he's is in alignment with my thoughts and that's a great indication that the pain points of the platform will get solved in the future. Take a look at what he says in the ASP.NET Community Stand-up below:",[45,60,63,64],{"className":61},[62],"youtube-embed","\n    ",[45,65,67,68,63],{"style":66},"width: 100%; margin: 0 auto;","\n        ",[45,69,71,72,67],{"style":70},"position: relative; padding-bottom: 56.25%; padding-top: 25px; height: 0;","\n            ",[73,74,71],"iframe",{"style":75,"src":76,"allow":77,"allowFullScreen":78},"position: absolute; top: 0; left: 0; width: 100%; height: 100%;","https:\u002F\u002Fwww.youtube-nocookie.com\u002Fembed\u002Fho-VF2dAszI","autoplay; encrypted-media",true,[80,81,84,90],"h1",{"id":82,"data-section-heading":83},"the-upgrade-train","",[85,86,89],"span",{"className":87},[88],"heading__text","The Upgrade Train",[91,92,95],"anchor-link",{"href":93,"label":94},"#the-upgrade-train","Link to this section",[96,97,104],"svg",{"xmlns":98,"xmlns:xlink":99,"viewBox":100,"version":101,"width":102,"height":102,"aria-hidden":103},"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxlink","0 0 16 16","1.1",22,"true",[105,106],"path",{"fill":107,"fill-rule":108,"d":109},"currentColor","evenodd","M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z",[51,111,112],{},"I started using ASP.NET Core back when it was still called ASP.NET 5 and it was still in beta. In those early days every release introduced a sea change. The beta's were not beta's at all but more like alpha quality bits. I spent more time than I'd like just updating things to the latest version with each release.",[51,114,115,116,126,127,132],{},"Compared to the past, updates are moving at a glacial pace. Compared to the full fat .NET Framework though, it's been like moving from a camel to an electric car. When releases do come there is still a lot in each release. If you have a number of micro services using ASP.NET Core, it's not quick to get them all updated. Also, it's not just ASP.NET Core but all of the satellite assemblies built on top of .NET Core that keep changing too, things like ",[117,118,125],"a",{"href":119,"rel":120,"target":124},"https:\u002F\u002Fserilog.net\u002F",[121,122,123],"nofollow","noopener","noreferrer","_blank","Serilog"," and ",[117,128,131],{"href":129,"rel":130,"target":124},"https:\u002F\u002Fgithub.com\u002Fdomaindrivendev\u002FSwashbuckle.AspNetCore",[121,122,123],"Swashbuckle",".",[51,134,135],{},"What about other platforms? Well, I'm familiar with Node.js and the situation there is bordering on silly. Packages are very unstable and constantly being rev'ed. Keeping up and staying on latest is a constant battle almost every day. Each time you upgrade a package, there is also a danger that you will break something. With .NET Core, there are fewer packages and they are much more stable.",[51,137,138],{},"Overall, things move fast in software development in general and for me that's what keeps it interesting. ASP.NET Core is no exception.",[80,140,142,146],{"id":141,"data-section-heading":83},"show-me-the-apis",[85,143,145],{"className":144},[88],"Show me the API's!",[91,147,149],{"href":148,"label":94},"#show-me-the-apis",[96,150,151],{"xmlns":98,"xmlns:xlink":99,"viewBox":100,"version":101,"width":102,"height":102,"aria-hidden":103},[105,152],{"fill":107,"fill-rule":108,"d":109},[51,154,155],{},".NET Core and ASP.NET Core started out very lightweight. There were few API's available. You often had to roll your own code, even for basic features that should exist.",[51,157,158],{},"In today's world, a lot of API's have been added and where there are gaps, the community has filled them in many places. The .NET Framework still has a lot of API's that have not been ported across yet. A lot of these gaps are Windows specific and I'm sure a lot will be filled in the .NET Core 3.0 time frame.",[51,160,161,162,167,168,173],{},"When I make a comparison with Node.js and take wider community packages into consideration, I'd say that .NET Core has fewer API's. Image compression API's don't even exist on .NET for example. We were late to the party with Brotli compression which was recently added to .NET Core and is soon going to be added to the ASP.NET Core compression middleware, so we'll get there eventually. We have ",[117,163,166],{"href":164,"rel":165,"target":124},"https:\u002F\u002Fgithub.com\u002Fgraphql-dotnet\u002Fgraphql-dotnet",[121,122,123],"GraphQL.NET"," which is very feature rich but it still lags behind the JavaScript Apollo implementation slightly where it has first party support (Perhaps that comparison is a little unfair as GraphQL is native to Node.js). When I wanted to add Figlet font support to ",[117,169,172],{"href":170,"rel":171,"target":124},"http:\u002F\u002Fcolorfulconsole.com\u002F",[121,122,123],"Colorful.Console"," (Figlet fonts let you draw characters using ASCII art), I had to base my implementation off of a JavaScript one. I'm not the only one who translates JavaScript code to C# either.",[51,175,176],{},"With all this said, Node.js and JavaScript in general has it's own unique problems, otherwise I'd be using it instead of being a mainly .NET Core developer.",[80,178,180,184],{"id":179,"data-section-heading":83},"its-open-sauce",[85,181,183],{"className":182},[88],"It's Open Sauce",[91,185,187],{"href":186,"label":94},"#its-open-sauce",[96,188,189],{"xmlns":98,"xmlns:xlink":99,"viewBox":100,"version":101,"width":102,"height":102,"aria-hidden":103},[105,190],{"fill":107,"fill-rule":108,"d":109},[51,192,193],{},"Making .NET Core and ASP.NET Core open source has made a huge difference. We'd all occasionally visit the .NET Framework docs to understand how an API worked but today the place to go is GitHub where you can not only see the code but read other peoples issues and even raise issues of your own. There is often someone who has been there and done it all before you.",[51,195,196,197,202],{},"Not only that but a huge community has grown up with bloggers and new projects being more commonplace. It cannot be underestimated how much this change has improved a developers standard of living. Just take a look at the brilliant ",[117,198,201],{"href":199,"rel":200,"target":124},"https:\u002F\u002Fdiscoverdot.net\u002F",[121,122,123],"discoverdot.net"," site where you can see 634 GitHub .NET projects for all the evidence you need.",[80,204,206,210],{"id":205,"data-section-heading":83},"feel-the-powa",[85,207,209],{"className":208},[88],"Feel the Powa!",[91,211,213],{"href":212,"label":94},"#feel-the-powa",[96,214,215],{"xmlns":98,"xmlns:xlink":99,"viewBox":100,"version":101,"width":102,"height":102,"aria-hidden":103},[105,216],{"fill":107,"fill-rule":108,"d":109},[51,218,219,220,225],{},"ASP.NET Core's emphasis on performance is refreshing. It's doing well in the ",[117,221,224],{"href":222,"rel":223,"target":124},"https:\u002F\u002Fwww.techempower.com\u002Fbenchmarks\u002F",[121,122,123],"TechEmpower benchmarks"," with more improvements in sight. It's nice to get performance boosts from your applications every time you upgrade your application without having to do any work at all yourself.",[51,227,228],{},"While the platform is miles ahead of Node.js there are newer languages like Go that are also quite nice to write code for but blazing fast too. However, I'm not sure you can be as productive writing Go as with .NET Core. Also, you've got to use the write tool for the job. There are definitely cases where Go does a better job.",[51,230,231],{},"One interesting effort that I've been keeping an eye on for some time now is .NET Native where C# code is compiled down to native code instead of an intermediate language. This means that the intermediate language does not need to be JIT'ed and turned into machine code at runtime which speeds up execution the first time the application is run. A nice side effect of doing this is that you also end up with a single executable file. You get all the benefits of a low level language like Go or Rust with none of the major drawbacks! I've been expecting this to hit for some time now but it's still not quite ready.",[80,233,235,239],{"id":234,"data-section-heading":83},"security-is-boring-but-important",[85,236,238],{"className":237},[88],"Security is Boring but Important",[91,240,242],{"href":241,"label":94},"#security-is-boring-but-important",[96,243,244],{"xmlns":98,"xmlns:xlink":99,"viewBox":100,"version":101,"width":102,"height":102,"aria-hidden":103},[105,245],{"fill":107,"fill-rule":108,"d":109},[51,247,248,249,254,255,132],{},"This is a subject that most people have never thought about much. It's trivial for an evil doer to insert some rogue code into an update to a package and have that code running in applications soon after. In fact that's what happened with the ",[117,250,253],{"href":251,"rel":252,"target":124},"https:\u002F\u002Fgithub.com\u002Fdominictarr\u002Fevent-stream\u002Fissues\u002F116",[121,122,123],"event-stream NPM package"," recently. I highly recommend reading Jake Archibald's post ",[117,256,259],{"href":257,"rel":258,"target":124},"https:\u002F\u002Fjakearchibald.com\u002F2018\u002Fwhen-packages-go-bad\u002F",[121,122,123],"\"What happens when packages go bad\"",[51,261,262],{},"What about .NET Core? Well, .NET is in fairly rare position of having a large number of official packages written by and maintained by Microsoft. This means that you need less third party packages and in fact you can sometimes get away with using no third party dependencies what so ever. What this also means, is that your third party dependencies that you do end up using also have fewer other dependencies in turn.",[51,264,265,266,271],{},"NuGet also recently added support for ",[117,267,270],{"href":268,"rel":269,"target":124},"https:\u002F\u002Fblog.nuget.org\u002F20150203\u002Fpackage-signing.html",[121,122,123],"signed packages",", which stops packages from being tampered with between NuGet's server and your build machine.",[51,273,274],{},"Overall this is all about reducing risk. There will always be a chance that somebody will do something bad. I'd argue that there is less of a risk of that happening on the .NET platform.",[80,276,278,282],{"id":277,"data-section-heading":83},"who-is-using-it",[85,279,281],{"className":280},[88],"Who is using it?",[91,283,285],{"href":284,"label":94},"#who-is-using-it",[96,286,287],{"xmlns":98,"xmlns:xlink":99,"viewBox":100,"version":101,"width":102,"height":102,"aria-hidden":103},[105,288],{"fill":107,"fill-rule":108,"d":109},[51,290,291,292,297,298,303,304,309,310,132],{},"Bing.com is ",[117,293,296],{"href":294,"rel":295,"target":124},"https:\u002F\u002Fblogs.msdn.microsoft.com\u002Fdotnet\u002F2018\u002F08\u002F20\u002Fbing-com-runs-on-net-core-2-1\u002F",[121,122,123],"running on ASP.NET Core"," and a site doesn't get much bigger than that. Stack Overflow is ",[117,299,302],{"href":300,"rel":301,"target":124},"https:\u002F\u002Fnickcraver.com\u002Fblog\u002F2018\u002F11\u002F29\u002Fstack-overflow-how-we-do-monitoring\u002F",[121,122,123],"working on their transition"," to .NET Core. The ",[117,305,308],{"href":306,"rel":307,"target":124},"https:\u002F\u002Fgithub.com\u002FOrchardCMS\u002FOrchardCore",[121,122,123],"Orchard CMS"," uses .NET Core. Even WordPress and various PHP applications can be run on .NET Core these days using ",[117,311,314],{"href":312,"rel":313,"target":124},"https:\u002F\u002Fwww.peachpie.io\u002F",[121,122,123],"peachpie",[80,316,318,322],{"id":317,"data-section-heading":83},"whats-still-missing",[85,319,321],{"className":320},[88],"What's Still Missing?",[91,323,325],{"href":324,"label":94},"#whats-still-missing",[96,326,327],{"xmlns":98,"xmlns:xlink":99,"viewBox":100,"version":101,"width":102,"height":102,"aria-hidden":103},[105,328],{"fill":107,"fill-rule":108,"d":109},[51,330,331],{},"First of all, let me say that every platform has gaps that are sometimes filled by the community. There are several missing API's that seem obvious to me but have yet to be built or improved enough. Here are a few basic examples of things that could be improved and where maybe the small team of 20 ASP.NET Core developers (Yes, their team is that small and they've done a tremendous job of building so much with so few resources, so they definitely deserve a pat on the back) could perhaps better direct their efforts.",[333,334,336,340],"h2",{"id":335,"data-section-heading":83},"caching-could-be-better",[85,337,339],{"className":338},[88],"Caching Could be Better",[91,341,343],{"href":342,"label":94},"#caching-could-be-better",[96,344,345],{"xmlns":98,"xmlns:xlink":99,"viewBox":100,"version":101,"width":102,"height":102,"aria-hidden":103},[105,346],{"fill":107,"fill-rule":108,"d":109},[51,348,349,350,354,355,360,361,365],{},"The response caching still only supports in-memory caching. If you want to cache to Redis using the ",[351,352,353],"code",{},"IDistributedCache",", ",[117,356,359],{"href":357,"rel":358,"target":124},"https:\u002F\u002Fgithub.com\u002Faspnet\u002FAspNetCore\u002Fissues\u002F2603",[121,122,123],"bad luck",". Even if you go with it and use the in-memory cache, if you're using cookies or the Authorization HTTP header, you've only got more ",[117,362,359],{"href":363,"rel":364,"target":124},"https:\u002F\u002Fgithub.com\u002Faspnet\u002FAspNetCore\u002Fissues\u002F2606",[121,122,123]," as response caching turns itself off in those cases. Caching is an intrinsic part of the web, we need to do a better job of making it easier to work with.",[333,367,369,373],{"id":368,"data-section-heading":83},"everyone-is-partying-with-lets-encrypt",[85,370,372],{"className":371},[88],"Everyone is Partying with Lets Encrypt",[91,374,376],{"href":375,"label":94},"#everyone-is-partying-with-lets-encrypt",[96,377,378],{"xmlns":98,"xmlns:xlink":99,"viewBox":100,"version":101,"width":102,"height":102,"aria-hidden":103},[105,379],{"fill":107,"fill-rule":108,"d":109},[51,381,382,383,388,389,394,395,132],{},"Security is hard! HTTPS is hard! Dealing with certificates is hard! What if you could use some middleware and supply it with a couple of lines of configuration and never have to think about any of it ever again? Isn't that something you'd want? Well, it turns out that Nate McMaster has built a ",[117,384,387],{"href":385,"rel":386,"target":124},"https:\u002F\u002Fgithub.com\u002Fnatemcmaster\u002FLetsEncrypt",[121,122,123],"LetsEncrypt middleware"," that does just that but he needs some help to ",[117,390,393],{"href":391,"rel":392,"target":124},"https:\u002F\u002Fgithub.com\u002Fnatemcmaster\u002FLetsEncrypt\u002Fissues\u002F2#issuecomment-426501116",[121,122,123],"persuade his boss"," to build the feature, so up-vote this ",[117,396,399],{"href":397,"rel":398,"target":124},"https:\u002F\u002Fgithub.com\u002Faspnet\u002FKestrelHttpServer\u002Fissues\u002F2971",[121,122,123],"issue",[51,401,402,403,408],{},"Microsoft seems a bit late to the part, it's also one of the top voted feature requests on ",[117,404,407],{"href":405,"rel":406,"target":124},"https:\u002F\u002Ffeedback.azure.com\u002Fforums\u002F169385-web-apps\u002Fsuggestions\u002F15099342-add-support-for-let-s-encrypt-in-the-azure-portal",[121,122,123],"Azure's User Voice"," too.",[333,410,412,416],{"id":411,"data-section-heading":83},"http2-and-http3",[85,413,415],{"className":414},[88],"HTTP\u002F2 and HTTP\u002F3",[91,417,419],{"href":418,"label":94},"#http2-and-http3",[96,420,421],{"xmlns":98,"xmlns:xlink":99,"viewBox":100,"version":101,"width":102,"height":102,"aria-hidden":103},[105,422],{"fill":107,"fill-rule":108,"d":109},[51,424,425],{},"HTTP\u002F2 support in ASP.NET Core is available in 2.2 but it's not battle tested so you can't run it at the edge, wide open to the internet for fear of getting hacked.",[51,427,428,429,434],{},"HTTP\u002F3 (",[117,430,433],{"href":431,"rel":432,"target":124},"https:\u002F\u002Fwww.zdnet.com\u002Farticle\u002Fhttp-over-quic-to-be-renamed-http3\u002F",[121,122,123],"formerly named QUIC",") support has been talked about and the ground work for it has already been done so that the Kestrel web server can support multiple protocols easily. Lets see hoq quickly we can get support.",[51,436,437,438,443],{},"One interesting thing about adding support for more protocols to ASP.NET Core is that most people can't make use of them or don't need to. ASP.NET Core applications are often hidden away behind a reverse proxy web server like IIS or NGINX who implement these protocols themselves. Even using something like Azure App Service means that you run behind a special fork of IIS. So I've been thinking, what is the point? Well, you've could use Kubernetes to expose your ASP.NET Core app over port 80 and get the performance boost of not having to use a reverse proxy web server as a man in the middle. Also, contrary to popular belief, Kubernetes can expose multiple ASP.NET Core applications over port 80 (at least ",[117,439,442],{"href":440,"rel":441,"target":124},"https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F53415487\u002Fwhat-are-the-advantages-of-using-kubernetes-ingress-in-azure-aks",[121,122,123],"Azure AKS can",").",[333,445,447,451],{"id":446,"data-section-heading":83},"serving-static-files",[85,448,450],{"className":449},[88],"Serving Static Files",[91,452,454],{"href":453,"label":94},"#serving-static-files",[96,455,456],{"xmlns":98,"xmlns:xlink":99,"viewBox":100,"version":101,"width":102,"height":102,"aria-hidden":103},[105,457],{"fill":107,"fill-rule":108,"d":109},[51,459,460,461,466,467,472],{},"Serving static files is one of the most basic features. There are a few things that could make this a lot better. You ",[117,462,465],{"href":463,"rel":464,"target":124},"https:\u002F\u002Fgithub.com\u002Faspnet\u002FAspNetCore\u002Fissues\u002F2457",[121,122,123],"can't use"," the authorization middleware to limit access to static files but I believe that's changing in ASP.NET Core 3.0. Serving GZIP'ed or Brotli'ed content is a must today. Luckily dynamic Brotli compression will soon be available. What's ",[117,468,471],{"href":469,"rel":470,"target":124},"https:\u002F\u002Fgithub.com\u002Faspnet\u002FAspNetCore\u002Fissues\u002F2458",[121,122,123],"not available"," is serving pre-compressed static files.",[80,474,476,480],{"id":475,"data-section-heading":83},"is-it-a-mature-platform",[85,477,479],{"className":478},[88],"Is It A Mature Platform?",[91,481,483],{"href":482,"label":94},"#is-it-a-mature-platform",[96,484,485],{"xmlns":98,"xmlns:xlink":99,"viewBox":100,"version":101,"width":102,"height":102,"aria-hidden":103},[105,486],{"fill":107,"fill-rule":108,"d":109},[51,488,489],{},"There is a lot less churn. There are a lot of open source projects you can leverage. A large enough developer base has now grown up, so you see a lot more GitHub projects, Stack Overflow questions, bloggers like myself and companies who make their living from the platform.",[51,491,492],{},"There seems to be a trend at the moment where people are jumping ship from long standing platforms and languages to brand new ones. Android developers have jumped from Java to Kotlin (and have managed to delete half their code in the process, Java is so verbose!). The poor souls who wrote Objective C, have jumped to Swift. Where once applications would be written in C++, they are now written in Go or Rust. Where once people wrote JavaScript, they are still writing JavaScript (TypeScript has taken off but not completely)...ok that has not changed. .NET Core seems to be the only one that seems to have bucked the trend and tried to reinvent itself completely while not changing things too much and still succeeding in the process.",[51,494,495],{},"So yes, yes it is, is my answer.",{"title":83,"searchDepth":497,"depth":497,"links":498},2,[],{"issue":500,"comments":504},{"number":501,"title":502,"html_url":503},82,"[Comment] Is ASP.NET Core now a Mature Platform?","https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82",[505,517,525,533,541,549,557,565,573,581,589,597,605,613,621,629,637,645,653,661,669,677,686,694,703,711,719,727,735,743,751],{"id":506,"html_url":507,"body_html":508,"created_at":509,"updated_at":509,"author_association":510,"user":511,"reactions":515},627260516,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627260516","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fd76b864c22795f8648c85281850ac60f991b931a31dceaa8940f77e8891d68c2\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f64393931663963353434353166636633356235346331643830626436666463663f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Jorge\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fd76b864c22795f8648c85281850ac60f991b931a31dceaa8940f77e8891d68c2\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f64393931663963353434353166636633356235346331643830626436666463663f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Jorge\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-18 15:55:59\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Great article, I've been looking for this kind of insight for a long time, folks here are afraid of using .net core and it's relieving to read this.\u003C\u002Fp>","2020-05-12T10:37:52Z","OWNER",{"login":512,"avatar_url":513,"html_url":514},"RehanSaeed","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2270364?v=4","https:\u002F\u002Fgithub.com\u002FRehanSaeed",{"url":516,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627260516\u002Freactions",{"id":518,"html_url":519,"body_html":520,"created_at":521,"updated_at":521,"author_association":510,"user":522,"reactions":523},627260582,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627260582","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F4fd99dffdba34c36cd973a04881c4bf43816ad2729dfcbcbef47bab857885967\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f62663236383234633665333962653631316666613538626631373739316437343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Dmitry Pavlov\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F4fd99dffdba34c36cd973a04881c4bf43816ad2729dfcbcbef47bab857885967\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f62663236383234633665333962653631316666613538626631373739316437343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Fdmitry-pavlov.com\u002F\">Dmitry Pavlov\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-18 16:58:02\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>For sure. I have completely switched to it and 3rd year deal with ASP.NET Core projects only. Much easier and elegant configuration, common development tasks handling, and in general - pleasure to work with it.\u003C\u002Fp>","2020-05-12T10:37:59Z",{"login":512,"avatar_url":513,"html_url":514},{"url":524,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627260582\u002Freactions",{"id":526,"html_url":527,"body_html":528,"created_at":529,"updated_at":529,"author_association":510,"user":530,"reactions":531},627260630,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627260630","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F27527933f37a0ac84d4db0143247abb9881fd9fdaa12c39d6a320b45639b5760\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f63623136303331373934613838303561613063653135356338343135666165363f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Gianluigi Liguori\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F27527933f37a0ac84d4db0143247abb9881fd9fdaa12c39d6a320b45639b5760\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f63623136303331373934613838303561613063653135356338343135666165363f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"http:\u002F\u002Fliguori.js.org\u002F\">Gianluigi Liguori\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-18 21:33:08\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Amazing article. I was already convinced to answer 'YES', after this, it is a '101%' yes. :)\u003C\u002Fp>","2020-05-12T10:38:05Z",{"login":512,"avatar_url":513,"html_url":514},{"url":532,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627260630\u002Freactions",{"id":534,"html_url":535,"body_html":536,"created_at":537,"updated_at":537,"author_association":510,"user":538,"reactions":539},627260688,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627260688","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F4d453061e028d2498629966200658f6a3f4a74e3a247a1733073331e18383596\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f39396633653134613563373261343237636234373830306433636133363166643f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Nirman Doshi\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F4d453061e028d2498629966200658f6a3f4a74e3a247a1733073331e18383596\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f39396633653134613563373261343237636234373830306433636133363166643f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Nirman Doshi\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-19 06:47:14\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Nice article, and overview of all aspects are covered. This means, .NET core is now more than ready ever for large enterprise application.\u003Cbr \u002F>\nThanks\u003C\u002Fp>","2020-05-12T10:38:13Z",{"login":512,"avatar_url":513,"html_url":514},{"url":540,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627260688\u002Freactions",{"id":542,"html_url":543,"body_html":544,"created_at":545,"updated_at":545,"author_association":510,"user":546,"reactions":547},627260727,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627260727","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fc21883f022e5f4374ea709b8d28b27aeec828ae0738e4d0a534d3498771469ba\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f64333935653866643236663934373437633138653439393333363630613666393f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Vincent Jenks\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fc21883f022e5f4374ea709b8d28b27aeec828ae0738e4d0a534d3498771469ba\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f64333935653866643236663934373437633138653439393333363630613666393f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Vincent Jenks\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-19 14:32:13\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Not really fair to throw Node under the bus in your comparisons. I've been a dotnet dev since it has been a thing, and I still love it, but I've had wonderful results with Node the past few years. Much faster dev cycle, much easier to maintain and deploy, and the biggest open source package repository known to software development. It's great! I think Core and dotnet in general, still has a long way to go. I hope it catches up to compete! Would love to work with it professionally, again.\u003C\u002Fp>","2020-05-12T10:38:20Z",{"login":512,"avatar_url":513,"html_url":514},{"url":548,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627260727\u002Freactions",{"id":550,"html_url":551,"body_html":552,"created_at":553,"updated_at":553,"author_association":510,"user":554,"reactions":555},627260784,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627260784","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-19 14:38:57\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Not really fair to throw Node under the bus in your comparisons. I've been a dotnet dev since it has been a thing, and I still love it, but I've had wonderful results with Node the past few years. Much faster dev cycle, much easier to maintain and deploy, and the biggest open source package repository known to software development. It's great! I think Core and dotnet in general, still has a long way to go. I hope it catches up to compete! Would love to work with it professionally, again.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>That was not my intention at all, totally my fault if that is what is coming across. There are things Node can do that .NET can't. In fact, I think I mentioned that myself and others have ported JavaScript\u002FNode code to C# because it didn't exist on the .NET platform. As you say, the fast get up and go factor with Node is really one of it's great selling points. I just didn't mention it because it wasn't the subject of the post.\u003C\u002Fp>","2020-05-12T10:38:26Z",{"login":512,"avatar_url":513,"html_url":514},{"url":556,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627260784\u002Freactions",{"id":558,"html_url":559,"body_html":560,"created_at":561,"updated_at":561,"author_association":510,"user":562,"reactions":563},627260844,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627260844","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F2378e8949d6cdb6fe20bf6c69300f0649e942e5d7732b130adc6f198d42b2afb\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f36643436633736316639633838666662626365326431646435346635643730663f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Dan\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F2378e8949d6cdb6fe20bf6c69300f0649e942e5d7732b130adc6f198d42b2afb\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f36643436633736316639633838666662626365326431646435346635643730663f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Dan\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-19 16:57:32\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>For sure. I have completely switched to it and 3rd year deal with ASP.NET Core projects only. Much easier and elegant configuration, common development tasks handling, and in general - pleasure to work with it.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Can you explain please more, what did you feel migrating your existing applications from older versions of the .Net Core to the newer ones till these 3 years\u003C\u002Fp>","2020-05-12T10:38:33Z",{"login":512,"avatar_url":513,"html_url":514},{"url":564,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627260844\u002Freactions",{"id":566,"html_url":567,"body_html":568,"created_at":569,"updated_at":569,"author_association":510,"user":570,"reactions":571},627260907,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627260907","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-19 17:01:47\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Can you explain please more, what did you feel migrating your existing applications from older versions of the .Net Core to the newer ones till these 3 years\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Honestly, it was a pain. Older versions of .NET Core changed a lot more than say 2.2 which was released recently. Moving forward, there is less churn and breaking changes, so now is a good time to use .NET Core.\u003C\u002Fp>","2020-05-12T10:38:41Z",{"login":512,"avatar_url":513,"html_url":514},{"url":572,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627260907\u002Freactions",{"id":574,"html_url":575,"body_html":576,"created_at":577,"updated_at":577,"author_association":510,"user":578,"reactions":579},627260955,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627260955","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F75158ae9a2a814d4da2452a548edb9836e8bebb35622828f4a956c3db25ab564\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f39356333663333383533666537633934613165356661393464306637353930363f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Mathias Raacke\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F75158ae9a2a814d4da2452a548edb9836e8bebb35622828f4a956c3db25ab564\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f39356333663333383533666537633934613165356661393464306637353930363f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Mathias Raacke\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-19 18:33:20\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>There actually is a project for serving precompressed static files: \u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fgithub.com\u002FAnderssonPeter\u002FCompressedStaticFiles\">https:\u002F\u002Fgithub.com\u002FAnderssonPeter\u002FCompressedStaticFiles\u003C\u002Fa> :)\u003C\u002Fp>","2020-05-12T10:38:48Z",{"login":512,"avatar_url":513,"html_url":514},{"url":580,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627260955\u002Freactions",{"id":582,"html_url":583,"body_html":584,"created_at":585,"updated_at":585,"author_association":510,"user":586,"reactions":587},627261013,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627261013","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F90f9617dd7cdabf3c3c1385ce684f8436c7ce993b470097bd7383131415494ac\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f62376635323632646663663438626564663635323066383431353566336663613f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Kaushik Roy Chowdhury\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F90f9617dd7cdabf3c3c1385ce684f8436c7ce993b470097bd7383131415494ac\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f62376635323632646663663438626564663635323066383431353566336663613f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"http:\u002F\u002Fwww.kaushikroychowdhury.com\u002F\">Kaushik Roy Chowdhury\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-20 00:32:28\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Hi Rehan,\u003C\u002Fp>\n\u003Cp>A very insightful article from a person who knows the subject and what he's talking about. I have come to like ASP.Net Core after having implemented several DIY projects from asp.net website of Microsoft and putting these on GitHub.\u003C\u002Fp>\n\u003Cp>Personally I have also been tutoring ASP.Net Core on my YouTube channel (\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Fwww.youtube.com\u002Fc\u002FKaushikRoyChowdhury-deveducate\">https:\u002F\u002Fwww.youtube.com\u002Fc\u002FKaushikRoyChowdhury-deveducate\u003C\u002Fa>) on specific playlists, with video tutorials made mainly out of the ASP.Net Core tutorials documented by ASP.Net Core group of collaborators. They are quite supportive as on date.\u003C\u002Fp>\n\u003Cp>However I still consider myself at a beginner (having taken it from 2.0 version on) level and I shall also like to take my knowledge in ASP.Net Core to a specialized level.\u003C\u002Fp>\n\u003Cp>Any advice will be highly regarded.\u003C\u002Fp>","2020-05-12T10:38:55Z",{"login":512,"avatar_url":513,"html_url":514},{"url":588,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627261013\u002Freactions",{"id":590,"html_url":591,"body_html":592,"created_at":593,"updated_at":593,"author_association":510,"user":594,"reactions":595},627261068,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627261068","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fc3d09305de677c56da8f1342dc147f45cfcbf004e80d171990ddbde36f4cf9e4\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f30313561376137653533643461303538613664343364666338396366313665393f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Steed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fc3d09305de677c56da8f1342dc147f45cfcbf004e80d171990ddbde36f4cf9e4\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f30313561376137653533643461303538613664343364666338396366313665393f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Steed\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-20 07:30:30\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>You should deff look at nswag. The idea of centralized models between all your microservices including your angular\u002Fjs frontend has long been a holy grail that devs quested for. Now with nswag, this promise seems to be true.\u003C\u002Fp>","2020-05-12T10:39:02Z",{"login":512,"avatar_url":513,"html_url":514},{"url":596,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627261068\u002Freactions",{"id":598,"html_url":599,"body_html":600,"created_at":601,"updated_at":601,"author_association":510,"user":602,"reactions":603},627261130,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627261130","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F444827ee8c022792c63aad40d102cfb5a3b95d50a79c958d18bd597af79ecfd8\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f37623866656234386131316637383239663963386161326536363262653739323f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Ahmad Mozaffar\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F444827ee8c022792c63aad40d102cfb5a3b95d50a79c958d18bd597af79ecfd8\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f37623866656234386131316637383239663963386161326536363262653739323f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Ahmad Mozaffar\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-20 09:48:21\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Very nice article\u003Cbr \u002F>\nKeep going\u003C\u002Fp>","2020-05-12T10:39:09Z",{"login":512,"avatar_url":513,"html_url":514},{"url":604,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627261130\u002Freactions",{"id":606,"html_url":607,"body_html":608,"created_at":609,"updated_at":609,"author_association":510,"user":610,"reactions":611},627261194,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627261194","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-20 10:31:54\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>There actually is a project for serving precompressed static files: \u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fgithub.com\u002FAnderssonPeter\u002FCompressedStaticFiles\">https:\u002F\u002Fgithub.com\u002FAnderssonPeter\u002FCompressedStaticFiles\u003C\u002Fa> :)\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Thanks, I'll take a look.\u003C\u002Fp>","2020-05-12T10:39:15Z",{"login":512,"avatar_url":513,"html_url":514},{"url":612,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627261194\u002Freactions",{"id":614,"html_url":615,"body_html":616,"created_at":617,"updated_at":617,"author_association":510,"user":618,"reactions":619},627261241,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627261241","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-20 10:33:48\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Hi Rehan,\u003C\u002Fp>\n\u003Cp>A very insightful article from a person who knows the subject and what he's talking about. I have come to like ASP.Net Core after having implemented several DIY projects from asp.net website of Microsoft and putting these on GitHub.\u003C\u002Fp>\n\u003Cp>Personally I have also been tutoring ASP.Net Core on my YouTube channel (\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Fwww.youtube.com\u002Fc\u002FKaushikRoyChowdhury-deveducate\">https:\u002F\u002Fwww.youtube.com\u002Fc\u002FKaushikRoyChowdhury-deveducate\u003C\u002Fa>) on specific playlists, with video tutorials made mainly out of the ASP.Net Core tutorials documented by ASP.Net Core group of collaborators. They are quite supportive as on date.\u003C\u002Fp>\n\u003Cp>However I still consider myself at a beginner (having taken it from 2.0 version on) level and I shall also like to take my knowledge in ASP.Net Core to a specialized level.\u003C\u002Fp>\n\u003Cp>Any advice will be highly regarded.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>I don't think any developers who blog make a living from it. At best it can help differentiate you from other candidates in a job interview. I write blog posts because it can be fun, interacting with readers is fun. I also come back and read my own posts sometimes to see how something is done.\u003C\u002Fp>\n\u003Cp>In terms of advice, blog frequently and have a mix of interesting content. I'm not sure there is more advice I can offer.\u003C\u002Fp>\n\u003Cp>Hope that helps.\u003C\u002Fp>","2020-05-12T10:39:22Z",{"login":512,"avatar_url":513,"html_url":514},{"url":620,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627261241\u002Freactions",{"id":622,"html_url":623,"body_html":624,"created_at":625,"updated_at":625,"author_association":510,"user":626,"reactions":627},627261303,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627261303","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-20 10:34:26\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>You should deff look at nswag. The idea of centralized models between all your microservices including your angular\u002Fjs frontend has long been a holy grail that devs quested for. Now with nswag, this promise seems to be true.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Will take a look at NSwag, definately feels like that is where the community is moving.\u003C\u002Fp>","2020-05-12T10:39:29Z",{"login":512,"avatar_url":513,"html_url":514},{"url":628,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627261303\u002Freactions",{"id":630,"html_url":631,"body_html":632,"created_at":633,"updated_at":633,"author_association":510,"user":634,"reactions":635},627261364,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627261364","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F547c5281d9b326999b3eeae6fc1f49d607a02c5919dc2a9bbd35f6faa1717f3a\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f36366430396665656134323133356537373136333630303065633230353366663f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Ashmeet Singh\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F547c5281d9b326999b3eeae6fc1f49d607a02c5919dc2a9bbd35f6faa1717f3a\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f36366430396665656134323133356537373136333630303065633230353366663f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Ashmeet Singh\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-21 03:39:39\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Why is dotnet core propagation in startups so low? Correct me if this statement is incorrect. What is your take on it?\u003C\u002Fp>","2020-05-12T10:39:36Z",{"login":512,"avatar_url":513,"html_url":514},{"url":636,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627261364\u002Freactions",{"id":638,"html_url":639,"body_html":640,"created_at":641,"updated_at":641,"author_association":510,"user":642,"reactions":643},627261418,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627261418","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2018-12-21 09:34:14\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Why is dotnet core propagation in startups so low? Correct me if this statement is incorrect. What is your take on it?\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Probably a number of factors:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Some people still think about the old Micro$oft and it's bad ways. In the past Microsoft has also not been very good with open source.\u003C\u002Fli>\n\u003Cli>.NET Core is still fairly new and gaining in popularity as compared to other frameworks which have been around for longer.\u003C\u002Fli>\n\u003Cli>There may be a negative association with the old .NET Framework which is considered heavy and slow.\u003C\u002Fli>\n\u003Cli>Microsoft gives incentives to startups. Maybe it should do this more.\u003C\u002Fli>\n\u003Cli>Universities don't teach .NET Core, they prefer Java and C++ in my experience due to the open and free nature of the tools used with those languages. This will literally take a generation to change as new professors are trained and enter the workplace.\u003C\u002Fli>\n\u003Cli>Is .NET Core cool? I don't know. Go and Rust seem to be what's 'cool' at the moment.\u003C\u002Fli>\n\u003Cli>.NET has an image problem, people think enterprises use it.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Some reasons off the top of my head. Not sure if any are true. Probably missing quite a few reasons.\u003C\u002Fp>","2020-05-12T10:39:43Z",{"login":512,"avatar_url":513,"html_url":514},{"url":644,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627261418\u002Freactions",{"id":646,"html_url":647,"body_html":648,"created_at":649,"updated_at":649,"author_association":510,"user":650,"reactions":651},627261480,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627261480","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fe822e2f02f1cd2de1b95c98a99739919d5cd95a3ab4c01c54fa7e976046b3799\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f65633832633930396561366230333638623966323733363231343735343331663f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Shahdat Hosain\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Fe822e2f02f1cd2de1b95c98a99739919d5cd95a3ab4c01c54fa7e976046b3799\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f65633832633930396561366230333638623966323733363231343735343331663f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Shahdat Hosain\u003C\u002Fstrong> commented on \u003Cstrong>2019-01-13 00:53:27\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>I would add nopCommerce in \"Who is using it?\" using it section. nopCommerce is open source one of the popular e-commerce platform which is built on ASP.NET Core.\u003C\u002Fp>","2020-05-12T10:39:50Z",{"login":512,"avatar_url":513,"html_url":514},{"url":652,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627261480\u002Freactions",{"id":654,"html_url":655,"body_html":656,"created_at":657,"updated_at":657,"author_association":510,"user":658,"reactions":659},627261535,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627261535","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F3935ae0108770431b75ea45edd6efdd01fb55ed162a25684035a1461d1b4a9db\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f30363966363130363835613961333538653731386461626364323562396538653f733d393626643d6d6d26723d67\">\u003Cimg alt=\"rod macdonald\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F3935ae0108770431b75ea45edd6efdd01fb55ed162a25684035a1461d1b4a9db\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f30363966363130363835613961333538653731386461626364323562396538653f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>rod macdonald\u003C\u002Fstrong> commented on \u003Cstrong>2019-01-13 01:07:27\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>ASP.NET Core will be a mature platform when .NET Core has embraced WebAssembly and the future of a unified XAML and HTML UI is clear.\u003C\u002Fp>","2020-05-12T10:39:57Z",{"login":512,"avatar_url":513,"html_url":514},{"url":660,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627261535\u002Freactions",{"id":662,"html_url":663,"body_html":664,"created_at":665,"updated_at":665,"author_association":510,"user":666,"reactions":667},627261592,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627261592","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2019-01-14 08:52:26\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>ASP.NET Core will be a mature platform when .NET Core has embraced WebAssembly and the future of a unified XAML and HTML UI is clear.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>When Blazor (which uses WebAssembly) came out I was really excited (I did a lot of WPF\u002FSilverlight\u002FWindows Phone 7, 8\u002FUWP\u002FXAML a few years ago). However, I now suspect that it won't catch on outside of the enterprise companies. That's not to say that Blazor is not cool and the XAML developer in me doesn't love it, but I don't think it will be as wildly popular as some people think.\u003C\u002Fp>\n\u003Cp>Why? Well, in the real world when you build a site using say React or Vue, you also use a bunch of other libraries to get things done and right now Blazor simply does not have that massive pool of open source projects available to it. Also, you know what other language can be compiled to WebAssembly? JavaScript! There is already a lot of web based software built in JavaScript, while all other WebAssembly languages (like Rust which seems to be the most popular) simply do not, they just need to flip a compiler switch and they can compile to WebAssembly.\u003C\u002Fp>\n\u003Cp>I've thought about blogging about this but I don't want to come off so negative...\u003C\u002Fp>","2020-05-12T10:40:04Z",{"login":512,"avatar_url":513,"html_url":514},{"url":668,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627261592\u002Freactions",{"id":670,"html_url":671,"body_html":672,"created_at":673,"updated_at":673,"author_association":510,"user":674,"reactions":675},627261654,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627261654","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F40a6146ddb88ccffc7e642b4f84d1f6a4ad1c973bd4ba7be257132deab3c1c03\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f38343130326136363863383266373163393165313732616233396639386262623f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Tony\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F40a6146ddb88ccffc7e642b4f84d1f6a4ad1c973bd4ba7be257132deab3c1c03\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f38343130326136363863383266373163393165313732616233396639386262623f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Tony\u003C\u002Fstrong> commented on \u003Cstrong>2019-01-14 18:07:02\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>My time is too valuable. I'm waiting for things to stabilize. When 3.0 is released, I will take a look at it. I look forward to the performance improvements.\u003C\u002Fp>","2020-05-12T10:40:12Z",{"login":512,"avatar_url":513,"html_url":514},{"url":676,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627261654\u002Freactions",{"id":678,"html_url":679,"body_html":680,"created_at":681,"updated_at":682,"author_association":510,"user":683,"reactions":684},627261702,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627261702","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F0e8ec78b58ef547e43cdf0c82875496ea9a6083ea40023356a9cfa2145585e2e\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32356231336435366566383536336236366236626532353633356633626437303f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Keith Thomas\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F0e8ec78b58ef547e43cdf0c82875496ea9a6083ea40023356a9cfa2145585e2e\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32356231336435366566383536336236366236626532353633356633626437303f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Keith Thomas\u003C\u002Fstrong> commented on \u003Cstrong>2019-01-23 21:32:37\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>The poor souls who wrote Objective C, have jumped to Swift.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Poor souls? Objective-C jobs pay very well actually.\u003C\u002Fp>\n\u003Cp>\"Well, I'm familiar with Node.js and the situation there is bordering on silly. Packages are very unstable and constantly being rev'ed. Keeping up and staying on latest is a constant battle almost every day.\"\u003C\u002Fp>\n\u003Cp>Why would anyone want to keep Node.js and all NPM packages up to date in a project almost every day? Maybe every few months at most, unless there are security issues reported in a package and you are required to install a newer version of it. If a JavaScript project is stable and working then there is not much to be gained from constant updates.\u003C\u002Fp>","2020-05-12T10:40:19Z","2020-05-12T12:07:12Z",{"login":512,"avatar_url":513,"html_url":514},{"url":685,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627261702\u002Freactions",{"id":687,"html_url":688,"body_html":689,"created_at":690,"updated_at":690,"author_association":510,"user":691,"reactions":692},627261756,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627261756","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2019-01-24 09:47:41\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>My time is too valuable. I'm waiting for things to stabilize. When 3.0 is released, I will take a look at it. I look forward to the performance improvements.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Everyone has a different level of stability they require and their own risk profile. That's a valid decision.\u003C\u002Fp>","2020-05-12T10:40:26Z",{"login":512,"avatar_url":513,"html_url":514},{"url":693,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627261756\u002Freactions",{"id":695,"html_url":696,"body_html":697,"created_at":698,"updated_at":699,"author_association":510,"user":700,"reactions":701},627261801,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627261801","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2019-01-24 09:50:29\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cblockquote>\n\u003Cp>The poor souls who wrote Objective C, have jumped to Swift.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Poor souls? Objective-C jobs pay very well actually.\u003C\u002Fp>\n\u003Cp>\"Well, I'm familiar with Node.js and the situation there is bordering on silly. Packages are very unstable and constantly being rev'ed. Keeping up and staying on latest is a constant battle almost every day.\"\u003C\u002Fp>\n\u003Cp>Why would anyone want to keep Node.js and all NPM packages up to date in a project almost every day? Maybe every few months at most, unless there are security issues reported in a package and you are required to install a newer version of it. If a JavaScript project is stable and working then there is not much to be gained from constant updates.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cblockquote>\n\u003Cp>Poor souls? Objective-C jobs pay very well actually.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>There are well paid developers still writing COBOL or working with mainframes (I know one of these). They are well paid but a job can be well paid and still be a bit rubbish.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Why would anyone want to keep Node.js and all NPM packages up to date in a project almost every day? Maybe every few months at most, unless there are security issues reported in a package and you are required to install a newer version of it. If a JavaScript project is stable and working then there is not much to be gained from constant updates.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Security vulnerabilities are common on NPM, probably due to the shear number of packages involved. New features, better performance, faster...stronger...longer, there are a lot of reasons to be upgrading more then every few months. Your mileage may vary.\u003C\u002Fp>","2020-05-12T10:40:33Z","2020-05-12T12:07:22Z",{"login":512,"avatar_url":513,"html_url":514},{"url":702,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627261801\u002Freactions",{"id":704,"html_url":705,"body_html":706,"created_at":707,"updated_at":707,"author_association":510,"user":708,"reactions":709},627261846,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627261846","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F2eb838a9cefeac25461e81f6b2835452a3fa46e0de529f34c9b34c1d31b1e0d1\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f65633136303735663663303337343966653961633232393336353463316138313f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Roger\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F2eb838a9cefeac25461e81f6b2835452a3fa46e0de529f34c9b34c1d31b1e0d1\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f65633136303735663663303337343966653961633232393336353463316138313f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Roger\u003C\u002Fstrong> commented on \u003Cstrong>2019-02-19 04:29:03\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>I think its overly complex. Just making a simple input form post has turned into a weekend project of frustration, all their tutorials assume you want to use the entity framework and other related Microsoft APIs, any deviation from their 50 page tutorial (Spread out over multiple webpages) results in banging your head against a wall.\u003C\u002Fp>\n\u003Cp>In the end you're left with a simple page that can list and submit records. ::slow clap::\u003C\u002Fp>\n\u003Cp>From an outsiders perspective, it seems like a great unintuitive mess.\u003C\u002Fp>\n\u003Cp>The simple act of binding client\u002Fserver data requires so much fuss and hand holding at every step, segmenting a simple page into different elements is a huge pain in the ass if you want to do anything beyond just showing basic data, their automated naming structure system boggles the mind (Why would you place logic based on filenames in 2019?), security seems to be off by default on everything (God forbid you forget an attribute somewhere), the API seems to be moving so fast that tutorials made just last year is already out of date (Do I use partial views or view components? If I use a view component to post data I have to implement the receiving function in the view and not the component? Then what is the point in compartmentalizing it?).\u003C\u002Fp>\n\u003Cp>If adaptation rate seems slow, I think it might be because it just seems like a huge mess.\u003C\u002Fp>\n\u003Cp>Productivity is king. At least from my perspective; asp.net core does not garner productivity.\u003C\u002Fp>\n\u003Cp>Which is a shame, because I do love the C# language and Visual Studio.\u003C\u002Fp>","2020-05-12T10:40:39Z",{"login":512,"avatar_url":513,"html_url":514},{"url":710,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627261846\u002Freactions",{"id":712,"html_url":713,"body_html":714,"created_at":715,"updated_at":715,"author_association":510,"user":716,"reactions":717},627261895,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627261895","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2019-02-19 09:16:37\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>I think its overly complex. Just making a simple input form post has turned into a weekend project of frustration, all their tutorials assume you want to use the entity framework and other related Microsoft APIs, any deviation from their 50 page tutorial (Spread out over multiple webpages) results in banging your head against a wall.\u003C\u002Fp>\n\u003Cp>In the end you're left with a simple page that can list and submit records. ::slow clap::\u003C\u002Fp>\n\u003Cp>From an outsiders perspective, it seems like a great unintuitive mess.\u003C\u002Fp>\n\u003Cp>The simple act of binding client\u002Fserver data requires so much fuss and hand holding at every step, segmenting a simple page into different elements is a huge pain in the ass if you want to do anything beyond just showing basic data, their automated naming structure system boggles the mind (Why would you place logic based on filenames in 2019?), security seems to be off by default on everything (God forbid you forget an attribute somewhere), the API seems to be moving so fast that tutorials made just last year is already out of date (Do I use partial views or view components? If I use a view component to post data I have to implement the receiving function in the view and not the component? Then what is the point in compartmentalizing it?).\u003C\u002Fp>\n\u003Cp>If adaptation rate seems slow, I think it might be because it just seems like a huge mess.\u003C\u002Fp>\n\u003Cp>Productivity is king. At least from my perspective; asp.net core does not garner productivity.\u003C\u002Fp>\n\u003Cp>Which is a shame, because I do love the C# language and Visual Studio.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>A lot of what you said resonates. Productivity in general has gone down. Learning all this stuff took me considerable time. Unfortunately, the web is complex and that complexity is only growing at a fairly rapid rate. Still, it keeps us in a job! Some docs do show the use of EF Core but I'll forgive them that. I think Microsoft has really upped it's game with the docs. We now have some of the best docs in the industry.\u003C\u002Fp>\n\u003Cp>Sounds like most of the trouble you are having is with server side rendering of HTML i.e. Razor pages or MVC views. I personally don't use that stuff and only use ASP.NET Core for API's. The industry has moved on to SPA's or even server rendered SPA's like Nuxt.js (based on Vue.js which I recommend) or Next.js (based on React.js).\u003C\u002Fp>\n\u003Cp>As for security, ASP.NET Core is way more secure than it used to be but security is an ever lasting cat and mouse game, so this is always going to be a complex moving target.\u003C\u002Fp>\n\u003Cp>As for adoption rate, take a look at the StackOverflow developer survey, adoption is growing very quickly and it's a much loved framework that people enjoy.\u003C\u002Fp>","2020-05-12T10:40:46Z",{"login":512,"avatar_url":513,"html_url":514},{"url":718,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627261895\u002Freactions",{"id":720,"html_url":721,"body_html":722,"created_at":723,"updated_at":723,"author_association":510,"user":724,"reactions":725},627261944,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627261944","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F7f2d090d2fe38f814de254e0684796274166fdf832188fdf23e4cd8a0d0264b6\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f35336663303433313061353830396232613163336531643632333932663436393f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Luca Gabi\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F7f2d090d2fe38f814de254e0684796274166fdf832188fdf23e4cd8a0d0264b6\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f35336663303433313061353830396232613163336531643632333932663436393f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"http:\u002F\u002F-\u002F\">Luca Gabi\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2019-03-02 19:44:54\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Hi, I have a question if I may: how come Asp Net Core has no projects to speed up development, is it to young, maybe ?\u003C\u002Fp>\n\u003Cp>For example PHP has a number of such projects that generate CRUD from a defined model and also have ready made user and roles management fetures and code modules:\u003Cbr \u002F>\n\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Flaravelvoyager.com\u002F\">https:\u002F\u002Flaravelvoyager.com\u002F\u003C\u002Fa>\u003Cbr \u002F>\n\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Fpyrocms.com\u002F\">https:\u002F\u002Fpyrocms.com\u002F\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>This is a reason for many to chose PHP Laravel (blade viewengine) framework over Asp Net Core MVC (razor viewengine).\u003C\u002Fp>","2020-05-12T10:40:53Z",{"login":512,"avatar_url":513,"html_url":514},{"url":726,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627261944\u002Freactions",{"id":728,"html_url":729,"body_html":730,"created_at":731,"updated_at":731,"author_association":510,"user":732,"reactions":733},627262007,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627262007","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2019-03-02 20:37:36\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Hi, I have a question if I may: how come Asp Net Core has no projects to speed up development, is it to young, maybe ?\u003C\u002Fp>\n\u003Cp>For example PHP has a number of such projects that generate CRUD from a defined model and also have ready made user and roles management fetures and code modules:\u003Cbr \u002F>\n\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Flaravelvoyager.com\u002F\">https:\u002F\u002Flaravelvoyager.com\u002F\u003C\u002Fa>\u003Cbr \u002F>\n\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Fpyrocms.com\u002F\">https:\u002F\u002Fpyrocms.com\u002F\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>This is a reason for many to chose PHP Laravel (blade viewengine) framework over Asp Net Core MVC (razor viewengine).\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>There are quite a few project templates available (I even author some called \u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fgithub.com\u002FDotnet-Boxed\u002FTemplates\">Dotnet Boxed\u003C\u002Fa>). If you use Visual Studio, you can use the built in scaffolding to generate Controllers and action methods that do CRUD around some given model. Regarding role management, unclear what you're asking since I'm not familiar with Laravel but it's pretty trivial to setup roles and auth. Also we have a world class open source product in IdentityServer4 for OAuth and Open ID Connect.\u003C\u002Fp>\n\u003Cp>It is still a fairly young project. It does take time for third party open source projects which boost productivity to spring up but it's happening slowly and surely.\u003C\u002Fp>","2020-05-12T10:41:01Z",{"login":512,"avatar_url":513,"html_url":514},{"url":734,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627262007\u002Freactions",{"id":736,"html_url":737,"body_html":738,"created_at":739,"updated_at":739,"author_association":510,"user":740,"reactions":741},627262066,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627262066","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F9d04e71f88a6466c42e48802e3f3957af37f323d656ce4a14de91afd2cd5eb53\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f35386438353634306630383132356638646361653738633037306438636232643f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Trung Tran\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F9d04e71f88a6466c42e48802e3f3957af37f323d656ce4a14de91afd2cd5eb53\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f35386438353634306630383132356638646361653738633037306438636232643f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Trung Tran\u003C\u002Fstrong> commented on \u003Cstrong>2019-03-03 11:44:46\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>What a great post! I have solved many of my confusions before. Many thanks.\u003Cbr \u002F>\n.NET Core is an amazing thing I think, but there are too many things to learn nowadays so that will be a headache :)\u003Cbr \u002F>\nBtw, can you advise me some learning paths as a .NET Core Backend Dev.\u003Cbr \u002F>\nI'm trying the following things:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Web Api\u003C\u002Fli>\n\u003Cli>Security\u003Cbr \u002F>\nI'm a bit hesitant about the next steps: Dockers or something ...\u003Cbr \u002F>\nLove hearing your advices!\u003C\u002Fli>\n\u003C\u002Ful>","2020-05-12T10:41:08Z",{"login":512,"avatar_url":513,"html_url":514},{"url":742,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627262066\u002Freactions",{"id":744,"html_url":745,"body_html":746,"created_at":747,"updated_at":747,"author_association":510,"user":748,"reactions":749},627262126,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627262126","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2019-03-03 12:13:27\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>What a great post! I have solved many of my confusions before. Many thanks.\u003Cbr \u002F>\n.NET Core is an amazing thing I think, but there are too many things to learn nowadays so that will be a headache :)\u003Cbr \u002F>\nBtw, can you advise me some learning paths as a .NET Core Backend Dev.\u003Cbr \u002F>\nI'm trying the following things:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Web Api\u003C\u002Fli>\n\u003Cli>Security\u003Cbr \u002F>\nI'm a bit hesitant about the next steps: Dockers or something ...\u003Cbr \u002F>\nLove hearing your advices!\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fblockquote>\n\u003Cp>Sign up for a PluralSight account and\u002For read every page of the ASP.NET Core docs because they are really great. Docker is now the best way to deploy an API or website, so definitely also worth learning.\u003C\u002Fp>","2020-05-12T10:41:15Z",{"login":512,"avatar_url":513,"html_url":514},{"url":750,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627262126\u002Freactions",{"id":752,"html_url":753,"body_html":754,"created_at":755,"updated_at":755,"author_association":510,"user":756,"reactions":757},627262173,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F82#issuecomment-627262173","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F9d04e71f88a6466c42e48802e3f3957af37f323d656ce4a14de91afd2cd5eb53\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f35386438353634306630383132356638646361653738633037306438636232643f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Trung Tran\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F9d04e71f88a6466c42e48802e3f3957af37f323d656ce4a14de91afd2cd5eb53\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f35386438353634306630383132356638646361653738633037306438636232643f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Trung Tran\u003C\u002Fstrong> commented on \u003Cstrong>2019-03-04 09:35:14\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Sign up for a PluralSight account and\u002For read every page of the ASP.NET Core docs because they are really great. Docker is now the best way to deploy an API or website, so definitely also worth learning.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Thanks. I will try soon.\u003C\u002Fp>","2020-05-12T10:41:22Z",{"login":512,"avatar_url":513,"html_url":514},{"url":758,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627262173\u002Freactions","2018-12-18T00:00:00+00:00","2019-01-12T00:00:00+00:00","ASP.NET Core a large developer base, a large number of GitHub projects, Stack Overflow questions, bloggers and companies who use it. It's a mature platform.","md",[764,766,767,768,769,770,771,772,773,774,775,776],{"depth":765,"value":89},1,{"depth":765,"value":145},{"depth":765,"value":183},{"depth":765,"value":209},{"depth":765,"value":238},{"depth":765,"value":281},{"depth":765,"value":321},{"depth":497,"value":339},{"depth":497,"value":372},{"depth":497,"value":415},{"depth":497,"value":450},{"depth":765,"value":479},"\u002Fimages\u002Fhero\u002FRocket-1366x768.jpg",{},"\u002Fis-asp-net-core-now-a-mature-platform\u002F","posts\u002F2018\u002Fis-asp-net-core-now-a-mature-platform\u002Findex",[782,783,784,785,786],".NET Core","ASP.NET Core","HTTP\u002F2","HTTP\u002F3","Lets Encrypt",9,[789,793,797,802,807,810,813,817,821,825,828,832,837,840,843,847,851,855,858,862,866,870,873,878,883,887,890,893,896,901,905,908,913,917,921,925,928,932,936,940,944,948,951,955,958,962,966,970,974,977,981,985,988,991,995,999,1003,1007,1011,1015,1019,1023,1027,1030,1033,1036,1040,1044,1047,1051,1054,1057,1060,1063,1067,1068,1071,1074,1078,1082,1085,1088,1091,1095,1099,1103,1107,1110,1113,1118,1121,1124,1128,1131,1135,1139,1142,1146,1149,1152,1156,1160,1164,1168],{"title":790,"permalink":791,"heroImage":792,"timeToRead":765},"Just Start - The First Blog Post","\u002Fjust-start-the-first-blog-post\u002F","\u002Fimages\u002Fhero\u002FJust-Start-1366x768.png",{"title":794,"permalink":795,"heroImage":796,"timeToRead":497},"ConfigureAwait in Task Parallel Library (TPL)","\u002Fconfigureawait-task-parallel-library\u002F","\u002Fimages\u002Fhero\u002FMicrosoft-.NET-1366x768.png",{"title":798,"permalink":799,"heroImage":800,"timeToRead":801},"Stop The Brace Wars, Use StyleCop","\u002Fstop-brace-wars-use-stylecop\u002F","\u002Fimages\u002Fhero\u002FStyleCop-1366x768.png",3,{"title":803,"permalink":804,"heroImage":805,"timeToRead":806},"Reactive Extensions (Rx) - Part 1 - Replacing C# Events","\u002Freactive-extensions-part1-replacing-events\u002F","\u002Fimages\u002Fhero\u002FReactive-Extensions-1366x768.png",4,{"title":808,"permalink":809,"heroImage":805,"timeToRead":801},"Reactive Extensions (Rx) - Part 2 - Wrapping C# Events","\u002Freactive-extensions-part2-wrapping-events\u002F",{"title":811,"permalink":812,"heroImage":805,"timeToRead":497},"Reactive Extensions (Rx) - Part 3 - Naming Conventions","\u002Freactive-extensions-part3-naming-conventions\u002F",{"title":814,"permalink":815,"heroImage":816,"timeToRead":801},"WPF Metro Part 1 - Modern UI for WPF","\u002Fwpf-metro-part1-modern-ui-for-wpf\u002F","\u002Fimages\u002Fhero\u002FModern-UI-for-WPF-1366x768.png",{"title":818,"permalink":819,"heroImage":820,"timeToRead":801},"WPF Metro Part 2 - MahApps Metro","\u002Fwpf-metro-part2-mahapps-metro\u002F","\u002Fimages\u002Fhero\u002FMahApps-Metro-1366x768.png",{"title":822,"permalink":823,"heroImage":824,"timeToRead":801},"Windows 8.1 TouchScreen Gaming Laptops","\u002Fwindows-8-touchscreen-gaming-laptops\u002F","\u002Fimages\u002Fhero\u002FFry-Shutup-And-Take-My-Money-1366x768.png",{"title":826,"permalink":827,"heroImage":805,"timeToRead":801},"Reactive Extensions (Rx) - Part 4 - Replacing Timers","\u002Freactive-extensions-part4-replacing-timers\u002F",{"title":829,"permalink":830,"heroImage":831,"timeToRead":497},"WPF Metro Part 3 - Elysium","\u002Fwpf-metro-part3-elysium\u002F","\u002Fimages\u002Fhero\u002FElysium-1366x768.png",{"title":833,"permalink":834,"heroImage":835,"timeToRead":836},"WPF Metro Part 4 - Elysium Extra","\u002Fwpf-metro-part4-elysium-extra\u002F","\u002Fimages\u002Fhero\u002FElysium-Extra-1366x768.png",8,{"title":838,"permalink":839,"heroImage":805,"timeToRead":806},"Reactive Extensions (Rx) - Part 5 - Awaiting Observables","\u002Freactive-extensions-part5-awaiting-observables\u002F",{"title":841,"permalink":842,"heroImage":796,"timeToRead":836},"GetHashCode Made Easy","\u002Fgethashcode-made-easy\u002F",{"title":844,"permalink":845,"heroImage":805,"timeToRead":846},"Reactive Extensions (Rx) - Part 6 - Task ToObservable","\u002Freactive-extensions-part6-task-toobservable\u002F",5,{"title":848,"permalink":849,"heroImage":850,"timeToRead":765},"Portable Class Library (PCL) version of NotificationsExtensions NuGet package","\u002Fportable-class-library-version-of-notificationsextensions-nuget-package\u002F","\u002Fimages\u002Fhero\u002FNuGet-1366x768.png",{"title":852,"permalink":853,"heroImage":854,"timeToRead":846},"Model-View-ViewModel (MVVM) - Part 1 - Overview","\u002Fmodel-view-viewmodel-mvvm-part1-overview\u002F","\u002Fimages\u002Fhero\u002FMVVM-1366x768.png",{"title":856,"permalink":857,"heroImage":854,"timeToRead":806},"Model-View-ViewModel (MVVM) - Part 2 - IDisposable","\u002Fmodel-view-viewmodel-mvvm-part2-idisposable\u002F",{"title":859,"permalink":860,"heroImage":854,"timeToRead":861},"Model-View-ViewModel (MVVM) - Part 3 - INotifyPropertyChanged","\u002Fmodel-view-viewmodel-mvvm-part3-inotifypropertychanged\u002F",11,{"title":863,"permalink":864,"heroImage":865,"timeToRead":801},"Naming Conventions","\u002Fnaming-conventions\u002F","\u002Fimages\u002Fhero\u002FNaming-Conventions-1366x768.png",{"title":867,"permalink":868,"heroImage":854,"timeToRead":869},"Model-View-ViewModel (MVVM) - Part 4 - INotifyDataErrorInfo","\u002Fmodel-view-viewmodel-mvvm-part4-inotifydataerrorinfo\u002F",12,{"title":871,"permalink":872,"heroImage":835,"timeToRead":806},"Elysium Extra 1.1 Released","\u002Felysium-extra-1-1-released\u002F",{"title":874,"permalink":875,"heroImage":876,"timeToRead":877},"ASP.NET Core Boilerplate","\u002Fasp-net-mvc-boilerplate\u002F","\u002Fimages\u002Fhero\u002FASP.NET-Core-Boilerplate-1366x768.png",7,{"title":879,"permalink":880,"heroImage":881,"timeToRead":882},"Internet Favicon Madness (Updated)","\u002Finternet-favicon-madness\u002F","\u002Fimages\u002Fhero\u002FFavicons-1366x768.png",17,{"title":884,"permalink":885,"heroImage":886,"timeToRead":877},"Custom Visual Studio Project Templates","\u002Fcustom-visual-studio-project-templates\u002F","\u002Fimages\u002Fhero\u002FVisual-Studio-1366x768.png",{"title":888,"permalink":889,"heroImage":886,"timeToRead":801},"Configuration File Transforms In Visual Studio Should Be Built In","\u002Fconfiguration-file-transforms-in-visual-studio-should-be-built-in\u002F",{"title":891,"permalink":892,"heroImage":876,"timeToRead":861},"Securing the ASP.NET MVC Web.config","\u002Fsecuring-the-aspnet-mvc-web-config\u002F",{"title":894,"permalink":895,"heroImage":805,"timeToRead":497},"Reactive Extensions (Rx) - Part 7 - Sample Events","\u002Freactive-extensions-part7-sample-events\u002F",{"title":897,"permalink":898,"heroImage":899,"timeToRead":900},"NWebSec ASP.NET MVC Security Through HTTP Headers","\u002Fnwebsec-asp-net-mvc-security-through-http-headers\u002F","\u002Fimages\u002Fhero\u002FNWebSec-1366x768.png",6,{"title":902,"permalink":903,"heroImage":904,"timeToRead":102},"Content Security Policy (CSP) for ASP.NET MVC","\u002Fcontent-security-policy-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FContent-Security-Policy-CSP-for-ASP.NET-MVC-1366x768.png",{"title":906,"permalink":907,"heroImage":796,"timeToRead":846},"C# 6.0 - Saving Developers From Themselves","\u002Fc-6-0-saving-developers-from-themselves\u002F",{"title":909,"permalink":910,"heroImage":911,"timeToRead":912},"Building RSS\u002FAtom Feeds for ASP.NET MVC","\u002Fbuilding-rssatom-feeds-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FRSS-And-Atom-1366x768.png",19,{"title":914,"permalink":915,"heroImage":916,"timeToRead":861},"Canonical URL's for ASP.NET MVC","\u002Fcanonical-urls-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FLink-Juice-1366x768.png",{"title":918,"permalink":919,"heroImage":920,"timeToRead":806},"Dynamically Generating Robots.txt Using ASP.NET MVC","\u002Fdynamically-generating-robots-txt-using-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FRobots.txt-1366x768.jpg",{"title":922,"permalink":923,"heroImage":924,"timeToRead":806},"Minifying HTML for ASP.NET MVC","\u002Fminifying-html-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FThe-Internet-Is-A-Series-Of-Tubes-1366x768.jpg",{"title":926,"permalink":927,"heroImage":876,"timeToRead":497},"Whats New in ASP.NET Core Boilerplate","\u002Fwhats-new-in-asp-net-5-mvc-6-boilerplate\u002F",{"title":929,"permalink":930,"heroImage":931,"timeToRead":877},"Dynamically Generating Sitemap.xml for ASP.NET MVC","\u002Fdynamically-generating-sitemap-xml-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FSitemaps-1366x768.png",{"title":933,"permalink":934,"heroImage":935,"timeToRead":497},"So I've Been Awarded Microsoft MVP Status!","\u002Fso-ive-been-awarded-microsoft-mvp-status\u002F","\u002Fimages\u002Fhero\u002FMicrosoft-MVP-1366x768.png",{"title":937,"permalink":938,"heroImage":939,"timeToRead":765},".NET Big-O Algorithm Complexity Cheat Sheet","\u002Fnet-big-o-algorithm-complexity-cheat-sheet\u002F","\u002Fimages\u002Fhero\u002FNET-Big-O-Algorithm-Complexity-Cheat-Sheet-1366x768.jpg",{"title":941,"permalink":942,"heroImage":943,"timeToRead":801},"Logging with Serilog.Exceptions","\u002Flogging-with-serilog-exceptions\u002F","\u002Fimages\u002Fhero\u002FSerilog.Exceptions-1366x768.png",{"title":945,"permalink":946,"heroImage":947,"timeToRead":765},"Make Certificate","\u002Fmake-certificate\u002F","\u002Fimages\u002Fhero\u002FMake-Certificate-1366x768.png",{"title":172,"permalink":949,"heroImage":950,"timeToRead":497},"\u002Fcolorful-console\u002F","\u002Fimages\u002Fhero\u002FColorful.Console-1366x768.png",{"title":952,"permalink":953,"heroImage":954,"timeToRead":801},"Subresource Integrity TagHelper Using ASP.NET Core - Part 1","\u002Fsubresource-integrity-taghelper-using-asp-net-core\u002F","\u002Fimages\u002Fhero\u002FMake-Security-Easy-1366x768.png",{"title":956,"permalink":957,"heroImage":954,"timeToRead":806},"Subresource Integrity TagHelper Using ASP.NET Core - Part 2","\u002Fsubresource-integrity-taghelper-using-asp-net-core-part-2\u002F",{"title":959,"permalink":960,"heroImage":961,"timeToRead":846},"Social TagHelpers for ASP.NET Core","\u002Fsocial-taghelpers-for-asp-net-core\u002F","\u002Fimages\u002Fhero\u002FSocial-Media-1366x768.png",{"title":963,"permalink":964,"heroImage":965,"timeToRead":900},"Azure Active Directory Versus Identity Server","\u002Fazure-active-directory-versus-identity-server\u002F","\u002Fimages\u002Fhero\u002FAzure-Active-Directory-Versus-Identity-Server-1366x768.png",{"title":967,"permalink":968,"heroImage":969,"timeToRead":497},"ASP.NET Core Fluent Interface Extensions","\u002Fasp-net-core-fluent-interface-extensions\u002F","\u002Fimages\u002Fhero\u002FFluent-Interface-All-The-Things-1366x768.png",{"title":971,"permalink":972,"heroImage":973,"timeToRead":861},"NGINX for ASP.NET Core In-Depth","\u002Fnginx-asp-net-core-depth\u002F","\u002Fimages\u002Fhero\u002FNGINX-1366x768.png",{"title":975,"permalink":976,"heroImage":796,"timeToRead":497},"The Dotnet Watch Tool","\u002Fthe-dotnet-watch-tool\u002F",{"title":978,"permalink":979,"heroImage":980,"timeToRead":806},"Making Application Insights Fast & Secure","\u002Fmaking-application-insights-fast-and-secure\u002F","\u002Fimages\u002Fhero\u002FApplication-Insights-1366x768.png",{"title":982,"permalink":983,"heroImage":984,"timeToRead":877},"SEO Friendly URL's for ASP.NET Core","\u002Fseo-friendly-urls-asp-net-core\u002F","\u002Fimages\u002Fhero\u002FSearch-Engine-Optimization-SEO-1366x768.png",{"title":986,"permalink":987,"heroImage":805,"timeToRead":765},"Reactive Extensions (Rx) - Part 8 - Timeouts","\u002Freactive-extensions-rx-part-8-timeouts\u002F",{"title":989,"permalink":990,"heroImage":796,"timeToRead":806},"Custom Project Templates Using dotnet new","\u002Fcustom-project-templates-using-dotnet-new\u002F",{"title":992,"permalink":993,"heroImage":994,"timeToRead":836},"Cross-Platform DevOps for .NET Core","\u002Fcross-platform-devops-net-core\u002F","\u002Fimages\u002Fhero\u002FDotnet-Cake-AppVeyor-Travis-1366x768.png",{"title":996,"permalink":997,"heroImage":998,"timeToRead":877},"Cleaning Up CSPROJ","\u002Fcleaning-up-csproj\u002F","\u002Fimages\u002Fhero\u002FCleaning-Up-CSPROJ-1366x768.png",{"title":1000,"permalink":1001,"heroImage":1002,"timeToRead":787},"dotnet new Feature Selection","\u002Fdotnet-new-feature-selection\u002F","\u002Fimages\u002Fhero\u002FWho-Wants-To-Be-A-Millionaire-1366x768.png",{"title":1004,"permalink":1005,"heroImage":1006,"timeToRead":806},"ASP.NET Core Lazy Command Pattern","\u002Fasp-net-core-lazy-command-pattern\u002F","\u002Fimages\u002Fhero\u002FASP.NET-Core-Lazy-Command-Pattern-1366x768.png",{"title":1008,"permalink":1009,"heroImage":1010,"timeToRead":497},"Structured Data using Schema.NET","\u002Fstructured-data-using-schema-net\u002F","\u002Fimages\u002Fhero\u002FSchema.NET-1366x768.png",{"title":1012,"permalink":1013,"heroImage":1014,"timeToRead":900},"Keeping Up With Software Development","\u002Fkeeping-software-development\u002F","\u002Fimages\u002Fhero\u002FKeeping-up-with-Software-Development-1366x768.png",{"title":1016,"permalink":1017,"heroImage":1018,"timeToRead":497},"A Very Generic .editorconfig File (Updated)","\u002Fgeneric-editorconfig-file\u002F","\u002Fimages\u002Fhero\u002FA-Very-Generic-Editorconfig-File-1366x768.png",{"title":1020,"permalink":1021,"heroImage":1022,"timeToRead":846},"ASP.NET Core Caching in Practice","\u002Fasp-net-core-caching-in-practice\u002F","\u002Fimages\u002Fhero\u002FASP.NET-Core-Caching-in-Practice-1366x768.png",{"title":1024,"permalink":1025,"heroImage":1026,"timeToRead":765},"Docker Read-Only File Systems","\u002Fdocker-read-file-systems\u002F","\u002Fimages\u002Fhero\u002FDocker-1366x768.png",{"title":1028,"permalink":1029,"heroImage":1026,"timeToRead":801},"Docker Labels in Depth","\u002Fdocker-labels-depth\u002F",{"title":1031,"permalink":1032,"heroImage":1026,"timeToRead":806},"Useful Docker Images - Part 1","\u002Fuseful-docker-images-part1\u002F",{"title":1034,"permalink":1035,"heroImage":1026,"timeToRead":846},"Useful Docker Images - Part 2","\u002Fuseful-docker-images-part2\u002F",{"title":1037,"permalink":1038,"heroImage":1039,"timeToRead":806},"Writing your Webpack configuration in TypeScript","\u002Fwriting-your-webpack-configuration-in-typescript\u002F","\u002Fimages\u002Fhero\u002FTypeScript-1366x768.png",{"title":1041,"permalink":1042,"heroImage":1043,"timeToRead":846},"Writing Code while Asleep","\u002Fwriting-code-asleep\u002F","\u002Fimages\u002Fhero\u002FWhile-Alive-Eat-Sleep-Code-Repeat-1366x768.png",{"title":1045,"permalink":1046,"heroImage":796,"timeToRead":497},"The Dotnet Watch Tool Revisited","\u002Fthe-dotnet-watch-tool-revisited\u002F",{"title":1048,"permalink":1049,"heroImage":1050,"timeToRead":497},".NET Boxed","\u002Fnet-boxed\u002F","\u002Fimages\u002Fhero\u002FDotnet-Boxed-1366x768.png",{"title":1052,"permalink":1053,"heroImage":796,"timeToRead":497},"Migrating to Entity Framework Core Seed Data","\u002Fmigrating-to-entity-framework-core-seed-data\u002F",{"title":1055,"permalink":1056,"heroImage":796,"timeToRead":801},"Optimally Configuring Entity Framework Core","\u002Foptimally-configuring-entity-framework-core\u002F",{"title":1058,"permalink":1059,"heroImage":796,"timeToRead":765},"ASP.NET Core Hidden Gem - QueryHelpers","\u002Fasp-net-core-hidden-gem-queryhelpers\u002F",{"title":1061,"permalink":1062,"heroImage":796,"timeToRead":787},"Optimally Configuring ASP.NET Core HttpClientFactory","\u002Foptimally-configuring-asp-net-core-httpclientfactory\u002F",{"title":1064,"permalink":1065,"heroImage":1066,"timeToRead":877},"PluralSight vs LinkedIn Learning vs FrontendMasters vs Egghead.io vs YouTube","\u002Fpluralsight-vs-linkedin-learning-vs-frontendmasters-vs-egghead-io-vs-youtube\u002F","\u002Fimages\u002Fhero\u002FOnline-Learning-1366x768.png",{"title":39,"permalink":779,"heroImage":777,"timeToRead":787},{"title":1069,"permalink":1070,"heroImage":1050,"timeToRead":787},"A Simple and Fast Object Mapper","\u002Fa-simple-and-fast-object-mapper\u002F",{"title":1072,"permalink":1073,"heroImage":1026,"timeToRead":765},"Securing ASP.NET Core in Docker","\u002Fsecuring-asp-net-core-in-docker\u002F",{"title":1075,"permalink":1076,"heroImage":1077,"timeToRead":806},"Git Cloning the Windows OS Repo","\u002Fgit-cloning-the-windows-os-repo\u002F","\u002Fimages\u002Fhero\u002FWindows-1366x768.png",{"title":1079,"permalink":1080,"heroImage":1081,"timeToRead":877},".gitattributes Best Practices","\u002Fgitattributes-best-practices\u002F","\u002Fimages\u002Fhero\u002FGit-1366x768.png",{"title":1083,"permalink":1084,"heroImage":796,"timeToRead":801},"Unit Testing dotnet new Templates","\u002Funit-testing-dotnet-new-templates\u002F",{"title":1086,"permalink":1087,"heroImage":1050,"timeToRead":846},"What dotnet new Could Be","\u002Fwhat-dotnet-new-could-be\u002F",{"title":1089,"permalink":1090,"heroImage":796,"timeToRead":806},"ASP.NET Core Integration Testing & Mocking using Moq","\u002Fasp-net-core-integration-testing-mocking-using-moq\u002F",{"title":1092,"permalink":1093,"heroImage":1094,"timeToRead":877},"Choosing a Static Site Generator","\u002Fchoosing-a-static-site-generator\u002F","\u002Fimages\u002Fhero\u002FStatic-Site-Generators-1600x900.png",{"title":1096,"permalink":1097,"heroImage":1098,"timeToRead":497},"Spicing up your Browser Console","\u002Fspicing-up-your-browser-console\u002F","\u002Fimages\u002Fhero\u002FFiglet-Fonts-1600x900.png",{"title":1100,"permalink":1101,"heroImage":1102,"timeToRead":846},"Racism in Software Development & Beyond","\u002Fracism-in-software-development-and-beyond\u002F","\u002Fimages\u002Fhero\u002FBlack-Glowing-Fist-1600x900.png",{"title":1104,"permalink":1105,"heroImage":1106,"timeToRead":846},"The Easiest Way to Version NuGet Packages","\u002Fthe-easiest-way-to-version-nuget-packages\u002F","\u002Fimages\u002Fhero\u002FSemantic-Versioning-1600x900.png",{"title":1108,"permalink":1109,"heroImage":850,"timeToRead":900},"The Fastest NuGet Package Ever Published (Probably)","\u002Fthe-fastest-nuget-package-ever-published-probably\u002F",{"title":1111,"permalink":1112,"heroImage":796,"timeToRead":801},"Automating .NET Security Updates","\u002Fautomating-dotnet-security-updates\u002F",{"title":1114,"permalink":1115,"heroImage":1116,"timeToRead":1117},"Deep Dive into Open Telemetry for .NET","\u002Fdeep-dive-into-open-telemetry-for-net\u002F","\u002Fimages\u002Fhero\u002FOpen-Telemetry-1600x900.png",10,{"title":1119,"permalink":1120,"heroImage":1116,"timeToRead":801},"Open Telemetry for ASP.NET Core","\u002Fopen-telemetry-for-asp-net-core\u002F",{"title":1122,"permalink":1123,"heroImage":1116,"timeToRead":801},"Exporting Open Telemetry Data to Jaeger","\u002Fexporting-open-telemetry-data-to-jaeger\u002F",{"title":1125,"permalink":1126,"heroImage":1127,"timeToRead":801},"A System for Grouping & Sorting CSS Properties","\u002Fsystem-for-grouping-and-sorting-css-properties\u002F","\u002Fimages\u002Fhero\u002FCSS-1600x900.png",{"title":1129,"permalink":1130,"heroImage":1127,"timeToRead":900},"CSS General Rules of Thumb","\u002Fcss-general-rules-of-thumb\u002F",{"title":1132,"permalink":1133,"heroImage":1134,"timeToRead":806},"Web Component Custom Element Gotchas","\u002Fweb-component-custom-element-gotchas\u002F","\u002Fimages\u002Fhero\u002FWeb-Components-1600x900.png",{"title":1136,"permalink":1137,"heroImage":1138,"timeToRead":497},"Code Coverage & Frontend Testing","\u002Fcode-coverage-and-frontend-testing\u002F","\u002Fimages\u002Fhero\u002FJest-Cypress-1600x900.png",{"title":1140,"permalink":1141,"heroImage":886,"timeToRead":765},".NET Boxed Visual Studio Integration","\u002Fdotnet-boxed-visual-studio-integration\u002F",{"title":1143,"permalink":1144,"heroImage":1145,"timeToRead":801},"The Windows Package Manager","\u002Fwindows-package-manager\u002F","\u002Fimages\u002Fhero\u002FWinget-1600x900.png",{"title":1147,"permalink":1148,"heroImage":796,"timeToRead":801},"The Problem with C# 10 Implicit Usings","\u002Fthe-problem-with-csharp-10-implicit-usings\u002F",{"title":1150,"permalink":1151,"heroImage":1116,"timeToRead":806},"Optimally Configuring Open Telemetry Tracing for ASP.NET Core","\u002Foptimally-configuring-open-telemetry-tracing-for-asp-net-core\u002F",{"title":1153,"permalink":1154,"heroImage":1155,"timeToRead":497},"Live Streaming .NET","\u002Flive-streaming-dotnet\u002F","\u002Fimages\u002Fhero\u002FMy-YouTube-1920x1080.jpg",{"title":1157,"permalink":1158,"heroImage":1159,"timeToRead":497},"I Was Awarded as an Open UK Honouree","\u002Fopen-uk-honouree\u002F","\u002Fimages\u002Fhero\u002FOpen-UK-Honours-1366x768.jpg",{"title":1161,"permalink":1162,"heroImage":1163,"timeToRead":806},"On the Etiquette of Pull Request Comments","\u002Fon-the-etiquette-of-pull-request-comments\u002F","\u002Fimages\u002Fhero\u002FPrecious-PR-1600x900.jpg",{"title":1165,"permalink":1166,"heroImage":1167,"timeToRead":765},"AI Gone Rogue","\u002Fai-gone-rogue\u002F","\u002Fimages\u002Fhero\u002FHAL-9000-Prop-1600x900.png",{"title":1169,"permalink":1170,"heroImage":1171,"timeToRead":846},"AI Learnings from Upgrading My Blog","\u002Fai-learnings-from-upgrading-my-blog\u002F","\u002Fimages\u002Fhero\u002FAI-Agents-Upgrading-a-Blog-With-Human-Code-Review-1600x900.png",{"left":4,"top":4,"width":24,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1173},"\u003Cpath fill=\"currentColor\" d=\"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.55 96.55 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.3 96.3 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96s-42.981-96-96-96\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1175},"\u003Cpath fill=\"currentColor\" d=\"M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48c27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1177},"\u003Cpath fill=\"currentColor\" d=\"M459.37 151.716c.325 4.548.325 9.097.325 13.645c0 138.72-105.583 298.558-298.558 298.558c-59.452 0-114.68-17.219-161.137-47.106c8.447.974 16.568 1.299 25.34 1.299c49.055 0 94.213-16.568 130.274-44.832c-46.132-.975-84.792-31.188-98.112-72.772c6.498.974 12.995 1.624 19.818 1.624c9.421 0 18.843-1.3 27.614-3.573c-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319c-28.264-18.843-46.781-51.005-46.781-87.391c0-19.492 5.197-37.36 14.294-52.954c51.655 63.675 129.3 105.258 216.365 109.807c-1.624-7.797-2.599-15.918-2.599-24.04c0-57.828 46.782-104.934 104.934-104.934c30.213 0 57.502 12.67 76.67 33.137c23.715-4.548 46.456-13.32 66.599-25.34c-7.798 24.366-24.366 44.833-46.132 57.827c21.117-2.273 41.584-8.122 60.426-16.243c-14.292 20.791-32.161 39.308-52.628 54.253\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1179},"\u003Cpath fill=\"currentColor\" d=\"M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6c0-13.8 11.1-24.9 24.9-24.9c13.6 0 24.6 11.1 24.6 24.9c0 13.6-11.1 24.6-24.6 24.6M504 256c0 137-111 248-248 248S8 393 8 256S119 8 256 8s248 111 248 248m-132.3-41.2c-9.4 0-17.7 3.9-23.8 10c-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3l55.4 12.5c0 13.6 11.1 24.6 24.6 24.6c13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8c-6.1-6.4-14.7-10.2-24.1-10.2c-34.9 0-46.3 46.9-14.4 62.8c-1.1 5-1.7 10.2-1.7 15.5c0 52.6 59.2 95.2 132 95.2c73.1 0 132.3-42.6 132.3-95.2c0-5.3-.6-10.8-1.9-15.8c31.3-16 19.8-62.5-14.9-62.5M302.8 331c-18.2 18.2-76.1 17.9-93.6 0c-2.2-2.2-6.1-2.2-8.3 0c-2.5 2.5-2.5 6.4 0 8.6c22.8 22.8 87.3 22.8 110.2 0c2.5-2.2 2.5-6.1 0-8.6c-2.2-2.2-6.1-2.2-8.3 0m7.7-75c-13.6 0-24.6 11.1-24.6 24.9c0 13.6 11.1 24.6 24.6 24.6c13.8 0 24.9-11.1 24.9-24.6c0-13.8-11-24.9-24.9-24.9\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1181},"\u003Cpath fill=\"currentColor\" d=\"M512 194.8c0 101.3-82.4 183.8-183.8 183.8c-101.7 0-184.4-82.4-184.4-183.8c0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8M0 501.5h90v-491H0z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":1183},"\u003Cpath fill=\"currentColor\" d=\"m20.216 6.415l-.132-.666c-.119-.598-.388-1.163-1.001-1.379c-.197-.069-.42-.098-.57-.241c-.152-.143-.196-.366-.231-.572c-.065-.378-.125-.756-.192-1.133c-.057-.325-.102-.69-.25-.987c-.195-.4-.597-.634-.996-.788a6 6 0 0 0-.626-.194c-1-.263-2.05-.36-3.077-.416a26 26 0 0 0-3.7.062c-.915.083-1.88.184-2.75.5c-.318.116-.646.256-.888.501c-.297.302-.393.77-.177 1.146c.154.267.415.456.692.58c.36.162.737.284 1.123.366c1.075.238 2.189.331 3.287.37q1.829.074 3.65-.118q.449-.05.896-.119c.352-.054.578-.513.474-.834c-.124-.383-.457-.531-.834-.473c-.466.074-.96.108-1.382.146q-1.767.12-3.536.006a22 22 0 0 1-1.157-.107c-.086-.01-.18-.025-.258-.036q-.364-.055-.724-.13c-.111-.027-.111-.185 0-.212h.005q.416-.09.838-.147h.002c.131-.009.263-.032.394-.048a25 25 0 0 1 3.426-.12q1.011.029 2.017.144l.228.031q.4.06.798.145c.392.085.895.113 1.07.542c.055.137.08.288.111.431l.319 1.484a.237.237 0 0 1-.199.284h-.003l-.112.015a37 37 0 0 1-4.743.295a37 37 0 0 1-4.699-.304c-.14-.017-.293-.042-.417-.06c-.326-.048-.649-.108-.973-.161c-.393-.065-.768-.032-1.123.161c-.29.16-.527.404-.675.701c-.154.316-.199.66-.267 1c-.069.34-.176.707-.135 1.056c.087.753.613 1.365 1.37 1.502a39.7 39.7 0 0 0 11.343.376a.483.483 0 0 1 .535.53l-.071.697l-1.018 9.907c-.041.41-.047.832-.125 1.237c-.122.637-.553 1.028-1.182 1.171q-.868.197-1.756.205c-.656.004-1.31-.025-1.966-.022c-.699.004-1.556-.06-2.095-.58c-.475-.458-.54-1.174-.605-1.793l-.731-7.013l-.322-3.094c-.037-.351-.286-.695-.678-.678c-.336.015-.718.3-.678.679l.228 2.185l.949 9.112c.147 1.344 1.174 2.068 2.446 2.272c.742.12 1.503.144 2.257.156c.966.016 1.942.053 2.892-.122c1.408-.258 2.465-1.198 2.616-2.657l1.024-9.995l.215-2.087a.48.48 0 0 1 .39-.426c.402-.078.787-.212 1.074-.518c.455-.488.546-1.124.385-1.766zm-1.478.772c-.145.137-.363.201-.578.233c-2.416.359-4.866.54-7.308.46c-1.748-.06-3.477-.254-5.207-.498c-.17-.024-.353-.055-.47-.18c-.22-.236-.111-.71-.054-.995c.052-.26.152-.609.463-.646c.484-.057 1.046.148 1.526.22q.865.132 1.737.212c2.48.226 5.002.19 7.472-.14q.675-.09 1.345-.21c.399-.072.84-.206 1.08.206c.166.281.188.657.162.974a.54.54 0 0 1-.169.364zm-6.159 3.9c-.862.37-1.84.788-3.109.788a6 6 0 0 1-1.569-.217l.877 9.004c.065.78.717 1.38 1.5 1.38c0 0 1.243.065 1.658.065c.447 0 1.786-.065 1.786-.065c.783 0 1.434-.6 1.499-1.38l.94-9.95a4 4 0 0 0-1.322-.238c-.826 0-1.491.284-2.26.613\"\u002F>",{"left":4,"top":4,"width":27,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1185},"\u003Cpath fill=\"currentColor\" d=\"M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134c-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9c152.3 0 165.1-3.7 204 11.4c60.1 23.3 65.6 79.5 44 140.3c-21.5 62.6-72.5 89.5-140.1 90.3c-43.4.7-69.5-7-75.3 24.2M357.1 152c-1.8-1.3-2.5-1.8-3 1.3c-2 11.4-5.1 22.5-8.8 33.6c-39.9 113.8-150.5 103.9-204.5 103.9c-6.1 0-10.1 3.3-10.9 9.4c-22.6 140.4-27.1 169.7-27.1 169.7c-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9c.7-5.4-1.1 6.1 14.4-91.3c4.6-22 14.3-19.7 29.3-19.7c71 0 126.4-28.8 142.9-112.3c6.5-34.8 4.6-71.4-23.8-92.6\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1187},"\u003Cpath fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8m0 448c-110.532 0-200-89.431-200-200c0-110.495 89.472-200 200-200c110.491 0 200 89.471 200 200c0 110.53-89.431 200-200 200m107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516c17.561-9.845 28.324-16.541 28.324-29.579c0-17.246-21.999-28.693-39.784-28.693c-23.189 0-33.894 10.977-48.942 29.969c-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8M298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42s18.841-42 42-42s42 18.841 42 42\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":1189},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 12H5m7 7l-7-7l7-7\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":1191},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14m-7-7l7 7l-7 7\"\u002F>",1793963895772]