56,966 blogs · [ { "id": "01a0cdec-de82-7102-843a-2cce06416b57", "title": "Azure Service Bus sessions: Pub/sub without autoforwarding", "url": "https://www.planetgeek.ch/2026/09/21/azure-service-bus-sessions-pub-sub-without-autoforwarding/?utm_source=rss&utm_medium=rss&utm_campaign=azure-service-bus-sessions-pub-sub-without-autoforwarding", "published_at": "2026-09-21T06:50:34+00:00" }, { "id": "01a0cdec-de82-7102-843a-2cce069c6ffe", "title": "Azure Service Bus sessions: Delayed retries may need a hold-back", "url": "https://www.planetgeek.ch/2026/09/15/azure-service-bus-sessions-delayed-retries-may-need-a-hold-back/?utm_source=rss&utm_medium=rss&utm_campaign=azure-service-bus-sessions-delayed-retries-may-need-a-hold-back", "published_at": "2026-09-15T09:17:24+00:00" }, { "id": "01a087c5-47b4-738f-a616-9aa0e9fd0699", "title": "Azure Service Bus: Migrate topology one event at a time", "url": "https://www.planetgeek.ch/2026/09/02/azure-service-bus-migrate-topology-one-event-at-a-time/?utm_source=rss&utm_medium=rss&utm_campaign=azure-service-bus-migrate-topology-one-event-at-a-time", "published_at": "2026-09-02T15:01:58+00:00" }, { "id": "01a087c5-47bf-7215-a232-eb9d1478d0b1", "title": "Azure Service Bus: Designing for blast radius", "url": "https://www.planetgeek.ch/2026/08/25/azure-service-bus-designing-for-blast-radius/?utm_source=rss&utm_medium=rss&utm_campaign=azure-service-bus-designing-for-blast-radius", "published_at": "2026-08-25T16:59:05+00:00" }, { "id": "01a087c5-47bf-7215-a232-eb9d14b9afcc", "title": "Azure Service Bus: One topic, many subscriptions", "url": "https://www.planetgeek.ch/2026/08/14/azure-service-bus-one-topic-many-subscriptions/?utm_source=rss&utm_medium=rss&utm_campaign=azure-service-bus-one-topic-many-subscriptions", "published_at": "2026-08-14T08:31:31+00:00" }, { "id": "01a087c5-47bf-7215-a232-eb9d15ac257d", "title": "Azure Service Bus: Count your filters", "url": "https://www.planetgeek.ch/2026/08/02/azure-service-bus-count-your-filters/?utm_source=rss&utm_medium=rss&utm_campaign=azure-service-bus-count-your-filters", "published_at": "2026-08-02T12:11:04+00:00" }, { "id": "01a087c5-47bf-7215-a232-eb9d15cd1413", "title": "Keep the gains: performance regression testing without fooling yourself", "url": "https://www.planetgeek.ch/2026/07/20/keep-the-gains-performance-regression-testing-without-fooling-yourself/?utm_source=rss&utm_medium=rss&utm_campaign=keep-the-gains-performance-regression-testing-without-fooling-yourself", "published_at": "2026-07-20T19:53:11+00:00" }, { "id": "01a087c5-47bf-7215-a232-eb9d168d1517", "title": "Event Sourcing: undo set-remove-based bi-temporal events – because we must", "url": "https://www.planetgeek.ch/2026/07/14/event-sourcing-undo-set-remove-based-bi-temporal-events-because-we-must/?utm_source=rss&utm_medium=rss&utm_campaign=event-sourcing-undo-set-remove-based-bi-temporal-events-because-we-must", "published_at": "2026-07-14T08:04:42+00:00" }, { "id": "01a087c5-47bf-7215-a232-eb9d16f31d1f", "title": "Event Sourcing: set-and-remove-based bi-temporal events", "url": "https://www.planetgeek.ch/2026/07/07/event-sourcing-set-and-remove-based-bi-temporal-events/?utm_source=rss&utm_medium=rss&utm_campaign=event-sourcing-set-and-remove-based-bi-temporal-events", "published_at": "2026-07-07T07:04:08+00:00" }, { "id": "01a087c5-47bf-7215-a232-eb9d176eb9cb", "title": "The scheduler is part of your message pump", "url": "https://www.planetgeek.ch/2026/07/02/the-scheduler-is-part-of-your-message-pump/?utm_source=rss&utm_medium=rss&utm_campaign=the-scheduler-is-part-of-your-message-pump", "published_at": "2026-07-02T14:28:04+00:00" }, { "id": "01a087c5-47bf-7215-a232-eb9d184f1d6f", "title": "When the handler outlives the lease", "url": "https://www.planetgeek.ch/2026/06/29/when-the-handler-outlives-the-lease/?utm_source=rss&utm_medium=rss&utm_campaign=when-the-handler-outlives-the-lease", "published_at": "2026-06-29T09:07:33+00:00" }, { "id": "01a087c5-47bf-7215-a232-eb9d18a1af01", "title": "Event Sourcing: Aggregates, Dynamic Consistency Boundaries, or what?", "url": "https://www.planetgeek.ch/2026/06/23/event-sourcing-aggregates-dynamic-consistency-boundaries-or-what/?utm_source=rss&utm_medium=rss&utm_campaign=event-sourcing-aggregates-dynamic-consistency-boundaries-or-what", "published_at": "2026-06-23T07:52:46+00:00" }, { "id": "01a0bdcf-4477-704f-aab6-ac8ff3b8330f", "title": "A benchmark win is not the finish line", "url": "https://www.planetgeek.ch/2026/06/22/a-benchmark-win-is-not-the-finish-line/?utm_source=rss&utm_medium=rss&utm_campaign=a-benchmark-win-is-not-the-finish-line", "published_at": "2026-06-22T06:17:15+00:00" }, { "id": "01a0bdcf-4477-704f-aab6-ac8ff4471970", "title": "Message pumps fail in the transaction details", "url": "https://www.planetgeek.ch/2026/06/20/message-pumps-fail-in-the-transaction-details/?utm_source=rss&utm_medium=rss&utm_campaign=message-pumps-fail-in-the-transaction-details", "published_at": "2026-06-20T15:02:55+00:00" }, { "id": "01a0bdcf-4477-704f-aab6-ac8ff4cfa314", "title": "Event Sourcing: temporally misplaced or duplicated events", "url": "https://www.planetgeek.ch/2026/06/16/event-sourcing-temporally-misplaced-or-duplicated-events/?utm_source=rss&utm_medium=rss&utm_campaign=event-sourcing-temporally-misplaced-or-duplicated-events", "published_at": "2026-06-16T06:28:16+00:00" }, { "id": "01a0bdcf-4477-704f-aab6-ac8ff593130c", "title": "Turn messy production code into a useful benchmark", "url": "https://www.planetgeek.ch/2026/06/15/turn-messy-production-code-into-a-useful-benchmark/?utm_source=rss&utm_medium=rss&utm_campaign=turn-messy-production-code-into-a-useful-benchmark", "published_at": "2026-06-15T13:11:39+00:00" }, { "id": "01a0bdcf-4477-704f-aab6-ac8ff6207084", "title": "A message queue bought us time", "url": "https://www.planetgeek.ch/2026/06/13/learn-how-a-queue-removes-temporal-coupling-why-fire-and-forget-message-pumps-create-unbounded-concurrency-and-how-semaphoreslim-helps-control-load/?utm_source=rss&utm_medium=rss&utm_campaign=learn-how-a-queue-removes-temporal-coupling-why-fire-and-forget-message-pumps-create-unbounded-concurrency-and-how-semaphoreslim-helps-control-load", "published_at": "2026-06-13T10:10:56+00:00" }, { "id": "01a0bdcf-4477-704f-aab6-ac8ff68a9856", "title": "Event sourcing: non-bi-temporal events in a bi-temporal stream", "url": "https://www.planetgeek.ch/2026/06/09/event-sourcing-non-bi-temporal-events-in-a-bi-temporal-stream/?utm_source=rss&utm_medium=rss&utm_campaign=event-sourcing-non-bi-temporal-events-in-a-bi-temporal-stream", "published_at": "2026-06-09T08:25:02+00:00" }, { "id": "01a0bdcf-4477-704f-aab6-ac8ff73915f7", "title": "Read profiles without chasing every red bar", "url": "https://www.planetgeek.ch/2026/06/08/read-profiles-without-chasing-every-red-bar/?utm_source=rss&utm_medium=rss&utm_campaign=read-profiles-without-chasing-every-red-bar", "published_at": "2026-06-08T10:57:48+00:00" }, { "id": "01a0bdcf-4477-704f-aab6-ac8ff806a529", "title": "Event Sourcing: the not-so-simple bi-temporal basics", "url": "https://www.planetgeek.ch/2026/06/02/event-sourcing-the-not-so-simple-bi-temporal-basics/?utm_source=rss&utm_medium=rss&utm_campaign=event-sourcing-the-not-so-simple-bi-temporal-basics", "published_at": "2026-06-02T06:38:54+00:00" }, { "id": "01a0bdcf-4477-704f-aab6-ac8ff88cd883", "title": "Build a profiling harness before you benchmark", "url": "https://www.planetgeek.ch/2026/06/01/build-a-profiling-harness-before-you-benchmark/?utm_source=rss&utm_medium=rss&utm_campaign=build-a-profiling-harness-before-you-benchmark", "published_at": "2026-06-01T10:09:53+00:00" }, { "id": "01a0bdd3-6cb4-70ff-a645-2eff7cac6e23", "title": "Stop guessing: the performance loop for production code", "url": "https://www.planetgeek.ch/2026/05/27/stop-guessing-the-performance-loop-for-production-code/?utm_source=rss&utm_medium=rss&utm_campaign=stop-guessing-the-performance-loop-for-production-code", "published_at": "2026-05-27T11:11:10+00:00" }, { "id": "01a0bdd3-6cb4-70ff-a645-2eff7d82e723", "title": "Event Sourcing: Why we built our own “library”", "url": "https://www.planetgeek.ch/2026/05/26/event-sourcing-why-we-built-our-own-library/?utm_source=rss&utm_medium=rss&utm_campaign=event-sourcing-why-we-built-our-own-library", "published_at": "2026-05-26T07:17:15+00:00" }, { "id": "01a0bdd3-6cb4-70ff-a645-2eff7d839a58", "title": "Azure Service Bus: Earn the redesign", "url": "https://www.planetgeek.ch/2026/05/22/azure-service-bus-earn-the-redesign/?utm_source=rss&utm_medium=rss&utm_campaign=azure-service-bus-earn-the-redesign", "published_at": "2026-05-22T13:53:31+00:00" }, { "id": "01a0bdd3-6cb4-70ff-a645-2eff7df3615b", "title": "Event Sourcing: trade-offs of Event versioning and migrating approaches", "url": "https://www.planetgeek.ch/2026/05/19/event-sourcing-trade-offs-of-event-versioning-and-migrating-approaches/?utm_source=rss&utm_medium=rss&utm_campaign=event-sourcing-trade-offs-of-event-versioning-and-migrating-approaches", "published_at": "2026-05-19T06:36:04+00:00" }, { "id": "01a0bdd3-6cb4-70ff-a645-2eff7eebd99c", "title": "Small optimizations, large systems: tightening the Event Hubs partition key hash loop", "url": "https://www.planetgeek.ch/2026/05/18/small-optimizations-large-systems-tightening-the-event-hubs-partition-key-hash-loop/?utm_source=rss&utm_medium=rss&utm_campaign=small-optimizations-large-systems-tightening-the-event-hubs-partition-key-hash-loop", "published_at": "2026-05-18T17:19:18+00:00" }, { "id": "01a0bdd3-6cb4-70ff-a645-2eff7f1a2a30", "title": "Small optimizations, large systems: removing allocations from Event Hubs partition key hashing", "url": "https://www.planetgeek.ch/2026/05/15/small-optimizations-large-systems-removing-allocations-from-event-hubs-partition-key-hashing/?utm_source=rss&utm_medium=rss&utm_campaign=small-optimizations-large-systems-removing-allocations-from-event-hubs-partition-key-hashing", "published_at": "2026-05-15T10:42:37+00:00" }, { "id": "01a0bdd3-6cb4-70ff-a645-2eff80146b25", "title": "Event Sourcing: compensation – the simple way out when things go wrong", "url": "https://www.planetgeek.ch/2026/05/12/event-sourcing-compensation-the-simple-way-out-when-things-go-wrong/?utm_source=rss&utm_medium=rss&utm_campaign=event-sourcing-compensation-the-simple-way-out-when-things-go-wrong", "published_at": "2026-05-12T11:51:16+00:00" }, { "id": "01a0bdd3-6cb4-70ff-a645-2eff804798f0", "title": "Event Sourcing: You better Prevent long event streams", "url": "https://www.planetgeek.ch/2026/05/05/event-sourcing-you-better-prevent-long-event-streams/?utm_source=rss&utm_medium=rss&utm_campaign=event-sourcing-you-better-prevent-long-event-streams", "published_at": "2026-05-05T07:52:45+00:00" }, { "id": "01a0bdd3-6cb4-70ff-a645-2eff80899376", "title": "Event Sourcing: Read Models to the rescue", "url": "https://www.planetgeek.ch/2026/04/28/event-sourcing-read-models-to-the-rescue/?utm_source=rss&utm_medium=rss&utm_campaign=event-sourcing-read-models-to-the-rescue", "published_at": "2026-04-28T06:05:39+00:00" }, { "id": "01a0bdd3-6cb4-70ff-a645-2eff80d3b47e", "title": "Event Sourcing: A simple trick to get around read models", "url": "https://www.planetgeek.ch/2026/04/21/event-sourcing-a-simple-trick-to-get-around-read-models/?utm_source=rss&utm_medium=rss&utm_campaign=event-sourcing-a-simple-trick-to-get-around-read-models", "published_at": "2026-04-21T08:29:50+00:00" }, { "id": "01a0bdd6-d753-7040-9273-c0ef0076e6a2", "title": "Event Sourcing: Simple is often enough", "url": "https://www.planetgeek.ch/2026/04/14/event-sourcing-simple-is-often-enough/?utm_source=rss&utm_medium=rss&utm_campaign=event-sourcing-simple-is-often-enough", "published_at": "2026-04-14T06:12:00+00:00" }, { "id": "01a0bdd6-d753-7040-9273-c0ef0092388d", "title": "The Problem with Secondary Domain Events in Event Sourcing", "url": "https://www.planetgeek.ch/2026/04/01/the-problem-with-secondary-domain-events-in-event-sourcing/?utm_source=rss&utm_medium=rss&utm_campaign=the-problem-with-secondary-domain-events-in-event-sourcing", "published_at": "2026-04-01T06:50:13+00:00" }, { "id": "01a0bdd6-d753-7040-9273-c0ef015fd140", "title": "To test, or not to Test? Part 5 – Final words", "url": "https://www.planetgeek.ch/2026/03/24/to-test-or-not-to-test-part-5-final-words/?utm_source=rss&utm_medium=rss&utm_campaign=to-test-or-not-to-test-part-5-final-words", "published_at": "2026-03-24T07:23:49+00:00" }, { "id": "01a0bdd6-d753-7040-9273-c0ef023fa25e", "title": "To test, or not to Test? Part 4 – Make it easy to test locally", "url": "https://www.planetgeek.ch/2026/03/19/to-test-or-not-to-test-part-4-make-it-easy-to-test-locally/?utm_source=rss&utm_medium=rss&utm_campaign=to-test-or-not-to-test-part-4-make-it-easy-to-test-locally", "published_at": "2026-03-19T07:22:33+00:00" }, { "id": "01a0bdd6-d753-7040-9273-c0ef02c70b4a", "title": "To test, or not to Test? Part 3 – Make it easier to recover from a defect", "url": "https://www.planetgeek.ch/2026/03/17/to-test-or-not-to-test-part-3-make-it-easier-to-recover-from-a-defect/?utm_source=rss&utm_medium=rss&utm_campaign=to-test-or-not-to-test-part-3-make-it-easier-to-recover-from-a-defect", "published_at": "2026-03-17T07:01:38+00:00" }, { "id": "01a0bdd6-d754-724f-8dfc-af22281f8a0c", "title": "To test, or not to Test? Part 2 – Make it hard to make mistakes", "url": "https://www.planetgeek.ch/2026/03/12/to-test-or-not-to-test-part-2-make-it-hard-to-make-mistakes/?utm_source=rss&utm_medium=rss&utm_campaign=to-test-or-not-to-test-part-2-make-it-hard-to-make-mistakes", "published_at": "2026-03-12T07:24:18+00:00" }, { "id": "01a0bdd6-d754-724f-8dfc-af2228b32af3", "title": "To test, or not to Test? Part 1 – Why Test? And at what cost?", "url": "https://www.planetgeek.ch/2026/03/10/to-test-or-not-to-test-part-1-why-test-and-at-what-cost/?utm_source=rss&utm_medium=rss&utm_campaign=to-test-or-not-to-test-part-1-why-test-and-at-what-cost", "published_at": "2026-03-10T07:42:32+00:00" }, { "id": "01a0bdd6-d754-724f-8dfc-af2228d5c147", "title": "An ode to “Slowly” handcrafted code", "url": "https://www.planetgeek.ch/2026/02/02/an-ode-to-slowly-handcrafted-code/?utm_source=rss&utm_medium=rss&utm_campaign=an-ode-to-slowly-handcrafted-code", "published_at": "2026-02-02T17:31:37+00:00" }, { "id": "01a0bdd6-d754-724f-8dfc-af2229211d6e", "title": "C# – F# Interop (2026 edition)", "url": "https://www.planetgeek.ch/2026/01/06/c-f-interop-2026-edition/?utm_source=rss&utm_medium=rss&utm_campaign=c-f-interop-2026-edition", "published_at": "2026-01-06T07:27:09+00:00" }, { "id": "01a0bdd6-d754-724f-8dfc-af2229cbeecc", "title": "Why you shouldn’t use INs in SQL and what to use instead", "url": "https://www.planetgeek.ch/2025/12/11/why-you-shouldnt-use-ins-in-sql-and-what-to-use-instead/?utm_source=rss&utm_medium=rss&utm_campaign=why-you-shouldnt-use-ins-in-sql-and-what-to-use-instead", "published_at": "2025-12-11T14:37:04+00:00" }, { "id": "01a0bddb-145f-70da-b45d-0f873c0c6daf", "title": "I like my F# code type annotation-free", "url": "https://www.planetgeek.ch/2025/12/10/i-like-my-f-code-type-annotation-free/?utm_source=rss&utm_medium=rss&utm_campaign=i-like-my-f-code-type-annotation-free", "published_at": "2025-12-10T10:26:21+00:00" }, { "id": "01a0bddb-145f-70da-b45d-0f873ca451f2", "title": "Sprints, backlogs and Scrum Masters are a thing of the past. But what is the current state of play?", "url": "https://www.planetgeek.ch/2025/08/20/sprints-backlogs-and-scrum-masters-are-a-thing-of-the-past-but-what-is-the-current-state-of-play/?utm_source=rss&utm_medium=rss&utm_campaign=sprints-backlogs-and-scrum-masters-are-a-thing-of-the-past-but-what-is-the-current-state-of-play", "published_at": "2025-08-20T15:36:05+00:00" }, { "id": "01a0bddb-145f-70da-b45d-0f873d78b3da", "title": "Sketchnote: Responsibilty Driven Development Revisted by Ian Cooper", "url": "https://www.planetgeek.ch/2025/07/25/sketchnote-responsilibilty-driven-development-revisted-by-ian-cooper/?utm_source=rss&utm_medium=rss&utm_campaign=sketchnote-responsilibilty-driven-development-revisted-by-ian-cooper", "published_at": "2025-07-25T12:28:40+00:00" }, { "id": "01a0bddb-145f-70da-b45d-0f873db906ff", "title": "Disabling Indices in a -bacpac file (Sql Server)", "url": "https://www.planetgeek.ch/2025/05/14/disabling-indices-in-a-bacpac-file-sql-server/?utm_source=rss&utm_medium=rss&utm_campaign=disabling-indices-in-a-bacpac-file-sql-server", "published_at": "2025-05-14T09:35:24+00:00" }, { "id": "01a0bddb-145f-70da-b45d-0f873ddea72b", "title": "Tests are Documentation, or are they?", "url": "https://www.planetgeek.ch/2025/04/09/tests-are-documentation-or-are-they/?utm_source=rss&utm_medium=rss&utm_campaign=tests-are-documentation-or-are-they", "published_at": "2025-04-09T06:45:21+00:00" }, { "id": "01a0bddb-145f-70da-b45d-0f873ecdee54", "title": "Sketchnote: Practices for Effective Continuous Software Architecture – Eoin Woods", "url": "https://www.planetgeek.ch/2025/04/08/sketchnote-practices-for-effective-continuous-software-architecture-eoin-woods/?utm_source=rss&utm_medium=rss&utm_campaign=sketchnote-practices-for-effective-continuous-software-architecture-eoin-woods", "published_at": "2025-04-08T13:00:53+00:00" }, { "id": "01a0bddb-145f-70da-b45d-0f873efed661", "title": "Sketchnote: Model Rigor, You Say – Rebecca Wirfs-Brock", "url": "https://www.planetgeek.ch/2025/03/07/sketchnote-model-rigor-you-say-rebecca-wirfs-brock/?utm_source=rss&utm_medium=rss&utm_campaign=sketchnote-model-rigor-you-say-rebecca-wirfs-brock", "published_at": "2025-03-07T12:39:04+00:00" }, { "id": "01a0bddb-145f-70da-b45d-0f873fbcdfc6", "title": "Sketchnote: Evolutionary Architecture and the Role of DDD – Rebecca Parsons", "url": "https://www.planetgeek.ch/2025/03/05/sketchnote-evolutionary-architecture-and-the-role-of-ddd-rebecca-parsons/?utm_source=rss&utm_medium=rss&utm_campaign=sketchnote-evolutionary-architecture-and-the-role-of-ddd-rebecca-parsons", "published_at": "2025-03-05T10:39:30+00:00" }, { "id": "01a0bddb-145f-70da-b45d-0f8740179ed3", "title": "Sketchnote: Every Event, Everywhere, All at Once – Jacqui Read", "url": "https://www.planetgeek.ch/2025/03/05/sketchnote-every-event-everywhere-all-at-once-jacqui-read/?utm_source=rss&utm_medium=rss&utm_campaign=sketchnote-every-event-everywhere-all-at-once-jacqui-read", "published_at": "2025-03-05T10:37:49+00:00" }, { "id": "01a0bddb-145f-70da-b45d-0f8740f52bc0", "title": "Sketchnote: Modelling up! – Alberto Brandolini", "url": "https://www.planetgeek.ch/2025/03/05/sketchnote-modelling-up-alberto-brandolini/?utm_source=rss&utm_medium=rss&utm_campaign=sketchnote-modelling-up-alberto-brandolini", "published_at": "2025-03-05T10:35:27+00:00" }, { "id": "01a0bddd-ebfc-7052-bd00-8f7c195c291c", "title": "Sketchnote: what we learned about event sourcing and DDD while building a bank – Thomas Bøgh Fangel", "url": "https://www.planetgeek.ch/2025/03/05/sketchnote-what-we-learned-about-event-sourcing-and-ddd-while-building-a-bank-thomas-bogh-fangel/?utm_source=rss&utm_medium=rss&utm_campaign=sketchnote-what-we-learned-about-event-sourcing-and-ddd-while-building-a-bank-thomas-bogh-fangel", "published_at": "2025-03-05T10:32:33+00:00" }, { "id": "01a0bddd-ebfc-7052-bd00-8f7c1a1a6177", "title": "Software Architecture is more than Boxes and Arrows", "url": "https://www.planetgeek.ch/2025/03/04/software-architecture-is-more-than-boxes-as-arrows/?utm_source=rss&utm_medium=rss&utm_campaign=software-architecture-is-more-than-boxes-as-arrows", "published_at": "2025-03-04T12:33:27+00:00" }, { "id": "01a0bddd-ebfc-7052-bd00-8f7c1b01f499", "title": "Your First day on the team = releasing Your first feature", "url": "https://www.planetgeek.ch/2024/12/13/first-day-on-the-time-releasing-first-feature/?utm_source=rss&utm_medium=rss&utm_campaign=first-day-on-the-time-releasing-first-feature", "published_at": "2024-12-13T08:56:16+00:00" }, { "id": "01a0bddd-ebfc-7052-bd00-8f7c1bf3c645", "title": "Onion, Hexagonal, Clean or Fractal Architecture? All of them, and more!!", "url": "https://www.planetgeek.ch/2024/09/19/onion-hexagonal-clean-or-fractal-architecture-all-of-them-and-more/?utm_source=rss&utm_medium=rss&utm_campaign=onion-hexagonal-clean-or-fractal-architecture-all-of-them-and-more", "published_at": "2024-09-19T14:19:49+00:00" }, { "id": "01a0bddd-ebfc-7052-bd00-8f7c1c684432", "title": "Evolution of Software Architectures", "url": "https://www.planetgeek.ch/2024/09/04/evolution-of-software-architectures/?utm_source=rss&utm_medium=rss&utm_campaign=evolution-of-software-architectures", "published_at": "2024-09-04T10:06:10+00:00" }, { "id": "01a0bddd-ebfc-7052-bd00-8f7c1d45f369", "title": "The Story of a bug hunt", "url": "https://www.planetgeek.ch/2024/06/19/the-story-of-a-bug-hunt/?utm_source=rss&utm_medium=rss&utm_campaign=the-story-of-a-bug-hunt", "published_at": "2024-06-19T07:30:23+00:00" }, { "id": "01a0bddd-ebfc-7052-bd00-8f7c1d8b03eb", "title": "(Mis)estimation – why estimates tend to be wrong", "url": "https://www.planetgeek.ch/2024/02/07/misestimation-why-estimation-does-not-work/?utm_source=rss&utm_medium=rss&utm_campaign=misestimation-why-estimation-does-not-work", "published_at": "2024-02-07T09:51:14+00:00" }, { "id": "01a0bddd-ebfc-7052-bd00-8f7c1df1724e", "title": "Our Experience with Bi-temporal Event Sourcing", "url": "https://www.planetgeek.ch/2023/12/04/our-experience-with-bi-temporal-event-sourcing/?utm_source=rss&utm_medium=rss&utm_campaign=our-experience-with-bi-temporal-event-sourcing", "published_at": "2023-12-04T07:20:33+00:00" }, { "id": "01a0bddd-ebfc-7052-bd00-8f7c1dfc998f", "title": "Angular Signals – When should I use what?", "url": "https://www.planetgeek.ch/2023/08/07/angular-signals-when-should-i-use-what/?utm_source=rss&utm_medium=rss&utm_campaign=angular-signals-when-should-i-use-what", "published_at": "2023-08-07T14:15:04+00:00" }, { "id": "01a0bddd-ebfc-7052-bd00-8f7c1e2bd513", "title": "Angular Signals – How to reuse Backend Results?", "url": "https://www.planetgeek.ch/2023/07/27/angular-signals-how-to-reuse-backend-results/?utm_source=rss&utm_medium=rss&utm_campaign=angular-signals-how-to-reuse-backend-results", "published_at": "2023-07-27T07:48:24+00:00" }, { "id": "01a0bde0-9164-7132-9793-b624a44701f9", "title": "Angular Signals – How to use them in a simple way?", "url": "https://www.planetgeek.ch/2023/07/17/angular-signals-how-to-use-them-in-a-simple-way/?utm_source=rss&utm_medium=rss&utm_campaign=angular-signals-how-to-use-them-in-a-simple-way", "published_at": "2023-07-17T11:13:08+00:00" }, { "id": "01a0bde0-9164-7132-9793-b624a4485a59", "title": "Myths about F#: Code without type annotations is hard to review! No, it’s a relief.", "url": "https://www.planetgeek.ch/2023/06/28/myths-about-f-code-without-type-annotations-is-hard-to-review-no-its-a-relief/?utm_source=rss&utm_medium=rss&utm_campaign=myths-about-f-code-without-type-annotations-is-hard-to-review-no-its-a-relief", "published_at": "2023-06-28T09:27:56+00:00" }, { "id": "01a0bde0-9164-7132-9793-b624a50d86f9", "title": "Version Conflicts with NuGet Packages", "url": "https://www.planetgeek.ch/2023/06/14/version-conflicts-with-nuget-packages/?utm_source=rss&utm_medium=rss&utm_campaign=version-conflicts-with-nuget-packages", "published_at": "2023-06-14T12:35:07+00:00" }, { "id": "01a0bde0-9164-7132-9793-b624a52fadce", "title": "The caretaker model – our way of working", "url": "https://www.planetgeek.ch/2023/06/13/the-caretaker-model-our-way-of-working/?utm_source=rss&utm_medium=rss&utm_campaign=the-caretaker-model-our-way-of-working", "published_at": "2023-06-13T12:20:55+00:00" }, { "id": "01a0bde0-9164-7132-9793-b624a5f090c9", "title": "Today’s random F# code: one-line unit tests", "url": "https://www.planetgeek.ch/2023/05/24/todays-random-f-code-one-line-unit-tests/?utm_source=rss&utm_medium=rss&utm_campaign=todays-random-f-code-one-line-unit-tests", "published_at": "2023-05-24T11:32:52+00:00" }, { "id": "01a0bde0-9164-7132-9793-b624a68fb5e6", "title": "Myths about F#: F#’s strict ordering is dumb! No, it’s great for taming dependencies.", "url": "https://www.planetgeek.ch/2023/05/09/myths-about-f-fs-strict-ordering-is-dumb-no-its-great-for-taming-dependencies/?utm_source=rss&utm_medium=rss&utm_campaign=myths-about-f-fs-strict-ordering-is-dumb-no-its-great-for-taming-dependencies", "published_at": "2023-05-09T17:23:10+00:00" }, { "id": "01a0bde0-9164-7132-9793-b624a785e10c", "title": "Myths about F#: F# is slow! No, F# can be really fast.", "url": "https://www.planetgeek.ch/2023/05/04/myths-about-f-f-is-slow-no-f-can-be-really-fast/?utm_source=rss&utm_medium=rss&utm_campaign=myths-about-f-f-is-slow-no-f-can-be-really-fast", "published_at": "2023-05-04T10:40:07+00:00" }, { "id": "01a0bde0-9164-7132-9793-b624a80153a8", "title": "Today’s random F# code: Using measures to give types more meaning", "url": "https://www.planetgeek.ch/2023/04/20/todays-random-f-code-using-measures-to-give-types-more-meaning/?utm_source=rss&utm_medium=rss&utm_campaign=todays-random-f-code-using-measures-to-give-types-more-meaning", "published_at": "2023-04-20T06:29:39+00:00" }, { "id": "01a0bde0-9164-7132-9793-b624a8bbc727", "title": "Myths about F#: F# is hard to learn! No, it’s just different than C#.", "url": "https://www.planetgeek.ch/2023/04/14/myths-about-f-f-is-hard-to-learn-no-its-just-different-than-c/?utm_source=rss&utm_medium=rss&utm_campaign=myths-about-f-f-is-hard-to-learn-no-its-just-different-than-c", "published_at": "2023-04-14T16:10:21+00:00" }, { "id": "01a0bde0-9164-7132-9793-b624a97140c2", "title": "Object-Oriented vs. Functional Programming with C# and F# [Presentation]", "url": "https://www.planetgeek.ch/2023/04/07/object-oriented-vs-functional-programming-with-c-and-f-presentation/?utm_source=rss&utm_medium=rss&utm_campaign=object-oriented-vs-functional-programming-with-c-and-f-presentation", "published_at": "2023-04-07T11:22:48+00:00" }, { "id": "01a0bde3-040a-7022-8e06-1ac5b178afd3", "title": "Myths about F#: We can’t use F# because we can’t rewrite everything from C#! You don’t have to, use Interop.", "url": "https://www.planetgeek.ch/2023/04/04/myths-about-f-we-cant-use-f-because-we-cant-rewrite-everything-from-c-you-dont-have-to-use-interop/?utm_source=rss&utm_medium=rss&utm_campaign=myths-about-f-we-cant-use-f-because-we-cant-rewrite-everything-from-c-you-dont-have-to-use-interop", "published_at": "2023-04-04T15:44:21+00:00" }, { "id": "01a0bde3-040a-7022-8e06-1ac5b1effc6e", "title": "Today’s random F# code: Using Verify to prevent breaking changes in stored data", "url": "https://www.planetgeek.ch/2023/03/31/todays-random-f-code-using-verify-to-prevent-breaking-changes-in-stored-data/?utm_source=rss&utm_medium=rss&utm_campaign=todays-random-f-code-using-verify-to-prevent-breaking-changes-in-stored-data", "published_at": "2023-03-31T09:55:18+00:00" }, { "id": "01a0bde3-040a-7022-8e06-1ac5b24c1846", "title": "Today’s random F# code: Code Structure", "url": "https://www.planetgeek.ch/2023/03/22/todays-random-f-code-code-structure/?utm_source=rss&utm_medium=rss&utm_campaign=todays-random-f-code-code-structure", "published_at": "2023-03-22T10:11:41+00:00" }, { "id": "01a0bde3-040a-7022-8e06-1ac5b2beb80f", "title": "Myths about F#: We tried FP in C#, and it’s unreadable! Yes, but that’s where F# shines.", "url": "https://www.planetgeek.ch/2023/03/21/myths-about-f-we-tried-fp-in-c-and-its-unreadable-yes-but-thats-where-f-shines/?utm_source=rss&utm_medium=rss&utm_campaign=myths-about-f-we-tried-fp-in-c-and-its-unreadable-yes-but-thats-where-f-shines", "published_at": "2023-03-21T12:38:02+00:00" }, { "id": "01a0bde3-040a-7022-8e06-1ac5b2c86f39", "title": "Myths about F#: Imperative code is simpler than functional code! No, not at all, but you are more used to it.", "url": "https://www.planetgeek.ch/2023/03/01/myths-about-f-imperative-code-is-simpler-than-functional-code-no-not-at-all-but-you-are-more-used-to-it/?utm_source=rss&utm_medium=rss&utm_campaign=myths-about-f-imperative-code-is-simpler-than-functional-code-no-not-at-all-but-you-are-more-used-to-it", "published_at": "2023-03-01T12:20:30+00:00" }, { "id": "01a0bde3-040a-7022-8e06-1ac5b2f7eb11", "title": "Today’s random F# code: Regex Active Pattern in API Validation", "url": "https://www.planetgeek.ch/2023/02/26/todays-random-f-code-regex-active-pattern-in-api-validation/?utm_source=rss&utm_medium=rss&utm_campaign=todays-random-f-code-regex-active-pattern-in-api-validation", "published_at": "2023-02-26T13:46:25+00:00" }, { "id": "01a0bde3-040a-7022-8e06-1ac5b341e8e1", "title": "Myths about F#: F# is for FP, C# for OOP! No, F# loves OO.", "url": "https://www.planetgeek.ch/2023/02/22/myths-about-f-f-is-for-fp-c-for-oop/?utm_source=rss&utm_medium=rss&utm_campaign=myths-about-f-f-is-for-fp-c-for-oop", "published_at": "2023-02-22T16:38:59+00:00" }, { "id": "01a0bde3-040a-7022-8e06-1ac5b42dfbd5", "title": "Today’s random F# code: Nice test error messages with Unquote and Diffract", "url": "https://www.planetgeek.ch/2023/02/20/todays-random-f-code-nice-test-error-messages-with-unquote-and-diffract/?utm_source=rss&utm_medium=rss&utm_campaign=todays-random-f-code-nice-test-error-messages-with-unquote-and-diffract", "published_at": "2023-02-20T10:38:03+00:00" }, { "id": "01a0bde3-040a-7022-8e06-1ac5b4d17f47", "title": "Myths about F#: F# has too many operators! Many, but not more than C#.", "url": "https://www.planetgeek.ch/2023/02/16/myths-about-f-f-has-too-many-operators/?utm_source=rss&utm_medium=rss&utm_campaign=myths-about-f-f-has-too-many-operators", "published_at": "2023-02-16T09:13:20+00:00" }, { "id": "01a0bde3-040a-7022-8e06-1ac5b5a6cf50", "title": "Using SRTP-Active Patterns in F#", "url": "https://www.planetgeek.ch/2023/02/12/using-srtp-active-patterns-in-f/?utm_source=rss&utm_medium=rss&utm_campaign=using-srtp-active-patterns-in-f", "published_at": "2023-02-12T14:22:32+00:00" }, { "id": "01a0bde5-610c-716b-97d7-e54eb2162a4b", "title": "Today’s random F# code: Domain modelling with discriminated unions", "url": "https://www.planetgeek.ch/2023/02/09/todays-random-f-code-domain-modelling-with-discriminated-unions/?utm_source=rss&utm_medium=rss&utm_campaign=todays-random-f-code-domain-modelling-with-discriminated-unions", "published_at": "2023-02-09T08:51:01+00:00" }, { "id": "01a0bde5-610c-716b-97d7-e54eb2ddc634", "title": "Myths about F#: F# is for math problems only! No, F# is a general-purpose programming language.", "url": "https://www.planetgeek.ch/2023/02/08/myths-about-f-f-is-for-math-problems/?utm_source=rss&utm_medium=rss&utm_campaign=myths-about-f-f-is-for-math-problems", "published_at": "2023-02-08T15:43:20+00:00" }, { "id": "01a0bde5-610c-716b-97d7-e54eb2fb3c9d", "title": "Today’s random F# code: Result instead of exceptions", "url": "https://www.planetgeek.ch/2023/02/08/todays-random-f-code-result-instead-of-exceptions/?utm_source=rss&utm_medium=rss&utm_campaign=todays-random-f-code-result-instead-of-exceptions", "published_at": "2023-02-08T15:02:34+00:00" }, { "id": "01a0bde5-610c-716b-97d7-e54eb366c3bc", "title": "Today’s random F# code: validation", "url": "https://www.planetgeek.ch/2023/02/06/todays-random-f-code-validation/?utm_source=rss&utm_medium=rss&utm_campaign=todays-random-f-code-validation", "published_at": "2023-02-06T12:00:00+00:00" }, { "id": "01a0bde5-610c-716b-97d7-e54eb37158f8", "title": "Myths about F#: C# will become F# anyway, so we don’t need F#! Nope, not happening.", "url": "https://www.planetgeek.ch/2023/02/06/myths-about-f-c-will-become-f-anyway-so-we-dont-need-f/?utm_source=rss&utm_medium=rss&utm_campaign=myths-about-f-c-will-become-f-anyway-so-we-dont-need-f", "published_at": "2023-02-06T11:57:10+00:00" }, { "id": "01a0bde5-610c-716b-97d7-e54eb4564fa4", "title": "Today’s random F# code: Type inference", "url": "https://www.planetgeek.ch/2023/02/02/todays-random-f-code-type-inference/?utm_source=rss&utm_medium=rss&utm_campaign=todays-random-f-code-type-inference", "published_at": "2023-02-02T07:50:40+00:00" }, { "id": "01a0bde5-610c-716b-97d7-e54eb4d817d4", "title": "Our journey to F#: C#-F# Interop", "url": "https://www.planetgeek.ch/2022/12/02/our-journey-to-f-c-f-interop/?utm_source=rss&utm_medium=rss&utm_campaign=our-journey-to-f-c-f-interop", "published_at": "2022-12-02T12:24:20+00:00" }, { "id": "01a0bde5-610c-716b-97d7-e54eb4e3214f", "title": "BenQ ScreenBar – the gadget you don’t know you need", "url": "https://www.planetgeek.ch/2022/10/18/benq-screenbar-the-gadget-you-dont-know-you-need/?utm_source=rss&utm_medium=rss&utm_campaign=benq-screenbar-the-gadget-you-dont-know-you-need", "published_at": "2022-10-18T12:31:00+00:00" }, { "id": "01a0bde5-610c-716b-97d7-e54eb5ad1aa1", "title": "Using System.Text.Json alongside Newtonsoft Json.Net", "url": "https://www.planetgeek.ch/2022/10/15/using-system-text-json-alongside-newtonsoft-json-net/?utm_source=rss&utm_medium=rss&utm_campaign=using-system-text-json-alongside-newtonsoft-json-net", "published_at": "2022-10-15T09:13:09+00:00" }, { "id": "01a0bde5-610c-716b-97d7-e54eb6330b42", "title": "NgForm with nested validation", "url": "https://www.planetgeek.ch/2022/06/15/ngform-with-nested-validation/?utm_source=rss&utm_medium=rss&utm_campaign=ngform-with-nested-validation", "published_at": "2022-06-15T09:39:28+00:00" }, { "id": "01a0bde7-e2c3-709f-94cc-49afeb8beae5", "title": "Creating a lazy-loading wrapper component in Angular", "url": "https://www.planetgeek.ch/2022/03/15/creating-a-lazy-loading-wrapper-component-in-angular/?utm_source=rss&utm_medium=rss&utm_campaign=creating-a-lazy-loading-wrapper-component-in-angular", "published_at": "2022-03-15T10:39:28+00:00" }, { "id": "01a0bde7-e2c3-709f-94cc-49afec1d887e", "title": "2021 in blog posts", "url": "https://www.planetgeek.ch/2021/12/21/2021-in-blog-posts/?utm_source=rss&utm_medium=rss&utm_campaign=2021-in-blog-posts", "published_at": "2021-12-21T14:42:04+00:00" }, { "id": "01a0bde7-e2c3-709f-94cc-49afecbc8f62", "title": "Our journey to F#: The effect of F# on our (unit) tests", "url": "https://www.planetgeek.ch/2021/12/06/our-journey-to-f-the-effect-of-f-on-our-unit-tests/?utm_source=rss&utm_medium=rss&utm_campaign=our-journey-to-f-the-effect-of-f-on-our-unit-tests", "published_at": "2021-12-06T06:55:56+00:00" }, { "id": "01a0bde7-e2c3-709f-94cc-49afeda4abf1", "title": "Pimping Unquote", "url": "https://www.planetgeek.ch/2021/07/02/pimping-unquote/?utm_source=rss&utm_medium=rss&utm_campaign=pimping-unquote", "published_at": "2021-07-02T15:48:22+00:00" }, { "id": "01a0bde7-e2c3-709f-94cc-49afee4f4f50", "title": "Type-safety across .Net and TypeScript – Testing JSON serialization and deserialization", "url": "https://www.planetgeek.ch/2021/04/27/type-safety-across-net-and-typescript-testing-json-serialization-and-deserialization/?utm_source=rss&utm_medium=rss&utm_campaign=type-safety-across-net-and-typescript-testing-json-serialization-and-deserialization", "published_at": "2021-04-27T12:00:00+00:00" }, { "id": "01a0bde7-e2c3-709f-94cc-49afeea19c36", "title": "Our journey to F#: making async understand Tasks", "url": "https://www.planetgeek.ch/2021/04/22/our-journey-to-f-making-async-understand-tasks/?utm_source=rss&utm_medium=rss&utm_campaign=our-journey-to-f-making-async-understand-tasks", "published_at": "2021-04-22T14:08:49+00:00" }, { "id": "01a0bde7-e2c3-709f-94cc-49afeed6763a", "title": "Our journey to F#: JSON serialization with a mix of C# and F#", "url": "https://www.planetgeek.ch/2021/04/19/our-journey-to-f-json-serialization-with-a-mix-of-c-and-f/?utm_source=rss&utm_medium=rss&utm_campaign=our-journey-to-f-json-serialization-with-a-mix-of-c-and-f", "published_at": "2021-04-19T12:02:00+00:00" }, { "id": "01a0bde7-e2c3-709f-94cc-49afef5905ff", "title": "Angular Component – part 3: Validation", "url": "https://www.planetgeek.ch/2021/04/15/angular-component-part-3-validation/?utm_source=rss&utm_medium=rss&utm_campaign=angular-component-part-3-validation", "published_at": "2021-04-15T10:50:07+00:00" }, { "id": "01a0bde7-e2c3-709f-94cc-49afef5d6976", "title": "Type-safety across .Net and TypeScript – TypeScript-friendly JSON serialization of F# types", "url": "https://www.planetgeek.ch/2021/04/07/type-safety-across-net-and-typescript-typescript-friendly-json-serialization-of-f-types/?utm_source=rss&utm_medium=rss&utm_campaign=type-safety-across-net-and-typescript-typescript-friendly-json-serialization-of-f-types", "published_at": "2021-04-07T12:00:00+00:00" } ] posts Claim your blog
Back to planetgeek.ch
Blog · corpus.blog/blogs/planetgeek.ch/posts

planetgeek.ch

planetgeek.ch

2026

2025

2024

2023

2022

2021