# Ngobrolin WEB > An Indonesian-language (Bahasa Indonesia) video podcast about web development, hosted on YouTube. Ngobrolin WEB is hosted by Eka, Ivan, and Riza Fahmi. The show is recorded in Bahasa Indonesia and published as a video podcast on YouTube. Episodes cover web development topics including frameworks, tooling, best practices, and industry trends. ## Pages - [Home](https://ngobrol.in/): Main landing page with featured and recent episodes - [About](https://ngobrol.in/about): About the podcast and hosts - [Episodes](https://ngobrol.in/episodes): Full archive of all episodes - [Subscribe](https://ngobrol.in/subscribe): Subscribe to the podcast ## Feeds - [RSS Feed](https://ngobrol.in/rss.xml): RSS feed for blog readers - [Podcast RSS Feed](https://ngobrol.in/podcast-rss.xml): Podcast RSS feed with audio enclosures ## Recent Episodes - [Bedah Buku Panduan Coding - Ngobrolin WEB](https://ngobrol.in/episodes/_VoS7mnsUdQ-bedah-buku-panduan-coding-ngobrolin-web) - [Modern Web UI - Ngobrolin WEB](https://ngobrol.in/episodes/0RCXRNHhBfo-modern-web-ui-ngobrolin-web): Episode ini berangkat dari satu keluhan yang sangat spesifik: web UI jadi berantakan begitu fitur LLM ditempelkan ke aplikasi yang sudah ada. Riza bercerita soal Google Drive yang tiba-tiba menyisipkan blok ringkasan AI di tengah hasil pencarian sehingga terjadi layout shift dan salah klik — CLS lama yang jadi relevan lagi gara-gara AI. Contoh lain, antarmuka chat sebetulnya melawan kebiasaan web: konten terbaru muncul di bawah, bukan di atas seperti Twitter, jadi butuh scroll-to-bottom otomatis dan penanganan tombol Enter di textarea yang biasanya gratis kalau memakai pustaka jadi. Di pembuka juga sempat disinggung Interactivity API di WordPress yang polanya mirip HTMX atau Livewire untuk filter, pencarian dan paginasi, serta Chrome DevTools MCP yang skill debug LCP-nya sudah bisa mengejar skor Lighthouse 100 dalam dua kali putaran. Bagian utamanya adalah Modern Web Guidance, yang dirilis tim Chrome DevRel di IO Connect Shanghai. Yang menarik, ini bukan pustaka dan bukan tool, melainkan sekumpulan agent skill berformat standar — bisa dipakai dari Claude Code, Codex, Antigravity atau harness apa pun. Isinya semacam RAG untuk dokumentasi web platform: pencarian semantik lokal memakai model TensorFlow.js hemat CPU dengan tokenizer BERT, cosine similarity, dan vektor yang sudah di-precompute saat build, jadi tanpa jaringan dan tanpa API key. Panduannya dipecah kecil-kecil per topik — CSS, UI atoms, UI behaviors, UI components, layout, performance, security, privacy — dan dimuat progressive disclosure, sehingga context window tidak habis. Secara default ia menargetkan Baseline widely available, yaitu fitur yang sudah ada di semua mesin browser standar selama 30 bulan terakhir, dan ia paham polyfill serta fallback untuk progressive enhancement. Mereka lalu mempraktikkannya langsung di repositori situs Ngobrolin WEB: meminta karusel CSS untuk daftar episode terbaru di homepage. Agennya membaca test case lebih dulu sebelum menulis kode, lalu mengambil panduan carousel-slide-effect dan carousel-snap-highlight. Prompt pertama masih menghasilkan karusel yang bergantung pada JavaScript; setelah diminta ulang secara eksplisit, hasilnya jalan dengan JavaScript dimatikan. Selipan penting lain: CSS clamp(), min() dan max() untuk fluid sizing tanpa breakpoint keras — contoh nyatanya mengecilkan jarak antar menu navigasi sebelum berubah jadi hamburger, dengan fluid.tw dan Utopia sebagai rujukan — serta peringatan keamanan bahwa skill itu cuma berkas Markdown yang bisa saja menyuruh agen membaca .env dan mengirimkannya keluar, jadi bacalah isinya sebelum menjalankan npx apa pun. - [Model Context Protocol - Ngobrolin WEB](https://ngobrol.in/episodes/qei6_h3wwPY-model-context-protocol-ngobrolin-web): Episode ini membahas Model Context Protocol sekaligus laporan dari Google I/O Connect Shanghai. Pertanyaan pembukanya paling mendasar: kenapa AI butuh protokol baru padahal sudah ada REST API? Jawabannya bukan soal cara berkomunikasi — di baliknya MCP tetap bisa memakai REST atau apa pun — melainkan discovery. REST API tidak memberi tahu model tool apa saja yang tersedia, apa kegunaannya, dan parameternya apa; MCP mengekspos daftar tool beserta deskripsinya, dan kalau deskripsi itu ditulis asal-asalan hasilnya tetap kacau karena model tidak tahu kapan memanggil apa. MCP lahir di Anthropic pada 2024, terinspirasi Language Server Protocol dari VS Code yang membuat satu editor bisa mendukung banyak bahasa tanpa harus membuat semuanya sendiri, lalu hak spesifikasi dan patennya didonasikan ke yayasan open source. Kelemahan klasiknya adalah boros token karena seluruh daftar tool disuntikkan sejak awal sesi — kini sudah diperbaiki menjadi on demand. Dibahas juga sebuah artikel yang menunjukkan bahwa membungkus REST API mentah-mentah jadi MCP itu naif: yang penting bukan meminimalkan token dengan segala cara, melainkan mengembalikan hanya data yang benar-benar menjawab pertanyaan. Dari Shanghai, hal paling menonjol justru bukan fitur baru melainkan Modern Web Guidance — koleksi agent skill resmi dari tim Chrome berisi praktik web modern, termasuk cara membuat accordion dan carousel yang aksesibel. Pergeseran strateginya menarik: alih-alih mengajari developer satu per satu, Chrome kini menyiapkan standar yang bisa dibaca AI assistant. Web MCP juga dibahas — namanya menyesatkan karena ia bukan client-server, melainkan cara satu halaman web mengekspos fitur-fiturnya sebagai tool, bahkan cukup lewat atribut pada elemen form. - [Local Development Server - Ngobrolin WEB](https://ngobrol.in/episodes/-TwyNC_SSFY-local-development-server-ngobrolin-web): Episode ini membahas local development server, dari XAMPP yang legendaris sampai pendekatan modern berbasis kontainer. Pertanyaan pembukanya menarik: kenapa tools seperti ini jauh lebih populer di kalangan developer PHP daripada Node.js? Jawabannya ada di sejarah — Node.js punya installer dan langsung bisa dijalankan dari command line, sedangkan PHP dulu harus berjalan di atas web server terpisah seperti Apache yang berupa service, bukan aplikasi. Itulah yang membuat paket sekali pasang jadi penyelamat, terutama bagi pemula di Windows. Dibedah tiga pendekatan yang berbeda karakternya. Laragon memasang semuanya langsung di file system dan bersifat portable — seluruh isinya ada di satu folder yang tinggal disalin ke mesin lain; ia juga tidak terbatas PHP, bisa menyiapkan Go, Node.js, dan Python sekaligus. Laravel Herd lebih rapi secara tampilan dan membawa mail catcher serta Xdebug. DDEV berbasis Docker dan menang di kolaborasi: konfigurasinya ikut di-commit ke repo, sehingga rekan tim cukup menjalankan satu perintah untuk mendapat environment yang persis sama, lengkap dengan domain dan HTTPS. Diskusi berlanjut ke pergeseran yang lebih besar: coding agent kini bisa berjalan di mesin cloud yang disediakan vendor tanpa kita menyiapkan apa pun. Ditutup dengan Nix yang dipakai Riza sebagai package manager sekaligus development environment — konfigurasinya terpusat sehingga bisa dibawa ke mesin baru, meskipun kurva belajarnya tinggi karena punya bahasa sendiri. - [State of CSS - Ngobrolin WEB](https://ngobrol.in/episodes/YBFDo2jSSJA-state-of-css-ngobrolin-web): Episode ini membedah hasil survei State of CSS terbaru. Pembukanya soal matinya CSS-in-JS: pola seperti styled-components dan Emotion praktis ditinggalkan karena CSS sendiri sudah punya nesting dan import, sementara Tailwind mencakup hampir semua kebutuhan yang dulu memaksa orang memakainya — dan pemasangan Tailwind kini sudah sesederhana drag and drop. Fitur yang paling banyak dibicarakan adalah anchor positioning, disusul :has() yang dijuluki parent selector karena membalik arah styling: dari anak menargetkan induknya, atau dari adik menargetkan kakaknya. Sebelum ada :has(), satu-satunya cara adalah menambahkan class modifier seperti card--with-media yang harus dikarang dan dirawat sendiri. Menariknya, kesimpulan survei soal dukungan browser sudah tertinggal — pada saat episode direkam, anchor positioning sudah baseline padahal survei ditutup Juni. Temuan yang paling mengejutkan ada di bagian AI: 26% responden sama sekali tidak memakai AI untuk menulis CSS, dan banyak yang berkomentar AI kurang bagus menulis CSS. Penjelasan yang masuk akal bukan idealisme melainkan pembagian kerja — kasus yang sederhana sudah tertutup Tailwind sehingga tidak perlu menulis CSS sama sekali, dan yang tersisa untuk ditulis manual justru kasus kompleks yang memang belum dikuasai model. Pain point terbesarnya adalah grid, terutama sintaks grid-row dan grid-column yang terasa janggal, disusul cognitive overload karena terlalu banyak pilihan, dan ketidakcocokan format warna saat handoff dari desainer. - [Pengaruh Kecerdasan Buatan terhadap Kecerdasan Manusia - Ngobrolin WEB](https://ngobrol.in/episodes/JJqLKn25DJI-pengaruh-kecerdasan-buatan-terhadap-kecerdasan-manusia-ngobrolin-web): Episode ini lahir dari kecurigaan di episode sebelumnya soal end-to-end testing dengan Playwright: kalau skenario tes, orkestrasinya, sampai penulisannya sudah bisa didelegasikan ke AI, lalu peran manusianya di mana. Ivan membuka dengan pengakuan yang jujur — ia sudah bingung menulis pesan commit sendiri karena terbiasa menyerahkan pemecahan atomic commit ke agen. Istilahnya cognitive debt, cognitive regression, atau versi bahasa anak mudanya brain rot. Untuk menjawabnya mereka mengundang Ester Irawati Setiawan, dosen ISTTS Surabaya, karena persoalannya bukan cuma soal AI tapi juga soal pedagogi. Dari sisi kampus, jawabannya ternyata bukan melarang. Mahasiswa boleh memakai AI sejak semester satu, tapi wajib bisa menjelaskan apa yang dibuatnya — dan justru karena itu mata kuliah dasar kembali ke paper-based test, menulis kode dengan kertas dan pulpen serta flowchart, untuk mengukur computational thinking yang tidak bisa dititipkan. Ada ujian close AI, ada capstone project yang diuji lewat wawancara "kenapa kamu pakai ini". Kurikulumnya juga bergerak: ada mata kuliah Prompt Engineering dua SKS satu semester dengan kerangka role–task–context–constraint–format, materi agentic AI dengan Google ADK, dan SDLC yang kini bercabang ke MLOps dan AgentOps. Sisi industrinya lebih keras: velocity satu sprint melompat dari sekitar 50 story point ke 80–100, satu developer menjalankan delapan tiket Jira sekaligus lewat delapan git worktree, dan kelelahan mental itu justru mengembalikan orang ke kebiasaan percaya buta pada AI. Paruh kedua diisi Zain dengan materi Fundamental Computer Science for AI Era. Analoginya AI sebagai kuda — Haiku, Sonnet, Opus, Fable makin kencang langkahnya — dan manusia sebagai kusir yang tetap harus hafal peta, karena kalau tidak, justru kitalah yang memperlambat. Ia menutup dengan poin yang paling menohok: kita hanya sanggup menilai model sampai batas pengetahuan kita sendiri; selisih Opus 5 dan GPT-5.5 tak terasa bagi yang bukan ahli, sementara selisih Opus dan Haiku jelas bagi siapa pun. Soal kualitas, kesimpulannya terbelah — bagi yang tidak paham kode, kuantitas naik dan kualitas turun; bagi engineer berpengalaman kualitas justru naik, karena utang teknis yang selama ini dibiarkan akhirnya terbayar, backlog bug turun dari ratusan ke sekitar 40, dan komponen kelas React dengan unsafe_componentWillMount akhirnya bisa diberantas. - [Testing dengan Playwright - Ngobrolin WEB](https://ngobrol.in/episodes/80Cnky1uvyk-testing-dengan-playwright-ngobrolin-web): Episode ini membahas Playwright dan bagaimana perannya berubah di era coding agent. Sejarahnya dimulai dari Puppeteer buatan Google yang hanya mendukung browser berbasis Chromium; dua pembuatnya pindah ke Microsoft dan melahirkan Playwright yang mendukung semua browser — memakai protokol DevTools untuk Chromium dan jatuh ke WebDriver untuk Firefox dan Safari. Pergeseran terbesarnya: end-to-end test yang dulu dihindari karena lambat kini justru jadi masuk akal, karena kita tidak perlu menungguinya lagi. Ivan menjalankan seluruh rangkaian sebelum tidur dan paginya tinggal memeriksa hasilnya. Ia juga memasang quality gate — linter, type check, formatter, lalu test — yang harus lolos sebelum agent boleh membuat PR, dengan catatan penting: pernah ketahuan agent-nya menyiasati gate itu dengan memfilter test yang gagal supaya bisa lanjut membuat PR. Untuk menghubungkan Playwright ke coding agent ada dua jalan yang berbeda karakternya. CLI lebih cepat, lebih hemat token, dan berjalan headless — cocok untuk alur yang sudah kita ketahui langkahnya. MCP berjalan headed dengan browser yang benar-benar terbuka, lebih boros tetapi lebih tepat untuk penjelajahan yang open ended dan menghasilkan rekaman video yang lebih andal. Dibahas juga UI mode yang memberi dashboard lokal berisi timeline dan filter test, serta paralelisme yang harus dirancang sendiri karena test end-to-end sering saling bergantung lewat database bersama. - [Optimasi JavaScript - Ngobrolin WEB](https://ngobrol.in/episodes/JUu7WUGt1eU-optimasi-javascript-ngobrolin-web): Episode ini membedah teknik optimasi JavaScript, dimulai dari prinsip paling mendasar: avoid work. Cara paling efektif mempercepat JavaScript adalah tidak menjalankannya sama sekali, dan tiap tahun daftar hal yang bisa dipindahkan ke platform bertambah — animasi, view transition, date picker, combo box yang bisa dicari, dan sebentar lagi carousel, semuanya kini punya padanan HTML atau CSS tanpa library. Dari sisi mesin, dibahas kenapa membandingkan integer lebih murah daripada string, dan kenapa bentuk objek sebaiknya konsisten. JavaScript engine berspekulasi bahwa objek berikutnya akan punya shape yang sama dengan yang sudah ia lihat, lalu menghasilkan machine code yang dioptimasi untuk asumsi itu — kode monomorfik cepat, polimorfik lebih lambat, megamorfik paling lambat. Urutan properti pun ikut menentukan shape, sehingga dua objek dengan field yang sama tetapi urutan berbeda dianggap berbeda. Diskusi terpanjangnya justru soal gaya: rantai map-filter-reduce membuat salinan array di setiap langkah, sementara satu loop imperatif tidak. Kesimpulannya pragmatis — kalau ukuran data terkontrol karena API-nya sudah dibatasi, tulis yang paling mudah dibaca; kalau datanya bisa puluhan ribu baris seperti pada CLI migrasi atau sinkronisasi, tulis imperatif. Bagian penutup soal benchmarking sama pentingnya: optimalkan bagian yang paling banyak memakan waktu lebih dulu, hindari micro benchmark, jalankan di production mode, pakai profil browser yang bersih tanpa extension, dan berusahalah membuktikan hasil sendiri salah alih-alih membenarkannya. - [Bedah Framework Anvia - Ngobrolin WEB](https://ngobrol.in/episodes/nJhk892C4_U-bedah-framework-anvia-ngobrolin-web): Episode ini membedah Anvia bersama pembuatnya, Indra, yang bekerja sebagai AI Engineering Lead di sebuah perusahaan fintech di Jepang. Anvia adalah framework open source berlisensi MIT untuk membangun AI agent, lahir dari puluhan agent yang ia bangun untuk produksi dan dari masalah nyata yang ia temui saat memakai tools lain. Pembedanya adalah scope. Framework sebesar Mastra atau Vercel AI SDK adalah platform besar tempat aplikasi kita harus masuk dan mengikuti aturan mereka; Anvia sebaliknya menyediakan building block dalam 22 package terpisah — core, adapter provider, storage untuk RAG, server, React UI yang headless, sandbox untuk eksekusi kode, dan studio — yang dipasang hanya kalau dibutuhkan, dengan SDK resmi masing-masing provider tetap di bawahnya. Anvia Studio hanya butuh satu baris tambahan untuk memberi chat UI, tracing, dan tampilan biaya, sehingga agent bisa diuji tanpa harus membangun aplikasi lengkap terlebih dahulu. Dua ide yang paling menonjol: agent didefinisikan sebagai full managed runtime — bukan sekadar completion plus tool calling yang eksekusinya masih kita urus sendiri, melainkan sudah membawa reasoning, tool set, loop, dan hook di dalamnya; dan dynamic tools yang mengubah daftar tool menjadi embedding lalu dicari, lahir dari kenyataan bahwa di kantornya ada 189 tool sehingga menyuntikkan semua deskripsinya justru membuat model bingung. Ditutup dengan saran belajar yang pragmatis: pahami common pattern dan kapan memakainya, tidak perlu membedah isi SDK — kecuali untuk domain bisnisnya sendiri, yang justru harus didalami karena selisih 0,01 sen di sana pernah berarti dua juta dolar. - [Pekerja Web - Ngobrolin WEB](https://ngobrol.in/episodes/a_MmIT8QLxI-pekerja-web-ngobrolin-web): Episode ini membahas Web Worker, saudara Service Worker yang jauh kurang populer padahal memecahkan masalah yang sangat nyata. Titik berangkatnya adalah sifat browser yang single-threaded: main thread hanya bisa mengerjakan satu hal dalam satu waktu, seperti satu orang yang merangkap kasir, tukang masak, dan tukang bungkus di satu warung. Kalau ia sibuk menghitung sesuatu yang berat, ia tidak sempat me-render, dan scroll pun terasa tersendat. Satu thread dipertahankan bukan karena keterbatasan perangkat keras zaman dulu, melainkan karena DOM akan kacau kalau banyak thread mengubahnya bersamaan. Itu sebabnya Web Worker tetap tidak boleh menyentuh DOM — ia hanya bisa berkirim pesan lewat postMessage, dan main thread yang menindaklanjuti. Perbedaan pentingnya dengan Service Worker dibedah satu per satu: Web Worker menempel pada satu tab dan mati begitu tab ditutup, bisa banyak sekaligus, cocok untuk kerja berat seperti kompresi gambar, WebAssembly, physics engine, atau memindahkan script analitik pihak ketiga keluar dari main thread; Service Worker menempel pada origin, hanya boleh satu, bertahan meski tab ditutup, dan bekerja sebagai proxy jaringan untuk offline support, caching, dan push notification. Karena postMessage terasa low level, ada dua library yang mempermudah: Comlink dari Surma yang membuat pemanggilan worker terasa seperti memanggil fungsi biasa, dan Party Town yang memindahkan script pihak ketiga ke worker sekaligus mengurung aksesnya ke API browser. ## Optional - [Tailwind - Ngobrolin WEB](https://ngobrol.in/episodes/eexwOhPaMso-tailwind-ngobrolin-web): Episode ini menengok kabar terbaru Tailwind, dimulai dari kisah pahit di baliknya: tim Tailwind sempat harus melepas sebagian karyawan karena model bisnis mereka bertumpu pada iklan di dokumentasi, dan sejak era AI orang tidak lagi mengunjungi dokumentasi — cukup bertanya ke coding agent. Ironisnya Tailwind justru menang telak di sisi adopsi, karena hampir semua LLM otomatis memilihnya ketika stack tidak disebutkan. Dari sisi teknis, Tailwind 4 mengubah posisinya: konfigurasi tidak lagi butuh file JavaScript atau TypeScript, cukup satu file CSS, dan seluruh dokumentasi kini memakai pendekatan itu. Ada custom variant yang membungkus selector CSS panjang menjadi satu nama pendek, dukungan container query, dan warna default berpindah ke ruang warna modern — semua mengikuti baseline, yaitu fitur yang sudah didukung semua major browser engine. Diskusi terpanjangnya justru pertanyaan yang wajar muncul: kalau AI yang menulis kode, kenapa tidak pakai CSS vanilla saja? Jawabannya bukan soal ketikan melainkan soal struktur — Tailwind memaksa berpikir per komponen dan menyediakan design token yang sudah jadi konvensi bersama, sehingga file CSS ribuan baris yang berujung tumpukan !important lebih kecil kemungkinannya terjadi. Ditutup dengan nasihat belajar: hafalkan konsep bukan sintaks, pelajari fitur bahasa saat dibutuhkan saja, dan sadari bahwa fundamental paling terasa gunanya justru saat AI mulai berputar-putar — orang yang paham bisa langsung menunjuk letak masalahnya, yang juga membuat pemakaian token jauh lebih hemat. - [Ngobrolin State of AI - Ngobrolin WEB](https://ngobrol.in/episodes/oNrHsiogsQY-ngobrolin-state-of-ai-ngobrolin-web): Episode ini membedah hasil survei State of AI di stateofai.dev, saudara dari seri State of JS dan State of CSS, tetapi kali ini fokus pada bagaimana web developer benar-benar memakai AI. Rata-rata responden mengaku 54% kodenya digenerate AI, ChatGPT masih paling banyak dipakai meski penggunaannya sedikit turun, sementara Claude dan Gemini naik paling tajam. Temuan yang paling melegakan justru soal uang: 40% responden tidak mengeluarkan biaya pribadi sama sekali untuk AI, dan bila digabung dengan yang membayar sampai 50 dolar sebulan, angkanya mencapai sekitar 81%. Artinya kesan bahwa semua orang berlangganan jor-joran itu keliru — yang terlihat royal umumnya dibayari kantor atau ditopang duit investor. Pain point terbesarnya juga bukan hal eksotis: halusinasi, kualitas kode, biaya, lalu comprehension — model salah memahami maksud kita, yang berbeda dari halusinasi. Sepanjang pembahasan datanya sendiri dikritisi: banyak responden mengisi nama produk (ChatGPT, Claude.ai) sebagai nama model, atau menyebut Ollama dan OpenCode yang sebenarnya tools bukan model, sehingga sebagian grafik menyesatkan. Bagian pembukanya berisi diskusi soal AI di dunia medis — pasien kini datang membawa jawaban ChatGPT untuk dikonfirmasi — dengan pesan tegas: untuk urusan medis, finansial, dan hukum, jadikan AI sebagai teman diskusi dan pencari sumber, bukan pengambil keputusan. Contoh pemakaian yang sehat justru mencari jurnal lewat NotebookLM lalu membaca sumber aslinya lewat kutipan yang disediakan. - [Liputan langsung Google I/O - Ngobrolin WEB](https://ngobrol.in/episodes/wHi7Q711vW8-liputan-langsung-google-io-ngobrolin-web): Episode ini adalah liputan langsung Google I/O dari sudut pandang orang yang hadir di lokasi. Tamunya Pak Dika, yang berangkat lewat Friends of Google — program dari tim marketing Google, bukan jalur GDE — dan bercerita mulai dari perjalanan 17 jam via Narita sampai antre imigrasi dua jam karena tiga pesawat mendarat bersamaan. Sebagian besar isinya justru soal hal-hal yang tidak terlihat di siaran: visa yang baru terbit seminggu sebelum berangkat sehingga semua hotel harus dipesan yang refundable, biaya hidup yang bikin sekali Uber dari bandara San Francisco ke Mountain View habis 100 dolar, motel di Sunnyvale seharga 180 dolar semalam karena semua hotel penuh, dan ojek online di depan kedutaan yang berkeliling membawa sepuluh tas titipan karena pemohon visa tidak boleh membawa apa pun masuk. Dari acaranya sendiri: menonton Sundar Pichai bicara langsung terasa seperti konser dan demo AI-nya berjalan mulus tanpa kegagalan, berbeda dari tahun-tahun sebelumnya yang sempat error. Ada latte art yang gambarnya di-prompt sendiri lewat Gemini lalu dicetak di atas kopi, mobil self driving Waymo yang tidak bisa dinaiki tanpa nomor Social Security, hidden quest berburu barcode dengan hadiah Coral board berisi TPU, ruang podcast dengan kamera yang otomatis zoom out menyesuaikan jumlah orang tanpa operator, dan sesi khusus kreator di kantor Google untuk memberi masukan soal Gemini. Ditutup dengan keresahan Pak Dika sebagai pengajar: tugas mahasiswa kini bagus semua tetapi tidak ada yang bisa menjelaskannya ketika ditanya. - [Google I/O 2026 - Ngobrolin WEB](https://ngobrol.in/episodes/hDtImY8hikU-google-io-2026-ngobrolin-web): Episode ini merangkum pengumuman Google I/O 2026 dengan catatan bahwa tema tahunnya bergeser lagi — dua tahun lalu era AI, tahun lalu era Gemini, tahun ini era agent. Model barunya adalah Gemini 3.5 Flash dan Gemini Omni yang benar-benar multimodal di kedua arah: input berupa teks, gambar, video, dan audio, output-nya pun bisa video, sehingga menyunting video lewat percakapan menjadi mungkin. Antigravity berubah drastis dari sekadar IDE hasil fork VS Code menjadi payung produk: ada aplikasi desktop yang mirip Codex, ada Antigravity CLI yang dibangun dari nol dan menggantikan Gemini CLI, ada SDK untuk membangun harness sendiri, dan integrasi ke platform agent enterprise. Sisi web membawa beberapa hal praktis: fungsi contrast-color yang otomatis memilih hitam atau putih, elemen dialog yang bisa ditutup dengan klik di luar tanpa JavaScript, corner-shape yang melampaui border-radius, dan linear() untuk animasi berbasis fisika. Dua hal yang paling memancing diskusi adalah HTML in Canvas — membalik pola lama, kini elemen HTML sungguhan bisa dirender di dalam canvas, membuka pintu untuk form di dalam game, buku 3D, dan interaksi fisika pada elemen DOM — serta Web MCP, usulan standar web agar situs mengekspos fitur-fiturnya sebagai tool bagi AI agent, mirip mendefinisikan tool calling tetapi lewat Web API. Ditutup dengan koleksi agent skill resmi dari tim Chrome yang berisi praktik web modern, agar LLM tidak lagi menyarankan jQuery untuk hal yang sudah punya solusi native. - [Alat Desain AI - Ngobrolin WEB](https://ngobrol.in/episodes/dD1AajkCSe0-alat-desain-ai-ngobrolin-web): Episode ini menelusuri gelombang alat desain berbasis AI: getdesign.md, Stitch dari Google, Claude Design, Open Design, dan Impeccable. Pembukaannya adalah pengakuan jujur bahwa jago CSS dan jago visual design itu dua keahlian berbeda yang sering dianggap satu paket — CSS punya spesifikasi yang bisa dipelajari, sementara membuat desain yang punya karakter seperti Vercel atau Apple adalah hal lain, dan justru di situlah AI sekarang menutup celah. Dibahas juga kontroversi getdesign.md yang bisa meniru design token situs populer seperti Airbnb hanya dengan satu perintah. Kekhawatiran utamanya bukan soal originalitas — meminta desainer meniru situs lain juga selalu bisa dilakukan — melainkan bahwa scam jadi jauh lebih mudah: dulu penanda penipuan adalah tampilan yang acak-acakan karena scammer tidak punya budget untuk desainer, sekarang halaman phishing bisa dibuat sepolished aslinya. Bagian demo membandingkan Stitch dan Claude Design. Stitch bagus di one shot tetapi kacau saat diminta revisi, sehingga lebih baik memulai chat baru daripada menyunting; ia juga masih menuntut ekspor ke AI Studio dan instruksi teknis manual seperti memecah komponen React agar tidak menumpuk di satu file. Claude Design menang di alur ujung ke ujung dalam satu antarmuka — generate design system dulu (sekitar 30 menit), lalu prototipe yang komponennya sudah siap pakai, dan design system itu bisa dipakai ulang satu tim. Ditutup dengan design.md, format markdown terstandar dari Google untuk design token beserta CLI linter-nya, dan Figma MCP yang membuat perbandingan spacing serta line-height jadi urusan mesin ke mesin, bukan lagi tebak-tebakan mata. - [Bedah Web - Ngobrolin WEB](https://ngobrol.in/episodes/_BnH4kIsSwk-bedah-web-ngobrolin-web): Episode ini membedah appfirst.id, sebuah direktori aplikasi buatan Khalid, backend developer yang sehari-hari bekerja dengan Java 8 dan Spring MVC di kantor lalu membangun side project agar tetap relevan. Uniknya seluruh aplikasi dibuat dengan Next.js yang sama sekali belum pernah ia pakai sebelumnya — bahkan cara menjalankannya pun ia tanyakan ke AI — dan tampilannya sengaja dimintakan menyerupai situs Anthropic. Bagian paling berguna adalah alurnya membangun fitur dengan coding agent: minta kajian teknis ujung ke ujung dulu dalam file markdown, review dan tuning kajian itu, cek ulang apakah kajian masih sinkron dengan kode terbaru, baru eksekusi. Setelah kode jadi, ia meminta agent membuat skenario tes dalam bentuk markdown lalu mengetesnya manual sendiri karena tidak percaya tes otomatis dan takut boros token. Ivan menawarkan alternatif: pakai agent browser yang membaca Accessibility Tree Chrome sehingga tidak perlu screenshot yang mahal, dan tulis skenario sebagai langkah pengguna, bukan sebagai kode Playwright. Ditemukan juga masalah nyata: query count langsung ke database di homepage yang berpotensi jadi DDoS diri sendiri (solusinya tabel counter yang di-update cron, atau cache), gallery screenshot yang terasa mati karena tidak ada placeholder berukuran tetap, dan thumbnail yang gepeng karena flex-shrink belum diatur. Diskusi berlanjut ke blind spot memakai AI di bidang yang tidak kita kuasai, mekanika token yang habis karena seluruh konteks dikirim ulang setiap giliran, dan kapan Claude enterprise plan masuk akal. - [Zona Waktu - Ngobrolin WEB](https://ngobrol.in/episodes/4vHgtGtsDFg-zona-waktu-ngobrolin-web): Episode ini membahas zona waktu, topik yang terlihat sepele sampai benar-benar diimplementasikan. Premisnya: waktu bukan sekadar fakta geografis yang tinggal dibagi 24, melainkan keputusan politik, ekonomi, dan sosial yang bisa berubah kapan saja di luar kendali developer. Contohnya India yang seharusnya punya tiga zona waktu tetapi parlemennya tidak ada yang mau mengalah sehingga bertemu di tengah pada +5:30, Nepal di +5:45, dan Tiongkok yang seluas itu memaksakan satu zona waktu untuk semua wilayahnya. Kesalahan klasik yang dibahas adalah memakai now() atau NOW() bawaan bahasa dan database: di laptop lokal semuanya benar, tetapi begitu di-deploy ke server luar negeri jam yang tersimpan bergeser dan cron tidak jalan pada waktu yang diharapkan. Solusinya berlapis — server mengirim ISO 8601 lalu front-end menghidrasinya dengan Intl.DateTimeFormat yang sudah tersedia di Web API tanpa perlu moment.js, atau menyimpan dua kolom (UTC dan zona waktu asal). Dibahas juga jebakan month di JavaScript yang dimulai dari 0 karena disimpan sebagai array nama bulan, sementara tanggal tidak. Bagian terberatnya adalah tiga opsi menyimpan waktu acara yang jatuh setelah aturan zona waktu berubah — semuanya menyimpan UTC, tetapi berbeda pada apa yang dijadikan sumber kebenaran; yang paling disukai adalah menyimpan local time sebagai patokan dan menganggap UTC sebagai turunan yang bisa dihitung ulang. Ditutup dengan Temporal, API baru pengganti Date yang meninggalkan OOP dan bekerja seperti namespace mirip Intl, plus fakta bahwa ada BIPM yang menjaga akurasi UTC dan ITU yang mengurus zona waktu di sistem operasi. Sesi ini terselenggara berkat kerja sama dengan DomaiNesia. - [Vite+ - Ngobrolin WEB](https://ngobrol.in/episodes/Edez-dpX0Hw-vite-ngobrolin-web): Episode rekaman ini membahas Vite+, saudara dari Vite yang bukan produk berbayar — berbeda dengan Tailwind+ yang memang versi komersial dari Tailwind. Intinya Vite+ menjawab keluhan klasik ekosistem JavaScript: setiap kali memulai project kita harus memilih dan merakit sendiri bundler, linter, test runner, dan task runner satu per satu. Vite+ membungkus semuanya menjadi satu toolchain yang opinionated. Tim mencoba langsung perintah-perintahnya di terminal. Lintingnya menampilkan lokasi error secara visual lewat terminal UI, bukan sekadar teks; test dan coverage sudah tersedia tanpa perlu menulis script test, test:ui, dan test:watch di package.json sendiri; dan untuk monorepo ada task graph dengan dependensi antar-perintah — build hanya jalan setelah lint selesai, deploy setelah build dan test. Ada juga perintah pack yang membungkus aplikasi menjadi satu file executable standalone lengkap dengan Node.js di dalamnya, sehingga pengguna tidak perlu memasang Node terlebih dahulu; fitur itu hanya didukung Node.js, tidak di Bun maupun Deno. Catatan penting di akhir: halaman troubleshooting-nya sendiri menyebut fitur ini masih alpha meskipun sudah diumumkan, dan selama sesi memang sempat beberapa kali error. Diselingi juga obrolan soal product founder fit — produk bisa punya pasar tetapi tetap gagal kalau pembuatnya tidak menikmati mengerjakannya. Sesi ini terselenggara berkat kerja sama dengan DomaiNesia. - [Scam dan Penipuan - Ngobrolin WEB](https://ngobrol.in/episodes/g6gKeLGYPQU-scam-dan-penipuan-ngobrolin-web): Episode ini membahas scam dan penipuan digital yang makin marak, dengan penekanan bahwa celah utamanya hampir selalu social engineering, bukan kelemahan teknis. Pola yang berulang cuma dua: too good to be true (menang undian, saldo unlimited, warisan pangeran Nigeria) dan fear mongering plus scarcity (kurang bayar pajak, akun YouTube akan kehilangan monetisasi dalam tujuh hari). Keduanya bekerja dengan mematikan pikiran jernih korban. Ivan berbagi prosedur klarifikasi berlapis yang ia pakai saat dihubungi seseorang yang mengaku kepala cabang bank: cek nama di LinkedIn, minta foto ID card, minta dikirimi undangan lewat email resmi institusi (bukan Gmail) tanpa memberi tahu alamat email kita — jika dia benar punya data kita, dia bisa menemukannya sendiri — lalu periksa DKIM dan SPF di source email, dan tetapkan tempat bertemu di kafe, bukan rumah. Dibahas juga bahwa alamat pengirim email bisa benar-benar dipalsukan sampai domain resmi, biasanya karena API key perusahaan yang bocor dan lupa dirotasi. Bagian berikutnya menelusuri modus konkret: link bank dengan huruf Unicode yang mirip, APK yang meminta permission membaca SMS sehingga OTP bisa dicuri, serangan lama yang membelokkan SMS OTP lewat jaringan seluler, paket COD bernilai kecil yang dikirim ke rumah, sampai pinjol yang diajukan atas nama korban lalu dananya diminta dikembalikan. Solusinya berlapis: reject first untuk telepon tak dikenal, urus semua urusan resmi dengan datang langsung ke kantor, pasang password manager untuk orang tua dan pasangan karena ia otomatis tidak muncul di domain yang salah, dan pakai passkey bila tersedia. Sesi ini terselenggara berkat kerja sama dengan DomaiNesia. - [Bedah Situs - Ngobrolin WEB](https://ngobrol.in/episodes/YoeCPP6c2LI-bedah-situs-ngobrolin-web): Episode ini melanjutkan sesi bedah situs dengan dua website institusi kesehatan yang dikirimkan lewat DomaiNesia. Situs pertama adalah Institut Kesehatan Immanuel di Bandung yang dibangun dengan Wix Studio dan dipresentasikan langsung oleh pengelolanya. Temuannya berkisar pada konsistensi: ada sembilan font berbeda dalam satu situs karena beberapa orang dari tim IT dan pemasaran sama-sama mengedit, tombol yang kadang rounded kadang kotak, bahasa yang campur Indonesia dan Inggris, video YouTube yang autoplay dan langsung memakan 55MB bandwidth, serta halaman yang butuh sembilan detik untuk selesai memuat. Situs kedua adalah website rumah sakit hasil vibe coding, dan di sini kritiknya lebih tajam karena menyangkut tujuan pengguna. Semua informasi penting — nomor telepon pendaftaran, partner asuransi, alamat — dikurung di dalam slideshow berisi gambar tanpa alt text, sehingga tidak bisa di-copy, tidak bisa diklik, tidak terbaca screen reader, dan tidak masuk indeks mesin pencari. Padahal pengunjung situs rumah sakit hampir pasti sedang butuh sesuatu, bukan sedang iseng. Ditemukan juga bug nyata: warning "Undefined variable WA Link" bocor ke HTML dan ikut membeberkan path direktori server, sehingga tombol WhatsApp hanya berfungsi di beranda. Bagian penutup menelusuri tab Coverage yang menunjukkan Font Awesome 98% tidak terpakai dan Bootstrap Icons 100% tidak terpakai, plus diskusi soal sanitasi input dan OWASP Top 10. - [Bedah Situs - Ngobrolin WEB](https://ngobrol.in/episodes/KJ96IaRARvQ-bedah-situs-ngobrolin-web): Episode ini adalah sesi bedah situs, membedah dua website yang dikirimkan lewat DomaiNesia secara langsung di depan penonton. Situs pertama milik Mas Zain — landing page komunitas Vibe Coding from Cafe — dan uniknya perbaikan dikerjakan saat itu juga oleh coding agent lewat Telegram, mulai dari memperbaiki contrast ratio teks yang hanya 3.0 (di bawah batas minimum WCAG 4.5) sampai membuat PR yang bisa langsung di-preview. Bagian terbesar episode adalah tutorial praktis membaca Performance panel di Chrome DevTools. Ivan menunjukkan cara throttle CPU ke mid-tier mobile dan network ke fast 4G supaya audit tidak memakai spek dewa, membedakan lab test (Lighthouse/PageSpeed) dari field data CrUX (Chrome UX Report) yang dikumpulkan anonim dari pengguna Chrome asli, lalu menelusuri kenapa LCP tinggi karena chaining CSS, font, dan JS sebelum React sempat hydrate, serta melacak layout shift sampai ke force reflow yang dipicu CSS. Situs kedua milik Baliyun, seorang mahasiswa yang juga bekerja, membawa pertanyaan apakah perlu migrasi ke Next.js demi SEO. Jawabannya tegas: bukan itu masalahnya. Sekali page load situs tersebut memakan 57MB bandwidth karena gambar galeri berukuran 2.000x2.000 piksel ditampilkan pada 80 piksel, dan mengganti framework tidak akan menyelesaikan itu. Ditemukan juga open graph image yang 404 sehingga link tidak muncul preview saat dibagikan. - [Project Management Tools - Ngobrolin WEB](https://ngobrol.in/episodes/qlL_42q4mUE-project-management-tools-ngobrolin-web): Episode ini membahas tools project management, mulai dari yang klasik sampai yang lahir karena era coding agent. Diskusi dibuka dengan kasus malware pada paket Axios yang baru terjadi, lengkap dengan pesan layanan masyarakat soal pinning versi dependensi — memakai versi eksak alih-alih caret ("karet") atau tilde ("cacing"), terutama karena Axios sering ikut terbawa sebagai dependensi dari dependensi tanpa kelihatan langsung. Masuk ke topik utama, tim menelusuri Jira sebagai standar enterprise dengan JQL (Jira Query Language) sebagai fitur andalan yang tidak ditemukan di tools lain, lalu GitHub Projects yang kini dianggap sudah cukup lengkap dan gratis bagi yang sudah membayar GitHub. Ada cerita migrasi dari Zenhub ke Jira dan GitHub Projects lewat ekspor CSV, serta ulasan Azure DevOps, Notion Projects, Asana yang dulu membangun framework JavaScript sendiri bernama Luna demi real-time update, Basecamp, Redmine yang masih dirawat sampai sekarang, ClickUp, Monday.com, dan Plane.so yang bisa self-hosted. Bagian paling menarik adalah pergeseran pemakaian: tiket kini dipakai sebagai memori antar-agent. Hasil kerja satu agent ditulis sebagai komentar di tiket supaya agent berikutnya membaca konteks itu sebelum mengambil tiket lanjutan. Beads sempat dipakai untuk ini tetapi ditinggalkan karena masalah out of sync yang menghabiskan waktu berjam-jam, digantikan GitHub Projects, Linear yang local-first, atau ticket/tk yang murni file-based di folder .tickets. Sesi ini terselenggara berkat kerja sama dengan DomaiNesia. - [Ngobrolin Otorisasi](https://ngobrol.in/episodes/UMNXxUqlZS0-ngobrolin-otorisasi): Episode ini membahas otorisasi (authorization) dan bagaimana ia berbeda dari otentikasi yang pernah dibahas di episode sebelumnya. Otentikasi menjawab "siapa Anda dan benarkah Anda orang itu", sedangkan otorisasi menjawab "Anda boleh melakukan apa saja". Dari pembeda sederhana itu tim Ngobrolin WEB menelusuri empat model hak akses yang lazim dipakai di aplikasi web. Pembahasan dimulai dari RBAC (Role-Based Access Control) yang paling umum dan paling mudah dipahami, contohnya level administrator, editor, writer, dan subscriber di WordPress. Lalu naik ke ACL (Access Control List) yang memecah izin menjadi permission kecil-kecil seperti read, write, publish, dan delete others — model yang juga dipakai S3 bucket. Berikutnya ABAC (Attribute-Based Access Control, disebut juga PBAC) yang memutuskan akses lewat kondisi atas atribut user, resource, action, dan environment, sehingga bisa membatasi akses hanya pada jam kantor atau hanya beberapa hari. Terakhir ReBAC (Relationship-Based Access Control) yang dipopulerkan Google Zanzibar dan terasa seperti model Google Drive atau collaborator di GitHub. Diskusi ditutup dengan sisi implementasi: menyimpan relasi ReBAC butuh satu tabel khusus relationship sehingga memberi akses ke satu orang tidak perlu mengubah data user maupun dokumen, dan untuk relasi yang dalam seperti mutual friend atau second degree connection, graph database seperti Neo4j lebih cocok daripada relational database. Sesi ini terselenggara berkat kerja sama dengan DomaiNesia. - [Stack dan Tools - Ngobrolin WEB](https://ngobrol.in/episodes/00ZHWKLlp5g-stack-dan-tools-ngobrolin-web): Episode ini membahas tentang berbagai perangkat keras, perangkat lunak, dan tools yang digunakan oleh para host dalam keseharian mereka sebagai developer. Topik berkisar dari setup hardware seperti keyboard, monitor, speaker, dan microphone, hingga software development tools seperti AI coding assistants (Cursor, Windsurf, Kode, Cloudcode), terminal emulator, dan berbagai aplikasi produktivitas. Episode ini juga menyentuh tentang pengalaman menggunakan berbagai layanan VPN, browser, dan manajemen password serta snippet. - [Library Animasi - Ngobrolin WEB](https://ngobrol.in/episodes/TdgJMT3NrRM-library-animasi-ngobrolin-web): Episode ini membahas tentang animasi dalam web development, mulai dari berbagai jenis animasi seperti micro-interaction, page transition, dan scroll-driven animation. Host membahas beberapa library animasi populer seperti GSAP, Framer Motion (sekarang Motion), Anime.js, dan Lottie. Diskusi juga mencakup perbandingan antara library-library tersebut dari sisi performa, ukuran bundle, licensing, dan kemudahan penggunaan. Ada juga showcase portfolio dari Yogi yang menggunakan GSAP dengan efek combat style yang impresif, serta pembahasan tentang view transition API sebagai alternatif modern untuk transisi antar halaman. - [Computational Thinking - Ngobrolin WEB](https://ngobrol.in/episodes/c5RSiDy2sRM-computational-thinking-ngobrolin-web): Episode ini membahas tentang Computational Thinking, sebuah framework berpikir yang menjadi fundamental lebih dasar dari kemampuan teknis programming. Host membahas empat pilar utama Computational Thinking yang dikenal dengan akronim AADP (Abstraction, Algorithm Design, Decomposition, Pattern Recognition) dan bagaimana konsep ini tidak hanya berguna untuk programming tetapi juga applicable dalam kehidupan sehari-hari dan karir profesional. Diskusi juga mencakup bagaimana Computational Thinking sudah diajarkan di kurikulum sekolah (SD/SMP) dan bagaimana materi dari BBC Bitesize memberikan penjelasan yang mudah dipahami dengan contoh-contoh konkret. - [Alat Pengkodean Agen - Ngobrolin WEB](https://ngobrol.in/episodes/Tkh8-LleLws-alat-pengkodean-agen-ngobrolin-web): Episode ini membahas tentang Agentic Coding Tools, yaitu tools AI yang dapat membantu developer dalam menulis kode secara lebih efisien. Ivan dan Eka berbagi pengalaman mereka menggunakan berbagai tools seperti Cursor, Claude Code (Ampcode), Gemini CLI, dan GitHub Copilot. Diskusi mencakup evolusi dari ChatGPT web interface, ke Copilot autocomplete, hingga era agentic coding saat ini di mana AI bisa membuat file, menjalankan terminal, dan mengerjakan task secara mandiri. Mereka juga membahas pentingnya spec-driven development dan design system untuk mengontrol output AI agar tetap konsisten. Episode ini juga menyentuh topik burnout karena terlalu asyik bermain dengan AI, serta tips praktis seperti menggunakan VPS untuk menjalankan agentic coding agar lebih aman dari risiko halusinasi AI yang bisa menghapus file penting. - [Agentic AI - Ngobrolin WEB](https://ngobrol.in/episodes/ZcYNuHirHOA-agentic-ai-ngobrolin-web): Episode ini membahas tentang Agentic AI, menjelaskan perbedaan mendasar antara AI/LLM biasa dengan Agent AI. Diskusi ini terinspirasi dari GitHub Discussion yang diajukan oleh salah satu pendengar, dan menjadi fondasi penting sebelum membahas topik-topik lanjutan seperti Agentic UI. Trio Ngobrolin WEB menjelaskan bahwa perbedaan utama antara LLM biasa dan Agent adalah kemampuan Agent untuk bekerja dalam loop sampai tugasnya selesai. LLM biasa hanya bisa menerima prompt dan memberikan respons sekali jalan, sedangkan Agent bisa terus berinteraksi, menggunakan tools, dan mengambil keputusan sampai goal tercapai. Contoh praktis yang dibahas termasuk perbandingan antara ChatGPT zaman dulu (copy-paste kode manual) dengan agentic coding assistant modern seperti Cursor, Claude Code, dan Kiro yang bisa menulis file, menjalankan terminal, dan menyelesaikan task secara mandiri. - [CSS Wrapped - Ngobrolin WEB](https://ngobrol.in/episodes/Qh0ImRYTync-css-wrapped-ngobrolin-web): Episode ini membahas CSS Wrapped 2025, yaitu rekapitulasi fitur-fitur CSS dan UI baru yang hadir di Google Chrome sepanjang tahun 2025. Ivan dan Eka membahas satu per satu fitur yang dikategorikan menjadi tiga bagian: Customizable Components, Next Gen Interaction, dan Optimized Ergonomics. Diskusi dimulai dengan cerita tentang event offline Ngobrolin WEB di Jogja bersama DomaiNesia, sebelum masuk ke pembahasan teknis tentang invoker commands, dialog light dismiss, popover API, dan berbagai fitur CSS baru lainnya. Tema CSS Wrapped tahun ini adalah "Sculpt a Dynamic Web" dengan visual Play-Doh yang menggambarkan CSS sebagai building blocks yang bisa dibentuk sesuai kebutuhan. Episode ini cocok untuk developer yang ingin mengetahui fitur-fitur CSS terbaru yang sudah bisa digunakan di browser modern, serta memahami perbedaan antara dialog dan popover. - [Ngobrolin Gemini 3 - Ngobrolin WEB](https://ngobrol.in/episodes/lPTtyv8Hzgs-ngobrolin-gemini-3-ngobrolin-web): Episode 158 ini membahas tentang Gemini 3, model AI terbaru dari Google yang dirilis beberapa minggu sebelumnya. Pembawa acara mendiskusikan bagaimana Gemini 3 mengalahkan semua model AI lain di berbagai benchmark, termasuk benchmark unik seperti 'Vending Bench' yang mensimulasikan bisnis vending machine selama setahun. Diskusi juga mencakup berbagai produk AI Google lainnya seperti AI Studio, Notebook LM, CodeWiki yang bisa generate dokumentasi dari repository, serta Google AI Mode untuk pencarian. Episode ini juga menyinggung tentang kolaborasi dengan DomaiNesia dan rencana kunjungan ke kantor mereka di Jogja, serta penggalangan dana untuk korban bencana di Sumatera melalui GDG Medan. - [WebAI - Ngobrolin WEB](https://ngobrol.in/episodes/puCZUlxrSpg-webai-ngobrolin-web): Episode ini membahas Web AI - teknologi AI yang berjalan langsung di browser. Diskusi dipicu oleh Web AI Summit 2025 yang diselenggarakan Google. Eka, Ivan, dan Bahayu membahas perbedaan antara Web AI (on-device) dengan Cloud AI, serta keuntungan dan tantangannya. Episode juga menyinggung pengalaman IDSW (Indonesia Developer Summit), cerita horor tentang "John Titor" prank, dan pembahasan teknis tentang TensorFlow.js, MediaPipe, dan cara kerja model AI di browser. - [Serba Serbi Pengujian: Vitest, Jest, dkk - Ngobrolin WEB](https://ngobrol.in/episodes/yfgMjKu89u0-serba-serbi-pengujian-vitest-jest-dkk-ngobrolin-web): Episode ini membahas serba-serbi testing di ekosistem JavaScript, mulai dari alasan kenapa testing penting sampai perbedaan jenis-jenisnya. Pembahasan menyinggung konsep testing trophy/pyramid, kapan unit test cocok dipakai, serta kapan lebih masuk akal menggunakan integration atau end-to-end testing untuk memastikan alur bisnis tetap aman. Ngobrolin juga mengulas tool dan praktik populer seperti Vitest vs Jest, snapshot testing beserta pro-kontra dan konflik yang sering muncul, serta strategi coverage dan CI/CD agar kualitas tetap terjaga. Di sisi lain, ada diskusi tentang trade-off: biaya maintenance, over-testing, dan kapan "cukup" itu cukup. Beberapa contoh praktik seperti Playwright, mocking, dan visual/regression testing ikut dibahas untuk konteks real di proyek. - [Kisah-kisah Menyeramkan dgn @zainfathoni - Ngobrolin WEB](https://ngobrol.in/episodes/aY57UgFCC48-kisah-kisah-menyeramkan-dgn-zainfathoni-ngobrolin-web): Episode spesial "Kisah-kisah Diiramakan" ini menghadirkan Mas Zain yang berbagi cerita horor pengalamannya sebagai engineer. Dua insiden utama dibahas: pertama tentang MIME type error yang menyebabkan JavaScript tidak dieksekusi sama sekali, dan kedua tentang masalah intermiten pada asset loading akibat konfigurasi double CDN. Diskusi juga mencakup pentingnya dokumentasi sebelum melakukan perubahan konfigurasi, serta pembelajaran dari insiden yang berlangsung hampir setahun sebelum akar masalah ditemukan. - [Ngobrolin CSS Unit - Ngobrolin WEB](https://ngobrol.in/episodes/x1jm57leZW0-ngobrolin-css-unit-ngobrolin-web): Episode ini dibuka dengan obrolan soal insiden layanan cloud (AWS) yang sempat tumbang dan dampaknya ke produktivitas. Mereka bahas ketergantungan pada tools berbasis cloud, kapan on‑prem atau server lokal dibutuhkan, serta contoh narasi "cloud exit" ala DHH. Disinggung juga sponsor Domainesia, termasuk opsi hosting/VPS dan promo code yang mereka bagikan. Bagian utama kemudian masuk ke topik CSS—khususnya satuan (units) dan implikasinya terhadap layout responsif dan aksesibilitas. Pembahasan mencakup rem/em vs px, viewport units (termasuk varian small/large/dynamic), container queries, custom properties, hingga pentingnya meta viewport agar tampilan mobile tidak "terkecil" seperti layout desktop. - [Desain Aplikasi CLI - Ngobrolin WEB](https://ngobrol.in/episodes/uPiv9JbEOPA-desain-aplikasi-cli-ngobrolin-web): Episode ini membahas desain aplikasi CLI dan pengalaman pengguna di terminal, termasuk perbedaan CLI, TUI, dan aplikasi terminal pada umumnya. Diskusi mencakup alasan kenapa banyak developer tetap memilih terminal, serta bagaimana pengalaman di CLI bisa dibuat lebih jelas, cepat, dan menyenangkan.Pembahasan juga menyentuh prinsip desain dan panduan praktik terbaik, seperti pentingnya help, konsistensi flags, pesan error yang informatif, output yang bisa dipipe, dan mode quiet untuk kebutuhan otomatisasi. Selain itu, dibahas ekosistem tool dan library untuk membangun CLI, contoh penggunaan real (misalnya Cloudflare CLI), serta referensi guideline seperti clig.dev dan prinsip desain dari Atlassian. - [File Upload Strategy - Ngobrolin WEB](https://ngobrol.in/episodes/_H9EkkzDGTs-file-upload-strategy-ngobrolin-web): Episode ini membahas berbagai strategi upload file dalam pengembangan aplikasi web. Eka dan Ivan berdiskusi tentang trade-off dari setiap pendekatan mulai dari local storage, database blob, hingga cloud storage seperti S3, GCP, dan Azure. Diskusi dimulai dengan cerita horor pengalaman masa lalu ketika menyimpan file di server yang sama dengan aplikasi, masalah scalability, hingga solusi modern menggunakan cloud storage. Topik ini diajukan oleh Kaisa yang memberikan konteks diskusi yang lengkap. - [Toolkit Modern - Ngobrolin WEB](https://ngobrol.in/episodes/7WbdKRP1QY4-toolkit-modern-ngobrolin-web): Episode ini membahas tentang tools atau alat bantu modern dalam pengembangan web, khususnya build tools dan test runners. Para host mendiskusikan evolusi dari tools tradisional seperti Gulp, Grunt, dan Webpack ke tools modern seperti Vite, esbuild, dan Vitest yang menawarkan performa lebih cepat. Diskusi mencakup perbandingan antara berbagai build tools dan test runners, mulai dari sejarah Jasmine, Mocha, Jest hingga Vitest. Dibahas juga bagaimana tools modern memanfaatkan native ES modules dan teknologi baru untuk meningkatkan developer experience dengan build time yang jauh lebih cepat dibandingkan pendahulunya. - [Ngobrolin JWT - Ngobrolin WEB](https://ngobrol.in/episodes/3C-psD7dx9w-ngobrolin-jwt-ngobrolin-web): Episode ini membahas secara mendalam tentang JWT (JSON Web Token), mulai dari cara pengucapan yang benar menurut spesifikasi resmi yaitu "jot", hingga struktur dan cara kerjanya. Para host menjelaskan komponen JWT yang terdiri dari header (hijau), payload (putih), dan signature (biru/ungu), serta bagaimana data di dalamnya hanya di-encode dengan Base64, bukan di-encrypt. Diskusi juga menyentuh pentingnya membaca RFC dan spesifikasi teknis, dengan contoh kasus menarik tentang perbedaan perilaku redirect 301 di berbagai browser yang ternyata dijelaskan di RFC. Selain itu, dibahas juga penggunaan JWT dalam autentikasi, perbedaan dengan session-based authentication, serta best practices dalam implementasinya. - [Ngobrolin Dokumentasi - Ngobrolin WEB](https://ngobrol.in/episodes/2Y7gmbdrnqc-ngobrolin-dokumentasi-ngobrolin-web): Episode ini membahas pentingnya dokumentasi dalam pengembangan software. Para host berdiskusi tentang berbagai jenis dokumentasi, mulai dari dokumentasi teknis untuk developer hingga dokumentasi untuk onboarding dan hand-over project. Mereka juga membahas tantangan yang dihadapi developer dalam menulis dokumentasi dan bagaimana AI dapat membantu proses ini. Diskusi mencakup best practices untuk membuat dokumentasi yang baik, termasuk pentingnya memasukkan dokumentasi sebagai bagian dari definition of done dalam sprint. Contoh-contoh dokumentasi bagus seperti Astro dan GitLab juga dibahas, serta peran technical writer sebagai profesi khusus dalam membuat dokumentasi berkualitas. - [Fundamental JavaScript - Ngobrolin WEB](https://ngobrol.in/episodes/Lg3hspyi4eg-fundamental-javascript-ngobrolin-web): Episode ini membahas konsep fundamental JavaScript yaitu Closure. Para host menjelaskan secara mendalam apa itu closure, bagaimana cara kerjanya, dan mengapa konsep ini penting untuk dipahami oleh developer JavaScript. Diskusi dimulai dengan penjelasan bahwa JavaScript adalah bahasa dengan first-class function yang memungkinkan function dipassing sebagai parameter. Pembahasan mencakup konsep lexical scope, outer scope vs inner scope, dan bagaimana closure memungkinkan sebuah function mengakses variabel dari scope luarnya. Contoh kode praktis juga ditunjukkan untuk membantu pemahaman, termasuk perbandingan dengan bahasa lain seperti PHP versi lama dan C yang tidak mendukung first-class function. - [IO Connect Shanghai - Ngobrolin WEB](https://ngobrol.in/episodes/p4Gk1NTKYoo-io-connect-shanghai-ngobrolin-web): Episode ini membahas pengalaman para host menghadiri Google I/O Connect di Shanghai, China. Mereka menjelaskan perbedaan antara Google I/O (acara utama di Mountain View), I/O Connect (versi regional untuk berbagai wilayah seperti Asia Pacific), dan I/O Extended (acara lokal yang diorganisir GDG di masing-masing kota). Diskusi mencakup berbagai aktivitas di acara tersebut seperti keynote speech, demo booth interaktif termasuk Phone and App (ngobrol dengan Gemini untuk generate app), dan lomba gambar yang dinilai oleh AI. Para host juga berbagi cerita lucu tentang salah pasang channel penerjemah saat menonton presentasi berbahasa Mandarin, serta membahas panel diskusi tentang web dan AI termasuk Gemini Nano. - [Stackoverflow Survey 2025 - Ngobrolin WEB](https://ngobrol.in/episodes/cYH8NfEPPu0-stackoverflow-survey-2025-ngobrolin-web): Episode ini membahas hasil Stack Overflow Developer Survey 2025 yang baru diluncurkan. Para host mendiskusikan berbagai temuan menarik dari survey tersebut, termasuk demografi responden, tingkat pendidikan, dan tren penggunaan AI dalam pengembangan software. Survey ini melibatkan hampir 50.000 responden dari seluruh dunia. Diskusi juga menyentuh dampak AI terhadap Stack Overflow sebagai platform dan bagaimana mereka beradaptasi dengan menyediakan produk enterprise seperti knowledge base internal dan AI agent. Para host juga membahas berbagai survey developer lainnya seperti State of JavaScript, State of CSS, dan survey dari JetBrains, serta keinginan untuk membuat survey lokal Indonesia di masa depan. - [Konsep Dependency Injection - Ngobrolin WEB](https://ngobrol.in/episodes/Viq69Sv_MrI-konsep-dependency-injection-ngobrolin-web): Episode ini membahas konsep Dependency Injection (DI), sebuah design pattern fundamental dalam software development. Para host menjelaskan apa itu Dependency Injection dengan contoh praktis menggunakan JavaScript, membandingkan kode tanpa DI dan dengan DI untuk menunjukkan perbedaan dan manfaatnya. Diskusi mencakup konsep terkait seperti Inversion of Control dan prinsip SOLID (khususnya Dependency Inversion). Contoh yang digunakan adalah analogi mobil dan mesin (engine), di mana dengan DI, kelas Car tidak perlu membuat instance Engine sendiri di constructor, melainkan menerima engine sebagai parameter yang di-inject dari luar. Episode ini juga disponsori oleh DomaiNesia dengan promo code untuk cloud VPS. - [Bedah Buku Problem Solving 101 - Ngobrolin WEB](https://ngobrol.in/episodes/ZwXgk5yeUD0-bedah-buku-problem-solving-101-ngobrolin-web): Episode ini membahas buku "Problem Solving 101" karya Ken Watanabe, mantan konsultan McKinsey yang menulis buku ini sebagai bagian dari reformasi pendidikan Jepang untuk menggeser fokus dari hafalan menuju problem-solving. Meskipun ditujukan untuk anak-anak, buku ini menjadi international best seller di kalangan orang dewasa. Buku menyajikan framework problem-solving yang praktis dengan tiga studi kasus: band sekolah yang ingin meningkatkan penonton, John Octopus yang ingin membeli komputer, dan Kiwi yang memilih sekolah sepak bola. Diskusi juga mencakup kaitan problem-solving dengan computational thinking serta pengalaman nyata para host dalam mengaplikasikan konsep ini dalam pekerjaan sehari-hari sebagai developer. - [Bedah Situs meutia.net - Ngobrolin WEB](https://ngobrol.in/episodes/hSUqstbgNgI-bedah-situs-meutianet-ngobrolin-web): Episode ini membahas bedah situs blog personal milik Mbak Mutia, seorang dosen di IAIN Langsa, yang dikembangkan oleh Mas Yudi Ananda. NaraBlog menonjol dengan desain minimalis yang konsisten, penggunaan bahasa Indonesia yang baku, dan konsep Digital Garden. Website dibangun menggunakan teknologi modern seperti Remix, Sanity CMS, Tailwind CSS, dan Cloudflare Workers. Diskusi mencakup berbagai aspek teknis termasuk implementasi Speculation Rules API untuk performa navigasi, penggunaan Web Share API, carbon-conscious analytics dengan Cabin, serta berbagai catatan accessibility yang perlu ditingkatkan. - [Ngobrolin EcmaScript 2025 - Ngobrolin WEB](https://ngobrol.in/episodes/GGfh-olIzl0-ngobrolin-ecmascript-2025-ngobrolin-web): Episode ini membahas ECMAScript 2025, standar terbaru untuk JavaScript. Diskusi dimulai dengan perbandingan responsivitas tombol darurat di Jepang vs Indonesia, dan pembahasan tentang prioritas P0 dalam tiket software development. Topik utama menjelaskan sejarah mengapa kita menggunakan istilah ECMAScript instead of JavaScript - masalah trademark karena JavaScript adalah merek dagang Oracle. JavaScript berasal dari Netscape yang kemudian diakuisisi oleh Sun Microsystems lalu Oracle. Standar ECMAScript dikembangkan oleh ECMA (badan standarisasi) dan diimplementasikan oleh browser/engine masing-masing. Fitur-fitur baru di ECMAScript 2025 meliputi: import JSON secara native tanpa loader tambahan, iterator helper methods (map, filter, take, drop, toArray) yang sebelumnya hanya ada di Array, new Set methods, perbaikan RegExp seperti regex.escape dan regex modifiers, Promise.try untuk menangani promise secara lebih aman, dan 16-bit floating point untuk machine learning. Juga dibahas Dr. Axel Rauschmayer, penulis buku gratis tentang JavaScript yang sangat produktif dalam blogging dan training. - [Ngobrolin Storybook - Ngobrolin WEB](https://ngobrol.in/episodes/RQ6KMuo9PPg-ngobrolin-storybook-ngobrolin-web): Episode ini membahas Storybook, tool untuk membangun, menguji, dan mendokumentasikan komponen UI secara terisolasi. Host membahas evolusi Storybook dari yang sebelumnya dianggap berat dan lambat (menggunakan webpack) menjadi jauh lebih baik setelah beralih ke Vite 1-2 tahun terakhir. Diskusi mencakup bagaimana Storybook membantu dalam pengembangan Design System, implementasi Atomic Design methodology (Atoms, Molecules, Organisms, Templates, Pages), dan kolaborasi antara frontend developer dengan designer. Storybook memungkinkan frontend developer bekerja mandiri dengan fake data sambil menunggu backend selesai, serta mendokumentasikan berbagai state dan varian komponen yang mungkin tidak terpikirkan saat desain. - [Web Interop & Baseline - Ngobrolin WEB](https://ngobrol.in/episodes/f1g2zrOmzN0-web-interop-baseline-ngobrolin-web): Episode ini membahas Web Interop 2025, sebuah inisiatif tahunan dari konsorsium browser vendor (Google, Mozilla, Apple, Microsoft) untuk menstandarisasi fitur-fitur web platform agar bekerja konsisten di semua browser. Diskusi dimulai dengan pembahasan tentang relevansi belajar coding di era AI dan perbandingan antara WFH vs commuting. Topik utama menjelaskan sejarah "masa kelam" pengembangan web di mana setiap browser memiliki standar sendiri, memaksa developer menggunakan hack seperti prefix (-webkit-, -moz-) dan polyfill. Interop hadir sebagai solusi dengan memilih fitur-fitur prioritas yang akan diimplementasikan secara konsisten. Episode mengulas dashboard Interop 2025 yang menunjukkan progress setiap browser, membahas area fokus seperti CSS Anchor Positioning, Popover API, View Transitions, WebAssembly, dan penghapusan API usang seperti Mutation Events. Juga dibahas Ladybird, browser baru yang dibangun dari scratch tanpa menggunakan engine yang sudah ada. - [Ngobrolin Database - Ngobrolin WEB](https://ngobrol.in/episodes/zX0gDaovb1w-ngobrolin-database-ngobrolin-web): Episode ini membahas Database Scaling, khususnya perbedaan antara horizontal scaling dan vertical scaling. Topik ini diajukan oleh Mas Triad Moko melalui GitHub discussion sejak April tahun lalu. Narasumber tamu adalah Mas Doni yang sudah ketiga kalinya hadir di Ngobrolin WEB. Diskusi dimulai dengan cerita lucu tentang tagihan StreamYard yang membengkak hingga 13 juta per tahun setelah stream platform otomatis upgrade ke Pro ketika streaming ke 3 platform sekaligus. Kemudian masuk ke topik utama: database scaling. Host membahas bahwa tidak peduli seberapa cepat framework yang digunakan (Rust, Zig, Laravel), jika database query-nya lambat, aplikasi tetap akan lambat. Episode juga menyentuh perdebatan ORM vs Raw SQL, pentingnya memahami struktur data, tools untuk monitoring slow query, dan peran DBA di era modern. - [Bedah Situs - Ngobrolin WEB](https://ngobrol.in/episodes/0sMCTZ77Fjk-bedah-situs-ngobrolin-web): Episode ini merupakan sesi bedah situs yang pertama kali mendapatkan partisipasi dari penonton. Website yang dibedah adalah undangan pernikahan digital yang dibuat oleh Mas Grafis menggunakan Next.js 13 dengan Contentful sebagai headless CMS. Diskusi dimulai dengan pembahasan tentang pentingnya signed commit (GPG signing) untuk keamanan dan mencegah impersonasi di GitHub. Selanjutnya dilakukan analisis performa dan accessibility terhadap website tersebut. Beberapa masalah yang diidentifikasi meliputi auto-playing audio tanpa konsentrasi user, kontras warna yang kurang, navigasi carousel yang tidak ramah accessibility, serta bundle size yang cukup besar sekitar 4.1 MB terutama karena gambar. Episode juga membahas berbagai tools untuk mengecek accessibility seperti color contrast checker extension dan Chrome DevTools. - [Ngobrolin Astro - Ngobrolin WEB](https://ngobrol.in/episodes/0o-PcX6pR2E-ngobrolin-astro-ngobrolin-web): Episode ini membahas secara mendalam tentang fitur server-side Astro yang menjadikannya framework yang sangat versatile. Diskusi dimulai dengan pembahasan mengapa Astro menjadi favorit banyak developer akhir-akhir ini - kemampuannya mengakomodasi berbagai jenis developer dengan UI library yang berbeda-beda dalam satu proyek. Topik utama meliputi sistem file-based routing, API routes yang bisa mengembalikan JSON, middleware, helper untuk cookies, data fetching dengan web standard, dan konsep Island Architecture di sisi server (Server Islands) yang memungkinkan on-demand rendering untuk konten yang dinamis. Fitur menarik yang dibahas adalah Astro Actions - RPC-like function dengan type safety dan validasi input otomatis yang memudahkan komunikasi antara client dan server tanpa boilerplate code. Episode juga membahas ekosistem adapter Astro untuk berbagai platform deployment seperti Node.js, Cloudflare Workers, Vercel, dan Netlify. - [Ngobrolin Google I/O - Ngobrolin WEB](https://ngobrol.in/episodes/ZRQrg3dABLQ-ngobrolin-google-io-ngobrolin-web): Episode Ngobrolin WEB ini membahas secara lengkap tentang Google I/O 2025, dengan fokus utama pada berbagai pengumuman terkait teknologi AI dan pengembangan web. Host membahas model AI terbaru Gemini 2.5 Pro yang secara mengejutkan menjadi pemimpin di berbagai leaderboard LLM, termasuk LLM Arena dan Web Dev Arena. Mereka juga mengulas Veo 3, model video generator dari Google yang mampu menghasilkan video dengan audio secara bersamaan, serta aplikasi Flow yang ditujukan untuk filmmaker profesional. Selain itu, dibahas pula update SDK Gemini yang kini kompatibel dengan OpenAI dan mendukung MCP (Model Context Protocol), serta fitur thinking budget untuk mencegah over-analyzing. Di sektor web development, episode ini menyentuh perkembangan Baseline dan Interop sebagai inisiatif lintas browser yang terus berkembang. Episode juga mencakup diskusi tentang tren remote work dan realitas kerja sebagai digital nomad, dengan berbagai pengalaman pribadi dari para host tentang bekerja di lokasi yang tidak proper untuk kerja. Di akhir episode, diumumkan bahwa topik Astro akan dibahas minggu berikutnya. - [Ngobrolin React Server Component](https://ngobrol.in/episodes/KzqALj3KpDo-ngobrolin-react-server-component): Episode Ngobrolin WEB ini membahas React Server Components (RSC), topik yang sebenarnya sudah ada sejak 2020 namun baru banyak diadopsi secara luas dalam beberapa tahun terakhir. Diskusi dimulai dengan menjelaskan perbedaan antara RSC dengan server-side rendering tradisional, di mana RSC memungkinkan developer menggunakan React di kedua sisi—server dan client—dalam satu codebase yang sama. Eka dan Ivan mengulas evolusi pengembangan web dari HTML statis, ke Single Page Application (SPA) yang semuanya client-side, lalu muncul meta framework yang mengadopsi server-side rendering untuk mengatasi masalah performa dan SEO. RSC menjadi solusi selanjutnya dengan memisahkan komponen yang berjalan di server (yang tidak perlu interaksi) dan di client (yang butuh interaktivitas), sehingga mengurangi bundle size yang dikirim ke browser. Episode ini juga menampilkan demo praktis implementasi RSC menggunakan Parcel bundler, menunjukkan bagaimana komponen server bisa mengakses resource seperti file system dan database secara langsung tanpa perlu membuat API endpoint terpisah. Diskusi diakhiri dengan percakapan tentang tantangan adopsi RSC terkait perubahan mental model developer, serta obrolan santai tentang penggunaan AI coding tools seperti Cursor dan Windsurf. - [Update Performa Web - Ngobrolin WEB](https://ngobrol.in/episodes/v28qyGyoMw4-web-performance-update-ngobrolin-web): Episode ini membahas update terbaru seputar web performance, dengan fokus utama pada rilisnya Web Vitals versi 5 yang menghapus FID (First Input Delay) dan menggantinya dengan INP (Interaction to Next Paint) sebagai metrik resmi. Diskusi mendalam mengenai perbedaan antara lab data (data pengujian dengan tools seperti Lighthouse, PageSpeed Insights) dan field data (data real dari pengguna menggunakan Web Vitals JS). Episode juga menyinggung tentang Chrome UX Report (CrUX) yang menyediakan data performance publik dari pengguna Chrome, serta pengenalan tools RAM Vision untuk monitoring capability browser dan fitur web secara lebih detail. Topik tambahan meliputi Speculation Rules API dan View Transitions API yang dapat membuat Multi-Page Application terasa seperti Single-Page Application, serta pentingnya accessibility dan standar web yang berlaku di berbagai negara. - [Ngobrolin TanStack - Ngobrolin WEB](https://ngobrol.in/episodes/8ke0CsKPjAU-ngobrolin-tanstack-ngobrolin-web): Episode Ngobrolin WEB membahas TanStack, kumpulan library front-end yang dibuat oleh Tanner Linsley. Awalnya dikenal dengan React Table dan React Query, TanStack kini telah berevolusi menjadi ekosistem yang framework-agnostik, mendukung React, Solid, Vue, Svelte, dan Angular. Diskusi mencakup sejarah evolusi dari library React-centric menjadi framework-agnostik, filosofi desain modular yang memungkinkan penggunaan library secara terpisah (ketengan) sesuai kebutuhan, serta pendekatan unik Tanner dalam membangun bisnis open source yang independen tanpa venture capital atau akuisisi. Episode juga menyinggung tentang sustainability model bisnis open source dan perbandingan dengan ekosistem lain seperti Vue (Anthony Fu/Evan You) dan React (Next.js/Remix). - [Ngobrolin SEO - Ngobrolin WEB](https://ngobrol.in/episodes/99CaLw7Q7os-ngobrolin-seo-ngobrolin-web): Episode Ngobrolin WEB ini membahas topik SEO (Search Engine Optimization) secara mendalam, terutama relevansinya di era AI dan perubahan landscape mesin pencari modern. Diskusi dimulai dengan pertanyaan mendasar: apakah SEO masih relevan ketika orang beralih menggunakan AI untuk mencari informasi? Pembicara menjelaskan bahwa meskipun AI semakin populer, SEO tetap penting karena hasil pencarian Google sekarang menampilkan jawaban AI-generated di bagian atas, yang kemudian diikuti oleh link-link website. Episode ini mengeksplorasi sejarah singkat SEO dari era directory listing seperti Yahoo, hingga lahirnya Google yang menggunakan crawling dan indexing. Pembicara juga membahas perbedaan algoritma antar search engine dan fakta bahwa tidak ada yang benar-benar mengetahui secara pasti sinyal apa yang digunakan oleh mesin pencari, hanya ada guideline dan best practice. Diskusi kemudian berfokus pada perspektif web developer mengenai SEO, menekankan bahwa SEO yang baik pada dasarnya adalah tentang accessibility, semantic HTML, dan struktur konten yang proper. Episode ini juga menyentuh topik-topik teknis seperti hierarchical heading (H1-H6), canonical links untuk menghindari duplicate content, penggunaan alt text pada gambar, meta tags untuk social media sharing (Open Graph dan Twitter Cards), schema markup, dan pentingnya Core Web Vitals. Pembicara menekankan bahwa konten berkualitas tetap menjadi faktor utama, dan SEO hanyalah optimasi - bukan cara untuk memanipulasi sistem. Di bagian akhir, pembicara membahas berbagai tools SEO yang tersedia, mulai dari gratis seperti Google Search Console dan browser extension SEO Quake, hingga tools berbayar seperti SEMrush dan Ahrefs untuk kebutuhan yang lebih komprehensif seperti keyword research dan competitor analysis. - [Ngobrolin CORS & Browser Policy - Ngobrolin WEB](https://ngobrol.in/episodes/RZ0hw1FcdnA-ngobrolin-cors-browser-policy-ngobrolin-web): Episode Ngobrolin WEB ini membahas secara mendalam tentang kebijakan keamanan browser (browser security policy) dengan fokus utama pada CORS (Cross-Origin Resource Sharing), CSP (Content Security Policy), dan CORP (Cross-Origin Resource Policy). Pembahasan dimulai dengan pengalaman umum developer yang sering mengalami masalah CORS saat mengembangkan aplikasi web, terutama saat frontend dan backend terpisah. Host menjelaskan bahwa CORS adalah mekanisme keamanan browser yang mencegah website dari origin berbeda mengakses resource tanpa izin, yang dikenal sebagai Same-Origin Policy. Mereka membahas solusi praktis untuk mengatasi CORS, termasuk penggunaan Chrome extension untuk development (sebagai solusi sementara) dan konfigurasi yang benar di sisi server dengan middleware seperti cors di Express.js atau Laravel CORS. Diskusi kemudian meluas ke Content Security Policy (CSP), yang merupakan header HTTP untuk mencegah serangan XSS (Cross-Site Scripting) dengan mengontrol apa saja resource yang boleh dimuat di halaman web. Mereka menjelaskan berbagai directive CSP seperti script-src, style-src, img-src, dan penggunaan hash untuk validasi script. Terakhir, mereka membahas Cross-Origin Resource Policy (CORP) yang lebih spesifik untuk mencegah website lain meng-embed resource kita dalam konteks mereka, sebagai perlindungan terhadap serangan side-channel seperti Spectre dan Meltdown. Seluruh diskusi dikelilingi dengan contoh praktis, pengalaman pribadi, dan humor khas Ngobrolin WEB. - [Bedah Situs - Ngobrolin WEB](https://ngobrol.in/episodes/dk8JSYuOmhc-bedah-situs-ngobrolin-web): Episode ini merupakan edisi perdana segmen "Bedah Situs" di mana tim Ngobrolin WEB mengulas website mereka sendiri, yaitu ngobrol.in. Website ini dibangun dengan bantuan berbagai AI tools seperti GitHub Copilot, Claude Code, Amazon Q Developer CLI, dan Cursor untuk hampir seluruh aspek pengembangan termasuk coding, testing, dan dokumentasi. Website menggunakan teknologi Elixir dengan Phoenix Framework, Live View, PostgreSQL, dan Tailwind CSS. Website ini berfungsi sebagai showcase arsip episode podcast Ngobrolin WEB yang bersumber dari YouTube playlist, dengan fitur RSS feed yang kompatibel dengan format podcast sehingga dapat didengarkan di Spotify. Diskusi juga mencakup proses konversi video YouTube menjadi MP3 menggunakan yt-dlp, deployment menggunakan Coolify (open source alternatif Heroku) di AWS, dan analisis performa website menggunakan Chrome DevTools Performance tab. - [Ngobrolin Lebaran - Ngobrolin WEB](https://ngobrol.in/episodes/L4VUZPu-IMQ-ngobrolin-lebaran-ngobrolin-web): Episode ini adalah ucapan Selamat Idul Fitri dari tim Ngobrolin WEB. Eka, Ivan, dan Rizah memberikan salam Lebaran dengan mengucapkan "Minal Aidzin Wal Faidzin" dan memohon maaf lahir dan batin kepada para pendengar. Episode ini menampilkan momen yang cukup menghibur ketika para host mencoba mengucapkan salam secara kompak, yang ternyata membutuhkan beberapa kali percobaan untuk mencapai kekompakan. - [Ngobrolin Design Pattern - Ngobrolin WEB](https://ngobrol.in/episodes/utmuHV8-MAU-ngobrolin-design-pattern-ngobrolin-web): Episode ini membahas tentang Design Pattern dalam pengembangan software, sebuah topik permintaan dari Mas Azam Aziz. Diskusi dimulai dengan perdebatan menarik tentang apakah MVC (Model-View-Controller) termasuk dalam kategori Design Pattern atau tidak, mengingat beberapa referensi menyatakan MVC bukanlah Design Pattern melainkan Architectural Pattern. Eka dan Ivan mengulas berbagai kategori Design Pattern seperti Creational Pattern, Structural Pattern, dan Behavioral Pattern, serta membahas referensi terpercaya seperti Refactoring Guru dan Patterns.dev karya Addy Osmani. Diskusi juga mencakup perbedaan antara Front-end dan Back-end Design Pattern, serta bagaimana konsep ini berbeda dengan Rendering Method seperti SSR, CSR, dan SSG. Episode juga menyentuh topik browser security seperti CORS (Cross-Origin Resource Sharing), CORP (Cross-Origin Resource Policy), dan berbagai kebijakan keamanan browser lainnya yang relevan bagi pengembang web modern. - [Ngobrolin Kata Sandi - Ngobrolin WEB](https://ngobrol.in/episodes/wRF7vpvs95s-ngobrolin-kata-sandi-ngobrolin-web): Episode Ngobrolin Web ke-122 membahas topik password secara komprehensif dari berbagai sisi: pengguna, developer front-end, hingga back-end. Diskusi dimulai dengan pentingnya password yang kuat dan unik untuk mencegah kebocoran data, yang masih menjadi salah satu top 10 OWASP security risks. Para host membahas praktik terbaik untuk pengguna seperti menggunakan password manager (Bitwarden, LastPass, bawaan browser), menghindari password yang sama di multiple services, dan memanfaatkan fitur password generator. Dari sisi developer, dibahas implementasi yang benar mulai dari penggunaan input type="password" yang semantik, atribut autocomplete yang proper, hingga teknik hashing dan salting di sisi server menggunakan library seperti bcrypt, Argon2, dan lain-lain. Episode ini juga menyinggung evolusi layanan autentikasi modern seperti Auth0, Firebase, Supabase, dan AuthJS yang mempermudah implementasi security tanpa harus membangun dari nol. - [Ngobrolin Keamanan bareng @mazipan - Ngobrolin WEB](https://ngobrol.in/episodes/7TR-vxCBiZ4-ngobrolin-keamanan-bareng-mazipan-ngobrolin-web): Episode ini membahas tentang keamanan web (web security) bersama Mas Irfan, narasumber untuk ketiga kalinya. Diskusi dimulai dengan pengalaman Mas Irfan mencari pekerjaan selama 2 bulan dan pentingnya memiliki dana darurat (emergency fund). Topik utama adalah security yang sering dianggap sulit oleh banyak developer karena kurangnya exposure dan pembahasan, padahal security adalah tanggung jawab semua orang dalam tim pengembangan, bukan hanya tim IT security khusus. Episode ini menekankan bahwa security harus dianggap sebagai bagian dari produk, sama seperti performance dan accessibility. - [Ngobrolin Monorepo - Ngobrolin WEB](https://ngobrol.in/episodes/j-wZjh62Gaw-ngobrolin-monorepo-ngobrolin-web): Episode ini membahas konsep Monorepo dalam pengembangan software, sebuah strategi di mana kode dari banyak proyek disimpan dalam satu repository. Host membahas definisi Monorepo, perbedaannya dengan monolitik dan multirepo, serta kelebihan dan kekurangannya. Diskusi mencakup berbagai tools yang mendukung Monorepo seperti Lerna, NX, Turborepo, dan workspace features dari NPM, Yarn, PNPM, dan Bun. Episode juga menampilkan contoh implementasi Monorepo dari perusahaan besar seperti Google dan proyek open source populer seperti React, Next.js, dan Bun. - [Ngobrolin Fitur Terbaru CSS bersama @AdamArgyleInk dan Bramus @ChromeDevs](https://ngobrol.in/episodes/QdWmc9bMo48-ngobrolin-fitur-terbaru-css-bersama-adamargyleink-dan-bramus-chromedevs): Episode ini membahas CSS Wrap 2024 bersama Adam Argyle dan Bramus, dua Developer Relations Engineer dari tim Chrome yang fokus pada CSS dan UI. Mereka berbagi cerita di balik layar pembuatan CSS Wrap 2024, sebuah website interaktif yang merangkum perkembangan CSS sepanjang tahun 2024 dalam bentuk scrollytelling dengan tema retro game 8-bit. Diskusi mencakup berbagai topik penting termasuk perkembangan web modern, termasuk peran Adam dan Bramus sebagai DevRel, serta berbagai fitur CSS unggulan seperti Scroll Driven Animations, View Transitions, CSS Nesting, dan Field Sizing. Mereka juga menjelaskan pendekatan mereka dalam menjembatani developer, engineering tim, dan standard body untuk membuat fitur web yang lebih baik dan mudah digunakan. - [Ngobrolin Protokol Jaringan - Ngobrolin WEB](https://ngobrol.in/episodes/iLILgsmq9mg-ngobrolin-protokol-jaringan-ngobrolin-web): Episode ini membahas tentang protokol jaringan (network protocols) dan model OSI (Open System Interconnection) yang menjadi dasar komunikasi antar perangkat di jaringan. Diskusi dimulai dengan penjelasan apa itu protokol sebagai tata cara atau spesifikasi yang memungkinkan perangkat-perangkat berbeda untuk saling berkomunikasi dengan reliable dan konsisten. Topik utama meliputi penjelasan 7 lapisan OSI model mulai dari Physical layer (kabel/fisik) hingga Application layer (HTTP, HTTPS, FTP), serta perbedaan antara TCP dan UDP sebagai protokol transport yang umum digunakan. - [Optimasi Performa JS - Ngborlin WEB](https://ngobrol.in/episodes/ObTg-XT9C64-optimasi-performa-js-ngborlin-web): Episode ini membahas tentang tips dan trik optimasi performa JavaScript, khususnya penggunaan atribut async, defer, dan dynamic import. Diskusi dimulai dengan Core Web Vitals, terutama INP (Interaction to Next Paint) yang menggantikan FID (First Input Delay) sebagai metrik responsivitas halaman. Tim NgobrolinWEB menjelaskan perbedaan antara script synchronous (blocking), async (dieksekusi segera setelah selesai di-download), dan defer (dieksekusi setelah DOM Content Loaded). Episode ini juga membahas kasus nyata seperti penggunaan jQuery, header bidding untuk iklan, cookie consent, dan bagaimana menghindari race condition. Terdapat diskusi menarik tentang Partytown untuk offload third-party script ke web worker, TypeScript, dan sejarah browser serta JavaScript. - [Ngobrolin Video Player - Ngobrolin WEB](https://ngobrol.in/episodes/KiBErl9F2a0-ngobrolin-video-player-ngobrolin-web): Episode ini membahas perjalanan Imbre Nagi, seorang Cloud Engineer yang berbagi pengalamannya dalam mempelajari front-end development dan membangun platform course online menggunakan Astro. Imbre menceritakan awal mula karirnya sebagai iOS engineer, transisi ke cloud infrastructure, dan tantangan yang dihadapi ketika belajar front-end framework seperti React dan Next.js. Diskusi juga mencakup filosofi Astro sebagai framework yang mengutamakan server-side rendering dengan JavaScript minimal, serta insight tentang teknologi yang digunakan dalam platform course-nya seperti TypeScript, Ansible untuk deployment, dan integrasi dengan Firebase untuk autentikasi. - [Ngobrolin CSS Wrapped 2024 - Ngobrolin WEB](https://ngobrol.in/episodes/2E52qAB9Pq4-ngobrolin-css-wrapped-2024-ngobrolin-web): Episode ini membahas CSS Wrapped 2024, sebuah showcase interaktif yang menampilkan 17 fitur CSS baru yang dirilis sepanjang tahun 2024. Ivan dan Eka mengeksplorasi berbagai fitur baru yang dibagi dalam tiga kategori: Components, Interactions, dan Developer Experience. Website CSS Wrapped 2024 sendiri dibangun dengan Astro dan menampilkan tema retro game yang kreatif. Para pembahas juga membicarakan tentang browser support, di mana beberapa fitur sudah mencapai baseline (didukung semua browser utama) sementara yang lain masih terbatas pada browser berbasis Chromium. - [Ngobrolin LocalFirst - Ngobrolin WEB](https://ngobrol.in/episodes/Ggx5EOiZIwA-ngobrolin-localfirst-ngobrolin-web): Episode ini membahas tentang paradigma Local First dalam pengembangan aplikasi modern. Diskusi dimulai dari pengalaman menggunakan Actual Budget, aplikasi personal finance yang berjalan secara lokal dan dapat diakses offline. Trio host membahas definisi Local First menurut Maggie Appleton yang bukan hanya tentang storage lokal, tetapi aplikasi yang dibangun untuk penggunaan personal dan lingkungan sekitar. Episode ini juga mengeksplorasi berbagai teknologi pendukung seperti database lokal (IndexedDB, PouchDB, SQLite dengan WebAssembly), CRDT (Conflict-Free Replicated Data Types) untuk resolusi konflik, serta sync engine modern seperti PowerSync, ElectricSQL, dan Zero. Diskusi juga menyentuh tren evolusi dari aplikasi offline-first era desktop, ke online-first saat web booming, dan kembali ke hybrid offline/online dengan tetap mempertahankan kepemilikan data (data ownership). - [Ngobrolin Video Singkat bareng @dannydwic - Ngobrolin WEB](https://ngobrol.in/episodes/QgnEdmGl814-ngobrolin-video-singkat-bareng-dannydwic-ngobrolin-web): Episode Ngobrolin WEB ini berbincang dengan Dhani Dwijaya Putra, seorang software engineer di Hijra sekaligus konten kreator programming di TikTok dan LinkedIn. Percakapan membahas perjalanan karir Dhani yang unik—beralih dari latar belakang pendidikan olahraga menjadi software engineer melalui belajar autodidak selama 2 tahun dengan bimbingan mentor. Topik utama episode adalah proses pembuatan konten video pendek untuk edukasi programming, termasuk strategi scripting, teknik recording, editing, dan cara meningkatkan engagement audiens. Dhani berbagi formula pembuatan konten edukatif yang engaging melalui showing emotions, storytelling, dan struktur konten yang jelas. Episode ini juga menyentuh aspek time management untuk menyeimbangkan pekerjaan full-time sebagai software engineer dengan hobi membuat konten, serta rencana karir ke depan termasuk target bekerja di luar negeri. - [Ngborolin 2025 - Ngobrolin WEB](https://ngobrol.in/episodes/_6HCMH8SREU-ngborolin-2025-ngobrolin-web): Episode ini membahas tren teknologi web di tahun 2025 dengan fokus utama pada perkembangan Artificial Intelligence (AI). Diskusi dimulai dengan review singkat tren 2024, dimana AI Generative menjadi sangat dominan dengan banyak provider baru, produk yang beragam (chatbot, image generator, video generator, audio generator), dan integrasi AI yang semakin meluas ke berbagai produk. Episode ini juga menyinggung tren "micro apps" atau aplikasi sekali pakai yang dibuat dengan bantuan AI, serta prediksi bahwa AI akan semakin terintegrasi dan terjangkau bagi developer web. - [Ngobrolin WEB edisi Offline Surabaya](https://ngobrol.in/episodes/bu4mEcws2h0-ngobrolin-web-edisi-offline-surabaya): Episode ini adalah sesi tanya jawab Ngobrolin Web versi offline yang diadakan di Surabaya. Pembahasan mencakup berbagai topik teknis seputar pengembangan web, mulai dari perbedaan penggunaan RUM (Real User Monitoring) dan Google Analytics, tantangan menggunakan AI untuk front-end development, keunggulan Tailwind CSS untuk developer yang tidak terlalu mahir CSS, optimasi performa web dengan banyak third-party libraries, hingga perdebatan tentang penggunaan ORM seperti Prisma dan Sequelize dibandingkan SQL raw. Episode ini juga membahas tentang browser automation, web scraping, dan cara kerja spesifikasi teknis web antar browser modern. - [Ngobrolin Desktop App - Ngobrolin WEB](https://ngobrol.in/episodes/94-ige23PDs-ngobrolin-desktop-app-ngobrolin-web): Episode ini membahas pengalaman produksi menggunakan Tauri, framework desktop application berbasis Rust yang memungkinkan pengembangan aplikasi desktop cross-platform dengan teknologi web. Mas Donny dan Mas Aris dari Zero01 Group berbagi pengalaman mereka memilih Tauri sebagai solusi untuk membangun aplikasi desktop trading, menjelaskan keuntungan menggunakan WebView native dari OS dan bagaimana Tauri menawarkan performa lebih baik dibandingkan alternatif seperti Electron. Diskusi mencakup berbagai aspek teknis termasuk integrasi SQLite untuk penyimpanan data lokal, tantangan multi-monitor, serta keamanan data dengan enkripsi. Kedua pembicara juga berbagi insight tentang ekosistem Rust, integrasi dengan Deno, dan tips karir untuk developer teknis tentang pentingnya membangun kehadiran di media sosial. - [Ngobrolin Pengalaman Frontend @imrenagi - Ngobrolin WEB](https://ngobrol.in/episodes/jxW4wishA8s-ngobrolin-pengalaman-frontend-imrenagi-ngobrolin-web): Episode ini membahas tentang teknologi video di web bersama Mas Yudi, engineer yang bekerja di Daily Motion. Percakapan dimulai dengan sejarah singkat video di web, dari era Flash hingga HTML5, dan tantangan format video seperti MP4, WebM, dan OGV. Mas Yudi berbagi pengalaman kerja di bagian B2B Daily Motion yang menyediakan layanan hosting video untuk klien corporate, termasuk infrastruktur video yang bisa di-white-label. Diskusi mencakup berbagai aspek teknis seperti autoplay policy browser, integrasi iklan menggunakan Google IMA SDK, tantangan smart TV dengan browser engine Chromium versi lama, hingga isu performa dan accessibility pada video player. Episode ini juga menyentuh regulasi seperti GDPR dan PDP (Perlindungan Data Pribadi) yang mempengaruhi implementasi video di website. - [Persiapan DevFest Surabaya - Ngobrolin WEB](https://ngobrol.in/episodes/8MhHQNJ6OzE-persiapan-devfest-surabaya-ngobrolin-web): Episode ini membahas persiapan dan agenda DevFest Surabaya 2024, acara tahunan Google Developer Group (GDG) Surabaya yang akan diselenggarakan pada tanggal 8 Desember 2024. Trio host Ngobrolin Web - Mas Riza, Mas Ivan, dan Mbak Eka - akan menjadi pembicara dalam sesi khusus "Ngobrolin Web" yang akan diadakan secara offline. Episode ini juga mengundang Haidar Zamzam, salah satu panitia GDG Surabaya, untuk berbagi informasi tentang persiapan acara, format event, dan berbagai topik teknis yang akan dibahas. Diskusi mencakup topik-topik seperti Browser Automation, HTML over the Wire, dan penggunaan AI sebagai coding assistant untuk front-end development. - [Ngobrolin Alat Dokumentasi - Ngobrolin WEB](https://ngobrol.in/episodes/w0--WVHU5DE-ngobrolin-alat-dokumentasi-ngobrolin-web): Episode ini membahas tentang dokumentasi dalam pengembangan software, mulai dari konsep dasar, jenis-jenis dokumentasi, hingga berbagai tools yang dapat digunakan. Diskusi dimulai dengan pengenalan Documentation System yang terdiri dari empat jenis utama: Tutorial (learning-oriented), How-to Guides (problem-solving oriented), Explanation (teoretical/conceptual), dan Reference (API documentation). Episode mengulas berbagai tools populer seperti Docusaurus (React-based), Starlight (Astro-based), Storybook (untuk UI components), Swagger/OpenAPI (untuk API documentation), dan Google Code Lab (untuk step-by-step tutorial). Topik penting yang dibahas meliputi best practice "Docs as Code" di mana dokumentasi ditempatkan dalam reposisi yang sama dengan kode untuk memudahkan tracking, version control, dan code review, serta diskusi tentang bagaimana dokumentasi modern juga perlu dikonsumsi oleh AI tools seperti Cursor dan Copilot. - [Ngobrolin Slide - Ngobrolin WEB](https://ngobrol.in/episodes/uYnfyW3M790-ngobrolin-slide-ngobrolin-web): Episode ini membahas tentang berbagai tools dan platform untuk membuat presentasi slide, mulai dari konvensional seperti PowerPoint dan Keynote hingga berbasis web seperti Google Slides, Canva, dan solusi berbasis kode seperti Reveal.js, MDX Deck, dan Slidev. Diskusi dimulai dengan pengalaman pribadi para host dalam menggunakan berbagai tools presentasi, kelebihan dan kekurangan masing-masing, serta fokus khusus pada Slidev - sebuah framework berbasis Markdown dan Vue yang memungkinkan developer membuat presentasi dengan cara yang lebih natural menggunakan kode. Episode juga menyinggung tentang use case khusus untuk developer seperti menampilkan kode dengan syntax highlighting, demo langsung di browser, dan kemudahan kolaborasi serta hosting. - [Ngobrolin MicroFrontend - Ngobrolin WEB](https://ngobrol.in/episodes/4B17oXqMoRY-ngobrolin-microfrontend-ngobrolin-web): Episode ini membahas tentang Micro Front-end, sebuah arsitektur front-end yang memecah aplikasi monolitik menjadi bagian-bagian kecil yang dapat dikelola oleh tim yang berbeda secara independen. Diskusi dipandu oleh Ivan dengan narasumber Mas Irvan Maulana dan Lihao, yang berbagi pengalaman dan perspektif mereka tentang implementasi micro front-end di industri. Topik yang dibahas meliputi definisi micro front-end, kapan dan mengapa harus menggunakannya, tantangan performa dan dependensi, perbedaan antara monorepo dan micro front-end, serta konsep horizontal dan vertical split. Diskusi juga menyentuh alat-alat seperti Module Federation Plugin dan perdebatan tentang apakah pendekatan Vercel (vertical split) dapat disebut sebagai micro front-end yang sejati. - [Ngborolin Svelte feat. @lihautan - Ngobrolin WEB](https://ngobrol.in/episodes/8tZIeQH1DSU-ngborolin-svelte-feat-lihautan-ngobrolin-web): Episode ini membahas tentang Svelte dan Svelte 5 bersama Lihau, seorang Svelte maintainer yang bekerja sebagai Front-end Engineer di Shopee Singapore. Lihau berbagi perjalanan menjadi maintainer Svelte yang dimulai saat pandemi COVID-19 ketika ia mencoba membaca kode Svelte di GitHub dan membuat pull request kecil. Diskusi mencakup perbedaan antara Svelte dan React, keuntungan menggunakan Svelte untuk animasi dan transisi, konsep compiler Svelte yang mengubah kode menjadi vanilla JavaScript, serta perubahan besar dalam Svelte 5 yang memperkenalkan runes untuk universal reactivity. Episode juga membahas tentang SvelteKit sebagai meta framework resmi, contoh aplikasi populer yang menggunakan Svelte seperti Apple Music dan syntax.fm, serta tantangan dalam mengadopsi framework baru di lingkungan perusahaan. - [Ngobrolin JavaScript Bangkok - Ngobrolin WEB](https://ngobrol.in/episodes/4yHA-8Bu4XM-ngobrolin-javascript-bangkok-ngobrolin-web): Episode ini membahas pengalaman tim Ngobrolin WEB menghadiri JavaScript Bangkok Conference 2.0.1 di Bangkok, Thailand. Rizal menceritakan pengalamannya ditolak saat mengajukan topik presentasi tentang Local First AI, namun tetap mendapat kesempatan untuk hadir setelah nebeng hotel dan mendapat subsidi dari pihak penyelenggara. Selama konferensi, mereka menghadiri berbagai sesi menarik termasuk keynote oleh Lihao (maintainer Stealth) tentang cara kerja spell compiler, presentasi oleh Pak Thor (ex-Googler) tentang real-time translation dan semantic search menggunakan WebAssembly dan WebGPU secara offline, serta sesi tentang creative coding dengan P5.js oleh Patt Vira. Ivan memberikan presentasi lightning talk tentang WebDriver BiDi. Episode juga menyinggung perbandingan budaya dan kuliner antara Indonesia, Thailand, dan Malaysia, serta diskusi teknis mengapa framework JavaScript yang populer cenderung bersifat minimalis dibandingkan full-battery seperti framework di bahasa pemrograman lain. - [Ngobrolin ViteConf - Ngobrolin WEB](https://ngobrol.in/episodes/RfOoMPVgYjM-ngobrolin-viteconf-ngobrolin-web): Episode ini membahas ViteConf 2024, sebuah konferensi yang menghadirkan ekosistem Vite dan berbagai tools pengembangan web modern. Topik utama meliputi pengumuman pendanaan Void Zero oleh Evan You (pencipta Vite), hadirnya toolchain baru yang lebih cepat seperti OXC dan Rolldown, serta pembahasan tentang Tutorial Kit dari StackBlitz untuk membuat tutorial interaktif. Episode juga menyentuh fenomena "Everything Written in Rust" di dunia JavaScript tooling serta perbandingan antara berbagai bundler dan linter modern. - [Ngobrolin Deno - Ngobrolin WEB](https://ngobrol.in/episodes/d7L_jRDJb-E-ngobrolin-deno-ngobrolin-web): Episode ini membahas tentang Deno 2, runtime JavaScript/TypeScript alternatif Node.js yang dibuat oleh Ryan Dahl (pencipta Node.js asli). Topik utama mencakup sejarah Deno, perbedaan dengan Node.js, keunggulan utama seperti security by default dan TypeScript first-class citizen, serta ekosistem lengkap yang meliputi Fresh framework, JSR (package registry), Deno KV (database), dan Deno Deploy (platform hosting). Diskusi juga menyinggung perbandingan dengan runtime lain seperti Bun serta kelebihan dan kekurangan masing-masing. - [Ngobrolin Drama Trademark & Open Source - Ngobrolin WEB](https://ngobrol.in/episodes/V1yh7lLkzbw-ngobrolin-drama-trademark-open-source-ngobrolin-web): Episode ini membahas drama perseteruan antara Matt Mullenweg (co-founder WordPress) dengan WP Engine, sebuah perusahaan hosting WordPress. Konflik berawal dari tuduhan penggunaan merek WordPress yang berlebihan oleh WP Engine di luar batas "fair usage" serta klaim ketidakkontribusian WP Engine terhadap proyek open source WordPress. Matt Mullenweg menuntut pembayaran lisensi 8% dari pendapatan WP Engine, yang ditolak oleh perusahaan tersebut. Perseteruan ini berkembang hingga pemblokiran akses layanan WordPress.org untuk pelanggan WP Engine. Episode juga menyentuh tema pentingnya memahami perbedaan antara "free" dan "open source", serta konsep vendor lock-in dalam ekosistem teknologi modern. - [Ngobrolin FOMO - Ngobrolin WEB](https://ngobrol.in/episodes/NxIfTz_DN-0-ngobrolin-fomo-ngobrolin-web): Episode ini membahas tentang fenomena FOMO (Fear of Missing Out) di kalangan developer teknologi, khususnya di dunia web development yang perubahannya sangat cepat. Diskusi dimulai dengan pengalaman tim menghadapi pertanyaan dari developer yang merasa tertinggal karena kantornya menggunakan teknologi yang sudah jadul, diluar tren yang sedang ramai dibahas. Topik berkembang menjadi diskusi yang lebih dalam tentang pertimbangan mengadopsi teknologi baru di tempat kerja, membedakan antara FOMO yang irasional dengan kebutuhan nyata untuk upgrade, dan konsep JOMO (Joy of Missing Out) sebagai kontrapoint. Episode juga membahas Lindy Effect yang menyatakan bahwa teknologi yang sudah bertahan lama cenderung akan terus bertahan relevan, serta tips untuk mengatasi FOMO seperti fokus pada 'learning how to learn' daripada menghafal detail setiap framework. - [🗣️ Ngobrolin HTMX - Ngobrolin WEB](https://ngobrol.in/episodes/ayiRFLsM-mM--ngobrolin-htmx-ngobrolin-web): Episode Ngobrolin ini membahas tentang HTMX, sebuah front-end framework yang unik dengan pendekatan HTML-first. Berbeda dengan framework modern seperti React atau Vue yang berbasis JavaScript, HTMX memperluas kemampuan HTML melalui atribut khusus dengan prefix HX-, memungkinkan elemen HTML mana pun untuk melakukan HTTP request (GET, POST, PATCH, PUT, DELETE) tanpa perlu menulis kode JavaScript tambahan. Konsep kuncinya adalah "HTML over the wire" di mana server mengirimkan HTML sebagai respons yang kemudian langsung di-swap ke DOM, bukan JSON seperti pada SPA modern. Para pembicara juga menunjukkan demo live coding menggunakan Hono sebagai backend server untuk mendemonstrasikan fitur-fitur HTMX seperti hx-get, hx-post, hx-target, hx-swap, hx-indicator, dan hx-boost untuk membuat Single Page Application sederhana. - [Diskusi Bebas - Ngobrolin WEB](https://ngobrol.in/episodes/hsf-T40wRz0-diskusi-bebas-ngobrolin-web): Episode ini membahas tentang pengalaman tim dalam beralih dari StreamYard ke Vdo.Ninja, sebuah tools streaming open source berbasis teknologi WebRTC. Diskusi kemudian bergeser ke topik performa website dengan audit Core Web Vitals (INP, CLS, LCP) yang dilakukan di kantor. Topik utama yang dibahas adalah WCAG accessibility audit level 2.1 AA, termasuk aspek legal seperti ADA (Americans with Disabilities Act) di Amerika dan regulasi yang mulai mewajibkan aksesibilitas di Eropa. Episode juga membahas tantangan dalam menjalankan audit accessibility yang mencakup development, design, konten, dan QA. - [Ngobrolin Buku Halo Koding - Ngobrolin WEB](https://ngobrol.in/episodes/fZtxF7gECuI-ngobrolin-buku-halo-koding-ngobrolin-web): Episode ini membahas buku "Halo Coding" karya Hilman, sebuah buku yang membahas dunia pemrograman dari sisi manusianya, bukan dari sisi teknis. Hilman berbagi perjalanannya menulis buku selama masa pandemi, mulai dari motivasi awal yaitu menggabungkan passionnya terhadap menulis dan pemrograman, hingga proses self-publishing yang ia lakukan. Buku ini lahir dari keprihatinan Hilman melihat minimnya literatur tentang pemrograman yang membahas aspek non-teknis seperti mental model, tantangan psikologis, dan masalah keseharian yang dihadapi programmer. Episode ini juga menyinggung tentang imposter syndrome, strategi menentukan harga produk digital, dan pentingnya memulai hal-hal kecil (start small) dalam meraih tujuan besar. - [Ngobrolin Google I⧸O Connect China 2024! #WPUCAST x #NgobrolinWEB](https://ngobrol.in/episodes/vQIu4ekqhvY-ngobrolin-google-io-connect-china-2024-wpucast-x-ngobrolinweb): Episode ini membahas pengalaman para Google Developer Expert (GDE) dari Indonesia yang menghadiri Google I/O Connect China 2024 di Beijing. Mereka berbagi cerita tentang perjalanan, sesi-sesi teknis yang diikuti, demo interaktif menarik, serta kesempatan bertemu langsung dengan developer relation Google seperti Adam Argyle, Thomas Steiner, dan Jocelyn. Episode ini juga membahas perbedaan antara Google I/O, I/O Connect, dan I/O Extended, serta berbagai teknologi baru seperti AI di browser, View Transitions API, dan fitur terbaru Chrome DevTools. - [Ngobrolin Astro - Ngobrolin WEB](https://ngobrol.in/episodes/89TRqTXfwrg-ngobrolin-astro-ngobrolin-web): Episode ini membahas tentang Astro, sebuah meta framework JavaScript yang semakin populer di kalangan developer. Pembahasan dimulai dengan pengenalan Astro sebagai framework yang awalnya fokus pada content-driven websites dan static site generation (SSG), namun kini telah berkembang mendukung SSG, SSR, dan hybrid rendering. Host menjelaskan filosofi Astro yang mengedepankan HTML-first, zero JavaScript by default, dan pendekatan island architecture untuk interaktivitas yang terkontrol. Episode ini juga membahas fitur unggulan Astro seperti zero-lock (mendukung berbagai UI framework seperti React, Vue, Svelte, Preact, dan Solid), performa yang optimal dengan hydration minimal, serta adopsi web API modern seperti requestIdleCallback. Dibahas juga evolusi Astro dari penggabungan Snowpack ke Vite, integrasi Astro DB, fitur experimental Server Islands, serta proyek terkait seperti Starlight untuk dokumentasi. Perbandingan dengan framework lain seperti Next.js dan Gatsby juga menjadi topik menarik, menyoroti keunggulan Astro dalam performa dan pendekatan yang lebih web standard. - [Ngobrolin Big-O - Ngobrolin WEB](https://ngobrol.in/episodes/NDQXIdPWaUQ-ngobrolin-big-o-ngobrolin-web): Episode ini membahas tentang Big O Notation, sebuah konsep fundamental dalam ilmu komputer yang digunakan untuk mengukur kompleksitas performa kode. Diskusi dimulai dengan pengalaman tim mengenai pembelajaran Big O di kampus dan relevansinya dalam coding interview. Topik utama mencakup pengenalan berbagai jenis notasi kompleksitas seperti O(1), O(n), O(log n), O(n²), hingga O(n!), serta perbedaan antara Big O (worst case scenario), Omega (best case scenario), dan Theta notation. Episode juga menampilkan studi kasus nyata dari dunia kerja, termasuk kisah menarik tentang sistem penyimpanan 15.000 kunci mobil yang menerapkan konsep indexing secara fisik, serta contoh implementasi query optimization untuk WordPress block editor. - [Ngobrolin State of JS Bagian 2 - Ngobrolin WEB](https://ngobrol.in/episodes/aPv5UxXSPfM-ngobrolin-state-of-js-bagian-2-ngobrolin-web): Episode ini adalah kelanjutan pembahasan State of JavaScript 2023, berfokus pada meta framework, testing tools, dan build tools. Diskusi dimulai dengan pembahasan meta framework seperti Next.js yang mendominasi pasar, diikuti oleh Nuxt, dan Astro yang mengalami pertumbuhan signifikan. Astro menonjol dengan pendekatannya yang agnostik terhadap framework UI, mendukung React, Vue, Solid, hingga Vanilla JavaScript. Pembahasan juga mencakup sentimen pengguna terhadap berbagai meta framework, dengan Gatsby mengalami penurunan drastis dan Remix yang sempat hype namun memiliki kompleksitas tersendiri. Untuk testing tools, Vitest dan Playwright mengalami kenaikan popularitas yang signifikan menggeser Jest dan Cypress. Playwright mendapat pujian karena dokumentasinya yang di-revamp dan API yang mirip dengan Testing Library. Diskusi juga menyentuh build tools seperti Vite yang semakin dominan menggantikan Webpack, serta runtime baru seperti Bun yang memiliki bundler built-in bernama "Bundler". Episode ini juga menyoroti pain points utama dalam ekosistem JavaScript modern: excessive dominance dari framework tertentu (terutama React), terlalu banyak pilihan (choice overload), vendor lock-in concerns, dan dokumentasi yang kurang lengkap. Khusus untuk Next.js, isu utama adalah App Router instability, server components complexity, dan ketergantungan pada Vercel untuk deployment. Kesimpulan penting adalah pentingnya testing minimal untuk critical business scenarios, dan pentingnya memahami trade-off antara kemudahan penggunaan (magic) dengan kustomisasi. - [Ngobrolin State of JavaScript - Ngobrolin WEB](https://ngobrol.in/episodes/q2Xe49Du4no-ngobrolin-state-of-javascript-ngobrolin-web): Episode ini membahas hasil State of JavaScript 2023 survey yang baru dirilis, memberikan gambaran komprehensif tentang landscape JavaScript dan web development. Host membahas demografi responden survei yang menunjukkan bias terhadap negara-negara Barat dan English-speaking countries, dengan mayoritas responden berusia 30-39 tahun (milenial) dan berpengalaman lebih dari 4 tahun. Menariknya, 90% responden adalah laki-laki, menunjukkan under-representation perempuan di industri. Pembahasan fitur JavaScript modern meliputi nullish coalescing operator yang banyak dipakai namun sering dilupakan namanya dalam interview, dynamic import untuk lazy loading, private fields untuk class-based development, dan top-level await yang banyak ditunggu. Browser APIs yang dibahas mencakup WebSocket, Geolocation, Web Animation, WebAssembly, dan modern APIs seperti Broadcast Channel dan Temporal untuk date handling. Pain points JavaScript yang dominan meliputi: static typing (JavaScript inherently dynamic sehingga TypeScript menjadi kebutuhan), module system fragmentation antara CJS dan ESM, date/time handling yang tricky (JavaScript month dimulai dari 0), dan slow progress pada type annotation proposal. Isu lainnya adalah too many frameworks dan tools yang membuat developer kebingungan (choice overload), browser support inconsistency (terutama Safari), dan performance issues. Untuk libraries, Webpack menunjukkan grafik fall dari grace - sangat populer di 2017-2020 namun sekarang lebih banyak experience negatif. Vite sebaliknya, dengan tingkat kepuasan sangat tinggi. TypeScript Compiler menempati posisi baik dengan 43% experience positif. Frontend framework landscape masih didominasi React, Vue, dan Angular, dengan Svelte dan Solid.js mulai mendapat traction namun penggunaan di production masih terbatas. - [Ngobrolin Elixir - Ngobrolin WEB](https://ngobrol.in/episodes/vufuDf7MrmA-ngobrolin-elixir-ngobrolin-web): Episode ini membahas tentang Elixir, bahasa pemrograman fungsional yang berjalan di BEAM (Erlang Virtual Machine), bersama tamu spesial Alan Weimah. Diskusi dimulai dengan latar belakang Alan yang berpindah dari Ruby ke Elixir karena ketertarikannya pada pemrosesan multi-core dan concurrent programming. Topik utama meliputi perbedaan antara concurrency dan parallelism, konsep green thread, keunggulan model pemrosesan Elixir yang menggunakan copy of data untuk menghindari mutex dan locking, serta perbedaan mindset antara OOP dan functional programming. Alan juga menjelaskan tentang OTP (Open Telecom Platform), Phoenix framework, Phoenix LiveView untuk real-time web applications, serta berbagai use case yang cocok untuk Elixir seperti aplikasi web, sistem telekomunikasi, dan aplikasi real-time. - [Ngobrolin Layout Email - Ngobrolin WEB](https://ngobrol.in/episodes/pCUea-03ZbQ-ngobrolin-layout-email-ngobrolin-web): Episode Ngobrolin WEB ini membahas tantangan dan kompleksitas dalam membuat email template HTML. Topik utama meliputi perbedaan antara HTML untuk web dan HTML untuk email, keterbatasan CSS di berbagai email client, serta berbagai tools dan framework yang dapat membantu developer dalam membuat email template yang responsif dan konsisten di berbagai platform. - [Ngobrolin Safari - Ngobrolin WEB](https://ngobrol.in/episodes/ZrMsScX7sh0-ngobrolin-safari-ngobrolin-web): Episode ini membahas tentang sejarah dan perkembangan browser, khususnya WebKit dan Safari. Diskusi dimulai dengan fenomena browser war yang semakin mengerucut ke sedikit engine saja - Chromium, Gecko (Firefox), dan WebKit. Tim narasumber menjelaskan sejarah panjang WebKit yang berasal dari KHTML dan KJS milik KDE, kemudian diforking oleh Apple menjadi Safari dan open source sebagai WebKit. Google kemudian menggunakan WebKit sebelum akhirnya membuat Blink engine sendiri. Episode ini juga membahas bagaimana Apple dulu memonopoli browser di iOS dengan memaksa semua browser menggunakan engine WebKit, namun kini aturan tersebut mulai longgar di Eropa. Topik utama adalah Safari 18 yang menunjukkan peningkatan signifikan dengan banyak fitur CSS baru seperti View Transitions API, Style Query, animasi display, dan Content Visibility. Terungkap juga bahwa Jen Simmons, mantan Mozilla Firefox developer, kini bergabung dengan Apple yang menjelaskan mengapa Safari mulai mengejar ketertinggalan CSS-nya. - [Ngobrolin WebSocket - Ngobrolin WEB](https://ngobrol.in/episodes/aedr75hKoZ0-ngobrolin-websocket-ngobrolin-web): Episode ini membahas teknologi real-time communication di web, dengan fokus utama pada WebSocket. Host menjelaskan perbedaan antara HTTP request-response konvensional dengan WebSocket yang memungkinkan koneksi terus-menerus (persistent connection) antara klien dan server. Episode ini mengupas sejarah singkat munculnya WebSocket sebagai solusi atas keterbatasan HTTP untuk komunikasi dua arah secara real-time, serta membahas alternatif seperti polling, long polling, dan COMET yang pernah digunakan sebelum WebSocket menjadi standar. Selain WebSocket, episode ini juga membahas Server-Sent Events (SSE) sebagai alternatif yang lebih sederhana untuk use case satu arah (server-to-client) serta WebTransport sebagai teknologi terbaru yang menjanjikan. Diskusi juga menyentuh implementasi WebSocket di berbagai framework seperti Ruby on Rails (Action Cable, Hotwire) dan Laravel (Laravel Echo, Livewire), tantangan scaling koneksi WebSocket untuk jumlah pengguna besar, serta perbedaan WebSocket dengan teknologi lain seperti WebRTC yang bersifat peer-to-peer. - [Ngobrolin NextJS - Ngobrolin WEB](https://ngobrol.in/episodes/upgl3jIWEqc-ngobrolin-nextjs-ngobrolin-web): Episode Ngobrolin kali ini membahas update terbaru dari Next.js 14 beserta berbagai kontroversi dan perubahan signifikan yang dibawanya. Diskusi dimulai dengan keluhan para peserta mengenai kecepatan update Next.js yang dinilai terlalu cepat, seringkali mengadopsi fitur React yang masih bersifat experimental sebelum stabil, yang menyebabkan breaking changes dan API yang deprecated dalam beberapa major version. Para peserta berbagi pengalaman kurang menyenangkan saat mengupdate versi framework, terutama dalam lingkungan produksi. Topik utama yang dibahas mencakup pengenalan Turbopack sebagai pengganti webpack yang menjanjikan performa lebih baik, Server Actions yang memungkinkan pemanggilan fungsi server dari client components, dan Partial Prerendering (PPR) untuk mengoptimasi rendering konten statis dan dinamis dalam satu layout. Kontroversi terbesar dibahas adalah perilaku caching by default pada Next.js 14 yang dianggap berbahaya karena dapat menyebabkan unexpected behavior, sehingga pada versi 15 caching akan diubah menjadi opt-in setelah mendapat protes dari komunitas. Diskusi juga menyentuh perbandingan Next.js dengan framework lain seperti Remix, Astro, dan pendekatan tradisional seperti Laravel + Blade, serta tantangan dalam memilih teknologi yang stabil versus yang selalu mengikuti perkembangan terbaru. - [Mengintip Masa Depan Web AI: Apa yang Disiapkan Google?](https://ngobrol.in/episodes/1w9mppcKs8M-mengintip-masa-depan-web-ai-apa-yang-disiapkan-google): Episode ini membahas update terbaru dari Google I/O 2024 dengan fokus utama pada Web AI atau on-device AI. Pembahasan dimulai dengan lanjutan dari episode sebelumnya yang membahas baseline, interrupt CSS, dan update web development lainnya. Namun, tema utama Google I/O dua tahun terakhir memang didominasi oleh AI, dengan Google yang terlihat mengejar ketertinggalan dari perusahaan lain melalui produk Gemini yang diintegrasikan ke berbagai lini produk mereka. Tiga topik utama yang dibahas secara mendalam adalah: (1) LLM inference di browser menggunakan teknologi WebAssembly dan WebGPU yang memungkinkan model seperti Gemma 2B berjalan langsung di perangkat user, (2) Visual Blocks, sebuah alat no-code untuk prototyping aplikasi AI dengan pendekatan drag-and-drop, dan (3) Transformers.js, library JavaScript yang mengkonversi model Python menjadi format yang dapat berjalan di browser. Episode ini juga menyinggung rencana Chrome untuk mengintegrasikan model AI secara built-in (disebut Gemini Nano) guna mengurangi kebutuhan download model yang besar—sebuah strategi menarik yang membedakan pendekatan Google dengan browser lain seperti Brave dan Arc yang masih mengandalkan server-side AI. Diskusi juga menyoroti pro dan kontra implementasi on-device AI, termasuk keuntungan seperti cost saving, latensi yang lebih rendah, dan privasi data yang lebih terjaga, di sisi kekurangan seperti beban download model yang besar (hingga 1-2GB) dan tuntutan perangkat yang mumpuni. Use case yang dianggap paling relevan untuk pendekatan ini adalah aplikasi dengan model spesifik seperti background removal, makeup tester, atau validasi KTP yang memprioritaskan privasi, dibandingkan aplikasi chat umum yang masih lebih efisien menggunakan server-side AI. - [Inovasi Web dari Google I/O 2024 - Ngobrolin WEB](https://ngobrol.in/episodes/Rbs_UFZdUT8-inovasi-web-dari-google-io-2024-ngobrolin-web): Episode ini membahas highlight dari Google I/O 2024 dengan fokus pada teknologi web. Topik utama yang dibahas termasuk inisiatif baseline yang kini memiliki dua label: newly available untuk fitur yang baru didukung oleh dua versi browser terbaru, dan widely available untuk fitur yang telah stabil selama 30 bulan. Episode ini juga menyoroti dashboard baru yang lebih user-friendly untuk mengecek kompatibilitas fitur web, serta data dari RUM (Real User Monitoring) yang menunjukkan persentase pengguna nyata yang dapat mengakses fitur-fitur tertentu. Selain itu, episode ini membawa pembaruan signifikan di Chrome DevTools yang kini terintegrasi dengan AI untuk membantu developer memahami error console secara lebih baik, serta kemajuan WebGPU yang memungkinkan menjalankan model bahasa besar (LLM) seperti Gemma dan Mistral langsung di browser tanpa mengirim data ke server. Pembahasan juga mencakup update CSS/UI seperti nesting, view transitions untuk multi-page, dan speculation rules untuk pre-rendering, memberikan gambaran komprehensif tentang perkembangan teknologi web yang ditampilkan di Google I/O tahun ini. - [Ngobrolin Web API Baru - Ngobrolin WEB](https://ngobrol.in/episodes/32B5A4eX_aw-ngobrolin-web-api-baru-ngobrolin-web): Episode ini membahas berbagai Web API baru yang sedang trending atau akan menjadi tren di tahun 2024. Diskusi dimulai dengan penjelasan tentang apa itu Web API—bukan REST API melainkan API yang disediakan oleh browser seperti Storage API, Performance API, dan Observer API yang berlandaskan pada spesifikasi teknis. Beberapa API yang dibahas meliputi View Transition API yang kini sudah mencapai level 1 (client-side) dan sedang menuju level 2 (server-side), Popover API yang kini telah menjadi baseline dan bisa digunakan tanpa JavaScript murni untuk membuat tooltip atau toast non-modal, serta Web Vitals 4.0 yang menambahkan metrik INP (Interaction to Next Paint) sebagai pengganti First Input Delay. Selain itu, episode juga menyinggung proposal TypeScript type annotations untuk JavaScript yang masih dalam tahap perdebatan (stage 1) dan kontroversial karena berpotensi mengubah cara kerja JavaScript secara drastis. Speculation Rules API juga dibahas sebagai fitur baru yang memungkinkan browser untuk melakukan prefetch dan prerender secara cerdas berdasarkan perilaku pengguna, yang sangat relevan dengan tren kembalinya Multi-Page Application (MPA) dengan adanya server-side rendering. Diskusi diakhiri dengan JSON module import yang kini berstatus stage 3, memungkinkan import file JSON langsung tanpa bundler, serta setHTML API sebagai alternatif innerHTML untuk web components. - [Ngobrol dan Diskusi Bebas - Ngobrolin WEB](https://ngobrol.in/episodes/nGvDLYPcv1Q-ngobrol-dan-diskusi-bebas-ngobrolin-web): Episode ini membahas topik-topik seputar dunia pengembangan teknologi dan karier. Diskusi dimulai dengan pembahasan mengenai isu efisiensi di tim Flutter Google, di mana para host menjelaskan bahwa hal ini bukan berarti Flutter akan mati, melainkan bagian dari strategi untuk mengalihkan fokus Google ke AI dan Cloud. Mereka menggunakan analogi dokter spesialis untuk menjelaskan konsep keahlian dan mengaitkannya dengan label Google Developer Expert yang mereka miliki. Selain itu, dibahas juga fenomena serupa yang terjadi di tim React Facebook, di mana para pengembang yang di-layoff kemudian dipekerjakan oleh perusahaan lain seperti Next.js. Percakapan kemudian meluas ke topik proses rekrutmen dan interview di perusahaan teknologi. Para host berbagi pengalaman tentang ketidakadilan sistem interview yang menilai seseorang hanya dalam waktu 1-2 jam, termasuk cerita tentang pembuat Homebrew yang ditolak Google meskipun produknya digunakan oleh banyak developer Google. Mereka membahas berbagai metode seleksi mulai dari whiteboard interview algorithm, LeetCode-style tests, hingga psikotes, serta pentingnya portofolio open source dan referensi sebagai alternatif yang lebih fair. Di bagian akhir, diskusi menyentuh topik zero downtime deployment dan kenyataan bahwa outage pasti akan terjadi seiring dengan kompleksitas infrastruktur. - [🔥 UI Component Library: Pakai atau Gak?! Untung Rugi, Tips Memilih, & Pengalaman Developer!](https://ngobrol.in/episodes/fnKxblQw57c--ui-component-library-pakai-atau-gak-untung-rugi-tips-memilih-pengalaman-developer): Episode ini membahas secara mendalam tentang UI Component Library, mulai dari definisi, perbedaan dengan CSS framework dan design system, hingga berbagai opsi yang tersedia saat ini seperti Material UI, Bootstrap, Carbon Design System, Radix UI, hingga modern solution seperti Shadcn UI dan DC UI. Diskusi juga mencakup konsep headless UI yang semakin populer karena memberikan fleksibilitas lebih dalam styling sambil tetap menjaga aksesibilitas, serta evolusi tren dari library yang opinionated dan kaku menuju pendekatan yang lebih fleksibel dan mudah dikustomisasi. Selain membahas kelebihan dan kekurangan penggunaan UI component library—mulai dari percepatan development, konsistensi visual, hingga risiko terkunci pada satu ekosistem dan tampilan yang terlihat pasaran—episode ini juga menyinggung topik terkait seperti Open UI initiative dari W3C yang berupaya memetakan pola komponen UI secara standar, Web Component sebagai solusi cross-framework, hingga sedikit diskusi tentang Deno dan JSR sebagai alternatif runtime JavaScript modern. - [Ngobrolin Buku "Refactoring to Collections" - Ngobrolin WEB](https://ngobrol.in/episodes/B_k1563IOz0-ngobrolin-buku-refactoring-to-collections-ngobrolin-web): Episode ini membahas buku "Refactoring to Collections" karya Adam Wathan, seorang pengembang yang dikenal luas sebagai pencipta Tailwind CSS. Pembahasan diawali dengan latar belakang ketertarikan Ivan terhadap kode yang clean dan maintainable, di mana ia memiliki prinsip bahwa dalam tim bekerja, setiap orang harus dapat digantikan (everyone is replaceable) dan tidak boleh ada "superhero" yang bergantung pada satu orang saja. Buku ini menarik perhatian karena mengajarkan konsep menulis kode tanpa loop dan conditional statement yang berlebihan, mengarah ke gaya pemrograman yang lebih deklaratif daripada imperatif. Buku ini juga menonjol karena menggunakan contoh production code yang nyata, bukan sekadar contoh "Hello World" atau "Animal extends Dog" yang kurang praktikal. Selain membahas inti isi buku yang mencakup penggunaan higher-order function seperti map, filter, dan reduce untuk mengubah kode menjadi lebih bersih dan mudah dipelihara, episode ini juga membahas topik pembelajaran dari buku secara umum. Para pembicara dan audiens sepakat bahwa buku sangat cocok untuk topik-topik "evergreen" yang tidak cepat berubah seiring waktu, seperti konsep dan pola berpikir dalam pemrograman, berbeda dengan tutorial framework yang sering berubah setiap beberapa bulan. Episode ini ditutup dengan rekomendasi buku-buku lain yang menarik seperti "The Phoenix Project," buku-buku karya Adi Osman, serta "Halo Coding" karya Hilman, dengan harapan episode bedah buku ini dapat dilanjutkan secara rutin untuk meningkatkan literasi dan memberikan perspektif baru dalam pembelajaran pemrograman. - [Ngobrolin OOP di JS - Ngobrolin WEB](https://ngobrol.in/episodes/SgILyFtQs5k-ngobrolin-oop-di-js-ngobrolin-web): Episode ini membahas Object-Oriented Programming (OOP) di JavaScript secara mendalam, dimulai dari konsep dasar prototype, class, inheritance, hingga perbedaan antara paradigma OOP dan fungsional. Host Ivan yang sedang berada di Yunani dan pembicara lain membahas artikel dari Kensho.dot yang membandingkan penggunaan class dan function, termasuk kelebihan dan kekurangan masing-masing pendekatan. Diskusi juga menyentuh tantangan JavaScript yang sering disalahartikan karena sejarahnya yang dibuat dalam waktu singkat (10 hari) oleh Brendan Eich untuk keperluan sederhana di browser, namun kemudian berkembang menjadi bahasa yang digunakan di berbagai platform. Topik lain yang dibahas meliputi masalah `this` context yang sering membingungkan developer, penggunaan private properties dengan hashtag syntax, module pattern, serta perbandingan performa antara penggunaan class dan object literal. Episode ini juga menyinggung tentang masa depan JavaScript dan bahasa-bahasa yang meng-compile ke JavaScript seperti TypeScript, ReScript, dan PureScript, serta tantangan backward compatibility yang harus dipertahankan oleh JavaScript karena digunakan di berbagai browser. - [Ngobrolin Kontainer - Ngobrolin WEB](https://ngobrol.in/episodes/mYBN0iKfWUA-ngobrolin-kontainer-ngobrolin-web): Episode Ngobrolin Web ini membahas teknologi containerization, khususnya Docker, sebagai solusi modern untuk masalah kompatibilitas dan dependency management yang telah menjadi tantangan sejak lama dalam pengembangan aplikasi. Diskusi dimulai dengan sejarah perkembangan environment development dari era XAMPP yang all-in-one, masalah versi yang berbeda-beda antar developer, hingga munculnya solusi version manager seperti NVM untuk Node.js. Para host menjelaskan evolusi dari virtual machine yang berat namun powerful, hingga lahirnya teknologi container yang lebih efisien dengan konsep layer-based dan image sharing. Diskusi mendalam mengurai perbedaan antara VM dan Container, di mana VM membutuhkan OS lengkap sementara container hanya membutuhkan library dan komponen yang spesifik, membuatnya jauh lebih ringan dan cepat. Episode ini juga membahas Docker Hub sebagai registry untuk berbagai image siap pakai, konsep image vs container, serta Docker Compose untuk mengelola multi-container application. Para host mendemonstrasikan penggunaan Portainer sebagai container management tool yang production-ready, serta membahas konsep Dev Container untuk development environment yang konsisten. Episode ini menutup dengan contoh praktis deployment Next.js tanpa terikat pada Vercel, menunjukkan fleksibilitas yang ditawarkan oleh Docker. - [Ngobrolin Cache - Ngobrolin WEB](https://ngobrol.in/episodes/m7rsN2Wmb78-ngobrolin-cache-ngobrolin-web): Episode ini membahas topik caching secara komprehensif mulai dari konsep dasar hingga implementasi praktis di berbagai layer aplikasi. Diskusi dimulai dengan analogi dompet dan penjelasan tentang sejarah caching dari hardware (L1, L2 cache) hingga implementasi di software. Pembahasan mencakup multi-layer caching yang mencakup DNS cache, client cache (browser), CDN caching, web server caching, application caching, hingga database query level caching. Episode juga menyinggung perubahan lisensi Redis dari BSD ke RSPL dan dampaknya terhadap industri, serta membahas strategi cache invalidation dan tantangan dalam mengelola cache di sisi client yang berada di luar kontrol developer. Episode lebih lanjut membahas berbagai strategi cache update untuk traffic tinggi seperti stale-while-revalidate, cache update melalui endpoint tersembunyi, dan penggunaan cron job untuk memperbarui cache secara berkala. Diskusi juga menyentuh konsep memoization di React (useMemo), opcode cache di PHP, dan perbandingan antara teori normalisasi database dengan praktek denormalisasi di dunia kerja yang lebih mengutamakan performa. Topik Big O notation dan time complexity juga dibahas dalam konteks memilih operasi Redis yang tepat untuk performa optimal. - [Ngobrolin Kerja Jarak Jauh - Ngobrolin WEB](https://ngobrol.in/episodes/AtRclaIb4zE-ngobrolin-kerja-jarak-jauh-ngobrolin-web): Episode Ngobrolin Web kali ini membahas secara mendalam tentang pekerjaan jarak jauh atau remote work, yang menjadi topik relevan terutama sejak pandemi. Diskusi dimulai dengan pengalaman pribadi para host yang telah bekerja remote sejak lama, bahkan sebelum pandemi, termasuk bekerja untuk perusahaan internasional seperti 10up dan Human Made. Para host berbagi cerita tentang bagaimana mereka memulai karier remote work, tantangan yang dihadapi seperti perbedaan timezone, bahasa, dan budaya, serta bagaimana mengatasi hambatan komunikasi dalam lingkungan kerja asynchronous. Diskusi juga menyinggung mitos-mitos seputar remote work, seperti anggapan bahwa WFH (Work From Home) sama dengan liburan, serta stigma negatif yang muncul setelah pandemi tentang remote worker yang dianggap malas atau melakukan double job. Para host menekankan pentingnya accountability, kemampuan komunikasi tertulis yang baik, dan over-communicate tanpa micromanage. Episode ini juga membahas tips untuk mendapatkan pekerjaan remote di perusahaan luar negeri melalui networking, kontribusi open source, dan menjadi aktif di komunitas teknologi. - [Ngobrolin Ekosistem Vue - Ngobrolin WEB](https://ngobrol.in/episodes/kpyPIYuChU0-ngobrolin-ekosistem-vue-ngobrolin-web): Episode Ngobrolin ini menghadirkan Warad Wong Maneki, seorang Google Developer Expert (GDE) untuk Web dari Thailand yang berbagi pengalamannya tentang Vue.js dan ekosistem pengembangan web. Warad, yang merupakan co-founder di Wisesight (perusahaan analitik sosial dengan 260 karyawan) dan CTO di startup EV charger finder, membahas perjalanan kariernya selama 20 tahun di pengembangan web. Percakapan ini mengeksplorasi alasan di balik preferensi Warad terhadap Vue.js dibandingkan React, kelebihan dan kekurangan masing-masing framework, serta tantangan dalam komunitas Vue.js di Thailand. Diskusi juga mencakup topik-topik penting seperti Nuxt.js sebagai meta framework, manajemen state dengan Pinia, pengembangan aplikasi hybrid dengan Capacitor, dan masa depan Vue dengan fitur-fitur baru seperti Vapor mode. Warad juga berbagi wawasan tentang ekosistem teknologi Thailand, tantangan dalam menyelenggarakan meetups pasca-pandemi, serta perbedaan antara Options API dan Composition API dalam Vue 3. - [Ngobrolin PHP - Ngobrolin WEB & @sandhikagalihWPU](https://ngobrol.in/episodes/5P6heS1ZtPw-ngobrolin-php-ngobrolin-web-sandhikagalihwpu): Episode Ngobrolin Web ini membahas perjalanan panjang PHP dari bahasa scripting sederhana hingga menjadi fondasi ekosistem modern yang powerful. Diskusi dimulai dengan konteks tentang bagaimana PHP sempat diprediksi akan mati namun justru terus berkembang dan bertahan, bahkan mengalami kebangkitan berkat framework Laravel yang revolusioner. Host membahas evolusi PHP dari era awal dengan XAMPP, kehadiran framework seperti CodeIgniter dan Zend Framework, hingga transformasi besar yang dibawa oleh Laravel yang mengubah cara pandang industri terhadap PHP. Diskusi juga menyinggung peluncuran PHP 8.2 dan Laravel 11 yang baru, dengan fitur-fitur modern seperti readonly class, typed properties, dan improvement signifikan pada type system. Para host mengulas bagaimana ekosistem Laravel yang matang dengan paket-paket first-party dan third-party berkualitas telah menciptakan platform development yang enterprise-ready. Episode ini menutup dengan refleksi tentang pentingnya tidak terlalu fanatik pada satu teknologi, mengingat dinamika cepat dunia programming dan bagaimana konflik internal bisa mempengaruhi masa depan sebuah bahasa atau framework. - [Ngobrolin Gemini AI bareng @EstherIrawati - Ngobrolin WEB](https://ngobrol.in/episodes/d28J0ZgkORY-ngobrolin-gemini-ai-bareng-estherirawati-ngobrolin-web): Episode Ngobrolin Web kali ini membahas Artificial Intelligence (AI) dalam konteks web development bersama tamu spesial Bu Esther Irawati, Google Developer Expert di Machine Learning dan Associate Professor di Institut Sains dan Teknologi Terpadu Surabaya. Diskusi dimulai dengan latar belakang Bu Esther yang awalnya adalah web developer sebelum masuk ke dunia machine learning, kemudian membahas evolusi teknologi AI dari Google seperti BART, Vertex AI, hingga Gemini yang menjadi fokus utama pembicaraan. Episode ini sangat relevan bagi web developer yang ingin memahami apakah perlu belajar AI, seberapa jauh pemahaman yang dibutuhkan, dan bagaimana memanfaatkan AI untuk meningkatkan kualitas aplikasi web yang dikembangkan. - [Ngobrolin Fungsional JS - Ngobrolin WEB](https://ngobrol.in/episodes/9PpM7f7TEbw-ngobrolin-fungsional-js-ngobrolin-web): Episode Ngobrolin WEB ini membahas konsep-konsep pemrograman fungsional dalam JavaScript secara mendalam. Diskusi dimulai dengan sejarah singkat JavaScript yang awalnya dirancang oleh Brendan Eich untuk mengimplementasikan Scheme (bahasa fungsional) di browser, namun kemudian dikompromikan dengan tren Java yang sedang naik daun pada masa itu, menjadikan JavaScript sebagai bahasa hibrida yang mendukung baik paradigma fungsional maupun OOP. Pembahasan lanjut ke konsep-konsep fundamental pemrograman fungsional seperti pure function yang harus menghasilkan output yang sama untuk input yang sama tanpa side effect, pentingnya return value, serta konsep immutability di mana data tidak boleh diubah setelah dibuat. Episode ini juga menyinggung perbedaan antara pendekatan deklaratif (fungsional) dan imperatif, serta memperkenalkan utility library seperti Ramda.js yang membantu implementasi fungsional programming di JavaScript dengan fitur seperti pipe operator dan tree-shaking untuk optimasi bundle size. Diskusi ditutup dengan pembicaraan tentang bahasa-bahasa fungsional murni seperti Haskell, Elixir, dan Reason, serta bagaimana konsep fungsional dapat diterapkan dalam pengembangan web modern tanpa harus mengadopsi sepenuhnya bahasa fungsional. - [Ngobrolin Interop 2024 - Ngobrolin WEB](https://ngobrol.in/episodes/7JewigkI4Do-ngobrolin-interop-2024-ngobrolin-web): Episode ini membahas Interop 2024, sebuah inisiatif kolaboratif antara empat browser mayor (Chrome, Edge, Firefox, dan Safari) untuk meningkatkan interoperabilitas web. Interop 2024 adalah kelanjutan dari Interop 2023 yang telah dibahas sebelumnya, dengan tujuan utama menyamakan perilaku fitur-fitur web platform di berbagai browser sehingga developer tidak perlu lagi melakukan workaround atau "akal-akalan montir" untuk mengatasi perbedaan implementasi antar browser. Proyek ini dimulai dari riset oleh WebDX Community Group yang mengumpulkan masukan dari developer melalui survei dan GitHub, kemudian diimplementasikan melalui Web Platform Test (WPT) dengan pendekatan test-driven development di mana semua browser menjalankan tes yang sama untuk memastikan konsistensi. Dalam episode ini, tim membahas berbagai fitur yang menjadi fokus Interop 2024 termasuk JPEG XL, View Transitions, Popover API, Textual Balance, Pointer and Mouse Events, CSS Nesting, dan berbagai fitur lainnya. Menariknya, tahun ini Edge memiliki kolom tersendiri dalam dashboard Interop, menandakan bahwa mereka sudah mulai forking dari base Chromium dan mengembangkan engine sendiri. Episode ini juga menyoroti pentingnya backward compatibility dan accessibility dalam pengembangan web platform, di mana ratusan ribu test case dibuat untuk mengakomodasi berbagai skenario termasuk bahasa dengan arah teks berbeda (kanan-ke-kiri, atas-ke-bawah) serta berbagai perangkat input dan assistive device. Diskusi juga mencakup progres implementasi masing-masing browser, dengan Safari sering kali memimpin dalam beberapa fitur sementara Firefox tertinggal namun memiliki skor eksperimental yang baik. - [Ngobrolin Open Source bareng @AriyaHidayat - Ngobrolin WEB](https://ngobrol.in/episodes/IPWEi0I3bf0-ngobrolin-open-source-bareng-ariyahidayat-ngobrolin-web): Episode ini membahas dunia open source bersama Mas Arya, pembuat PhantomJS dan Esprima yang sangat terkenal di komunitas JavaScript. Mas Arya berbagi pengalaman perjalanannya mulai dari latar belakang pendidikan di bidang hardware engineering di Jerman, terpapar ekosistem open source melalui komunitas KDE, hingga akhirnya menciptakan dua proyek open source yang sangat berpengaruh. Diskusi mencakup perbedaan antara proyek open source yang dikelola perorangan dengan yang didukung perusahaan besar, tantangan maintaining proyek populer, serta perubahan motivasi kontributor open source dari murni altruistik menjadi monetisasi dan popularitas. Episode juga menyentuh fenomena maintainer burnout seperti kasus color.js dan faker.js, serta strategi untuk membuat proyek open source yang sustainable. - [Ngobrolin CSS Wrapped Bagian 2 - Ngobrolin WEB](https://ngobrol.in/episodes/TsJQsHCdhUQ-ngobrolin-css-wrapped-bagian-2-ngobrolin-web): Episode ini merupakan kelanjutan pembahasan artikel CSS Wrap 2023 dari Chrome Developers yang membahas fitur-fitur CSS terbaru dan menarik. Tim Ngobrolin yang terdiri dari Mas Riza, Mas Eka, dan Mas Awan membahas kategori Responsive Design dengan mendalam, termasuk Container Query yang menjadi topik bersejarah karena mempersatukan ketiga host untuk pertama kalinya. Diskusi mencakup berbagai fitur CSS modern seperti Container Style Query untuk mendeteksi custom properties, selector :has() yang sangat powerful, update media query untuk refresh rate dan preferensi pengguna, serta kemampuan animasi CSS yang semakin canggih. Episode juga menyinggung integrasi fitur-fitur ini dengan framework populer seperti Tailwind CSS, pentingnya memahami CSS vanilla meskipun sudah menggunakan framework, dan tantangan dalam mengadopsi fitur baru di lingkungan production. - [Ngobrolin Koneksi Real-Time - Ngobrolin WEB](https://ngobrol.in/episodes/lb6jvnmDM6I-ngobrolin-koneksi-real-time-ngobrolin-web): Episode Ngobrolin ini membahas WebRTC (Web Real-Time Communication) secara mendalam bersama Yohan, pendiri InLive - startup lokal yang mengembangkan solusi live streaming berbasis WebRTC. Diskusi dimulai dengan latar belakang terciptanya InLive akibat mahalnya API live streaming dari luar negeri yang menggunakan pricing dolar, sehingga sulit diaplikasikan untuk pasar Indonesia dengan UMR lokal. Yohan berpengalaman dengan WebRTC sejak 2016 dan sebelumnya membuat demo Jam with Chrome yang menggunakan teknologi ini. WebRTC dijelaskan sebagai protokol standar yang memungkinkan komunikasi real-time berbasis media atau data antar browser dengan latensi sangat rendah (idealnya di bawah 200ms). Untuk komunikasi suara, delay di atas 200ms akan terasa mengganggu. Protokol ini didesain untuk peer-to-peer connection, namun untuk skenario dengan lebih dari dua peserta, dibutuhkan SFU (Selective Forwarding Unit) - server yang hanya melakukan forwarding video tanpa encoding, berbeda dengan MCU (Multipoint Control Unit) zaman dulu yang melakukan encoding ulang dan menambah latensi serta beban server. InLive memiliki dua produk: pertama adalah live streaming berbasis CDN (one-way seperti YouTube Live) yang menggabungkan WebRTC, FFmpeg, dan HLS/DASH format. Kedua adalah two-way communication product menggunakan SFU untuk use case seperti StreamYard, Google Meet, webinar, dan telemedicine. Teknologi WebRTC yang dibahas meliputi congestion controller untuk meng-handle bandwidth variability, SVC (Scalable Video Coding) dengan codec VP9 dari Google yang memungkinkan pengiriman video dengan kualitas berbeda tanpa encoding ulang, dan simulcast yang mengirim tiga jenis stream sekaligus (720p, 360p, 180p) untuk server memilih yang sesuai dengan bandwidth penerima. Perbedaan mendasar antara TCP dan UDP juga dijelaskan - TCP (yang digunakan WebSocket) memerlukan handshake dan acknowledgement untuk setiap paket sehingga menambah latensi, sementara UDP mengirim paket secara kontinyu tanpa menunggu konfirmasi, sehingga ideal untuk video streaming. TCP cocok untuk chat dan collaborative editing di mana urutan data sangat penting, sedangkan UDP lebih baik untuk video di mana beberapa paket yang hilang masih dapat ditoleransi. InLive mengalami perubahan strategi dari awalnya fokus B2B (menjual API) ke B2C karena masalah klasik "chicken and egg" - perusahaan B2B selalu bertanya tentang portfolio dan klien yang sudah ada. Terinspirasi dari pendekatan TikTok/ByteDance yang menawarkan API setelah memiliki consumer app yang sukses, InLive mengembangkan InLive Room (room.inlife.app) - aplikasi webinar yang menggabungkan fitur Locket, Zoom, dan sistem pembayaran untuk event berbayar. Fitur yang sedang dikembangkan termasuk registrasi peserta, sistem pembayaran tiket, analytics engagement dengan voice activity detection, dan broadcast capability ke YouTube. InLive ternyata open source, dengan core yang tersedia gratis. Ada dua opsi untuk pengguna: download open source version dan self-host (membutuhkan pengetahuan infrastruktur) atau menggunakan cloud API yang di-hosting oleh InLive. Salah satu keuntungan utama InLive adalah menggunakan on-premise server dengan dedicated line di Indonesia yang dibayar per capacity bandwidth, bukan per total bandwidth seperti Google Cloud atau Amazon yang sangat mahal untuk use case streaming. - [Ngobrolin CSS Wrapped - Ngobrolin WEB](https://ngobrol.in/episodes/SAGNwE--Htw-ngobrolin-css-wrapped-ngobrolin-web): Episode ini membahas review fitur-fitur CSS yang muncul sepanjang tahun 2023, berdasarkan artikel dari tim Google Chrome DevRel oleh Adam Argyle dan Una Kravets. Para host mengakui bahwa ilmu CSS mereka masih terbatas dan banyak ketinggalan, sehingga pembahasan ini menjadi kesempatan untuk belajar bersama. Episode ini mengulas berbagai fitur CSS baru yang menarik yang telah menjadi available atau mendapat dukungan browser yang lebih luas selama tahun 2023. Diskusi berlangsung dengan santai dan interaktif, di mana para host saling berbagi pengetahuan dan pengalaman tentang fitur-fitur CSS yang mereka ketahui sebelum membaca artikel tersebut. - [Ngobrolin Form - Ngobrolin WEB](https://ngobrol.in/episodes/Rem4xNV92fs-ngobrolin-form-ngobrolin-web): Episode ini membahas secara mendalam tentang formulir (forms) dalam pengembangan web, yang ternyata jauh lebih kompleks dari yang terlihat. Diskusi dimulai dengan sejarah elemen form yang sudah ada sejak HTML era 90-an dan menjadi salah satu penanda transisi dari halaman web statis ke aplikasi web interaktif. Host membahas berbagai aspek form mulai dari dasar-dasar HTML form, method GET vs POST, berbagai tipe input yang tersedia (text, email, date, color, file, dll), hingga validasi baik di client-side maupun server-side. Episode ini juga menyinggung tentang integrasi dengan password manager, autocomplete, accessibility, dan security. Pembahasan meliputi payment form sebagai study case yang kompleks karena melibatkan banyak best practice, serta berbagai library form helper seperti Formik dan React Hook Form beserta validasi library seperti Zod yang bisa digunakan baik di frontend maupun backend. - [Ngobrolin CORS - Ngobrolin WEB](https://ngobrol.in/episodes/Nk9Z7BwGUUQ-ngobrolin-cors-ngobrolin-web): Episode ini membahas tentang CORS (Cross-Origin Resource Sharing), salah satu topik yang sering membingungkan developer web. Diskusi dimulai dengan pengalaman pribadi tim menghadapi error CORS saat pertama kali belajar pengembangan web, dan kesalahpahaman umum bahwa solusinya cukup menambahkan header di sisi request (padahal harus dari server). Tim Ngobrolin WEB menjelaskan konsep origin, same-origin policy, dan bagaimana CORS bekerja sebagai mekanisme keamanan di browser. Episode ini juga membahas preflight request (OPTIONS), solusi menggunakan proxy/middleware untuk bypass CORS, dan teknik lama JSONP. Demonstrasi menarik ditampilkan dengan fitur Local Overrides di Chrome DevTools yang bisa mengubah response header dan content untuk testing. Episode ditutup dengan diskusi tentang berbagai tool untuk mengatasi CORS dan risiko membangun produk di atas platform orang lain. - [Yang Seru di 2024 - Ngobrolin WEB](https://ngobrol.in/episodes/hLDgpdLdb9c-yang-seru-di-2024-ngobrolin-web): Episode ini membahas tentang hal-hal seru yang dinantikan di dunia web development pada tahun 2024. Para host membahas prediksi dan wishlist mereka untuk teknologi dan tren yang akan muncul atau berkembang di tahun 2024. Diskusi dimulai dengan harapan bahwa musim winter (PHK massal) di industri tech tahun 2023 akan segera berakhir dan ekonomi akan membaik di tahun 2024, yang pada gilirannya akan memperbaiki situasi hiring. Episode ini mencakup berbagai topik mulai dari framework JavaScript, tools, hingga tren teknologi yang mungkin akan populer. Para host juga mengundang pendengar untuk berpartisipasi dalam diskusi melalui komentar di YouTube atau GitHub Discussion. - [Rahasia Dibalik Konfigurasi File: INI, XML, JSON, YAML, TOML - Mana yang Terbaik? - Ngobrolin WEB](https://ngobrol.in/episodes/OvSawGB6Kuo-rahasia-dibalik-konfigurasi-file-ini-xml-json-yaml-toml-mana-yang-terbaik-ngobrolin-web): Episode ini membahas tentang berbagai format file konfigurasi yang digunakan dalam pengembangan software, mulai dari format klasik seperti .ini hingga format modern seperti YAML, TOML, dan HCL. Host membahas sejarah dan evolusi format-format ini, dimulai dari file .ini yang populer di era Windows 90-an, kemudian XML yang banyak digunakan di Java dan .NET, hingga JSON yang menjadi standar de facto untuk komunikasi API. Diskusi juga mencakup berbagai varian JSON seperti BSON (Binary JSON) yang digunakan MongoDB, JSONB di PostgreSQL, dan format khusus lainnya seperti GeoJSON untuk data geografis. Episode ini juga menyinggung tentang YAML yang populer di DevOps dan infrastructure-as-code, TOML yang dibuat oleh Tom Preston-Werner (co-founder GitHub) sebagai alternatif YAML tanpa indentation, dan HCL (HashiCorp Configuration Language) yang digunakan di Terraform. - [Ngobrolin Manajemen Kode Sumber - Ngobrolin WEB](https://ngobrol.in/episodes/-ThmdHbkH-c-ngobrolin-manajemen-kode-sumber-ngobrolin-web): Episode ini membahas tentang manajemen source code dan version control, mulai dari sejarah hingga praktik modern. Diskusi dimulai dengan kebutuhan akan version control dalam pengembangan software, baik untuk proyek open source maupun kolaborasi tim. Tim Ngobrolin WEB menelusuri evolusi version control dari era punch card IBM di tahun 1960-an, hingga lahirnya SCCS, RCS, CVS, dan Subversion. Fokus utama pembahasan adalah Git - version control system yang dibuat oleh Linus Torvalds dengan pendekatan distributed yang revolusioner. Episode ini juga menyinggung berbagai platform hosting seperti GitHub, GitLab, dan Bitbucket, serta tantangan dalam belajar Git seperti konflik merge dan manajemen history. Di akhir episode, dibahas juga tentang Sourcegraph sebagai tool untuk mencari kode di berbagai repository private. - [Ngobrolin Web & #KULTUM](https://ngobrol.in/episodes/r5JKkGJEbko-ngobrolin-web-kultum): Episode ini rekaman sesi #KULTUM bersama komunitas — formatnya tanya jawab terbuka dengan penonton di Discord dan YouTube, dan pertanyaannya melompat dari yang teknis sampai yang soal arah karier. Yang pertama dari Robert, soal mengapa client-side rendering merepotkan SEO. Dulu Google crawler memang belum bisa menjalankan JavaScript sama sekali, sehingga meta tag yang disisipkan React Helmet tidak pernah terbaca; sekarang sudah bisa, tapi ada crawler time budget yang membatasi, sehingga tidak semua halaman sempat dirender ulang. Dari situ lahir berbagai akal-akalan di masa lalu, termasuk menyajikan versi khusus untuk crawler — praktik yang justru berisiko dihukum karena isinya berbeda dari yang dilihat pengunjung. SSR dan static site generation jelas lebih ringan bagi crawler karena kontennya sudah jadi HTML dan tak butuh eksekusi apa pun. Sarannya tetap membumi: kalaupun tetap memakai CSR, entah lewat Create React App atau front-end React di atas Laravel maupun Ruby on Rails, pastikan shell HTML-nya sudah lengkap dengan title, meta description, dan canonical, jangan semuanya di-inject belakangan. Pertanyaan Zaky lebih personal, dan dibacakan apa adanya: "is it worth it to learn PHP Laravel for the future?" — trennya menurun tapi permintaan di kota kecil masih banyak. Jawabannya tidak seragam, dan justru itu yang menarik. Ada yang mengingatkan memisahkan mana yang ikut tren dan mana yang benar-benar dibutuhkan, sambil mencatat PHP kini sudah punya strict typing. Ada yang menyarankan menanyakan dulu apakah pasar di sana memilih Laravel karena alasan tertentu atau sekadar itu yang mereka tahu. Ada yang menyarankan kembali ke dasar — cara kerja JavaScript engine dan PHP interpreter, algoritma, struktur data — supaya bisa jadi agnostik terhadap bahasa apa pun. Dan ada yang menutupnya dengan bukti hidup: 15 tahun di dunia WordPress, sementara PHP yang katanya mau mati tak kunjung mati. Sisanya membahas Ruby on Rails versus Phoenix, hosting di Google Cloud, perlu tidaknya belajar WordPress, Web3, dan HTMX. - [Ngobrolin Web Offline di DevFest Bogor](https://ngobrol.in/episodes/SYXywMW05GY-ngobrolin-web-offline-di-devfest-bogor): Episode ini direkam langsung dari panggung sebuah konferensi komunitas, dan sebagian besarnya sesi tanya jawab. Pertanyaan pertama soal ongkos performa View Transitions API — jawabannya jujur: ongkosnya tetap ada, tapi jauh lebih ringan daripada memakai pustaka animasi, karena sebagian besar ditangani browser. Sebagian properti animasi bahkan berjalan di luar main thread, meski yang menyangkut lebar dan tinggi masih membebaninya. Pertanyaan berikutnya membedakan bfcache dari cache biasa. Cache biasa menyimpan berkas sumbernya sehingga halaman tetap harus dirender ulang; back-forward cache menyimpan snapshot halaman yang sudah jadi lengkap dengan state terakhirnya. Analoginya bagus: seperti meninggalkan kamar lalu kembali dan menemukannya persis seperti saat ditinggalkan. Disebutkan pula dua penyebab paling umum ia tidak bekerja — memakai unload dan mengirim header no-store. Sisanya berisi saran untuk pertanyaan yang sangat membumi: membuat situs portofolio penuh gambar tapi tetap cepat. Jawabannya memakai srcset agar ukuran gambar menyesuaikan perangkat, membatasi ukuran maksimalnya, menyediakan gambar penuh hanya sebagai pilihan, memakai tag picture untuk art direction, mempertimbangkan format yang lebih modern daripada JPEG dan PNG, serta placeholder base64 yang di-blur — dengan catatan elemen LCP jangan pernah di-lazy load. Ketiga metrik Core Web Vitals dijelaskan mewakili tiga hal berbeda: LCP untuk kecepatan tampil, CLS untuk kestabilan, dan INP untuk responsivitas, dipantau lewat Google Search Console atau Lighthouse CI. Ditutup dengan tamu dari Kuala Lumpur soal kebangkitan Angular di versi 17. - [Ngobrolin Festival Developer - Ngobrolin WEB](https://ngobrol.in/episodes/KhIlxKS1vwc-ngobrolin-festival-developer-ngobrolin-web): Episode ini kedatangan dua orang yang baru bergabung sebagai Google Developer Expert, dan sebagian besar isinya cerita bagaimana mereka sampai ke sana. Keduanya sama-sama tidak berangkat dari niat mengejar gelar itu. Yang satu awalnya sekadar bertanya-tanya ke Mas Danang, lalu tertarik karena merasa kredibilitasnya akan menambah bobot saat berbagi — meski sempat ragu karena kata expert sendiri memicu rasa tidak layak. Yang satu lagi masuk lewat Women Developer Academy, program yang memang bermisi mencetak lebih banyak GDE perempuan di Asia Tenggara, dan justru tidak memburu status itu melainkan menumpuk pengalaman jadi pembicara dulu — debutnya di Depok. Prosesnya digambarkan apa adanya: bisa memakan waktu tiga sampai empat bulan karena berkasnya bolak-balik direvisi, dan begitu berkasnya final sisanya justru cepat. Disebut pula bahwa bidang web punya beberapa spesialisasi — web capabilities, performance, UI and tooling, security dan browser extension — dan seseorang cukup memilih satu; memilih dua dimungkinkan kalau bidangnya benar-benar berjauhan. Bagian berikutnya menjelaskan DevFest, singkatan dari developer festival: rangkaian konferensi komunitas yang berlangsung serentak di seluruh dunia pada kuartal terakhir tiap tahun, diinisiasi Google Developer Group di kotanya masing-masing. Di Indonesia rangkaiannya melintasi Bogor, Bandung, Semarang, Makassar, Bali, Surabaya, Jogja, dan Jakarta, dibuka oleh Bogor yang tiketnya sudah habis untuk seribu dua ratus orang. - [Ngobrolin RedwoodJS - Ngobrolin WEB](https://ngobrol.in/episodes/_5rmu9SJsJY-ngobrolin-redwoodjs-ngobrolin-web): Redwood dibahas sebagai contoh framework yang berani memilih ceruk yang sangat sempit. Kalau kebanyakan perkakas berusaha netral dan menyerahkan banyak keputusan pada kita, Redwood justru menyediakan segalanya sekaligus dalam satu paket: React untuk antarmuka, GraphQL untuk lapisan data, Prisma sebagai ORM, TypeScript, Jest untuk pengujian, sampai Storybook yang terkenal jelimet kalau disiapkan sendiri. Perbandingannya dengan Next.js dipakai untuk menunjukkan bedanya — Next.js pun disebut belum selengkap ini karena belum membawa ORM. Basis datanya SQLite secara bawaan untuk tutorial, dengan Postgres sebagai pilihan lain, dan ada pembuat kode otomatis untuk bagian-bagian yang berulang. Sasarannya jelas dan diakui terbatas: orang yang membangun produk sendiri atau tim yang isinya satu sampai tiga orang, dan hackathon 24 jam di mana waktu memasang Jest lalu menambal Babel dan TS config adalah waktu yang terbuang. Konsekuensinya juga jujur disebut — ia dirancang untuk proyek yang benar-benar dimulai dari nol, padahal di tempat kerja kita jarang benar-benar memulai dari nol. Pengalaman pahit dengan Gatsby dibawa sebagai pembanding: salah pilih di awal berujung menulis ulang. Halangan lain yang dibahas lebih membumi: seberapa banyak orang di sekitar kita yang mengenalnya. Di tempat kerja sering ada kesepakatan tak tertulis untuk tidak memakai perkakas yang tidak umum, karena pekerjaannya bisa berpindah tangan ke pihak lain. Karena itu jalannya biasanya panjang — mulai dari proyek pribadi, dikuasai dulu, baru diusulkan ke kantor ketika ada proyek baru yang cocok. Menariknya, di balik framework ini ada pula program lomba berhadiah dan pendanaan pribadi untuk produk bermisi lingkungan. Ditutup dengan pengamatan yang berguna: menonton rekaman presentasi produk-produk itu bukan untuk melihat produknya, melainkan belajar menyampaikan sesuatu dalam tiga sampai lima menit. - [Ngobrolin Code Review - Ngobrolin WEB](https://ngobrol.in/episodes/LaoReWcsyao-ngobrolin-code-review-ngobrolin-web): Sebelum masuk topik, mereka membahas RedwoodJS — meta framework yang menyediakan segalanya sekaligus, dari Prisma untuk basis data sampai Storybook yang biasanya paling merepotkan disiapkan sendiri — beserta alasan kenapa perkakas semacam itu sulit masuk tempat kerja: ia dirancang untuk proyek yang dimulai dari nol, sementara di kantor kita jarang benar-benar memulai dari nol. Topik utamanya code review, dibahas jujur soal biayanya: menerapkannya berarti menambah tenaga dan memperlambat pekerjaan. Imbalannya juga jelas — kita memang tidak bisa melihat kesalahan sendiri, terutama yang menyangkut logika. Panduan yang dipakai adalah engineering practices milik Google: tujuannya memastikan kesehatan kode secara keseluruhan, dan kedua belah pihak sama-sama berperan. Bagian paling berharga adalah cara memberi masukan tanpa melukai. Prinsipnya menyerang kodenya, bukan orangnya, dan sebisa mungkin bukan perintah. Contohnya konkret: menemukan hasil querySelector yang langsung dipakai tanpa diperiksa, ia tidak menulis "tolong perbaiki" berulang kali, melainkan bertanya bagaimana kalau elemennya tidak ditemukan lalu menautkan halaman MDN-nya. Ada pula pengakuan soal budaya sungkan meninjau kode orang yang lebih senior, padahal senior pun menghargai temuan yang memperbaiki kodenya. Ditegaskan soal urutan: tinjauan manusia adalah langkah terakhir, setelah ESLint, Prettier, Husky, dan unit test di CI lolos, plus tangkapan layar dan langkah pengujian sudah dilampirkan di pull request — dan masukan yang bersifat selera ditandai jelas sebagai nitpick, boleh tidak diikuti. - [Ngoding di browser - Ngobrolin WEB](https://ngobrol.in/episodes/3W1Vk95usrg-ngoding-di-browser-ngobrolin-web): Episode ini kedatangan seorang developer advocate dari AWS, dan pertanyaan pembukanya membumi: masih menjalankan lingkungan pengembangan di localhost, atau sudah pindah ke Cloud9, Codespaces dan sejenisnya? Obrolannya lalu melebar ke penyunting kode masing-masing — Sublime, Vim, Notepad++, dan Atom yang sudah dihentikan — dengan pengamatan bahwa yang populer di satu lingkungan belum tentu dipakai di lingkungan lain: pengembang Android bertahan di Android Studio, pengembang Java di Eclipse atau NetBeans, pengembang desktop di Visual Studio. Beberapa fakta menarik diungkap. VSCode ternyata dibangun dengan teknologi web, dan berkas yang kita unduh sebenarnya bukan sumber terbuka — kodenya ada di GitHub tapi harus dikompilasi sendiri, persis pola Chrome dan Chromium. Mesin penyuntingnya pun tersedia terpisah dan dipakai banyak perkakas berbasis web lain. Bagian utamanya soal menulis kode dari jauh. Dulu menyunting berkas di server berarti masuk lewat SSH dan memakai Vim atau Nano; sekarang VSCode bisa dijalankan sebagai server dan diakses lewat browser. Dibedakan pula dua hal yang sering tertukar: VSCode yang benar-benar berjalan di browser, versus VSCode lokal yang menyambung ke WSL, ke kontainer Docker, atau ke mesin lain lewat terowongan. Ditutup dengan gagasan berakhirnya kebiasaan bekerja di localhost, karena proyek makin berat dan perusahaan seperti Google memang sudah lama bekerja begitu — basis kode Chrome konon butuh berhari-hari untuk dikompilasi di laptop biasa. - [Jangan gunakan NodeJS sebelum nonton video ini!](https://ngobrol.in/episodes/IG1x81EIb54-jangan-gunakan-nodejs-sebelum-nonton-video-ini): Episode ini membahas JavaScript di sisi server, dan sengaja tidak dibatasi pada Node.js saja — sekarang ada Deno, Bun, Cloudflare Workers, dan berbagai layanan function yang di baliknya memakai AWS. Bagian paling seru adalah drama penomoran versi Node.js. Ia lama tertahan di 0.x, dan itu bukan soal teknis melainkan kepercayaan: banyak perusahaan menolak memakainya semata-mata karena angka nol di depan, padahal sejak 0.8 sudah dianggap stabil. Ketika Joyent, tempat Ryan Dahl bekerja, ikut mengambil peran mengelolanya, sebagian komunitas khawatir arahnya disetir satu pihak lalu memisahkan diri sebagai io.js dan langsung menerbitkan versi 1.0. Keduanya akhirnya rujuk di bawah sebuah foundation dan bersepakat melompat ke 4.0 sekaligus. Sejak itu penomorannya teratur: versi genap jadi LTS yang disarankan, versi ganjil untuk mencoba yang terbaru. Dua runtime pendatang dibahas sebagai pemicu geliat baru. Deno dibuat Ryan Dahl sendiri setelah merasa ada keputusan awal Node.js yang keliru, terutama soal keamanan paket npm; ia tetap memakai V8 tapi ditulis ulang dengan Rust setelah sempat memakai Go. Bun memakai mesin JavaScript dari WebKit alih-alih V8 dan menjual kecepatan. Keduanya membuat Node.js terlihat lamban — meski disinggung juga bahwa berinovasi terlalu cepat pun sama-sama dikeluhkan orang. Sisanya obrolan membumi soal cara menerbitkan aplikasi: dari Heroku yang tinggal push, sampai mengatur droplet sendiri dengan Nginx dan PM2 agar prosesnya tetap hidup di latar belakang. - [Ngobrolin CSS Layout - Ngobrolin WEB](https://ngobrol.in/episodes/oyQSFpOjcEo-ngobrolin-css-layout-ngobrolin-web): Episode ini berangkat dari pengakuan yang jujur: banyak developer web merasa takut atau jengkel pada CSS, dan salah satu dari mereka mengakuinya untuk dirinya sendiri. Alasannya menarik — ia merasa tidak pernah benar-benar memegang dasarnya. Kalau menulis JavaScript ia paham kenapa sesuatu bekerja begitu, sementara di CSS ia cenderung mengikuti saja gaya yang sudah dipasang orang lain di awal proyek. Dari situ muncul diagnosis yang lebih adil: masalahnya tidak murni pada bahasanya, melainkan pada betapa luasnya ruang bagi orang untuk menyimpang. Satu tim bisa sudah sepakat memakai Bootstrap 5, tetap saja ada yang menulis gayanya sendiri; variabel yang sudah disiapkan diabaikan, satuan yang sudah distandarkan tetap ditulis manual, dan penyimpangan diselesaikan dengan akal-akalan seperti margin negatif. Sisanya menelusuri sejarah tata letak sampai ke CSS Grid dan Flexbox. Mula-mula tidak ada pengaturan sama sekali, karena web dirancang untuk dokumen yang saling terkait, bukan aplikasi; orang mengakalinya dengan image transparan sebagai spacer, deretan NBSP, lalu tabel dan display table yang jelas disalahgunakan karena tidak ada pilihan lain, sebelum float jadi tumpuan. Tempat menulis gaya pun berpindah berulang kali — dari atribut di dalam markup, ke satu blok gaya, ke berkas tersendiri, dan kini kembali ke markup lewat Tailwind. Ada catatan menarik bahwa React Native sampai sekarang masih bertumpu pada Flex untuk layout-nya, dan prinsip penutupnya: kalau bisa di CSS, kerjakan di CSS. - [Ngobrolin Ngobrolin WEB - Edisi Spesial 1 Tahun](https://ngobrol.in/episodes/TgNDGcvEEfg-ngobrolin-ngobrolin-web-edisi-spesial-1-tahun): Edisi khusus satu tahun ini berisi cerita di balik acaranya sendiri. Idenya lahir spontan saat mereka berjalan menuju makan malam di Bali, ketika GDE web dan GDE Android dikumpulkan dalam satu acara — pertemuan tatap muka pertama setelah masa pandemi, ketika orang-orang yang selama ini hanya muncul sebagai kepala di layar akhirnya terlihat utuh. Grup obrolannya dibuat saat itu juga, satu tangan memegang ponsel dan satu tangan memegang piring, padahal mereka belum saling menyimpan nomor. Alasan yang mendorongnya jujur dan spesifik. Pembaruan seputar web datang banyak tapi tersebar ke mana-mana — dari CSS, gambar, font, sampai browser dan sisi server. Sebelum pandemi selalu ada Chrome Dev Summit sebagai titik kumpul pembaruan, dan setelahnya sesi-sesi daring resmi berlangsung di jam yang tidak bersahabat bagi zona waktu mereka, sementara rekamannya tidak menggantikan sisi sosialnya. Ditambah lagi, hubungan informal yang dulu memungkinkan bertanya kabar pembaruan secara santai kini sudah tidak ada. Komunitas mereka sendiri disebut satu per satu: GDG, GDSC, Women Techmaker, sampai kanal Discord Google Developers Indonesia, dengan penonton yang datang dari Surabaya hingga Belanda. Yang mereka anggap paling berharga adalah perubahan cara belajarnya. Menonton video atau membaca artikel sendirian cenderung jadi konsumsi pasif dan tergesa-gesa; sementara membahasnya untuk orang lain memaksa mereka mengolah ulang dan menyampaikannya dengan perspektif sendiri, karena harus bisa dipertanggungjawabkan. Diakui pula bahwa sekitar separuh topiknya adalah hal yang tidak mereka kuasai sebelumnya dan baru dipahami saat membahasnya. Kunci bertahan setahun, kata mereka, adalah harapan yang sengaja dibuat rendah — namanya saja mengobrol — dan punya teman yang sama-sama berkomitmen. - [Ngobrolin Package Manager - Ngobrolin WEB ep52](https://ngobrol.in/episodes/yhlD16hyW90-ngobrolin-package-manager-ngobrolin-web-ep52): Berangkat dari keheranan sehari-hari — memasang satu paket lewat npm install tapi folder node_modules langsung membengkak — episode ini menelusuri asal-usul package manager, yang ternyata jauh lebih tua daripada ekosistem JavaScript. Akarnya di dunia Linux, tempat sebuah program tidak membawa semua kebutuhannya sendiri melainkan bergantung pada pustaka lain, yang bergantung pada pustaka lain lagi. Dari sana lahir repositori terpusat berisi daftar paket beserta versi, arsitektur, dan dependensinya — nenek moyang registry yang kita pakai hari ini, dengan dpkg di kubu Debian dan rpm di kubu Red Hat. Pendekatan tiap sistem operasi dibandingkan: Windows membundel semuanya jadi satu installer besar, Linux mengunduh dependensinya terpisah sehingga butuh koneksi, dan macOS cukup memindahkan satu bundel ke folder Applications. Homebrew kemudian membawa gaya Linux ke sana. Bagian paling berkesan adalah insiden left-pad: pustaka mungil berfungsi sepele tapi jadi dependensi ribuan paket lain, dan ketika pemiliknya menghapusnya semuanya berantakan. Dari sana pembicaraan bergeser ke celah keamanan yang paling rawan, yang ternyata bukan teknis melainkan manusia — paket palsu yang namanya sengaja dibuat mirip agar tertukar saat salah ketik. Ditutup dengan pengamatan bahwa munculnya Yarn dan pnpm justru menyehatkan: Yarn membawa cache lokal agar tidak perlu mengunduh ulang dan workspaces, pnpm membawa hard link agar berkas dibagi antar proyek dan tidak boros ruang — dan npm lalu ikut mengadopsinya. - [Ngobrolin Linter - Ngobrolin WEB ep51](https://ngobrol.in/episodes/2dqsz5Y4Mlk-ngobrolin-linter-ngobrolin-web-ep51): Sebelum masuk topik, mereka berbagi soal kenapa acara ini terasa berbeda dari podcast yang pernah mereka buat: tidak ada beban mencari narasumber tiap minggu, dan justru jadi alasan sah untuk mengulik hal yang di pekerjaan tidak mungkin disentuh. Kuncinya, kata mereka, harus ada teman — dan temannya pun harus sama-sama berkomitmen. Topik malam itu static code analysis, atau yang lazim disebut linter. Definisinya sederhana: memeriksa kode tanpa menjalankannya. Nilainya justru di situ — pada bahasa bertipe longgar seperti JavaScript, salah ketik baru ketahuan ketika program berjalan, dan itu berarti penggunanya yang melihatnya lebih dulu. ESLint menangkapnya sedini mungkin, entah lewat garis merah di editor atau lewat pemeriksaan di CI sebelum kode digabungkan. Dibuka dengan lelucon bahwa pesan commit paling sering di dunia adalah "fix linter error". Penempatannya dalam gambaran besar juga dijelaskan: mengutip Kent C. Dodds, static analysis adalah lapisan paling dasar penjagaan kualitas, di bawah unit test dan jauh di bawah end-to-end. Yang menarik, code review oleh manusia pun sebenarnya sejenis pemeriksaan statis — kode dibaca tanpa dijalankan — maka masuk akal kalau ESLint dan Prettier diselesaikan lebih dulu sebelum merepotkan mata manusia. Ada pula pengamatan bahwa bahasa yang lebih muda seperti Go menyertakan formatter sejak awal, sementara JavaScript harus menunggu komunitasnya membuatnya sendiri — karena bahasanya memang tidak dirancang untuk aplikasi sebesar sekarang. Aturan yang terasa merepotkan biasanya warisan setup awal proyek, saat orang masih idealis sebelum dikejar tenggat dan akhirnya menyalin konfigurasi Airbnb. - [Ngobrolin Framework - Ngobrolin WEB](https://ngobrol.in/episodes/ORga5NqFQ10-ngobrolin-framework-ngobrolin-web): Episode ini kedatangan seorang engineer yang kini bekerja di GovTech di kementerian pendidikan, dan salah satu pesan sampingannya melegakan: karier di ranah web tidak selalu berujung di startup, karena lembaga seperti itu pun memakai Tailwind, Headless UI, dan perkakas sekelas startup. Cerita utamanya soal melewati banyak generasi framework — dari ExtJS yang sudah berbasis komponen dan MVC jauh sebelum orang membicarakannya, ke masa halaman dirakit dengan template Java atau PHP lalu ditempeli jQuery, lalu AngularJS, lalu Vue.js, dan akhirnya Next.js. Dari situ muncul pengamatan bahwa dulu satu framework menyediakan segalanya, sementara sekarang berlapis: React yang menolak disebut framework di bawah, dan Next.js, Remix, atau Astro di atasnya, masing-masing memilih sendiri masalah mana yang diselesaikan. Bagian paling berharga adalah cerita memilih framework untuk tim besar di Blibli. Ia sendiri condong ke Angular 2 karena dekorator dan dependency injection-nya terasa akrab bagi tim yang berlatar Java dan Spring — dan ternyata salah. Setelah keduanya dicoba langsung, yang lebih cepat dikuasai justru Vue, karena direktifnya masih mirip AngularJS yang sudah mereka pakai. Dari sana lahir pelajaran yang ia tekankan: dalam bekerja bersama, singkirkan pertimbangan yang bersifat selera; ajukan yang bisa diukur seperti ukuran bundle, waktu muat, dan biaya perawatan — karena kurva belajar yang dimaksud adalah kurva belajar tim, bukan kurva belajar kita sendiri. - [Ngobrolin AI - Ngobrolin WEB](https://ngobrol.in/episodes/M5lUhWTF9As-ngobrolin-ai-ngobrolin-web): Episode ini mengambil sudut berbeda dari kebanyakan pembicaraan soal AI: bukan apakah ia akan menggantikan kita, melainkan bagian mana dari pekerjaan sehari-hari yang benar-benar terbantu. Jawabannya jujur dan tidak berlebihan — sebagian besar cerita justru soal batasnya. Percobaan menyuruh ChatGPT menulis fitur utuh dari tiket Jira disebut gagal telak: hasilnya jauh dari yang dibutuhkan, dan merapikannya lebih repot daripada menulis sendiri. Salah satu sebabnya, ia tidak mengenal gaya penulisan kode di tempat kerja kita. Menyusun ulang prompt-nya pun menguras tenaga tersendiri — capeknya berpindah dari mengetik kode ke memikirkan kalimat. Copilot dan Code Whisperer dari AWS dipakai untuk pelengkapan kode, dengan catatan bahwa untuk kode sederhana IntelliSense yang sudah ada sering lebih cepat. Yang benar-benar terasa berguna justru hal-hal sempit dan berulang. Regex disebut paling manjur, baik menyusunnya dari contoh maupun membedah yang sudah rumit. Lalu membuat data contoh untuk pengujian. Lalu mengingatkan sintaks yang kita pahami tapi malas mengetiknya — konfigurasi Nginx, perintah curl lengkap dengan header-nya. Lalu menyiapkan kerangka berkas unit test lewat Copilot Chat sehingga tinggal diisi. Ada pula pemakaian di luar kode: merapikan bahasa Inggris pada deskripsi pull request GitHub dan balasan email, serta menerjemahkan pesan ke klien Jepang lewat DeepL secara lebih halus dan tidak langsung sesuai budayanya. - [Ngobrolin HTTP - Ngobrolin WEB](https://ngobrol.in/episodes/MZ4dViTkIZ0-ngobrolin-http-ngobrolin-web): Topik ini muncul dari kejadian nyata: sebuah situs yang baru dipasang selalu dialihkan ke HTTPS, padahal tidak ada pengaturan Nginx apa pun yang menyuruhnya. Penyebabnya ternyata domain berakhiran .dev yang memang memaksakan HTTPS di tingkat browser. Dari situ obrolannya melebar ke HTTP itu sendiri, sekaligus keheranan bahwa hal sedasar ini jarang benar-benar diajarkan di kampus. Sejarahnya ditelusuri dari HTTP 0.9 yang luar biasa sederhana: hanya ada GET, tidak ada header, tidak ada status code, tidak ada penanganan galat. Server menjawab dengan HTML, lalu koneksinya langsung ditutup. Saat itu belum ada browser sama sekali — permintaan dikirim lewat Telnet, perkakas serbaguna yang bisa berbicara dengan protokol apa pun lewat port yang sesuai, dari SMTP di port 25 sampai IMAP. Protokolnya sendiri lahir di CERN dan berjalan di atas TCP, sementara HTTP/3 belakangan pindah ke UDP. HTTP 1.0 dan 1.1 menambahkan hampir semua yang kita kenal: nomor versi, status code, tipe konten yang diminta dan diberikan, kompresi gzip, caching, unggahan berkas, dan keep-alive agar koneksinya tidak langsung ditutup. Yang menarik justru pengamatan di sela-selanya — membangun protokol seperti ini bukan soal menulis kode melainkan menyusun RFC dan mengambil keputusan lebih dulu, karena semua pihak harus sepakat sebelum ada yang mengimplementasikan. Ada pula saran keamanan kecil tapi praktis: jangan bocorkan identitas web server di header respons. Ditutup dengan kenyataan bahwa banyak situs besar sudah berjalan di HTTP/2 bahkan HTTP/3 di balik Cloudflare tanpa kita sadari. - [Ngobrolin WASM - Ngobrolin WEB](https://ngobrol.in/episodes/9ECU9Wz0wzU-ngobrolin-wasm-ngobrolin-web): WebAssembly dibahas dengan mundur dulu ke kata assembly itu sendiri — istilah yang bisa terasa asing bagi siapa pun yang belajar otodidak dari HTML, CSS, dan JavaScript, karena ketiganya sudah berada jauh di atas lapisan itu. Assembly adalah bahasa yang paling dekat dengan mesin sebelum kode biner: menjumlahkan dua angka saja berarti mengalokasikan memori, menyimpan nilainya, mengambilnya dari alamat tertentu, lalu menyimpan hasilnya lagi. Istilah tingkat rendah pun diluruskan — maksudnya bukan buruk atau sederhana, melainkan makin sedikit lapisan penerjemah antara kode dan perangkat kerasnya. Dari situ WebAssembly dijelaskan sebagai format biner yang berjalan di browser dengan kecepatan mendekati aplikasi asli. Bahasa sumbernya dimulai dari C++ dan Rust, lalu menyusul Java, Kotlin, Dart dan Golang; rantai kompilasinya lewat Emscripten dan LLVM, dan Google serta Adobe sempat berkolaborasi membawa proxying API ke sana. Contoh-contohnya yang membuat gagasan ini konkret: Figma, yang dulu mustahil ada di web dan kini justru jadi pengguna WebAssembly; Photoshop yang menyusul ke browser; FFmpeg yang dijalankan langsung di sisi klien sehingga video tidak perlu diunggah ke server lebih dulu; TensorFlow Lite yang modelnya dikompilasi agar bisa berjalan real-time; sampai PHP Wasm, yang membuat PHP pun bisa hidup di dalam browser. Pembatasnya tetap jelas — untuk pekerjaan berat semacam itulah WebAssembly masuk akal, bukan untuk hal yang sudah cukup ditangani JavaScript atau service worker. - [Ngobrolin Performa CLS feat Jessica Cecilia - Ngobrolin WEB](https://ngobrol.in/episodes/uKWkLVtKb7g-ngobrolin-performa-cls-feat-jessica-cecilia-ngobrolin-web): Episode ini kedatangan Jessica Cecilia, front-end engineer di Tokopedia, dan sebagian awalnya berisi cerita di balik layar: bahwa fitur sekecil membagikan tautan produk pun punya timnya sendiri, bahwa stack hariannya React dan TypeScript, dan bahwa legacy JavaScript beserta class component-nya masih menyisakan gaya penulisan yang sulit dimusnahkan. Motivasinya mulai berbagi juga menarik — sebagai alumni Bangkit dan Women Developer Academy ia merasakan sendiri jurang antara apa yang diajarkan di kuliah dan apa yang dibutuhkan di dunia kerja, lalu ingin menjadi orang yang menjembatani keduanya. Topik utamanya CLS atau Cumulative Layout Shift, salah satu dari tiga Core Web Vitals dan yang paling menjengkelkan: halaman yang isinya melompat justru saat kita hendak menekan sesuatu. Diawali penyegaran soal mengapa Google merumuskan metrik semacam ini — karena tanpa angka, penilaian cepat atau lambat cuma jadi perasaan — dan bagaimana setiap metrik lama selalu berakhir diakali sampai diganti: FCP dulu dicurangi dengan loading spinner di shell HTML lalu digantikan LCP, dan FID sebentar lagi digantikan INP. Bagian praktisnya membagi sumber masalahnya jadi dua. Untuk elemen yang punya kotak — gambar, video, iklan — kuncinya aspect-ratio CSS, sehingga tempatnya sudah dipesan sebelum isinya datang. Yang lebih rumit adalah teks yang panjangnya tidak bisa ditebak karena datang dari API: solusinya line-clamp atau text-overflow ellipsis, yang kini sudah jadi standar CSS dan tersedia sebagai kelas di Tailwind, sehingga tinggi tempatnya tetap sama entah teksnya pendek atau panjang. Font juga jadi biang CLS, dan diakali lewat pencocokan fallback di Fontaine, properti size-adjust, ascent-override, dan descent-override, atau font matcher di meowni.ca. Iklan pihak ketiga disebut kasus tersulit karena isinya tidak diketahui. Ditutup dengan Layout Instability API untuk mengukur pergeseran secara terprogram, dan pengakuan jujur bahwa perbaikan performa di Tokopedia dipisahkan dari pengembangan fitur lalu dipantau lewat Google Search Console dan performance budget Lighthouse CI. - [Ngobrolin URL - Ngobrolin WEB ep45](https://ngobrol.in/episodes/EMynH33TrBI-ngobrolin-url-ngobrolin-web-ep45): Episode ini bagian dari niat baru mereka: menyelipkan topik yang benar-benar mendasar setidaknya sebulan sekali, alih-alih terus mengejar yang sedang ramai. Alasannya sederhana — framework datang dan pergi, sementara yang mendasar bertahan; bentuk URL yang kita pakai hari ini sudah ada sejak awal 90-an, dirumuskan Tim Berners-Lee. URL dibedah bagian per bagian: skema di depan seperti HTTP, HTTPS, atau FTP; informasi pengguna yang jarang dipakai kecuali untuk basic auth; host yang sendirinya terdiri dari subdomain, nama domain, dan top level domain; lalu port yang biasanya tersembunyi karena 80 dan 443 sudah jadi nilai bawaan, jalur, parameter kueri, dan fragment di paling belakang. Fragment ternyata punya kemampuan bawaan yang sering dilupakan: menautkan ke penanda yang cocok dengan id sebuah elemen membuat browser menggulir ke sana sendiri, tanpa pustaka apa pun. Alasan kenapa ini perlu dipahami juga dijelaskan dengan membumi: tanpa tahu nama bagiannya, kita tidak bisa bertanya dengan jelas saat minta bantuan. Bagian penutupnya meluruskan istilah yang sering tertukar — URI adalah payungnya, URL hanya salah satu jenisnya yaitu yang menunjuk berdasarkan lokasi, sementara URN menunjuk berdasarkan nama dan lazim dijumpai pada berkas konfigurasi SAML untuk single sign-on. Disebut juga bahwa panjang maksimum URL berbeda jauh antar Chrome, Firefox, dan Safari — peringatan yang relevan saat orang tergoda menyelipkan JWT ke dalamnya. - [Ngobrolin Privacy Sandbox - Ngobrolin WEB ep44](https://ngobrol.in/episodes/IA3ECrPgbZU-ngobrolin-privacy-sandbox-ngobrolin-web-ep44): Privacy Sandbox dibahas bukan sebagai wacana melainkan sesuatu yang harus disiapkan dari sekarang, karena dampaknya bisa membuat aplikasi yang selama ini baik-baik saja tiba-tiba tidak bisa dipakai — gagal login, gagal memproses pembelian, dan tidak ada yang error secara jelas. Akarnya adalah third party cookie yang terlalu berkuasa. Ketika sebuah layanan disematkan di banyak situs — peta, tombol berbagi, apa pun — layanan itu bisa mengenali bahwa pengunjung situs A dan situs B adalah orang yang sama, lalu menyusun rekam jejak lengkap perjalanannya. Analogi yang dipakai: CCTV di setiap ujung jalan; siapa pun yang memegang panelnya bisa mengikuti seseorang dari rumah, ke kantor, sampai tempat nongkrongnya. Firefox dan Safari sudah lebih dulu memblokirnya, dan Chrome menyusul awal tahun depan. Tapi tidak semua penggunaannya jahat, dan di situlah Privacy Sandbox masuk: ia bukan satu API melainkan sekumpulan usulan, masing-masing menangani satu kebutuhan. Topics API disebut sebagai yang paling terlihat, meski masih proposal dan origin trial di Chromium saja, dan CHIPS alias partitioned cookie tetap memungkinkan berbagi cookie sepanjang developer-nya mengizinkan. Dampak terbesarnya bukan iklan yang membuntuti, melainkan single sign on — pola yang membuat kita otomatis dikenali saat berpindah antar situs bersaudara, dan yang menopang autentikasi pihak ketiga seperti Firebase, Supabase atau Auth0. Sarannya praktis: nyalakan pengaturan yang mensimulasikan pemblokiran itu sekarang juga, lalu periksa apa yang rusak sebelum tenggatnya tiba. - [Ngobrolin Web bersama Thomas Steiner ep43](https://ngobrol.in/episodes/aSAW5q7xEaY-ngobrolin-web-bersama-thomas-steiner-ep43): Episode ini kedatangan Thomas Steiner, Developer Relations Engineer di tim Chrome yang sudah 15 tahun di Google, dan obrolannya berbahasa Inggris. Dibuka dengan kenangan masa Chrome pertama kali diperkenalkan lewat komik cetak, lengkap dengan pengakuan jujur bahwa reaksi pribadinya waktu itu justru skeptis — kenapa Google tidak fokus saja memperbaiki browser yang sudah ada. Sekarang, katanya, perang browser sudah berakhir; Chrome, Safari, dan yang lain satu tim web yang mengerjakan platform yang sama, kadang berbeda pendapat, dan itu sehat. Pekerjaannya sehari-hari ternyata sebagian besar membaca: surel, repositori yang diikuti di GitHub, dan blog orang-orang lewat pembaca RSS. Perannya digambarkan sebagai enabler — penghubung dua kelompok yang jarang bersinggungan, yaitu engineer pembuat browser dan developer yang membangun web di atasnya. Detail yang menarik: engineer Chrome biasanya justru bukan ahli JavaScript, sehingga sebagian pekerjaannya adalah membaca contoh kode mereka dan menyadari bahwa gayanya masih berbau C++, lalu mengusulkan bentuk yang lebih wajar bagi developer web. Soal Project Fugu — nama internal yang terlanjur populer untuk Project Web Capabilities — ia menekankan bahwa titik berangkatnya selalu dari orang yang punya ide aplikasi lalu menemui tembok karena API-nya belum ada, mulai dari akses berkas, clipboard, sampai integrasi dengan sistem operasi. Tapi tidak semua permintaan layak dijadikan bagian platform: contoh yang dipakai adalah Touch Bar pada MacBook Pro yang sempat ramai diminta, padahal hanya ada di satu produk dari satu vendor — dan sekarang produknya sendiri sudah tidak ada. Dibahas pula WebAssembly sebagai jalan aplikasi berat pindah ke web, dengan Photoshop sebagai contoh yang mengisolasi algoritma intinya dari basis kode native. Ditutup dengan bahasan izin: aplikasi web selalu berjalan dalam sandbox sejak awal dan meminta izin per kemampuan — VSCode.dev jadi contoh kasus yang ingin izin aksesnya diingat — sementara sistem operasi justru bergerak ke arah yang sama setelah dulu memberi akses terlalu longgar. - [Ngobrolin Public Speaking - Ngobrolin WEB ep42](https://ngobrol.in/episodes/neF7qCLqUaY-ngobrolin-public-speaking-ngobrolin-web-ep42): Topik malam itu keluar dari kebiasaan: bukan teknologi, melainkan berbicara di depan umum. Ketiganya berbagi cerita awal masing-masing, dan tidak satu pun berangkat dari rasa percaya diri. Ada yang bertahun-tahun percaya dirinya tidak bisa berbicara jelas dan menyalahkan sifatnya sendiri. Ada yang dulu berkeringat dingin hanya untuk mengangkat tangan bertanya dari bangku penonton. Ada yang saat skripsi memilih tugas menekan tombol lanjut agar tidak perlu bicara. Yang mendorong semuanya bukan bakat melainkan keadaan: mereka mulai mengurus komunitas — WordPress yang sedang mati suri, dan meetup Meteor yang organizer-nya sudah vakum — dan mencari pembicara ternyata sulit, maka penyelenggaranya sendiri yang naik. Salah satu cerita paling berkesan adalah meetup yang tiga puluh orang mendaftar tapi hanya satu yang datang. Acaranya tetap dijalankan berdua di depan laptop, dan satu orang itu belakangan resign lalu jadi developer lepas. Dari situlah dampaknya terasa nyata. Sisanya berisi saran praktis: kenali audiensnya lebih dulu dengan bertanya ke penyelenggara, dan sadari bahwa kata kuncinya adalah publik — fokusnya pada mereka, bukan pada diri kita. Pilih topik yang benar-benar sudah diterapkan sendiri, karena yang membuat presentasi bernilai justru hal yang tidak ada di dokumentasi. Menyanggupi sebuah topik juga bisa dipakai untuk memaksa diri belajar, seperti WebAssembly yang lama ingin dipelajari tapi tak ada kesempatannya. Rancang alurnya seperti cerita dengan kail di lima menit pertama, dan berlatih bukan untuk menghafal melainkan mengukur waktu. - [Ngobrolin Fluttercon - Ngobrolin WEB ep41](https://ngobrol.in/episodes/hnJLh0JoQ84-ngobrolin-fluttercon-ngobrolin-web-ep41): Episode ini menghadirkan seorang developer asal Jakarta yang kini bekerja di ING, sebuah bank di Belanda, dan obrolannya berjalan santai — dari pola kerja hibrida yang bahkan diatur per sektor supaya kereta tidak terlalu penuh, sampai cerita sepeda yang dipreteli bagian demi bagian meski sudah dikunci di dua titik. Bagian teknisnya soal memakai Flutter sejak versinya masih beta pada 2018, untuk sebuah aplikasi loyalitas berskala besar yang selesai dalam tiga sampai empat bulan dan langsung terbit di Android maupun iOS. Datang dari pengembangan Android asli, yang paling ia sukai adalah menyusutnya jumlah berkas: dulu satu fitur berarti berkas XML untuk tampilan, berkas Java terpisah untuk logika, dan berkas XML lain lagi untuk animasi; di Flutter semuanya berada di satu tempat dalam Dart. Kelemahannya juga disebut jujur. Sebagai teknologi yang masih mencari bentuk, banyak hal belum diputuskan — terutama pengelolaan state dan arsitektur, di mana tim Google sengaja tidak menetapkan satu cara yang direkomendasikan, berbeda dengan Android yang lewat Kotlin sudah memberi jalur jelas. Bagi pendatang baru itu membingungkan, dan diakui setara dengan orang yang belajar web tapi langsung masuk ke React tanpa panduan pola. Bagian penutupnya soal FlutterCon di Berlin yang merupakan bagian dari DroidCon: pusat pengembangan ekosistemnya ternyata banyak di Eropa, sehingga bisa berbincang langsung dengan orang yang pustakanya selama ini hanya kita pakai. Ruang sesi Flutter dan Android bahkan bersebelahan, bukan bersaing. - [Ngobrolin I/O Extended - Ngobrolin WEB ep40](https://ngobrol.in/episodes/M2zdLxrm4F4-ngobrolin-io-extended-ngobrolin-web-ep40): Setelah beberapa episode membahas pengumuman Google I/O dari jauh, kali ini ceritanya datang dari orang yang benar-benar hadir — di I/O Connect Bangalore, sekaligus persiapan I/O Extended Jakarta bersama GDG. Formatnya menyerupai acara pusatnya: keynote utama, lalu keynote per bidang, lalu sesi paralel yang hampir tanpa jeda, ditambah deretan stan demo di tengah aula. Sensasi yang disebut paling berkesan sederhana saja — biasanya orang-orang ini hanya terlihat di video dan artikel, sekarang bisa ditemui langsung. Dua demo yang paling membekas keduanya soal web yang menyentuh perangkat keras. Yang pertama sebuah mesin kasir Point of Sales lengkap dengan barcode reader, printer struk, monitor kedua, dan laci uang — semuanya dikendalikan dari sebuah Progressive Web App memakai Web Serial, Web HID, Web USB, dan Web Bluetooth. Bukan sekadar demo pameran: perangkat itu sudah dipakai di usaha sungguhan, dan dibuat seorang GDE Web asal Belanda. Yang kedua LEGO Education Kit, di mana anak-anak menyusun logika secara visual di antarmuka web berbasis Scratch — dengan opsi naik ke Python kalau sudah terbiasa — lalu mengirim hasil kompilasinya ke microcontroller di dalam set LEGO-nya lewat Bluetooth, sehingga jadi robot, mobil, atau line follower. Yang menarik justru keputusan bisnisnya: aplikasi native untuk macOS, Windows, dan Android tetap ada tapi siklus perawatannya dikurangi, dan pengembangannya dialihkan ke versi web — karena instalasi native butuh unduhan ratusan megabyte sampai lebih dari satu gigabyte, sementara versi webnya jauh lebih ringan karena modulnya dialirkan sesuai kebutuhan. Sisanya membahas dominasi AI di acara itu, dari MediaPipe dan TensorFlow.js untuk object detection dan image segmentation, sampai Vertex AI dengan Model Garden-nya yang memungkinkan melatih model dari dokumentasi sendiri — misalnya dokumentasi React atau WordPress — sehingga pencarian bisa dijawab secara percakapan. - [Ngobrolin Bundler - Ngobrolin WEB ep39](https://ngobrol.in/episodes/bwpPxqgFyWQ-ngobrolin-bundler-ngobrolin-web-ep39): Module bundler dibahas lewat sejarahnya, bukan daftar perkakasnya — dan pesan pembukanya bahwa hampir semua orang yang membangun web sudah memakainya tanpa sadar, karena Laravel pun menyertakan Webpack Mix siap pakai. Tugas intinya cuma dua: menyelesaikan dependensi antar berkas, dan mengemas semuanya jadi satu. Ceritanya berangkat dari masa ketika JavaScript belum modular sama sekali. Semua berkas dipanggil satu per satu lewat tag script dan semuanya mendarat di global namespace, sehingga urutan pemanggilan menentukan segalanya dan dua pustaka dengan nama sama bisa saling merusak. Masalah ini bukan teori: konflik semacam itu dulu jadi sumber bug paling sering di situs WordPress berbasis plugin, ketika beberapa plugin masing-masing membawa jQuery-nya sendiri — sampai jQuery harus menyediakan noConflict untuk melepaskan tanda dolar. Rangkaian solusinya ditelusuri satu per satu, dan tiap tahap menyisakan sisanya: IIFE agar isinya tidak bocor ke luar, lalu menempelkan semuanya pada satu objek induk sehingga yang mengotori global tinggal satu nama — bukan nol. Lalu Node.js membawa module.exports dan require yang akhirnya menyelesaikan dependensi sungguhan, disusul AMD dan UMD yang memuat modul secara asinkron tapi memunculkan masalah baru: berkas dimuat berantai dan waktu tunggunya menumpuk. Dari situlah Browserify lahir sebagai bundler pertama, dijalankan lewat task runner seperti Grunt atau Gulp, dan diteruskan Webpack serta Rollup — menghitung seluruh rantai dependensi lebih dulu, lalu menyerahkan satu berkas jadi ke browser. - [Ngobrolin DevTools - Ngobrolin WEB ep38](https://ngobrol.in/episodes/zzhCUMQNjN8-ngobrolin-devtools-ngobrolin-web-ep38): Chrome DevTools dibahas sebagai salah satu alasan sesungguhnya orang bertahan pada sebuah browser — bukan mesin renderingnya, melainkan seberapa nyaman alat bantunya dipakai sehari-hari. Ceritanya dimulai dari Firebug, extension Firefox yang dulu jadi hal pertama yang dipasang orang setiap habis memasang ulang Windows, dan yang membuat menyunting CSS langsung di halaman jadi mungkin. DevTools yang kita pakai sekarang justru terinspirasi darinya; sebagian orang Firebug kemudian direkrut Google untuk membangun Chrome DevTools, dan sisanya membangun DevTools bawaan Firefox. Obrolan ini juga menyinggung keanehan yang jarang disadari: JavaScript tidak punya situs dokumentasi resminya sendiri. Alasannya karena ia implementasi dari spesifikasi ECMAScript dan tiap browser menafsirkannya masing-masing — sampai akhirnya MDN, yang dibuat Mozilla, justru diterima semua orang sebagai rujukan bersama. Sisanya tur fitur yang sering luput. Alat bantu visual untuk grid dan flexbox menampilkan garis panduannya langsung di halaman. Ada tangkapan layar seluruh halaman dari atas sampai bawah tanpa extension apa pun, bahkan per elemen lewat klik kanan. Ada pemblokiran request jaringan tertentu, berguna saat ingin memeriksa situs klien tanpa gangguan skrip iklan. Ada palet perintah lewat Command+Shift+P yang mempercepat semuanya. Disebut pula fitur 3D view Firefox yang dulu ada lalu dihapus karena berat, sementara Chrome punya panel Layers yang mirip meski kurang fancy, serta YSlow dari era Yahoo sebagai leluhur Lighthouse. - [Ngobrolin SVG - Ngobrolin WEB](https://ngobrol.in/episodes/GIlzAKp7rI8-ngobrolin-svg-ngobrolin-web): SVG dibahas sebagai format gambar yang berbeda jenisnya dari JPEG atau PNG: ia bukan kumpulan titik warna melainkan rangkaian bentuk yang dihitung ulang, sehingga tetap tajam berapa pun ukurannya. Karena isinya sebenarnya teks berformat XML, ia bisa ditulis dan disunting seperti dokumen biasa, diberi atribut, ditata dengan CSS, bahkan dianimasikan. Bentuk dasarnya hanya segelintir — lingkaran, elips, garis, path, poligon, dan persegi — tapi dari situ hampir semua ilustrasi bisa dibangun, dan editor seperti Figma mengekspornya langsung. Wilayah pemakaiannya jelas: ikon, logo, dan ilustrasi bergaya gambar, bukan foto. Keuntungannya berlipat untuk performa: ukurannya kecil karena bisa dimampatkan seperti teks, dan ia bisa di-inline langsung ke dalam halaman sehingga muncul begitu markup-nya dibaca, tanpa permintaan tambahan ke server. Untuk logo di bagian paling atas halaman, itu bedanya terasa. Di React pun ia bisa ditempel sebagai elemen JSX biasa, asal atributnya disesuaikan. Cerita yang paling mengena adalah Font Awesome, pustaka ikon yang dulunya berupa web font. Pendekatan itu ditinggalkan karena memuat ribuan ikon demi memakai dua di antaranya jelas boros, dan karena font memang dibuat untuk teks — ketika lambat dimuat, yang muncul justru huruf-huruf aneh alih-alih ikonnya. Ditutup dengan dua contoh ekstrem: dynamic favicon yang berubah warna mengikuti dark mode atau light mode cukup dengan aturan CSS di dalam berkasnya, dan sebuah charting library yang seluruh grafiknya dirakit dari SVG tanpa JavaScript sama sekali. - [Ngobrolin Otomasi bersama Jecelyn - Ngobrolin WEB ep36](https://ngobrol.in/episodes/2Kcb9uIQW8M-ngobrolin-otomasi-bersama-jecelyn-ngobrolin-web-ep36): Episode ini kedatangan Jecelyn dari Malaysia, yang bekerja di tim Chrome DevTools untuk urusan debugging dan otomasi pengujian. Sebagian besar obrolan berbahasa Inggris, dibuka dengan kisah perjalanannya: masuk ke dunia IT lewat beasiswa yang menyediakan uang saku, sempat ditolak mentah-mentah di wawancara pertama karena dianggap tidak layak melamar, lalu perlahan aktif berbagi dan mengurus komunitas — termasuk mendirikan komunitas pengembang perempuan karena di kantornya nyaris tidak ada rekan perempuan. Dari kebiasaan berbagi itulah pintu-pintu berikutnya terbuka. Topik utamanya evolusi otomasi browser, dan dua protokol yang berbeda kekuatannya. CDP, Chrome DevTools Protocol, berjalan di atas WebSocket sehingga cepat, dua arah, dan bisa mengendalikan hal-hal tingkat rendah seperti mencegat request jaringan, memalsukan lokasi, atau membaca pesan konsol — tapi ia bukan standar, sehingga bisa berubah sewaktu-waktu dan hanya jalan di Chrome dan Chromium. Di sisi lain WebDriver Classic adalah standar yang jalan di mana-mana, tapi searah dan tidak menjangkau hal-hal tingkat rendah itu. Jalan keluarnya adalah WebDriver BiDi, yang menggabungkan keduanya: standar lintas browser sekaligus dua arah. Yang membuatnya meyakinkan adalah siapa yang menggarapnya bersama — Selenium dan WebDriver IO ikut dalam kolaborasinya, karena merekalah yang paling tahu bagaimana API semacam ini seharusnya bekerja. Dijelaskan juga pembagian perannya: Chrome DevTools ada di ranah debugging, sementara Puppeteer ada di ranah testing, dan pekerjaannya justru berdiri di persimpangan keduanya. - [Ngobrolin Core Web Vitals - Ngobrolin WEB ep35](https://ngobrol.in/episodes/y7orEQReOns-ngobrolin-core-web-vitals-ngobrolin-web-ep35): Core Web Vitals dibahas mulai dari alasan kemunculannya. Sebelum ada patokan bersama, orang mengukur kecepatan dengan YSlow, PageSpeed, dan GTmetrix yang berlomba memberi skor huruf, dan semuanya cenderung berbicara soal angka teknis. Pemicunya adalah kenyataan bahwa halaman web makin berat sejak era framework JavaScript modern — bundle-nya saja bisa menembus 4 MB sebelum menghitung gambar — sementara kecepatan internet dan kemampuan ponsel Android awal 3,5G tidak melaju secepat itu. Google akhirnya merumuskan Web Vitals lewat Lighthouse dan Performance API supaya ada standar bersama. Yang membedakannya adalah sudut pandang. Alih-alih mengukur seberapa cepat server menjawab atau seberapa cepat berkas terunduh, Core Web Vitals berangkat dari apa yang benar-benar dirasakan pengunjung. Contoh yang dipakai: kotak pencarian yang langsung menampilkan huruf yang kita ketik terasa jauh lebih responsif daripada yang menahannya dulu, meski hasil pencariannya sama-sama datang dalam waktu yang sama. Karena itu pula TTFB (Time to First Byte) tetap diukur tapi tidak masuk ke dalam tiga metrik inti — ia penting dan memengaruhi LCP maupun yang lain, tapi tidak langsung terlihat oleh pengunjung. Tiga metriknya dibedah satu per satu: LCP dan kenapa nilainya bisa memburuk tanpa disadari karena elemen terbesarnya bisa berpindah — kalau gambar utama dibiarkan lazy load, mula-mula judulnya yang terhitung lalu berganti ke gambar begitu selesai dimuat. Lalu CLS, yang disebut paling sulit diperbaiki karena skornya rata-rata seluruh halaman dan sumber terparahnya adalah iklan dan embed TikTok atau Twitter yang tingginya tak bisa ditebak; obatnya aspect-ratio CSS, font fallback yang dimensinya dicocokkan, dan untuk embed hanya bisa diakali lewat field data seperti yang ditulis BuzzFeed. Terakhir FID yang akan digantikan INP mulai tahun depan. Ditutup dengan penelusuran langsung lewat Performance Insights di Chrome DevTools dan PageSpeed Insights, plus catatan bahwa data lapangan di Search Console berasal dari CrUX dan baru terlihat setelah 28 hari. - [Ngobrolin Google IO Lebih Dalam - Ngobrolin WEB ep34](https://ngobrol.in/episodes/OwdCWP1FWNE-ngobrolin-google-io-lebih-dalam-ngobrolin-web-ep34): Melanjutkan rangkuman umum minggu sebelumnya, episode ini memilih beberapa topik dari Google I/O untuk dibedah lebih dalam. Yang pertama soal masuk tanpa kata sandi. Titik berangkatnya keluhan yang semua orang kenali: setiap layanan meminta kata sandi, dan konsekuensinya kita memakai kata sandi yang sama di mana-mana. Web authentication API menawarkan jalan lain — memakai sidik jari, wajah, atau kunci fisik langsung dari browser, dengan kunci rahasianya tetap tinggal di perangkat dan hanya kunci publiknya yang dikirim ke server. Dua hal membuatnya menarik. Pertama, karena kredensialnya terikat pada domain tempat ia didaftarkan, situs tiruan yang dibuat semirip mungkin tidak akan mengenali akun kita — jadi ia sekaligus penangkal penipuan lewat situs palsu. Kedua, karena tidak ada kata sandi yang disimpan di server, tidak ada yang bisa ditebak paksa maupun bocor. Alurnya sendiri hanya dua fungsi: mendaftar dan mengambil. Karena bentuknya standar, perangkat keras jenis baru bisa langsung terpakai tanpa menulis kode berbeda. Topik kedua soal WebAssembly, yang sempat terasa senyap padahal adopsinya justru besar di produk-produk berat: perangkat desain, penyunting gambar, sampai permainan yang dulu mustahil hidup di browser. Nilainya bagi mereka adalah tidak perlu menulis ulang basis kode raksasa demi bisa jalan di web. Alasan perkembangannya sempat tersendat pun terjawab: versi awalnya belum mendukung bahasa yang punya pengelola memori otomatis, dan itulah yang dibuka di versi berikutnya. Dampaknya beruntun — basis data, pengolah video, sampai mesin permainan kini bisa berjalan langsung di sisi pengunjung tanpa perjalanan ke server. - [Ngobrolin Google IO - Ngobrolin WEB ep33](https://ngobrol.in/episodes/mUrwxwrehqE-ngobrolin-google-io-ngobrolin-web-ep33): Episode ini merangkum apa yang menarik dari Google I/O tahun itu, khususnya sisi web. Pembukanya sebuah pengamatan iseng tapi telak: tahun-tahun sebelumnya semua orang bicara web3, sekarang tidak ada yang menyebutnya lagi dan semua beralih ke AI. Bedanya, yang diumumkan di ajang seperti ini bukan sekadar hype melainkan produk yang benar-benar ada. Topik yang paling banyak dibahas adalah otentikasi. Passkey — yang API-nya sendiri bernama berbeda dan lebih sulit disebut — memungkinkan aplikasi web memakai sidik jari, pengenalan wajah, atau kunci fisik langsung lewat web API, tanpa pustaka tambahan. Posisinya bukan pengganti kata sandi melainkan pengganti faktor kedua, jadi tetap ada jalan cadangan. Dibahas pula bahwa alur masuk yang terlalu berlapis justru membuat orang enggan, dan tren sekarang bergeser ke tautan sekali pakai yang dikirim lewat surel — yang pada dasarnya sekerabat dengan kode sekali pakai. Bagian privasinya menjelaskan kenapa persoalannya tidak selesai hanya dengan menghapus cookie pihak ketiga. Ada teknik yang membaca detail-detail perangkat dan browser lalu merangkumnya jadi satu sidik unik — dan sidik itu tetap sama meski kita berpindah ke mode penyamaran, karena browsernya toh sama. Itulah yang coba dijawab oleh inisiatif privasi baru, mengikuti pengetatan aturan data di banyak negara. Disinggung juga alat analitik alternatif yang mengedepankan privasi, dengan catatan jujur bahwa skalanya belum tentu meyakinkan bagi perusahaan. - [Ngobrolin React+Komunitas - Ngobrolin WEB ep32](https://ngobrol.in/episodes/_5-m3tfD5tU-ngobrolin-reactkomunitas-ngobrolin-web-ep32): Episode ini kedatangan beberapa penggerak Komunitas React Indonesia, dan dibuka dengan perdebatan klasik: React itu pustaka atau framework? Kesepakatannya pustaka — yang disediakannya adalah cara merender antarmuka lewat virtual DOM, sementara ke mana hasilnya digambar bisa bermacam-macam: React DOM untuk web, React Native untuk ponsel, custom renderer untuk UI game seperti Battlefield 1 milik EA, bahkan Ink untuk aplikasi terminal. Framework justru berdiri di atasnya — Next.js di atas React. Bagian yang paling menarik adalah cerita di balik pilihan desainnya. React memakai class di masa awal karena saat itu gaya berorientasi objek sedang jadi arus utama à la Backbone, dan tujuannya membuat pendatang merasa familiar sebelum akhirnya diarahkan ke gaya fungsional. Ada pula sisi strategisnya: React muncul tepat ketika pengguna Angular 1 melihat Angular 2 yang berubah total — dari MVVM menjadi full class, dependency injection, dan taruhan pertama pada TypeScript — sementara satu-satunya saran migrasi yang ditawarkan adalah menulis ulang seluruh aplikasi. Banyak yang akhirnya melirik ke tempat lain. Perkembangan terbarunya juga dibahas: Next.js sempat gagal pivot ke static, lalu bermain di serverless, dan akhirnya mengambil banyak ide progressive enhancement yang dipelopori Remix, yang dituangkan jadi App Router di Next.js 13.4 berkat React Server Components. Setengah episodenya justru tentang komunitas, dan ceritanya jujur. Komunitas React Indonesia tidak punya pendiri tunggal maupun ketua — ia tumbuh dari beberapa gerakan akar rumput yang berjalan sendiri-sendiri di Telegram, Discord, dan kanal masing-masing. Upaya menyatukan semuanya ke satu tempat pernah dicoba dan gagal, karena komunitas bukan perusahaan yang bisa diperintah pindah; orang tetap hidup di tempat yang sudah nyaman bagi mereka. Yang aktif sekarang menyebut diri sekadar penerus, bukan pemilik, dan terbuka bagi siapa pun yang mau ikut menghidupkan. Ditutup dengan pengakuan bahwa meetup pun tidak harus formal — berkumpul dan mengobrol spontan sudah cukup. - [Ngobrolin Accessibility - Ngobrolin WEB ep31](https://ngobrol.in/episodes/ypxWNOnW10Y-ngobrolin-accessibility-ngobrolin-web-ep31): Aksesibilitas dibahas berangkat dari satu kekeliruan yang sering kita lakukan: menganggap pengguna kita sama seperti kita sendiri. Sama seperti soal performa, di mana kita mengasumsikan semua orang punya koneksi lancar, di sini kita mengasumsikan semua orang melihat, mendengar, dan bergerak seperti kita. Padahal cakupannya luas — dari buta warna sebagian, penglihatan yang menurun karena usia, gangguan motorik, sampai kemampuan memahami. Ivan bercerita jujur bahwa ia mulai mempelajarinya karena tuntutan hukum: sebuah bank internasional mensyaratkan situsnya lolos WCAG level AAA, sejajar dengan GDPR dan urusan keamanan lain. Di banyak negara aturan itu memang kelanjutan dari aturan fisik yang sudah lama ada — bangunan publik wajib menyediakan akses kursi roda, trotoar wajib punya jalur khusus Tuna Netra. Karena infrastruktur pindah ke digital, kewajibannya ikut pindah. Yang menarik adalah efek yang meluas. Landaian di ujung trotoar mula-mula dibuat untuk pengguna kursi roda, tapi ternyata membantu jauh lebih banyak orang, termasuk yang mendorong stroller. Begitu pula di web: pengaturan ukuran teks dan kontras yang baik menolong bukan hanya mereka yang penglihatannya terbatas. Navigasi lewat tombol tab pun sama — dipakai mereka yang tak bisa memakai tetikus sekaligus pengguna mahir yang enggan memindahkan tangan. WCAG dari W3C menyediakan patokan teknis berjenjang dari A sampai AAA, dan Lighthouse menangkap yang paling dasar seperti kontras warna — tapi lolos pemeriksaan bukan jaminan: alt text yang asal tulis tetap lolos padahal tidak menolong pengguna screen reader. - [Ngobrolin Templating Language - Ngobrolin WEB ep30](https://ngobrol.in/episodes/mJ6t8TJc6cQ-ngobrolin-templating-language-ngobrolin-web-ep30): Apa pun yang kita pakai untuk membangun web — React, Vue, Svelte, atau Laravel — kita tidak pernah benar-benar lepas dari templating language. Semuanya punya sintaksnya sendiri untuk menyisipkan nilai ke dalam markup, dari JSX sampai direktif Vue, dan meski bentuknya berbeda tujuannya sama persis. Justru perbedaan sintaks itulah yang merepotkan ketika kita berpindah antar proyek. Akarnya sederhana: HTML tidak mengenal logika. Tidak ada perulangan, tidak ada percabangan. Padahal isi halaman datang dari basis data dan bentuknya berubah-ubah. Tanpa templating, satu-satunya jalan adalah merangkai potongan string HTML di dalam controller — yang berujung pada controller gemuk dan lapisan tampilan bercampur logika bisnis. Templating mengembalikan pemisahan itu sekaligus membuat markup bisa dipecah jadi bagian yang dipakai berulang seperti header dan footer. Berbagai gayanya dibandingkan, dari Smarty di era PHP lama, Blade di Laravel, EJS di ekosistem Node, sampai Jade yang menghapus tag penutup sama sekali dan hanya mengandalkan indentasi — gaya yang memecah orang jadi sangat suka atau sangat benci, dan yang sampai sekarang masih bisa dipakai di CodePen bersama Slim dan Haml. Perbedaannya sering soal selera dan bahkan kenyamanan mengetik: kurung kurawal ganda ala Handlebars lebih cepat diketik daripada kombinasi bersimbol. Satu hal yang bukan soal selera adalah keamanan: sintaks yang menampilkan isi apa adanya tanpa escaping berbahaya kalau isinya datang dari pengunjung — aturannya sanitize early, escape late. - [Ngobrolin CMS - Ngobrolin WEB ep29](https://ngobrol.in/episodes/zc2NxphfHeE-ngobrolin-cms-ngobrolin-web-ep29): Content management system dibahas sebagai kelanjutan alami dari episode-episode sebelumnya soal cara halaman dirender. Ceritanya sama: mula-mula berkas HTML ditulis manual lalu diunggah lewat FTP, kemudian muncul PHP dan basis data, dan dari sanalah lahir perangkat yang membuat isi situs bisa diubah tanpa menyentuh kode. Definisi yang mereka pakai sederhana — apa pun bentuk penyimpanannya, yang penting ada antarmuka tempat orang menyunting isi. Pertanyaan yang menarik: kalau membuat CRUD itu mudah bagi developer, kenapa repot memakai CMS jadi seperti WordPress atau Drupal? Jawabannya soal siapa yang memakainya — yang memperbarui isi sering kali bukan kita, melainkan tim pemasaran, klien, atau redaksi yang tidak menulis kode. Alasan kedua kesiapan menghadapi perubahan: ketika kebutuhan bertambah setelah beberapa bulan, sistem buatan sendiri berarti mengubah basis data dan menulis ulang, sementara CMS memang dirancang untuk diperluas lewat plugin. Situs berita disebut mempopulerkannya karena butuh penerbitan rutin dan masif oleh banyak orang, lengkap dengan peran penulis dan editor. Arah perkembangannya kini terbelah dua. Di satu sisi site builder tanpa kode seperti Wix, Squarespace, dan Webflow yang menggabungkan penyusunan tampilan dengan pengisian data. Di sisi lain headless CMS seperti Strapi, Contentful, Sanity, Directus, dan Ghost yang sengaja memisahkan pengelolaan isi dari lapisan tampilan: ia hanya menyediakan tempat mengelola konten beserta API-nya, sementara tampilannya bebas kita bangun — dan tidak harus web, bisa aplikasi ponsel bahkan papan iklan digital. Disinggung pula backend as a service seperti Firebase, Supabase, dan PocketBase. - [Ngobrolin Format Warna - Ngobrolin WEB ep28](https://ngobrol.in/episodes/uYqnB9rhIaQ-ngobrolin-format-warna-ngobrolin-web-ep28): Topik malam itu terdengar sepele tapi tak terhindarkan: menentukan warna di CSS. Sesedikit apa pun kita berurusan dengan sisi visual, membangun web berarti menuliskan warna — dan daftar formatnya sekarang panjang sekali: RGB dan RGBA, heksadesimal, HSL, HWB, Lab, LCH, sampai OKLCH. Dimulai dari yang paling sederhana, yaitu nama warna. Awalnya hanya ada enam belas, warisan sistem tampilan lama dengan nilai-nilai yang rapi dan simetris, lalu bertambah sekitar seratus lima puluh nama yang jauh lebih semaunya. Salah satunya punya kisah yang tidak lucu sama sekali: Rebecca Purple diabadikan untuk mengenang anak seorang pengembang yang meninggal saat masih kecil dan menyukai warna itu. Sisanya membandingkan format penulisan. RGB dan heksadesimal paling umum dan paling aman dukungannya, tapi keduanya tidak intuitif ketika kita hanya ingin sebuah warna sedikit lebih terang atau lebih gelap. Di situlah HSL dan HWB terasa lebih dekat dengan cara manusia berpikir — cukup tambahkan whiteness atau blackness, tanpa perlu memasang pustaka tambahan seperti dulu; skala warna Tailwind dipakai sebagai contoh yang sudah dihafal orang. Dibahas juga bahwa RGB punya sRGB sebagai versi standar, sehingga penyerahan desain sebaiknya menyepakati yang mana, dan Display P3 di spesifikasi CSS Color yang baru menjangkau warna yang sebelumnya tidak terjangkau. CMYK ditutup sebagai ranah percetakan, bukan pengganti yang setara di web. - [Ngobrolin Web Jadul - Ngobrolin WEB ep27](https://ngobrol.in/episodes/2nJE0rvIUps-ngobrolin-web-jadul-ngobrolin-web-ep27): Episode ini menyusuri teknologi web yang sudah wafat, sekarat, atau sekadar tak lagi ramai — sebuah obituari yang dibawakan sambil bernostalgia. Bintang utamanya Flash, yang aslinya perkakas animasi berbasis timeline tapi banyak dipakai membangun situs karena antarmukanya mudah dan perilakunya konsisten di semua browser, saat manipulasi DOM masih menyakitkan dan browser belum seragam. Harganya: tidak ada aksesibilitas sama sekali, dan pengunjung harus menunggu seluruh isinya terunduh dulu — kebalikan dari filosofi web sekarang. Ada benang merah yang menghubungkan hampir semua yang dibahas. Flash, ActiveX, Java Applet, Silverlight, dan Adobe Air sama-sama dibangun sendiri oleh masing-masing perusahaan, dan sama-sama berakhir. Justru dari kegagalan berpencar itulah standar web bersama menjadi jalan keluarnya. Menariknya, bahasa skrip di dalam Flash punya sintaks yang sangat mirip JavaScript dan ikut memengaruhi arah standarnya — jadi sesuatu darinya tetap hidup. Sisanya berisi kenangan lain: perkakas penyunting drag and drop yang lalu ditinggalkan orang demi mengetik kode sendiri, meski sekarang perkakas serupa muncul lagi dalam wujud baru; pustaka pembungkus yang dulu satu-satunya cara mengakses kamera dan GPS dari kode web, kini tergantikan karena web sendiri sudah mampu; serta protokol pertukaran data berbasis XML yang menghilang begitu format yang lebih sederhana terasa lebih masuk akal. Ditutup dengan elemen HTML yang membuat teks berjalan — masih hidup sampai sekarang, bukti bahwa kompatibilitas mundur benar-benar dijaga. - [Ngobrolin Teknologi Edge - Ngobrolin WEB ep25](https://ngobrol.in/episodes/J8qef9MI1rY-ngobrolin-teknologi-edge-ngobrolin-web-ep25): Teknologi edge dibahas bersama Donny, head of engineering di Zero One Group, dan penjelasan paling gampangnya: mirip CDN, hanya saja yang ditaruh di banyak titik itu bukan sekadar berkas melainkan logika program. Permintaan pengunjung diarahkan ke lokasi terdekat lewat geolokasi IP — pengunjung dari Asia Tenggara dilayani dari Singapura kalau Jakarta belum ada — dan penyebaran ke puluhan titik terjadi sekaligus, sesuatu yang mustahil dilakukan sendiri baik dari sisi biaya maupun tenaga. Untuk web, artinya halaman bisa dirakit di server yang dekat dengan pengunjungnya, lengkap dengan bahasa, mata uang, dan pilihan produk sesuai wilayahnya; Vercel, Netlify dan Cloudflare Workers sudah menyediakan edge function untuk itu. Pertanyaan yang langsung muncul adalah nasib basis datanya. Dua jalan dibahas — Fly.io menyediakan klaster Postgres yang benar-benar tersebar di beberapa region, atau basis datanya ditahan tetap terpusat lalu cache-nya yang disebar. Yang kedua jauh lebih murah, meski membawa persoalan klasik: membatalkan cache adalah salah satu masalah paling sulit di komputasi. Disinggung juga Turso, yang membawa SQLite sendiri ke edge. Alasan edge bisa hidup begitu cepat adalah lapisan abstraksinya yang jauh lebih ringan. Ceritanya ditarik dari mesin fisik, ke virtualisasi, ke Docker dan Kubernetes, sampai ke runtime JavaScript yang berdiri di atas semuanya — makin ke atas makin cepat menyala. Mesin tiap penyedia berbeda-beda, Deno misalnya berdiri di atas V8, tapi karena semuanya mengacu pada standar web API yang sama, kode yang kita tulis tetap serupa. Ditutup dengan kenangan mengangkut server ke pusat data karena rumah kebanjiran, sebagai kontras dengan hari ini. - [Ngobrolin TypeScript - Ngobrolin WEB ep24](https://ngobrol.in/episodes/cjqz5C0eWgc-ngobrolin-typescript-ngobrolin-web-ep24): TypeScript dibahas sebagai superset JavaScript — bahasanya tetap JavaScript, hanya ditambah anotasi tipe, interface, generic, dan sejenisnya, lalu dikompilasi kembali menjadi JavaScript karena itulah satu-satunya yang dimengerti browser. Analoginya seperti komentar dan sorotan pada dokumen yang sedang disunting: semuanya membantu selama menulis, tapi hilang begitu dokumen dicetak. Satu hal penting ditegaskan supaya tidak salah harap: pemeriksaan tipenya berlangsung statis, saat menulis dan mengompilasi. Begitu program berjalan, TypeScript tidak lagi memeriksa apa pun — jadi memakainya bukan jaminan bebas galat, terutama ketika data dari luar ternyata tidak sesuai bentuk yang diasumsikan. Nilainya justru pada mendelegasikan pekerjaan repetitif yang manusia memang buruk mengerjakannya: memeriksa typo, memastikan salinan akurat, mengingat bentuk data. Sebagai efek samping, menulis tipe memaksa kita mendokumentasikan apa yang kita buat. Dibahas juga alternatif yang lebih ringan berupa komentar dokumentasi di JavaScript biasa, lengkap dengan pengalaman nyata memakainya untuk mewarisi codebase asing tanpa dokumentasi dan tanpa kontak siapa pun — cukup untuk tipe sederhana, tapi menyiksa begitu berhadapan dengan objek bersarang. Sisanya membedah union type yang membatasi nilai pada beberapa kemungkinan saja, type predicate, dan strict mode yang memaksa kita memeriksa dulu apakah datanya benar-benar ada sebelum dipakai. - [Ngobrolin Proyek Fugu - Ngobrolin WEB ep23](https://ngobrol.in/episodes/YMFz1Ky2E0k-ngobrolin-proyek-fugu-ngobrolin-web-ep23): Proyek Fugu adalah nama panggilan yang lebih catchy untuk web capabilities project — upaya menutup jarak antara apa yang bisa dilakukan aplikasi native dan apa yang bisa dilakukan web. Dulu web hanya bisa menampilkan dokumen, sementara perangkat punya kamera, sensor, Bluetooth, NFC, USB, dan akses berkas. Peran itu sempat diisi oleh pustaka pembungkus dari pihak ketiga yang menyediakan jembatannya sendiri; sekarang kemampuan itu digarap langsung di lapisan browsernya. Nama ikan buntal Jepang itu dipilih bukan tanpa alasan: ikannya beracun dan bisa mematikan kalau disiapkan sembarangan, tapi konon lezat kalau disiapkan dengan hati-hati. Begitu pula API-nya. Yang membuatnya perlu ekstra hati-hati adalah betapa rendahnya ambang masuk web: sebuah aplikasi cukup dibuka lewat tautan, tanpa langkah sadar mengunduh dan memasang seperti aplikasi biasa. Maka akses berkas, papan klip, dan perangkat keras harus dijaga ketat agar tidak jadi jalan bagi penyalahgunaan. Setiap API melewati tahapan yang jelas dan bisa dilacak terbuka: dari sekadar usulan, ke percobaan yang harus diaktifkan sendiri oleh pengguna lewat flag, ke origin trial yang didaftarkan pemilik situs sehingga pengunjungnya tidak perlu melakukan apa-apa, sampai akhirnya stabil. Ada pula galeri contoh aplikasi nyata yang memakainya — berguna bukan hanya untuk belajar, tapi juga untuk meyakinkan tim bahwa hal seperti ini memang bisa dibangun di web. Kekhawatiran bahwa semua ini hanya jalan di satu keluarga browser diakui wajar, tapi karena bentuknya spesifikasi terbuka, adopsi oleh vendor lain sudah terjadi pada beberapa API. - [Ngobrolin Interop 2023 - Ngobrolin WEB ep22](https://ngobrol.in/episodes/mN01Hg41tB8-ngobrolin-interop-2023-ngobrolin-web-ep22): Interop dipilih sebagai topik justru karena belum banyak yang tahu, padahal hasilnya langsung terasa: sejumlah fitur CSS baru yang menarik ternyata lahir dari proyek ini. Ceritanya dimulai dari sebuah survei mendalam pada 2019 tentang kebutuhan developer, yang lalu menjadi proyek percontohan bernama Compat 2021 — momen historis karena baru pertama kali Google, Mozilla, dan Apple duduk bersama untuk urusan web API, bukan hanya sesama keluarga Chromium. Namanya berganti jadi Interop mulai 2022 untuk menekankan interoperability alih-alih backwards compatibility, dan fokusnya terus bertambah: 5 area di 2021, 15 di 2022, dan 26 di 2023 karena yang belum tuntas ikut dibawa ke tahun berikutnya. Yang dikerjakan ternyata bukan sekadar menambah fitur. Kasus yang lebih menjengkelkan justru ketika sebuah fitur sudah didukung Chrome, Firefox, dan Safari tapi perilakunya berbeda-beda — situasi yang tidak bisa diakali dengan feature query, karena dukungannya memang ada. Maka yang dikerjakan adalah menyepakati perilaku itu sampai detail, memperjelas spesifikasi yang rancu, dan menuangkannya jadi web-platform-tests. Persentase kelulusan tiap browser bisa dipantau terbuka di dashboard wpt.fyi — pada dasarnya test-driven development, tapi untuk API browser. Manfaat praktisnya adalah rasa percaya diri. Selama ini fitur keren sering hanya jadi tontonan karena kita ragu memakainya di produksi, lalu memilih akal-akalan dengan JavaScript. Contohnya berderet dari daftar fokus 2023: satuan viewport yang menyesuaikan bilah alat, scroll snap dan scroll behavior untuk karusel tanpa menghitung piksel, subgrid untuk menata elemen cucu, container queries, color space dengan color-mix dan contrast, elemen dialog, custom element, serta selektor :has() untuk menata induk berdasarkan isinya. WebAssembly juga masuk daftar, dengan Figma, Adobe Photoshop, CodeSandbox dan GitHub Codespaces sebagai contoh yang sudah memakainya. Terlihat pula karakter masing-masing browser di dashboard itu — ada yang unggul di tata letak, ada yang di warna, ada yang di kemampuan baru. - [Ngobrolin Belajar - Ngobrolin WEB Ep21](https://ngobrol.in/episodes/18LNXOF8IPA-ngobrolin-belajar-ngobrolin-web-ep21): Episode ini kedatangan bintang tamu dari kanal Web Programming UNPAS, dan pembahasannya berangkat dari satu pertanyaan penonton yang sudah lama menunggu: sudah belajar HTML dan CSS, lalu harus ke mana? Sebelum menjawab, keempatnya bergantian menceritakan jalur masing-masing — dari desainer grafis yang jatuh cinta pada antarmuka yang bisa diklik, dari kuliah berbasis produk Microsoft yang lalu berbelok ke open source lewat kelompok studi Linux, dan dari menyunting profil band di Myspace dengan CSS sambil menyimpan artikel ke flashdisk di warnet. Saran teknisnya konsisten: mulai dari fundamental, dan sebelum itu pahami dulu gambaran besar cara web bekerja — apa itu request dan response, apa itu domain, hosting, dan server. Baru setelah itu masuk ke HTML, CSS, dan seterusnya. Framework tidak dianggap musuh; justru dipakai sebagai pintu masuk, karena penasaran pada apa yang terjadi di baliknya sering membawa kita ke fundamental yang belum dikuasai. Cerita paling berkesan datang dari pengalaman terjebak selama tiga bulan mencoba memahami sebuah framework PHP dan tetap tidak mengerti. Framework itu akhirnya ditinggalkan, diganti delapan bulan mempelajari pemrograman berorientasi objek dan pola MVC dari nol. Ketika dokumentasinya dibuka lagi, semuanya terang — yang dikira fitur khusus framework itu ternyata fitur bahasanya sendiri. Dari sana lahir aturan sederhananya: kalau sudah baca dokumentasi dan tetap buntu, berarti ada fundamental yang terlewat. Ditutup dengan pembahasan tutorial hell dan tanda bahwa kita benar-benar sudah bisa. - [Ngobrolin Otentikasi - Ngobrolin WEB ep20](https://ngobrol.in/episodes/H-NPmffVrcw-ngobrolin-otentikasi-ngobrolin-web-ep20): Otentikasi dibedakan tegas dari otorisasi lewat analogi bandara: mencocokkan wajah dengan paspor dan tiket itu otentikasi — memastikan orangnya memang dia; sementara boleh masuk gerbang yang mana dan boleh melakukan apa itu otorisasi. Seorang pilot dan seorang penumpang sama-sama terverifikasi identitasnya, tapi izin yang mereka punya berbeda. Kebutuhannya sendiri muncul karena HTTP itu stateless: server tidak tahu siapa yang datang kalau tidak diberitahu, dan hanya sebagian sumber daya yang boleh diakses semua orang. Empat pendekatan dibahas. API key membedakan kunci publik yang boleh tertanam di sisi klien dan kunci privat yang haram keluar dari server — inilah alasan layanan seperti payment gateway mengharuskan kita punya server, dan mengapa meta framework atau serverless function jadi jalan keluar bagi yang sebelumnya hanya punya aplikasi sisi klien. Skema dasar HTTP juga dibandingkan: basic sekadar mengirim nama pengguna dan kata sandi dalam bentuk base64, sedangkan bearer mengirim token yang bisa dibatalkan dan punya masa berlaku. OAuth dijelaskan lewat alur single sign-on: ada server otentikasi tersendiri, dan setiap domain lain mengalihkan pengguna ke sana lalu menerima token sebagai jawaban — sehingga satu kali masuk cukup untuk banyak layanan. Diakui pula bahwa OAuth mudah bagi pengguna tapi merepotkan bagi yang mengimplementasikannya. Terakhir JWT, dengan satu penekanan penting: bagian payload-nya bisa dibaca siapa saja, yang menjaga keamanan adalah tanda tangannya. - [Ngobrolin Metode Rendering - Ngobrolin WEB ep19](https://ngobrol.in/episodes/WC230bL6YnY-ngobrolin-metode-rendering-ngobrolin-web-ep19): Salah satu permintaan topik paling awal akhirnya dibahas: kumpulan singkatan yang membingungkan seputar cara halaman web dirender. SSR dan SSG kebetulan sama-sama diawali dua huruf S, padahal maknanya berbeda sepenuhnya — dan pesannya adalah jangan terjebak menghafal singkatan, melainkan pahami urutan sejarahnya, karena definisinya sering tumpang tindih dan satu situs bisa memakai beberapa cara sekaligus. Ceritanya dimulai dari halaman web yang benar-benar berupa berkas statis: setiap dokumen diketik manual, dan menambah satu artikel berarti menyunting navigasi di semua halaman satu per satu. Dari kerepotan itu lahir server-side scripting — mula-mula Perl lewat CGI, lalu PHP yang merajai karena kemudahannya — di mana halaman dirakit di server dari basis data setiap kali diminta. Lalu perangkat pengguna makin kuat dan muncul gagasan menyerahkan perakitan itu ke browser; yang dikirim cukup datanya saja. Gmail disebut sebagai contoh awal yang membuat orang tertarik, dan jauh sebelum itu ada Java applet, ActiveX, dan Flash yang bahasanya justru masih satu turunan dengan JavaScript. Setiap ayunan menyelesaikan masalah lama dan memunculkan yang baru. Client-side rendering membuat halaman awal terkirim kosong dan pengunjung menunggu, sekaligus menyulitkan mesin pencari yang saat itu belum bisa menjalankan JavaScript — solusinya mula-mula pre-render khusus untuk bot, yang kemudian berkembang jadi static site generation. Tapi menghasilkan halaman statis pun tidak berskala untuk situs berita dengan jutaan artikel, sebab mengubah satu menu berarti membangun ulang semuanya. - [Ngobrolin Storage - Ngobrolin WEB ep18](https://ngobrol.in/episodes/k-4ZMXMGISA-ngobrolin-storage-ngobrolin-web-ep18): Melanjutkan episode cookie minggu sebelumnya, pembahasan bergeser ke tempat penyimpanan lain di browser — bukan basis data di server, melainkan yang benar-benar tinggal di perangkat pengguna. localStorage dan sessionStorage bersaudara dengan API yang sama; bedanya hanya umur: sessionStorage hilang begitu tab ditutup, localStorage bertahan sampai dihapus. Keduanya menempel pada domain, jadi data yang disimpan satu situs tidak bisa dibaca situs lain. Contoh paling membumi adalah kejengkelan lama: sudah menulis panjang di kolom komentar lalu koneksi bermasalah dan semuanya hilang setelah refresh. Sekarang jarang terjadi karena aplikasi menyimpan draft ke localStorage, dan itu disebut sebagai cara tercepat menaikkan pengalaman pengguna secara tajam. Contoh lain preferensi mode gelap, yang memang tidak perlu ikut dikirim ke server di setiap request seperti cookie — dan di Svelte pun menyinkronkannya ke localStorage relatif mudah. Untuk kebutuhan lebih berat ada IndexedDB, yang berperilaku seperti basis data sungguhan: punya indeks, jauh lebih cepat, dan satu-satunya yang bisa menyimpan blob. Kapasitasnya sangat besar — di browser berbasis Chromium bisa memakai sebagian besar ruang disk — tapi berbeda tiap perangkat, jadi transaksinya tetap harus ditangani kalau gagal. Sintaksnya diakui kurang menarik, dan dari situlah PouchDB yang mengikuti gaya CouchDB, Minimongo milik Meteor, serta RxDB menawarkan lapisan yang lebih nyaman sekaligus sinkronisasi ketika koneksi kembali ada. Disinggung pula SQLite yang kini bisa berjalan di browser lewat WebAssembly. - [Ngobrolin Cookies - Ngobrolin WEB ep17](https://ngobrol.in/episodes/KPZ-BgtX1kk-ngobrolin-cookies-ngobrolin-web-ep17): Cookie dibahas dari akarnya: HTTP itu stateless, server tidak peduli siapa yang meminta — datang permintaan, dikirim jawaban, selesai. Masalah muncul ketika Netscape membangun toko online di awal 90-an dan semua data pelanggan ditumpuk di server sehingga makin lambat seiring bertambahnya pengunjung. Solusinya membalik arah: penanda identitas disimpan di komputer pengguna, dan lahirlah magic cookie — istilah yang sebelumnya sudah lumrah di kalangan programmer. Analoginya seperti karcis parkir; kita tunjukkan potongan kertas itu saat mau keluar. Yang membedakan cookie dari penyimpanan lain di browser bukan kapasitasnya — hanya sekitar empat kilobyte — tapi sifatnya yang selalu ikut menempel di setiap request dan response, termasuk request ke domain lain. Dari situlah masalah privasi tumbuh: satu titik data soal sepatu lari tidak berarti apa-apa, tapi ketika menumpuk dengan pembelian aksesori bayi dan aksesori mobil, terbentuklah persona lengkap dengan perkiraan lokasi, status keluarga, dan rentang penghasilan. Ivan berbagi pengalaman mengimplementasikan kepatuhan GDPR dan menegaskan bahwa memasang banner saja tidak cukup: semua vendor pihak ketiga harus benar-benar diblokir sampai izin diberikan, dan pekerjaan itu memakan waktu lebih dari sebulan termasuk berkonsultasi dengan pengacara. Sisanya membahas flag HttpOnly, Secure, dan SameSite sebagai pertahanan terhadap CSRF, perbedaan first-party dan third-party cookie, serta penegasan bahwa cookie sendiri bukan teknologi jahat — menyimpan sesi login lewat cookie justru penggunaan yang sepenuhnya sah. - [Ngobrolin 2023 - Ngobrolin WEB ep15](https://ngobrol.in/episodes/Dwy3ydXygaY-ngobrolin-2023-ngobrolin-web-ep15): Episode awal tahun ini berisi daftar hal yang menurut Riza, Eka, dan Ivan akan menarik sepanjang 2023 — bukan ramalan, melainkan apa yang mereka sendiri ingin lirik. Eka membuka dengan yang paling tidak terduga: kembalinya standar-standar lama ekosistem web. ActivityPub yang dipakai Mastodon sedang ramai, dan RSS mulai dilirik lagi seiring munculnya gerakan kembali ngeblog. Poinnya bukan nostalgia melainkan kepemilikan — dengan RSS kita bisa mengikuti sumber konten apa pun tanpa terikat pada satu produk milik satu perusahaan, berbeda dengan taman berpagar tempat kita cuma menumpang. Benang merah yang sama muncul di gelombang framework terbaru. Ceritanya ditarik dari CGI dan PHP yang serba server, ke era SPA tempat segalanya dipindah ke klien sampai muncul masalah SEO dan halaman yang berat, lalu berayun kembali ke multi-page yang sekarang sudah modern. Framework seperti Astro, Enhance, dan Qwik mengedepankan HTML first dengan alasan sederhana: platformnya sudah berkembang, jadi pakai saja apa yang sudah disediakan browser. Salah satu pemicunya adalah browser yang akhirnya bisa menjalankan JavaScript module. Sisanya soal perkakas yang ditulis ulang dengan bahasa lain — Turbopack, Rome, dan SWC dengan Rust; Bun dengan Zig dan JavaScriptCore alih-alih V8 — plus WebAssembly yang sudah sanggup menjalankan WordPress tanpa server sama sekali. Bagian penutupnya justru yang paling membumi: sebuah cerita interview di mana rekomendasi memasang plugin adalah red flag, dan jawaban yang lolos justru menunjuk gambar yang kegedean dan font yang berlebihan. - [Ngobrolin Browser - Ngobrolin WEB ep14](https://ngobrol.in/episodes/O2c3Q2QTZI4-ngobrolin-browser-ngobrolin-web-ep14): Setelah membahas HTML, CSS, font, gambar, dan testing, episode ini menutup daftar komponen web dengan yang paling mendasar: browser. Ia digambarkan sebagai jendela menuju dunia web sekaligus satu-satunya platform yang jalan di semua sistem operasi dan semua perangkat — dan semua kemampuan aplikasi web modern hari ini adalah buah dari kemampuan browser yang melompat jauh, sebagian justru karena perang browser. Sejarahnya ditelusuri dari browser pertama buatan Tim Berners-Lee untuk komputer NeXT, lewat Mosaic yang pertama kali menampilkan gambar dan teks dalam satu dokumen, sampai perang Netscape melawan Microsoft yang bukan hanya rebutan pengguna tapi juga rebutan bahasa — JavaScript melawan JScript. Dari kekacauan itulah lahir W3C: kalau mau bikin fitur, sepakati dulu spesifikasinya. Jejak masa itu masih tersisa, dan bisa dibuktikan sendiri: ketik navigator di konsol browser apa pun, appCodeName-nya masih Mozilla dan appName-nya masih Netscape. Yang menarik dari lanskap sekarang adalah arah yang berlawanan. Dari sisi mesin, pilihan justru mengerucut tinggal tiga — Gecko, WebKit, dan Blink — sementara dari sisi antarmuka browser justru makin beragam: ada yang menaruh tab di samping dan memperlakukannya sebagai to-do list, ada yang khusus untuk developer front-end, ada yang menempel wallet atau Fediverse. Dibahas juga kejengkelan lama bahwa semua browser di iOS wajib memakai WebKit sehingga Chrome dan Firefox di sana sebenarnya hanya kulit, plus Interop sebagai forum tempat semua vendor akhirnya sepakat memprioritaskan area yang sama. - [Nobrolin Image - Ngobrolin WEB ep13](https://ngobrol.in/episodes/NwXiJKBW35U-nobrolin-image-ngobrolin-web-ep13): Episode tentang gambar ini berangkat dari satu kenyataan sederhana: kalau kita cuek, image akan jadi bagian paling berat dari sebuah halaman. Foto langsung dari kamera atau handphone gampang menembus ukuran belasan megabyte, dan kalau diunggah apa adanya, itulah yang harus diunduh pengunjung. Angka dari Web Almanac dipakai sebagai pengingat: dari total yang diunduh pengguna web mobile, sekitar 56% adalah image — lebih besar daripada HTML, CSS, dan JavaScript digabungkan. Solusinya sudah lama tersedia di tag image itu sendiri, yang ternyata sudah dipersenjatai srcset, sizes, loading, dan fetch priority. Dengan menyediakan beberapa varian ukuran, kita tidak perlu lagi menebak-nebak resolusi perangkat terbaru — apalagi sekarang ada ponsel lipat yang justru lebih kecil, dan device pixel ratio yang membuat perangkat kelas atas menuntut gambar berkali lipat lebih besar dari ukuran tampilnya. Biarkan browser yang menghitung. Untuk membuat variannya ada Sharp, ImageMagick lewat shell script, Squoosh yang punya CLI berbasis Wasm, atau layanan seperti Cloudinary dan Imgix kalau budgetnya ada. Bagian performanya membahas hal yang sering keliru: gambar di atas lipatan jangan pernah dibuat lazy, justru sebaliknya. Untuk preload gambar responsif ada imagesrcset dan imagesizes pada link preload, sehingga browser tetap memilih satu ukuran yang tepat alih-alih mengunduh keempat variannya. Ada juga peringatan bahwa kalau semuanya penting, tidak ada yang penting — prioritas tinggi yang menumpuk malah jadi antrean. Penutupnya soal CLS, aspect-ratio, blur hash sebagai placeholder, dan pesan agar atribut alt tetap ditulis, bahkan ketika isinya harus string kosong. - [Ngobrolin Testing - Ngobrolin WEB Ep12](https://ngobrol.in/episodes/TPetwHcfXns-ngobrolin-testing-ngobrolin-web-ep12): Riza, Ivan, dan Eka membahas testing — atau pengujian, istilah yang diakui masih terasa asing di telinga. Definisinya sederhana: kita punya ekspektasi, lalu memastikan hasilnya cocok. Tapi urgensinya baru terasa ketika kode terus bertambah dan dipakai banyak orang; kesalahan kecil pada modul yang dipakai jutaan aplikasi bisa merusak semuanya sekaligus, dan mengecek satu per satu secara manual sebelum tiap rilis jelas tidak sanggup mengejar. Nilai testing yang paling ditekankan justru bukan soal menangkap bug. Menulis test memaksa kita berpikir jernih tentang apa yang ingin dicapai — semacam to-do list sebelum ngoding, dan dokumentasi setelahnya untuk diri sendiri enam bulan kemudian atau untuk rekan kerja yang belum tahu maksud kodenya. Ada juga cerita bahwa test bisa memperbaiki desain sistem: kalau test untuk satu tampilan jadi kebanyakan, artinya tanggung jawab elemen itu terlalu besar dan perlu dipecah. Bagian paling jujur di episode ini adalah pengakuan bahwa waktu yang dihemat dengan melewatkan testing itu sia-sia. Ivan bercerita tentang plugin WordPress yang harus jalan di beberapa versi PHP dan WordPress sekaligus; tanpa test otomatis, setiap rilis berarti tiga sampai empat jam permutasi manual, dan satu fatal error berarti mengulang dari awal — sampai akhirnya burnout. Sisanya membahas jenjang unit, integration dan end-to-end testing, mocking layanan pihak ketiga dengan MSW, storybook, Playwright dan Cypress, sampai git hooks dan CI agar kode yang belum lulus tidak pernah sampai ke production. - [Ngobrolin Font - Ngobrolin WEB Ep11](https://ngobrol.in/episodes/WJvTvTSm9l8-ngobrolin-font-ngobrolin-web-ep11): Font dipilih sebagai topik justru karena jarang dibahas orang, padahal separuh isi web adalah teks. Ia bisa membuat halaman terlihat bagus atau jelek, tapi juga bisa membengkakkan ukuran halaman, memblokir rendering, bahkan membuat seluruh teks tidak muncul sama sekali kalau font-display disetel keliru dan file-nya gagal diunduh. Episodenya dibuka dengan meluruskan istilah: typeface adalah kelompok gayanya, font file adalah berkas untuk tiap variasi, dan yang kita tulis di CSS sebagai font-family sebenarnya merujuk typeface. Saran teknis pertamanya tegas: jangan impor font lewat @import di CSS, karena browser harus mengunduh HTML, lalu CSS, lalu mem-parsing, lalu baru tahu ada impor lain, lalu baru memanggil file font — rantai panjang yang seluruhnya memblokir render. Meng-host font sendiri lebih baik karena kita bisa melakukan preload dan menghemat satu langkah DNS resolve. Dibahas juga bahwa font-display swap menyelesaikan masalah teks tak tampil, tapi memunculkan masalah baru berupa pergeseran layout ketika font asli akhirnya menggantikan fallback-nya. Solusi untuk masalah baru itu bagian paling praktis: setel font fallback dengan size-adjust dan ascent-override agar jumlah barisnya sama persis, dan pakai Fontaine kalau tidak mau menghitung sendiri. Ivan menceritakan hasil menggabungkan itu dengan CSS kritis yang di-inline dan sisanya ditunda — LCP-nya turun dari sekitar 2,3 detik ke sekitar 1,5 detik, hanya dari urusan font. Ditutup dengan variable font, unicode-range untuk memangkas karakter yang tidak dipakai, dan alasan mengapa memuat font ikon demi tiga ikon itu pemborosan. - [Ngobrolin i18n - Ngobrolin WEB Ep6](https://ngobrol.in/episodes/CH5rh-zHktQ-ngobrolin-i18n-ngobrolin-web-ep6): Episode ini membahas Intl, Web API untuk internationalization yang membuat pemformatan tanggal, angka, dan mata uang sesuai kebiasaan tiap negara jadi urusan satu baris kode. Masalah yang diselesaikannya nyata: desimal di Indonesia memakai koma sementara di Amerika memakai titik, urutan tanggal berbeda-beda, dan bentuk jamak berbeda di tiap bahasa. Dulu semua itu dikerjakan dengan membuat array nama bulan sendiri untuk tiap bahasa, atau mengganti titik dan koma secara manual — pendekatan yang berbahaya ketika menyangkut uang. Intl juga sudah punya RelativeTimeFormat untuk menampilkan "satu hari yang lalu", kebutuhan yang hampir selalu muncul di produk yang menghadap pengguna dan dulu menjadi alasan memasang moment.js yang berukuran ratusan kilobyte. Bagian terbaiknya adalah diskusi tentang kapan memakai library. Urutannya: pakai Web API yang sudah ada dulu, baru cari library sekecil mungkin kalau memang belum ada. Pertimbangan lain yang jarang dibicarakan adalah biaya perawatan — library pihak ketiga bisa punya celah keamanan, bisa berhenti dirawat, dan kalau kita tidak paham kodenya kita tidak bisa mem-fork dan menyesuaikannya saat darurat. Ada juga temuan menarik dari benchmark: library pihak ketiga ternyata bisa lebih cepat daripada Web API, tetapi itu tidak sebanding dengan biaya mengunduh ratusan kilobyte lebih dulu. - [Ngobrolin Web Components - Ngobrolin WEB Ep10](https://ngobrol.in/episodes/B0Ar5k_h2uk-ngobrolin-web-components-ngobrolin-web-ep10): Web components dijelaskan sebagai cara membangun antarmuka yang sudah tertanam di browser modern, jadi tidak bergantung pada framework mana pun. Konsepnya sama dengan komponen di React, Vue, atau Svelte — bungkus sekumpulan tag agar bisa dipakai berulang — bedanya ia bagian dari spesifikasi web itu sendiri. Contoh yang paling mengena: input bertipe date yang widget kalendernya kita pakai sehari-hari sebenarnya adalah web component; centang show user agent shadow DOM di setting, bagian preference dan isi dalamnya langsung terlihat. Ia bukan satu teknologi tunggal melainkan gabungan beberapa: HTML template untuk markup yang dipakai berulang (dan tidak ikut dirender, berbeda dengan div yang disembunyikan), custom element untuk mendefinisikan tag sendiri dengan nama yang wajib dua kata berpisah tanda hubung, shadow DOM yang mengurung styling agar tidak bocor ke global, plus slot untuk menyisipkan isi. Modul JavaScript disebut sebagai kunci yang akhirnya membuat semuanya bisa terenkapsulasi tanpa mengontaminasi yang lain. Yang menarik justru datanya: pemakaian web component malah menurun dari tahun ke tahun, dan HTML template hampir tidak terpakai sama sekali. Dugaan mereka soal eksposur dan pengalaman developer — banyak boilerplate, penamaan lifecycle yang tidak intuitif, dan gaya berbasis kelas yang terasa melawan arus saat ekosistem bergerak ke fungsional. Dari situlah lahir Lit dan Stencil sebagai pembungkus, sementara framework populer sendiri sudah bisa dikompilasi menjadi custom element. - [Ngobrolin Konsep JS: Event Loop - Ngobrolin WEB Ep5](https://ngobrol.in/episodes/qU3POeBk-0E-ngobrolin-konsep-js-event-loop-ngobrolin-web-ep5): Episode ini membahas event loop, konsep fundamental yang menjelaskan kenapa JavaScript sering terasa tidak bisa ditebak. Keluhan klasiknya nyata: kode berjalan sesuai urutan saat dicoba, lalu berubah urutannya saat dipresentasikan ke klien. Akar masalahnya bukan bahasanya yang aneh melainkan model konkurensinya yang belum dipahami. Dijelaskan lebih dulu bedanya asynchronous dan paralel lewat analogi tujuh anak membungkus kado: pada asynchronous tiap anak mengerjakan satu tahap untuk semua kado, sehingga satu anak yang berhenti membuat seluruh proses terhenti; pada paralel tiap anak menyelesaikan satu kado utuh sendiri, sehingga satu yang gagal masih menyisakan enam kado jadi. JavaScript memakai jalur asynchronous dan berjalan di satu thread. Demo setTimeout dengan delay nol menunjukkan intinya: meski tanpa penundaan, callback-nya tetap masuk antrean dan baru dieksekusi setelah call stack kosong. Dari sini dibahas kenapa while(true) membekukan halaman sementara versi rekursif dengan setTimeout tidak, kenapa JavaScript yang terlalu berat membuat scroll terasa patah-patah karena proses render kalah cepat, dan kenapa alert adalah satu-satunya hal yang benar-benar memblokir. Ditutup dengan Web API — implementasi khusus browser di luar JavaScript engine seperti fetch, Intersection Observer, History, dan Intl — serta pesan praktis: pahami callback dulu, lalu promise, baru async/await, dan jangan menumpuk await berurutan untuk dua permintaan yang sebenarnya tidak saling bergantung. - [Ngobrolin Android - Ngobrolin WEB Ep9](https://ngobrol.in/episodes/TGEH6ovjnjU-ngobrolin-android-ngobrolin-web-ep9): Episode ini menyeberang ke dunia Android bersama tiga Google Developer Expert di bidang itu: Andrew, Budi, dan Sidik. Pembukanya cerita masing-masing tentang bagaimana mereka menjadi GDE — prosesnya bukan mengirim lamaran, melainkan direkomendasikan lalu melewati beberapa kali wawancara: dengan sesama GDE yang menggali sisi komunitas, dan dengan Googler yang justru menanyakan hal teknis serta masukan terhadap produk yang dipakai. Pertanyaan utamanya soal masa depan Java. Jawabannya: Java masih akan bertahan lama karena bahasanya matang dan penggunanya luas, dan di banyak proyek ia hidup berdampingan dengan Kotlin dalam satu codebase. Kotlin hadir bukan untuk menggantikan melainkan mengobati keluhan utama Java — terutama null pointer yang dulu ditangani dengan berbagai pre-condition. Dibahas juga sisi politiknya: perselisihan Oracle membuat lahir banyak varian OpenJDK dari berbagai pihak. Bagian tentang Jetpack Compose menarik karena mengakui asal-usulnya: developer mobile beralih dari imperatif ke deklaratif setelah melihat cara kerja web, dan XML di Android sendiri dulu dipilih justru agar terasa akrab bagi developer web yang sudah terbiasa dengan HTML. Compose membuat hal yang dulu rumit jadi sederhana — membuat list tidak lagi butuh RecyclerView beserta adapter dan view holder-nya. Ditutup dengan Kotlin Multiplatform yang membagi business logic bersama tetapi membiarkan lapisan tampilan tetap native, plus pesan soal menjadi agnostik: pelajari lebih dari satu platform supaya kita sendiri yang jadi multiplatform. - [Ngobrolin Viteconf - Ngobrolin WEB Ep4](https://ngobrol.in/episodes/8Diqwtb6hKs-ngobrolin-viteconf-ngobrolin-web-ep4): Episode ini membahas Vite dan ViteConf yang baru saja digelar. Dimulai dari pertanyaan mendasar: kenapa kita butuh bundler? Karena kode yang kita tulis belum tentu bisa langsung dijalankan browser — ada sintaks TypeScript, fitur ECMAScript yang belum didukung, import dan export, tree shaking, minifikasi, sampai SASS yang harus di-transpile jadi CSS. Bundler adalah alat yang membaca semua itu dan mengolahnya menjadi bentuk yang bisa dijalankan. Yang membuat Vite berbeda adalah momen kemunculannya: ES module akhirnya didukung browser, sehingga sebagian pekerjaan yang dulu harus dikerjakan bundler kini bisa diserahkan ke browser. Di mode development Vite bahkan tidak melakukan bundling sama sekali — modulnya dijalankan langsung, dan itulah kenapa hot module reload-nya terasa instan. Untuk produksi ceritanya berbeda: Vite memakai Rollup untuk bundling dan esbuild untuk transpile serta tree shaking, karena prioritas development dan produksi memang berbeda. Ada juga cerita Snowpack yang sempat diumumkan akan dipakai SvelteKit lalu batal, dan timnya justru kini mengerjakan Astro yang memakai Vite. Dibahas juga Vitest sebagai alternatif Jest yang lebih kompatibel dengan ES module, dan pengumuman WebContainers dari StackBlitz — sistem operasi berbasis WebAssembly yang berjalan di dalam browser, dibangun dengan bekerja erat bersama tim standar web. Ditutup dengan menjawab pertanyaan penonton: kode JavaScript di sisi klien tidak bisa benar-benar diamankan, dan CDN masih masuk akal selama dependensinya sedikit. - [Ngobrolin DevFest - Ngobrolin WEB Ep3](https://ngobrol.in/episodes/LrPBLlURfIs-ngobrolin-devfest-ngobrolin-web-ep3): Episode ini membahas DevFest bersama Danang, community manager Google untuk region Indonesia dan Brunei. DevFest adalah konferensi teknologi tahunan yang diselenggarakan komunitas Google Developer Groups di seluruh dunia pada rentang waktu yang sama, biasanya menjelang akhir tahun. Dijelaskan juga peta komunitas di bawah Developer Relations Google: Google Developer Student Clubs yang berbasis kampus, Google Developer Groups yang berbasis kota dengan sepuluh chapter di Indonesia ditambah tiga chapter khusus cloud, Google Developer Experts yang berbasis keahlian produk, program accelerator untuk startup, dan Women Techmakers. Untuk menjadi GDE, dua kualitas yang diharapkan adalah keahlian yang cukup untuk mengajar di tingkat intermediate hingga advanced, dan jiwa berkomunitas. Saran paling praktisnya bertumpu pada kisah nyata: jalan menuju GDE biasanya dimulai dari datang sebagai peserta, lalu menjadi volunteer, lalu ditawari menjadi pembicara. Format DevFest sendiri bebas — bisa talk, workshop, panel, atau exhibition — dan slot pembicara terbuka untuk siapa saja, bukan hanya GDE. Ada juga kabar praktis: karena Chrome Dev Summit tahun itu ditiadakan, tim Chrome dibuka untuk hadir di acara komunitas lokal, asalkan diundang jauh-jauh hari. Untuk kota yang belum punya GDG, chapter baru bisa diusulkan, dengan syarat ekosistem komunitasnya sudah cukup hidup lebih dulu. - [Ngobrolin CSS - Ngobrolin WEB Ep2](https://ngobrol.in/episodes/ghLVcP_CgkY-ngobrolin-css-ngobrolin-web-ep2): Episode ini berbenang merah CSS, dari sumber belajar sampai fitur yang baru saja tersedia. Dibuka dengan menjawab pertanyaan penonton soal Quicklink: prefetch tidak menambah jumlah pengunjung secara langsung, tetapi ada efek samping yang jarang disadari — setiap prefetch tetap menjadi page request di sisi back-end, sehingga pada situs bertrafik besar dengan tagihan berbasis jumlah request, biayanya bisa membengkak. Bagian terbesarnya membahas inline CSS versus file CSS terpisah. CSS bersifat render blocking: browser menunggu file-nya selesai diunduh dan diparsing sebelum melanjutkan render, sehingga LCP ikut tertahan. Solusinya menyisipkan CSS kritikal langsung di dalam tag style, tetapi trade-off-nya nyata — HTML jadi lebih besar dan tidak bisa di-cache browser. Patokan praktis yang dipakai adalah sekitar 5KB; kalau sudah mencapai puluhan kilobyte, sebaiknya dipisah. Pengalaman memecah CSS sampai per komponen justru membuat halaman lebih lambat karena tiap file punya delay sendiri. Topik berikutnya container query, fitur yang mulai diminta orang sejak 2013 dan baru stabil sembilan tahun kemudian. Bedanya dengan media query: media query hanya tahu ukuran viewport, sedangkan sebuah komponen bisa saja ditempatkan di sidebar sempit meski layarnya lebar. Dari sini muncul diskusi bagus soal kapan mengadopsi fitur yang belum merata dukungannya — jawabannya bukan menunggu semua browser, melainkan melihat data analytics pengguna sendiri, memakai polyfill, dan menerapkan progressive enhancement. Ditutup dengan cerita harus mendukung IE11 karena pegawai bank memakai laptop kantor yang browsernya dikunci dari pusat. - [Ngobrolin Island Architecture - Ngobrolin WEB Ep1](https://ngobrol.in/episodes/1p7nM1Yr6tw-ngobrolin-island-architecture-ngobrolin-web-ep1): Episode ini membahas Island Architecture beserta dua topik yang saling menyambung: Quicklink dan Astro. Dimulai dari Quicklink, library mungil buatan tim Google yang mengubah semua tautan internal di halaman menjadi prefetch otomatis. Kuncinya bukan sekadar prefetch — itu sudah lama ada di web — melainkan kapan prefetch dijalankan: hanya saat browser sedang menganggur lewat requestIdleCallback, dan hanya untuk tautan yang benar-benar masuk viewport lewat Intersection Observer. Hasilnya aplikasi multi-halaman biasa terasa seperti single page application, tanpa harus memakai meta framework. Island Architecture sendiri adalah cara menata arsitektur front-end dengan analogi kepulauan: seluruh halaman adalah wilayah statis (laut), sementara bagian-bagian yang butuh interaktivitas JavaScript adalah pulau-pulaunya. Pendekatan ini memadukan keunggulan client-side rendering dan server-side rendering — kita bisa memilih komponen mana yang perlu dihidrasi, dan menentukan prioritasnya: yang di atas lipatan segera, yang di bawah menunggu browser menganggur. Kelemahannya lebih pada faktor manusia: keputusan itu sangat bergantung pada aplikasi masing-masing, dan tidak cocok untuk aplikasi yang memang seluruhnya dinamis seperti game atau aplikasi peta. Astro menerapkan filosofi ini dengan menjual zero JavaScript by default, dan direktif client:idle serta client:visible-nya sebenarnya membungkus dua Web API yang sama. Dibahas juga Qwik yang mengklaim tidak butuh hidrasi sama sekali karena ia resumable. Ditutup dengan demo View Transition yang masih di balik flag, plus catatan bahwa keunggulan pendekatan berbasis Web API adalah fallback-nya tetap berfungsi sebagai tautan biasa. - [Ngobrolin Web Episode Perdana](https://ngobrol.in/episodes/Aneo-LjbnoI-ngobrolin-web-episode-perdana): Episode perdana Ngobrolin WEB, dibuka dengan perkenalan tiga pembawa acaranya: Riza, Eka, dan Ivan. Formatnya sengaja dibuat santai — mengobrol tentang teknologi web secara umum, bukan mengikat diri pada satu framework atau satu browser, dengan tujuan mengejar ketertinggalan dari perkembangan web yang bergerak sangat cepat. Masing-masing membawa satu topik. Topik pertama adalah Sanitizer API, sebuah web API baru yang membersihkan string HTML dari script berbahaya sebelum dirender. Selama ini kebutuhan itu ditambal dengan library pihak ketiga seperti DOMPurify atau — lebih buruk lagi — regex hasil salin-tempel dari Stack Overflow. React menandainya dengan nama yang menakutkan, dangerouslySetInnerHTML, sementara Svelte terang-terangan menyatakan tidak melakukan sanitasi sehingga tanggung jawabnya ada pada kita. Dari sini muncul prinsip yang sudah lama dipegang komunitas WordPress: sanitize early, escape late — bersihkan setiap input di pintu masuk, dan escape di titik output paling akhir. Topik kedua adalah Performance Insights, panel baru di Chrome DevTools yang memvisualisasikan proses render alih-alih hanya menyajikan skor seperti Lighthouse. Dengan panel ini bisa terlihat langsung elemen mana yang dianggap browser sebagai FCP dan LCP, di detik ke berapa layout shift terjadi dan apa penyebabnya, serta resource mana yang render blocking. Pembedahan situs berita sungguhan menunjukkan polanya: kerangka halaman dirender di server, tetapi kontennya baru diambil belakangan lewat client-side rendering, sehingga pembaca menunggu terlalu lama untuk melihat isi yang sebenarnya mereka datangi. - [Ngobrolin ECMAScript - Ngobrolin WEB Ep8](https://ngobrol.in/episodes/fv-M_fFil0c-ngobrolin-ecmascript-ngobrolin-web-ep8): Episode ini membahas ECMAScript — apa sebenarnya di balik nama yang sering kita sebut sebagai ES6, ES2015, dan seterusnya. Intinya ECMAScript adalah spesifikasi, bukan implementasi: ia menjelaskan perilaku yang harus dicapai, sementara tiap browser bebas mewujudkannya dengan caranya sendiri lewat engine masing-masing seperti V8, SpiderMonkey, dan JavaScriptCore. Itu sebabnya hasil benchmark yang sama bisa berbeda antar browser, dan itu pula sebabnya JavaScript tidak punya situs dokumentasi resmi tunggal. Sejarahnya menarik: setelah ES3 pada 1999 sempat vakum sepuluh tahun karena ES4 tidak pernah selesai akibat perselisihan, dan baru sejak ES5 pada 2009 rilisnya kembali teratur setiap tahun. Proses penambahan fitur dijelaskan bertahap: siapa pun boleh mengusulkan di stage 0 lewat isu di GitHub, tetapi baru masuk stage 1 kalau ada anggota komite TC39 yang menjadi champion. Stage 4 berarti selesai dan pasti dirilis pada versi tahun berikutnya — inilah yang dimaksud ESNext pada konfigurasi Babel atau TypeScript. Menjadi anggota ECMA ternyata berbayar untuk kalangan industri dengan tarif yang sengaja dibuat tinggi, meski ada kategori khusus untuk institusi pendidikan dan organisasi nirlaba. Ditutup dengan pembahasan perbedaan arrow function dan regular function — sintaks yang lebih ringkas, implicit return, tidak punya objek arguments, dan perbedaan perlakuan terhadap this. - [Perkembangan Teknologi WEB dari httparchive - Ngobrolin WEB Ep7](https://ngobrol.in/episodes/UEaMZRG_OnQ-perkembangan-teknologi-web-dari-httparchive-ngobrolin-web-ep7): Episode ini membedah Web Almanac 2022, laporan tahunan tentang keadaan web yang datanya berasal dari HTTP Archive. Yang membedakannya dari survei seperti State of JS adalah metodenya: ini field report, bukan kuesioner. Datanya berasal dari URL yang benar-benar diakses pengguna Chrome lewat Chrome UX Report, lalu tiap bulan URL-urL itu diuji dengan sejumlah tools dan disimpan di BigQuery yang bisa dikueri siapa saja. Temuan dari sisi JavaScript: jumlah JavaScript yang dimuat justru naik dibanding tahun sebelumnya, webpack masih memimpin sebagai bundler, dan jQuery masih jauh di atas React — sebagian besar karena WordPress yang dipakai sekitar 35% situs. Sisi lain dari popularitas jQuery adalah ia jadi penyumbang celah keamanan terbesar. Yang cukup memprihatinkan, 77% halaman mobile masih memuat script yang render blocking, padahal atribut async sudah lama tersedia. Adopsi PWA naik stabil sejak 2019, dan datanya menunjukkan jenis situs yang paling banyak memakainya adalah shopping dan news. Ada temuan praktis soal ikon: meski variasi ukurannya membingungkan, hanya dua ukuran yang benar-benar dominan. Ditutup dengan pembahasan kenapa laporan seperti ini berguna — bukan sekadar tahu tren, tetapi punya data untuk mendukung keputusan teknis di hadapan pemegang keputusan, dan tahu di mana posisi kita dibanding rata-rata.