<?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://ninhache.fr/en</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr" />
<lastmod>2026-08-24T15:05:23.481Z</lastmod>
<changefreq>monthly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://ninhache.fr/en/blog</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog" />
<lastmod>2026-10-29T14:24:25.338Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ninhache.fr/fr</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr" />
<lastmod>2026-08-24T15:05:23.481Z</lastmod>
<changefreq>monthly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://ninhache.fr/fr/blog</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog" />
<lastmod>2026-10-29T14:24:25.338Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://ninhache.fr/en/legal/cgu</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/legal/cgu" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/legal/cgu" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/legal/cgu" />
<changefreq>yearly</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>https://ninhache.fr/en/legal/mentions-legales</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/legal/mentions-legales" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/legal/mentions-legales" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/legal/mentions-legales" />
<changefreq>yearly</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>https://ninhache.fr/en/legal/confidentialite</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/legal/confidentialite" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/legal/confidentialite" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/legal/confidentialite" />
<changefreq>yearly</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>https://ninhache.fr/fr/legal/cgu</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/legal/cgu" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/legal/cgu" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/legal/cgu" />
<changefreq>yearly</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>https://ninhache.fr/fr/legal/mentions-legales</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/legal/mentions-legales" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/legal/mentions-legales" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/legal/mentions-legales" />
<changefreq>yearly</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>https://ninhache.fr/fr/legal/confidentialite</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/legal/confidentialite" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/legal/confidentialite" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/legal/confidentialite" />
<changefreq>yearly</changefreq>
<priority>0.2</priority>
</url>
<url>
<loc>https://ninhache.fr/en/blog/monorepo-vs-polyrepo-five-separate-repos</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/monorepo-vs-polyrepo-five-separate-repos" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/monorepo-ou-multi-repo" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/monorepo-ou-multi-repo" />
<lastmod>2026-10-29T14:24:25.338Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/fr/blog/monorepo-ou-multi-repo</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/monorepo-vs-polyrepo-five-separate-repos" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/monorepo-ou-multi-repo" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/monorepo-ou-multi-repo" />
<lastmod>2026-10-29T14:24:25.338Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/en/blog/building-wakfuli-two-years-of-decisions</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/building-wakfuli-two-years-of-decisions" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/dev-wakfuli" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/dev-wakfuli" />
<lastmod>2026-08-24T15:05:22.332Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/fr/blog/dev-wakfuli</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/building-wakfuli-two-years-of-decisions" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/dev-wakfuli" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/dev-wakfuli" />
<lastmod>2026-08-24T15:05:22.332Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/en/blog/putting-names-back-on-obfuscated-code</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/putting-names-back-on-obfuscated-code" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/remettre-des-noms-sur-du-code-obfusque" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/remettre-des-noms-sur-du-code-obfusque" />
<lastmod>2026-08-24T15:05:22.436Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/fr/blog/remettre-des-noms-sur-du-code-obfusque</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/putting-names-back-on-obfuscated-code" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/remettre-des-noms-sur-du-code-obfusque" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/remettre-des-noms-sur-du-code-obfusque" />
<lastmod>2026-08-24T15:05:22.436Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/en/blog/designing-around-data-you-dont-own</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/designing-around-data-you-dont-own" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/concevoir-autour-donnees-quon-ne-possede-pas" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/concevoir-autour-donnees-quon-ne-possede-pas" />
<lastmod>2026-08-24T15:05:22.384Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/fr/blog/concevoir-autour-donnees-quon-ne-possede-pas</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/designing-around-data-you-dont-own" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/concevoir-autour-donnees-quon-ne-possede-pas" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/concevoir-autour-donnees-quon-ne-possede-pas" />
<lastmod>2026-08-24T15:05:22.384Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/en/blog/complete-ecosystem-from-a-live-game-to-a-build</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/complete-ecosystem-from-a-live-game-to-a-build" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/ecosysteme-complet" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/ecosysteme-complet" />
<lastmod>2026-10-29T14:11:43.228Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/fr/blog/ecosysteme-complet</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/complete-ecosystem-from-a-live-game-to-a-build" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/ecosysteme-complet" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/ecosysteme-complet" />
<lastmod>2026-10-29T14:11:43.228Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/en/blog/why-i-wrote-a-90-line-image-cdn-instead-of-paying</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/why-i-wrote-a-90-line-image-cdn-instead-of-paying" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/cdn-images-90-lignes" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/cdn-images-90-lignes" />
<lastmod>2026-08-24T15:05:22.428Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/fr/blog/cdn-images-90-lignes</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/why-i-wrote-a-90-line-image-cdn-instead-of-paying" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/cdn-images-90-lignes" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/cdn-images-90-lignes" />
<lastmod>2026-08-24T15:05:22.428Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/en/blog/color-similarity-search-cube-gist-and-a-hand-rolled-lab</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/color-similarity-search-cube-gist-and-a-hand-rolled-lab" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/recherche-couleur-lab-gist" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/recherche-couleur-lab-gist" />
<lastmod>2026-10-29T12:04:58.326Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/fr/blog/recherche-couleur-lab-gist</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/color-similarity-search-cube-gist-and-a-hand-rolled-lab" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/recherche-couleur-lab-gist" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/recherche-couleur-lab-gist" />
<lastmod>2026-10-29T12:04:58.326Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/en/blog/zero-downtime-data-reseeding-with-a-custom-command</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/zero-downtime-data-reseeding-with-a-custom-command" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/reseed-sans-downtime" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/reseed-sans-downtime" />
<lastmod>2026-08-24T15:05:22.411Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/fr/blog/reseed-sans-downtime</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/zero-downtime-data-reseeding-with-a-custom-command" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/reseed-sans-downtime" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/reseed-sans-downtime" />
<lastmod>2026-08-24T15:05:22.411Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/en/blog/public-private-data-tier-from-a-single-pipeline</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/public-private-data-tier-from-a-single-pipeline" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/tiers-donnees-public-prive" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/tiers-donnees-public-prive" />
<lastmod>2026-10-29T13:21:04.462Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/fr/blog/tiers-donnees-public-prive</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/public-private-data-tier-from-a-single-pipeline" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/tiers-donnees-public-prive" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/tiers-donnees-public-prive" />
<lastmod>2026-10-29T13:21:04.462Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/en/blog/hexagonal-architecture-for-real-not-in-theory</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/hexagonal-architecture-for-real-not-in-theory" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/hexagonal-en-pratique" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/hexagonal-en-pratique" />
<lastmod>2026-08-24T15:05:22.368Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/fr/blog/hexagonal-en-pratique</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/hexagonal-architecture-for-real-not-in-theory" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/hexagonal-en-pratique" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/hexagonal-en-pratique" />
<lastmod>2026-08-24T15:05:22.368Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/en/blog/rebuilding-a-tooltip-template-language</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/rebuilding-a-tooltip-template-language" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/reverse-dsl-tooltips" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/reverse-dsl-tooltips" />
<lastmod>2026-08-24T15:05:22.376Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/fr/blog/reverse-dsl-tooltips</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/rebuilding-a-tooltip-template-language" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/reverse-dsl-tooltips" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/reverse-dsl-tooltips" />
<lastmod>2026-08-24T15:05:22.376Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/en/blog/cpu-software-rasterizer-that-has-to-match-a-gpu-pixel</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/cpu-software-rasterizer-that-has-to-match-a-gpu-pixel" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/rasterizer-cpu-vs-gpu" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/rasterizer-cpu-vs-gpu" />
<lastmod>2026-08-24T15:05:22.358Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/fr/blog/rasterizer-cpu-vs-gpu</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/cpu-software-rasterizer-that-has-to-match-a-gpu-pixel" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/rasterizer-cpu-vs-gpu" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/rasterizer-cpu-vs-gpu" />
<lastmod>2026-08-24T15:05:22.358Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/en/blog/tracking-a-proprietary-mmos-binary-format-across</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/tracking-a-proprietary-mmos-binary-format-across" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/suivre-format-binaire-mmo" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/suivre-format-binaire-mmo" />
<lastmod>2026-08-24T15:05:22.350Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://ninhache.fr/fr/blog/suivre-format-binaire-mmo</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://ninhache.fr/en/blog/tracking-a-proprietary-mmos-binary-format-across" />
<xhtml:link rel="alternate" hreflang="fr" href="https://ninhache.fr/fr/blog/suivre-format-binaire-mmo" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://ninhache.fr/fr/blog/suivre-format-binaire-mmo" />
<lastmod>2026-08-24T15:05:22.350Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
</urlset>
