<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://ethang.dev/</loc></url>
<url><loc>https://ethang.dev/blog</loc></url>
<url><loc>https://ethang.dev/blog/page/2</loc></url>
<url><loc>https://ethang.dev/blog/page/3</loc></url>
<url><loc>https://ethang.dev/blog/page/4</loc></url>
<url><loc>https://ethang.dev/blog/programming-is-not-a-skill</loc><lastmod>2026-10-26</lastmod></url>
<url><loc>https://ethang.dev/blog/the-architecture-of-ethang-agent</loc><lastmod>2026-10-23</lastmod></url>
<url><loc>https://ethang.dev/blog/skills-that-teach-the-scientific-method</loc><lastmod>2026-10-19</lastmod></url>
<url><loc>https://ethang.dev/blog/after-spawn-returns</loc><lastmod>2026-10-17</lastmod></url>
<url><loc>https://ethang.dev/blog/the-real-prodigal</loc><lastmod>2026-09-28</lastmod></url>
<url><loc>https://ethang.dev/blog/where-the-evaluator-lives</loc><lastmod>2026-09-22</lastmod></url>
<url><loc>https://ethang.dev/blog/half-right</loc><lastmod>2026-09-21</lastmod></url>
<url><loc>https://ethang.dev/blog/the-blowup-half</loc><lastmod>2026-09-21</lastmod></url>
<url><loc>https://ethang.dev/blog/the-barrier-is-rarely-the-work</loc><lastmod>2026-09-20</lastmod></url>
<url><loc>https://ethang.dev/blog/sessions-are-agents</loc><lastmod>2026-09-05</lastmod></url>
<url><loc>https://ethang.dev/blog/what-sets-ethang-agent-apart</loc><lastmod>2026-08-30</lastmod></url>
<url><loc>https://ethang.dev/blog/model-picker-paid-classification-and-the-0-05-per-million-reality</loc><lastmod>2026-08-21</lastmod></url>
<url><loc>https://ethang.dev/blog/implementation-details-are-a-choice</loc><lastmod>2026-08-20</lastmod></url>
<url><loc>https://ethang.dev/blog/model-picker-building-a-model-router-that-actually-respects-your-budget</loc><lastmod>2026-08-15</lastmod></url>
<url><loc>https://ethang.dev/blog/one-prompt-many-safeguards-the-architecture-of-a-pi-agent</loc><lastmod>2026-08-12</lastmod></url>
<url><loc>https://ethang.dev/blog/kimi-k3-gemini-3-6-flash-cloudflare-r2-and-ai-intent-metrics</loc><lastmod>2026-07-21</lastmod></url>
<url><loc>https://ethang.dev/blog/documenting-the-invisible-risks-and-hidden-realities-of-current-tech</loc><lastmod>2026-07-18</lastmod></url>
<url><loc>https://ethang.dev/blog/quantum-standards-web-specs-and-monopoly-bulwarks</loc><lastmod>2026-07-16</lastmod></url>
<url><loc>https://ethang.dev/blog/control-consent-and-camera-shake</loc><lastmod>2026-07-15</lastmod></url>
<url><loc>https://ethang.dev/blog/typescript-7-vite-beta-and-the-reality-of-gpt-5</loc><lastmod>2026-07-10</lastmod></url>
<url><loc>https://ethang.dev/blog/grid-volatility-resource-shifting-and-content-caches</loc><lastmod>2026-07-07</lastmod></url>
<url><loc>https://ethang.dev/blog/software-foes-sovereign-agents-and-supreme-court-decisions</loc><lastmod>2026-07-02</lastmod></url>
<url><loc>https://ethang.dev/blog/eslint-upgrades-malicious-free-vpns-and-the-gating-of-gpt-5-6</loc><lastmod>2026-06-30</lastmod></url>
<url><loc>https://ethang.dev/blog/the-death-of-open-ai-500-point-languages-and-the-human-element</loc><lastmod>2026-06-28</lastmod></url>
<url><loc>https://ethang.dev/blog/making-secure-behavior-the-easiest-option</loc><lastmod>2026-06-25</lastmod></url>
<url><loc>https://ethang.dev/blog/i-ve-been-moving-my-projects-to-microservices-behind-a-graphql-gateway-and-everything-has-been</loc><lastmod>2026-05-31</lastmod></url>
<url><loc>https://ethang.dev/blog/surface-tension</loc><lastmod>2026-03-28</lastmod></url>
<url><loc>https://ethang.dev/blog/modern-web-standards-and-the-evolution-of-frontend-architecture</loc><lastmod>2026-03-21</lastmod></url>
<url><loc>https://ethang.dev/blog/from-ide-origins-to-junie-cli-and-air</loc><lastmod>2026-03-11</lastmod></url>
<url><loc>https://ethang.dev/blog/development-databases-and-the-history-of-domains</loc><lastmod>2026-03-07</lastmod></url>
<url><loc>https://ethang.dev/blog/improving-code-safety-new-eslint-rules-for-angular-signals-and-templates</loc><lastmod>2026-03-06</lastmod></url>
<url><loc>https://ethang.dev/blog/improving-accessibility-with-eslint-the-require-details-summary-rule</loc><lastmod>2026-03-05</lastmod></url>
<url><loc>https://ethang.dev/blog/global-tensions-and-tech-industry-disruptions</loc><lastmod>2026-03-01</lastmod></url>
<url><loc>https://ethang.dev/blog/cognitive-debt-and-the-fragile-state-of-tech</loc><lastmod>2026-02-28</lastmod></url>
<url><loc>https://ethang.dev/blog/systems-and-consequences</loc><lastmod>2026-02-27</lastmod></url>
<url><loc>https://ethang.dev/blog/development-jobs-trending-upward</loc><lastmod>2026-02-27</lastmod></url>
<url><loc>https://ethang.dev/blog/wtf-is-vinext</loc><lastmod>2026-02-27</lastmod></url>
<url><loc>https://ethang.dev/learn</loc></url>
<url><loc>https://ethang.dev/tips</loc></url>
<url><loc>https://ethang.dev/tips/scroll-containers</loc></url>
<url><loc>https://ethang.dev/tips/scrollbar-gutter</loc></url>
</urlset>
