The Curious Engineer

All blogs / DevOps / SRE / infrastructure

Andy Dote

andydote.co.uk

Recent content on Andy Dote

DevOps / SRE / infrastructureTesting / QASoftware / engineering practice

Posts
169 from 1 Jan 2001 to 2 Apr 2026
Posting
now and then (1 in the last year)
Kind
personal blog
Feed
https://andydote.co.uk/rss.xml

2026 1

  1. On Magic, Convetions, and Implicit vs Explicit

2025 3

  1. Database Column Prefixes
  2. Explicit vs Implicit code
  3. Debugging GDI Handle Leaks

2024 5

  1. Telemetry and Cancelled Contexts
  2. Outside In Design
  3. Print debugging: a tool among other tools
  4. Too Much Configuration
  5. Multiple errors in an OTEL Span

2023 6

  1. Hot Reload for ServerSide Rendering
  2. Tracing: structured logging, but better in every way
  3. Architecture Testing
  4. Observability Driven CI
  5. Expand Contract for Databases and Services
  6. Feature Flags in a CI Pipeline

2022 8

  1. Changelog Driven Versioning
  2. QA and Continuous Delivery
  3. Deploy != Release
  4. Content based change detection with Make
  5. Embedding ain't easy, but its alright
  6. The reports of UML's death are greatly exaggerated
  7. Pulumi Conditional Infrastructure for Speed
  8. An NGINX and DNS based outage

2021 6

  1. The Operator Pattern in Nomad
  2. How do you tag docker images?
  3. The Problem with CPUs and Kubernetes
  4. Adding Observability to Vault
  5. Getting NodeJS OpenTelemetry data into NewRelic
  6. Observability with Infrastructure as Code

2020 7

  1. Forking Multi Container Docker Builds
  2. Isolated Docker Multistage Images
  3. Better BASHing Through Technology
  4. Sharing Docker Layers Between Build Agents
  5. Service Mesh with Consul Connect (and Nomad)
  6. Observability Without Honeycomb
  7. Nomad Isolated Exec

2019 17

  1. Consul DNS Fowarding in Alpine, revisited
  2. Libvirt Hostname Resolution
  3. Nomad Good, Kubernetes Bad
  4. Creating a Vault instance with a TLS Consul Cluster
  5. Consul DNS Fowarding in Ubuntu, revisited
  6. Creating a TLS enabled Consul cluster
  7. Using Vault as a Development CA
  8. Architecture Decision Records
  9. Canary Routing with Traefik in Nomad
  10. Feature Toggles: Reducing Coupling
  11. Feature Toggles: Branch by Abstraction
  12. Configuring Consul DNS Forwarding in Alpine Linux
  13. Configuring Consul DNS Forwarding in Ubuntu 16.04
  14. Running a Secure RabbitMQ Cluster in Nomad
  15. Hyper-V, Docker, and Networking Drama
  16. RabbitMQ clustering with Consul in Nomad
  17. Testing Immutable Infrastructure

2018 17

  1. Code-free tracing with LogStash and Jaeger
  2. Against SemVer
  3. Stopping Caring...
  4. Microservices or Components
  5. SketchNotes: Finding Your Service Boundaries
  6. Semantic Configuration Validation: Earlier
  7. Feature Toggles with Consul
  8. Validate Your Configuration
  9. Branching and Red Builds
  10. Managing AppSettings in Consul
  11. Locking Vault Down with Policies
  12. Secure Communication with Vault
  13. Fixing Docker volume paths on Git Bash on Windows
  14. Managing Postgres Connection Strings with Vault
  15. Writing Conference Talks
  16. Test Expressiveness
  17. Task Chaining and the Pipeline Operator

