41554 blogs · [ { "id": "01a08729-6422-70b9-8f1a-b0494cf839e1", "title": "On Magic, Convetions, and Implicit vs Explicit", "url": "https://andydote.co.uk/2026/04/02/magic-conventions-implicit-explicit/", "published_at": "2026-04-02T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da3b01fc91", "title": "Database Column Prefixes", "url": "https://andydote.co.uk/2025/01/26/database-column-prefixes/", "published_at": "2025-01-26T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da3baca39a", "title": "Explicit vs Implicit code", "url": "https://andydote.co.uk/2025/01/19/explicit-vs-implicit-code/", "published_at": "2025-01-19T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da3c6f4a69", "title": "Debugging GDI Handle Leaks", "url": "https://andydote.co.uk/2025/01/11/debugging-gdi-handles/", "published_at": "2025-01-11T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da3c74a8f8", "title": "Telemetry and Cancelled Contexts", "url": "https://andydote.co.uk/2024/12/26/opentelemetry-cancelled-contexts/", "published_at": "2024-12-26T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da3cb577ad", "title": "Outside In Design", "url": "https://andydote.co.uk/2024/12/12/system-design-outside-in/", "published_at": "2024-12-12T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da3d2ae1b6", "title": "Print debugging: a tool among other tools", "url": "https://andydote.co.uk/2024/11/24/print-debugging-tracing/", "published_at": "2024-11-24T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da3e18f96e", "title": "Too Much Configuration", "url": "https://andydote.co.uk/2024/10/31/too-much-configuration/", "published_at": "2024-10-31T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da3e1ff863", "title": "Multiple errors in an OTEL Span", "url": "https://andydote.co.uk/2024/07/20/otel-errors/", "published_at": "2024-07-20T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da3e536728", "title": "Hot Reload for ServerSide Rendering", "url": "https://andydote.co.uk/2023/11/15/hot-reload-for-serverside-rendering/", "published_at": "2023-11-15T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da3ebe6e32", "title": "Tracing: structured logging, but better in every way", "url": "https://andydote.co.uk/2023/09/19/tracing-is-better/", "published_at": "2023-09-19T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da3f3265f4", "title": "Architecture Testing", "url": "https://andydote.co.uk/2023/07/23/architecture-testing/", "published_at": "2023-07-23T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da4004b3be", "title": "Observability Driven CI", "url": "https://andydote.co.uk/2023/07/06/observability-driven-ci/", "published_at": "2023-07-06T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da40b93122", "title": "Expand Contract for Databases and Services", "url": "https://andydote.co.uk/2023/05/18/expand-contract/", "published_at": "2023-05-18T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da4142ca6d", "title": "Feature Flags in a CI Pipeline", "url": "https://andydote.co.uk/2023/01/16/feature-flags-ci/", "published_at": "2023-01-16T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da41e6209e", "title": "Changelog Driven Versioning", "url": "https://andydote.co.uk/2022/11/22/changelogs/", "published_at": "2022-11-22T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da428b4b41", "title": "QA and Continuous Delivery", "url": "https://andydote.co.uk/2022/11/10/qa-and-continuous-delivery/", "published_at": "2022-11-10T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da42952766", "title": "Deploy != Release", "url": "https://andydote.co.uk/2022/11/02/deploy-doesnt-mean-release/", "published_at": "2022-11-02T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da43162e87", "title": "Content based change detection with Make", "url": "https://andydote.co.uk/2022/09/19/make-content-hash/", "published_at": "2022-09-19T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da432a86c3", "title": "Embedding ain't easy, but its alright", "url": "https://andydote.co.uk/2022/09/14/embed/", "published_at": "2022-09-14T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da43ee9c2b", "title": "The reports of UML's death are greatly exaggerated", "url": "https://andydote.co.uk/2022/09/11/uml-isnt-dead/", "published_at": "2022-09-11T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da44c936ec", "title": "Pulumi Conditional Infrastructure for Speed", "url": "https://andydote.co.uk/2022/07/17/pulumi-faster-processes/", "published_at": "2022-07-17T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da458dd37a", "title": "An NGINX and DNS based outage", "url": "https://andydote.co.uk/2022/04/23/nginx-dns/", "published_at": "2022-04-23T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da45c0aa94", "title": "The Operator Pattern in Nomad", "url": "https://andydote.co.uk/2021/11/22/nomad-operator-pattern/", "published_at": "2021-11-22T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da465e46af", "title": "How do you tag docker images?", "url": "https://andydote.co.uk/2021/11/10/docker-tagging/", "published_at": "2021-11-10T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da46fe2034", "title": "The Problem with CPUs and Kubernetes", "url": "https://andydote.co.uk/2021/06/02/os-cpus-and-kubernetes/", "published_at": "2021-06-02T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da475ecc0b", "title": "Adding Observability to Vault", "url": "https://andydote.co.uk/2021/05/27/vault-observe/", "published_at": "2021-05-27T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da47f6f7b4", "title": "Getting NodeJS OpenTelemetry data into NewRelic", "url": "https://andydote.co.uk/2021/03/12/nodejs-opentelemetry-newrelic/", "published_at": "2021-03-12T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da48507a36", "title": "Observability with Infrastructure as Code", "url": "https://andydote.co.uk/2021/03/01/observability-with-infrastructure-as-code/", "published_at": "2021-03-01T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da490db798", "title": "Forking Multi Container Docker Builds", "url": "https://andydote.co.uk/2020/11/03/docker-multi-output/", "published_at": "2020-11-03T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da4a0cc936", "title": "Isolated Docker Multistage Images", "url": "https://andydote.co.uk/2020/11/01/docker-multistage-containers/", "published_at": "2020-11-01T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da4a45336a", "title": "Better BASHing Through Technology", "url": "https://andydote.co.uk/2020/08/28/better-bashing-through-technology/", "published_at": "2020-08-28T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da4a47c184", "title": "Sharing Docker Layers Between Build Agents", "url": "https://andydote.co.uk/2020/05/14/docker-layer-sharing/", "published_at": "2020-05-14T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da4ac66fd4", "title": "Service Mesh with Consul Connect (and Nomad)", "url": "https://andydote.co.uk/2020/05/04/service-mesh-consul-connect/", "published_at": "2020-05-04T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da4bac8540", "title": "Observability Without Honeycomb", "url": "https://andydote.co.uk/2020/03/15/observability-without-honeycomb/", "published_at": "2020-03-15T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da4c5b8fef", "title": "Nomad Isolated Exec", "url": "https://andydote.co.uk/2020/02/29/nomad-isolated-exec/", "published_at": "2020-02-29T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da4c84c4c1", "title": "Consul DNS Fowarding in Alpine, revisited", "url": "https://andydote.co.uk/2019/12/30/consul-alpine-dns-revisited/", "published_at": "2019-12-30T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da4d3cb8c6", "title": "Libvirt Hostname Resolution", "url": "https://andydote.co.uk/2019/12/22/libvirt-hostname-resolution/", "published_at": "2019-12-22T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da4dcb448a", "title": "Nomad Good, Kubernetes Bad", "url": "https://andydote.co.uk/2019/11/21/nomad-good-kubernetes-bad/", "published_at": "2019-11-21T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da4e27ff96", "title": "Creating a Vault instance with a TLS Consul Cluster", "url": "https://andydote.co.uk/2019/10/06/vault-consul-bootstrap/", "published_at": "2019-10-06T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da4ea95a1a", "title": "Consul DNS Fowarding in Ubuntu, revisited", "url": "https://andydote.co.uk/2019/09/24/consul-ubuntu-dns-revisited/", "published_at": "2019-09-24T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da4f2e92dd", "title": "Creating a TLS enabled Consul cluster", "url": "https://andydote.co.uk/2019/09/14/consul-tls-cluster/", "published_at": "2019-09-14T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da4f82faa1", "title": "Using Vault as a Development CA", "url": "https://andydote.co.uk/2019/08/25/vault-development-ca/", "published_at": "2019-08-25T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da4ff6c44e", "title": "Architecture Decision Records", "url": "https://andydote.co.uk/2019/06/29/architecture-decision-records/", "published_at": "2019-06-29T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da508436f3", "title": "Canary Routing with Traefik in Nomad", "url": "https://andydote.co.uk/2019/06/23/nomad-traefik-canary/", "published_at": "2019-06-23T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da512643e9", "title": "Feature Toggles: Reducing Coupling", "url": "https://andydote.co.uk/2019/06/11/feature-toggles-reducing-coupling/", "published_at": "2019-06-11T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da51bc6037", "title": "Feature Toggles: Branch by Abstraction", "url": "https://andydote.co.uk/2019/06/03/feature-toggles-branch-by-abstraction/", "published_at": "2019-06-03T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da52731cc3", "title": "Configuring Consul DNS Forwarding in Alpine Linux", "url": "https://andydote.co.uk/2019/05/31/consul-dns-forwarding-alpine/", "published_at": "2019-05-31T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da52a494e4", "title": "Configuring Consul DNS Forwarding in Ubuntu 16.04", "url": "https://andydote.co.uk/2019/05/29/consul-dns-forwarding/", "published_at": "2019-05-29T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da532f08ec", "title": "Running a Secure RabbitMQ Cluster in Nomad", "url": "https://andydote.co.uk/2019/04/06/nomad-rabbitmq-secure/", "published_at": "2019-04-06T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da53557a82", "title": "Hyper-V, Docker, and Networking Drama", "url": "https://andydote.co.uk/2019/03/22/hyperv-networking/", "published_at": "2019-03-22T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da54451df5", "title": "RabbitMQ clustering with Consul in Nomad", "url": "https://andydote.co.uk/2019/01/28/nomad-rabbitmq-consul-cluster/", "published_at": "2019-01-28T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da54d1618d", "title": "Testing Immutable Infrastructure", "url": "https://andydote.co.uk/2019/01/01/immutable-infra/", "published_at": "2019-01-01T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da551a27df", "title": "Code-free tracing with LogStash and Jaeger", "url": "https://andydote.co.uk/2018/12/22/serilog-elk-jaeger/", "published_at": "2018-12-22T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da55f00878", "title": "Against SemVer", "url": "https://andydote.co.uk/2018/12/16/against-semver/", "published_at": "2018-12-16T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da56babc5b", "title": "Stopping Caring...", "url": "https://andydote.co.uk/2018/12/08/stopping-caring/", "published_at": "2018-12-08T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da5751a7a6", "title": "Microservices or Components", "url": "https://andydote.co.uk/2018/10/28/microservices-or-components/", "published_at": "2018-10-28T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da57edd81e", "title": "SketchNotes: Finding Your Service Boundaries", "url": "https://andydote.co.uk/2018/09/10/sketchnotes-finding-service-boundaries/", "published_at": "2018-09-10T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da580a8d04", "title": "Semantic Configuration Validation: Earlier", "url": "https://andydote.co.uk/2018/09/08/semantic-configuration-validation-earlier/", "published_at": "2018-09-08T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da583a026b", "title": "Feature Toggles with Consul", "url": "https://andydote.co.uk/2018/09/06/consul-feature-toggles/", "published_at": "2018-09-06T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da59159823", "title": "Validate Your Configuration", "url": "https://andydote.co.uk/2018/08/26/validate-configuration/", "published_at": "2018-08-26T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da59922711", "title": "Branching and Red Builds", "url": "https://andydote.co.uk/2018/08/10/red-builds/", "published_at": "2018-08-10T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da5a04e8a9", "title": "Managing AppSettings in Consul", "url": "https://andydote.co.uk/2018/08/07/managing-consul-appsettings/", "published_at": "2018-08-07T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da5a1c893d", "title": "Locking Vault Down with Policies", "url": "https://andydote.co.uk/2018/06/23/vault-locking-it-down-with-policies/", "published_at": "2018-06-23T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da5b1abdcc", "title": "Secure Communication with Vault", "url": "https://andydote.co.uk/2018/06/22/vault-secure-communication/", "published_at": "2018-06-22T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da5b28504d", "title": "Fixing Docker volume paths on Git Bash on Windows", "url": "https://andydote.co.uk/2018/06/18/git-bash-docker-volume-paths/", "published_at": "2018-06-18T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da5b4e77be", "title": "Managing Postgres Connection Strings with Vault", "url": "https://andydote.co.uk/2018/06/17/secret-management-vault-postgres-connection/", "published_at": "2018-06-17T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da5b8882d8", "title": "Writing Conference Talks", "url": "https://andydote.co.uk/2018/05/15/writing-conference-talks/", "published_at": "2018-05-15T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da5b9cd75b", "title": "Test Expressiveness", "url": "https://andydote.co.uk/2018/02/26/test-expressiveness/", "published_at": "2018-02-26T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da5c927e98", "title": "Task Chaining and the Pipeline Operator", "url": "https://andydote.co.uk/2018/02/20/task-chainging-pipeline-operator/", "published_at": "2018-02-20T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da5d77df24", "title": "Tweaking Processes to Remove Errors", "url": "https://andydote.co.uk/2017/12/09/tweaking-process-remove-errors/", "published_at": "2017-12-09T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da5e4b8fb0", "title": "Evolutionary Development", "url": "https://andydote.co.uk/2017/11/17/evolutionary-development/", "published_at": "2017-11-17T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da5ef0f00c", "title": "Strong Configuration Composition", "url": "https://andydote.co.uk/2017/11/09/configuration-composition/", "published_at": "2017-11-09T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da5f103478", "title": "Alarm Fatigue", "url": "https://andydote.co.uk/2017/10/30/alarm-fatigue/", "published_at": "2017-10-30T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da5faa16e5", "title": "Vagrant in the world of Docker", "url": "https://andydote.co.uk/2017/10/22/vagrant-in-a-world-of-docker/", "published_at": "2017-10-22T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da603755ae", "title": "Testing RabbitMQ Concurrency in MassTransit", "url": "https://andydote.co.uk/2017/10/11/masstransit-rabbitmq-concurrency-testing/", "published_at": "2017-10-11T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da60be8c47", "title": "Composite Decorators with StructureMap", "url": "https://andydote.co.uk/2017/10/04/structuremap-composite-decorator/", "published_at": "2017-10-04T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da61817ab9", "title": "Integration Testing with Dotnet Core, Docker and RabbitMQ", "url": "https://andydote.co.uk/2017/10/02/dotnet-core-docker-integration-tests/", "published_at": "2017-10-02T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da62771753", "title": "Implementing Custom Aspnet Core ModelBinders", "url": "https://andydote.co.uk/2017/09/22/implemeting-custom-aspnetcore-modelbinders/", "published_at": "2017-09-22T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da630d834e", "title": "Testing Containers or Test Behaviour, Not Implementation", "url": "https://andydote.co.uk/2017/09/17/testing-containers/", "published_at": "2017-09-17T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da631ecd2e", "title": "Repositories Revisited (and why CQRS is better)", "url": "https://andydote.co.uk/2017/09/09/repositories-revisited/", "published_at": "2017-09-09T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da637e7ac0", "title": "Serilog LogContext with StructureMap and SimpleInjector", "url": "https://andydote.co.uk/2017/07/28/serilog-context-with-structuremap-and-simpleinjector/", "published_at": "2017-07-28T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da64431c1e", "title": "Getting Things Done", "url": "https://andydote.co.uk/2017/07/15/getting-things-done/", "published_at": "2017-07-15T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da64b4f6cb", "title": "Terraform, Kinesis Streams, Lambda and IAM problems", "url": "https://andydote.co.uk/2017/07/12/terraform-kinesis-lambda-iam/", "published_at": "2017-07-12T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da650e4ee2", "title": "S3 Multi-File upload with Terraform", "url": "https://andydote.co.uk/2017/04/23/s3-multi-file-upload-terraform/", "published_at": "2017-04-23T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da6561aab4", "title": "Don't write Frameworks, write Libraries", "url": "https://andydote.co.uk/2017/04/16/dont-write-frameworks-write-libraries/", "published_at": "2017-04-16T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da65cebc19", "title": "Using Terraform to setup AWS API-Gateway and Lambda", "url": "https://andydote.co.uk/2017/03/17/terraform-aws-lambda-api-gateway/", "published_at": "2017-03-17T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da66001b34", "title": "Unit Tests & Scratchpads", "url": "https://andydote.co.uk/2017/01/21/unit-tests-and-scratchpads/", "published_at": "2017-01-21T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da66c09eda", "title": "Update all Docker images", "url": "https://andydote.co.uk/2017/01/16/update-all-docker-images/", "published_at": "2017-01-16T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da66df3034", "title": "MediatR and Magic", "url": "https://andydote.co.uk/2017/01/07/mediatr-and-magic/", "published_at": "2017-01-07T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da6727a755", "title": "Git Aliases", "url": "https://andydote.co.uk/2017/01/06/git-aliases/", "published_at": "2017-01-06T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da679a40cd", "title": "Strong Type All The Configurations", "url": "https://andydote.co.uk/2016/12/06/strong-type-all-the-configurations/", "published_at": "2016-12-06T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da67e07b21", "title": "Shouldly: Why would you assert any other way?", "url": "https://andydote.co.uk/2016/10/09/assertion-style/", "published_at": "2016-10-09T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da688a0c18", "title": "Visualising NuGet Dependencies", "url": "https://andydote.co.uk/2016/09/12/nuget-dependencies/", "published_at": "2016-09-12T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da689c7e0a", "title": "Preventing MicroService Boilerplate", "url": "https://andydote.co.uk/2016/07/17/preventing-microservice-boilerplate/", "published_at": "2016-07-17T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da69049d21", "title": "Database Integrations for MicroServices", "url": "https://andydote.co.uk/2016/06/09/database-integrations-for-microservices/", "published_at": "2016-06-09T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da692207b1", "title": "CQS with Mediatr", "url": "https://andydote.co.uk/2016/03/19/cqs-with-mediatr/", "published_at": "2016-03-19T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da6a153d2b", "title": "RabbitMQ integration tests in XUnit", "url": "https://andydote.co.uk/2016/03/18/rabbitmq-xunit/", "published_at": "2016-03-18T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da6aa58834", "title": "Generating AssemblyInfo files with Gulp", "url": "https://andydote.co.uk/2015/11/19/generating-assemblyinfo-files-gulpjs/", "published_at": "2015-11-19T00:00:00+00:00" }, { "id": "01a08729-6423-73b1-8dbf-c1da6ad9d7ce", "title": "Posting PlainText to Asp WebApi", "url": "https://andydote.co.uk/2015/09/21/webapi-post-plaintext/", "published_at": "2015-09-21T00:00:00+00:00" } ] posts Claim your blog
Back to andydote.co.uk
Blog · corpus.blog/blogs/andydote.co.uk/posts

andydote.co.uk

andydote.co.uk

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015