<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://sebastienbillion.dev/</loc><xhtml:link rel="alternate" hreflang="en" href="https://sebastienbillion.dev/"/><xhtml:link rel="alternate" hreflang="fr" href="https://sebastienbillion.dev/fr/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sebastienbillion.dev/"/></url><url><loc>https://sebastienbillion.dev/fr/</loc><xhtml:link rel="alternate" hreflang="en" href="https://sebastienbillion.dev/"/><xhtml:link rel="alternate" hreflang="fr" href="https://sebastienbillion.dev/fr/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sebastienbillion.dev/"/></url><url><loc>https://sebastienbillion.dev/blog/</loc><xhtml:link rel="alternate" hreflang="en" href="https://sebastienbillion.dev/blog/"/><xhtml:link rel="alternate" hreflang="fr" href="https://sebastienbillion.dev/fr/blog/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sebastienbillion.dev/blog/"/></url><url><loc>https://sebastienbillion.dev/fr/blog/</loc><xhtml:link rel="alternate" hreflang="en" href="https://sebastienbillion.dev/blog/"/><xhtml:link rel="alternate" hreflang="fr" href="https://sebastienbillion.dev/fr/blog/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sebastienbillion.dev/blog/"/></url><url><loc>https://sebastienbillion.dev/blog/django-6-1-3-base64-uploads-and-memory/</loc><lastmod>2026-11-03</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sebastienbillion.dev/blog/django-6-1-3-base64-uploads-and-memory/"/><xhtml:link rel="alternate" hreflang="fr" href="https://sebastienbillion.dev/fr/blog/django-6-1-3-uploads-base64-et-memoire/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sebastienbillion.dev/blog/django-6-1-3-base64-uploads-and-memory/"/></url><url><loc>https://sebastienbillion.dev/blog/llm-api-keys-are-billing-credentials/</loc><lastmod>2026-11-03</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sebastienbillion.dev/blog/llm-api-keys-are-billing-credentials/"/><xhtml:link rel="alternate" hreflang="fr" href="https://sebastienbillion.dev/fr/blog/les-cles-d-api-llm-sont-des-identifiants-de-facturation/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sebastienbillion.dev/blog/llm-api-keys-are-billing-credentials/"/></url><url><loc>https://sebastienbillion.dev/blog/bypassing-read-only-sql-validation-in-dbhub/</loc><lastmod>2026-11-02</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sebastienbillion.dev/blog/bypassing-read-only-sql-validation-in-dbhub/"/><xhtml:link rel="alternate" hreflang="fr" href="https://sebastienbillion.dev/fr/blog/contourner-la-validation-sql-en-lecture-seule-dans-dbhub/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sebastienbillion.dev/blog/bypassing-read-only-sql-validation-in-dbhub/"/></url><url><loc>https://sebastienbillion.dev/blog/python-3-15-what-actually-changes-for-a-backend-service/</loc><lastmod>2026-11-02</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sebastienbillion.dev/blog/python-3-15-what-actually-changes-for-a-backend-service/"/><xhtml:link rel="alternate" hreflang="fr" href="https://sebastienbillion.dev/fr/blog/python-3-15-ce-qui-change-vraiment-pour-un-service-backend/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sebastienbillion.dev/blog/python-3-15-what-actually-changes-for-a-backend-service/"/></url><url><loc>https://sebastienbillion.dev/blog/two-environments-one-applicationset/</loc><lastmod>2026-11-01</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sebastienbillion.dev/blog/two-environments-one-applicationset/"/><xhtml:link rel="alternate" hreflang="fr" href="https://sebastienbillion.dev/fr/blog/deux-environnements-un-applicationset/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sebastienbillion.dev/blog/two-environments-one-applicationset/"/></url><url><loc>https://sebastienbillion.dev/blog/why-this-site-has-no-backend/</loc><lastmod>2026-11-01</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sebastienbillion.dev/blog/why-this-site-has-no-backend/"/><xhtml:link rel="alternate" hreflang="fr" href="https://sebastienbillion.dev/fr/blog/pourquoi-ce-site-n-a-pas-de-backend/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sebastienbillion.dev/blog/why-this-site-has-no-backend/"/></url><url><loc>https://sebastienbillion.dev/fr/blog/django-6-1-3-uploads-base64-et-memoire/</loc><lastmod>2026-11-03</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sebastienbillion.dev/blog/django-6-1-3-base64-uploads-and-memory/"/><xhtml:link rel="alternate" hreflang="fr" href="https://sebastienbillion.dev/fr/blog/django-6-1-3-uploads-base64-et-memoire/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sebastienbillion.dev/blog/django-6-1-3-base64-uploads-and-memory/"/></url><url><loc>https://sebastienbillion.dev/fr/blog/les-cles-d-api-llm-sont-des-identifiants-de-facturation/</loc><lastmod>2026-11-03</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sebastienbillion.dev/blog/llm-api-keys-are-billing-credentials/"/><xhtml:link rel="alternate" hreflang="fr" href="https://sebastienbillion.dev/fr/blog/les-cles-d-api-llm-sont-des-identifiants-de-facturation/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sebastienbillion.dev/blog/llm-api-keys-are-billing-credentials/"/></url><url><loc>https://sebastienbillion.dev/fr/blog/contourner-la-validation-sql-en-lecture-seule-dans-dbhub/</loc><lastmod>2026-11-02</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sebastienbillion.dev/blog/bypassing-read-only-sql-validation-in-dbhub/"/><xhtml:link rel="alternate" hreflang="fr" href="https://sebastienbillion.dev/fr/blog/contourner-la-validation-sql-en-lecture-seule-dans-dbhub/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sebastienbillion.dev/blog/bypassing-read-only-sql-validation-in-dbhub/"/></url><url><loc>https://sebastienbillion.dev/fr/blog/python-3-15-ce-qui-change-vraiment-pour-un-service-backend/</loc><lastmod>2026-11-02</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sebastienbillion.dev/blog/python-3-15-what-actually-changes-for-a-backend-service/"/><xhtml:link rel="alternate" hreflang="fr" href="https://sebastienbillion.dev/fr/blog/python-3-15-ce-qui-change-vraiment-pour-un-service-backend/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sebastienbillion.dev/blog/python-3-15-what-actually-changes-for-a-backend-service/"/></url><url><loc>https://sebastienbillion.dev/fr/blog/deux-environnements-un-applicationset/</loc><lastmod>2026-11-01</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sebastienbillion.dev/blog/two-environments-one-applicationset/"/><xhtml:link rel="alternate" hreflang="fr" href="https://sebastienbillion.dev/fr/blog/deux-environnements-un-applicationset/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sebastienbillion.dev/blog/two-environments-one-applicationset/"/></url><url><loc>https://sebastienbillion.dev/fr/blog/pourquoi-ce-site-n-a-pas-de-backend/</loc><lastmod>2026-11-01</lastmod><xhtml:link rel="alternate" hreflang="en" href="https://sebastienbillion.dev/blog/why-this-site-has-no-backend/"/><xhtml:link rel="alternate" hreflang="fr" href="https://sebastienbillion.dev/fr/blog/pourquoi-ce-site-n-a-pas-de-backend/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sebastienbillion.dev/blog/why-this-site-has-no-backend/"/></url></urlset>