<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Disqus - Latest Comments for jchannon</title><link>http://disqus.com/by/jchannon/</link><description></description><atom:link href="http://disqus.com/jchannon/comments.rss" rel="self"></atom:link><language>en</language><lastBuildDate>Wed, 13 Jul 2022 11:48:17 -0000</lastBuildDate><item><title>Re:  Adding content negotiation to minimal APIs with Carter </title><link>https://andrewlock.net/adding-content-negotiation-to-minimal-apis-with-carter/#comment-5915966215</link><description>&lt;p&gt;Carter has FluentValidation built in, no registration required, also Andrew's registration of the IResponseNegotiator isn't required, Carter will find it. However, I think yours and my desires are different, I would rather be explicit in asking libs/fwks to do stuff than expect it to be done for example &lt;code&gt;ctx.Request.Validate(person);&lt;/code&gt; is needed to validate an incoming object in Carter, it doesn't just do it for you although it will register all your validators. Personally for HTTP APIs, I would use Carter or just minimal apis, I don't think there's anything missing, perhaps I'm just more prepared to wire things up rather than expect the fwk to magically do it. That sounds snarky but it's not meant to be =)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Wed, 13 Jul 2022 11:48:17 -0000</pubDate></item><item><title>Re: Apple to offer $100 rebates on cellular Apple Watch Series 7 purchases</title><link>https://9to5mac.com/2021/10/04/apple-watch-series-7-cellular-rebate/#comment-5558859009</link><description>&lt;p&gt;Will this apply to UK?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Mon, 04 Oct 2021 14:16:18 -0000</pubDate></item><item><title>Re: Jonathan Channon Blog - Understanding F# map/bind</title><link>https://blog.jonathanchannon.com/2020-06-28-understanding-fsharp-map-and-bind/#comment-4972578903</link><description>&lt;p&gt;And it's definitely not &lt;s&gt;stolen&lt;/s&gt; re-purposed from your blog post here &lt;a href="https://www.softwarepark.cc/blog/2019/9/15/introduction-to-functional-programming-in-f-part-3" rel="nofollow noopener" target="_blank" title="https://www.softwarepark.cc/blog/2019/9/15/introduction-to-functional-programming-in-f-part-3"&gt;https://www.softwarepark.cc...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Mon, 29 Jun 2020 06:26:23 -0000</pubDate></item><item><title>Re: Jonathan Channon Blog - Understanding F# map/bind</title><link>https://blog.jonathanchannon.com/2020-06-28-understanding-fsharp-map-and-bind/#comment-4972558494</link><description>&lt;p&gt;I do 😄&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Mon, 29 Jun 2020 05:50:03 -0000</pubDate></item><item><title>Re: Feature Management in F#/Giraffe/ASP.NET Core</title><link>https://blog.jonathanchannon.com/2020-06-18-feature-management-fsharp/#comment-4959396428</link><description>&lt;p&gt;Thanks for the tips!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Thu, 18 Jun 2020 16:51:05 -0000</pubDate></item><item><title>Re: Jonathan Channon Blog - Goodbye NancyFX, Hello F#!</title><link>https://blog.jonathanchannon.com/2020-06-16-goodbye-nancyfx-hello-fsharp/#comment-4956416595</link><description>&lt;p&gt;I think Ian's blog series is great as it addresses a problem to solve whilst teaching you about FP/F#. There's also some koans &lt;a href="https://github.com/ChrisMarinos/FSharpKoans" rel="nofollow noopener" target="_blank" title="https://github.com/ChrisMarinos/FSharpKoans"&gt;https://github.com/ChrisMar...&lt;/a&gt; I've also actually implemented F# versions of this &lt;a href="https://github.com/mythz/kotlin-linq-examples" rel="nofollow noopener" target="_blank" title="https://github.com/mythz/kotlin-linq-examples"&gt;https://github.com/mythz/ko...&lt;/a&gt; which was quite helpful.  I always find it tricky to think of an app to write when learning a language because it's always best to write something you need/want in said language but I can never think of anything :)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Tue, 16 Jun 2020 12:30:20 -0000</pubDate></item><item><title>Re: 
            Work with custom event in Application Insights
        </title><link>http://fenglu.me/2016/10/21/Work-with-custom-event-in-Application-Insights/#comment-4353388098</link><description>&lt;p&gt;Is there a way to join on customDimensions for example the only shared value I see between a trace record and a exception record is customDimensions.ConnectionId&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Mon, 25 Feb 2019 09:34:57 -0000</pubDate></item><item><title>Re: Matching route templates manually in ASP.NET Core</title><link>http://blog.markvincze.com/how-to-match-route-templates-manually-in-asp-net-2/#comment-4281812570</link><description>&lt;p&gt;Must have hit send at the same time :). Will give yours a go too, thanks!!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Sat, 12 Jan 2019 08:55:27 -0000</pubDate></item><item><title>Re: Matching route templates manually in ASP.NET Core</title><link>http://blog.markvincze.com/how-to-match-route-templates-manually-in-asp-net-2/#comment-4281807068</link><description>&lt;p&gt;I've tried this approach out and it's failing.  I've put a gist here. Maybe I'm missing something &lt;a href="https://gist.github.com/jchannon/f61fbdd7e3bc18408782d797e4b7dcf1" rel="nofollow noopener" target="_blank" title="https://gist.github.com/jchannon/f61fbdd7e3bc18408782d797e4b7dcf1"&gt;https://gist.github.com/jch...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Sat, 12 Jan 2019 08:49:57 -0000</pubDate></item><item><title>Re: Matching route templates manually in ASP.NET Core</title><link>http://blog.markvincze.com/how-to-match-route-templates-manually-in-asp-net-2/#comment-4281750030</link><description>&lt;p&gt;Yeah that’s what Carter uses but I’d like to handle the matching myself because the middleware doesn’t handle 405 responses properly. It returns 404 so if I can match the route myself and do some checks and return 405 ignore needs be&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Sat, 12 Jan 2019 07:48:28 -0000</pubDate></item><item><title>Re: Matching route templates manually in ASP.NET Core</title><link>http://blog.markvincze.com/how-to-match-route-templates-manually-in-asp-net-2/#comment-4281716795</link><description>&lt;p&gt;Brill will take a look. I'm wondering how I can use it in a server scenario although if I debug your test I might find my answer but in my head at the mo I'm thinking (pseudo) &lt;code&gt;app.Run(ctx =&amp;gt; match(ctx.req.path) if (match) executehandler())&lt;/code&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Sat, 12 Jan 2019 07:06:36 -0000</pubDate></item><item><title>Re: Matching route templates manually in ASP.NET Core</title><link>http://blog.markvincze.com/how-to-match-route-templates-manually-in-asp-net-2/#comment-4281665046</link><description>&lt;p&gt;This is really helpful. Thanks a lot. I’m currently using the routing middleware inside a library I’ve written called Carter but have been thinking of getting more granular and this might just do the trick! Thanks again. &lt;a href="https://github.com/CarterCommunity/Carter" rel="nofollow noopener" target="_blank" title="https://github.com/CarterCommunity/Carter"&gt;https://github.com/CarterCo...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Do you have a sample app where you wire up routes and then match?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Sat, 12 Jan 2019 05:53:25 -0000</pubDate></item><item><title>Re: ASP.NET Core 2.2 First Look – Global Routing (Dispatcher)</title><link>https://www.stevejgordon.co.uk/asp-net-core-first-look-at-global-routing-dispatcher#comment-4166612608</link><description>&lt;p&gt;In v3 they are opening it up but as you 2.x is MVC only. I'm keeping an wyw out for it to see how this can be used with Carter&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Sun, 28 Oct 2018 04:44:08 -0000</pubDate></item><item><title>Re: 
                    Adding Cache-Control headers to Static Files in ASP.NET Core
                </title><link>https://andrewlock.net/adding-cache-control-headers-to-static-files-in-asp-net-core/#comment-3869452378</link><description>&lt;p&gt;Have you tested Firefox.&lt;/p&gt;&lt;p&gt;Hit a static file, get 200&lt;/p&gt;&lt;p&gt;Reload the page you get a 304 from the server&lt;/p&gt;&lt;p&gt;Go to address bar and press enter you get 200 (cached). No server hit. Not sure how FF is deciding how to cache files as by default there is no Cache-Control, Age, Expires headers returned from Static middleware&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Tue, 24 Apr 2018 08:30:30 -0000</pubDate></item><item><title>Re: 
                     ASP.NET Core CSRF defence with Antiforgery   
                    </title><link>http://www.dotnetcurry.com/aspnet/1343/aspnet-core-csrf-antiforgery-token#comment-3778345846</link><description>&lt;p&gt;This is very well researched and written article covering all bases, nice job!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Tue, 27 Feb 2018 06:34:59 -0000</pubDate></item><item><title>Re: Chocolatey Gallery | Jetbrains Rider 2017.2.1</title><link>https://community.chocolatey.org/packages/jetbrains-rider#comment-3767059218</link><description>&lt;p&gt;2017.3.1 is now out also. Any chance of an update?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Tue, 20 Feb 2018 04:13:26 -0000</pubDate></item><item><title>Re: KBDfans75 aluminum case 75%layout</title><link>https://kbdfans.myshopify.com/products/kbdfans75-aluminum-case-75-layout#comment-3727143040</link><description>&lt;p&gt;Could you add images to show the difference between grey and silver?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Fri, 26 Jan 2018 04:51:34 -0000</pubDate></item><item><title>Re: Chocolatey Gallery | Server JRE (Java SE Runtime Environment) 8.0.77</title><link>https://community.chocolatey.org/packages/server-jre8#comment-3720970242</link><description>&lt;p&gt;Any update to this? I'm seeing this also&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Mon, 22 Jan 2018 15:50:10 -0000</pubDate></item><item><title>Re: 
                    Access services inside Options and Startup using IConfigureOptions in ASP.NET Core
                </title><link>https://andrewlock.net/access-services-inside-options-and-startup-using-configureoptions/#comment-3609605460</link><description>&lt;p&gt;Yeah I was unsure of which order to place them in. I seem to have it working now, turns out Configure was called at a much later date then I expected&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Fri, 10 Nov 2017 08:56:59 -0000</pubDate></item><item><title>Re: 
                    Access services inside Options and Startup using IConfigureOptions in ASP.NET Core
                </title><link>https://andrewlock.net/access-services-inside-options-and-startup-using-configureoptions/#comment-3609530269</link><description>&lt;p&gt;Ah so potentially my version of SignalR is not asking for IOptions&amp;lt;signalroptions&amp;gt; hence why Configure is not called&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Fri, 10 Nov 2017 07:53:17 -0000</pubDate></item><item><title>Re: 
                    Access services inside Options and Startup using IConfigureOptions in ASP.NET Core
                </title><link>https://andrewlock.net/access-services-inside-options-and-startup-using-configureoptions/#comment-3609477784</link><description>&lt;p&gt;Is it the framework or the service that calls the Configure method? I'm wondering if my oldish version of Signalr might be to blame&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Fri, 10 Nov 2017 07:00:01 -0000</pubDate></item><item><title>Re: 
                    Access services inside Options and Startup using IConfigureOptions in ASP.NET Core
                </title><link>https://andrewlock.net/access-services-inside-options-and-startup-using-configureoptions/#comment-3609405283</link><description>&lt;p&gt;Is there something in the service or framework that knows to call the Configure method? I have:&lt;br&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&lt;br&gt;services.AddSingleton&amp;lt;IConfigureOptions&amp;lt;SignalROptions&amp;gt;, Bar&amp;gt;();&lt;br&gt;services.AddSignalR();&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;with&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&lt;br&gt;    public class Bar : IConfigureOptions&amp;lt;SignalROptions&amp;gt;&lt;br&gt;    {&lt;br&gt;        private readonly ILogger logger;&lt;br&gt;&lt;br&gt;        public Bar(ILogger logger)&lt;br&gt;        {&lt;br&gt;            this.logger = logger;&lt;br&gt;        }&lt;br&gt;        &lt;br&gt;        public void Configure(SignalROptions options)&lt;br&gt;        {&lt;br&gt;            options.Hubs.EnableJavaScriptProxies = true;&lt;br&gt;            options.Hubs.PipelineModules.Add(new ErrorHandlingPipelineModule(this.logger));&lt;br&gt;            options.Hubs.EnableDetailedErrors = true;&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The constructor is called but not Configure method.&lt;/p&gt;&lt;p&gt;Any ideas why that would happen?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Fri, 10 Nov 2017 05:24:54 -0000</pubDate></item><item><title>Re: Preventing XSRF in AngularJS Apps with ASP.NET CORE Anti-Forgery Middleware</title><link>http://www.fiyazhasan.me/angularjs-anti-forgery-with-asp-net-core/#comment-3591811548</link><description>&lt;p&gt;Do you know if the `services.AddAntiforgery` works with `UseCookieAuthentication` in that when SlidingExpiration is turned on the cookie value changes so this would affect the XSRF validation as I assume the cookie and xsrf token are tied so if one changes both will need to change for subsequent requests.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Mon, 30 Oct 2017 12:14:18 -0000</pubDate></item><item><title>Re: Introducing the NGINX Application Platform</title><link>https://www.nginx.com/blog/introducing-nginx-application-platform/#comment-3512618089</link><description>&lt;p&gt;Ping me if you need any help 😄&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Mon, 11 Sep 2017 14:49:05 -0000</pubDate></item><item><title>Re: Introducing the NGINX Application Platform</title><link>https://www.nginx.com/blog/introducing-nginx-application-platform/#comment-3512260534</link><description>&lt;p&gt;Any reason?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jonathan Channon</dc:creator><pubDate>Mon, 11 Sep 2017 10:59:57 -0000</pubDate></item></channel></rss>