41554 blogs · [ { "id": "01a087ee-5ee6-7083-99f7-94aae97145db", "title": "Introducing My Giraffe F# WebApp Template", "url": "https://thesharperdev.com/posts/giraffe-web-app-template/", "published_at": "2025-05-22T10:00:00+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be00e32424", "title": "Using the FSharp.Compiler.Service to Compile a fsproj", "url": "https://thesharperdev.com/posts/using-fsharp-compiler-service/", "published_at": "2025-03-11T10:00:00+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be00f1b2d3", "title": "How to Run a WebAssembly Program in F#", "url": "https://thesharperdev.com/posts/brief-overview-of-webassembly/", "published_at": "2025-02-11T10:00:00+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be01377ab1", "title": "How To Turn Off Framework Tests in a CI Action", "url": "https://thesharperdev.com/posts/how-to-turn-off-framework-tests-in-ci-action/", "published_at": "2025-01-23T10:00:00+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be01fb4b31", "title": "How Different C# Data Structures Serialize to Json", "url": "https://thesharperdev.com/posts/how-different-csharp-data-structures-serialize-json/", "published_at": "2025-01-11T10:00:00+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be0244c244", "title": "Create and Populate an Object Via Reflection In C#", "url": "https://thesharperdev.com/posts/create-populate-objects-via-reflection-in-csharp/", "published_at": "2025-01-10T10:00:00+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be030b7f36", "title": "Introducing Ferris.Json Nuget Package", "url": "https://thesharperdev.com/posts/ferris-json-nuget-package/", "published_at": "2025-01-04T10:00:00+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be039ffc3b", "title": "Deploy A Giraffe App to Fly.io", "url": "https://thesharperdev.com/posts/deploy-giraffe-app-fly-io/", "published_at": "2022-02-16T10:24:33+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be044e6e02", "title": "Play Audio - Fable/F#", "url": "https://thesharperdev.com/snippets/fsharp-fable-play-audio/", "published_at": "2022-01-29T23:29:54+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be04980f23", "title": "Set Timeout Function - Fable/F#", "url": "https://thesharperdev.com/snippets/fsharp-fable-settimeout/", "published_at": "2022-01-18T23:29:54+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be0584c208", "title": "Keyup Event Listener - Fable/F#", "url": "https://thesharperdev.com/snippets/fsharp-fable-keyup-event-listener/", "published_at": "2022-01-17T21:29:54+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be067cb99c", "title": "Introduction to Functions - F#", "url": "https://thesharperdev.com/posts/intro-fsharp-functions/", "published_at": "2021-10-15T10:24:33+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be076a0e8c", "title": "Seq.choose - F#", "url": "https://thesharperdev.com/snippets/fsharp-seq-choose/", "published_at": "2021-10-14T10:29:54+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be07d3ab0d", "title": "Seq.cast - F#", "url": "https://thesharperdev.com/snippets/fsharp-seq-cast/", "published_at": "2021-10-13T09:29:54+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be086f47f4", "title": "Seq.cache - F#", "url": "https://thesharperdev.com/snippets/fsharp-seq-cache/", "published_at": "2021-10-12T09:29:54+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be0902958f", "title": "Seq.averageBy - F#", "url": "https://thesharperdev.com/snippets/fsharp-seq-averageby/", "published_at": "2021-10-11T17:29:54+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be0974ceb0", "title": "Seq.average - F#", "url": "https://thesharperdev.com/snippets/fsharp-seq-average/", "published_at": "2021-10-10T17:29:54+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be0a612bc7", "title": "Seq.append - F#", "url": "https://thesharperdev.com/snippets/fsharp-seq-append/", "published_at": "2021-10-09T17:29:54+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be0a75ff68", "title": "Seq.allPairs - F#", "url": "https://thesharperdev.com/snippets/fsharp-seq-allpairs/", "published_at": "2021-10-08T21:29:54+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be0b4b80e6", "title": "Memoization in F#", "url": "https://thesharperdev.com/posts/fsharp-memoization/", "published_at": "2021-10-08T11:29:54+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be0c05d166", "title": "Fibonacci in F# - Five Ways", "url": "https://thesharperdev.com/posts/fsharp-fibonacci-five-ways/", "published_at": "2021-09-30T21:14:34+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be0c7f6fa4", "title": "Supervised v. Unsupervised v. Reinforcement Learning: An Introduction", "url": "https://thesharperdev.com/supervised-v-unsupervised-v-reinforcement-learning-an-introduction/", "published_at": "2020-05-18T00:27:47+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be0d7a5768", "title": "Optimizing our Perfect Tic-Tac-Toe Bot", "url": "https://thesharperdev.com/optimizing-our-perfect-tic-tac-toe-bot/", "published_at": "2020-05-10T18:20:36+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be0de601da", "title": "Coding A Perfect Tic-Tac-Toe Bot!", "url": "https://thesharperdev.com/coding-the-perfect-tic-tac-toe-bot/", "published_at": "2020-05-03T19:11:33+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be0deb3d13", "title": "Implementing Minimax Tree Search", "url": "https://thesharperdev.com/implementing-minimax-tree-search/", "published_at": "2020-04-26T00:30:12+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be0e98ee42", "title": "Getting Started with Machine Learning Using Keras", "url": "https://thesharperdev.com/getting-started-with-machine-learning-using-keras/", "published_at": "2020-04-18T19:31:00+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be0f72f928", "title": "Build Your First Neural Network: Part 3", "url": "https://thesharperdev.com/build-your-first-neural-network-part-3/", "published_at": "2020-04-12T18:55:51+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be0f9d08e5", "title": "Useful NumPy Operations for Machine Learning", "url": "https://thesharperdev.com/useful-numpy-operations-for-machine-learning/", "published_at": "2020-04-06T00:45:04+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be0fc2cc05", "title": "Build Your First Neural Network: Part 2", "url": "https://thesharperdev.com/build-your-first-neural-network-part-2/", "published_at": "2020-03-29T19:39:27+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be1047bd62", "title": "Build Your First Neural Network: Part 1", "url": "https://thesharperdev.com/build-your-first-neural-network/", "published_at": "2020-03-24T01:11:41+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be10b07d30", "title": "Hope in the Midst of a Virus", "url": "https://thesharperdev.com/hope-in-the-midst-of-a-virus/", "published_at": "2020-03-15T19:03:27+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be117154a6", "title": "Unit Testing Giraffe's HttpHandlers in F#", "url": "https://thesharperdev.com/one-strategy-to-unit-test-giraffe-httphandlers-in-fsharp/", "published_at": "2020-03-08T19:11:29+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be11bc6f0b", "title": "Examples Using HttpClient in F#", "url": "https://thesharperdev.com/examples-using-httpclient-in-fsharp/", "published_at": "2020-02-29T21:07:23+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be12252a95", "title": "Thoughts on How I Embrace and Deal With Reality", "url": "https://thesharperdev.com/thoughts-on-how-i-embrace-and-deal-with-reality/", "published_at": "2020-02-23T23:47:47+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be12467e7f", "title": "F#’s MailboxProcessor", "url": "https://thesharperdev.com/fsharps-mailboxprocessor/", "published_at": "2020-02-16T02:28:48+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be12f1b96f", "title": "Exploring the Elmish Todo App", "url": "https://thesharperdev.com/exploring-the-elmish-todo-app/", "published_at": "2020-02-10T02:35:35+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be136ac57a", "title": "C#’s WhenAll and Exception Handling", "url": "https://thesharperdev.com/csharps-whenall-and-exception-handling/", "published_at": "2020-02-02T20:36:45+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be142ea96c", "title": "Reviewing NDepend", "url": "https://thesharperdev.com/ndepend/", "published_at": "2020-01-19T20:02:52+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be148f1936", "title": "Functional Fundamentals: Recursion", "url": "https://thesharperdev.com/functional-fundamentals-recursion/", "published_at": "2020-01-19T02:40:13+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be154e85e5", "title": "Thoughts On Becoming More Open Minded", "url": "https://thesharperdev.com/thoughts-on-becoming-more-open-minded/", "published_at": "2020-01-12T03:57:08+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be15a8a763", "title": "The State of TheSharperDev: 2020", "url": "https://thesharperdev.com/the-state-of-thesharperdev-2020/", "published_at": "2020-01-05T21:03:04+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be15aece73", "title": "How to use REPL and Scripting in F#", "url": "https://thesharperdev.com/how-to-use-repl-and-scripting-in-fsharp/", "published_at": "2019-12-31T20:49:00+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be1694fa55", "title": "Getting Started With BenchmarkDotNet", "url": "https://thesharperdev.com/getting-started-with-benchmarkdotnet/", "published_at": "2019-12-29T20:40:29+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be16a4864f", "title": "Getting Started with Elmish", "url": "https://thesharperdev.com/getting-started-with-elmish/", "published_at": "2019-12-26T03:08:18+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be16aac833", "title": "Introduction to F# Type Providers", "url": "https://thesharperdev.com/introduction-to-fsharp-type-providers/", "published_at": "2019-12-20T04:23:08+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be177507c7", "title": "The Cost of Abstracting a List in C#", "url": "https://thesharperdev.com/the-cost-of-abstracting-a-list-in-csharp/", "published_at": "2019-12-14T02:58:00+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be18121c81", "title": "The Difference Between IEnumerable and IQueryable Explained", "url": "https://thesharperdev.com/the-difference-between-ienumerable-and-iqueryable-explained/", "published_at": "2019-12-03T08:08:00+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be185aa08f", "title": "Functional Fundamentals: Currying", "url": "https://thesharperdev.com/functional-fundamentals-currying/", "published_at": "2019-11-30T19:38:38+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be1914d318", "title": "Benchmarking For Loop Variants", "url": "https://thesharperdev.com/benchmarking-for-loop-variants/", "published_at": "2019-11-23T03:16:34+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be1a008b86", "title": "Explaining Implicit Conversion Operators in C#", "url": "https://thesharperdev.com/explaining-implicit-conversion-operators-in-c/", "published_at": "2019-11-16T18:41:00+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be1aae3004", "title": "Under the Hood of C# Alias Types and Namespaces", "url": "https://thesharperdev.com/under-the-hood-of-csharp-alias-types-and-namespaces/", "published_at": "2019-11-14T02:41:25+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be1acea0c6", "title": "Explaining Async Programming With Pizza", "url": "https://thesharperdev.com/explaining-async-programming-with-pizza/", "published_at": "2019-11-09T19:34:50+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be1b7c6f32", "title": "Integrating a .NET Core API with Github Actions", "url": "https://thesharperdev.com/how-to-create-a-net-core-api-ci-action-using-github-actions/", "published_at": "2019-11-02T19:26:59+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be1c4bbd21", "title": "EF Core’s AddAsync v. Add Method", "url": "https://thesharperdev.com/ef-cores-addasync-v-add-method/", "published_at": "2019-10-26T19:55:42+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be1c898051", "title": "Add Swagger to a .NET Core 3.0 API", "url": "https://thesharperdev.com/add-swagger-to-a-net-core-3-0-api/", "published_at": "2019-10-19T18:42:37+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be1d4b8887", "title": "How to Write a Brainfuck Interpreter in C#", "url": "https://thesharperdev.com/how-to-write-a-brainfuck-interpreter-in-c/", "published_at": "2019-10-12T10:58:48+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be1d6302f6", "title": ".Net Core 3.0 AddControllers() Method", "url": "https://thesharperdev.com/net-core-3-0-addcontrollers-method/", "published_at": "2019-10-05T10:52:06+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be1e280d6b", "title": "C# Design Patterns: The Visitor Pattern", "url": "https://thesharperdev.com/c-design-patterns-the-visitor-pattern/", "published_at": "2019-09-29T00:42:31+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be1e4594e2", "title": "An Introduction to C# Expression Trees", "url": "https://thesharperdev.com/an-introduction-to-c-expression-trees/", "published_at": "2019-09-22T19:19:27+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be1f3c2505", "title": "The Cost of Synchronous Async Methods", "url": "https://thesharperdev.com/the-cost-of-synchronous-async-methods/", "published_at": "2019-09-15T19:22:43+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be1fad7545", "title": "Pure v. Impure Functions", "url": "https://thesharperdev.com/pure-v-impure-functions/", "published_at": "2019-09-08T18:59:40+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be1fe44916", "title": "About Me", "url": "https://thesharperdev.com/about-me/", "published_at": "2019-08-31T17:16:24+00:00" }, { "id": "01a087ee-5ee7-72b5-8efe-93be1feeba26", "title": "Launching “The Sharper Dev” Blog!", "url": "https://thesharperdev.com/hello-world/", "published_at": "2019-08-31T11:05:47+00:00" } ] posts Claim your blog
Back to thesharperdev.com
Blog · corpus.blog/blogs/thesharperdev.com/posts

thesharperdev.com

thesharperdev.com

2025

2022

2021

2020

2019