<?xml version="1.0" encoding="UTF-8"?>
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
    <loc>https://johnkavanagh.co.uk/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/about/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/services/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/</loc>
    <lastmod>2026-03-19</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/timeline/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/availability/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/contact/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/terms/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/privacy/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/sitemap/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/virgin-atlantic-replatform/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/nandos-headless-replatform/</loc>
    <lastmod>2026-03-19</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/john-lewis-rebrand-ecommerce/</loc>
    <lastmod>2026-01-17</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/world-economic-forum/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/selfridges-ecommerce-enhancement/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/polestar-cars/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/boohoo-group-multi-replatform/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/lotus-cars/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/img-licensing-agency/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/wreel-design-agency/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/lego-ecommerce-replatform/</loc>
    <lastmod>2025-10-28</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/plex-media-platform/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/conde-nast-style-com-marketplace/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/hsbc-digital-transformations/</loc>
    <lastmod>2026-01-17</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/moscot-eyewear/</loc>
    <lastmod>2025-03-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/bbc-future-media/</loc>
    <lastmod>2026-01-17</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/red-central-design-studio/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/tonys-chocolonely/</loc>
    <lastmod>2025-03-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/bose-support-platform/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/toyboxx-recording-studio/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/navico-marine-ecommerce/</loc>
    <lastmod>2026-01-17</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/linkudo-word-game/</loc>
    <lastmod>2026-01-17</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/dataffirm-investment-fintech/</loc>
    <lastmod>2026-01-17</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/cox-and-kings-travel/</loc>
    <lastmod>2025-03-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/projects/macmillan-education-elearning/</loc>
    <lastmod>2026-02-20</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/2/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/3/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/4/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/5/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/6/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/7/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/8/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/9/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/10/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/11/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/12/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/13/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/14/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/15/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/16/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/17/</loc>
    <lastmod>2026-04-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/18/</loc>
    <lastmod>2025-10-28</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/19/</loc>
    <lastmod>2026-02-21</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/20/</loc>
    <lastmod>2024-12-16</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/page/21/</loc>
    <lastmod>2024-02-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/accessibility/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/adaptive-development/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/adaptive-development/page/2/</loc>
    <lastmod>2024-02-20</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/algorithms/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/algorithms/page/2/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/amp/</loc>
    <lastmod>2026-01-02</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/angular/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/april-fools/</loc>
    <lastmod>2025-07-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/architecture/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/artificial-intelligence/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/brighton/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/career/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/chakra-ui/</loc>
    <lastmod>2024-02-07</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/cms/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/consulting/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/contentful/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/copyright/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/cross-browser-compatibility/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/cross-browser-compatibility/page/2/</loc>
    <lastmod>2024-02-27</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/css/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/css/page/2/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/css/page/3/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/css/page/4/</loc>
    <lastmod>2025-10-28</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/css/page/5/</loc>
    <lastmod>2024-02-14</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/cypress/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/data-structures/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/dev-match/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/development/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/development/page/2/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/development/page/3/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/development/page/4/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/development/page/5/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/development/page/6/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/development/page/7/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/development/page/8/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/development/page/9/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/development/page/10/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/development/page/11/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/development/page/12/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/development/page/13/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/development/page/14/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/development/page/15/</loc>
    <lastmod>2026-04-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/development/page/16/</loc>
    <lastmod>2025-10-06</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/development/page/17/</loc>
    <lastmod>2025-05-13</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/development/page/18/</loc>
    <lastmod>2024-02-20</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/es6/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/es6/page/2/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/es6/page/3/</loc>
    <lastmod>2025-07-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/page/2/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/page/3/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/page/4/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/page/5/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/page/6/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/page/7/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/page/8/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/page/9/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/page/10/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/page/11/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/page/12/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/page/13/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/page/14/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/page/15/</loc>
    <lastmod>2026-04-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/page/16/</loc>
    <lastmod>2025-10-28</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/page/17/</loc>
    <lastmod>2025-05-13</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/page/18/</loc>
    <lastmod>2024-02-27</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/front-end-development/page/19/</loc>
    <lastmod>2023-12-02</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/ftp/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/gatsby/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/gatsby/page/2/</loc>
    <lastmod>2025-07-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/gdpr/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/generative-engine-optimisation/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/git/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/google/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/graphql/</loc>
    <lastmod>2025-07-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/guides/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/guides/page/2/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/guides/page/3/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/guides/page/4/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/guides/page/5/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/guides/page/6/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/guides/page/7/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/guides/page/8/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/guides/page/9/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/guides/page/10/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/guides/page/11/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/guides/page/12/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/guides/page/13/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/guides/page/14/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/guides/page/15/</loc>
    <lastmod>2026-01-17</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/guides/page/16/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/guides/page/17/</loc>
    <lastmod>2024-02-14</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/hiring/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/hosting/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/htaccess/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/html/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/image-rendering/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/internet-explorer/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/javascript/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/javascript/page/2/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/javascript/page/3/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/javascript/page/4/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/javascript/page/5/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/javascript/page/6/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/javascript/page/7/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/javascript/page/8/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/javascript/page/9/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/javascript/page/10/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/javascript/page/11/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/javascript/page/12/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/javascript/page/13/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/javascript/page/14/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/javascript/page/15/</loc>
    <lastmod>2026-01-17</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/javascript/page/16/</loc>
    <lastmod>2025-05-13</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/javascript/page/17/</loc>
    <lastmod>2024-02-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/jquery/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/jsx/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/leadership/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/leetcode/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/leetcode/page/2/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/leetcode/page/3/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/liquid/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/miscellaneous/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/netlify/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/nextjs/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/nextjs/page/2/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/nodejs/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/nodejs/page/2/</loc>
    <lastmod>2025-07-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/performance/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/php/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/react/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/react/page/2/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/react/page/3/</loc>
    <lastmod>2025-02-14</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/responsive-development/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/responsive-development/page/2/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/responsive-development/page/3/</loc>
    <lastmod>2024-02-07</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/sass/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/sass/page/2/</loc>
    <lastmod>2025-01-15</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/search-engine-optimisation/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/search-engine-optimisation/page/2/</loc>
    <lastmod>2024-06-06</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/security/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/server-side-rendering/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/shopify/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/sitemaps/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/styled-components/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/testing/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/typescript/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/typescript/page/2/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/typescript/page/3/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/typography/</loc>
    <lastmod>2025-10-28</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/vercel/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/video/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/categories/vuejs/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-rise-of-ai-in-web-development/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/function-declarations-vs-expressions-vs-arrow-functions/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-fetch-api-for-beginners-get-post-json-and-errors/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/pass-by-value-vs-reference-in-javascript/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/why-this-changes-in-javascript-event-handlers-and-methods/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/when-to-use-server-actions-vs-api-routes-in-nextjs/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/valid-palindrome-in-javascript-two-pointers/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-signals-in-angular-the-future-of-reactivity/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/type-coercion-in-javascript-implicit-vs-explicit-conversion/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/trapping-rain-water-two-pointers/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/topological-sort-solving-the-course-schedule-problem/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/string-startswith-endswith-and-includes-in-javascript/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/static-methods-vs-instance-methods-in-javascript-classes/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/sliding-window-longest-substring-without-repeating-chars/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/search-in-rotated-sorted-array-binary-search/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/quickselect-kth-largest-element-in-array-typescript/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/product-of-array-except-self-prefix-suffix/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/prevent-race-conditions-in-javascript-with-abortcontroller/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/prefix-sums-and-hash-maps-solving-subarray-sum-equals-k/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/optimising-vue-js-performance-lazy-loading-code-splitting/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/optimising-next-js-performance-with-isr/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/optimising-angular-forms-template-driven-vs-reactive-forms/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/object-property-shorthand-and-computed-property-names-js/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/object-keys-object-values-and-object-entries-explained/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/object-freeze-object-seal-and-preventextensions/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/object-assign-in-javascript-merging-and-shallow-copies/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/number-isnan-isfinite-isinteger-in-javascript/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/mutation-vs-immutability-in-javascript-arrays-and-objects/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/multi-source-bfs-solving-the-rotting-oranges-problem/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/monotonic-stack-solving-the-daily-temperatures-problem/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/leetcode-binary-tree-zigzag-level-order-traversal/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/json-parse-and-json-stringify-explained-for-beginners/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/intervals-in-practice-solving-the-merge-intervals-problem/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/implementing-authentication-in-next-js-using-nextauth-js/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/implement-trie-prefix-tree-in-typescript/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/grid-traversal-solving-the-number-of-islands-problem/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/find-peak-element-binary-search/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/fast-and-slow-pointers-linked-list-cycle/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/design-systems-for-web-apps-with-figma-storybook-and-npm/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/creating-custom-vue-directives-for-enhanced-functionality/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/classlist-in-javascript-add-remove-toggle-contains/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/browser-vs-node-js-in-javascript/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/breadth-first-search-binary-tree-level-order-traversal/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/binary-search-on-the-answer-solving-koko-eating-bananas/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/backtracking-word-search-problem/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/array-find-array-some-and-array-every-in-javascript/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/angular-standalone-components-do-we-still-need-modules/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/angular-change-detection-how-it-works-and-how-to-optimise/</loc>
    <lastmod>2026-04-12</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/using-middleware-in-next-js-for-route-protection/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-phantom-window-resize-events-in-ios/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/3sum-in-javascript-two-pointers-after-sorting/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/validating-parentheses-input-using-typescript/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/javascript-longest-substring-without-repeating-characters/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-palindrome-number-problem-strings-vs-maths/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-longest-palindromic-substring-in-javascript/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/container-with-most-water-the-two-pointer-solution/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/element-dimensions-in-javascript-width-and-height/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-object-types-with-javascripts-instanceof/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/how-inheritance-works-in-the-javascript-prototype-chain/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/currying-in-javascript-explained/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/next-js-vs-remix-understanding-the-key-differences/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/promise-all-vs-promise-race-in-javascript/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/domcontentloaded-vs-load-in-javascript/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/controlled-vs-uncontrolled-components-in-react/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/sustainability-ethics-and-the-future-of-web-development/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/array-includes-vs-indexof-in-javascript/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/event-bubbling-vs-capturing-in-javascript/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/object-is-vs-strict-equality-in-javascript/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/primitive-vs-reference-types-in-javascript/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-arguments-object-vs-rest-parameters-in-javascript/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/async-and-await-to-simplify-asynchronous-javascript-code/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/react-functional-class-and-pure-components/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/getstaticprops-vs-getserversideprops-in-next-js/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/add-two-numbers-in-typescript-linked-lists/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/generate-parentheses-in-typescript-backtracking/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/automatically-generate-urllist-txt-from-sitemap-xml/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/redirect-a-default-netlify-subdomain-to-your-custom-domain/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/solving-two-sum-using-javascript/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/use-javascript-and-the-two-pointer-technique-to-solve-4sum/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/prepending-php-to-a-page-in-gatsby/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/3sum-closest-in-javascript-sorting-and-two-pointers/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/vues-provide-inject-api-when-and-how-to-use-it/</loc>
    <lastmod>2026-04-11</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/using-next-link-for-client-side-navigation/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-getstaticpaths-in-next-js/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-file-system-routing-in-next-js/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-execution-context-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/static-generation-vs-server-side-rendering-in-next-js/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/image-optimisation-with-next-image/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/dynamic-imports-and-code-splitting-in-next-js/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/custom-app-and-custom-document-in-next-js/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/single-number-in-typescript-with-bit-manipulation/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/will-ai-replace-front-end-developers/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/why-you-should-not-use-protocol-relative-urls/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/why-we-use-an-empty-dependency-array-in-reacts-useeffect/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/where-to-find-jobs-in-web-development/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/when-to-use-var-let-or-const/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/what-makes-a-great-javascript-developer/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/what-is-an-html-entity/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/what-a-levels-do-you-need-for-software-engineering/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/web-development-and-the-environment/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/using-the-filter-method-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/using-external-stylesheets-in-gatsby-rather-than-inline/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/using-display-in-css/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/using-commonjs-to-implement-modules-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/use-javascript-to-find-the-week-day-from-a-date/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/use-greater-than-and-less-than-symbols-in-jsx/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/use-css-to-change-the-mouse-cursor/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-weakmap-and-weakset-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-transient-props-in-styled-components/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-the-hover-pseudo-class-in-css/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-prototype-apply-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-call-apply-and-bind-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/trigonometric-functions-in-css/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-quirks-of-z-index/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-nullish-coalescing-operator-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-javascript-map-method/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-difference-between-equality-operators-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-css-overflow-property/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/testing-the-content-of-jsx-data-in-cypress/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/tagged-template-literals-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/staying-current-by-automating-copyright-year-updates/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/static-site-generators/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/specificity-in-css/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/sort-the-keys-of-an-object-with-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/rendering-contentful-rich-code-snippets-in-gatsby/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/reduce-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/react-vs-vue-vs-angular/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/pure-functions-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/parseint-in-javascript-the-significance-of-radix/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/parent-selectors-in-css-and-sass/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/optimising-react-performance-with-usememo-and-usecallback/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/optimising-gatsby-image-even-further/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/object-control-in-javascript-using-defineproperties/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/null-and-undefined-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/multi-line-strings-in-javascript-using-template-literals/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/merging-multiple-objects-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/margin-collapse-in-css/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/manipulating-strings-in-javascript-with-split/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/life-as-a-freelance-developer-in-brighton/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/leveraging-then-in-modern-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/javascripts-math-random/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/invoked-function-expressions-iife/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/if-not-internet-explorer-conditional-html/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/html-video-and-the-preload-attribute/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/how-to-use-grid-in-css/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/how-to-use-and-clear-the-css-float-property/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/how-to-replace-all-instances-of-a-string-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/how-to-rename-local-and-remote-git-branches/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/how-to-hire-a-javascript-developer/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/how-to-choose-a-react-developer/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/how-to-amend-git-commits/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/handling-click-events-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/git-is-a-little-bit-like-a-diary/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/getting-started-with-callbacks-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/geo-vs-seo-where-they-overlap-and-where-they-dont/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/for-in-vs-for-of-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/flattening-arrays-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/five-tips-on-how-to-be-a-good-web-developer/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/exploring-the-liquid-templating-language/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/exploring-css-viewport-units-beyond-vw-and-vh/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/escaping-and-unescaping-special-characters-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/dynamic-sizing-with-css-max/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/dynamic-sizing-with-css-clamp/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/dom-traversal-closest-in-vanilla-javascript-and-jquery/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/disabling-gatsby-telemetry/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/differences-in-lead-and-senior-front-end-development-roles/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/differences-between-falsy-and-nullish-values-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/detecting-and-dealing-with-website-theft/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/delete-all-local-git-branches-except-for-master-main/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/default-parameters-in-javascript-in-more-depth/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/css-focus-styles-for-keyboard-users-only/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/css-box-sizing-controlling-the-element-box-model/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/css-animations-transitions-vs-keyframes/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/control-css-container-layouts-with-place-content/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/comparing-arrays-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/common-accessibility-pitfalls-in-web-development/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/commenting-in-jsx/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/cleaning-up-your-javascript-code-the-double-bang-operator/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/caching-strategies-in-react/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/block-bad-bots-using-htaccess/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/beginners-guide-to-rest-and-spread-operators-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/automatically-deploying-a-static-gatsby-build-via-ftp/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/asynchronous-module-definition-amd-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/appending-and-prepending-items-to-an-array/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/an-introduction-to-promises-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/advanced-sass-loops/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/adding-static-files-to-a-gatsby-site/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/access-a-random-array-element-using-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/a-guide-to-default-parameters-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/a-brief-look-at-javascripts-temporal-dates-and-times-api/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/a-beginners-guide-to-generators-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/301-versus-307-redirects/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/10-essential-seo-tips-for-front-end-developers/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/removing-the-nth-node-from-the-end-of-a-list/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/leetcode-solving-the-merge-two-sorted-lists-problem/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/leetcode-finding-the-diameter-of-a-binary-tree/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-and-solving-regular-expression-matching/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-zigzag-conversion-problem-in-typescript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/string-to-integer-atoi-decoding-strings-in-web-development/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/solving-the-letter-combinations-of-a-phone-number-problem/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/solving-the-jump-game-problem-with-greedy-algorithms/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/return-the-length-of-arguments-passed-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/leetcode-reversing-integers-with-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/horizontal-and-vertical-scanning-the-longest-common-prefix/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/graph-traversal-solving-the-course-schedule-problem/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/finding-the-median-of-two-sorted-arrays/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/dynamic-programming-in-leetcode-solving-coin-change/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/converting-roman-numerals-to-integers/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/why-im-the-best-choice-for-web-development-near-you/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/why-hiring-a-local-web-developer-near-you-matters/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/what-geo-is-and-why-it-is-not-just-seo-for-ai/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/what-are-higher-order-components-in-react/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/using-vues-teleport-for-modals-and-portals/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/using-vues-suspense-for-asynchronous-components/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/using-viewport-units-vw-and-vh-in-css/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/using-the-css-has-pseudo-class/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/using-container-queries-in-css/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/unit-testing-in-angular-writing-effective-tests/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-the-javascript-event-loop/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-the-composition-api-in-vue-3/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-settimeout-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-media-queries-in-css/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-javascripts-sort-method/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-event-loop-and-concurrency-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-css-transitions/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-css-positioning/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-and-using-flexbox-in-css/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/top-reasons-to-work-with-a-local-web-developer-in-brighton/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/tips-for-managing-memory-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-value-of-choosing-a-web-developer-near-you/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-difference-between-javascript-callbacks-and-promises/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/testing-vue-components-with-vue-test-utils/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/stopping-propagation-vs-prevent-default-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/spread-syntax-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/sorting-objects-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/sorting-complex-arrays-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/some-of-the-most-misunderstood-properties-in-css/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/redirect-a-default-vercel-subdomain-to-your-custom-domain/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/reacts-reconciliation-algorithm-explained/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/react-portals-explained/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/react-hooks-modern-state-management/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/react-error-boundaries-explained/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/preview-mode-in-next-js-with-a-headless-cms/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/preventing-and-debugging-memory-leaks-in-react/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/positioning-in-css/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/position-sticky-in-css/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/optimising-website-performance-with-html-css-and-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/optimising-html-markup-for-seo/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/mastering-javascripts-slice/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/mastering-javascript-iterators-and-generators/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/mastering-css-for-freelance-web-development-projects/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/mastering-css-animations-with-keyframes/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/lazy-loading-in-angular-optimising-performance/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/javascripts-typeof-operator-uses-and-limitations/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/javascript-string-manipulation-substring-vs-substr/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/javascript-hoisting-variables-functions-and-more/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/javascript-error-handling-patterns/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/is-a-software-engineer-high-paying/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/integrating-cmses-with-html-css-and-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/important-in-css/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/implementing-server-side-rendering-ssr-in-vue/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/how-to-import-all-named-exports-from-a-javascript-file/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/how-to-handle-multiple-named-exports-in-one-javascript-file/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/how-to-find-the-best-web-developer-near-you/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/how-to-check-an-element-exists-with-and-without-jquery/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/how-much-do-software-engineers-make-in-the-uk/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/higher-order-functions-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/harnessing-the-power-of-prototype-bind/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/happy-holidays-2022/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/happy-holidays-2021/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/get-number-of-years-between-two-dates-in-php-and-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/exporting-and-importing-using-javascript-es6-modules/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/exploring-the-call-method-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/event-delegation-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/enhancing-user-experience-with-css-javascript-animations/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/empty-objects-in-javascript-are-not-equal/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/dynamic-routes-in-next-js/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/dynamic-navigation-with-react-router/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/dynamic-calculations-in-css-using-calc/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/dynamic-array-manipulation-with-javascripts-splice/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/deep-cloning-vs-shallow-cloning-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/creating-interactive-user-interfaces-with-html-css-and-js/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/converting-integers-to-roman-numerals/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/container-queries-in-css/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/commenting-in-front-end-languages/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/class-vs-functional-components-in-react/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/check-if-today-is-between-two-dates-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/check-if-three-values-are-equal-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/building-custom-hooks-in-react/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/building-custom-directives-in-angular/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/building-a-headless-cms-powered-site-with-next-js/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/building-a-custom-vue-3-hook-using-the-composition-api/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/best-practices-for-vue-router-in-large-applications/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/best-practices-for-angular-routing-and-lazy-loading/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/automatically-submit-sitemaps-to-google-during-gatsby-build/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/automatically-generate-text-sitemaps-in-gatsby/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/all-about-headless-cmses/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/advanced-techniques-for-responsive-web-design/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/why-html-form-values-are-always-strings-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/throttling-vs-debouncing-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/removing-p-tags-from-contentful-list-items/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/javascript-essentials-for-freelance-web-developers/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/hiring-a-freelance-front-end-developer/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/building-a-multi-tenant-application-with-next-js/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-the-module-pattern-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/how-to-find-a-programmer-job/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/swearing-in-the-workplace/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/what-is-cors-and-why-is-my-javascript-fetch-blocked/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-impact-of-ai-on-developers-and-the-web-industry/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/semantic-html/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/rethinking-carousels-going-around-in-circles/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/resolving-mini-css-extract-plugin-warnings-in-gatsby/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/memoization-in-javascript-optimising-function-calls/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/improve-page-performance-with-css-content-visibility/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/how-to-improve-your-time-to-first-byte/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/css-aspect-ratio-for-responsive-layouts/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/creating-custom-viewport-units-instead-of-using-vh-and-vw/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/why-is-time-to-first-byte-important/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-the-difference-between-indexes-and-indices/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-tail-call-optimisation-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-safest-way-to-test-for-nan/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/generating-email-addresses-from-public-data-is-illegal/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/dev-match-james-mcconnell-refund-that-never-came/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/caching-strategies-for-data-fetching-in-next-js/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/what-does-front-end-development-mean/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/creating-and-dispatching-custom-events-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/lifting-state-up-in-react/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/rendering-lists-and-why-react-keys-matter/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/react-context-api-when-to-use-it-and-when-not-to/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/extends-and-super-in-javascript-classes/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/how-to-read-javascript-errors-and-stack-traces/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/react-fragments-explained/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/array-from-and-array-of-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/usereducer-in-react/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/using-data-attributes-and-dataset-in-javascript/</loc>
    <lastmod>2026-04-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/what-does-a-software-engineer-do/</loc>
    <lastmod>2026-04-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/useref-in-react/</loc>
    <lastmod>2026-04-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/referenceerror-window-is-not-defined-in-gatsby/</loc>
    <lastmod>2026-04-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/can-i-learn-front-end-development-in-2-months/</loc>
    <lastmod>2026-04-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/what-skills-are-required-for-a-front-end-developer/</loc>
    <lastmod>2026-04-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/why-queryselector-returns-null-in-javascript/</loc>
    <lastmod>2026-04-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/creating-progressive-web-apps-pwas-with-angular/</loc>
    <lastmod>2026-04-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/javascript-symbols-when-and-why-to-use-them/</loc>
    <lastmod>2026-04-02</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-role-of-dependency-injection-in-angular/</loc>
    <lastmod>2026-04-02</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/building-efficient-recursive-functions-in-javascript/</loc>
    <lastmod>2026-04-02</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/optional-chaining-in-javascript/</loc>
    <lastmod>2026-01-17</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/localstorage-in-javascript/</loc>
    <lastmod>2026-01-17</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/what-is-front-end-web-development/</loc>
    <lastmod>2026-01-17</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/why-next-js-middleware-unavailable-with-pages-router/</loc>
    <lastmod>2026-01-17</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/introducing-seeded-randomisation-into-an-ssr-project/</loc>
    <lastmod>2026-01-17</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/ethical-web-development-part-2/</loc>
    <lastmod>2026-01-02</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/has-google-killed-amp/</loc>
    <lastmod>2026-01-02</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/reacts-virtual-dom-vs-the-real-dom/</loc>
    <lastmod>2026-01-02</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/how-js-handles-memory-management-and-garbage-collection/</loc>
    <lastmod>2026-01-02</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/ethical-web-development-part-1/</loc>
    <lastmod>2025-10-29</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/what-are-array-like-objects-in-javascript/</loc>
    <lastmod>2025-10-29</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/access-search-parameters-in-next-js-ssrd-layout/</loc>
    <lastmod>2025-10-29</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/harnessing-javascripts-defineproperty/</loc>
    <lastmod>2025-10-29</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/using-javascript-to-avoid-orphans/</loc>
    <lastmod>2025-10-28</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/what-is-a-distributed-denial-of-service-ddos-attack/</loc>
    <lastmod>2025-10-28</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/simplify-your-layout-css-with-place-items/</loc>
    <lastmod>2025-10-28</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/before-and-after-pseudo-elements-in-css/</loc>
    <lastmod>2025-10-28</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-will-change-property-in-css/</loc>
    <lastmod>2025-10-28</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/what-are-css-preprocessors-and-why-use-them/</loc>
    <lastmod>2025-07-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-the-difference-between-b-and-strong/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/a-guide-to-html-fundamentals/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/disabling-text-selection-highlighting-with-css/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/manipulate-elements-with-css-transform/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/using-regex-to-replace-numbers-in-a-string/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-short-circuiting-in-javascript/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/a-beginners-guide-to-web-hosting/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/disabling-source-maps-in-gatsby-for-production/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/javascripts-commonly-misunderstood-features/</loc>
    <lastmod>2025-07-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/gatsby-and-graphql-nodes-vs-edges/</loc>
    <lastmod>2025-07-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/installing-gatsby-js-onto-an-m1-macbook-air/</loc>
    <lastmod>2025-07-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/renaming-and-destructuring-variables-in-es6/</loc>
    <lastmod>2025-07-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/accessing-css-variables-from-a-database/</loc>
    <lastmod>2025-07-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/vue-3-reactivity-proxies-vs-vue-2-reactivity/</loc>
    <lastmod>2025-07-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/building-polyfills-for-javascript-array-and-string-methods/</loc>
    <lastmod>2025-07-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/best-practices-for-cross-browser-compatibility/</loc>
    <lastmod>2025-07-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/interpolation-sass-variables-inside-calc/</loc>
    <lastmod>2025-06-23</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/a-simple-popup-window-using-jquery/</loc>
    <lastmod>2025-05-28</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/what-is-a-static-site-generator/</loc>
    <lastmod>2025-05-22</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/converting-between-camel-snake-and-kebab-case-in-javascript/</loc>
    <lastmod>2025-05-13</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/removing-duplicates-from-a-javascript-array-deduping/</loc>
    <lastmod>2025-05-07</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/practical-use-cases-for-javascript-set-and-map/</loc>
    <lastmod>2026-02-21</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/leveraging-javascript-frameworks-for-efficient-development/</loc>
    <lastmod>2025-02-14</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/reverse-an-array-in-javascript/</loc>
    <lastmod>2025-10-06</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/closures-in-javascript-the-key-to-lexical-scope/</loc>
    <lastmod>2025-02-06</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-the-css-where-function/</loc>
    <lastmod>2025-02-04</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/an-introduction-to-classes-in-javascript/</loc>
    <lastmod>2025-01-15</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/intercepting-clipboard-events-with-javascript/</loc>
    <lastmod>2025-01-15</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/single-vs-double-colons-for-css-pseudo-elements/</loc>
    <lastmod>2025-01-15</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/css-visibility-hiding-elements-without-affecting-layout/</loc>
    <lastmod>2025-01-15</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/break-out-of-css-nesting-with-sass/</loc>
    <lastmod>2024-12-17</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/looping-in-javascript-es5-and-es6-foreach-and-for-of/</loc>
    <lastmod>2024-12-13</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/controlling-element-transparency-with-css-opacity/</loc>
    <lastmod>2024-12-10</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/finding-the-difference-between-two-strings-in-javascript/</loc>
    <lastmod>2024-09-09</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/throttling-scroll-events-in-javascript/</loc>
    <lastmod>2024-08-19</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/tracking-element-visibility-using-intersection-observer/</loc>
    <lastmod>2024-07-31</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/creating-a-discernible-name-for-icon-links/</loc>
    <lastmod>2024-06-06</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/alternative-text-in-the-css-content-property/</loc>
    <lastmod>2024-04-19</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-end-of-internet-explorer/</loc>
    <lastmod>2024-02-27</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/using-the-modulo-operator-in-javascript/</loc>
    <lastmod>2024-02-27</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/repetitive-asynchronous-tasks-with-javascripts-setinterval/</loc>
    <lastmod>2024-02-27</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/do-websites-need-to-look-the-same-in-every-browser/</loc>
    <lastmod>2024-02-27</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/declarative-vs-imperative-programming/</loc>
    <lastmod>2024-12-16</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/how-much-does-a-front-end-developer-make/</loc>
    <lastmod>2024-02-22</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/responsive-javascript-and-the-matchmedia-method/</loc>
    <lastmod>2024-02-20</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/flexbox-vs-grid-in-css/</loc>
    <lastmod>2024-02-20</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/hiding-empty-elements-with-css/</loc>
    <lastmod>2024-02-20</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/use-chrome-developer-tools-to-track-element-focus/</loc>
    <lastmod>2024-02-20</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/dynamic-sizing-with-css-min/</loc>
    <lastmod>2024-04-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/javascript-array-manipulation-slice-vs-splice/</loc>
    <lastmod>2024-02-15</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/adaptive-vs-responsive-design-development/</loc>
    <lastmod>2024-02-15</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/create-placeholder-arrays-of-any-size-in-javascript/</loc>
    <lastmod>2024-02-15</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/changing-the-colour-of-placeholder-text/</loc>
    <lastmod>2024-02-15</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/dynamically-create-a-script-element-with-javascript/</loc>
    <lastmod>2024-02-15</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/the-power-of-text-wrap-pretty/</loc>
    <lastmod>2024-02-14</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/setting-css-blur-filter-to-zero-on-a-retina-screen/</loc>
    <lastmod>2024-02-13</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/check-if-your-site-is-running-on-localhost/</loc>
    <lastmod>2024-02-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/toggle-a-boolean-in-javascript/</loc>
    <lastmod>2024-02-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/using-css-to-deal-with-widows/</loc>
    <lastmod>2024-02-08</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/detecting-breakpoints-in-react-using-chakra-ui/</loc>
    <lastmod>2024-02-07</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/enhancing-web-typography-with-text-wrap-balance/</loc>
    <lastmod>2024-02-07</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/javascripts-hasownproperty-method/</loc>
    <lastmod>2023-12-02</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/check-if-a-string-contains-only-whitespace-with-javascript/</loc>
    <lastmod>2023-07-17</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/reducing-image-brightness-with-css/</loc>
    <lastmod>2023-07-17</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/understanding-arrow-functions-in-javascript/</loc>
    <lastmod>2023-07-16</lastmod>
  </url>
  <url>
    <loc>https://johnkavanagh.co.uk/articles/five-tips-for-transitioning-from-permanent-to-freelancing/</loc>
    <lastmod>2023-04-04</lastmod>
  </url>
  </urlset>
  