<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://www.matthewswong.com/en/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/" />
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/experience/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/experience/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/experience/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/experience/" />
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/education/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/education/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/education/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/education/" />
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/projects/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/" />
<image:image>
<image:loc>https://www.matthewswong.com/AiFeeds.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/ReviewCI.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/jid-web.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/parcel-cirebon.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/tiktok-agency.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/shibui-lp.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/STADPASS%2520Project.jpeg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/Observer%2520KPU%2520Project.jpeg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/certifications/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/certifications/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/certifications/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/certifications/" />
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/hackathons/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/hackathons/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/hackathons/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/hackathons/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/hackathon/PWC-Hackathon.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/hackathon/web3-training-documentation.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/hackathon/AI-Hackathon1.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/hackathon/Pwc-hackathon-2024.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/hackathon/commsult-software-workshop.jpeg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/hackathon/web3-networking-event.jpeg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/Blockchain1.jpeg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/Symposium1.jpeg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/" />
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/contact/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/contact/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/contact/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/contact/" />
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/claude-opus-4-7-whats-new/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/claude-opus-4-7-whats-new/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/claude-opus-4-7-whats-new/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/claude-opus-4-7-whats-new/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/claude-opus-4-7.png</image:loc>
</image:image>
<lastmod>2026-04-16T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/loki-prometheus-observability/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/loki-prometheus-observability/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/loki-prometheus-observability/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/loki-prometheus-observability/" />
<image:image>
<image:loc>https://www.matthewswong.com/monitoring-blog.jpg</image:loc>
</image:image>
<lastmod>2025-01-15T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/building-saas-ai-gymbro/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/building-saas-ai-gymbro/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/building-saas-ai-gymbro/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/building-saas-ai-gymbro/" />
<image:image>
<image:loc>https://www.matthewswong.com/my-product.jpg</image:loc>
</image:image>
<lastmod>2024-09-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/life-at-swiss-german-university/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/life-at-swiss-german-university/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/life-at-swiss-german-university/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/life-at-swiss-german-university/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/sgu-location.webp</image:loc>
</image:image>
<lastmod>2024-06-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/pwc-capture-the-flag/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/pwc-capture-the-flag/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/pwc-capture-the-flag/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/pwc-capture-the-flag/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/hackathon/PWC-Hackathon.jpg</image:loc>
</image:image>
<lastmod>2024-08-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/ci-cd-pipeline-github-actions/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ci-cd-pipeline-github-actions/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ci-cd-pipeline-github-actions/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ci-cd-pipeline-github-actions/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ci-cd-github-actions.jpg</image:loc>
</image:image>
<lastmod>2024-07-15T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/kubernetes-deployment-strategies/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/kubernetes-deployment-strategies/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/kubernetes-deployment-strategies/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/kubernetes-deployment-strategies/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/kubernetes-deployment.jpg</image:loc>
</image:image>
<lastmod>2024-08-05T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/docker-containerization-best-practices/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/docker-containerization-best-practices/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/docker-containerization-best-practices/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/docker-containerization-best-practices/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/docker-best-practices.jpg</image:loc>
</image:image>
<lastmod>2024-08-22T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/docker-swarm-orchestration/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/docker-swarm-orchestration/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/docker-swarm-orchestration/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/docker-swarm-orchestration/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/docker-swarm.jpg</image:loc>
</image:image>
<lastmod>2024-09-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/ansible-automation-infrastructure/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ansible-automation-infrastructure/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ansible-automation-infrastructure/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ansible-automation-infrastructure/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ansible-automation.jpg</image:loc>
</image:image>
<lastmod>2024-09-28T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/infrastructure-as-code-terraform/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/infrastructure-as-code-terraform/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/infrastructure-as-code-terraform/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/infrastructure-as-code-terraform/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/terraform-iac.jpg</image:loc>
</image:image>
<lastmod>2024-10-14T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/gitops-argocd-flux/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/gitops-argocd-flux/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/gitops-argocd-flux/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/gitops-argocd-flux/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/gitops-argocd.jpg</image:loc>
</image:image>
<lastmod>2024-10-30T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/site-reliability-engineering-sre/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/site-reliability-engineering-sre/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/site-reliability-engineering-sre/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/site-reliability-engineering-sre/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/sre-reliability.jpg</image:loc>
</image:image>
<lastmod>2024-11-12T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/devsecops-security-pipeline/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/devsecops-security-pipeline/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/devsecops-security-pipeline/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/devsecops-security-pipeline/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/devsecops.jpg</image:loc>
</image:image>
<lastmod>2024-11-25T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/cloudflare-r2-gcs-egress/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cloudflare-r2-gcs-egress/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cloudflare-r2-gcs-egress/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cloudflare-r2-gcs-egress/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cloudflare-r2.jpg</image:loc>
</image:image>
<lastmod>2024-12-09T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/clean-code-principles/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/clean-code-principles/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/clean-code-principles/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/clean-code-principles/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/clean-code.jpg</image:loc>
</image:image>
<lastmod>2024-12-20T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/microservices-vs-monolith/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/microservices-vs-monolith/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/microservices-vs-monolith/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/microservices-vs-monolith/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/microservices.jpg</image:loc>
</image:image>
<lastmod>2025-01-08T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/api-design-rest-graphql/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/api-design-rest-graphql/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/api-design-rest-graphql/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/api-design-rest-graphql/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/api-rest-graphql.jpg</image:loc>
</image:image>
<lastmod>2025-01-22T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/test-driven-development-tdd/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/test-driven-development-tdd/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/test-driven-development-tdd/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/test-driven-development-tdd/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/test-driven-dev.jpg</image:loc>
</image:image>
<lastmod>2025-02-05T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/software-architecture-patterns/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/software-architecture-patterns/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/software-architecture-patterns/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/software-architecture-patterns/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/software-architecture.jpg</image:loc>
</image:image>
<lastmod>2025-02-19T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/database-optimization-postgresql/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/database-optimization-postgresql/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/database-optimization-postgresql/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/database-optimization-postgresql/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/postgres-optimization.jpg</image:loc>
</image:image>
<lastmod>2025-03-04T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/nextjs-performance-optimization/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextjs-performance-optimization/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextjs-performance-optimization/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextjs-performance-optimization/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextjs-performance.jpg</image:loc>
</image:image>
<lastmod>2025-03-18T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-implementation-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-implementation-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-implementation-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-implementation-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-implementation.jpg</image:loc>
</image:image>
<lastmod>2025-04-02T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-digital-transformation/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-digital-transformation/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-digital-transformation/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-digital-transformation/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-digital-transform.jpg</image:loc>
</image:image>
<lastmod>2025-04-16T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-integration-api-strategy/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-integration-api-strategy/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-integration-api-strategy/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-integration-api-strategy/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-integration-api.jpg</image:loc>
</image:image>
<lastmod>2025-05-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-customization-vs-configuration/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-customization-vs-configuration/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-customization-vs-configuration/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-customization-vs-configuration/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-customization.jpg</image:loc>
</image:image>
<lastmod>2025-05-20T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-data-migration-strategy/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-data-migration-strategy/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-data-migration-strategy/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-data-migration-strategy/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-data-migration.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/cloudflare-email-inbound-smtp2go/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cloudflare-email-inbound-smtp2go/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cloudflare-email-inbound-smtp2go/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cloudflare-email-inbound-smtp2go/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cloudflare-email.jpg</image:loc>
</image:image>
<lastmod>2025-06-25T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/pusat-data-nasional-pdn-cloud-developer-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/pusat-data-nasional-pdn-cloud-developer-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/pusat-data-nasional-pdn-cloud-developer-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/pusat-data-nasional-pdn-cloud-developer-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/pusat-data-nasional-pdn-cloud-developer-guide.jpg</image:loc>
</image:image>
<lastmod>2025-10-08T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/azure-indonesia-central-region-deployment-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/azure-indonesia-central-region-deployment-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/azure-indonesia-central-region-deployment-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/azure-indonesia-central-region-deployment-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/azure-indonesia-central-region-deployment-guide.jpg</image:loc>
</image:image>
<lastmod>2025-11-12T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/indonesia-open-banking-snap-api-qris-developer-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/indonesia-open-banking-snap-api-qris-developer-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/indonesia-open-banking-snap-api-qris-developer-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/indonesia-open-banking-snap-api-qris-developer-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/indonesia-open-banking-snap-api-qris-developer-guide.jpg</image:loc>
</image:image>
<lastmod>2025-12-03T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/uu-pdp-compliance-developer-guide-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/uu-pdp-compliance-developer-guide-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/uu-pdp-compliance-developer-guide-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/uu-pdp-compliance-developer-guide-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/uu-pdp-compliance-developer-guide-indonesia.jpg</image:loc>
</image:image>
<lastmod>2026-01-14T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/finops-cloud-cost-optimization-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/finops-cloud-cost-optimization-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/finops-cloud-cost-optimization-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/finops-cloud-cost-optimization-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/finops-cloud-cost-optimization-indonesia.jpg</image:loc>
</image:image>
<lastmod>2026-02-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/odoo-erp-custom-module-development-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/odoo-erp-custom-module-development-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/odoo-erp-custom-module-development-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/odoo-erp-custom-module-development-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/odoo-erp-custom-module-development-indonesia.jpg</image:loc>
</image:image>
<lastmod>2026-02-25T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/building-production-rag-llm-applications/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/building-production-rag-llm-applications/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/building-production-rag-llm-applications/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/building-production-rag-llm-applications/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/building-production-rag-llm-applications.jpg</image:loc>
</image:image>
<lastmod>2026-03-12T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/kubernetes-k3s-production-lightweight-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/kubernetes-k3s-production-lightweight-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/kubernetes-k3s-production-lightweight-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/kubernetes-k3s-production-lightweight-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/kubernetes-k3s-production-lightweight-indonesia.jpg</image:loc>
</image:image>
<lastmod>2026-03-28T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/platform-engineering-internal-developer-platform/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/platform-engineering-internal-developer-platform/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/platform-engineering-internal-developer-platform/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/platform-engineering-internal-developer-platform/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/platform-engineering-internal-developer-platform.jpg</image:loc>
</image:image>
<lastmod>2026-04-15T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/zero-trust-security-architecture-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/zero-trust-security-architecture-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/zero-trust-security-architecture-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/zero-trust-security-architecture-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/zero-trust-security-architecture-indonesia.jpg</image:loc>
</image:image>
<lastmod>2026-05-05T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/production-landing-page-core-web-vitals/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/production-landing-page-core-web-vitals/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/production-landing-page-core-web-vitals/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/production-landing-page-core-web-vitals/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/production-landing-page-core-web-vitals.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/typescript-project-structure-real-world/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/typescript-project-structure-real-world/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/typescript-project-structure-real-world/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/typescript-project-structure-real-world/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/typescript-project-structure-real-world.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/figma-to-nextjs-component-workflow/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/figma-to-nextjs-component-workflow/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/figma-to-nextjs-component-workflow/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/figma-to-nextjs-component-workflow/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/figma-to-nextjs-component-workflow.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/nextjs-i18n-next-intl-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextjs-i18n-next-intl-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextjs-i18n-next-intl-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextjs-i18n-next-intl-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextjs-i18n-next-intl-guide.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/balancing-devops-erp-webdev-engineer/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/balancing-devops-erp-webdev-engineer/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/balancing-devops-erp-webdev-engineer/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/balancing-devops-erp-webdev-engineer/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/balancing-devops-erp-webdev-engineer.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/hermes-ai-agent-nousresearch-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/hermes-ai-agent-nousresearch-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/hermes-ai-agent-nousresearch-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/hermes-ai-agent-nousresearch-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/hermes-ai-agent-nousresearch-guide.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/google-cloud-vs-digital-ocean/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/google-cloud-vs-digital-ocean/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/google-cloud-vs-digital-ocean/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/google-cloud-vs-digital-ocean/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/google-cloud-vs-digital-ocean.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/grafana-prometheus-monitoring-vps/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/grafana-prometheus-monitoring-vps/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/grafana-prometheus-monitoring-vps/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/grafana-prometheus-monitoring-vps/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/grafana-prometheus-monitoring-vps.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/zero-downtime-nginx-blue-green-deploy/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/zero-downtime-nginx-blue-green-deploy/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/zero-downtime-nginx-blue-green-deploy/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/zero-downtime-nginx-blue-green-deploy/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/zero-downtime-nginx-blue-green-deploy.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/automate-ssl-certbot-nginx/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/automate-ssl-certbot-nginx/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/automate-ssl-certbot-nginx/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/automate-ssl-certbot-nginx/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/automate-ssl-certbot-nginx.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/self-hosted-observability-digital-ocean/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/self-hosted-observability-digital-ocean/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/self-hosted-observability-digital-ocean/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/self-hosted-observability-digital-ocean/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/self-hosted-observability-digital-ocean.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/kubernetes-solo-developer-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/kubernetes-solo-developer-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/kubernetes-solo-developer-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/kubernetes-solo-developer-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/kubernetes-solo-developer-guide.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/docker-workflow-every-project/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/docker-workflow-every-project/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/docker-workflow-every-project/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/docker-workflow-every-project/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/docker-workflow-every-project.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/google-cloud-managed-services-vs-raw-compute/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/google-cloud-managed-services-vs-raw-compute/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/google-cloud-managed-services-vs-raw-compute/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/google-cloud-managed-services-vs-raw-compute/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/google-cloud-managed-services-vs-raw-compute.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-hr-leave-approval-flow/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-hr-leave-approval-flow/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-hr-leave-approval-flow/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-hr-leave-approval-flow/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-hr-leave-approval-flow.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/accounts-payable-multi-approval-nestjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/accounts-payable-multi-approval-nestjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/accounts-payable-multi-approval-nestjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/accounts-payable-multi-approval-nestjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/accounts-payable-multi-approval-nestjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-invoice-pdf-generation/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-invoice-pdf-generation/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-invoice-pdf-generation/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-invoice-pdf-generation/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-invoice-pdf-generation.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-email-automation/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-email-automation/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-email-automation/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-email-automation/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-email-automation.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/why-erp-fails-indonesian-businesses/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/why-erp-fails-indonesian-businesses/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/why-erp-fails-indonesian-businesses/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/why-erp-fails-indonesian-businesses/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/why-erp-fails-indonesian-businesses.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/accounts-receivable-automation-erp/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/accounts-receivable-automation-erp/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/accounts-receivable-automation-erp/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/accounts-receivable-automation-erp/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/accounts-receivable-automation-erp.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/workflow-engine-react-nestjs-postgresql/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/workflow-engine-react-nestjs-postgresql/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/workflow-engine-react-nestjs-postgresql/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/workflow-engine-react-nestjs-postgresql/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/workflow-engine-react-nestjs-postgresql.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/excel-to-custom-erp-migration/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/excel-to-custom-erp-migration/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/excel-to-custom-erp-migration/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/excel-to-custom-erp-migration/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/excel-to-custom-erp-migration.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-role-based-access-control/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-role-based-access-control/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-role-based-access-control/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-role-based-access-control/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-role-based-access-control.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-audit-trail-activity-log/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-audit-trail-activity-log/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-audit-trail-activity-log/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-audit-trail-activity-log/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-audit-trail-activity-log.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/nextjs-project-structure-scalable/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextjs-project-structure-scalable/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextjs-project-structure-scalable/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextjs-project-structure-scalable/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextjs-project-structure-scalable.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/build-saas-30-days-nextjs-tailwind/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/build-saas-30-days-nextjs-tailwind/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/build-saas-30-days-nextjs-tailwind/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/build-saas-30-days-nextjs-tailwind/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/build-saas-30-days-nextjs-tailwind.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/type-safe-api-nestjs-prisma/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/type-safe-api-nestjs-prisma/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/type-safe-api-nestjs-prisma/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/type-safe-api-nestjs-prisma/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/type-safe-api-nestjs-prisma.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/seo-first-nextjs-checklist/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/seo-first-nextjs-checklist/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/seo-first-nextjs-checklist/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/seo-first-nextjs-checklist/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/seo-first-nextjs-checklist.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/react-query-vs-swr/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/react-query-vs-swr/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/react-query-vs-swr/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/react-query-vs-swr/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/react-query-vs-swr.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/mcp-auth-cerbos-authorization/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/mcp-auth-cerbos-authorization/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/mcp-auth-cerbos-authorization/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/mcp-auth-cerbos-authorization/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/mcp-auth-cerbos-authorization.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/real-user-monitoring-web-performance/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/real-user-monitoring-web-performance/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/real-user-monitoring-web-performance/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/real-user-monitoring-web-performance/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/real-user-monitoring-web-performance.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/image-optimization-nextjs-webp-avif/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/image-optimization-nextjs-webp-avif/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/image-optimization-nextjs-webp-avif/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/image-optimization-nextjs-webp-avif/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/image-optimization-nextjs-webp-avif.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/nextjs-caching-isr-ssr-strategy/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextjs-caching-isr-ssr-strategy/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextjs-caching-isr-ssr-strategy/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextjs-caching-isr-ssr-strategy/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextjs-caching-isr-ssr-strategy.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/database-connection-pooling-nestjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/database-connection-pooling-nestjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/database-connection-pooling-nestjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/database-connection-pooling-nestjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/database-connection-pooling-nestjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/postgresql-full-text-search-no-elasticsearch/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/postgresql-full-text-search-no-elasticsearch/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/postgresql-full-text-search-no-elasticsearch/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/postgresql-full-text-search-no-elasticsearch/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/postgresql-full-text-search-no-elasticsearch.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/cursor-vs-offset-pagination/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cursor-vs-offset-pagination/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cursor-vs-offset-pagination/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cursor-vs-offset-pagination/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cursor-vs-offset-pagination.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/api-versioning-nestjs-strategy/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/api-versioning-nestjs-strategy/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/api-versioning-nestjs-strategy/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/api-versioning-nestjs-strategy/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/api-versioning-nestjs-strategy.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/graphql-vs-rest-2025/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/graphql-vs-rest-2025/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/graphql-vs-rest-2025/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/graphql-vs-rest-2025/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/graphql-vs-rest-2025.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/openapi-swagger-nestjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/openapi-swagger-nestjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/openapi-swagger-nestjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/openapi-swagger-nestjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/openapi-swagger-nestjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/environment-variables-secrets-nextjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/environment-variables-secrets-nextjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/environment-variables-secrets-nextjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/environment-variables-secrets-nextjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/environment-variables-secrets-nextjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/e2e-testing-playwright-nextjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/e2e-testing-playwright-nextjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/e2e-testing-playwright-nextjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/e2e-testing-playwright-nextjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/e2e-testing-playwright-nextjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/accessibility-audit-nextjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/accessibility-audit-nextjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/accessibility-audit-nextjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/accessibility-audit-nextjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/accessibility-audit-nextjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/npm-dependency-management-audit/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/npm-dependency-management-audit/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/npm-dependency-management-audit/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/npm-dependency-management-audit/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/npm-dependency-management-audit.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/security-headers-nextjs-configuration/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/security-headers-nextjs-configuration/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/security-headers-nextjs-configuration/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/security-headers-nextjs-configuration/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/security-headers-nextjs-configuration.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/dark-mode-nextjs-system-aware/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/dark-mode-nextjs-system-aware/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/dark-mode-nextjs-system-aware/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/dark-mode-nextjs-system-aware/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/dark-mode-nextjs-system-aware.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/event-driven-kafka-nestjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/event-driven-kafka-nestjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/event-driven-kafka-nestjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/event-driven-kafka-nestjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/event-driven-kafka-nestjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/microservices-grpc-vs-rest-internal/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/microservices-grpc-vs-rest-internal/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/microservices-grpc-vs-rest-internal/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/microservices-grpc-vs-rest-internal/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/microservices-grpc-vs-rest-internal.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/postgresql-sharding-strategy/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/postgresql-sharding-strategy/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/postgresql-sharding-strategy/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/postgresql-sharding-strategy/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/postgresql-sharding-strategy.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/message-queue-rabbitmq-bullmq/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/message-queue-rabbitmq-bullmq/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/message-queue-rabbitmq-bullmq/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/message-queue-rabbitmq-bullmq/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/message-queue-rabbitmq-bullmq.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/api-gateway-pattern-nestjs-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/api-gateway-pattern-nestjs-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/api-gateway-pattern-nestjs-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/api-gateway-pattern-nestjs-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/api-gateway-pattern-nestjs-guide.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/distributed-tracing-opentelemetry/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/distributed-tracing-opentelemetry/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/distributed-tracing-opentelemetry/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/distributed-tracing-opentelemetry/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/distributed-tracing-opentelemetry.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/circuit-breaker-nestjs-pattern/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/circuit-breaker-nestjs-pattern/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/circuit-breaker-nestjs-pattern/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/circuit-breaker-nestjs-pattern/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/circuit-breaker-nestjs-pattern.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/cqrs-event-sourcing-nestjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cqrs-event-sourcing-nestjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cqrs-event-sourcing-nestjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cqrs-event-sourcing-nestjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cqrs-event-sourcing-nestjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/websocket-scaling-redis-pubsub/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/websocket-scaling-redis-pubsub/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/websocket-scaling-redis-pubsub/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/websocket-scaling-redis-pubsub/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/websocket-scaling-redis-pubsub.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/nextjs-testing-vitest-jest/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextjs-testing-vitest-jest/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextjs-testing-vitest-jest/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextjs-testing-vitest-jest/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextjs-testing-vitest-jest.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/storybook-component-documentation/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/storybook-component-documentation/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/storybook-component-documentation/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/storybook-component-documentation/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/storybook-component-documentation.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/code-review-process-developer/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/code-review-process-developer/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/code-review-process-developer/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/code-review-process-developer/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/code-review-process-developer.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/technical-debt-management/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/technical-debt-management/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/technical-debt-management/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/technical-debt-management/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/technical-debt-management.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/developer-documentation-culture/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/developer-documentation-culture/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/developer-documentation-culture/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/developer-documentation-culture/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/developer-documentation-culture.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/open-source-license-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/open-source-license-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/open-source-license-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/open-source-license-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/open-source-license-guide.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-purchase-order-approval/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-purchase-order-approval/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-purchase-order-approval/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-purchase-order-approval/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-purchase-order-approval.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-inventory-real-time-tracking/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-inventory-real-time-tracking/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-inventory-real-time-tracking/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-inventory-real-time-tracking/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-inventory-real-time-tracking.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-financial-reporting-automation/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-financial-reporting-automation/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-financial-reporting-automation/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-financial-reporting-automation/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-financial-reporting-automation.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-multi-currency-implementation/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-multi-currency-implementation/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-multi-currency-implementation/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-multi-currency-implementation/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-multi-currency-implementation.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-vendor-supplier-portal/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-vendor-supplier-portal/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-vendor-supplier-portal/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-vendor-supplier-portal/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-vendor-supplier-portal.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-project-costing-time-tracking/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-project-costing-time-tracking/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-project-costing-time-tracking/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-project-costing-time-tracking/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-project-costing-time-tracking.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-payroll-integration-hr/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-payroll-integration-hr/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-payroll-integration-hr/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-payroll-integration-hr/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-payroll-integration-hr.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-customer-portal-b2b/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-customer-portal-b2b/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-customer-portal-b2b/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-customer-portal-b2b/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-customer-portal-b2b.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-third-party-api-integration/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-third-party-api-integration/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-third-party-api-integration/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-third-party-api-integration/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-third-party-api-integration.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-kpi-dashboard-executives/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-kpi-dashboard-executives/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-kpi-dashboard-executives/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-kpi-dashboard-executives/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-kpi-dashboard-executives.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-document-management/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-document-management/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-document-management/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-document-management/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-document-management.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-warehouse-barcode-scanning/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-warehouse-barcode-scanning/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-warehouse-barcode-scanning/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-warehouse-barcode-scanning/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-warehouse-barcode-scanning.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-tax-compliance-indonesia-ppn/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-tax-compliance-indonesia-ppn/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-tax-compliance-indonesia-ppn/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-tax-compliance-indonesia-ppn/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-tax-compliance-indonesia-ppn.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-budget-variance-analysis/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-budget-variance-analysis/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-budget-variance-analysis/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-budget-variance-analysis/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-budget-variance-analysis.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-crm-integration-sales/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-crm-integration-sales/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-crm-integration-sales/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-crm-integration-sales/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-crm-integration-sales.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/odoo-vs-sap-vs-custom-erp/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/odoo-vs-sap-vs-custom-erp/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/odoo-vs-sap-vs-custom-erp/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/odoo-vs-sap-vs-custom-erp/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/odoo-vs-sap-vs-custom-erp.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-implementation-timeline-reality/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-implementation-timeline-reality/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-implementation-timeline-reality/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-implementation-timeline-reality/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-implementation-timeline-reality.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-change-management-employees/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-change-management-employees/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-change-management-employees/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-change-management-employees/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-change-management-employees.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-data-quality-migration-prep/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-data-quality-migration-prep/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-data-quality-migration-prep/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-data-quality-migration-prep/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-data-quality-migration-prep.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-roi-real-numbers/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-roi-real-numbers/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-roi-real-numbers/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-roi-real-numbers/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-roi-real-numbers.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-customization-cost-benefit-analysis/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-customization-cost-benefit-analysis/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-customization-cost-benefit-analysis/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-customization-cost-benefit-analysis/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-customization-cost-benefit-analysis.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-go-live-checklist/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-go-live-checklist/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-go-live-checklist/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-go-live-checklist/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-go-live-checklist.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-user-training-strategy/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-user-training-strategy/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-user-training-strategy/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-user-training-strategy/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-user-training-strategy.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-post-go-live-90-days/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-post-go-live-90-days/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-post-go-live-90-days/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-post-go-live-90-days/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-post-go-live-90-days.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-process-mapping-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-process-mapping-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-process-mapping-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-process-mapping-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-process-mapping-guide.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-security-permissions-design/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-security-permissions-design/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-security-permissions-design/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-security-permissions-design/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-security-permissions-design.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-mobile-pwa-field-workers/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-mobile-pwa-field-workers/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-mobile-pwa-field-workers/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-mobile-pwa-field-workers/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-mobile-pwa-field-workers.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-legacy-access-db-migration/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-legacy-access-db-migration/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-legacy-access-db-migration/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-legacy-access-db-migration/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-legacy-access-db-migration.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-cloud-vs-on-premise-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-cloud-vs-on-premise-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-cloud-vs-on-premise-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-cloud-vs-on-premise-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-cloud-vs-on-premise-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-middleware-integration-design/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-middleware-integration-design/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-middleware-integration-design/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-middleware-integration-design/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-middleware-integration-design.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/nextjs-app-router-migration-lessons/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextjs-app-router-migration-lessons/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextjs-app-router-migration-lessons/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextjs-app-router-migration-lessons/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextjs-app-router-migration-lessons.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/tailwindcss-vs-css-modules/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/tailwindcss-vs-css-modules/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/tailwindcss-vs-css-modules/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/tailwindcss-vs-css-modules/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/tailwindcss-vs-css-modules.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/prisma-vs-typeorm-nestjs-comparison/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/prisma-vs-typeorm-nestjs-comparison/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/prisma-vs-typeorm-nestjs-comparison/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/prisma-vs-typeorm-nestjs-comparison/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/prisma-vs-typeorm-nestjs-comparison.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/nextauth-vs-clerk-comparison/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextauth-vs-clerk-comparison/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextauth-vs-clerk-comparison/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextauth-vs-clerk-comparison/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextauth-vs-clerk-comparison.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/websockets-nestjs-realtime/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/websockets-nestjs-realtime/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/websockets-nestjs-realtime/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/websockets-nestjs-realtime/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/websockets-nestjs-realtime.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/file-upload-s3-nextjs-production/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/file-upload-s3-nextjs-production/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/file-upload-s3-nextjs-production/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/file-upload-s3-nextjs-production/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/file-upload-s3-nextjs-production.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/resend-vs-nodemailer-email/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/resend-vs-nodemailer-email/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/resend-vs-nodemailer-email/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/resend-vs-nodemailer-email/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/resend-vs-nodemailer-email.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/nextjs-api-routes-vs-nestjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextjs-api-routes-vs-nestjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextjs-api-routes-vs-nestjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextjs-api-routes-vs-nestjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextjs-api-routes-vs-nestjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/typescript-strict-mode-production/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/typescript-strict-mode-production/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/typescript-strict-mode-production/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/typescript-strict-mode-production/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/typescript-strict-mode-production.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/react-server-components-usage/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/react-server-components-usage/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/react-server-components-usage/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/react-server-components-usage/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/react-server-components-usage.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/nextjs-middleware-real-use-cases/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextjs-middleware-real-use-cases/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextjs-middleware-real-use-cases/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextjs-middleware-real-use-cases/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextjs-middleware-real-use-cases.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/framer-motion-vs-css-animations/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/framer-motion-vs-css-animations/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/framer-motion-vs-css-animations/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/framer-motion-vs-css-animations/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/framer-motion-vs-css-animations.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/monorepo-turborepo-setup/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/monorepo-turborepo-setup/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/monorepo-turborepo-setup/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/monorepo-turborepo-setup/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/monorepo-turborepo-setup.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/api-rate-limiting-nestjs-redis/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/api-rate-limiting-nestjs-redis/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/api-rate-limiting-nestjs-redis/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/api-rate-limiting-nestjs-redis/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/api-rate-limiting-nestjs-redis.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/nextjs-error-handling-patterns/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextjs-error-handling-patterns/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextjs-error-handling-patterns/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextjs-error-handling-patterns/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextjs-error-handling-patterns.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/llm-api-cost-optimization/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/llm-api-cost-optimization/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/llm-api-cost-optimization/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/llm-api-cost-optimization/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/llm-api-cost-optimization.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/ai-agent-workflow-automation-2025/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ai-agent-workflow-automation-2025/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ai-agent-workflow-automation-2025/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ai-agent-workflow-automation-2025/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ai-agent-workflow-automation-2025.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/rag-pipeline-production-lessons/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/rag-pipeline-production-lessons/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/rag-pipeline-production-lessons/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/rag-pipeline-production-lessons/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/rag-pipeline-production-lessons.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/claude-api-tool-use-production/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/claude-api-tool-use-production/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/claude-api-tool-use-production/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/claude-api-tool-use-production/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/claude-api-tool-use-production.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/openai-vs-anthropic-vs-gemini-developers/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/openai-vs-anthropic-vs-gemini-developers/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/openai-vs-anthropic-vs-gemini-developers/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/openai-vs-anthropic-vs-gemini-developers/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/openai-vs-anthropic-vs-gemini-developers.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/langchain-vs-custom-llm/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/langchain-vs-custom-llm/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/langchain-vs-custom-llm/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/langchain-vs-custom-llm/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/langchain-vs-custom-llm.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/ai-code-review-github-actions/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ai-code-review-github-actions/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ai-code-review-github-actions/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ai-code-review-github-actions/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ai-code-review-github-actions.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/pgvector-vs-pinecone-comparison/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/pgvector-vs-pinecone-comparison/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/pgvector-vs-pinecone-comparison/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/pgvector-vs-pinecone-comparison/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/pgvector-vs-pinecone-comparison.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/prompt-engineering-production/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/prompt-engineering-production/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/prompt-engineering-production/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/prompt-engineering-production/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/prompt-engineering-production.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/ai-content-generation-quality/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ai-content-generation-quality/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ai-content-generation-quality/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ai-content-generation-quality/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ai-content-generation-quality.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/freelance-vs-fulltime-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/freelance-vs-fulltime-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/freelance-vs-fulltime-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/freelance-vs-fulltime-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/freelance-vs-fulltime-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/portfolio-junior-developer-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/portfolio-junior-developer-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/portfolio-junior-developer-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/portfolio-junior-developer-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/portfolio-junior-developer-guide.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/developer-productivity-tools-2025/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/developer-productivity-tools-2025/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/developer-productivity-tools-2025/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/developer-productivity-tools-2025/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/developer-productivity-tools-2025.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/learning-new-tech-stack-efficiently/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/learning-new-tech-stack-efficiently/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/learning-new-tech-stack-efficiently/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/learning-new-tech-stack-efficiently/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/learning-new-tech-stack-efficiently.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/open-source-contribution-career/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/open-source-contribution-career/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/open-source-contribution-career/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/open-source-contribution-career/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/open-source-contribution-career.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/ai-prompt-injection-defense/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ai-prompt-injection-defense/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ai-prompt-injection-defense/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ai-prompt-injection-defense/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ai-prompt-injection-defense.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/mcp-server-development-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/mcp-server-development-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/mcp-server-development-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/mcp-server-development-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/mcp-server-development-guide.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/ai-agent-memory-persistence-patterns/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ai-agent-memory-persistence-patterns/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ai-agent-memory-persistence-patterns/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ai-agent-memory-persistence-patterns/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ai-agent-memory-persistence-patterns.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/local-llm-ollama-production/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/local-llm-ollama-production/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/local-llm-ollama-production/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/local-llm-ollama-production/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/local-llm-ollama-production.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/ai-observability-llm-logging/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ai-observability-llm-logging/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ai-observability-llm-logging/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ai-observability-llm-logging/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ai-observability-llm-logging.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/function-calling-openai-anthropic/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/function-calling-openai-anthropic/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/function-calling-openai-anthropic/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/function-calling-openai-anthropic/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/function-calling-openai-anthropic.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/owasp-top-10-developer-checklist/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/owasp-top-10-developer-checklist/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/owasp-top-10-developer-checklist/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/owasp-top-10-developer-checklist/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/owasp-top-10-developer-checklist.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/jwt-vs-session-auth-production/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/jwt-vs-session-auth-production/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/jwt-vs-session-auth-production/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/jwt-vs-session-auth-production/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/jwt-vs-session-auth-production.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/sql-injection-orm-prevention/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/sql-injection-orm-prevention/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/sql-injection-orm-prevention/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/sql-injection-orm-prevention/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/sql-injection-orm-prevention.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/cors-configuration-nextjs-nestjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cors-configuration-nextjs-nestjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cors-configuration-nextjs-nestjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cors-configuration-nextjs-nestjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cors-configuration-nextjs-nestjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/https-tls-beyond-certbot/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/https-tls-beyond-certbot/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/https-tls-beyond-certbot/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/https-tls-beyond-certbot/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/https-tls-beyond-certbot.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/api-security-nestjs-production/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/api-security-nestjs-production/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/api-security-nestjs-production/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/api-security-nestjs-production/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/api-security-nestjs-production.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/secret-scanning-github-prevention/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/secret-scanning-github-prevention/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/secret-scanning-github-prevention/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/secret-scanning-github-prevention/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/secret-scanning-github-prevention.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/docker-container-security-scanning/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/docker-container-security-scanning/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/docker-container-security-scanning/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/docker-container-security-scanning/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/docker-container-security-scanning.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/penetration-testing-developer-basics/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/penetration-testing-developer-basics/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/penetration-testing-developer-basics/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/penetration-testing-developer-basics/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/penetration-testing-developer-basics.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/nginx-vs-traefik/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nginx-vs-traefik/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nginx-vs-traefik/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nginx-vs-traefik/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nginx-vs-traefik.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/linux-server-hardening/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/linux-server-hardening/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/linux-server-hardening/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/linux-server-hardening/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/linux-server-hardening.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/github-actions-vs-gitlab/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/github-actions-vs-gitlab/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/github-actions-vs-gitlab/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/github-actions-vs-gitlab/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/github-actions-vs-gitlab.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/postgresql-vs-mysql/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/postgresql-vs-mysql/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/postgresql-vs-mysql/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/postgresql-vs-mysql/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/postgresql-vs-mysql.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/redis-caching-nestjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/redis-caching-nestjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/redis-caching-nestjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/redis-caching-nestjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/redis-caching-nestjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/docker-compose-vs-k8s/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/docker-compose-vs-k8s/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/docker-compose-vs-k8s/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/docker-compose-vs-k8s/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/docker-compose-vs-k8s.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/monitoring-alerting-solo/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/monitoring-alerting-solo/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/monitoring-alerting-solo/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/monitoring-alerting-solo/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/monitoring-alerting-solo.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/ssh-security-hardening/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ssh-security-hardening/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ssh-security-hardening/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ssh-security-hardening/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ssh-security-hardening.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/postgresql-backup-strategy/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/postgresql-backup-strategy/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/postgresql-backup-strategy/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/postgresql-backup-strategy/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/postgresql-backup-strategy.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/nginx-performance-tuning/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nginx-performance-tuning/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nginx-performance-tuning/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nginx-performance-tuning/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nginx-performance-tuning.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/fail2ban-vps-security/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/fail2ban-vps-security/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/fail2ban-vps-security/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/fail2ban-vps-security/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/fail2ban-vps-security.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/systemd-services-jobs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/systemd-services-jobs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/systemd-services-jobs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/systemd-services-jobs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/systemd-services-jobs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/wireguard-vpn-cloud/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/wireguard-vpn-cloud/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/wireguard-vpn-cloud/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/wireguard-vpn-cloud/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/wireguard-vpn-cloud.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/log-rotation-linux/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/log-rotation-linux/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/log-rotation-linux/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/log-rotation-linux/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/log-rotation-linux.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/docker-secrets-production/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/docker-secrets-production/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/docker-secrets-production/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/docker-secrets-production/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/docker-secrets-production.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/cloud-run-vs-functions/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cloud-run-vs-functions/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cloud-run-vs-functions/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cloud-run-vs-functions/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cloud-run-vs-functions.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/terraform-modules-reusable/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/terraform-modules-reusable/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/terraform-modules-reusable/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/terraform-modules-reusable/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/terraform-modules-reusable.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/ansible-playbooks-production/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ansible-playbooks-production/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ansible-playbooks-production/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ansible-playbooks-production/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ansible-playbooks-production.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/cloud-cost-optimization/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cloud-cost-optimization/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cloud-cost-optimization/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cloud-cost-optimization/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cloud-cost-optimization.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/multi-cloud-small-teams/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/multi-cloud-small-teams/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/multi-cloud-small-teams/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/multi-cloud-small-teams/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/multi-cloud-small-teams.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/cdn-cloudflare-static/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cdn-cloudflare-static/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cdn-cloudflare-static/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cdn-cloudflare-static/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cdn-cloudflare-static.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/load-balancer-production-config/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/load-balancer-production-config/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/load-balancer-production-config/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/load-balancer-production-config/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/load-balancer-production-config.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/disaster-recovery-vps/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/disaster-recovery-vps/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/disaster-recovery-vps/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/disaster-recovery-vps/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/disaster-recovery-vps.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/container-registry-gcr/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/container-registry-gcr/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/container-registry-gcr/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/container-registry-gcr/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/container-registry-gcr.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/vpc-networking-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/vpc-networking-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/vpc-networking-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/vpc-networking-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/vpc-networking-guide.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/cloud-storage-vs-minio/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cloud-storage-vs-minio/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cloud-storage-vs-minio/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cloud-storage-vs-minio/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cloud-storage-vs-minio.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/github-actions-runners/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/github-actions-runners/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/github-actions-runners/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/github-actions-runners/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/github-actions-runners.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/hashicorp-vault-secrets/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/hashicorp-vault-secrets/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/hashicorp-vault-secrets/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/hashicorp-vault-secrets/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/hashicorp-vault-secrets.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/prometheus-alertmanager/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/prometheus-alertmanager/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/prometheus-alertmanager/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/prometheus-alertmanager/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/prometheus-alertmanager.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/elastic-stack-self-hosted/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/elastic-stack-self-hosted/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/elastic-stack-self-hosted/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/elastic-stack-self-hosted/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/elastic-stack-self-hosted.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/indonesian-dev-salary/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/indonesian-dev-salary/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/indonesian-dev-salary/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/indonesian-dev-salary/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/indonesian-dev-salary.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/startup-vs-corporate-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/startup-vs-corporate-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/startup-vs-corporate-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/startup-vs-corporate-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/startup-vs-corporate-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/tech-stack-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/tech-stack-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/tech-stack-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/tech-stack-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/tech-stack-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/remote-work-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/remote-work-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/remote-work-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/remote-work-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/remote-work-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/sgu-it-review/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/sgu-it-review/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/sgu-it-review/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/sgu-it-review/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/sgu-it-review.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/devops-job-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/devops-job-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/devops-job-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/devops-job-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/devops-job-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/cloud-adoption-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cloud-adoption-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cloud-adoption-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cloud-adoption-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cloud-adoption-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/erp-market-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-market-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-market-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-market-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-market-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/bpjs-api-integration/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/bpjs-api-integration/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/bpjs-api-integration/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/bpjs-api-integration/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/bpjs-api-integration.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/digital-transformation-sme/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/digital-transformation-sme/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/digital-transformation-sme/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/digital-transformation-sme/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/digital-transformation-sme.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/indonesia-tech-ecosystem/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/indonesia-tech-ecosystem/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/indonesia-tech-ecosystem/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/indonesia-tech-ecosystem/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/indonesia-tech-ecosystem.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/freelance-pricing-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/freelance-pricing-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/freelance-pricing-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/freelance-pricing-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/freelance-pricing-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/work-life-balance-dev/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/work-life-balance-dev/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/work-life-balance-dev/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/work-life-balance-dev/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/work-life-balance-dev.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/side-projects-full-time/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/side-projects-full-time/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/side-projects-full-time/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/side-projects-full-time/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/side-projects-full-time.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/blog/technical-interview-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/technical-interview-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/technical-interview-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/technical-interview-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/technical-interview-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/certifications/devops-professional-certificate/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/certifications/devops-professional-certificate/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/certifications/devops-professional-certificate/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/certifications/devops-professional-certificate/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/certifications/devops-professional-certificate.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.75</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/certifications/network-defense-essentials/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/certifications/network-defense-essentials/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/certifications/network-defense-essentials/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/certifications/network-defense-essentials/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/certifications/network-defense-essentials.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.75</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/certifications/aws-academy-cloud-foundations/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/certifications/aws-academy-cloud-foundations/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/certifications/aws-academy-cloud-foundations/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/certifications/aws-academy-cloud-foundations/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/certifications/aws-academy-cloud-foundations.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.75</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/certifications/sql-advanced/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/certifications/sql-advanced/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/certifications/sql-advanced/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/certifications/sql-advanced/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/certifications/sql-advanced.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.75</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/certifications/ethical-hacking-essentials/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/certifications/ethical-hacking-essentials/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/certifications/ethical-hacking-essentials/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/certifications/ethical-hacking-essentials/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/certifications/ethical-hacking-essentials.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.75</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/certifications/cybersecurity-awareness-professional/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/certifications/cybersecurity-awareness-professional/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/certifications/cybersecurity-awareness-professional/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/certifications/cybersecurity-awareness-professional/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/certifications/cybersecurity-awareness-professional.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.75</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/projects/ancorapro/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/ancorapro/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/ancorapro/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/ancorapro/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/ancorapro-poster.png</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/projects/ai-feeds/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/ai-feeds/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/ai-feeds/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/ai-feeds/" />
<image:image>
<image:loc>https://www.matthewswong.com/AiFeeds.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/projects/review-ci/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/review-ci/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/review-ci/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/review-ci/" />
<image:image>
<image:loc>https://www.matthewswong.com/ReviewCI.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/projects/jakarta-intl-denso/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/jakarta-intl-denso/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/jakarta-intl-denso/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/jakarta-intl-denso/" />
<image:image>
<image:loc>https://www.matthewswong.com/jid-web.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/projects/parcel-cirebon/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/parcel-cirebon/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/parcel-cirebon/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/parcel-cirebon/" />
<image:image>
<image:loc>https://www.matthewswong.com/parcel-cirebon.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/projects/tiktok-agency-incubator/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/tiktok-agency-incubator/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/tiktok-agency-incubator/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/tiktok-agency-incubator/" />
<image:image>
<image:loc>https://www.matthewswong.com/tiktok-agency.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/projects/shibui-matcha-bar/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/shibui-matcha-bar/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/shibui-matcha-bar/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/shibui-matcha-bar/" />
<image:image>
<image:loc>https://www.matthewswong.com/shibui-lp.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/projects/mpilates/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/mpilates/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/mpilates/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/mpilates/" />
<image:image>
<image:loc>https://www.matthewswong.com/mpilates-web.png</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/projects/stadpass/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/stadpass/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/stadpass/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/stadpass/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/STADPASS%2520Project.jpeg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/projects/observer-kpu/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/observer-kpu/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/observer-kpu/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/observer-kpu/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/Observer%2520KPU%2520Project.jpeg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/projects/credit-risk-analysis/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/credit-risk-analysis/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/credit-risk-analysis/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/credit-risk-analysis/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/rakamin/rakamin-01.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/rakamin/rakamin-02.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/rakamin/rakamin-03.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/rakamin/rakamin-04.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/rakamin/rakamin-05.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/rakamin/rakamin-06.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/en/projects/security-onion-lab/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/security-onion-lab/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/security-onion-lab/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/security-onion-lab/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/1.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/5.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/6.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/7.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/8.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/9.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/" />
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/experience/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/experience/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/experience/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/experience/" />
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/education/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/education/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/education/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/education/" />
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/projects/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/" />
<image:image>
<image:loc>https://www.matthewswong.com/AiFeeds.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/ReviewCI.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/jid-web.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/parcel-cirebon.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/tiktok-agency.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/shibui-lp.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/STADPASS%2520Project.jpeg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/Observer%2520KPU%2520Project.jpeg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/certifications/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/certifications/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/certifications/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/certifications/" />
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/hackathons/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/hackathons/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/hackathons/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/hackathons/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/hackathon/PWC-Hackathon.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/hackathon/web3-training-documentation.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/hackathon/AI-Hackathon1.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/hackathon/Pwc-hackathon-2024.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/hackathon/commsult-software-workshop.jpeg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/hackathon/web3-networking-event.jpeg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/Blockchain1.jpeg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/Symposium1.jpeg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/" />
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/contact/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/contact/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/contact/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/contact/" />
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/claude-opus-4-7-whats-new/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/claude-opus-4-7-whats-new/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/claude-opus-4-7-whats-new/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/claude-opus-4-7-whats-new/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/claude-opus-4-7.png</image:loc>
</image:image>
<lastmod>2026-04-16T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/loki-prometheus-observability/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/loki-prometheus-observability/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/loki-prometheus-observability/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/loki-prometheus-observability/" />
<image:image>
<image:loc>https://www.matthewswong.com/monitoring-blog.jpg</image:loc>
</image:image>
<lastmod>2025-01-15T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/building-saas-ai-gymbro/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/building-saas-ai-gymbro/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/building-saas-ai-gymbro/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/building-saas-ai-gymbro/" />
<image:image>
<image:loc>https://www.matthewswong.com/my-product.jpg</image:loc>
</image:image>
<lastmod>2024-09-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/life-at-swiss-german-university/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/life-at-swiss-german-university/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/life-at-swiss-german-university/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/life-at-swiss-german-university/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/sgu-location.webp</image:loc>
</image:image>
<lastmod>2024-06-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/pwc-capture-the-flag/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/pwc-capture-the-flag/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/pwc-capture-the-flag/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/pwc-capture-the-flag/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/hackathon/PWC-Hackathon.jpg</image:loc>
</image:image>
<lastmod>2024-08-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/ci-cd-pipeline-github-actions/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ci-cd-pipeline-github-actions/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ci-cd-pipeline-github-actions/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ci-cd-pipeline-github-actions/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ci-cd-github-actions.jpg</image:loc>
</image:image>
<lastmod>2024-07-15T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/kubernetes-deployment-strategies/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/kubernetes-deployment-strategies/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/kubernetes-deployment-strategies/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/kubernetes-deployment-strategies/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/kubernetes-deployment.jpg</image:loc>
</image:image>
<lastmod>2024-08-05T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/docker-containerization-best-practices/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/docker-containerization-best-practices/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/docker-containerization-best-practices/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/docker-containerization-best-practices/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/docker-best-practices.jpg</image:loc>
</image:image>
<lastmod>2024-08-22T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/docker-swarm-orchestration/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/docker-swarm-orchestration/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/docker-swarm-orchestration/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/docker-swarm-orchestration/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/docker-swarm.jpg</image:loc>
</image:image>
<lastmod>2024-09-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/ansible-automation-infrastructure/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ansible-automation-infrastructure/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ansible-automation-infrastructure/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ansible-automation-infrastructure/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ansible-automation.jpg</image:loc>
</image:image>
<lastmod>2024-09-28T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/infrastructure-as-code-terraform/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/infrastructure-as-code-terraform/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/infrastructure-as-code-terraform/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/infrastructure-as-code-terraform/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/terraform-iac.jpg</image:loc>
</image:image>
<lastmod>2024-10-14T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/gitops-argocd-flux/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/gitops-argocd-flux/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/gitops-argocd-flux/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/gitops-argocd-flux/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/gitops-argocd.jpg</image:loc>
</image:image>
<lastmod>2024-10-30T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/site-reliability-engineering-sre/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/site-reliability-engineering-sre/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/site-reliability-engineering-sre/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/site-reliability-engineering-sre/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/sre-reliability.jpg</image:loc>
</image:image>
<lastmod>2024-11-12T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/devsecops-security-pipeline/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/devsecops-security-pipeline/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/devsecops-security-pipeline/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/devsecops-security-pipeline/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/devsecops.jpg</image:loc>
</image:image>
<lastmod>2024-11-25T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/cloudflare-r2-gcs-egress/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cloudflare-r2-gcs-egress/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cloudflare-r2-gcs-egress/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cloudflare-r2-gcs-egress/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cloudflare-r2.jpg</image:loc>
</image:image>
<lastmod>2024-12-09T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/clean-code-principles/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/clean-code-principles/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/clean-code-principles/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/clean-code-principles/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/clean-code.jpg</image:loc>
</image:image>
<lastmod>2024-12-20T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/microservices-vs-monolith/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/microservices-vs-monolith/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/microservices-vs-monolith/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/microservices-vs-monolith/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/microservices.jpg</image:loc>
</image:image>
<lastmod>2025-01-08T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/api-design-rest-graphql/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/api-design-rest-graphql/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/api-design-rest-graphql/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/api-design-rest-graphql/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/api-rest-graphql.jpg</image:loc>
</image:image>
<lastmod>2025-01-22T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/test-driven-development-tdd/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/test-driven-development-tdd/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/test-driven-development-tdd/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/test-driven-development-tdd/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/test-driven-dev.jpg</image:loc>
</image:image>
<lastmod>2025-02-05T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/software-architecture-patterns/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/software-architecture-patterns/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/software-architecture-patterns/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/software-architecture-patterns/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/software-architecture.jpg</image:loc>
</image:image>
<lastmod>2025-02-19T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/database-optimization-postgresql/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/database-optimization-postgresql/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/database-optimization-postgresql/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/database-optimization-postgresql/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/postgres-optimization.jpg</image:loc>
</image:image>
<lastmod>2025-03-04T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/nextjs-performance-optimization/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextjs-performance-optimization/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextjs-performance-optimization/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextjs-performance-optimization/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextjs-performance.jpg</image:loc>
</image:image>
<lastmod>2025-03-18T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-implementation-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-implementation-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-implementation-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-implementation-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-implementation.jpg</image:loc>
</image:image>
<lastmod>2025-04-02T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-digital-transformation/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-digital-transformation/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-digital-transformation/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-digital-transformation/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-digital-transform.jpg</image:loc>
</image:image>
<lastmod>2025-04-16T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-integration-api-strategy/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-integration-api-strategy/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-integration-api-strategy/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-integration-api-strategy/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-integration-api.jpg</image:loc>
</image:image>
<lastmod>2025-05-01T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-customization-vs-configuration/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-customization-vs-configuration/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-customization-vs-configuration/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-customization-vs-configuration/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-customization.jpg</image:loc>
</image:image>
<lastmod>2025-05-20T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-data-migration-strategy/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-data-migration-strategy/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-data-migration-strategy/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-data-migration-strategy/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-data-migration.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/cloudflare-email-inbound-smtp2go/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cloudflare-email-inbound-smtp2go/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cloudflare-email-inbound-smtp2go/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cloudflare-email-inbound-smtp2go/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cloudflare-email.jpg</image:loc>
</image:image>
<lastmod>2025-06-25T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/pusat-data-nasional-pdn-cloud-developer-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/pusat-data-nasional-pdn-cloud-developer-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/pusat-data-nasional-pdn-cloud-developer-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/pusat-data-nasional-pdn-cloud-developer-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/pusat-data-nasional-pdn-cloud-developer-guide.jpg</image:loc>
</image:image>
<lastmod>2025-10-08T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/azure-indonesia-central-region-deployment-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/azure-indonesia-central-region-deployment-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/azure-indonesia-central-region-deployment-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/azure-indonesia-central-region-deployment-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/azure-indonesia-central-region-deployment-guide.jpg</image:loc>
</image:image>
<lastmod>2025-11-12T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/indonesia-open-banking-snap-api-qris-developer-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/indonesia-open-banking-snap-api-qris-developer-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/indonesia-open-banking-snap-api-qris-developer-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/indonesia-open-banking-snap-api-qris-developer-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/indonesia-open-banking-snap-api-qris-developer-guide.jpg</image:loc>
</image:image>
<lastmod>2025-12-03T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/uu-pdp-compliance-developer-guide-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/uu-pdp-compliance-developer-guide-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/uu-pdp-compliance-developer-guide-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/uu-pdp-compliance-developer-guide-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/uu-pdp-compliance-developer-guide-indonesia.jpg</image:loc>
</image:image>
<lastmod>2026-01-14T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/finops-cloud-cost-optimization-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/finops-cloud-cost-optimization-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/finops-cloud-cost-optimization-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/finops-cloud-cost-optimization-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/finops-cloud-cost-optimization-indonesia.jpg</image:loc>
</image:image>
<lastmod>2026-02-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/odoo-erp-custom-module-development-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/odoo-erp-custom-module-development-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/odoo-erp-custom-module-development-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/odoo-erp-custom-module-development-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/odoo-erp-custom-module-development-indonesia.jpg</image:loc>
</image:image>
<lastmod>2026-02-25T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/building-production-rag-llm-applications/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/building-production-rag-llm-applications/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/building-production-rag-llm-applications/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/building-production-rag-llm-applications/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/building-production-rag-llm-applications.jpg</image:loc>
</image:image>
<lastmod>2026-03-12T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/kubernetes-k3s-production-lightweight-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/kubernetes-k3s-production-lightweight-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/kubernetes-k3s-production-lightweight-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/kubernetes-k3s-production-lightweight-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/kubernetes-k3s-production-lightweight-indonesia.jpg</image:loc>
</image:image>
<lastmod>2026-03-28T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/platform-engineering-internal-developer-platform/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/platform-engineering-internal-developer-platform/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/platform-engineering-internal-developer-platform/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/platform-engineering-internal-developer-platform/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/platform-engineering-internal-developer-platform.jpg</image:loc>
</image:image>
<lastmod>2026-04-15T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/zero-trust-security-architecture-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/zero-trust-security-architecture-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/zero-trust-security-architecture-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/zero-trust-security-architecture-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/zero-trust-security-architecture-indonesia.jpg</image:loc>
</image:image>
<lastmod>2026-05-05T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/production-landing-page-core-web-vitals/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/production-landing-page-core-web-vitals/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/production-landing-page-core-web-vitals/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/production-landing-page-core-web-vitals/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/production-landing-page-core-web-vitals.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/typescript-project-structure-real-world/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/typescript-project-structure-real-world/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/typescript-project-structure-real-world/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/typescript-project-structure-real-world/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/typescript-project-structure-real-world.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/figma-to-nextjs-component-workflow/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/figma-to-nextjs-component-workflow/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/figma-to-nextjs-component-workflow/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/figma-to-nextjs-component-workflow/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/figma-to-nextjs-component-workflow.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/nextjs-i18n-next-intl-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextjs-i18n-next-intl-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextjs-i18n-next-intl-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextjs-i18n-next-intl-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextjs-i18n-next-intl-guide.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/balancing-devops-erp-webdev-engineer/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/balancing-devops-erp-webdev-engineer/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/balancing-devops-erp-webdev-engineer/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/balancing-devops-erp-webdev-engineer/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/balancing-devops-erp-webdev-engineer.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/hermes-ai-agent-nousresearch-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/hermes-ai-agent-nousresearch-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/hermes-ai-agent-nousresearch-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/hermes-ai-agent-nousresearch-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/hermes-ai-agent-nousresearch-guide.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/google-cloud-vs-digital-ocean/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/google-cloud-vs-digital-ocean/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/google-cloud-vs-digital-ocean/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/google-cloud-vs-digital-ocean/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/google-cloud-vs-digital-ocean.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/grafana-prometheus-monitoring-vps/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/grafana-prometheus-monitoring-vps/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/grafana-prometheus-monitoring-vps/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/grafana-prometheus-monitoring-vps/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/grafana-prometheus-monitoring-vps.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/zero-downtime-nginx-blue-green-deploy/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/zero-downtime-nginx-blue-green-deploy/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/zero-downtime-nginx-blue-green-deploy/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/zero-downtime-nginx-blue-green-deploy/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/zero-downtime-nginx-blue-green-deploy.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/automate-ssl-certbot-nginx/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/automate-ssl-certbot-nginx/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/automate-ssl-certbot-nginx/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/automate-ssl-certbot-nginx/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/automate-ssl-certbot-nginx.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/self-hosted-observability-digital-ocean/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/self-hosted-observability-digital-ocean/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/self-hosted-observability-digital-ocean/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/self-hosted-observability-digital-ocean/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/self-hosted-observability-digital-ocean.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/kubernetes-solo-developer-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/kubernetes-solo-developer-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/kubernetes-solo-developer-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/kubernetes-solo-developer-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/kubernetes-solo-developer-guide.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/docker-workflow-every-project/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/docker-workflow-every-project/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/docker-workflow-every-project/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/docker-workflow-every-project/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/docker-workflow-every-project.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/google-cloud-managed-services-vs-raw-compute/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/google-cloud-managed-services-vs-raw-compute/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/google-cloud-managed-services-vs-raw-compute/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/google-cloud-managed-services-vs-raw-compute/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/google-cloud-managed-services-vs-raw-compute.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-hr-leave-approval-flow/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-hr-leave-approval-flow/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-hr-leave-approval-flow/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-hr-leave-approval-flow/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-hr-leave-approval-flow.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/accounts-payable-multi-approval-nestjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/accounts-payable-multi-approval-nestjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/accounts-payable-multi-approval-nestjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/accounts-payable-multi-approval-nestjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/accounts-payable-multi-approval-nestjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-invoice-pdf-generation/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-invoice-pdf-generation/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-invoice-pdf-generation/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-invoice-pdf-generation/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-invoice-pdf-generation.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-email-automation/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-email-automation/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-email-automation/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-email-automation/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-email-automation.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/why-erp-fails-indonesian-businesses/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/why-erp-fails-indonesian-businesses/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/why-erp-fails-indonesian-businesses/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/why-erp-fails-indonesian-businesses/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/why-erp-fails-indonesian-businesses.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/accounts-receivable-automation-erp/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/accounts-receivable-automation-erp/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/accounts-receivable-automation-erp/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/accounts-receivable-automation-erp/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/accounts-receivable-automation-erp.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/workflow-engine-react-nestjs-postgresql/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/workflow-engine-react-nestjs-postgresql/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/workflow-engine-react-nestjs-postgresql/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/workflow-engine-react-nestjs-postgresql/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/workflow-engine-react-nestjs-postgresql.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/excel-to-custom-erp-migration/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/excel-to-custom-erp-migration/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/excel-to-custom-erp-migration/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/excel-to-custom-erp-migration/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/excel-to-custom-erp-migration.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-role-based-access-control/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-role-based-access-control/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-role-based-access-control/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-role-based-access-control/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-role-based-access-control.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-audit-trail-activity-log/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-audit-trail-activity-log/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-audit-trail-activity-log/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-audit-trail-activity-log/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-audit-trail-activity-log.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/nextjs-project-structure-scalable/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextjs-project-structure-scalable/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextjs-project-structure-scalable/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextjs-project-structure-scalable/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextjs-project-structure-scalable.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/build-saas-30-days-nextjs-tailwind/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/build-saas-30-days-nextjs-tailwind/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/build-saas-30-days-nextjs-tailwind/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/build-saas-30-days-nextjs-tailwind/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/build-saas-30-days-nextjs-tailwind.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/type-safe-api-nestjs-prisma/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/type-safe-api-nestjs-prisma/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/type-safe-api-nestjs-prisma/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/type-safe-api-nestjs-prisma/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/type-safe-api-nestjs-prisma.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/seo-first-nextjs-checklist/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/seo-first-nextjs-checklist/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/seo-first-nextjs-checklist/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/seo-first-nextjs-checklist/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/seo-first-nextjs-checklist.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/react-query-vs-swr/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/react-query-vs-swr/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/react-query-vs-swr/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/react-query-vs-swr/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/react-query-vs-swr.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/mcp-auth-cerbos-authorization/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/mcp-auth-cerbos-authorization/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/mcp-auth-cerbos-authorization/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/mcp-auth-cerbos-authorization/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/mcp-auth-cerbos-authorization.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/real-user-monitoring-web-performance/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/real-user-monitoring-web-performance/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/real-user-monitoring-web-performance/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/real-user-monitoring-web-performance/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/real-user-monitoring-web-performance.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/image-optimization-nextjs-webp-avif/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/image-optimization-nextjs-webp-avif/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/image-optimization-nextjs-webp-avif/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/image-optimization-nextjs-webp-avif/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/image-optimization-nextjs-webp-avif.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/nextjs-caching-isr-ssr-strategy/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextjs-caching-isr-ssr-strategy/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextjs-caching-isr-ssr-strategy/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextjs-caching-isr-ssr-strategy/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextjs-caching-isr-ssr-strategy.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/database-connection-pooling-nestjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/database-connection-pooling-nestjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/database-connection-pooling-nestjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/database-connection-pooling-nestjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/database-connection-pooling-nestjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/postgresql-full-text-search-no-elasticsearch/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/postgresql-full-text-search-no-elasticsearch/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/postgresql-full-text-search-no-elasticsearch/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/postgresql-full-text-search-no-elasticsearch/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/postgresql-full-text-search-no-elasticsearch.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/cursor-vs-offset-pagination/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cursor-vs-offset-pagination/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cursor-vs-offset-pagination/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cursor-vs-offset-pagination/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cursor-vs-offset-pagination.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/api-versioning-nestjs-strategy/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/api-versioning-nestjs-strategy/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/api-versioning-nestjs-strategy/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/api-versioning-nestjs-strategy/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/api-versioning-nestjs-strategy.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/graphql-vs-rest-2025/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/graphql-vs-rest-2025/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/graphql-vs-rest-2025/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/graphql-vs-rest-2025/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/graphql-vs-rest-2025.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/openapi-swagger-nestjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/openapi-swagger-nestjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/openapi-swagger-nestjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/openapi-swagger-nestjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/openapi-swagger-nestjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/environment-variables-secrets-nextjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/environment-variables-secrets-nextjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/environment-variables-secrets-nextjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/environment-variables-secrets-nextjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/environment-variables-secrets-nextjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/e2e-testing-playwright-nextjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/e2e-testing-playwright-nextjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/e2e-testing-playwright-nextjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/e2e-testing-playwright-nextjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/e2e-testing-playwright-nextjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/accessibility-audit-nextjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/accessibility-audit-nextjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/accessibility-audit-nextjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/accessibility-audit-nextjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/accessibility-audit-nextjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/npm-dependency-management-audit/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/npm-dependency-management-audit/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/npm-dependency-management-audit/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/npm-dependency-management-audit/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/npm-dependency-management-audit.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/security-headers-nextjs-configuration/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/security-headers-nextjs-configuration/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/security-headers-nextjs-configuration/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/security-headers-nextjs-configuration/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/security-headers-nextjs-configuration.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/dark-mode-nextjs-system-aware/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/dark-mode-nextjs-system-aware/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/dark-mode-nextjs-system-aware/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/dark-mode-nextjs-system-aware/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/dark-mode-nextjs-system-aware.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/event-driven-kafka-nestjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/event-driven-kafka-nestjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/event-driven-kafka-nestjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/event-driven-kafka-nestjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/event-driven-kafka-nestjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/microservices-grpc-vs-rest-internal/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/microservices-grpc-vs-rest-internal/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/microservices-grpc-vs-rest-internal/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/microservices-grpc-vs-rest-internal/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/microservices-grpc-vs-rest-internal.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/postgresql-sharding-strategy/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/postgresql-sharding-strategy/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/postgresql-sharding-strategy/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/postgresql-sharding-strategy/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/postgresql-sharding-strategy.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/message-queue-rabbitmq-bullmq/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/message-queue-rabbitmq-bullmq/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/message-queue-rabbitmq-bullmq/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/message-queue-rabbitmq-bullmq/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/message-queue-rabbitmq-bullmq.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/api-gateway-pattern-nestjs-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/api-gateway-pattern-nestjs-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/api-gateway-pattern-nestjs-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/api-gateway-pattern-nestjs-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/api-gateway-pattern-nestjs-guide.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/distributed-tracing-opentelemetry/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/distributed-tracing-opentelemetry/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/distributed-tracing-opentelemetry/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/distributed-tracing-opentelemetry/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/distributed-tracing-opentelemetry.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/circuit-breaker-nestjs-pattern/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/circuit-breaker-nestjs-pattern/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/circuit-breaker-nestjs-pattern/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/circuit-breaker-nestjs-pattern/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/circuit-breaker-nestjs-pattern.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/cqrs-event-sourcing-nestjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cqrs-event-sourcing-nestjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cqrs-event-sourcing-nestjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cqrs-event-sourcing-nestjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cqrs-event-sourcing-nestjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/websocket-scaling-redis-pubsub/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/websocket-scaling-redis-pubsub/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/websocket-scaling-redis-pubsub/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/websocket-scaling-redis-pubsub/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/websocket-scaling-redis-pubsub.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/nextjs-testing-vitest-jest/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextjs-testing-vitest-jest/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextjs-testing-vitest-jest/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextjs-testing-vitest-jest/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextjs-testing-vitest-jest.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/storybook-component-documentation/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/storybook-component-documentation/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/storybook-component-documentation/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/storybook-component-documentation/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/storybook-component-documentation.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/code-review-process-developer/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/code-review-process-developer/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/code-review-process-developer/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/code-review-process-developer/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/code-review-process-developer.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/technical-debt-management/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/technical-debt-management/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/technical-debt-management/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/technical-debt-management/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/technical-debt-management.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/developer-documentation-culture/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/developer-documentation-culture/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/developer-documentation-culture/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/developer-documentation-culture/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/developer-documentation-culture.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/open-source-license-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/open-source-license-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/open-source-license-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/open-source-license-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/open-source-license-guide.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-purchase-order-approval/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-purchase-order-approval/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-purchase-order-approval/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-purchase-order-approval/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-purchase-order-approval.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-inventory-real-time-tracking/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-inventory-real-time-tracking/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-inventory-real-time-tracking/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-inventory-real-time-tracking/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-inventory-real-time-tracking.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-financial-reporting-automation/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-financial-reporting-automation/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-financial-reporting-automation/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-financial-reporting-automation/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-financial-reporting-automation.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-multi-currency-implementation/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-multi-currency-implementation/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-multi-currency-implementation/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-multi-currency-implementation/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-multi-currency-implementation.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-vendor-supplier-portal/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-vendor-supplier-portal/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-vendor-supplier-portal/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-vendor-supplier-portal/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-vendor-supplier-portal.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-project-costing-time-tracking/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-project-costing-time-tracking/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-project-costing-time-tracking/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-project-costing-time-tracking/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-project-costing-time-tracking.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-payroll-integration-hr/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-payroll-integration-hr/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-payroll-integration-hr/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-payroll-integration-hr/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-payroll-integration-hr.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-customer-portal-b2b/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-customer-portal-b2b/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-customer-portal-b2b/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-customer-portal-b2b/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-customer-portal-b2b.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-third-party-api-integration/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-third-party-api-integration/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-third-party-api-integration/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-third-party-api-integration/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-third-party-api-integration.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-kpi-dashboard-executives/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-kpi-dashboard-executives/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-kpi-dashboard-executives/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-kpi-dashboard-executives/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-kpi-dashboard-executives.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-document-management/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-document-management/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-document-management/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-document-management/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-document-management.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-warehouse-barcode-scanning/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-warehouse-barcode-scanning/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-warehouse-barcode-scanning/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-warehouse-barcode-scanning/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-warehouse-barcode-scanning.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-tax-compliance-indonesia-ppn/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-tax-compliance-indonesia-ppn/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-tax-compliance-indonesia-ppn/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-tax-compliance-indonesia-ppn/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-tax-compliance-indonesia-ppn.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-budget-variance-analysis/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-budget-variance-analysis/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-budget-variance-analysis/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-budget-variance-analysis/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-budget-variance-analysis.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-crm-integration-sales/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-crm-integration-sales/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-crm-integration-sales/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-crm-integration-sales/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-crm-integration-sales.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/odoo-vs-sap-vs-custom-erp/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/odoo-vs-sap-vs-custom-erp/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/odoo-vs-sap-vs-custom-erp/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/odoo-vs-sap-vs-custom-erp/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/odoo-vs-sap-vs-custom-erp.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-implementation-timeline-reality/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-implementation-timeline-reality/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-implementation-timeline-reality/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-implementation-timeline-reality/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-implementation-timeline-reality.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-change-management-employees/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-change-management-employees/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-change-management-employees/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-change-management-employees/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-change-management-employees.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-data-quality-migration-prep/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-data-quality-migration-prep/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-data-quality-migration-prep/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-data-quality-migration-prep/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-data-quality-migration-prep.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-roi-real-numbers/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-roi-real-numbers/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-roi-real-numbers/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-roi-real-numbers/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-roi-real-numbers.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-customization-cost-benefit-analysis/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-customization-cost-benefit-analysis/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-customization-cost-benefit-analysis/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-customization-cost-benefit-analysis/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-customization-cost-benefit-analysis.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-go-live-checklist/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-go-live-checklist/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-go-live-checklist/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-go-live-checklist/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-go-live-checklist.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-user-training-strategy/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-user-training-strategy/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-user-training-strategy/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-user-training-strategy/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-user-training-strategy.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-post-go-live-90-days/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-post-go-live-90-days/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-post-go-live-90-days/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-post-go-live-90-days/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-post-go-live-90-days.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-process-mapping-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-process-mapping-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-process-mapping-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-process-mapping-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-process-mapping-guide.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-security-permissions-design/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-security-permissions-design/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-security-permissions-design/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-security-permissions-design/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-security-permissions-design.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-mobile-pwa-field-workers/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-mobile-pwa-field-workers/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-mobile-pwa-field-workers/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-mobile-pwa-field-workers/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-mobile-pwa-field-workers.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-legacy-access-db-migration/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-legacy-access-db-migration/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-legacy-access-db-migration/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-legacy-access-db-migration/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-legacy-access-db-migration.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-cloud-vs-on-premise-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-cloud-vs-on-premise-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-cloud-vs-on-premise-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-cloud-vs-on-premise-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-cloud-vs-on-premise-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-middleware-integration-design/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-middleware-integration-design/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-middleware-integration-design/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-middleware-integration-design/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-middleware-integration-design.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/nextjs-app-router-migration-lessons/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextjs-app-router-migration-lessons/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextjs-app-router-migration-lessons/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextjs-app-router-migration-lessons/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextjs-app-router-migration-lessons.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/tailwindcss-vs-css-modules/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/tailwindcss-vs-css-modules/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/tailwindcss-vs-css-modules/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/tailwindcss-vs-css-modules/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/tailwindcss-vs-css-modules.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/prisma-vs-typeorm-nestjs-comparison/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/prisma-vs-typeorm-nestjs-comparison/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/prisma-vs-typeorm-nestjs-comparison/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/prisma-vs-typeorm-nestjs-comparison/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/prisma-vs-typeorm-nestjs-comparison.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/nextauth-vs-clerk-comparison/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextauth-vs-clerk-comparison/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextauth-vs-clerk-comparison/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextauth-vs-clerk-comparison/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextauth-vs-clerk-comparison.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/websockets-nestjs-realtime/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/websockets-nestjs-realtime/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/websockets-nestjs-realtime/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/websockets-nestjs-realtime/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/websockets-nestjs-realtime.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/file-upload-s3-nextjs-production/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/file-upload-s3-nextjs-production/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/file-upload-s3-nextjs-production/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/file-upload-s3-nextjs-production/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/file-upload-s3-nextjs-production.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/resend-vs-nodemailer-email/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/resend-vs-nodemailer-email/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/resend-vs-nodemailer-email/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/resend-vs-nodemailer-email/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/resend-vs-nodemailer-email.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/nextjs-api-routes-vs-nestjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextjs-api-routes-vs-nestjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextjs-api-routes-vs-nestjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextjs-api-routes-vs-nestjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextjs-api-routes-vs-nestjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/typescript-strict-mode-production/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/typescript-strict-mode-production/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/typescript-strict-mode-production/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/typescript-strict-mode-production/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/typescript-strict-mode-production.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/react-server-components-usage/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/react-server-components-usage/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/react-server-components-usage/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/react-server-components-usage/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/react-server-components-usage.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/nextjs-middleware-real-use-cases/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextjs-middleware-real-use-cases/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextjs-middleware-real-use-cases/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextjs-middleware-real-use-cases/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextjs-middleware-real-use-cases.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/framer-motion-vs-css-animations/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/framer-motion-vs-css-animations/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/framer-motion-vs-css-animations/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/framer-motion-vs-css-animations/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/framer-motion-vs-css-animations.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/monorepo-turborepo-setup/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/monorepo-turborepo-setup/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/monorepo-turborepo-setup/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/monorepo-turborepo-setup/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/monorepo-turborepo-setup.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/api-rate-limiting-nestjs-redis/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/api-rate-limiting-nestjs-redis/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/api-rate-limiting-nestjs-redis/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/api-rate-limiting-nestjs-redis/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/api-rate-limiting-nestjs-redis.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/nextjs-error-handling-patterns/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nextjs-error-handling-patterns/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nextjs-error-handling-patterns/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nextjs-error-handling-patterns/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nextjs-error-handling-patterns.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/llm-api-cost-optimization/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/llm-api-cost-optimization/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/llm-api-cost-optimization/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/llm-api-cost-optimization/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/llm-api-cost-optimization.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/ai-agent-workflow-automation-2025/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ai-agent-workflow-automation-2025/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ai-agent-workflow-automation-2025/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ai-agent-workflow-automation-2025/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ai-agent-workflow-automation-2025.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/rag-pipeline-production-lessons/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/rag-pipeline-production-lessons/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/rag-pipeline-production-lessons/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/rag-pipeline-production-lessons/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/rag-pipeline-production-lessons.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/claude-api-tool-use-production/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/claude-api-tool-use-production/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/claude-api-tool-use-production/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/claude-api-tool-use-production/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/claude-api-tool-use-production.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/openai-vs-anthropic-vs-gemini-developers/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/openai-vs-anthropic-vs-gemini-developers/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/openai-vs-anthropic-vs-gemini-developers/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/openai-vs-anthropic-vs-gemini-developers/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/openai-vs-anthropic-vs-gemini-developers.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/langchain-vs-custom-llm/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/langchain-vs-custom-llm/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/langchain-vs-custom-llm/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/langchain-vs-custom-llm/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/langchain-vs-custom-llm.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/ai-code-review-github-actions/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ai-code-review-github-actions/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ai-code-review-github-actions/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ai-code-review-github-actions/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ai-code-review-github-actions.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/pgvector-vs-pinecone-comparison/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/pgvector-vs-pinecone-comparison/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/pgvector-vs-pinecone-comparison/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/pgvector-vs-pinecone-comparison/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/pgvector-vs-pinecone-comparison.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/prompt-engineering-production/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/prompt-engineering-production/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/prompt-engineering-production/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/prompt-engineering-production/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/prompt-engineering-production.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/ai-content-generation-quality/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ai-content-generation-quality/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ai-content-generation-quality/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ai-content-generation-quality/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ai-content-generation-quality.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/freelance-vs-fulltime-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/freelance-vs-fulltime-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/freelance-vs-fulltime-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/freelance-vs-fulltime-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/freelance-vs-fulltime-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/portfolio-junior-developer-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/portfolio-junior-developer-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/portfolio-junior-developer-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/portfolio-junior-developer-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/portfolio-junior-developer-guide.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/developer-productivity-tools-2025/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/developer-productivity-tools-2025/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/developer-productivity-tools-2025/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/developer-productivity-tools-2025/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/developer-productivity-tools-2025.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/learning-new-tech-stack-efficiently/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/learning-new-tech-stack-efficiently/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/learning-new-tech-stack-efficiently/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/learning-new-tech-stack-efficiently/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/learning-new-tech-stack-efficiently.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/open-source-contribution-career/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/open-source-contribution-career/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/open-source-contribution-career/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/open-source-contribution-career/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/open-source-contribution-career.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/ai-prompt-injection-defense/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ai-prompt-injection-defense/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ai-prompt-injection-defense/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ai-prompt-injection-defense/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ai-prompt-injection-defense.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/mcp-server-development-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/mcp-server-development-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/mcp-server-development-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/mcp-server-development-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/mcp-server-development-guide.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/ai-agent-memory-persistence-patterns/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ai-agent-memory-persistence-patterns/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ai-agent-memory-persistence-patterns/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ai-agent-memory-persistence-patterns/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ai-agent-memory-persistence-patterns.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/local-llm-ollama-production/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/local-llm-ollama-production/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/local-llm-ollama-production/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/local-llm-ollama-production/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/local-llm-ollama-production.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/ai-observability-llm-logging/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ai-observability-llm-logging/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ai-observability-llm-logging/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ai-observability-llm-logging/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ai-observability-llm-logging.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/function-calling-openai-anthropic/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/function-calling-openai-anthropic/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/function-calling-openai-anthropic/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/function-calling-openai-anthropic/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/function-calling-openai-anthropic.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/owasp-top-10-developer-checklist/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/owasp-top-10-developer-checklist/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/owasp-top-10-developer-checklist/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/owasp-top-10-developer-checklist/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/owasp-top-10-developer-checklist.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/jwt-vs-session-auth-production/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/jwt-vs-session-auth-production/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/jwt-vs-session-auth-production/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/jwt-vs-session-auth-production/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/jwt-vs-session-auth-production.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/sql-injection-orm-prevention/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/sql-injection-orm-prevention/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/sql-injection-orm-prevention/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/sql-injection-orm-prevention/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/sql-injection-orm-prevention.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/cors-configuration-nextjs-nestjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cors-configuration-nextjs-nestjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cors-configuration-nextjs-nestjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cors-configuration-nextjs-nestjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cors-configuration-nextjs-nestjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/https-tls-beyond-certbot/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/https-tls-beyond-certbot/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/https-tls-beyond-certbot/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/https-tls-beyond-certbot/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/https-tls-beyond-certbot.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/api-security-nestjs-production/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/api-security-nestjs-production/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/api-security-nestjs-production/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/api-security-nestjs-production/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/api-security-nestjs-production.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/secret-scanning-github-prevention/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/secret-scanning-github-prevention/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/secret-scanning-github-prevention/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/secret-scanning-github-prevention/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/secret-scanning-github-prevention.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/docker-container-security-scanning/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/docker-container-security-scanning/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/docker-container-security-scanning/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/docker-container-security-scanning/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/docker-container-security-scanning.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/penetration-testing-developer-basics/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/penetration-testing-developer-basics/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/penetration-testing-developer-basics/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/penetration-testing-developer-basics/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/penetration-testing-developer-basics.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/nginx-vs-traefik/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nginx-vs-traefik/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nginx-vs-traefik/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nginx-vs-traefik/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nginx-vs-traefik.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/linux-server-hardening/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/linux-server-hardening/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/linux-server-hardening/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/linux-server-hardening/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/linux-server-hardening.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/github-actions-vs-gitlab/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/github-actions-vs-gitlab/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/github-actions-vs-gitlab/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/github-actions-vs-gitlab/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/github-actions-vs-gitlab.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/postgresql-vs-mysql/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/postgresql-vs-mysql/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/postgresql-vs-mysql/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/postgresql-vs-mysql/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/postgresql-vs-mysql.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/redis-caching-nestjs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/redis-caching-nestjs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/redis-caching-nestjs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/redis-caching-nestjs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/redis-caching-nestjs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/docker-compose-vs-k8s/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/docker-compose-vs-k8s/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/docker-compose-vs-k8s/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/docker-compose-vs-k8s/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/docker-compose-vs-k8s.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/monitoring-alerting-solo/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/monitoring-alerting-solo/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/monitoring-alerting-solo/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/monitoring-alerting-solo/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/monitoring-alerting-solo.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/ssh-security-hardening/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ssh-security-hardening/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ssh-security-hardening/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ssh-security-hardening/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ssh-security-hardening.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/postgresql-backup-strategy/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/postgresql-backup-strategy/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/postgresql-backup-strategy/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/postgresql-backup-strategy/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/postgresql-backup-strategy.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/nginx-performance-tuning/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/nginx-performance-tuning/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/nginx-performance-tuning/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/nginx-performance-tuning/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/nginx-performance-tuning.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/fail2ban-vps-security/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/fail2ban-vps-security/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/fail2ban-vps-security/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/fail2ban-vps-security/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/fail2ban-vps-security.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/systemd-services-jobs/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/systemd-services-jobs/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/systemd-services-jobs/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/systemd-services-jobs/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/systemd-services-jobs.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/wireguard-vpn-cloud/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/wireguard-vpn-cloud/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/wireguard-vpn-cloud/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/wireguard-vpn-cloud/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/wireguard-vpn-cloud.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/log-rotation-linux/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/log-rotation-linux/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/log-rotation-linux/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/log-rotation-linux/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/log-rotation-linux.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/docker-secrets-production/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/docker-secrets-production/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/docker-secrets-production/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/docker-secrets-production/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/docker-secrets-production.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/cloud-run-vs-functions/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cloud-run-vs-functions/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cloud-run-vs-functions/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cloud-run-vs-functions/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cloud-run-vs-functions.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/terraform-modules-reusable/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/terraform-modules-reusable/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/terraform-modules-reusable/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/terraform-modules-reusable/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/terraform-modules-reusable.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/ansible-playbooks-production/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/ansible-playbooks-production/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/ansible-playbooks-production/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/ansible-playbooks-production/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/ansible-playbooks-production.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/cloud-cost-optimization/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cloud-cost-optimization/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cloud-cost-optimization/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cloud-cost-optimization/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cloud-cost-optimization.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/multi-cloud-small-teams/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/multi-cloud-small-teams/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/multi-cloud-small-teams/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/multi-cloud-small-teams/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/multi-cloud-small-teams.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/cdn-cloudflare-static/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cdn-cloudflare-static/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cdn-cloudflare-static/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cdn-cloudflare-static/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cdn-cloudflare-static.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/load-balancer-production-config/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/load-balancer-production-config/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/load-balancer-production-config/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/load-balancer-production-config/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/load-balancer-production-config.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/disaster-recovery-vps/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/disaster-recovery-vps/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/disaster-recovery-vps/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/disaster-recovery-vps/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/disaster-recovery-vps.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/container-registry-gcr/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/container-registry-gcr/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/container-registry-gcr/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/container-registry-gcr/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/container-registry-gcr.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/vpc-networking-guide/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/vpc-networking-guide/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/vpc-networking-guide/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/vpc-networking-guide/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/vpc-networking-guide.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/cloud-storage-vs-minio/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cloud-storage-vs-minio/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cloud-storage-vs-minio/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cloud-storage-vs-minio/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cloud-storage-vs-minio.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/github-actions-runners/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/github-actions-runners/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/github-actions-runners/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/github-actions-runners/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/github-actions-runners.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/hashicorp-vault-secrets/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/hashicorp-vault-secrets/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/hashicorp-vault-secrets/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/hashicorp-vault-secrets/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/hashicorp-vault-secrets.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/prometheus-alertmanager/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/prometheus-alertmanager/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/prometheus-alertmanager/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/prometheus-alertmanager/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/prometheus-alertmanager.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/elastic-stack-self-hosted/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/elastic-stack-self-hosted/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/elastic-stack-self-hosted/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/elastic-stack-self-hosted/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/elastic-stack-self-hosted.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/indonesian-dev-salary/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/indonesian-dev-salary/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/indonesian-dev-salary/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/indonesian-dev-salary/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/indonesian-dev-salary.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/startup-vs-corporate-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/startup-vs-corporate-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/startup-vs-corporate-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/startup-vs-corporate-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/startup-vs-corporate-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/tech-stack-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/tech-stack-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/tech-stack-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/tech-stack-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/tech-stack-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/remote-work-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/remote-work-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/remote-work-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/remote-work-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/remote-work-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/sgu-it-review/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/sgu-it-review/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/sgu-it-review/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/sgu-it-review/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/sgu-it-review.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/devops-job-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/devops-job-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/devops-job-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/devops-job-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/devops-job-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/cloud-adoption-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/cloud-adoption-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/cloud-adoption-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/cloud-adoption-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/cloud-adoption-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/erp-market-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/erp-market-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/erp-market-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/erp-market-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/erp-market-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/bpjs-api-integration/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/bpjs-api-integration/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/bpjs-api-integration/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/bpjs-api-integration/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/bpjs-api-integration.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/digital-transformation-sme/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/digital-transformation-sme/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/digital-transformation-sme/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/digital-transformation-sme/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/digital-transformation-sme.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/indonesia-tech-ecosystem/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/indonesia-tech-ecosystem/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/indonesia-tech-ecosystem/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/indonesia-tech-ecosystem/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/indonesia-tech-ecosystem.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/freelance-pricing-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/freelance-pricing-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/freelance-pricing-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/freelance-pricing-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/freelance-pricing-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/work-life-balance-dev/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/work-life-balance-dev/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/work-life-balance-dev/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/work-life-balance-dev/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/work-life-balance-dev.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/side-projects-full-time/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/side-projects-full-time/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/side-projects-full-time/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/side-projects-full-time/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/side-projects-full-time.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/blog/technical-interview-indonesia/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/blog/technical-interview-indonesia/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/blog/technical-interview-indonesia/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/blog/technical-interview-indonesia/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/blog/technical-interview-indonesia.jpg</image:loc>
</image:image>
<lastmod>2025-06-10T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/certifications/devops-professional-certificate/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/certifications/devops-professional-certificate/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/certifications/devops-professional-certificate/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/certifications/devops-professional-certificate/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/certifications/devops-professional-certificate.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.75</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/certifications/network-defense-essentials/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/certifications/network-defense-essentials/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/certifications/network-defense-essentials/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/certifications/network-defense-essentials/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/certifications/network-defense-essentials.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.75</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/certifications/aws-academy-cloud-foundations/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/certifications/aws-academy-cloud-foundations/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/certifications/aws-academy-cloud-foundations/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/certifications/aws-academy-cloud-foundations/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/certifications/aws-academy-cloud-foundations.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.75</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/certifications/sql-advanced/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/certifications/sql-advanced/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/certifications/sql-advanced/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/certifications/sql-advanced/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/certifications/sql-advanced.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.75</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/certifications/ethical-hacking-essentials/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/certifications/ethical-hacking-essentials/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/certifications/ethical-hacking-essentials/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/certifications/ethical-hacking-essentials/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/certifications/ethical-hacking-essentials.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.75</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/certifications/cybersecurity-awareness-professional/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/certifications/cybersecurity-awareness-professional/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/certifications/cybersecurity-awareness-professional/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/certifications/cybersecurity-awareness-professional/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/certifications/cybersecurity-awareness-professional.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.75</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/projects/ancorapro/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/ancorapro/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/ancorapro/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/ancorapro/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/ancorapro-poster.png</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/projects/ai-feeds/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/ai-feeds/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/ai-feeds/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/ai-feeds/" />
<image:image>
<image:loc>https://www.matthewswong.com/AiFeeds.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/projects/review-ci/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/review-ci/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/review-ci/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/review-ci/" />
<image:image>
<image:loc>https://www.matthewswong.com/ReviewCI.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/projects/jakarta-intl-denso/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/jakarta-intl-denso/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/jakarta-intl-denso/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/jakarta-intl-denso/" />
<image:image>
<image:loc>https://www.matthewswong.com/jid-web.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/projects/parcel-cirebon/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/parcel-cirebon/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/parcel-cirebon/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/parcel-cirebon/" />
<image:image>
<image:loc>https://www.matthewswong.com/parcel-cirebon.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/projects/tiktok-agency-incubator/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/tiktok-agency-incubator/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/tiktok-agency-incubator/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/tiktok-agency-incubator/" />
<image:image>
<image:loc>https://www.matthewswong.com/tiktok-agency.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/projects/shibui-matcha-bar/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/shibui-matcha-bar/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/shibui-matcha-bar/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/shibui-matcha-bar/" />
<image:image>
<image:loc>https://www.matthewswong.com/shibui-lp.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/projects/mpilates/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/mpilates/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/mpilates/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/mpilates/" />
<image:image>
<image:loc>https://www.matthewswong.com/mpilates-web.png</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/projects/stadpass/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/stadpass/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/stadpass/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/stadpass/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/STADPASS%2520Project.jpeg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/projects/observer-kpu/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/observer-kpu/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/observer-kpu/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/observer-kpu/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/Observer%2520KPU%2520Project.jpeg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/projects/credit-risk-analysis/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/credit-risk-analysis/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/credit-risk-analysis/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/credit-risk-analysis/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/rakamin/rakamin-01.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/rakamin/rakamin-02.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/rakamin/rakamin-03.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/rakamin/rakamin-04.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/rakamin/rakamin-05.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/rakamin/rakamin-06.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.matthewswong.com/id/projects/security-onion-lab/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://www.matthewswong.com/en/projects/security-onion-lab/" />
<xhtml:link rel="alternate" hreflang="id" href="https://www.matthewswong.com/id/projects/security-onion-lab/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.matthewswong.com/en/projects/security-onion-lab/" />
<image:image>
<image:loc>https://www.matthewswong.com/images/1.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/5.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/6.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/7.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/8.jpg</image:loc>
</image:image>
<image:image>
<image:loc>https://www.matthewswong.com/images/9.jpg</image:loc>
</image:image>
<lastmod>2026-06-02T03:30:07.786Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
