Writing

Postmortems, architecture decisions, dan opini soal backend & production systems. No fluff, no "in this article we will explore" — real stories from real systems.

|2 min read

GPS + QR attendance: dua mekanisme yang saling menambal, bukan over-engineering

GPS saja bisa di-spoof. QR saja bisa difoto dan dishare. Digabung, keduanya menutup celah masing-masing. Ini alasan desainnya di School HRIS.

#opinion#design#attendance#hris
|2 min read

Postmortem: try/catch middleware yang tidak menangkap apa-apa di Hono

Aku pasang error middleware di Hono v4 dan merasa aman. Ternyata route error melewatinya sepenuhnya. Penyebabnya ada di cara Hono compose dispatch.

#postmortem#hono#typescript#error-handling
|3 min read

34 modul dalam satu monolith: pelajaran dari nwidart/laravel-modules

ERP 34 modul dan School HRIS 9 package group jalan dalam satu Laravel app. Begini cara nwidart-style modules bikin itu tidak jadi spaghetti.

#architecture#laravel#modular
|2 min read

Microservices bukan jawaban untuk tim kecil: bukti dari 34 + 130 modul monolith

Dua project terbesar yang aku pegang — 34 modul dan 130+ modul — jalan sebagai monolith. Modular iya, microservices tidak. Ini alasannya.

#opinion#architecture#monolith
|3 min read

pgvector untuk RAG: kenapa aku tidak pakai vector database terpisah

AI WhatsApp bot pakai pgvector di PostgreSQL, bukan Pinecone. Satu database, zero vendor baru, dan performanya cukup di scale-ku.

#architecture#postgresql#ai#rag
|3 min read

Participant polymorphic: satu workflow, banyak tipe peserta

Scheduling dan attendance di School HRIS butuh peserta yang bukan cuma student. Solusinya: participant polymorphic, entity tetap terpisah.

#architecture#laravel#database