56,966 blogs · [ { "id": "01a0b0b6-7628-71d8-862a-fec031cf3e6b", "title": "Foundations of Agent Friendly Codebases", "url": "https://chrlschn.dev/blog/2026/09/foundations-of-agent-friendly-codebases/", "published_at": "2026-09-13T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79cbb5a21f", "title": "The Unexpected AI Stack: C# + .NET (Part 5)", "url": "https://chrlschn.dev/blog/2026/08/the-unexpected-ai-stack-csharp-dotnet-part-5/", "published_at": "2026-08-17T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79cabfc1b4", "title": "The Unexpected AI Stack: C# + .NET (Part 4)", "url": "https://chrlschn.dev/blog/2026/08/the-unexpected-ai-stack-csharp-dotnet-part-4/", "published_at": "2026-08-15T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c9cd296b", "title": "The Unexpected AI Stack: C# + .NET (Part 3)", "url": "https://chrlschn.dev/blog/2026/08/the-unexpected-ai-stack-csharp-dotnet-part-3/", "published_at": "2026-08-14T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c8ef53ad", "title": "The Unexpected AI Stack: C# + .NET (Part 2)", "url": "https://chrlschn.dev/blog/2026/08/the-unexpected-ai-stack-csharp-dotnet-part-2/", "published_at": "2026-08-13T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c80f7c9c", "title": "The Unexpected AI Stack: C# + .NET (Part 1)", "url": "https://chrlschn.dev/blog/2026/08/the-unexpected-ai-stack-csharp-dotnet-part-1/", "published_at": "2026-08-10T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c6a95026", "title": "MCP is Dead; Long Live MCP! - Revisited", "url": "https://chrlschn.dev/blog/2026/08/mcp-is-dead-long-live-mcp/", "published_at": "2026-08-08T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c78772a4", "title": "MCP is Dead; Long Live MCP!", "url": "https://chrlschn.dev/blog/2026/03/mcp-is-dead-long-live-mcp/", "published_at": "2026-03-14T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c64cd818", "title": "TypeScript Conditional Types for Type Safety (Without Assertions)", "url": "https://chrlschn.dev/blog/2025/06/typescript-conditional-types-for-type-safety-without-assertions/", "published_at": "2025-06-14T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c4aa33a2", "title": "Beware the Complexity Merchants", "url": "https://chrlschn.dev/blog/2025/05/beware-the-complexity-merchants/", "published_at": "2025-05-15T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c5a332e6", "title": "The Inverted Reactivity Model of React", "url": "https://chrlschn.dev/blog/2025/01/the-inverted-reactivity-model-of-react/", "published_at": "2025-01-27T05:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c306de03", "title": "Lessons Learned from Working at Startups", "url": "https://chrlschn.dev/blog/2024/12/lessons-learned-from-working-at-startups/", "published_at": "2024-12-04T05:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c44fe415", "title": "On Bakers, Ovens, and AI Startup Moats", "url": "https://chrlschn.dev/blog/2024/11/on-bakers-ovens-and-ai-startup-moats/", "published_at": "2024-11-09T05:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c2e62bee", "title": "I'm a Gen AI Maximalist and Why You Should Be, Too", "url": "https://chrlschn.dev/blog/2024/10/im-a-gen-ai-maximalist-and-why-you-should-be-too/", "published_at": "2024-10-17T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c33625d2", "title": "Merging Objects in Google Cloud Storage with Compose and C#", "url": "https://chrlschn.dev/blog/2024/07/merging-objects-in-google-cloud-storage-with-compose-and-csharp/", "published_at": "2024-07-13T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c2e503b6", "title": "C# Discriminated Unions and .NET Channels", "url": "https://chrlschn.dev/blog/2024/07/csharp-discriminated-unions-and-dotnet-channels/", "published_at": "2024-07-06T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c3d2531e", "title": "Need for Speed: LLMs Beyond OpenAI with C#, .NET 8 SSE + Channels, Llama3, and Fireworks.ai", "url": "https://chrlschn.dev/blog/2024/05/need-for-speed-llms-beyond-openai-w-dotnet-sse-channels-llama3-fireworks-ai/", "published_at": "2024-05-05T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c22b2364", "title": "A Conceptual Model of State in Vue 3.4", "url": "https://chrlschn.dev/blog/2024/01/a-conceptual-model-of-state-in-vue-34-using-definemodel/", "published_at": "2024-01-20T05:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c27547da", "title": "A Practical Guide to Modular Monoliths with .NET", "url": "https://chrlschn.dev/blog/2024/01/a-practical-guide-to-modular-monoliths/", "published_at": "2024-01-14T05:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c1d38281", "title": "Your Interview Process Is Too Damn Long (and How To Fix It)", "url": "https://chrlschn.dev/blog/2023/10/your-interview-process-is-too-damn-long/", "published_at": "2023-10-19T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79bbc11cd9", "title": "End-to-End Type Safety with .NET7, TypeScript, and OpenAPI -- with Hot Rebuild", "url": "https://chrlschn.dev/blog/2023/10/end-to-end-type-safety-with-dotnet7-webapis-typescript-openapi/", "published_at": "2023-10-10T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79bba24bc6", "title": ".NET Task Parallel Library vs System.Threading.Channels", "url": "https://chrlschn.dev/blog/2023/10/dotnet-task-parallel-library-vs-system-threading-channels/", "published_at": "2023-10-04T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79be16aeb7", "title": "Server Sent Events with .NET 7", "url": "https://chrlschn.dev/blog/2023/09/server-sent-events-using-dotnet-7-web-api/", "published_at": "2023-09-28T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79bdaa5686", "title": "Programmatically Invoke Cloud Run Jobs with Runtime Overrides", "url": "https://chrlschn.dev/blog/2023/09/programmatically-invoke-cloud-run-jobs-with-overrides/", "published_at": "2023-09-24T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79bfdad134", "title": "TypeScript is not a Programming Language", "url": "https://chrlschn.dev/blog/2023/09/typescript-is-not-a-programming-language/", "published_at": "2023-09-12T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79bd2664cb", "title": "Mastodon is Rewinding the Clock on Social Media — in a Good Way", "url": "https://chrlschn.dev/blog/2023/08/mastodon-rewinding-the-clock-in-a-good-way/", "published_at": "2023-08-31T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79b95cd6fe", "title": "5 Engineering Lessons from Early Stage Startups", "url": "https://chrlschn.dev/blog/2023/08/5-engineering-lessons-from-early-stage-startups/", "published_at": "2023-08-22T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79ba18d0da", "title": "Cheap and Easy Way to Scrape Sites for LLM Processing", "url": "https://chrlschn.dev/blog/2023/08/cheap-and-easy-playwright-web-scraping/", "published_at": "2023-08-18T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79bafe7d6d", "title": ".NET Source Generators with .NET 7", "url": "https://chrlschn.dev/blog/2023/08/dotnet-source-generators-dotnet-7/", "published_at": "2023-08-15T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79bc51a034", "title": "Interviews in the Age of AI: Ditch Leetcode - Try Code Reviews Instead", "url": "https://chrlschn.dev/blog/2023/07/interviews-age-of-ai-ditch-leetcode-try-code-reviews-instead/", "published_at": "2023-07-31T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79bedeefb4", "title": "To Comment or Not to Comment", "url": "https://chrlschn.dev/blog/2023/07/to-comment-or-not-to-comment/", "published_at": "2023-07-06T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79bd27c4ca", "title": "Nuxt 3 with SSR on Google Cloud Firebase Functions (2023)", "url": "https://chrlschn.dev/blog/2023/06/nuxt3-with-ssr-on-google-cloud-firebase-functions-2023/", "published_at": "2023-06-13T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79bdd48d2c", "title": "React is the New IBM", "url": "https://chrlschn.dev/blog/2023/02/react-is-the-new-ibm/", "published_at": "2023-02-18T05:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c0cd8d45", "title": "Using useMemo and useCallback to Save the Past from React Langoliers", "url": "https://chrlschn.dev/blog/2023/02/using-usememo-and-usecallback-react-langoliers/", "published_at": "2023-02-03T05:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79c0d3e8ab", "title": "Vue 3x3 - A Mental Model for Building Fast", "url": "https://chrlschn.dev/blog/2023/01/vue-3x3/", "published_at": "2023-01-14T05:00:00+00:00" }, { "id": "01a08760-0f97-7114-8fa9-ed8bff362f09", "title": "3 Tips to Help Dev Teams Build Speed", "url": "https://chrlschn.dev/blog/2022/12/3-tips-to-help-dev-teams-build-speed/", "published_at": "2022-12-17T05:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79b78a040f", "title": "Thoughts on React vs Vue vs Everything Else in 2023", "url": "https://chrlschn.dev/blog/2022/12/react-vs-vue-vs-everything-in-2023/", "published_at": "2022-12-03T05:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79b67faf80", "title": "Concurrent Processing in .NET 6 with System.Threading.Channels (Bonus: Interval Trees)", "url": "https://chrlschn.dev/blog/2022/11/concurrent-processing-dotnet6-channels-interval-trees/", "published_at": "2022-11-06T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79b865918b", "title": "Use TypeScript Record Types for Better Code", "url": "https://chrlschn.dev/blog/2022/10/typescript-records-for-better-code/", "published_at": "2022-10-29T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79b71c8fee", "title": "Google Firebase with dotnet6", "url": "https://chrlschn.dev/blog/2022/09/google-firebase-dotnet6/", "published_at": "2022-09-24T04:00:00+00:00" }, { "id": "01a08760-0f98-70d0-9627-6c79b64e6aca", "title": "The Boomer .NET Dev Skill Upgrade Guide — Part 2", "url": "https://chrlschn.dev/blog/2022/05/boomer-dotnet-dev-skill-upgrade-guide-part-2/", "published_at": "2022-05-08T04:00:00+00:00" }, { "id": "01a08760-0f97-7114-8fa9-ed8bffc20a1d", "title": "The Boomer .NET Dev Skill Upgrade Guide — Part 1", "url": "https://chrlschn.dev/blog/2022/05/boomer-dotnet-dev-skill-upgrade-guide-part-1/", "published_at": "2022-05-01T04:00:00+00:00" } ] posts Claim your blog
Back to chrlschn.dev
Blog · corpus.blog/blogs/chrlschn.dev/posts

chrlschn.dev

chrlschn.dev

2026

2025

2024

2023

2022