2017 21

  1. Tweaking Processes to Remove Errors
  2. Evolutionary Development
  3. Strong Configuration Composition
  4. Alarm Fatigue
  5. Vagrant in the world of Docker
  6. Testing RabbitMQ Concurrency in MassTransit
  7. Composite Decorators with StructureMap
  8. Integration Testing with Dotnet Core, Docker and RabbitMQ
  9. Implementing Custom Aspnet Core ModelBinders
  10. Testing Containers or Test Behaviour, Not Implementation
  11. Repositories Revisited (and why CQRS is better)
  12. Serilog LogContext with StructureMap and SimpleInjector
  13. Getting Things Done
  14. Terraform, Kinesis Streams, Lambda and IAM problems
  15. S3 Multi-File upload with Terraform
  16. Don't write Frameworks, write Libraries
  17. Using Terraform to setup AWS API-Gateway and Lambda
  18. Unit Tests & Scratchpads
  19. Update all Docker images
  20. MediatR and Magic
  21. Git Aliases

2016 7

  1. Strong Type All The Configurations
  2. Shouldly: Why would you assert any other way?
  3. Visualising NuGet Dependencies
  4. Preventing MicroService Boilerplate
  5. Database Integrations for MicroServices
  6. CQS with Mediatr
  7. RabbitMQ integration tests in XUnit

2015 8

  1. Generating AssemblyInfo files with Gulp
  2. Posting PlainText to Asp WebApi
  3. Running pre-compiled microservices in Docker with Mono
  4. Running microservices in Docker with Mono
  5. A single project Windows Service and Console
  6. Don't Let The Database Dictate Your Design
  7. The problems with and solutions to Repositories
  8. Communicating Intent in APIs

2014 16

  1. Encapsulation in Warcraft Addons - Inheritance
  2. Encapsulation in Warcraft Addons - Closures
  3. Good Design in Warcraft Addons/Lua
  4. Edge.js for Embedded Webuis
  5. Configuring Dapper to work with custom types
  6. Strong Type your entity IDs.
  7. Specific Interfaces
  8. Using StructureMap Registries for better separation
  9. Writing Rich Domain Models
  10. Using a Micro ORM to decouple your DB Access
  11. SOLID Principles - DIP
  12. SOLID Principles - ISP
  13. SOLID Principles - LSP
  14. SOLID Principles - OCP
  15. SOLID Principles - SRP
  16. Specialising a General Application

2013 2

  1. Analysis of Frames in World of Warcraft
  2. Creating a FubuMvc website

2012 8

  1. Checking a Type for an Attribute
  2. SqlDataReader.HasRows Problems
  3. Winforms Design Time support: exposing sub designers
  4. Designing the EventDistributor
  5. Model View Presenters: Composite Views
  6. Model View Presenters: View to Presenter Communication
  7. Model View Presenters: Introduction
  8. Model View Presenters: Presenter to View Communication

2011 7

  1. Working with XmlTextWriter
  2. Noticing Changes
  3. C# and Vb.Net Differences
  4. c# Enum casting
  5. Differences between Properties and Auto Properties
  6. (Miss)Use of Narrowing-Implicit Operators
  7. Expression Rules, Version 2

2010 7

  1. Adding MSpec to your Git Bash
  2. Databinding to a DataGridView - The order of columns
  3. Actually, I'll mutate if you don't mind
  4. To mutate or not to mutate
  5. Using Visual Studio's Regex Find and Replace
  6. Multilining If statements conditions should be banned. now.
  7. Converting from NUnit to MSTest

2009 17

  1. Thanks Google for solving my problem!
  2. Functionality and Seperation of Concerns
  3. Software Fuzzying maybe?
  4. Region Hate
  5. Fluency at a cost?
  6. Key Bindings
  7. CI: Thoughts on CC.Net and Hudson
  8. Overuse of the Var keyword
  9. Coming From Something as opposed to Going To Something
  10. Fluent Validation
  11. The Reading List
  12. Converting Code
  13. Microcontrollers for MenuItems
  14. Generics to the rescue! Again!
  15. Using Laziness
  16. Finally, I have used a Model View Controller!
  17. SQL Like statement

2008 5

  1. Conflicting Unrelated Options: Alps Trackpad vs Microsoft Mouse
  2. Creating Non resizable controls
  3. Vaio Event Service and Vista
  4. Flow Layout Panel and Scroll Wheel Problem
  5. VB.NET & C# Fixed height User Controls

2001 1

  1. Random Notes