<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url><loc>https://phil-schwartz.com</loc></url><url><loc>https://phil-schwartz.com/articles</loc><changefreq>daily</changefreq><priority>0.8</priority></url><url><loc>https://phil-schwartz.com/kodos/</loc></url><url><loc>https://phil-schwartz.com/denyhosts/</loc></url><url><loc>https://phil-schwartz.com/scratchy/</loc></url><url><loc>https://phil-schwartz.com/canyonero/</loc></url><url><loc>https://phil-schwartz.com/faqtor/</loc></url><url><loc>https://phil-schwartz.com/releaseforge/</loc></url><url><loc>https://phil-schwartz.com/other/</loc></url><url><loc>https://phil-schwartz.com/contact/</loc></url><url><loc>https://phil-schwartz.com/mr-sparkle/</loc></url><url><loc>https://phil-schwartz.com/articles/testing-kodos-with-thousands-of-regex-patterns-to-find-performance-bottlenecks</loc></url><url><loc>https://phil-schwartz.com/articles/the-story-behind-scratchy-why-i-built-an-apache-log-analyzer</loc></url><url><loc>https://phil-schwartz.com/articles/building-a-web-based-regex-tester-inspired-by-kodos</loc></url><url><loc>https://phil-schwartz.com/articles/rewriting-scratchy-in-python-performance-gains-and-new-features</loc></url><url><loc>https://phil-schwartz.com/articles/how-to-contribute-to-denyhosts-a-guide-for-new-open-source-developers</loc></url><url><loc>https://phil-schwartz.com/articles/the-evolution-of-kodos-from-personal-tool-to-public-release</loc></url><url><loc>https://phil-schwartz.com/articles/how-scratchy-helped-me-identify-a-ddos-attack-on-my-own-server</loc></url><url><loc>https://phil-schwartz.com/articles/lessons-learned-from-maintaining-denyhosts-for-over-a-decade</loc></url><url><loc>https://phil-schwartz.com/articles/why-i-chose-python-for-kodos-over-alternative-regex-debugging-tools</loc></url><url><loc>https://phil-schwartz.com/articles/building-an-ssh-honeypot-to-trap-attackers-before-they-reach-denyhosts</loc></url></urlset>