41554 blogs · [ { "id": "01a0c55a-fba6-72af-a89f-0a46abb7fa2d", "title": "Event Sourced Aggregate Design: Focus on Business Logic", "url": "https://codeopinion.com/event-sourced-aggregate-design-focus-on-business-logic/", "published_at": "2021-09-09T21:32:11+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b1e2d00a2", "title": "Restructuring to a Vertical Slice Architecture", "url": "https://codeopinion.com/restructuring-to-a-vertical-slice-architecture/", "published_at": "2021-09-01T22:00:41+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b1e5412eb", "title": "Software Architecture Q&A: Microservices, CQRS & More!", "url": "https://codeopinion.com/software-architecture-qa-microservices-cqrs-more/", "published_at": "2021-08-18T21:57:56+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b1ebb32ed", "title": "Architecture Decision Records (ADR) as a LOG that answers “WHY?”", "url": "https://codeopinion.com/architecture-decision-records-adr-as-a-log-that-answers-why/", "published_at": "2021-08-11T21:42:15+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b1ee9ae23", "title": "Synchronous vs Messaging: When to use which?", "url": "https://codeopinion.com/synchronous-vs-messaging-when-to-use-which/", "published_at": "2021-08-04T21:55:42+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b1f0748dc", "title": "Message Driven Architecture to DECOUPLE a Monolith", "url": "https://codeopinion.com/message-driven-architecture-to-decouple-a-monolith/", "published_at": "2021-07-28T22:37:46+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b1fe009f3", "title": "Does CAP Theorem apply to Microservices?", "url": "https://codeopinion.com/does-cap-theorem-apply-to-microservices/", "published_at": "2021-07-14T20:58:18+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b2051b1f0", "title": "Clean Architecture Example & Breakdown", "url": "https://codeopinion.com/clean-architecture-example-breakdown/", "published_at": "2021-07-07T22:17:02+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b20664bc6", "title": "Handling Failures in Message Driven Architecture", "url": "https://codeopinion.com/handling-failures-in-message-driven-architecture/", "published_at": "2021-06-23T21:53:47+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b20a38fd5", "title": "Real-Time Web by leveraging Event Driven Architecture", "url": "https://codeopinion.com/real-time-web-by-leveraging-event-driven-architecture/", "published_at": "2021-06-16T21:54:41+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b20c23934", "title": "STOP doing dogmatic Domain Driven Design", "url": "https://codeopinion.com/stop-doing-dogmatic-domain-driven-design/", "published_at": "2021-06-09T22:55:57+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b21bc2a78", "title": "Competing Consumers Pattern for Scalability", "url": "https://codeopinion.com/competing-consumers-pattern-for-scalability/", "published_at": "2021-06-02T21:42:32+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b225a43c3", "title": "Highly COHESIVE Software Design to tame Complexity", "url": "https://codeopinion.com/highly-cohesive-software-design-to-tame-complexity/", "published_at": "2021-05-26T22:28:41+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b22ab3ebe", "title": "Testing your Domain when Event Sourcing", "url": "https://codeopinion.com/testing-your-domain-when-event-sourcing/", "published_at": "2021-05-20T21:20:16+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b239482b0", "title": "Problem Details for Better REST HTTP API Errors", "url": "https://codeopinion.com/problem-details-for-better-rest-http-api-errors/", "published_at": "2021-05-12T22:16:52+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b245c321a", "title": "Event Based Architecture: What do you mean by EVENT?", "url": "https://codeopinion.com/event-based-architecture-what-do-you-mean-by-event/", "published_at": "2021-05-05T22:36:37+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b24bbdb7b", "title": "Aggregate Design: Using Invariants as a Guide", "url": "https://codeopinion.com/aggregate-design-using-invariants-as-a-guide/", "published_at": "2021-04-28T21:46:21+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b2561936a", "title": "Do Microservices require Containers/Docker/Kubernetes?", "url": "https://codeopinion.com/do-microservices-require-containers-docker-kubernetes/", "published_at": "2021-04-21T21:38:24+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b25f509fc", "title": "Organizing (Commands, Events & Handlers) in Microservices", "url": "https://codeopinion.com/organizing-commands-events-handlers-in-microservices/", "published_at": "2021-04-14T21:32:15+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b26a5a918", "title": "Smarter Single Page Application with a REST API", "url": "https://codeopinion.com/smarter-single-page-application-with-a-rest-api/", "published_at": "2021-04-07T22:34:36+00:00" }, { "id": "01a0c563-5dfb-73a4-834e-b60b27a3760c", "title": "REST APIs for Microservices? Beware!", "url": "https://codeopinion.com/rest-apis-for-microservices-beware/", "published_at": "2021-03-31T22:05:04+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bf4d9878f", "title": "Is a REST API with CQRS Possible?", "url": "https://codeopinion.com/is-a-rest-api-with-cqrs-possible/", "published_at": "2021-03-24T22:04:36+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bf56f8fde", "title": "Snapshots in Event Sourcing for Rehydrating Aggregates", "url": "https://codeopinion.com/snapshots-in-event-sourcing-for-rehydrating-aggregates/", "published_at": "2021-03-17T22:02:01+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bf5c60b4c", "title": "Decomposing CRUD to a Task Based UI", "url": "https://codeopinion.com/decomposing-crud-to-a-task-based-ui/", "published_at": "2021-03-10T23:03:21+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bf64f7b50", "title": "AVOID Entity Services by Focusing on Capabilities", "url": "https://codeopinion.com/avoid-entity-services-by-focusing-on-capabilities/", "published_at": "2021-03-03T23:00:56+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bf6618f74", "title": "Projections in Event Sourcing: Build ANY model you want!", "url": "https://codeopinion.com/projections-in-event-sourcing-build-any-model-you-want/", "published_at": "2021-02-24T22:35:31+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bf66c4bde", "title": "Event Sourcing Example & Explained in plain English", "url": "https://codeopinion.com/event-sourcing-example-explained-in-plain-english/", "published_at": "2021-02-17T22:33:31+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bf741fee6", "title": "Aggregate (Root) Design: Behavior & Data", "url": "https://codeopinion.com/aggregate-root-design-behavior-data/", "published_at": "2021-02-10T23:03:57+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bf7d2ee79", "title": "Write Stable Code using Coupling Metrics", "url": "https://codeopinion.com/write-stable-code-using-coupling-metrics/", "published_at": "2021-02-03T23:15:37+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bf7d3a279", "title": "Avoiding a Big Ball of Mud", "url": "https://codeopinion.com/avoiding-a-big-ball-of-mud/", "published_at": "2021-01-27T23:09:17+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bf859935c", "title": "Messaging Commands & Events Explained!", "url": "https://codeopinion.com/messaging-commands-events-explained/", "published_at": "2021-01-20T22:40:20+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bf9300529", "title": "Start with a Monolith, NOT Microservices", "url": "https://codeopinion.com/start-with-a-monolith-not-microservices/", "published_at": "2021-01-13T22:36:35+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bf95e49e6", "title": "Splitting up a Monolith into Microservices", "url": "https://codeopinion.com/splitting-up-a-monolith-into-microservices/", "published_at": "2021-01-07T20:15:38+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bfa328a77", "title": "Scaling a Monolith Horizontally", "url": "https://codeopinion.com/scaling-a-monolith-horizontally/", "published_at": "2020-12-16T22:32:49+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bfa9e1a70", "title": "Event Choreography & Orchestration (Sagas)", "url": "https://codeopinion.com/event-choreography-orchestration-sagas/", "published_at": "2020-12-09T22:44:42+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bfafcc8ad", "title": "Handling Duplicate Messages (Idempotent Consumers)", "url": "https://codeopinion.com/handling-duplicate-messages-idempotent-consumers/", "published_at": "2020-12-02T23:53:21+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bfb4cc38e", "title": "Outbox Pattern: Reliably Save State & Publish Events", "url": "https://codeopinion.com/outbox-pattern-reliably-save-state-publish-events/", "published_at": "2020-11-25T22:56:15+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bfb9d39aa", "title": "The Complexity of Caching", "url": "https://codeopinion.com/the-complexity-of-caching/", "published_at": "2020-11-18T23:02:33+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bfbb7fb30", "title": "Talking C# Performance with Steve Gordon", "url": "https://codeopinion.com/talking-c-performance-with-steve-gordon/", "published_at": "2020-11-11T23:20:40+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bfc9611f0", "title": "CQRS Myths: 3 Most Common Misconceptions", "url": "https://codeopinion.com/cqrs-myths-3-most-common-misconceptions/", "published_at": "2020-11-04T22:49:50+00:00" }, { "id": "01a0c56a-c85a-73e3-8346-154bfd57e3b9", "title": "Organizing Code by Feature using Vertical Slices", "url": "https://codeopinion.com/organizing-code-by-feature-using-vertical-slices/", "published_at": "2020-10-28T22:51:30+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab54792747d5", "title": "Defining Service Boundaries by Splitting Entities", "url": "https://codeopinion.com/defining-service-boundaries-by-splitting-entities/", "published_at": "2020-10-21T22:32:03+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab5479cecc86", "title": "Scaling Hangfire: Process More Jobs Concurrently", "url": "https://codeopinion.com/scaling-hangfire-process-more-jobs-concurrently/", "published_at": "2020-10-14T21:53:50+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab547a94bae3", "title": "Message Queue Overload from High Processing Latency", "url": "https://codeopinion.com/message-queue-overload-from-high-processing-latency/", "published_at": "2020-10-07T21:33:41+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab547b2a953a", "title": "Using Hangfire and MediatR as a Message Dispatcher", "url": "https://codeopinion.com/using-hangfire-and-mediatr-as-a-message-dispatcher/", "published_at": "2020-09-30T21:40:10+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab547c20cc1a", "title": "Moving work Out-of-Process using Brighter and RabbitMQ", "url": "https://codeopinion.com/moving-work-out-of-process-using-brighter-and-rabbitmq/", "published_at": "2020-09-23T21:56:09+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab547cd8b3ce", "title": "Why use MediatR? 3 reasons why and 1 reason not", "url": "https://codeopinion.com/why-use-mediatr-3-reasons-why-and-1-reason-not/", "published_at": "2020-09-16T23:09:38+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab547d9c9b0d", "title": "Thin vs Fat Integration Events", "url": "https://codeopinion.com/thin-vs-fat-integration-events/", "published_at": "2020-09-09T22:02:20+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab547deabcb6", "title": "Solution & Project Structure of a Loosely Coupled Monolith", "url": "https://codeopinion.com/solution-project-structure-of-a-loosely-coupled-monolith/", "published_at": "2020-08-27T21:51:41+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab547e87c911", "title": "Loosely Coupled Monolith", "url": "https://codeopinion.com/loosely-coupled-monolith/", "published_at": "2020-08-19T23:55:36+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab547f0cbba9", "title": "Migrating to .NET Core: Mission Complete", "url": "https://codeopinion.com/migrating-to-net-core-mission-complete/", "published_at": "2020-08-13T00:10:27+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab547f7c1a0d", "title": "Getting Started: Apache Kafka with .NET Core", "url": "https://codeopinion.com/getting-started-apache-kafka-with-net-core/", "published_at": "2020-08-06T22:14:52+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab547fbea583", "title": "NuGet PackageReference Versions SOLUTION Wide", "url": "https://codeopinion.com/nuget-packagereference-versions-solution-wide/", "published_at": "2020-07-29T22:38:25+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab5480966043", "title": "Stop throwing Exceptions! Start being Explicit", "url": "https://codeopinion.com/stop-throwing-exceptions-start-being-explicit/", "published_at": "2020-07-22T23:32:38+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab548162b261", "title": "Thread Safety & Scoped Lifetime in Dependency Injection Containers", "url": "https://codeopinion.com/thread-safety-scoped-lifetime-in-dependency-injection-containers/", "published_at": "2020-07-16T00:02:49+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab548200c369", "title": "NuGet Package Alternatives when Migrating to .NET Core", "url": "https://codeopinion.com/nuget-package-alternatives-when-migrating-to-net-core/", "published_at": "2020-07-01T23:44:26+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab54829cb259", "title": "Multi-Targeted NuGet Package Gotchas!", "url": "https://codeopinion.com/multi-targeted-nuget-package-gotchas/", "published_at": "2020-06-24T23:28:15+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab54830deab2", "title": "CAP: Event Bus & Outbox Pattern", "url": "https://codeopinion.com/cap-event-bus-outbox-pattern/", "published_at": "2020-06-17T23:44:03+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab54830e7576", "title": "Configuring Errors and Warnings in C#", "url": "https://codeopinion.com/configuring-errors-and-warnings-in-c/", "published_at": "2020-06-03T23:38:02+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab5483ce2dc5", "title": "Roundup #72: Succinct C#, IHostedService Shutdown Timeout, try-convert, Coupling, Cohesion, and Microservices", "url": "https://codeopinion.com/roundup-72/", "published_at": "2020-05-15T01:34:03+00:00" }, { "id": "01a0c573-e5cd-7136-84a5-ab54849f319f", "title": "Why use DTOs (Data Transfer Objects)?", "url": "https://codeopinion.com/why-use-dtos-data-transfer-objects/", "published_at": "2020-05-13T23:13:03+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbd89697af", "title": ".NET Portability Analyzer", "url": "https://codeopinion.com/net-portability-analyzer/", "published_at": "2020-05-07T00:12:23+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbd90e5179", "title": "Roundup #71: C# Source Generators, MsQuic, CoreBoy, Channels", "url": "https://codeopinion.com/roundup-71/", "published_at": "2020-04-30T23:26:36+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbd92ab315", "title": "Migrating to ASP.NET Core", "url": "https://codeopinion.com/migrating-to-asp-net-core/", "published_at": "2020-04-30T00:09:16+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbd993d686", "title": "Roundup #70: Coyote, DetectDuplicates, YARP, .NET 5, Lambda?", "url": "https://codeopinion.com/roundup-70/", "published_at": "2020-04-24T02:27:03+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbd9d81373", "title": "Migrating from .NET Framework to .NET Core", "url": "https://codeopinion.com/migrating-from-net-framework-to-net-core/", "published_at": "2020-04-21T20:59:14+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbda504040", "title": "Roundup #69: ASP.NET Core Urls & Ports, Tye, Orleans, and Diagnostics", "url": "https://codeopinion.com/roundup-69/", "published_at": "2020-04-17T01:15:23+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbdb183308", "title": "Queuing Background Jobs with Coravel", "url": "https://codeopinion.com/queuing-background-jobs-with-coravel/", "published_at": "2020-04-08T23:05:57+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbdbc9dd98", "title": "CQRS: Refactoring Queries without Repositories", "url": "https://codeopinion.com/cqrs-refactoring-queries-without-repositories/", "published_at": "2020-03-05T02:53:47+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbdc73987b", "title": "Loosely Coupled Show: Software Architecture and Design", "url": "https://codeopinion.com/loosely-coupled-show/", "published_at": "2020-02-20T02:28:47+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbdc7c91d2", "title": "Roundup #68: Binding Redirects, Combining Types as Effects to Describe an Application, Endpoint from multiple middleware, Clean Architecture", "url": "https://codeopinion.com/roundup-68/", "published_at": "2020-02-14T00:33:08+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbdce9080c", "title": "Roundup #67: Cert Expiration Check, Should I use MicroServices? StackOverflow Survey, gRPC-Web", "url": "https://codeopinion.com/roundup-67/", "published_at": "2020-02-07T01:03:55+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbddd6b760", "title": "Message Sender: Who Sent the Command/Event?", "url": "https://codeopinion.com/message-sender-who-sent-the-command-event/", "published_at": "2020-02-03T22:13:42+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbde8d2fc2", "title": "Roundup #66: Capturing the World in Software, Conventional, Polymorphic classes with System.Text.Json, Blazor WebAssembly 3.2.0 Preview 1", "url": "https://codeopinion.com/roundup-66/", "published_at": "2020-01-31T00:14:27+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbdec1b2ef", "title": "Message-IDs for Handling Concurrency", "url": "https://codeopinion.com/message-ids-for-handling-concurrency/", "published_at": "2020-01-28T02:25:09+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbdf3d4532", "title": "Roundup #65: CASPaxos, HealthChecks & Serilog, Fallback Policies, Playwright, F# Path to Relaxation", "url": "https://codeopinion.com/roundup-65/", "published_at": "2020-01-24T00:29:08+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbdf58fba5", "title": "Event Versioning Guidelines", "url": "https://codeopinion.com/event-versioning-guidelines/", "published_at": "2020-01-21T02:25:05+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbe034020c", "title": "Roundup #64: Migrate from JSON.NET to System.Text.Json, Endpoint Debugging, ToQueryString, CreateDbCommand", "url": "https://codeopinion.com/roundup-64/", "published_at": "2020-01-17T15:27:12+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbe04e61ac", "title": "Message Naming Guidelines", "url": "https://codeopinion.com/message-naming-guidelines/", "published_at": "2020-01-15T02:21:45+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbe0bd3b55", "title": "Roundup #63: MessagePack v2, ApiCompat, Serilog RequestLogging, AWS Secrets, .NET Conf Blazor", "url": "https://codeopinion.com/roundup-63/", "published_at": "2020-01-03T01:58:45+00:00" }, { "id": "01a0c581-f7b3-7319-9cdd-d2fbe0c862d8", "title": "Roundup #62: ConfigureAwait, System.Threading.Channels, New Executive Director of .NET Foundation, Event Driven Collaboration, What You Need to Know About Open Source", "url": "https://codeopinion.com/roundup-62/", "published_at": "2019-12-20T00:53:41+00:00" }, { "id": "01a0c58f-c196-730a-936e-b84036dbd8c8", "title": "Roundup #61: .NET Core 3.1, AWS CDK, JetBrains Space, How Buildings Learn", "url": "https://codeopinion.com/roundup-61/", "published_at": "2019-12-06T00:39:27+00:00" }, { "id": "01a0c58f-c196-730a-936e-b84037d2e89b", "title": "Message Properties", "url": "https://codeopinion.com/message-properties/", "published_at": "2019-12-05T02:45:46+00:00" }, { "id": "01a0c58f-c196-730a-936e-b84038b69a18", "title": "Roundup #60: gRPC vs HTTP APIs, .NET Perception, Rider, WebWindow", "url": "https://codeopinion.com/roundup-60/", "published_at": "2019-11-22T01:40:31+00:00" }, { "id": "01a0c58f-c196-730a-936e-b84039263e28", "title": "Roundup #59: IHostingEnvironment vs IHostEnvironment, Async demystified, Pulumi, Memory management and GC in ASP.NET Core", "url": "https://codeopinion.com/roundup-59/", "published_at": "2019-11-15T00:56:16+00:00" }, { "id": "01a0c58f-c196-730a-936e-b8403a11a06e", "title": "Orleans Health Checks using ASP.NET Core", "url": "https://codeopinion.com/orleans-health-checks-using-asp-net-core/", "published_at": "2019-11-14T01:48:52+00:00" }, { "id": "01a0c58f-c196-730a-936e-b8403a48a300", "title": "Roundup #58: Orleans 3.0, Snitch, What’s Your Problem? Next 5 years of ASP.NET Core", "url": "https://codeopinion.com/roundup-58/", "published_at": "2019-11-08T00:49:17+00:00" }, { "id": "01a0c58f-c196-730a-936e-b8403b10d10b", "title": "Co-Hosting Orleans and ASP.NET Core", "url": "https://codeopinion.com/co-hosting-orleans-and-asp-net-core/", "published_at": "2019-11-07T02:19:42+00:00" }, { "id": "01a0c58f-c196-730a-936e-b8403b7121a1", "title": "Building .NET Core 3 under a Linux TeamCity Agent", "url": "https://codeopinion.com/building-net-core-3-under-a-linux-teamcity-agent/", "published_at": "2019-10-25T00:33:04+00:00" }, { "id": "01a0c58f-c196-730a-936e-b8403c5d70df", "title": "Roundup #57: Dapr, .NET Core API Porting, EF Core 3 NETStandard2, ASP.NET Core Best Practices", "url": "https://codeopinion.com/roundup-57/", "published_at": "2019-10-17T23:40:05+00:00" }, { "id": "01a0c58f-c196-730a-936e-b8403cfeb25a", "title": "Roundup #56: Blazor Server Performance, NetCore3 as Self-Contained, F# and Giraffe, Domain Modeling Made Functional", "url": "https://codeopinion.com/roundup-56/", "published_at": "2019-10-10T23:10:13+00:00" }, { "id": "01a0c58f-c196-730a-936e-b8403d6b1c6e", "title": "Avoiding the Repository Pattern with an ORM", "url": "https://codeopinion.com/avoiding-the-repository-pattern-with-an-orm/", "published_at": "2019-10-09T01:18:07+00:00" }, { "id": "01a0c58f-c196-730a-936e-b8403dfa1688", "title": "Roundup #55: .NET Core 3, F# 4.7, AWS joins .NET Foundation, .NET Foundation Maturity Model, Finding Service Boundaries", "url": "https://codeopinion.com/roundup-55/", "published_at": "2019-09-26T23:14:51+00:00" }, { "id": "01a0c58f-c196-730a-936e-b8403ee698e3", "title": "Roundup #54: Service Provider Validation, Default Interface Members, BFF with ProxyKit, GC Perf", "url": "https://codeopinion.com/roundup-54/", "published_at": "2019-09-12T22:20:45+00:00" }, { "id": "01a0c58f-c196-730a-936e-b8403f90e43f", "title": "Detecting Sync over Async Code in ASP.NET Core", "url": "https://codeopinion.com/detecting-sync-over-async-code-in-asp-net-core/", "published_at": "2019-09-11T01:48:41+00:00" }, { "id": "01a0c58f-c196-730a-936e-b840400d0b4b", "title": "Roundup #53: .NET Core 3 Preview 9, Improved NuGet Search, Prefer ValueTask to Task, .NET Core API Performance", "url": "https://codeopinion.com/roundup-53/", "published_at": "2019-09-06T00:54:29+00:00" }, { "id": "01a0c58f-c196-730a-936e-b840404c776a", "title": "Event Sourcing: Projections with Liquid Projections", "url": "https://codeopinion.com/event-sourcing-projections-with-liquid-projections/", "published_at": "2019-09-05T02:26:56+00:00" }, { "id": "01a0c58f-c196-730a-936e-b8404137ba0b", "title": "Roundup #52: .NET Core and systemd, System.Threading.Channels, screencastR, Configuration Pitfalls", "url": "https://codeopinion.com/roundup-52/", "published_at": "2019-08-23T00:09:23+00:00" }, { "id": "01a0c58f-c196-730a-936e-b84042314ce4", "title": "Event Sourcing with SQL Stream Store", "url": "https://codeopinion.com/event-sourcing-with-sql-stream-store/", "published_at": "2019-08-22T23:56:50+00:00" }, { "id": "01a0c58f-c196-730a-936e-b84042b8c152", "title": "Custom Metrics to AWS CloudWatch from ASP.NET Core", "url": "https://codeopinion.com/custom-metrics-to-aws-cloudwatch-from-asp-net-core/", "published_at": "2019-08-09T02:22:48+00:00" } ] posts Claim your blog
Back to codeopinion.com
Blog · corpus.blog/blogs/codeopinion.com/posts

codeopinion.com

codeopinion.com

2021

2020

2019