<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Jonathan Channon Blog - Latest Comments</title><link>http://jonathanchannonblog.disqus.com/</link><description></description><atom:link href="https://jonathanchannonblog.disqus.com/comments.rss" rel="self"></atom:link><language>en</language><lastBuildDate>Mon, 01 Apr 2024 03:54:00 -0000</lastBuildDate><item><title>Re: Understanding F# applicatives and custom operators</title><link>https://blog.jonathanchannon.com/2020-07-17-understanding-fsharp-applicatives-custom-operators/#comment-6426050852</link><description>&lt;p&gt;Such a amazing blog you have posted. You have described step by step. A really great stuff!  &lt;a href="https://www.my-milestonecard.com" rel="nofollow noopener" target="_blank" title="https://www.my-milestonecard.com"&gt;MyMilestoneCard login&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Yvonne Rhodes</dc:creator><pubDate>Mon, 01 Apr 2024 03:54:00 -0000</pubDate></item><item><title>Re: Jonathan Channon Blog</title><link>http://blog.jonathanchannon.com/2013-09-16-enabling-cors-in-iisexpress/#comment-6086369801</link><description>&lt;p&gt;Man! You helped me more than this author's guide XD&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jirako Otani Terol</dc:creator><pubDate>Tue, 10 Jan 2023 03:50:32 -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-5924264243</link><description>&lt;p&gt;I actually did know `bind`, `map` and the rest of their "elevated" friends (as Mr. Wlaschin calls them) beforehand, and yet, this only-code-minimal-commentary example is one of the better ones I've seen around.&lt;/p&gt;&lt;p&gt;Only wish you'd use the operators' syntax (e.g. `&amp;lt;*&amp;gt;, &amp;lt;+&amp;gt;`, yes, I know the last one is for applicatives) in one of your examples since that's what we're going to face "in the wild".&lt;/p&gt;&lt;p&gt;Still, great (minimal) example!&lt;br&gt;Kudos!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">O.F.K.</dc:creator><pubDate>Thu, 21 Jul 2022 08:09:27 -0000</pubDate></item><item><title>Re: Using Azure AD authentication for a Go api</title><link>https://blog.jonathanchannon.com/2022-01-29-azuread-golang/#comment-5774841860</link><description>&lt;p&gt;Hi Jonathan, very nice example, it can work! I've tried other methods and are all failed.  &lt;br&gt;I have some questions. Is it possible to get the user info's from your example?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Sandy Allen</dc:creator><pubDate>Tue, 01 Mar 2022 22:57:50 -0000</pubDate></item><item><title>Re: Jonathan Channon Blog - Understanding type aliases</title><link>https://blog.jonathanchannon.com/2020-08-07-understanding-type-aliases/#comment-5521634828</link><description>&lt;p&gt;Hi Jonathan, &lt;br&gt;You can achieve this with the same type safety but a little less plumbing by using pattern matching in your parameters, e.g.,&lt;/p&gt;&lt;p&gt;let doSomething (Name name : Name) (Age age : Age ) (Address address : Address) =&lt;br&gt;    printfn $"{name} / {age} / {address}"&lt;/p&gt;&lt;p&gt;It doesn't feel intuitive to me yet but it is concise.&lt;/p&gt;&lt;p&gt;(Oh!  Like the blog redesign too)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">darrix</dc:creator><pubDate>Sat, 04 Sep 2021 06:22:40 -0000</pubDate></item><item><title>Re: Jonathan Channon Blog - Unit Testing with SqlException</title><link>http://blog.jonathanchannon.com/2014-01-02-unit-testing-with-sqlexception/#comment-5504820369</link><description>&lt;p&gt;I didn't check but could it be the additional parameter I had to add to make this work with netcoreapp3.1 / netstandard2.1 ?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Manfred</dc:creator><pubDate>Sun, 22 Aug 2021 23:27:29 -0000</pubDate></item><item><title>Re: Jonathan Channon Blog - Unit Testing with SqlException</title><link>http://blog.jonathanchannon.com/2014-01-02-unit-testing-with-sqlexception/#comment-5504819673</link><description>&lt;p&gt;Fair point, I found the SO answer as well before I got here. However, I like Jonathan's version better with the use of the generic method `Construct&amp;lt;t&amp;gt;(...)`. Thank you for pointing this out, @codingbadger.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Manfred</dc:creator><pubDate>Sun, 22 Aug 2021 23:26:19 -0000</pubDate></item><item><title>Re: Jonathan Channon Blog - Unit Testing with SqlException</title><link>http://blog.jonathanchannon.com/2014-01-02-unit-testing-with-sqlexception/#comment-5504817621</link><description>&lt;p&gt;Targeting netcoreapp3.1 / netstandard2.1, I had to add a `new Exception()` to the list of parameters to get the correct number of parameters for constructing a SqlError object. The following shows the code that worked in my environment.&lt;/p&gt;&lt;p&gt;&lt;code&gt;SqlError error = Construct&amp;lt;sqlerror&amp;gt;(number, (byte)2, (byte)3, "server name", "error message", "proc", 100, (uint)1, new Exception());&lt;/code&gt;&lt;/p&gt;&lt;p&gt;In my case `number` is the error number I want to use. Perhaps this comment is useful to a reader. Keep up the good work, Jonathan!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Manfred</dc:creator><pubDate>Sun, 22 Aug 2021 23:23:03 -0000</pubDate></item><item><title>Re: Jonathan Channon Blog - Unit Testing with SqlException</title><link>http://blog.jonathanchannon.com/2014-01-02-unit-testing-with-sqlexception/#comment-5432459543</link><description>&lt;p&gt;Great work!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wei Yuan Hsiao</dc:creator><pubDate>Fri, 25 Jun 2021 02:14:14 -0000</pubDate></item><item><title>Re: Jonathan Channon Blog</title><link>http://blog.jonathanchannon.com/2013-09-16-enabling-cors-in-iisexpress/#comment-5150827247</link><description>&lt;p&gt;After years, it is possible to use IIS's own CORS module on IIS Express &lt;a href="https://blog.lextudio.com/how-to-install-microsoft-cors-module-for-iis-express-7ac24e4c3bc4" rel="nofollow noopener" target="_blank" title="https://blog.lextudio.com/how-to-install-microsoft-cors-module-for-iis-express-7ac24e4c3bc4"&gt;https://blog.lextudio.com/h...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lex Li</dc:creator><pubDate>Fri, 13 Nov 2020 17:29:41 -0000</pubDate></item><item><title>Re: Mocking HttpContext with Fake It Easy</title><link>http://blog.jonathanchannon.com/2013-04-30-mocking-httpcontext-with-fake-it-easy/#comment-5145783437</link><description>&lt;p&gt;Thanks!&lt;/p&gt;&lt;p&gt;This helped me a lot.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">StefanBP</dc:creator><pubDate>Tue, 10 Nov 2020 05:53:03 -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-4976380598</link><description>&lt;p&gt;I've never quite grokked map and bind until now. Thanks!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jon Sagara</dc:creator><pubDate>Thu, 02 Jul 2020 01:05:48 -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-4972573837</link><description>&lt;p&gt;Oops. You do!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ian Russell</dc:creator><pubDate>Mon, 29 Jun 2020 06:17:44 -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: Jonathan Channon Blog - Understanding F# map/bind</title><link>https://blog.jonathanchannon.com/2020-06-28-understanding-fsharp-map-and-bind/#comment-4972557973</link><description>&lt;p&gt;I think it would be beneficial for future you to have implementations of your homerolled functions in the post.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ian Russell</dc:creator><pubDate>Mon, 29 Jun 2020 05:49:07 -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-4967520895</link><description>&lt;p&gt;This shows that .Net FOSS projects should adopt the GPL. The EEE &lt;br&gt;strategy works too well for MS as they control Windows, Office, C#, &lt;br&gt;Visual Studio, Azure, MS SQL.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Peter Panski</dc:creator><pubDate>Thu, 25 Jun 2020 03:39: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-4965319777</link><description>&lt;p&gt;Looking for a Nuget marketplace for software developers? Check out the brand new Sdkbin from Aaron Stannard and PetaBridge :)&lt;br&gt;&lt;a href="https://www.aaronstannard.com/sdkbin-marketplace/" rel="nofollow noopener" target="_blank" title="https://www.aaronstannard.com/sdkbin-marketplace/"&gt;https://www.aaronstannard.c...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paul</dc:creator><pubDate>Tue, 23 Jun 2020 12:51:00 -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-4964919213</link><description>&lt;p&gt;You might enjoy Mark Seemann's blog post, he eventually moved over to F# from C# also, but more due to the benefits of functional architecture. I particularly enjoyed this post:&lt;/p&gt;&lt;p&gt;&lt;a href="https://blog.ploeh.dk/2014/03/10/solid-the-next-step-is-functional/" rel="nofollow noopener" target="_blank" title="https://blog.ploeh.dk/2014/03/10/solid-the-next-step-is-functional/"&gt;https://blog.ploeh.dk/2014/03/10/solid-the-next-step-is-functional/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;discussing some of the reasons to move. I love doing away with dependency injection and having a million interfaces in a project just so you can unit test and get loose coupling.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Kurren Nischal</dc:creator><pubDate>Tue, 23 Jun 2020 06:50:57 -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-4963503663</link><description>&lt;p&gt;&amp;gt; I’m finding it hard to keep up with the language..&lt;/p&gt;&lt;p&gt;I do not understand... you are not forced to use the new language features... there isn't a single breaking change... feel free to code it the way you are used to...&lt;/p&gt;&lt;p&gt;Ok maybe we are 'forced' to use the async await feature if the library we are consuming is using that.. but the changes is such a no brainer..&lt;/p&gt;&lt;p&gt;Ok come to think of it I do agree switch expression is purely cosmetic change... yeah... that is really unneeded...&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Goomba</dc:creator><pubDate>Mon, 22 Jun 2020 03:59:55 -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-4962342170</link><description>&lt;p&gt;I agree about F# 100% but i could not work on it professionally but i do very small things in my personal time... &lt;br&gt;Staying with C# was also not an option. Switched to Go and stopped the constant battle with keeping up... The language is now just a tool, previously it was a full time job...&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Sotirios Mantziaris</dc:creator><pubDate>Sun, 21 Jun 2020 02:21:34 -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: Feature Management in F#/Giraffe/ASP.NET Core</title><link>https://blog.jonathanchannon.com/2020-06-18-feature-management-fsharp/#comment-4959394265</link><description>&lt;p&gt;A couple of potential improvements:&lt;br&gt;1. You can use match! instead of let! and match:&lt;br&gt;            match! featureManager.IsEnabledAsync("customGreeting") with&lt;br&gt;            | true -&amp;gt; return! ctx.WriteTextAsync "Hello Jonathan, how are you?"&lt;br&gt;            | false -&amp;gt; return! ctx.WriteTextAsync"Hello, how are you?"&lt;/p&gt;&lt;p&gt;2. I like to split the routes out to make them more readable:&lt;br&gt;let featuresRoutes : HttpHandler =&lt;br&gt;    subRoute "/features"&lt;br&gt;        (choose [&lt;br&gt;            GET &amp;gt;=&amp;gt; choose [&lt;br&gt;                route "" &amp;gt;=&amp;gt; getFeatureResponse&lt;br&gt;            ]&lt;br&gt;        ])&lt;/p&gt;&lt;p&gt;let webApp: HttpHandler =&lt;br&gt;    choose [ &lt;br&gt;        route "/" &amp;gt;=&amp;gt; text "Welcome to my API"&lt;br&gt;        featuresRoutes &lt;br&gt;    ]&lt;br&gt;Nice post!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ian Russell</dc:creator><pubDate>Thu, 18 Jun 2020 16:49:17 -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-4958121021</link><description>&lt;p&gt;&lt;a href="https://github.com/xperiandri/CodeRushTemplates" rel="nofollow noopener" target="_blank" title="https://github.com/xperiandri/CodeRushTemplates"&gt;https://github.com/xperiand...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Andrii Chebukin</dc:creator><pubDate>Wed, 17 Jun 2020 17:33:46 -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-4957310942</link><description>&lt;p&gt;Amazing! thank you!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Antya Dev</dc:creator><pubDate>Wed, 17 Jun 2020 05:36:39 -0000</pubDate></item></channel></rss>