<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://woodruff.dev/</loc></url><url><loc>https://woodruff.dev/about/</loc></url><url><loc>https://woodruff.dev/blog/</loc></url><url><loc>https://woodruff.dev/blog/5-ef-core-performance-anti-patterns-that-entity-framework-extensions-eliminates/</loc></url><url><loc>https://woodruff.dev/blog/12-months-12-books-my-yearlong-journey-to-learn-grow-and-level-up/</loc></url><url><loc>https://woodruff.dev/blog/accelerating-ef-core-with-compiled-queries/</loc></url><url><loc>https://woodruff.dev/blog/add-vs-addrange-in-ef-core-the-performance-myth-you-need-to-stop-repeating/</loc></url><url><loc>https://woodruff.dev/blog/announcing-my-new-book-htmx-essentials-for-asp-net-core-developers/</loc></url><url><loc>https://woodruff.dev/blog/back-to-the-past-how-htmx-is-reviving-server-driven-web-development/</loc></url><url><loc>https://woodruff.dev/blog/batching-like-a-boss-using-idbcontextfactory-for-high-performance-ef-core-updates/</loc></url><url><loc>https://woodruff.dev/blog/batching-updates-and-inserts-making-ef-core-work-smarter-not-harder/</loc></url><url><loc>https://woodruff.dev/blog/beyond-boundaries-is-getting-a-major-update-for-net-11-and-c-15/</loc></url><url><loc>https://woodruff.dev/blog/boosting-razor-pages-ux-the-htmx-upgrade-you-need/</loc></url><url><loc>https://woodruff.dev/blog/borrowing-and-references-rusts-version-of-ref-but-nicer/</loc></url><url><loc>https://woodruff.dev/blog/breaking-down-http-what-really-happens-in-a-request-and-response/</loc></url><url><loc>https://woodruff.dev/blog/bridging-the-gap-between-software-engineering-and-business-goals/</loc></url><url><loc>https://woodruff.dev/blog/bringing-simplicity-first-to-the-page-my-upcoming-book/</loc></url><url><loc>https://woodruff.dev/blog/building-a-cli-app-in-rust-my-first-project/</loc></url><url><loc>https://woodruff.dev/blog/building-bridges-client-side-socket-programming-in-action/</loc></url><url><loc>https://woodruff.dev/blog/building-with-net-and-rust-a-tale-of-two-ecosystems/</loc></url><url><loc>https://woodruff.dev/blog/bulkmerge-upsert-in-ef-core-how-to-insert-or-update-without-the-headache/</loc></url><url><loc>https://woodruff.dev/blog/bulksynchronize-in-ef-core-mirror-your-data-in-one-operation/</loc></url><url><loc>https://woodruff.dev/blog/c-socket-programming-essentials-creating-and-configuring-sockets/</loc></url><url><loc>https://woodruff.dev/blog/category/ai/</loc></url><url><loc>https://woodruff.dev/blog/category/biz-software/</loc></url><url><loc>https://woodruff.dev/blog/category/blog/</loc></url><url><loc>https://woodruff.dev/blog/category/developer-experience/</loc></url><url><loc>https://woodruff.dev/blog/category/efcore/</loc></url><url><loc>https://woodruff.dev/blog/category/fun-tech/</loc></url><url><loc>https://woodruff.dev/blog/category/genetic-algorithms/</loc></url><url><loc>https://woodruff.dev/blog/category/htmx/</loc></url><url><loc>https://woodruff.dev/blog/category/http-rest/</loc></url><url><loc>https://woodruff.dev/blog/category/network-book-sample/</loc></url><url><loc>https://woodruff.dev/blog/category/network-programming/</loc></url><url><loc>https://woodruff.dev/blog/category/patterns/</loc></url><url><loc>https://woodruff.dev/blog/category/random-csharp/</loc></url><url><loc>https://woodruff.dev/blog/category/rust/</loc></url><url><loc>https://woodruff.dev/blog/category/simplicity-first/</loc></url><url><loc>https://woodruff.dev/blog/category/speaking/</loc></url><url><loc>https://woodruff.dev/blog/category/terraform/</loc></url><url><loc>https://woodruff.dev/blog/closures-in-rust-functional-vibes-with-a-twist/</loc></url><url><loc>https://woodruff.dev/blog/compiled-models-the-fast-lane-for-ef-core-performance/</loc></url><url><loc>https://woodruff.dev/blog/compiling-success-my-aspirations-for-a-transformative-year-ahead/</loc></url><url><loc>https://woodruff.dev/blog/cracking-the-code-a-beginners-guide-to-network-protocols/</loc></url><url><loc>https://woodruff.dev/blog/cracking-the-code-decoding-query-plans-like-a-pro/</loc></url><url><loc>https://woodruff.dev/blog/crates-and-dependencies-nuget-meet-cargo/</loc></url><url><loc>https://woodruff.dev/blog/crud-made-easy-building-dynamic-apps-with-htmx-and-asp-net-razor-pages/</loc></url><url><loc>https://woodruff.dev/blog/custom-errors-from-display-to-thiserror/</loc></url><url><loc>https://woodruff.dev/blog/cut-cloud-costs-with-terraform-automate-optimize-and-save-money/</loc></url><url><loc>https://woodruff.dev/blog/day-1-the-survival-of-the-fittest-code-why-learn-genetic-algorithms-in-c/</loc></url><url><loc>https://woodruff.dev/blog/day-2-evolution-in-code-the-core-concepts/</loc></url><url><loc>https://woodruff.dev/blog/day-3-understanding-chromosomes-genes-and-dna-in-code/</loc></url><url><loc>https://woodruff.dev/blog/day-4-designing-your-first-chromosome-class-in-c/</loc></url><url><loc>https://woodruff.dev/blog/day-5-natural-selection-in-software-implementing-fitness-functions/</loc></url><url><loc>https://woodruff.dev/blog/day-6-roulette-tournaments-and-elites-exploring-selection-strategies/</loc></url><url><loc>https://woodruff.dev/blog/day-7-putting-it-together-simulating-your-first-ga-cycle-in-net/</loc></url><url><loc>https://woodruff.dev/blog/day-8-one-point-or-two-how-crossover-shapes-genetic-diversity/</loc></url><url><loc>https://woodruff.dev/blog/day-9-using-genetic-algorithms-uniform-crossover-in-c/</loc></url><url><loc>https://woodruff.dev/blog/day-10-mutation-matters-in-c-genetic-algorithms/</loc></url><url><loc>https://woodruff.dev/blog/day-11-implementing-a-c-mutation-operator-for-genetic-algorithms/</loc></url><url><loc>https://woodruff.dev/blog/day-12-genetic-algorithms-elitism-for-evolution-survival-of-the-fittest/</loc></url><url><loc>https://woodruff.dev/blog/day-13-configuring-the-genetic-algorithm-loop/</loc></url><url><loc>https://woodruff.dev/blog/day-14-evolving-text-solving-the-hello-world-puzzle-with-a-c-genetic-algorithm/</loc></url><url><loc>https://woodruff.dev/blog/day-15-fitness-by-design-how-to-shape-the-problem-to-match-evolution/</loc></url><url><loc>https://woodruff.dev/blog/day-16-solving-the-traveling-salesperson-problem-with-genetic-algorithms-permutation-chromosomes/</loc></url><url><loc>https://woodruff.dev/blog/day-17-greedy-isnt-always-bad-heuristics-in-genetic-algorithms/</loc></url><url><loc>https://woodruff.dev/blog/day-18-mapping-cities-visualizing-tsp-evolution-in-net/</loc></url><url><loc>https://woodruff.dev/blog/day-19-scheduling-with-dna-using-gas-for-class-and-work-timetables/</loc></url><url><loc>https://woodruff.dev/blog/day-20-constraint-handling-in-fitness-functions-penalizing-bad-solutions/</loc></url><url><loc>https://woodruff.dev/blog/day-21-genetic-algorithms-vs-brute-force-a-benchmark-comparison/</loc></url><url><loc>https://woodruff.dev/blog/day-22-multi-objective-optimization-when-one-fitness-function-isnt-enough/</loc></url><url><loc>https://woodruff.dev/blog/day-23-introduction-to-non-dominated-sorting-genetic-algorithm-ii-nsga-ii-in-c/</loc></url><url><loc>https://woodruff.dev/blog/day-24-combining-genetic-algorithms-with-hill-climbing-the-hybrid-memetic-approach/</loc></url><url><loc>https://woodruff.dev/blog/day-25-scaling-up-parallelizing-genetic-algorithms-loops-in-net-with-parallel-foreach/</loc></url><url><loc>https://woodruff.dev/blog/day-26-running-gas-in-the-cloud-with-azure-batch-or-functions/</loc></url><url><loc>https://woodruff.dev/blog/day-27-logging-and-monitoring-genetic-progress-over-generations/</loc></url><url><loc>https://woodruff.dev/blog/day-28-building-a-pluggable-genetic-algorithms-framework-in-c/</loc></url><url><loc>https://woodruff.dev/blog/day-29-defining-interfaces-for-genetic-algorithms-components-fitness-selection-and-operators/</loc></url><url><loc>https://woodruff.dev/blog/day-30-unit-testing-your-evolution-making-genetic-algorithms-testable-and-predictable/</loc></url><url><loc>https://woodruff.dev/blog/day-31-best-practices-for-tuning-genetic-algorithm-parameters/</loc></url><url><loc>https://woodruff.dev/blog/day-32-when-genetic-algorithms-go-wrong-debugging-poor-performance-and-premature-convergence/</loc></url><url><loc>https://woodruff.dev/blog/day-33-case-study-using-a-genetic-algorithms-to-optimize-hyperparameters-in-a-neural-network/</loc></url><url><loc>https://woodruff.dev/blog/day-34-genetic-algorithms-vs-other-optimization-techniques-a-developers-perspective/</loc></url><url><loc>https://woodruff.dev/blog/day-35-evolution-beyond-biology-using-genetic-algorithms-for-creative-art-and-design/</loc></url><url><loc>https://woodruff.dev/blog/dbcontext-pooling-the-secret-sauce-to-faster-ef-core-apps/</loc></url><url><loc>https://woodruff.dev/blog/debugging-entity-framework-core-8-real-world-query-anti-patterns-and-how-to-fix-them/</loc></url><url><loc>https://woodruff.dev/blog/debugging-htmx-in-asp-net-razor-pages-tips-tricks-and-tools/</loc></url><url><loc>https://woodruff.dev/blog/decoding-http-response-codes-what-your-browser-isnt-telling-you/</loc></url><url><loc>https://woodruff.dev/blog/decoding-ip-addressing-and-subnetting-the-backbone-of-networking/</loc></url><url><loc>https://woodruff.dev/blog/demystifying-network-programming-the-backbone-of-modern-applications/</loc></url><url><loc>https://woodruff.dev/blog/demystifying-socket-programming-a-gateway-to-networked-applications/</loc></url><url><loc>https://woodruff.dev/blog/destructuring-pattern-matchings-power-move/</loc></url><url><loc>https://woodruff.dev/blog/disaster-proof-your-cloud-automating-recovery-with-terraform/</loc></url><url><loc>https://woodruff.dev/blog/distributed-system-pattern-leader-and-followers-in-net-one-decision-maker-many-replicas-fewer-outages/</loc></url><url><loc>https://woodruff.dev/blog/dotnet-new-meet-cargo-new-a-tale-of-two-clis/</loc></url><url><loc>https://woodruff.dev/blog/ef-core-bulk-insert-the-complete-guide-to-inserting-thousands-of-rows-without-the-wait/</loc></url><url><loc>https://woodruff.dev/blog/enterprise-patterns-for-asp-net-core-front-controller-and-mvc-pattern/</loc></url><url><loc>https://woodruff.dev/blog/enterprise-patterns-for-asp-net-core-minimal-api-active-record-pattern/</loc></url><url><loc>https://woodruff.dev/blog/enterprise-patterns-for-asp-net-core-minimal-api-data-mapper-pattern/</loc></url><url><loc>https://woodruff.dev/blog/enterprise-patterns-for-asp-net-core-minimal-api-data-transfer-object-pattern/</loc></url><url><loc>https://woodruff.dev/blog/enterprise-patterns-for-asp-net-core-minimal-api-domain-model-pattern-when-your-core-rules-deserve-their-own-gravity/</loc></url><url><loc>https://woodruff.dev/blog/enterprise-patterns-for-asp-net-core-minimal-api-identity-map-pattern/</loc></url><url><loc>https://woodruff.dev/blog/enterprise-patterns-for-asp-net-core-minimal-api-lazy-load-pattern/</loc></url><url><loc>https://woodruff.dev/blog/enterprise-patterns-for-asp-net-core-minimal-api-repository-pattern/</loc></url><url><loc>https://woodruff.dev/blog/enterprise-patterns-for-asp-net-core-minimal-api-service-layer-pattern-making-http-a-client-not-the-boss/</loc></url><url><loc>https://woodruff.dev/blog/enterprise-patterns-for-asp-net-core-minimal-api-transaction-script-pattern-the-shortcut-that-quietly-reshapes-your-system/</loc></url><url><loc>https://woodruff.dev/blog/enterprise-patterns-for-asp-net-core-minimal-api-unit-of-work-pattern/</loc></url><url><loc>https://woodruff.dev/blog/enterprise-patterns-real-code-implementing-fowlers-ideas-in-c/</loc></url><url><loc>https://woodruff.dev/blog/enums-discriminated-unions-done-right/</loc></url><url><loc>https://woodruff.dev/blog/error-handling-and-graceful-shutdowns-in-socket-programming/</loc></url><url><loc>https://woodruff.dev/blog/error-propagation-with-so-simple-so-smart/</loc></url><url><loc>https://woodruff.dev/blog/evolve-your-c-code-with-ai-a-5-week-genetic-algorithms-bootcamp-for-developers/</loc></url><url><loc>https://woodruff.dev/blog/explicit-includes-the-art-of-fetching-just-enough-data-in-ef-core/</loc></url><url><loc>https://woodruff.dev/blog/exploring-programming-paradigms-c-and-rust-side-by-side/</loc></url><url><loc>https://woodruff.dev/blog/fencing-tokens-and-generation-clock-in-net-stop-zombie-leaders-from-writing/</loc></url><url><loc>https://woodruff.dev/blog/final-reflections-what-rust-taught-me-as-a-c-dev/</loc></url><url><loc>https://woodruff.dev/blog/from-c-to-rust-a-42-day-developer-challenge/</loc></url><url><loc>https://woodruff.dev/blog/from-c-to-rust-a-journey-through-code-and-concepts/</loc></url><url><loc>https://woodruff.dev/blog/from-chaos-to-code-migrating-legacy-infrastructure-to-terraform/</loc></url><url><loc>https://woodruff.dev/blog/fromsql-writing-sql-like-a-boss-in-ef-core/</loc></url><url><loc>https://woodruff.dev/blog/functions-in-rust-familiar-yet-different/</loc></url><url><loc>https://woodruff.dev/blog/generics-in-rust-vs-generics-in-c/</loc></url><url><loc>https://woodruff.dev/blog/global-query-filters-setting-the-rules-once-querying-like-a-pro/</loc></url><url><loc>https://woodruff.dev/blog/going-modular-using-htmx-with-partial-views-in-razor-pages/</loc></url><url><loc>https://woodruff.dev/blog/grouping-smarter-linq-groupby-enhancements-in-ef-core/</loc></url><url><loc>https://woodruff.dev/blog/handling-complexity-server-side-socket-programming-explained/</loc></url><url><loc>https://woodruff.dev/blog/hello-rust-hello-world-rust-vs-c-syntax/</loc></url><url><loc>https://woodruff.dev/blog/how-to-delete-and-update-millions-of-rows-in-ef-core-without-loading-a-single-entity/</loc></url><url><loc>https://woodruff.dev/blog/htmx-asp-net-razor-pages-your-first-dance-with-interactivity/</loc></url><url><loc>https://woodruff.dev/blog/htmx-for-asp-net-core-developers-the-simpler-faster-way-to-build-web-apps/</loc></url><url><loc>https://woodruff.dev/blog/htmx-vs-javascript-frameworks-choosing-the-right-tool-for-the-job/</loc></url><url><loc>https://woodruff.dev/blog/htmxrazor-1-2-0-toast-notifications-pagination-and-the-end-of-css-specificity-fights/</loc></url><url><loc>https://woodruff.dev/blog/htmxrazor-v1-3-0-data-table-accessibility-and-modern-css/</loc></url><url><loc>https://woodruff.dev/blog/htmxrazor-v1-4-0-sse-streaming-multi-step-wizard-and-optimistic-ui/</loc></url><url><loc>https://woodruff.dev/blog/htmxrazor-v2-0-0-platform-and-dx/</loc></url><url><loc>https://woodruff.dev/blog/http-demystified-the-secret-sauce-of-the-web/</loc></url><url><loc>https://woodruff.dev/blog/http-methods-the-verbs-that-make-the-web-go-round/</loc></url><url><loc>https://woodruff.dev/blog/i-am-self-publishing-the-network-programming-book/</loc></url><url><loc>https://woodruff.dev/blog/i-asked-chatgpt-how-to-overcome-imposter-syndrome/</loc></url><url><loc>https://woodruff.dev/blog/interactive-forms-made-easy-htmx-meets-asp-net-razor-pages/</loc></url><url><loc>https://woodruff.dev/blog/iterators-and-functional-combinators/</loc></url><url><loc>https://woodruff.dev/blog/json-columns-in-sql-server-storing-querying-json-with-ef-core/</loc></url><url><loc>https://woodruff.dev/blog/keeping-your-htmx-apps-safe-security-best-practices-for-asp-net-developers/</loc></url><url><loc>https://woodruff.dev/blog/keyless-entity-types-in-ef-core-query-data-without-primary-keys/</loc></url><url><loc>https://woodruff.dev/blog/kill-the-bloat-the-controversial-clash-between-spas-server-side-rendering-and-the-power-of-simplicity/</loc></url><url><loc>https://woodruff.dev/blog/leader-election-in-net-picking-one-boss-without-creating-two/</loc></url><url><loc>https://woodruff.dev/blog/lease-pattern-in-net-a-lock-with-an-expiration-date-that-saves-your-data/</loc></url><url><loc>https://woodruff.dev/blog/level-up-your-razor-pages-meet-htmx-your-new-best-friend/</loc></url><url><loc>https://woodruff.dev/blog/level-up-your-skills-learning-rust-as-a-c-dev/</loc></url><url><loc>https://woodruff.dev/blog/licensing-compliance-in-the-courtroom-why-it-matters-more-than-you-think/</loc></url><url><loc>https://woodruff.dev/blog/lifetimes-surviving-the-first-encounter/</loc></url><url><loc>https://woodruff.dev/blog/lock-it-down-security-ideas-for-terraform-deployments/</loc></url><url><loc>https://woodruff.dev/blog/logging-in-rust-tracing-without-console-writeline/</loc></url><url><loc>https://woodruff.dev/blog/looking-at-writing-book-blurbs-and-how-that-can-help-conference-speakers/</loc></url><url><loc>https://woodruff.dev/blog/make-your-github-profile-update-itself-wordpress-posts-github-releases-linkedin-newsletters/</loc></url><url><loc>https://woodruff.dev/blog/managing-client-sessions-tracking-and-personalizing-connections/</loc></url><url><loc>https://woodruff.dev/blog/many-to-many-made-easy-mastering-relationships-in-ef-core/</loc></url><url><loc>https://woodruff.dev/blog/mapping-the-world-with-ef-core-working-with-spatial-data/</loc></url><url><loc>https://woodruff.dev/blog/mastering-htmx-attributes-your-toolkit-for-razor-pages-awesomeness/</loc></url><url><loc>https://woodruff.dev/blog/mastering-multi-cloud-deploying-across-aws-azure-and-gcp-with-terraform/</loc></url><url><loc>https://woodruff.dev/blog/match-switch-on-steroids/</loc></url><url><loc>https://woodruff.dev/blog/mechanical-minds-and-human-folly-why-fearin-ai-is-more-foolish-than-fruitful/</loc></url><url><loc>https://woodruff.dev/blog/memory-wars-garbage-collection-in-c-vs-ownership-in-rust/</loc></url><url><loc>https://woodruff.dev/blog/move-semantics-in-rust-what-just-happened-to-my-variable/</loc></url><url><loc>https://woodruff.dev/blog/new-release-htmxrazor-v2-1-0-advanced-inputs/</loc></url><url><loc>https://woodruff.dev/blog/new-year-and-the-art-of-the-restart/</loc></url><url><loc>https://woodruff.dev/blog/no-tracking-queries-speed-up-your-ef-core-like-a-pro/</loc></url><url><loc>https://woodruff.dev/blog/optiont-where-null-is-not-an-option/</loc></url><url><loc>https://woodruff.dev/blog/organizing-code-rust-modules-vs-c-namespaces/</loc></url><url><loc>https://woodruff.dev/blog/ownership-in-rust-the-most-c-ish-thing-ive-loved-and-i-mean-that-in-a-good-way/</loc></url><url><loc>https://woodruff.dev/blog/packaging-and-releasing-a-rust-cli-tool/</loc></url><url><loc>https://woodruff.dev/blog/page/2/</loc></url><url><loc>https://woodruff.dev/blog/page/3/</loc></url><url><loc>https://woodruff.dev/blog/page/4/</loc></url><url><loc>https://woodruff.dev/blog/page/5/</loc></url><url><loc>https://woodruff.dev/blog/page/6/</loc></url><url><loc>https://woodruff.dev/blog/page/7/</loc></url><url><loc>https://woodruff.dev/blog/page/8/</loc></url><url><loc>https://woodruff.dev/blog/page/9/</loc></url><url><loc>https://woodruff.dev/blog/page/10/</loc></url><url><loc>https://woodruff.dev/blog/page/11/</loc></url><url><loc>https://woodruff.dev/blog/page/12/</loc></url><url><loc>https://woodruff.dev/blog/page/13/</loc></url><url><loc>https://woodruff.dev/blog/page/14/</loc></url><url><loc>https://woodruff.dev/blog/page/15/</loc></url><url><loc>https://woodruff.dev/blog/page/16/</loc></url><url><loc>https://woodruff.dev/blog/page/17/</loc></url><url><loc>https://woodruff.dev/blog/page/18/</loc></url><url><loc>https://woodruff.dev/blog/page/19/</loc></url><url><loc>https://woodruff.dev/blog/page/20/</loc></url><url><loc>https://woodruff.dev/blog/pagination-in-ef-core-continued-sortable-grids-htmx-and-the-indexing-cost/</loc></url><url><loc>https://woodruff.dev/blog/pagination-in-entity-framework-core-why-skip-take-falls-apart-on-hot-tables/</loc></url><url><loc>https://woodruff.dev/blog/panic-vs-exceptions-stop-the-world-or-handle-it/</loc></url><url><loc>https://woodruff.dev/blog/parsing-arguments-and-writing-logic/</loc></url><url><loc>https://woodruff.dev/blog/patterns-of-distributed-systems-in-c-and-net-a-new-series-for-people-who-ship-real-systems/</loc></url><url><loc>https://woodruff.dev/blog/performance-check-does-rust-really-fly/</loc></url><url><loc>https://woodruff.dev/blog/practical-network-programming-csharp/</loc></url><url><loc>https://woodruff.dev/blog/query-projection-stop-hauling-more-data-than-you-need/</loc></url><url><loc>https://woodruff.dev/blog/query-tags-debugging-ef-core-like-a-detective/</loc></url><url><loc>https://woodruff.dev/blog/real-time-communication-effective-data-exchange-with-sockets/</loc></url><url><loc>https://woodruff.dev/blog/real-time-magic-live-updates-with-htmx-and-asp-net-razor-pages/</loc></url><url><loc>https://woodruff.dev/blog/reflections-on-week-1-rusts-minimalism-hits-different/</loc></url><url><loc>https://woodruff.dev/blog/resharper-made-vs-code-a-real-option-for-my-net-work/</loc></url><url><loc>https://woodruff.dev/blog/rest-constraint-1-the-power-of-a-uniform-interface/</loc></url><url><loc>https://woodruff.dev/blog/rest-constraint-2-why-client-server-separation-is-a-game-changer/</loc></url><url><loc>https://woodruff.dev/blog/rest-constraint-3-going-stateless-for-scalability/</loc></url><url><loc>https://woodruff.dev/blog/rest-constraint-4-cacheable-for-better-performance/</loc></url><url><loc>https://woodruff.dev/blog/rest-constraint-5-embracing-layers-for-flexibility-and-scale/</loc></url><url><loc>https://woodruff.dev/blog/rest-constraint-6-code-on-demand-when-why-and-how-to-use-it/</loc></url><url><loc>https://woodruff.dev/blog/rest-explained-why-the-web-runs-on-this-simple-idea/</loc></url><url><loc>https://woodruff.dev/blog/rest-from-dissertation-to-dominating-the-web/</loc></url><url><loc>https://woodruff.dev/blog/restful-api-design-why-simplicity-wins/</loc></url><url><loc>https://woodruff.dev/blog/result-a-better-way-to-fail/</loc></url><url><loc>https://woodruff.dev/blog/routing-and-topologies-navigating-the-digital-highways/</loc></url><url><loc>https://woodruff.dev/blog/rust-for-the-sharp-mind-6-weeks-of-learning-rust-as-a-c-developer/</loc></url><url><loc>https://woodruff.dev/blog/rust-scalar-and-compound-types-where-are-my-c-classes/</loc></url><url><loc>https://woodruff.dev/blog/rust-structs-vs-c-classes-less-is-more/</loc></url><url><loc>https://woodruff.dev/blog/rusts-superpower-speed-meets-smarts/</loc></url><url><loc>https://woodruff.dev/blog/scaling-ef-core-for-data-imports/</loc></url><url><loc>https://woodruff.dev/blog/secure-application-development-starts-with-architecture/</loc></url><url><loc>https://woodruff.dev/blog/shadowing-in-rust-redeclaring-with-style/</loc></url><url><loc>https://woodruff.dev/blog/slices-and-strings-goodbye-c-stringbuilder/</loc></url><url><loc>https://woodruff.dev/blog/socket-types-choosing-the-right-tool-for-the-job/</loc></url><url><loc>https://woodruff.dev/blog/software-quality-assessment-as-an-ongoing-practice-not-a-one-time-event/</loc></url><url><loc>https://woodruff.dev/blog/speaking-terraform-a-crash-course-in-hcl/</loc></url><url><loc>https://woodruff.dev/blog/split-queries-stop-the-data-traffic-jam-in-ef-core/</loc></url><url><loc>https://woodruff.dev/blog/stop-building-spas-for-every-screen-htmx-asp-net-core-razor-pages-workshop-open/</loc></url><url><loc>https://woodruff.dev/blog/stop-letting-your-controllers-talk-to-sql-layered-architecture-in-asp-net-core/</loc></url><url><loc>https://woodruff.dev/blog/stop-wrestling-with-javascript-htmxrazor-gives-asp-net-core-the-component-library-it-deserves/</loc></url><url><loc>https://woodruff.dev/blog/swapping-and-targeting-like-a-pro-htmx-magic-for-razor-pages/</loc></url><url><loc>https://woodruff.dev/blog/syntax-showdown-a-look-at-common-constructs-in-c-and-rust/</loc></url><url><loc>https://woodruff.dev/blog/system-modernization-without-the-burnout-lessons-from-distributed-systems/</loc></url><url><loc>https://woodruff.dev/blog/systems-thinking-meets-simplicity-first-a-decision-framework-for-software-architects/</loc></url><url><loc>https://woodruff.dev/blog/tag/2023/</loc></url><url><loc>https://woodruff.dev/blog/tag/ai/</loc></url><url><loc>https://woodruff.dev/blog/tag/architectur/</loc></url><url><loc>https://woodruff.dev/blog/tag/architecture/</loc></url><url><loc>https://woodruff.dev/blog/tag/asp-net-core/</loc></url><url><loc>https://woodruff.dev/blog/tag/asp-net/</loc></url><url><loc>https://woodruff.dev/blog/tag/azure/</loc></url><url><loc>https://woodruff.dev/blog/tag/better-me/</loc></url><url><loc>https://woodruff.dev/blog/tag/book/</loc></url><url><loc>https://woodruff.dev/blog/tag/books/</loc></url><url><loc>https://woodruff.dev/blog/tag/business-of-software/</loc></url><url><loc>https://woodruff.dev/blog/tag/c/</loc></url><url><loc>https://woodruff.dev/blog/tag/creating-talks/</loc></url><url><loc>https://woodruff.dev/blog/tag/data/</loc></url><url><loc>https://woodruff.dev/blog/tag/databases/</loc></url><url><loc>https://woodruff.dev/blog/tag/design/</loc></url><url><loc>https://woodruff.dev/blog/tag/developers/</loc></url><url><loc>https://woodruff.dev/blog/tag/development/</loc></url><url><loc>https://woodruff.dev/blog/tag/devops/</loc></url><url><loc>https://woodruff.dev/blog/tag/distributed/</loc></url><url><loc>https://woodruff.dev/blog/tag/dotnet/</loc></url><url><loc>https://woodruff.dev/blog/tag/ef-core/</loc></url><url><loc>https://woodruff.dev/blog/tag/entity-framework-core/</loc></url><url><loc>https://woodruff.dev/blog/tag/genetic-algorithms/</loc></url><url><loc>https://woodruff.dev/blog/tag/github/</loc></url><url><loc>https://woodruff.dev/blog/tag/goals/</loc></url><url><loc>https://woodruff.dev/blog/tag/htmx/</loc></url><url><loc>https://woodruff.dev/blog/tag/htmxrazor/</loc></url><url><loc>https://woodruff.dev/blog/tag/http/</loc></url><url><loc>https://woodruff.dev/blog/tag/iac/</loc></url><url><loc>https://woodruff.dev/blog/tag/ides/</loc></url><url><loc>https://woodruff.dev/blog/tag/imposter-syndrome/</loc></url><url><loc>https://woodruff.dev/blog/tag/infrastructure/</loc></url><url><loc>https://woodruff.dev/blog/tag/law/</loc></url><url><loc>https://woodruff.dev/blog/tag/learning/</loc></url><url><loc>https://woodruff.dev/blog/tag/licensing/</loc></url><url><loc>https://woodruff.dev/blog/tag/mssql/</loc></url><url><loc>https://woodruff.dev/blog/tag/net/</loc></url><url><loc>https://woodruff.dev/blog/tag/network/</loc></url><url><loc>https://woodruff.dev/blog/tag/new-year/</loc></url><url><loc>https://woodruff.dev/blog/tag/open-source/</loc></url><url><loc>https://woodruff.dev/blog/tag/patterns/</loc></url><url><loc>https://woodruff.dev/blog/tag/personal-journey/</loc></url><url><loc>https://woodruff.dev/blog/tag/personal/</loc></url><url><loc>https://woodruff.dev/blog/tag/programming/</loc></url><url><loc>https://woodruff.dev/blog/tag/python/</loc></url><url><loc>https://woodruff.dev/blog/tag/reading/</loc></url><url><loc>https://woodruff.dev/blog/tag/rest/</loc></url><url><loc>https://woodruff.dev/blog/tag/rust/</loc></url><url><loc>https://woodruff.dev/blog/tag/scripting/</loc></url><url><loc>https://woodruff.dev/blog/tag/simplicity-first/</loc></url><url><loc>https://woodruff.dev/blog/tag/software-philosophy/</loc></url><url><loc>https://woodruff.dev/blog/tag/spatial/</loc></url><url><loc>https://woodruff.dev/blog/tag/speaking/</loc></url><url><loc>https://woodruff.dev/blog/tag/systems-thinking/</loc></url><url><loc>https://woodruff.dev/blog/tag/talk-abstracts/</loc></url><url><loc>https://woodruff.dev/blog/tag/terraform/</loc></url><url><loc>https://woodruff.dev/blog/tag/ux/</loc></url><url><loc>https://woodruff.dev/blog/tag/web-development/</loc></url><url><loc>https://woodruff.dev/blog/tag/webdev/</loc></url><url><loc>https://woodruff.dev/blog/tag/wed-components/</loc></url><url><loc>https://woodruff.dev/blog/tapping-into-database-views-with-ef-core-reverse-engineering-made-easy/</loc></url><url><loc>https://woodruff.dev/blog/temporal-tables-in-ef-core-bringing-time-travel-to-your-data/</loc></url><url><loc>https://woodruff.dev/blog/terraform-101-your-first-steps-into-infrastructure-as-code/</loc></url><url><loc>https://woodruff.dev/blog/terraform-azure-devops-automate-your-cloud-deployments-the-smart-way/</loc></url><url><loc>https://woodruff.dev/blog/terraform-evolution-growing-your-infrastructure-without-the-chaos/</loc></url><url><loc>https://woodruff.dev/blog/terraform-good-practices-avoiding-chaos-and-building-with-confidence/</loc></url><url><loc>https://woodruff.dev/blog/terraform-in-action-real-world-success-stories-from-the-cloud/</loc></url><url><loc>https://woodruff.dev/blog/terraform-in-the-wild-real-world-use-cases-that-make-cloud-magic-happen/</loc></url><url><loc>https://woodruff.dev/blog/terraform-modules-stop-copy-pasting-and-start-reusing-like-a-pro/</loc></url><url><loc>https://woodruff.dev/blog/terraform-monitoring-keeping-an-eye-on-your-infrastructure-24-7/</loc></url><url><loc>https://woodruff.dev/blog/terraform-on-autopilot-building-dynamic-self-scaling-infrastructure/</loc></url><url><loc>https://woodruff.dev/blog/terraform-power-moves-unlocking-advanced-features-for-smarter-infrastructure/</loc></url><url><loc>https://woodruff.dev/blog/terraform-power-ups-the-best-tools-to-supercharge-your-iac-workflow/</loc></url><url><loc>https://woodruff.dev/blog/terraform-testing-catching-bugs-before-they-break-your-cloud/</loc></url><url><loc>https://woodruff.dev/blog/terraform-troubleshooting-fixing-fails-errors-and-cloud-chaos/</loc></url><url><loc>https://woodruff.dev/blog/terraform-variables-outputs-the-secret-sauce-of-reusable-infrastructure/</loc></url><url><loc>https://woodruff.dev/blog/terraform-workflow-plan-it-build-it-rule-the-cloud/</loc></url><url><loc>https://woodruff.dev/blog/the-backbone-of-digital-communication-understanding-the-client-server-model/</loc></url><url><loc>https://woodruff.dev/blog/the-borrow-checker-rusts-tough-love-mentor/</loc></url><url><loc>https://woodruff.dev/blog/the-future-of-server-driven-web-apps-why-htmx-and-asp-net-are-just-getting-started/</loc></url><url><loc>https://woodruff.dev/blog/the-hidden-roi-of-technical-due-diligence-in-software-investments/</loc></url><url><loc>https://woodruff.dev/blog/the-journey-of-self-discovery-exploring-your-true-self-at-50-as-a-late-bloomer/</loc></url><url><loc>https://woodruff.dev/blog/the-n1-query-problem-in-ef-core/</loc></url><url><loc>https://woodruff.dev/blog/the-rest-formula-six-principles-that-keep-the-web-running-smoothly/</loc></url><url><loc>https://woodruff.dev/blog/the-state-of-terraform-keeping-your-cloud-empire-in-check/</loc></url><url><loc>https://woodruff.dev/blog/the-strategic-case-for-use-what-works-why-smart-tech-leaders-stop-reinventing-the-wheel/</loc></url><url><loc>https://woodruff.dev/blog/think-beyond-synchronous-the-ultimate-guide-to-tasks-in-c/</loc></url><url><loc>https://woodruff.dev/blog/threads-tasks-and-ownership-c-and-rust-concurrency-explored/</loc></url><url><loc>https://woodruff.dev/blog/tracking-every-change-using-savechanges-interception-for-ef-core-auditing/</loc></url><url><loc>https://woodruff.dev/blog/trait-objects-goodbye-virtual-hello-dyn/</loc></url><url><loc>https://woodruff.dev/blog/traits-in-rust-interfaces-that-do-more/</loc></url><url><loc>https://woodruff.dev/blog/transactional-savepoints-in-ef-core-rollback-just-what-you-need/</loc></url><url><loc>https://woodruff.dev/blog/unlocking-ef-core-performance-how-to-track-queries-with-event-counters/</loc></url><url><loc>https://woodruff.dev/blog/variables-in-rust-let-me-be-immutable/</loc></url><url><loc>https://woodruff.dev/blog/week-2-reflections-on-ownership-week-my-brain-hurts-in-a-good-way/</loc></url><url><loc>https://woodruff.dev/blog/week-3-wrap-up-data-modeling-that-fights-back/</loc></url><url><loc>https://woodruff.dev/blog/week-4-reflecting-on-errors-and-structure/</loc></url><url><loc>https://woodruff.dev/blog/week-5-reflecting-on-traits-lifetimes-power-and-pain/</loc></url><url><loc>https://woodruff.dev/blog/why-every-c-developer-should-explore-rust/</loc></url><url><loc>https://woodruff.dev/blog/why-fractional-architecture-is-the-future-of-technology-strategy/</loc></url><url><loc>https://woodruff.dev/blog/why-rust-a-c-developers-journey-begins/</loc></url><url><loc>https://woodruff.dev/blog/working-with-files-and-the-filesystem-in-rust/</loc></url><url><loc>https://woodruff.dev/blog/writing-tests-in-rust-familiar-and-fast/</loc></url><url><loc>https://woodruff.dev/contact/</loc></url><url><loc>https://woodruff.dev/feed/</loc></url><url><loc>https://woodruff.dev/portfolio/</loc></url><url><loc>https://woodruff.dev/portfolio/aspnet-core-reimagined-with-htmx/</loc></url><url><loc>https://woodruff.dev/portfolio/beyond-boundaries/</loc></url><url><loc>https://woodruff.dev/portfolio/developer-relations-activity-patterns/</loc></url><url><loc>https://woodruff.dev/portfolio/entity-framework-core-course/</loc></url><url><loc>https://woodruff.dev/portfolio/htmx-razor-pages-workshop/</loc></url><url><loc>https://woodruff.dev/portfolio/terraform-workshop/</loc></url><url><loc>https://woodruff.dev/press-media/</loc></url><url><loc>https://woodruff.dev/services/</loc></url><url><loc>https://woodruff.dev/services/advisory/</loc></url><url><loc>https://woodruff.dev/services/agentic-developer-relations/</loc></url><url><loc>https://woodruff.dev/services/expert-witness/</loc></url><url><loc>https://woodruff.dev/services/fractional-architect/</loc></url><url><loc>https://woodruff.dev/services/micro-consulting/</loc></url><url><loc>https://woodruff.dev/services/project-based/</loc></url><url><loc>https://woodruff.dev/training/</loc></url></urlset>