Blog
Catatan teknis seputar web development, DevOps, dan integrasi AI.
500 artikel
- 23.29backend
Rekonsiliasi Data Impor: Entitas yang Hilang dari Sumber
Database masih 65, sumber tinggal 63. Penghapusan lewat importer yang sama, kunci idempotensi pindah ke nomor baris sumber.
TL;DR: Database punya 65 entitas padahal JSON sumber cuma 63, dua dobel. Alih-alih hapus manual via SQL, penghapusan dijadiin bagian importer biar ada counter sama test, dan media ikut kehapus lewat CASCADE. Kunci idempotensi pindah dari slug ke nomor sumber, jadi run ulang aman, nol insert nol hapus.
#data-engineering#importer#database - 22.33backend
Tabel Tipe yang Dibaca Manusia, Bukan ENUM
Ketika tipe layanan butuh kategori lintas bidang dan saklar aktif, tabel lookup mengalahkan ENUM.
TL;DR: Awalnya sempat mikir pakai ENUM buat status tipe layanan, tapi ternyata butuh metadata kayak kategori, flag aktif, dan kode unik buat integrasi. Jadinya dibuat tabel lookup, hapus kategori cukup SET NULL biar riwayat data aman. ENUM repot karena nyimpen indeks dan nambah nilai harus ubah skema, validasi tetap dua lapis plus seeding pakai code biar ID stabil.
#mysql#postgresql#skema-database - 22.28backend
Koordinat Tertukar, Enam Belas Terbit
Impor 22 data cagar budaya: kolom lintang-bujur tertukar, typo derajat, dan baris yang jujur ditahan draft.
TL;DR: Import data cagar budaya ternyata berantakan: kolom latitude-longitude tertukar, ada typo derajat, koordinat dobel, bahkan ada yang kosong. Alih-alih dikoreksi diam-diam, importer ngasih status draft plus catatan geo_review buat data meragukan. Hasilnya 16 entitas terbit, 6 nunggu verifikasi manusia dulu.
#data-engineering#importer#geospasial - 22.26devops
Log Perubahan Modul, Bukan Tempahan Git Log
Enam commit sehari diringkas satu baris changelog modul: cara memilah perubahan yang layak dicatat manusia.
TL;DR: Enam commit teknis itu ternyata cukup dicatat jadi satu baris changelog aja, karena yang penting bukan jumlah commit tapi perubahan perilaku yang dirasain user. Jadi jangan asal copas git log mentah, mending dikurasi manual biar dampak fungsionalnya jelas. Terus karena API-nya tetap kompatibel dan cuma aturan bisnis yang berubah, kategori paling pas ya "Changed", bukan "Fixed".
#changelog#documentasi#praktik-rekayasa - 21.18writing
Rencana yang Bisa Dieksekusi Menolak Kompromi
Rencana 634 baris yang benar-benar bisa dijalankan: migrasi berpasangan, kontrak dulu, test terdaftar di commit yang sama.
TL;DR: Ternyata dokumen rencana 634 baris itu bukan formalitas, tapi panduan ketat berisi tugas, berkas, dan aturan wajib. Aturannya mekanis: skema database cuma boleh lewat migrasi naik-turun, API ditulis dulu sebelum kode, dan test wajib ikut terdaftar. Nilainya justru di penegasan yang ditolak, jadi aku mau pakai pola ini ke alur kerja berikutnya.
#documentation#requirements#workflow - 21.06writing
Brief Lisan Jadi Dokumen Beku: Kata Klien Sebelum Kata Tim
Brief lisan klien dibekukan dulu: kutipan verbatim dipisahkan dari catatan tim, konflik dicatat bukan diputuskan.
TL;DR: Brief lisan klien jangan langsung jadi tiket kerja, bahaya kalau salah tafsir. Tim bekuin omongannya apa adanya di dokumen intake status input, dipisah kutipan verbatim sama catatan tim yang mapetin poin ke dokumen lama. Yang bentrok atau belum jelas ditahan dulu, cuma jalur aman yang masuk backlog sambil nunggu konfirmasi tertulis.
#requirements#documentation#workflow - 20.34writing
Dokumen Batal Tetap Acuan: Ekstraksi, Bukan Kebangkitan
Plan yang dibatalkan tetap bisa menjadi sumber panduan: ekstraksi eksplisit dengan daftar dilarang diangkat, sementara dokumen sumber tetap beku.
TL;DR: Dokumen plan yang udah di-cancel hampir dianggap sampah padahal isinya masih kepake banget. Daripada buka lagi dokumen lamanya atau nyomot diam-diam, tim cuma mindahin yang masih valid ke bagian E di dokumen baru lengkap sama daftar yang dilarang dibawa. Jadi plan lama tetap beku cuma dikasih backlink, jejak keputusannya aman tapi ilmunya tetap bisa dipake.
#documentation#adr#workflow - 20.19tooling
Backlog Bukan Antrian: Gerbang Kesepakatan Sebelum To Do
Aturan transisi satu baris diganti menjadi arena tanya-jawab: item naik ke To Do hanya setelah ada kesepakatan, mengikuti pola definition of ready.
TL;DR: Item di papan kerja buntu karena owner suka nanya-nanya di mana-mana, bukan karena speknya kurang lengkap. Solusinya, semua item wajib lewat tanya-jawab di backlog dulu sebelum boleh masuk To Do, jadi backlog kayak arena negosiasi ala definition of ready. Akibatnya, refinement jadi log tanya-jawab, item bisa dianggap selesai cuma karena kesepakatannya udah beres, dan WIP limit makin efektif.
#kanban#agile#workflow - 19.22frontend
Nilai Tebakan Bukan Data: Tandai Placeholder di Mockup
Angka tebakan tanpa penanda di mockup bisa bertahan jadi ekspektasi resmi. Tandai asal-usul setiap nilai agar deliverable tidak berbohong.
TL;DR: Mockup yang isinya angka tebakan tanpa penanda itu bahaya, bisa dianggap data beneran pas udah jadi acuan developer. Solusinya gampang, kasih label mana nilai asli dari sumber dan mana cuma placeholder yang nunggu jawaban. Intinya nilai tebakan bukan data, mending ditandain dari awal daripada nanti ngulik ulang.
#requirements#ux#mockup