<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
  <url><loc>https://plainfinch.com/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/og/plainfinch.png</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/about/</loc><lastmod>2026-10-23</lastmod></url>
  <url><loc>https://plainfinch.com/privacy/</loc><lastmod>2026-10-23</lastmod></url>
  <url><loc>https://plainfinch.com/terms/</loc><lastmod>2026-10-23</lastmod></url>
  <url><loc>https://plainfinch.com/accessibility/</loc><lastmod>2026-10-23</lastmod></url>
  <url><loc>https://plainfinch.com/contact/</loc><lastmod>2026-10-23</lastmod></url>
  <url><loc>https://plainfinch.com/sitemap/</loc><lastmod>2026-10-23</lastmod></url>
  <url><loc>https://plainfinch.com/playground/</loc><lastmod>2026-10-23</lastmod></url>
  <url><loc>https://plainfinch.com/explain-my-code/</loc><lastmod>2026-10-23</lastmod></url>
  <url><loc>https://plainfinch.com/html/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/og/html.png</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/elements/</loc><lastmod>2026-10-23</lastmod></url>
  <url><loc>https://plainfinch.com/html/how-html-works/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-how-html-works-html-text-dom-tree-rendered-page.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/document-structure/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-document-structure-doctype-html-head-body-skeleton.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/elements-attributes/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-elements-attributes-tag-element-attribute-anatomy.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/comments-whitespace/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-comments-whitespace-html-comment-whitespace-collapse.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/file-paths/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-file-paths-relative-path-folder-tree.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/metadata/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-metadata-html-head-meta-title-where-shown.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/headings/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-headings-heading-levels-outline-h1-h2-h3.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/text-formatting/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-text-formatting-strong-em-b-i-meaning-grid.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/code/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-code-kbd-samp-var-input-output.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/quotes/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-quotes-blockquote-figure-figcaption-attribution.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/lists/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-lists-ul-vs-ol-ordered-unordered-list.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/entities/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-entities-character-references-escaping-ampersand.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/links/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-links-anchor-href-link-anatomy.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/images/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-images-img-src-alt-width-height.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/responsive-images/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-responsive-images-srcset-sizes-w-descriptor-choice.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/figures/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-figures-figure-figcaption-vs-alt-text.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/audio-video/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-audio-video-video-source-order-fallback.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/iframes-svg/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-iframes-svg-iframe-nested-browsing-context.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/menu-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-menu-project-cafe-menu-page-structure.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/semantic-html/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-semantic-html-page-landmarks-header-nav-main-footer.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/navigation/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-navigation-nav-landmark-list-aria-current.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/div-span/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-div-span-div-inside-p-element-tree.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/global-attributes/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-global-attributes-id-class-lang-hidden-data.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/tables/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-tables-table-thead-tbody-th-scope.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/details-dialog/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-details-dialog-details-summary-open-closed.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/forms/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-forms-form-submit-label-for-name-value.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/input-types/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-input-types-email-tel-number-date-inputs.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/select-checkbox-radio/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-select-checkbox-radio-select-option-radio-value-sent.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/form-validation/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-form-validation-required-email-check-before-submit.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/autocomplete/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-autocomplete-autocomplete-tokens-password-autofill.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/button-vs-link/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-button-vs-link-link-or-button-decision.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/signup-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-signup-project-form-fields-to-request-payload.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/accessibility/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-accessibility-accessibility-tree-button-vs-div.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/keyboard/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-keyboard-tab-order-follows-source.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/seo/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-seo-title-description-search-snippet.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/structured-data/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-structured-data-json-ld-recipe-rich-result.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/debugging/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-debugging-unclosed-tag-dom-tree.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/css-and-js/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-css-and-js-script-defer-async-timeline.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/page-speed/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-page-speed-image-width-height-layout-shift.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/html/profile-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/html-profile-project-profile-page-landmarks-wireframe.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/og/css.png</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/properties/</loc><lastmod>2026-10-23</lastmod></url>
  <url><loc>https://plainfinch.com/css/how-css-works/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-how-css-works-anatomy-css-rule-selector-p-declaration.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/selectors/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-selectors-small-dom-tree-article-h2-paragraphs.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/cascade/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-cascade-cascade-checks-origin-importance-specificity-source.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/inheritance/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-inheritance-inheritance-tree-color-font-set-body.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/units/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-units-nested-elements-set-1-25em-grow.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/colors/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-colors-hex-rgb-hsl-oklch-colour-formats.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/variables/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-variables-element-tree-showing-accent-set-root.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/box-model/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-box-model-box-model-layers-card-width-300px.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/sizing/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-sizing-max-width-100-responsive-image-overflow.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/spacing/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-spacing-margin-shorthand-values-go-clockwise-top.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/borders/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-borders-rows-boxes-adding-10px-border-middle.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/backgrounds/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-backgrounds-background-layers-stacked-top-bottom-text.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/shadows/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-shadows-box-shadow-shifted-20px-right-30px.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/overflow/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-overflow-boxes-same-size-too-much-content.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/fonts/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-fonts-font-stack-checked-left-right-inter.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/web-fonts/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-web-fonts-timeline-font-load-font-display-block.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/text/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-text-line-length-max-width-65ch.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/links-lists/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-links-lists-lvha-link-states-order.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/product-card-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-product-card-project-product-card-split-parts-card-box.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/display/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-display-columns-comparing-block-inline-inline-block.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/position/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-position-absolute-badge-looks-up-through-ancestors.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/z-index/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-z-index-stacking-contexts-side-side-header-z.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/flexbox/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-flexbox-flex-container-items-row-main-axis.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/flex-alignment/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-flex-alignment-row-flex-container-justify-content-moves.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/grid/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-grid-column-row-grid-column-lines-numbered.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/grid-layouts/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-grid-layouts-grid-template-rows-written-strings-head.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/media-queries/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-media-queries-mobile-first-breakpoints-width-ruler-base.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/container-queries/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-container-queries-viewport-containing-240px-sidebar-460px-main.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/fluid-sizing/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-fluid-sizing-graph-clamp-1-5rem-1rem-3vw.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/images/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-images-tall-photo-placed-wide-box-ways.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/landing-page-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-landing-page-project-same-landing-page-widths-phone-everything.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/transitions/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-transitions-easing-curves-progress-against-time-linear.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/animations/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-animations-keyframes-timeline-0-percent-100-percent.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/transforms/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-transforms-copies-box-rotated-20-degrees-left.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/filters/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-filters-panels-opacity-0-5-parent-parent.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/states/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-states-list-item-containing-checked-checkbox-selector.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/pseudo-elements/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-pseudo-elements-blockquote-element-box-containing-parts-row.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/nesting-layers/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-nesting-layers-five-stacked-layers-lowest-highest-priority.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/debugging/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-debugging-five-step-debugging-flow-left-right.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/css/profile-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/css-profile-project-finished-profile-page-structure-header-name.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/og/js.png</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/reference/</loc><lastmod>2026-10-23</lastmod></url>
  <url><loc>https://plainfinch.com/js/how-javascript-works/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-how-javascript-works-browser-reads-html-top-bottom-builds.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/console/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-console-console-log-warn-error-table.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/variables/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-variables-labelled-boxes-shopname-made-const-holds.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/types/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-types-seven-javascript-types-example-typeof-result.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/operators/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-operators-operands-operator-result-examples.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/strings/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-strings-word-sourdough-nine-boxes-numbered-0.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/conditions/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-conditions-if-else-if-chain-flowchart.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/loops/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-loops-loop-has-parts-brackets-start-runs.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/functions/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-functions-function-drawn-machine-arguments-hours-3.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/scope/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-scope-nested-boxes-global-scope-holds-loaves.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/errors/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-errors-error-line-split-labelled-parts-type.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/arrays/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-arrays-array-four-jobs-row-boxes-above.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/array-methods/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-array-methods-pipeline-array-breads-goes-filter-keeps.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/objects/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-objects-top-variables-rye-special-both-point.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/sets-maps/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-sets-maps-set-remove-duplicates-array.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/json/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-json-javascript-object-left-json-text-right.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/regex/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-regex-regex-anchors-character-class-validation.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/numbers-dates/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-numbers-dates-twelve-boxes-months-january-december-getmonth.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/dom/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-dom-dom-tree-bird-club-page-document.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/changing-content/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-changing-content-same-string-sent-ways-textcontent-page.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/classes-styles/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-classes-styles-states-menu-closed-class-list-menu.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/creating-elements/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-creating-elements-steps-createelement-makes-detached-li-textcontent.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/events/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-events-click-button-travels-down-document-through.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/forms/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-forms-form-submit-event-preventdefault-flow.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/event-delegation/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-event-delegation-list-click-listener-items-have-delete.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/quiz-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-quiz-project-quiz-app-state-render-events.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/timers/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-timers-event-loop-your-code-runs-main.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/promises/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-promises-promise-starts-pending-settles-once-either.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/async-await/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-async-await-timeline-comparing-sequential-parallel-awaits-awaiting.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/fetch/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-fetch-path-fetch-fetch-sends-request-server.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/modules/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-modules-files-bakery-js-exports-menu-formatprice.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/classes/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-classes-class-called-order-acts-blueprint-constructor.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/storage/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-storage-first-visit-page-calls-setitem-theme.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/state/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-state-loop-state-array-items-single-source.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/todo-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-todo-project-todo-app-array-save-render.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/debugging/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-debugging-debugging-loop-reproduce-bug-read-error.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/accessible-js/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-accessible-js-focus-moves-open-button-dialog-when.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/safe-html/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-safe-html-innerhtml-vs-textcontent-xss.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/reading-ai-code/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-reading-ai-code-reading-map-unfamiliar-code-start-page.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/js/profile-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/js-profile-project-finished-profile-page-has-four-interactive.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/og/sql.png</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/reference/</loc><lastmod>2026-10-23</lastmod></url>
  <url><loc>https://plainfinch.com/sql/how-databases-work/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-how-databases-work-table-rows-columns-products.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/select/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-select-distinct-place-species-pairs.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/where/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-where-filter-rows-booked-date.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/order-limit/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-order-limit-order-by-desc-limit-top-three.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/calculations/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-calculations-calculated-column-profit-round.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/and-or-not/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-and-or-not-and-or-brackets-precedence.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/in-between/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-in-between-in-list-between-date-range.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/like/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-like-like-wildcard-pattern-match-rows.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/null/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-null-null-is-null-coalesce-missing-values.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/text-dates/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-text-dates-strftime-julianday-upper-date-functions.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/aggregates/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-aggregates-count-sum-avg-one-summary-row.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/group-by/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-group-by-group-by-rows-into-groups-count.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/having/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-having-where-group-by-having-filter-groups.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/sales-report-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-sales-report-project-sales-report-where-group-by-having-order.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/keys/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-keys-primary-foreign-key-one-to-many.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/inner-join/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-inner-join-join-on-matching-key-columns.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/left-join/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-left-join-unmatched-rows-null-padding.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/multi-joins/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-multi-joins-join-three-tables-linking-table.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/leaderboard-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-leaderboard-project-left-join-count-distinct-board.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/insert/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-insert-values-defaults-auto-id.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/update-delete/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-update-delete-where-before-after-rows.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/transactions/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-transactions-begin-commit-rollback-timeline.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/create-table/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-create-table-column-types-integer-primary-key.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/constraints/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-constraints-check-not-null-rejected-row.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/design/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-design-split-table-normalisation-foreign-keys.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/indexes/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-indexes-index-sorted-lookup-scan-search.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/subqueries/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-subqueries-subquery-not-in-inner-outer.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/cte/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-cte-with-cte-named-steps.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/case/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-case-case-when-price-bands-null.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/window-functions/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-window-functions-running-total-partition-by-over.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/views/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-views-create-view-saved-query.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/sql-injection/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-sql-injection-parameterised-query-placeholder.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/debugging/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-debugging-sql-clause-execution-order.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/reading-ai-sql/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-reading-ai-sql-ai-query-review-checklist-left-join.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/sql/database-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/sql-database-project-library-schema-foreign-keys-left-join.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/og/git.png</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/reference/</loc><lastmod>2026-10-23</lastmod></url>
  <url><loc>https://plainfinch.com/git/what-is-git/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-what-is-git-working-folder-staging-area-commit.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/first-repo/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-first-repo-git-init-first-commit-root.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/add-commit/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-add-commit-stage-one-file-separate-commits.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/commit-messages/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-commit-messages-good-vs-vague-commit-messages-log.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/log-diff/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-log-diff-git-diff-staged-head-compare.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/restore/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-restore-git-restore-staged-discard-unstage.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/amend-revert/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-amend-revert-amend-vs-revert-commit-graph.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/reset/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-reset-reset-soft-mixed-hard-compared.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/gitignore/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-gitignore-gitignore-patterns-matched-files.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/track-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-track-project-first-commits-ignore-private-files.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/branches/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-branches-branch-labels-head-split.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/merging/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-merging-fast-forward-vs-merge-commit.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/conflicts/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-conflicts-conflict-markers-ours-theirs-resolved.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/conflict-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-conflict-project-merge-two-branches-combine-conflict.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/remotes/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-remotes-local-repository-github-origin-main.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/push-pull/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-push-pull-git-push-fetch-pull-directions.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/pull-requests/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-pull-requests-pull-request-branch-review-merge.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/secrets/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-secrets-env-gitignore-env-example-rotate-key.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/ai-git-commands/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-ai-git-commands-risky-git-commands-safer-alternatives.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/git-says-no/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-git-says-no-git-error-calm-routine-rejected-push.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/github-pages/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-github-pages-github-pages-push-build-live-site.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/deploy-from-git/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-deploy-from-git-cpanel-yml-git-deploy-flow.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/domains-updates/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-domains-updates-dns-a-cname-records-custom-domain-https.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/git/publish-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/git-publish-project-branch-test-merge-push-revert.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/og/ai.png</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/checklist/</loc><lastmod>2026-10-23</lastmod></url>
  <url><loc>https://plainfinch.com/ai/how-ai-works/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-how-ai-works-next-piece-prediction-invented-property.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/when-to-use-ai/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-when-to-use-ai-ask-or-type-it-yourself-decision.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/chat-context/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-chat-context-chat-follow-up-sends-history.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/clear-goal/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-clear-goal-vague-vs-clear-request-parts.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/give-context/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-give-context-pasted-code-matches-class-names.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/set-limits/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-set-limits-request-limits-checklist.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/show-example/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-show-example-example-pattern-project-list.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/small-steps/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-small-steps-small-steps-vs-one-big-request.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/ask-to-explain/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-ask-to-explain-ask-ai-explain-code-line-by-line.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/read-every-line/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-read-every-line-review-ai-code-line-by-line-flaws.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/made-up-features/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-made-up-features-invented-css-html-js-features.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/accessibility-check/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-accessibility-check-alt-text-colour-contrast-check.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/missed-request/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-missed-request-compare-ai-reply-with-request.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/events-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-events-project-event-list-filter-data-mismatch.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/share-errors/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-share-errors-bug-report-error-code-expected.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/smallest-fix/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-smallest-fix-smallest-fix-vs-rewrite.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/save-before-ai/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-save-before-ai-git-commit-diff-restore-routine.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/debug-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-debug-project-one-error-at-a-time-debugging.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/keep-secrets/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-keep-secrets-api-key-server-not-browser.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/unsafe-suggestions/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-unsafe-suggestions-innerhtml-vs-textcontent-visitor-input.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/licences/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-licences-ai-copied-code-licence-notice-credit.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/ai-on-your-site/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-ai-on-your-site-browser-server-ai-service-fetch-flow.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/keys-on-server/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-keys-on-server-api-key-server-environment-variable.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/ai/feature-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/ai-feature-project-plan-ask-test-fix-commit-loop.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/og/server.png</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/reference/</loc><lastmod>2026-10-23</lastmod></url>
  <url><loc>https://plainfinch.com/server/how-servers-work/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-how-servers-work-server-request-response-bakery-404.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/requests-responses/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-requests-responses-http-request-response-message-parts.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/urls-routes/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-urls-routes-url-parts-path-query-express.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/http-methods/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-http-methods-http-methods-get-post-bookings.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/status-codes/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-status-codes-http-status-codes-400-201.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/headers/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-headers-http-headers-content-type-text-plain.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/first-server/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-first-server-express-server-skeleton-four-lines.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/sending-html/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-sending-html-express-html-list-map-join.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/static-files/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-static-files-express-static-public-folder-files.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/route-params/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-route-params-route-param-id-match-404.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/query-strings/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-query-strings-query-string-max-filter-menu.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/error-pages/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-error-pages-express-404-500-error-handlers.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/bakery-site-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-bakery-site-project-bakery-site-route-map-layout.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/json-apis/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-json-apis-res-json-vs-send-content-type.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/reading-forms/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-reading-forms-form-post-redirect-303-thanks.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/validating-input/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-validating-input-validate-booking-400-errors-list.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/server-sql/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-server-sql-sqlite-insert-placeholders-new-id.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/rest-routes/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-rest-routes-rest-resource-routes-status-codes.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/fetch-your-api/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-fetch-your-api-fetch-post-json-sightings-sequence.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/menu-api-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-menu-api-project-menu-api-test-statuses-table.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/cookies/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-cookies-set-cookie-cookie-header-theme.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/sessions/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-sessions-session-id-map-lookup.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/password-hashing/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-password-hashing-scrypt-salt-hash-password-login.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/login-routes/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-login-routes-requirelogin-middleware-401-redirect.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/env-secrets/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-env-secrets-dotenv-process-env-gitignore.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/injection-xss/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-injection-xss-sql-injection-placeholder-search.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/rate-limits/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-rate-limits-login-rate-limit-429-retry-after.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/members-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-members-project-session-cookie-require-login.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/middleware/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-middleware-middleware-order-express-json.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/logging-debugging/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-logging-debugging-request-id-log-header.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/caching/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-caching-memory-cache-menu-sixty-seconds.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/cors/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-cors-cors-preflight-options-allow-origin.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/hosting-servers/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-hosting-servers-https-proxy-port-health-check.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/server/launch-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/server-launch-project-launch-ready-middleware-order.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/og/a11y.png</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/checklist/</loc><lastmod>2026-10-23</lastmod></url>
  <url><loc>https://plainfinch.com/a11y/what-is-accessibility/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-what-is-accessibility-missing-words-screen-reader.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/how-screen-readers-work/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-how-screen-readers-work-visual-order-vs-source-order.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/accessible-names/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-accessible-names-accessible-name-lookup-order.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/semantic-structure/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-semantic-structure-div-versus-real-list.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/headings-landmarks/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-headings-landmarks-heading-levels-without-gaps.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/alt-text/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-alt-text-alt-text-by-image-job.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/link-text/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-link-text-links-list-before-after.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/color-contrast/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-color-contrast-contrast-ratios-pass-fail.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/text-resizing/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-text-resizing-fixed-height-clips-text.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/language-and-reading/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-language-and-reading-specific-part-first-titles.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/bakery-page-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-bakery-page-project-bakery-fix-order-of-work.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/keyboard-basics/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-keyboard-basics-div-versus-button-keys.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/focus-styles/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-focus-styles-focus-visible-when-ring-shows.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/tab-order/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-tab-order-positive-tabindex-jumps-ahead.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/skip-links/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-skip-links-skip-link-saves-tab-presses.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/keyboard-traps/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-keyboard-traps-prevent-default-traps-tab.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/booking-page-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-booking-page-project-booking-page-tab-order-fixed.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/form-labels/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-form-labels-label-for-matches-id.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/required-and-errors/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-required-and-errors-required-attribute-three-effects.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/error-messages/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-error-messages-describedby-links-error-message.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/grouping-fields/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-grouping-fields-fieldset-legend-names-group.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/autocomplete/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-autocomplete-autocomplete-tokens-per-field.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/signup-form-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-signup-form-project-signup-form-five-fixes.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/buttons-vs-links/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-buttons-vs-links-button-or-link-decision.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/aria-basics/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-aria-basics-aria-pressed-toggle-states.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/live-regions/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-live-regions-live-region-exists-first.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/dialogs/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-dialogs-dialog-focus-round-trip.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/menus-and-disclosure/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-menus-and-disclosure-menu-button-aria-expanded.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/motion-and-animation/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-motion-and-animation-reduced-motion-ticker-stops.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/a11y/audit-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/a11y-audit-project-four-pass-audit-order.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/og/testing.png</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/reference/</loc><lastmod>2026-10-23</lastmod></url>
  <url><loc>https://plainfinch.com/testing/why-test/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-why-test-one-example-hides-the-bug.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/first-test/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-first-test-parts-of-a-first-test.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/expect-and-matchers/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-expect-and-matchers-toequal-versus-tobe-arrays.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/reading-failures/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-reading-failures-parts-of-a-failure-report.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/arrange-act-assert/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-arrange-act-assert-arrange-act-assert-shape.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/edge-cases/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-edge-cases-delivery-boundary-at-thirty.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/testing-errors/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-testing-errors-wrap-the-call-for-tothrow.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/objects-and-arrays/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-objects-and-arrays-tobe-versus-toequal-arrays.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/one-thing-per-test/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-one-thing-per-test-split-big-test-into-rules.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/test-names/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-test-names-describe-and-test-name-join.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/price-calculator-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-price-calculator-project-vat-after-discount-totals.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/setup-and-teardown/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-setup-and-teardown-beforeeach-clears-order-queue.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/mocks-and-fakes/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-mocks-and-fakes-mock-send-records-calls.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/testing-time/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-testing-time-advance-fake-clock-notice.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/async-tests/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-async-tests-await-before-runner-reports.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/testing-fetch/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-testing-fetch-stubbed-fetch-fake-response.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/booking-rules-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-booking-rules-project-edge-dates-around-today.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/dom-tests/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-dom-tests-getby-queryby-findby-compared.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/user-events/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-user-events-search-shows-and-hides-items.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/forms-tests/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-forms-tests-book-hire-button-states.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/accessible-queries/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-accessible-queries-query-priority-order-list.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/snapshot-tests/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-snapshot-tests-snapshot-protects-recorded-bug.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/todo-tests-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-todo-tests-project-empty-message-two-moments.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/test-first/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-test-first-red-green-refactor-loop.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/fixing-bugs-with-tests/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-fixing-bugs-with-tests-bug-report-to-regression-test.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/coverage/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-coverage-coverage-misses-boundary-bug.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/testing-ai-code/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-testing-ai-code-copied-expectation-versus-rules.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/testing/test-suite-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/testing-test-suite-project-broken-copies-each-caught.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/og/perf.png</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/reference/</loc><lastmod>2026-10-23</lastmod></url>
  <url><loc>https://plainfinch.com/perf/why-speed/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-why-speed-why-speed-hero-photo-timeline.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/how-a-page-loads/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-how-a-page-loads-page-load-discovery-chain.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/reading-a-waterfall/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-reading-a-waterfall-waterfall-bar-parts-connect-wait-download.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/core-web-vitals/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-core-web-vitals-core-web-vitals-before-after-scales.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/measuring-fairly/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-measuring-fairly-same-page-three-networks-lcp.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/image-weight/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-image-weight-image-pixels-to-scale-heron.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/image-formats/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-image-formats-picture-source-order-avif-webp.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/responsive-images/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-responsive-images-srcset-width-choice.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/lazy-loading/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-lazy-loading-lazy-load-distance-strip.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/image-dimensions/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-image-dimensions-unsized-image-layout-shift.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/lcp-image/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-lcp-image-hero-fetchpriority-waterfall.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/bakery-speed-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-bakery-speed-project-bakery-before-after-metrics.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/render-blocking-css/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-render-blocking-css-stylesheets-blocking-first-paint.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/critical-css/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-critical-css-inline-critical-css-head.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/font-loading/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-font-loading-font-preload-swap-waterfall.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/defer-and-async/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-defer-and-async-defer-order-async-arrival.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/third-party-scripts/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-third-party-scripts-third-party-widget-cost.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/less-javascript/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-less-javascript-javascript-weight-before-after.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/long-tasks/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-long-tasks-tap-timeline-yield.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/bird-club-speed-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-bird-club-speed-project-bird-club-fixes-numbers.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/fewer-requests/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-fewer-requests-css-import-chain-staircase.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/compression/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-compression-brotli-text-vs-photo-sizes.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/browser-caching/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-browser-caching-no-store-no-cache-max-age.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/cache-busting/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-cache-busting-fingerprint-new-name-per-release.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/resource-hints/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-resource-hints-preload-preconnect-waterfall-before-after.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/layout-shift/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-layout-shift-offer-banner-shift-phone-frames.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/performance-budget/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-performance-budget-budget-meters-weight-requests-lcp.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/ai-speed-advice/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-ai-speed-advice-ai-changes-measured-ledger.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/perf/bike-shop-speed-project/</loc><lastmod>2026-10-23</lastmod><image:image><image:loc>https://plainfinch.com/assets/diagrams/perf-bike-shop-speed-project-bike-shop-fixes-lcp-steps.webp</image:loc></image:image></url>
  <url><loc>https://plainfinch.com/diagrams/how-html-works/</loc><lastmod>2026-10-23</lastmod></url>
</urlset>
