<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://233solutions.ca/</loc>
    <changefreq>monthly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/support.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.4</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/build-log.html</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/about.html</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/parallel-builds-on-the-azure-devops-free-tier.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/self-hosting-an-azure-devops-agent-in-wsl2.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/hard-budget-caps-and-the-public-key-problem.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/a-claude-code-workflow-that-actually-ships.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/affine-vs-homography-for-flat-artwork.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/blurred-fill-for-aspect-ratio-handling.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/building-a-3x3-ccm-from-spyderchecker-48.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/closed-loop-steppers-on-a-raspberry-pi-5.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/color-correction-belongs-before-stitching.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/crop-aggressively-between-stitches.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/cross-polarization-for-painted-surfaces.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/deep-zoom-pyramids-and-the-browser.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/dmx-controlled-photometric-stereo.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/entra-id-msal-across-dotnet-and-nextjs.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/flat-field-correction-calibration.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/generating-deep-zoom-image-pyramids.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/manual-correspondence-points-vs-sift.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/mounting-a-camera-on-a-vertical-gantry.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/parallel-claude-cli-instances.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/photometric-stereo-height-maps.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/redis-write-behind-view-counters.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/registering-two-pass-captures.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/sdk-generation-and-typed-clients.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/stainless-hardware-for-capture-environment.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/task-tool-sub-agent-parallelism.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/the-misumi-4040-4080-easel.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/two-lens-capture-macro-and-photometric.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/vs-code-remote-ssh-onto-the-gantry-pi-5.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/why-a-custom-igus-drylin-gantry.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/notes/why-azure-over-google-aws.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://233solutions.ca/privacy.html</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
</urlset>
