41554 blogs · [ { "id": "01a087c9-cf4e-735a-b5e3-010ef2057e54", "title": "Hosting a DigitalOcean App Platform app on a custom subdomain (with CORS)", "url": "https://www.productiverage.com/hosting-a-digitalocean-app-platform-app-on-a-custom-subdomain-with-cors", "published_at": "2025-04-06T19:27:00+00:00" }, { "id": "01a087c9-cf4e-735a-b5e3-010ef3001f47", "title": "(Approximately) correcting perspective with C# (fixing a blurry presentation video - part two)", "url": "https://www.productiverage.com/approximately-correcting-perspective-with-c-sharp-fixing-a-blurry-presentation-video-part-two", "published_at": "2022-03-29T19:02:00+00:00" }, { "id": "01a087c9-cf4e-735a-b5e3-010ef354dc70", "title": "Finding the brightest area in an image with C# (fixing a blurry presentation video - part one)", "url": "https://www.productiverage.com/finding-the-brightest-area-in-an-image-with-c-sharp-fixing-a-blurry-presentation-video-part-one", "published_at": "2022-03-15T21:06:00+00:00" }, { "id": "01a087c9-cf4e-735a-b5e3-010ef3ef76d5", "title": "So.. what is machine learning? (#NoCodeIntro)", "url": "https://www.productiverage.com/so-what-is-machine-learning-nocodeintro", "published_at": "2022-02-28T23:44:00+00:00" }, { "id": "01a087c9-cf4e-735a-b5e3-010ef495914f", "title": "Parallelising (LINQ) work in C#", "url": "https://www.productiverage.com/parallelising-linq-work-in-c-sharp", "published_at": "2021-08-10T08:01:00+00:00" }, { "id": "01a087c9-cf4e-735a-b5e3-010ef50eb006", "title": "Automating \"suggested / related posts\" links for my blog posts - Part 2", "url": "https://www.productiverage.com/automating-suggested-related-posts-links-for-my-blog-posts-part-2", "published_at": "2021-04-28T21:56:00+00:00" }, { "id": "01a087c9-cf4e-735a-b5e3-010ef57f04d7", "title": "Automating \"suggested / related posts\" links for my blog posts", "url": "https://www.productiverage.com/automating-suggested-related-posts-links-for-my-blog-posts", "published_at": "2021-04-07T22:21:00+00:00" }, { "id": "01a087c9-cf4e-735a-b5e3-010ef5ca7275", "title": "Language detection and words-in-sentence classification in C#", "url": "https://www.productiverage.com/language-detection-and-wordsinsentence-classification-in-c-sharp", "published_at": "2021-03-09T19:52:00+00:00" }, { "id": "01a087c9-cf4e-735a-b5e3-010ef5e9471a", "title": "Monitoring my garden's limited sunlight time period with an Arduino (and some tupperware)", "url": "https://www.productiverage.com/monitoring-my-gardens-limited-sunlight-time-period-with-an-arduino-and-some-tupperware", "published_at": "2020-08-22T21:34:00+00:00" }, { "id": "01a087c9-cf4e-735a-b5e3-010ef6852572", "title": "How are barcodes read?? (Library-less image processing in C#)", "url": "https://www.productiverage.com/how-are-barcodes-read-libraryless-image-processing-in-c-sharp", "published_at": "2020-08-07T23:24:00+00:00" }, { "id": "01a0e4aa-e132-700f-b44a-218eef93e8e2", "title": null, "url": "https://www.productiverage.com/i-love-immutable-data", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218ef06b1b92", "title": null, "url": "https://www.productiverage.com/mercurial-and-dropbox", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218ef0fba2a5", "title": null, "url": "https://www.productiverage.com/a-static-type-system-is-a-wonderful-message-to-the-present-and-future", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218ef1e63c0e", "title": null, "url": "https://www.productiverage.com/a-static-type-system-is-a-wonderful-message-to-the-present-and-future-supplementary", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218ef26e8dce", "title": null, "url": "https://www.productiverage.com/creating-a-c-sharp-roslyn-analyser-for-beginners-by-a-beginner", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218ef2f99b50", "title": null, "url": "https://www.productiverage.com/why-is-saving-performance-monitor-perfmon-settings-so-difficult-these-days", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218ef3ec9b00", "title": null, "url": "https://www.productiverage.com/retrieving-performance-counter-from-a-remote-pc-using-c-sharp", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218ef4423b99", "title": null, "url": "https://www.productiverage.com/performance-tuning-a-bridgenet-react-app", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218ef4a988f3", "title": null, "url": "https://www.productiverage.com/when-a-disk-cache-performs-better-than-an-inmemory-cache-befriending-the-net-gc", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218ef4ae4058", "title": null, "url": "https://www.productiverage.com/migrating-my-full-text-indexer-to-net-core-supporting-multitarget-nuget-packages", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218ef4b866a9", "title": null, "url": "https://www.productiverage.com/face-or-no-face-finding-faces-in-photos-using-c-sharp-and-accordnet", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218ef5014f05", "title": null, "url": "https://www.productiverage.com/revisiting-net-core-tooling-visual-studio-2017", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218ef60055cf", "title": null, "url": "https://www.productiverage.com/iisexpress-virtual-directories-and-applications", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218ef67805a4", "title": null, "url": "https://www.productiverage.com/trying-to-set-a-readonly-autoproperty-value-externally-plus-a-little-benchmarkdotnet", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218ef6ba52ac", "title": null, "url": "https://www.productiverage.com/learning-f-sharp-via-some-machine-learning-the-single-layer-perceptron", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218ef7b808ff", "title": null, "url": "https://www.productiverage.com/writing-f-sharp-to-implement-the-single-layer-perceptron", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218ef85ea493", "title": null, "url": "https://www.productiverage.com/i-didnt-understand-why-people-struggled-with-nets-async", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218ef88a72f9", "title": null, "url": "https://www.productiverage.com/type-aliases-in-bridgenet-c-sharp", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218ef92b21e3", "title": null, "url": "https://www.productiverage.com/private-local-c-sharp-analysers-without-nuget", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218efa066b89", "title": null, "url": "https://www.productiverage.com/removing-all-assembly-names-in-jsonnet-typenamehandling-output", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218efd1799bc", "title": null, "url": "https://www.productiverage.com/mercurial-on-windows-changing-filename-case", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f01a64668", "title": null, "url": "https://www.productiverage.com/sta-apartmentstate-with-aspnet-mvc", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f01d0d371", "title": null, "url": "https://www.productiverage.com/really", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f02772155", "title": null, "url": "https://www.productiverage.com/dynamically-applying-interfaces-to-objects", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f0350970b", "title": null, "url": "https://www.productiverage.com/dynamically-applying-interfaces-to-objects-part-2", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f03d5853a", "title": null, "url": "https://www.productiverage.com/dynamically-applying-interfaces-to-objects-part-3", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f04454266", "title": null, "url": "https://www.productiverage.com/extendable-linqcompilable-mappers", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f04f7ba27", "title": null, "url": "https://www.productiverage.com/the-lesseffort-extendable-linqcompilable-mappers", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f051afc90", "title": null, "url": "https://www.productiverage.com/problems-in-immutabilityland", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f0569ebe4", "title": null, "url": "https://www.productiverage.com/onthefly-css-minification", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f05a93f50", "title": null, "url": "https://www.productiverage.com/css-minification-regular-expressions", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f05decc78", "title": null, "url": "https://www.productiverage.com/github-and-i-might-be-having-a-fallingout", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f06de8ef7", "title": null, "url": "https://www.productiverage.com/the-artist-previously-known-as-the-automapperbyconstructor", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f0783ccaf", "title": null, "url": "https://www.productiverage.com/being-a-dirty-githubtobitbucket-turncoat", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f07e9b24f", "title": null, "url": "https://www.productiverage.com/the-net-dictionary-is-fast", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f088c8898", "title": null, "url": "https://www.productiverage.com/an-englishlanguage-pluralityhandling-string-normaliser", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f08c638bc", "title": null, "url": "https://www.productiverage.com/optimising-the-pluralityhandling-normaliser", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f08ef0238", "title": null, "url": "https://www.productiverage.com/a-pluralityhandling-normaliser-correction", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f09d2159c", "title": null, "url": "https://www.productiverage.com/compiled-linq-expressions-dont-serialise", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f09f472cf", "title": null, "url": "https://www.productiverage.com/the-joys-of-automapper", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f0a84c3e8", "title": null, "url": "https://www.productiverage.com/the-full-text-indexer", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f0aea050c", "title": null, "url": "https://www.productiverage.com/the-full-text-indexer-adding-and-subtracting", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f0b8fd3e6", "title": null, "url": "https://www.productiverage.com/the-full-text-indexer-going-international", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f0c7ddb5b", "title": null, "url": "https://www.productiverage.com/dependency-injection-with-a-wcf-service", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f0c99c289", "title": null, "url": "https://www.productiverage.com/ramping-up-wcf-web-service-request-handling-on-iis-6-with-net-40", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f0d5e8c8c", "title": null, "url": "https://www.productiverage.com/consuming-a-wcf-web-service-from-php", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f0df6237e", "title": null, "url": "https://www.productiverage.com/the-full-text-indexer-token-breaker-and-string-normaliser-variations", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f0e1cd272", "title": null, "url": "https://www.productiverage.com/the-windbg-blues", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f0ea26d10", "title": null, "url": "https://www.productiverage.com/persistent-immutable-lists", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f0ec1de9f", "title": null, "url": "https://www.productiverage.com/persistent-immutable-lists-extended", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f0f67e874", "title": null, "url": "https://www.productiverage.com/visual-studio-express-the-cheats", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f0fbb7c17", "title": null, "url": "https://www.productiverage.com/the-full-text-indexer-post-roundup", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f10a2f102", "title": null, "url": "https://www.productiverage.com/wcf-with-json-and-nullable-types", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f1159e2f5", "title": null, "url": "https://www.productiverage.com/noncascading-css-a-revolution", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f11ac6bfb", "title": null, "url": "https://www.productiverage.com/never-typing-an-argument-null-exception-again", "published_at": null }, { "id": "01a0e4aa-e132-700f-b44a-218f124eb8a0", "title": null, "url": "https://www.productiverage.com/idispatch-iwastedtimeonthis-but-ilearntlots", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e3ecb7d3", "title": null, "url": "https://www.productiverage.com/windbg-rides-again", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e46f5d5a", "title": null, "url": "https://www.productiverage.com/noncascading-css-the-followup", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e4ccd17a", "title": null, "url": "https://www.productiverage.com/extending-the-css-minifier", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e4e1deba", "title": null, "url": "https://www.productiverage.com/the-full-text-indexer-automating-index-generation", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e4eef863", "title": null, "url": "https://www.productiverage.com/supporting-idispatch-through-the-cominteraction-wrapper", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e5437795", "title": null, "url": "https://www.productiverage.com/teaching-automapper-about-verbose-constructors", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e62fddad", "title": null, "url": "https://www.productiverage.com/css-minifier-caching", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e65a5be3", "title": null, "url": "https://www.productiverage.com/the-full-text-indexer-structured-queries", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e6621b37", "title": null, "url": "https://www.productiverage.com/publishing-rss", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e672a4ef", "title": null, "url": "https://www.productiverage.com/the-full-text-indexer-source-locations", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e6861a42", "title": null, "url": "https://www.productiverage.com/the-full-text-indexer-search-term-highlighting-with-source-locations", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e72a20ac", "title": null, "url": "https://www.productiverage.com/caching-mechanisms", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e7cbee94", "title": null, "url": "https://www.productiverage.com/more-caching-mechanisms", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e7e56e9c", "title": null, "url": "https://www.productiverage.com/parsing-css", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e84f1d35", "title": null, "url": "https://www.productiverage.com/the-neocities-challenge-aka-the-full-text-indexer-goes-clientside", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e8d28c33", "title": null, "url": "https://www.productiverage.com/autoreleasing-event-listeners", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e979a2f2", "title": null, "url": "https://www.productiverage.com/check-check-it-out", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e9a9a908", "title": null, "url": "https://www.productiverage.com/javascript-compression-putting-my-json-search-indexes-on-a-diet", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3e9ecba62", "title": null, "url": "https://www.productiverage.com/c-sharp-state-machines", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3eaba195c", "title": null, "url": "https://www.productiverage.com/typescript-state-machines", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3eada82a0", "title": null, "url": "https://www.productiverage.com/why-do-you-hate-my-wcf-types-php", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3ebb5a5c3", "title": null, "url": "https://www.productiverage.com/what-is-nothing", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3ec86ba38", "title": null, "url": "https://www.productiverage.com/optimising-the-css-processor-ants-and-algorithms", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3ed53a93b", "title": null, "url": "https://www.productiverage.com/cross-browser-pseudo-source-mapping-with-less", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3edf15cc7", "title": null, "url": "https://www.productiverage.com/reflection-and-c-sharp-optional-constructor-arguments", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3eeb69653", "title": null, "url": "https://www.productiverage.com/entity-framework-projections-to-immutable-types-ienumerable-vs-iqueryable", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3eefbeba5", "title": null, "url": "https://www.productiverage.com/vbscript-is-dim", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3eff1f451", "title": null, "url": "https://www.productiverage.com/automapperbyconstructor-without-automapper-and-faster", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3f0cb8e5a", "title": null, "url": "https://www.productiverage.com/happy-logging", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3f1a4bdb6", "title": null, "url": "https://www.productiverage.com/wcf-cors-plus-json-rest-complete-example", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3f261be98", "title": null, "url": "https://www.productiverage.com/javascript-dependencies-that-work-with-brackets-node-and-inbrowser", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3f310e43a", "title": null, "url": "https://www.productiverage.com/the-c-sharp-css-parser-in-javascript", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3f38b5dc5", "title": null, "url": "https://www.productiverage.com/implementing-f-sharp-inspired-with-updates-for-immutable-classes-in-c-sharp", "published_at": null }, { "id": "01a0e4aa-e133-7332-a835-30e3f3a32c15", "title": null, "url": "https://www.productiverage.com/writing-react-components-in-typescript", "published_at": null } ] posts Claim your blog
Back to productiverage.com
Blog · corpus.blog/blogs/productiverage.com/posts

productiverage.com

productiverage.com

2025

2022

2021

2020

Undated