[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fS0oYdePKHkmaCWnntDmgC3OKUFL-yU60ESTdptL9P28":3},[4,20,34,48,63,76,88,99,114,129,145,159,173,186,198,215,232,248,262,276],{"id":5,"slug":6,"titleFr":7,"titleEn":8,"titleKm":9,"excerptFr":10,"excerptEn":11,"excerptKm":9,"tags":12,"createdAt":19,"updatedAt":19},124,"migrer-base-donnees-scaleway-serverless-sql","Migrer ma base de données sans perdre un octet : Neon → Scaleway Serverless SQL","Migrating my database without losing a byte: Neon → Scaleway Serverless SQL",null,"Le chapitre final de la migration souveraine : déplacer une base PostgreSQL complète vers Scaleway Serverless SQL, zéro perte — avec les deux pièges (username = ID app IAM, search_path vide) qui m'ont coûté une heure.","The final chapter of the sovereign migration: moving a full PostgreSQL database to Scaleway Serverless SQL, zero loss — with the two pitfalls (username = IAM app ID, empty search_path) that cost me an hour.",[13,14,15,16,17,18],"scaleway","postgresql","migration","serverless-sql","souveraineté","devops","2026-07-13T14:14:23.303711",{"id":21,"slug":22,"titleFr":23,"titleEn":24,"titleKm":9,"excerptFr":25,"excerptEn":26,"excerptKm":9,"tags":27,"createdAt":32,"updatedAt":33},122,"ia-locale-souveraine","Mon IA de dev tourne 100% en local (et pourquoi)","My dev AI runs 100% locally (and why)","Confidentialité et souveraineté jusque dans l'IA : une stack d'inférence on-device sur GPU/NPU, zéro ligne de code envoyée dans le cloud.","Privacy and sovereignty down to the AI: an on-device inference stack on GPU/NPU, zero lines of code sent to the cloud.",[28,17,29,30,31],"IA","ollama","local","privacy","2026-07-06T10:00:00","2026-07-06T17:21:53.997351",{"id":35,"slug":36,"titleFr":37,"titleEn":38,"titleKm":9,"excerptFr":39,"excerptEn":40,"excerptKm":9,"tags":41,"createdAt":46,"updatedAt":47},121,"ai-augmented-dev-infrastructure","L'IA comme infrastructure d'équipe : 63 skills, +40% de productivité","AI as team infrastructure: 63 skills, +40% productivity","Ni gadget ni chatbot : comment j'ai transformé l'IA en infrastructure d'équipe versionnée — 63 skills, 15 serveurs MCP, résultats mesurés.","Neither gadget nor chatbot: how I turned AI into versioned team infrastructure — 63 skills, 15 MCP servers, measured results.",[28,42,43,44,45],"claude-code","mcp","productivité","management","2026-06-22T10:00:00","2026-07-06T17:21:53.517621",{"id":49,"slug":50,"titleFr":51,"titleEn":52,"titleKm":9,"excerptFr":53,"excerptEn":54,"excerptKm":9,"tags":55,"createdAt":61,"updatedAt":62},120,"apprendre-ne-pas-perdre-pied","Ne pas perdre pied : pourquoi je me suis construit une plateforme d'apprentissage","Not falling behind: why I built myself a learning platform","La peur de perdre pied que peu d'ingénieurs osent avouer — et l'espace que j'ai construit pour continuer à nourrir mon cerveau, un module à la fois.","The fear of falling behind few engineers admit — and the space I built to keep feeding my brain, one module at a time.",[56,57,58,59,60],"apprentissage","learn","ML","carrière","opinion","2026-06-08T10:00:00","2026-07-06T17:21:52.406834",{"id":64,"slug":65,"titleFr":66,"titleEn":67,"titleKm":9,"excerptFr":68,"excerptEn":69,"excerptKm":9,"tags":70,"createdAt":74,"updatedAt":75},123,"scale-to-zero-cout-quasi-zero","Scale-to-zero : de 30 €/mois à presque rien","Scale-to-zero: from €30/month to almost nothing","Comment le scale-to-zero transforme une facture compute fixe en dépense proportionnelle à l'usage réel — chiffres, tableau comparatif et le piège du cold start.","How scale-to-zero turns a fixed compute bill into usage-proportional spend — numbers, comparison table, and the cold-start pitfall.",[13,71,72,73,18],"finops","serverless","coûts","2026-05-25T10:00:00","2026-07-06T17:21:54.473772",{"id":77,"slug":78,"titleFr":79,"titleEn":80,"titleKm":9,"excerptFr":81,"excerptEn":82,"excerptKm":9,"tags":83,"createdAt":86,"updatedAt":87},119,"migration-gcp-vercel-scaleway","Comment j'ai migré 7 applis vers Scaleway sans perdre une donnée","How I migrated 7 apps to Scaleway without losing a byte","Le récit technique : GCP/Vercel/Neon → Scaleway, adaptateur GCS→S3, scale-to-zero, TLS auto, et les pièges rencontrés en chemin.","The technical story: GCP/Vercel/Neon → Scaleway, a GCS→S3 adapter, scale-to-zero, auto TLS, and the pitfalls hit along the way.",[13,15,18,84,85],"s3","docker","2026-05-11T10:00:00","2026-07-06T16:40:30.687196",{"id":89,"slug":90,"titleFr":91,"titleEn":92,"titleKm":9,"excerptFr":93,"excerptEn":94,"excerptKm":9,"tags":95,"createdAt":97,"updatedAt":98},118,"pourquoi-scaleway-souverainete","Pourquoi je migre mon petit coin du web vers Scaleway","Why I'm moving my little corner of the web to Scaleway","Souveraineté numérique : pourquoi un portfolio modeste quitte le cloud américain pour un hébergeur français — par principe, et accessoirement pour moins cher.","Digital sovereignty: why a modest portfolio leaves the American cloud for a French host — on principle, and incidentally for less money.",[17,13,96,60],"cloud","2026-04-27T10:00:00","2026-07-06T16:40:29.254402",{"id":100,"slug":101,"titleFr":102,"titleEn":103,"titleKm":9,"excerptFr":104,"excerptEn":105,"excerptKm":9,"tags":106,"createdAt":113,"updatedAt":113},117,"medialist-rust-tracker","J'ai construit un tracker multimédia en Rust pour garder les mains dans le cambouis","I built a multimedia tracker in Rust to keep my hands dirty","Dragon Ball Z sur le Club Dorothée, cinq ans, un samedi matin. Trente ans plus tard, Engineering Manager — et l'envie de construire quelque chose de complexe juste pour voir si je suis encore capable de le faire.","Dragon Ball Z on Club Dorothée, five years old, a Saturday morning. Thirty years later, Engineering Manager — and the urge to build something complex just to see if I'm still capable of doing it.",[107,108,109,110,111,112],"Rust","Side Project","Engineering Manager","Anime","Architecture","PostgreSQL","2026-03-08T00:00:00",{"id":115,"slug":116,"titleFr":117,"titleEn":118,"titleKm":119,"excerptFr":120,"excerptEn":121,"excerptKm":122,"tags":123,"createdAt":128,"updatedAt":128},113,"stripe-adyen-oms-integration","PSP et OMS B2B : pourquoi on a tout gardé sur Adyen (y compris la marketplace)","PSP and B2B OMS: Why We Kept Everything on Adyen (Including Marketplace)","PSP និង OMS B2B ៖ ហេតុអ្វីបានជាយើងរក្សាគ្រប់យ៉ាងនៅលើ Adyen","LemonWay et MangoPay hors jeu. Stripe Connect envisagé pour la marketplace, mais écarté pour des raisons réglementaires et de partenariat Adyen. Retour sur plusieurs mois d'aller-retour pour finir avec Adyen pour tout — et une architecture interne pour la marketplace.","LemonWay and MangoPay out of the picture. Stripe Connect considered for marketplace, rejected for regulatory and partnership reasons. A look back at months of back-and-forth before landing on Adyen for everything — with an internal split architecture for marketplace.","LemonWay/MangoPay ចេញ ។ Stripe Connect វាយតម្លៃ marketplace ប៉ុន្តែបដិសេធ ។ Adyen សម្រាប់គ្រប់ use cases + architecture interne split ។",[124,125,126,127,111],"Payment","Adyen","API","OMS","2026-03-06T19:00:00",{"id":130,"slug":131,"titleFr":132,"titleEn":133,"titleKm":134,"excerptFr":135,"excerptEn":136,"excerptKm":137,"tags":138,"createdAt":144,"updatedAt":144},110,"daily-pushup-tracker-52-jours","52 jours de pompes : comment j'ai gamifié ma discipline avec du code","52 days of pushups: how I gamified my discipline with code","រាំងដៃ ៥២ ថ្ងៃ៖ របៀបដែលខ្ញុំបានប្រើ gamification លើវិន័យរបស់ខ្ញុំជាមួយកូដ","Comment un simple défi de pompes quotidiennes est devenu une application Android avec widget, Google OAuth et 52 jours de streak ininterrompu.","How a simple daily pushup challenge became an Android app with widget, Google OAuth and 52 days of unbroken streak.","របៀបដែលបញ្ហាប្រឈមរាំងដៃប្រចាំថ្ងៃបានក្លាយជាកម្មវិធី Android ជាមួយ widget, Google OAuth និង streak ៥២ ថ្ងៃ។",[139,140,141,142,143,108],"Android","Kotlin","OAuth","Gamification","Health","2026-02-27T19:00:00",{"id":146,"slug":147,"titleFr":148,"titleEn":149,"titleKm":150,"excerptFr":151,"excerptEn":152,"excerptKm":153,"tags":154,"createdAt":158,"updatedAt":158},115,"back-foc-collaboration-sdk","Back et FOC : comment on a mis fin à deux ans de frustrations en une réunion","Back and FOC: How We Ended Two Years of Frustration in One Meeting","Back និង FOC ៖ របៀបដែលយើងបញ្ចប់ភាពខ្វះខាតក្នុងការ Meeting មួយ","Le FOC et le Back se reprochaient mutuellement de ne pas s'écouter. Après des mois de rétros sans résolution, une réunion a tout changé — en posant d'abord une vision claire du rôle du SDK et du partenariat Back/FOC.","FOC and Backend were accusing each other of not listening. After months of unresolved retros, one meeting changed everything — by first establishing a clear vision of the SDK's role and the Back/FOC partnership.","FOC និង Back បានស្តីបន្ទោសគ្នា ។ ក្រោយ retrospectives ច្រើនខែដោយគ្មានការដោះស្រាយ Meeting មួយបានផ្លាស់ប្តូរអ្វីៗ ។",[155,126,156,157,111],"Management","SDK","Collaboration","2026-02-20T19:00:00",{"id":160,"slug":161,"titleFr":162,"titleEn":163,"titleKm":164,"excerptFr":165,"excerptEn":166,"excerptKm":167,"tags":168,"createdAt":172,"updatedAt":172},105,"api-design-first-philosophie","API Design-First : quand le contrat précède le code","API Design-First: When the Contract Comes Before the Code","API Design-First ៖ contract មុន code","Chez DJUST, notre PM écrit les contrats OpenAPI en YAML avant que les devs codent. Retour d'expérience sur le design-first : workflow concret, cas des APIs cachées où les devs ont liberté totale, et les défis réels de cette approche.","At DJUST, our PM writes OpenAPI contracts in YAML before devs code. Experience report on design-first: concrete workflow, hidden APIs where devs have total freedom, and the real challenges of this approach.","នៅ DJUST PM សរសេរ OpenAPI contracts YAML មុន code ។ Retour d'expérience on design-first workflow challenges and LLM as next step ។",[126,169,111,170,171],"Design-First","OpenAPI","Engineering","2026-02-13T19:00:00",{"id":174,"slug":175,"titleFr":176,"titleEn":177,"titleKm":178,"excerptFr":179,"excerptEn":180,"excerptKm":181,"tags":182,"createdAt":185,"updatedAt":185},108,"openapi-contract-diff-outil","J'ai construit un outil de diff OpenAPI en un jour — et ça a changé notre workflow","I Built an OpenAPI Diff Tool in a Day — and It Changed Our Workflow","ខ្ញុំបានបង្កើតឧបករណ៍ OpenAPI Diff ក្នុង ១ ថ្ងៃ","On pratique le design-first chez DJUST — le PM écrit le contrat avant le code. Mais sans outil pour vérifier la dérive, les contrats divergent silencieusement. Voici comment j'ai résolu ce problème en une journée avec Vaadin.","We practice design-first at DJUST — the PM writes the contract before the code. But without a tool to check drift, contracts diverge silently. Here's how I solved this in one day with Vaadin.","នៅ DJUST យើងប្រើ design-first API — PM សរសេរ contract មុន code ។ ប៉ុន្តែ contract និង code បែកចេញដោយស្ងៀម។ ខ្ញុំបានដោះស្រាយបញ្ហានេះក្នុង ១ ថ្ងៃ។",[170,126,169,183,184],"Tools","Java","2026-02-06T19:00:00",{"id":187,"slug":188,"titleFr":189,"titleEn":190,"titleKm":9,"excerptFr":191,"excerptEn":192,"excerptKm":9,"tags":193,"createdAt":197,"updatedAt":197},111,"qa-en-2026","QA en 2026 : dernier rempart ou poste en sursis ?","QA in 2026: Last Line of Defense or a Role on Borrowed Time?","Dans une startup qui réduit ses effectifs, j'ai défendu le poste QA. Retour sur le parcours d'une ex-dev C# devenue la dernière QA de la boîte — et pourquoi avec l'IA, son rôle n'a jamais été aussi crucial.","In a startup cutting headcount, I defended the QA role. The story of a former C# developer who became the last QA standing — and why with AI, her rôle has never been more crucial.",[194,155,195,196,171],"QA","AI","Startup","2026-01-30T19:00:00",{"id":199,"slug":200,"titleFr":201,"titleEn":202,"titleKm":203,"excerptFr":204,"excerptEn":205,"excerptKm":206,"tags":207,"createdAt":214,"updatedAt":214},112,"aws-gcp-migration-startup-b2b","Quand Google Cloud vous courtise : pourquoi on est resté sur AWS (et ce qu'on y a perdu)","When Google Cloud courts you: why we stayed on AWS (and what we lost)","នៅពេល Google Cloud អញ្ជើញអ្នក៖ ហេតុអ្វីយើងនៅលើ AWS (និងអ្វីដែលយើងបានបាត់)","Google nous a proposé de migrer de AWS vers GCP avec accompagnement et crédits. Avec 2 DevOps et des clients enterprise, on a choisi de rester. Analyse technique complète AWS vs GCP et leçons apprises.","Google offered to migrate us from AWS to GCP with support and credits. With 2 DevOps and enterprise clients, we chose to stay. Complete AWS vs GCP technical analysis and lessons learned.","Google បានស្នើឱ្យយើងផ្លាស់ប្តូរពី AWS ទៅ GCP ជាមួយការគាំទ្រ និង credits។ ជាមួយ DevOps ២ នាក់ និងអតិថិជន enterprise យើងបានជ្រើសរើសនៅ។ ការវិភាគបច្ចេកទorg ពេញលេorg AWS vs GCP។",[208,209,210,211,212,213],"AWS","GCP","Cloud","DevOps","Kubernetes","Infrastructure","2026-01-23T19:00:00",{"id":216,"slug":217,"titleFr":218,"titleEn":219,"titleKm":220,"excerptFr":221,"excerptEn":222,"excerptKm":223,"tags":224,"createdAt":231,"updatedAt":231},104,"coffre-photo-pwa-flutter-optimisation-memoire","Construire une app photo privée cross-platform : de la mémoire humaine à la gestion mémoire GPU","Building a private cross-platform photo app: from human memory to GPU memory management","ការបង្កើត app រូបថតឯកជន cross-platform: ពីការចងចាំរបស់មនុស្ស រហូតដល់ GPU memory management","De l'album photo de ma grand-mère à une PWA Flutter optimisée pour iOS et Android : retour d'expérience complet sur les défis de la gestion mémoire GPU, du protocole Open Graph, des signed URLs GCS, et du sémaphore pour contrôler les requêtes réseau concurrentes.","From my grandmother's photo album to an optimized Flutter PWA for iOS and Android: a complete experience report on GPU memory management challenges, the Open Graph protocol, GCS signed URLs, and semaphore-based network concurrency control.","ពីអាល់ប៊ុមរូបថតរបស់យាយ រហូតដល់ Flutter PWA ដែលបានធ្វើ optimize សម្រាប់ iOS និង Android: របាយការណ៍បទពិសោធន៍ពេញលេញ លើ GPU memory, Open Graph protocol, GCS signed URLs, និង semaphore concurrency control។",[225,226,227,228,229,230],"Flutter","PWA","GCS","Performance","OpenGraph","Mobile","2026-01-16T19:00:00",{"id":233,"slug":234,"titleFr":235,"titleEn":236,"titleKm":237,"excerptFr":238,"excerptEn":239,"excerptKm":240,"tags":241,"createdAt":247,"updatedAt":247},106,"java-backend-developer-evolution-2026","Java est-il en train de mourir ? Analyse d'un développeur backend avec 18 ans de recul","Is Java dying? Analysis from a backend developer with 18 years of hindsight","តើ Java កំពុងស្លាប់ទេ? ការវិភាគពីអ្នកអភិវឌ្ឍន៍ backend ជាមួយបទពិសោធន៍ ១៨ ឆ្នាំ","De Java EE en 2008 à Nuxt + Vercel en 2026 : retour sur 18 ans d'évolution du développement backend. Pourquoi Java n'est pas mort, mais pourquoi il n'est plus la réponse à tout.","From Java EE in 2008 to Nuxt + Vercel in 2026: looking back at 18 years of backend development evolution. Why Java isn't dead, but why it's no longer the answer to everything.","ពី Java EE ក្នុង 2008 ដល់ Nuxt + Vercel ក្នុង 2026៖ មើលថយក្រោយ ១៨ ឆ្នាំនៃការវិវត្តន៍ backend។ ហេតុអ្វី Java មិនស្លាប់ ប៉ុន្តែហេតុអ្វីវាមិនមែនជាចម្លើយចំពោះអ្វីៗទាំងអស់។",[184,242,243,244,245,246],"Spring Boot","Career","Backend","TypeScript","Serverless","2026-01-09T19:00:00",{"id":249,"slug":250,"titleFr":251,"titleEn":252,"titleKm":253,"excerptFr":254,"excerptEn":255,"excerptKm":256,"tags":257,"createdAt":261,"updatedAt":261},107,"dark-theme-light-theme-transition","Du dark theme au light theme : pourquoi j'ai changé après 10 ans","From dark theme to light theme: why I switched after 10 years","ពី dark theme ទៅ light theme៖ ហេតុអ្វីខ្ញុំផ្លាស់ប្តូរបន្ទាប់ពី ១៥ ឆ្នាំ","Après plus de 10 ans de dark theme, j'ai basculé en light. Physiologie, science, écrans modernes et évolution personnelle : pourquoi ce n'est pas une trahison mais une maturité.","After over 10 years of dark theme, I switched to light. Physiology, science, modern screens and personal evolution: why it's not betrayal but maturity.","បន្ទាប់ពី ១៥ ឆ្នាំនៃ dark theme ខ្ញុំបានផ្លាស់ប្តូរទៅ light។ រូបវិទ្យា វិទ្យាសាស្ត្រ អេក្រង់ទំនើប និងការវិវត្តន៍ផ្ទាល់ខ្លួន៖ ហេតុអ្វីវាមិនមែនជាការក្បត់ ប៉ុន្តែជាភាពចាស់ទុំ។",[258,259,260],"Opinion","Developer Life","UX","2026-01-02T19:00:00",{"id":263,"slug":264,"titleFr":265,"titleEn":266,"titleKm":267,"excerptFr":268,"excerptEn":269,"excerptKm":270,"tags":271,"createdAt":275,"updatedAt":275},114,"claude-code-equipe-engineering","Comment j'ai intégré Claude Code dans mon équipe d'engineering","How I integrated Claude Code into my engineering team","របៀបដែលខ្ញុំបានរួមបញ្ចូល Claude Code ក្នុងក្រុមវិស្វកម្មរបស់ខ្ញុំ","Retour d'expérience honnête sur l'intégration de Claude Code dans une équipe de 5 personnes : premiers résultats après quelques semaines, résistances humaines, et ce qu'on commence à comprendre.","Honest experience report on integrating Claude Code into a team of 5: early results after a few weeks, human resistance, and what we're starting to understand.","របាយការណ៍បទពិសោធន៍លើការរួមបញ្ចូល Claude Code ក្នុងក្រុម ៥ នាក់ (devs + QA)៖ 25+ skills ផ្ទាល់ខ្លួន +៤០% ផលិតភាព ការប្រឆាំង និងមេរៀនដែលបានរៀន។",[195,272,155,273,274],"Claude Code","Productivity","MCP","2025-12-26T19:00:00",{"id":277,"slug":278,"titleFr":279,"titleEn":280,"titleKm":281,"excerptFr":282,"excerptEn":283,"excerptKm":284,"tags":285,"createdAt":291,"updatedAt":291},101,"nuxt4-neon-drizzle-portfolio","Construire un portfolio dynamique avec Nuxt 4, Neon et Drizzle","Building a dynamic portfolio with Nuxt 4, Neon and Drizzle","បង្កើតផលប័ត្រថាមវន្តជាមួយ Nuxt 4, Neon និង Drizzle","Retour d'expérience complet sur la migration d'un CV HTML statique vers Nuxt 4 + Neon PostgreSQL + Drizzle ORM : choix techniques, pièges rencontrés, et leçons d'un développeur Java.","Complete experience report on migrating a static HTML CV to Nuxt 4 + Neon PostgreSQL + Drizzle ORM: technical choices, pitfalls, and lessons from a Java developer.","បទពិសោធន៍ពីការផ្លាស់ប្តូរ CV HTML ស្ថិតិទៅ Nuxt 4 + Neon + Drizzle។",[286,287,288,289,245,290],"Nuxt","Neon","Drizzle","Vue","Vercel","2025-12-19T19:00:00"]