{"data":[{"slug":"svelte-5-runes-di-project-nyata","title":"Svelte 5 Runes di Project Nyata","description":"Pelajaran dari migrasi nyata: gotcha reaktivitas, performa, dan pola runes yang tidak dijelaskan lengkap di dokumentasi Svelte 5.","publishedAt":"2026-08-14T00:00:00+07:00","updatedAt":null,"tags":["Svelte","Runes","SvelteKit","Production"],"readingMinutes":6,"image":{"url":"https://zal.pages.dev/images/posts/svelte-5-runes-di-project-nyata.png","alt":"Ilustrasi developer menulis kode Svelte 5 Runes di laptop, dengan diagram reaktivitas di layar","width":null,"height":null},"url":"https://zal.pages.dev/blog/svelte-5-runes-di-project-nyata"},{"slug":"menggunakan-gambar-dalam-artikel-teknis","title":"Menggunakan Gambar dalam Artikel Teknis","description":"Contoh sederhana menggunakan gambar, alt text, dan caption untuk membantu pembaca memahami ide teknis.","publishedAt":"2026-06-16T00:00:00+07:00","updatedAt":null,"tags":["Writing","Documentation","Developer Experience","Visual Communication"],"readingMinutes":3,"image":{"url":"https://zal.pages.dev/images/og/menggunakan-gambar-dalam-artikel-teknis.jpg","alt":"Laptop yang menampilkan diagram arsitektur perangkat lunak dan dokumentasi visual","width":1200,"height":630},"url":"https://zal.pages.dev/blog/menggunakan-gambar-dalam-artikel-teknis"},{"slug":"perjalanan-spiritualitas-programmer-php","title":"Perjalanan Spiritualitas Programmer PHP","description":"Sebuah video tentang perjalanan di balik kehidupan programmer, disajikan melalui obrolan yang lebih santai dan personal.","publishedAt":"2026-06-16T00:00:00+07:00","updatedAt":null,"tags":["Video","PHP","Refleksi","Kehidupan Programmer"],"readingMinutes":2,"image":{"url":"https://zal.pages.dev/images/og/perjalanan-spiritualitas-programmer-php.jpg","alt":"Thumbnail video Perjalanan Spiritualitas Programmer PHP","width":1200,"height":630},"url":"https://zal.pages.dev/blog/perjalanan-spiritualitas-programmer-php"},{"slug":"merancang-ai-agent-yang-siap-production","title":"Merancang AI Agent yang Siap Production","description":"Prinsip praktis untuk membangun AI agent yang terukur, dapat diawasi, dan aman saat menggunakan tools serta function calling.","publishedAt":"2026-06-15T00:00:00+07:00","updatedAt":null,"tags":["AI Agents","Function Calling","Architecture","Production"],"readingMinutes":4,"image":null,"url":"https://zal.pages.dev/blog/merancang-ai-agent-yang-siap-production"},{"slug":"arsitektur-mobile-offline-aware","title":"Membangun Aplikasi Mobile yang Offline-Aware","description":"Pola arsitektur untuk menjaga aplikasi mobile tetap berguna saat jaringan lambat, tidak stabil, atau benar-benar terputus.","publishedAt":"2026-06-13T00:00:00+07:00","updatedAt":null,"tags":["Mobile","Offline First","Architecture","User Experience"],"readingMinutes":4,"image":null,"url":"https://zal.pages.dev/blog/arsitektur-mobile-offline-aware"},{"slug":"puisi-dibulan-juni","title":"Aku Berusaha Membawamu Pulang","description":"Tentang usaha, keterbatasan, dan keberanian untuk tetap berjalan meski tak tahu ujungnya.","publishedAt":"2026-06-12T00:00:00+07:00","updatedAt":null,"tags":["Puisi","Refleksi","Kehidupan","Usaha"],"readingMinutes":3,"image":null,"url":"https://zal.pages.dev/blog/puisi-dibulan-juni"},{"slug":"membuat-typescript-sdk-yang-nyaman-digunakan","title":"Membuat TypeScript SDK yang Nyaman Digunakan","description":"Catatan praktis tentang merancang API client yang sederhana, type-safe, mudah diuji, dan tidak merepotkan pengguna.","publishedAt":"2026-06-11T00:00:00+07:00","updatedAt":null,"tags":["TypeScript","SDK","API Design","Developer Experience"],"readingMinutes":3,"image":null,"url":"https://zal.pages.dev/blog/membuat-typescript-sdk-yang-nyaman-digunakan"},{"slug":"building-this-blog-with-mdsvex","title":"Building This Blog with mdsvex","description":"How this site turns plain Markdown files into fully prerendered, type-safe blog posts on SvelteKit.","publishedAt":"2026-06-10T00:00:00+07:00","updatedAt":"2026-09-30T00:00:00+07:00","tags":["SvelteKit","mdsvex","Markdown"],"readingMinutes":2,"image":null,"url":"https://zal.pages.dev/blog/building-this-blog-with-mdsvex"},{"slug":"menguji-fitur-llm-secara-praktis","title":"Menguji Fitur LLM secara Praktis","description":"Cara sederhana menyusun evaluasi untuk fitur berbasis LLM dengan skenario nyata, rubric yang jelas, dan pemeriksaan otomatis.","publishedAt":"2026-06-09T00:00:00+07:00","updatedAt":null,"tags":["LLM","Testing","Evaluation","AI Engineering"],"readingMinutes":4,"image":null,"url":"https://zal.pages.dev/blog/menguji-fitur-llm-secara-praktis"},{"slug":"debugging-tanpa-terlalu-banyak-menebak","title":"Debugging Tanpa Terlalu Banyak Menebak","description":"Catatan sederhana tentang mempersempit masalah, membaca bukti, dan memperbaiki bug tanpa menambah bug baru.","publishedAt":"2026-06-08T00:00:00+07:00","updatedAt":null,"tags":["Debugging","Engineering","Observability","Problem Solving"],"readingMinutes":3,"image":{"url":"https://zal.pages.dev/images/posts/debugging-tanpa-terlalu-banyak-menebak.jpg","alt":"Ilustrasi developer membaca sinyal debugging dari log, grafik, dan potongan kode","width":1672,"height":941},"url":"https://zal.pages.dev/blog/debugging-tanpa-terlalu-banyak-menebak"},{"slug":"mengubah-data-teknis-menjadi-tampilan-yang-mudah-dipahami","title":"Mengubah Data Teknis Menjadi Tampilan yang Mudah Dipahami","description":"Catatan tentang memilih informasi, visualisasi, dan interaksi ketika data kompleks perlu digunakan oleh orang biasa.","publishedAt":"2026-06-07T00:00:00+07:00","updatedAt":null,"tags":["Data Visualization","UI Engineering","Product","User Experience"],"readingMinutes":4,"image":null,"url":"https://zal.pages.dev/blog/mengubah-data-teknis-menjadi-tampilan-yang-mudah-dipahami"},{"slug":"merancang-api-yang-tidak-mudah-merepotkan","title":"Merancang API yang Tidak Mudah Merepotkan","description":"Beberapa kebiasaan kecil untuk membuat API lebih konsisten, mudah dipahami, dan tetap nyaman saat kebutuhan berubah.","publishedAt":"2026-06-06T00:00:00+07:00","updatedAt":null,"tags":["API Design","Backend","REST","Developer Experience"],"readingMinutes":3,"image":null,"url":"https://zal.pages.dev/blog/merancang-api-yang-tidak-mudah-merepotkan"},{"slug":"menjaga-fitur-tetap-konsisten-di-web-dan-mobile","title":"Menjaga Fitur Tetap Konsisten di Web dan Mobile","description":"Pelajaran praktis ketika satu fitur harus hadir di dua platform dengan kemampuan dan kebiasaan pengguna yang berbeda.","publishedAt":"2026-06-05T00:00:00+07:00","updatedAt":null,"tags":["Web","Mobile","Product Engineering","Architecture"],"readingMinutes":4,"image":null,"url":"https://zal.pages.dev/blog/menjaga-fitur-tetap-konsisten-di-web-dan-mobile"},{"slug":"deploying-sveltekit-to-cloudflare-pages","title":"Deploying SvelteKit to Cloudflare Pages","description":"A lean, fully static deployment pipeline for SvelteKit using the Cloudflare adapter and GitHub Actions.","publishedAt":"2026-05-28T00:00:00+07:00","updatedAt":null,"tags":["Cloudflare","SvelteKit","Deployment"],"readingMinutes":1,"image":null,"url":"https://zal.pages.dev/blog/deploying-sveltekit-to-cloudflare-pages"},{"slug":"svelte-5-runes-migration-notes","title":"Notes on Migrating to Svelte 5 Runes","description":"A practical mapping from Svelte 4 idioms to Svelte 5 runes, and why the compiler stays quiet during the transition.","publishedAt":"2026-05-12T00:00:00+07:00","updatedAt":null,"tags":["Svelte","Runes","Refactoring"],"readingMinutes":1,"image":null,"url":"https://zal.pages.dev/blog/svelte-5-runes-migration-notes"}],"meta":{"version":"1","total":15}}