Langsung ke konten
AFM Studio
  • Halaman

    AFM Studio
  • Karya
  • Lab
  • Tentang
  • CV
  • Kontak
  • Proyek

    AksaraPerpustakaan pengetahuan Otorita IKN yang bisa dicari, dengan server memeriksa akses setiap pembaca di tiga tingkat
  • Daily TaqwaSistem presensi salat anti-manipulasi untuk ~2.000 pegawai OIKN di Masjid Negara IKN
  • Lantara v2Mesin perizinan Otorita IKN tempat administrator menambah jenis izin baru dari layar, tanpa developer
  • eKiosk IKNDua ruang kendali untuk Nusantara: konten kios dan pelacakan bus live dengan estimasi kedatangan yang menilai dirinya sendiri
  • E-Monev IKNPlatform pemantauan pembangunan Nusantara selama 23 tahun, melacak progres triwulan setiap unit terhadap 24 KPI
  • JDIH OIKNPortal dokumen hukum publik OIKN, dengan alur penerbitan terkendali dan ringkasan AI yang tidak pernah keluar dari server
  • Jejak PenanamanAplikasi absen acara penanaman pohon IKN yang membuktikan peserta hadir di lokasi lewat selfie ber-geofence
  • Dashboard SAKTIPipeline malam dan dashboard yang menggantikan unduhan anggaran manual di keenam satker OIKN
  • DoseRxKalkulator dosis untuk 127 obat yang membulatkan dosis ke tablet dan sirup yang dijual apotek Indonesia
  • CubiqPelatih speedcubing dengan timer setara kompetisi dan solver buatan sendiri untuk 8 puzzle utama
  • ScimotionPerpustakaan sains interaktif berisi 86 artikel, masing-masing dijelaskan bersama animasi yang bisa dikendalikan pembaca
  • WA Daily Scrum BotBot WhatsApp yang menagih laporan standup tim 14 orang dan menandai tugas yang macet berhari-hari

↑ ↓ untuk berpindah · Enter untuk membuka · Esc untuk menutup

Pola Hujan

Atlas tiga pola curah hujan Indonesia, dihitung dari data satelit mentah sehingga siapa pun bisa memeriksanya

Tangkapan layar
lokasi diklasifikasi dari curah hujan satelit
86
kecocokan dengan data BMKG di 52 kota
71%
perbedaan terverifikasi yang dilaporkan, tidak disembunyikan
4
panggilan jaringan saat runtime
0
Di halaman ini

Masalahnya

Di sekolah kita belajar bahwa Indonesia punya dua musim, hujan dan kemarau. Itu benar untuk Jawa, tapi keliru untuk banyak daerah lain. Musim hujan di Ambon jatuh pada bulan-bulan kemarau di Jawa, dan sebagian wilayah di sekitar khatulistiwa mengalami dua puncak hujan dalam setahun. BMKG sudah tahu hal ini. BMKG memetakan 699 zona musim dalam tiga kelompok: Monsunal, Ekuatorial, dan Lokal. Tapi pengetahuan itu tersimpan di buletin PDF dan penilaian para ahli, bukan di sesuatu yang bisa dibuka dan dijelajahi orang awam.

Saya membuat Pola Hujan untuk pembaca umum di Indonesia yang ingin tahu kenapa "musim hujan" berarti hal berbeda di tempat berbeda. Situs ini menjelaskan iklim jangka panjang. Ini bukan prakiraan cuaca atau kalender tanam, dan situsnya menyebutkan hal itu sejak layar pertama.

Yang saya bangun

Petanya saya hitung dari data mentah

Jalan pintasnya adalah mendigitalkan peta zona BMKG lalu mewarnainya. Saya memilih menghitung klasifikasi sendiri dari data curah hujan satelit. Siklus hujan dua belas bulan di setiap tempat diperlakukan sebagai gelombang dan dipecah menjadi komponen tahunan dan komponen dua kali setahun, dengan matematika yang sama untuk menjelaskan pasang surut. Komponen mana yang lebih kuat, dan kapan puncaknya, menentukan kelompoknya. Siapa pun bisa memeriksa hasilnya.

Perbedaan dengan BMKG tetap ditampilkan

Ambang batasnya ada di satu berkas, masing-masing mengutip Aldrian dan Susanto (2003), makalah yang menjadi dasar sistem tiga kelompok ini. Saya menetapkan aturan untuk tidak mengutak-atik ambang itu sampai petanya cocok dengan BMKG. Empat tempat yang hasilnya berbeda, Medan, Palu, Tobelo, dan Labuha, tetap tampil di peta sebagai temuan yang dilaporkan, bukan diam-diam diselesaikan. Satu lapisan peta khusus menandai setiap tempat yang berbeda dari peta resmi, lengkap dengan sumbernya, dan tingkat kecocokannya bergerak seiring saya menambah perbandingan bersumber, bukan karena mengubah ambang batas.

Klasifikasinya diuji dengan data buatan dulu

Sebuah generator membuat siklus hujan dari parameter gelombang yang sudah diketahui, dan pengklasifikasi harus bisa menemukan kembali parameter itu dengan tepat. Satu uji tetap mencakup siklus yang puncaknya enam bulan setelah Jawa, yang harus masuk ke kelompok terbalik. Baru setelah semua uji lolos, saya menjalankannya pada data satelit.

Situs statis tanpa pustaka berat

Pipeline-nya mengunduh arsip satelit CHIRPS dan membaca berkas rasternya dengan decoder yang saya tulis sendiri. Tidak ada pustaka peta, grafik, statistik, atau machine learning. Semuanya dijalankan sekali saat build, jadi situsnya statis, tidak memanggil jaringan, dan tidak butuh biaya hosting. Biaya unduh didominasi oleh jumlah raster bulanan yang tetap, bukan oleh berapa banyak tempat yang diambil sampelnya. Cakupannya tumbuh dari 15 kota awal menjadi 34, lalu menjadi 86, hampir tanpa biaya tambahan setiap kali.

Saya menolak build yang paling gampang

Pilihan gampangnya adalah peta angin beranimasi: sebuah medan grid, penunjuk bulan, partikel yang melayang di atasnya. Itu akan jadi proyek animated-field ketiga yang nyaris identik. Saya memilih atlas kategorikal sebagai gantinya, small multiples dan deret waktu, bukan medan vektor kontinu, karena tugas peta ini adalah menunjukkan kelompok mana yang cocok untuk suatu tempat, bukan tampil mengesankan saat bergerak.

Hasilnya

Pola Hujan sudah live dalam bahasa Indonesia. Sebuah halaman beranda bergaya cerita memperkenalkan tiga kelompoknya, lalu atlas, halaman per kota, perbandingan dua tempat, dan satu halaman metode-sekaligus-penjelasan yang menyatu membawa detailnya. Situs ini mencakup 86 lokasi. Saya membandingkan 52 di antaranya dengan data resmi BMKG, dan peta saya cocok pada 71%. Dari 52 perbandingan itu, 32 terverifikasi langsung dari buletin resmi BMKG, naik dari nol; sisanya, 20, ditandai sebagai perkiraan. Saya membangun versi pertamanya dalam tiga hari pada pertengahan Agustus 2026, lalu terus kembali selama beberapa minggu berikutnya untuk mendesain ulang palet dan sistem tipografinya, menggabungkan halaman metodenya menjadi satu, dan melipatgandakan jumlah kotanya lebih dari dua kali.

Di balik layarDetail teknis untuk engineer
  • Fitting harmonik memecah klimatologi bulanan setiap lokasi menjadi komponen tahunan dan setengah tahunan. Rasio amplitudo dan fase puncak menentukan Monsunal, Ekuatorial, atau Lokal.
  • Ambang batas ada di satu berkas konfigurasi yang dikutip. Tingkat kecocokan dengan BMKG dihitung oleh pipeline, tidak ditulis tangan.
  • Generator sintetis membuat siklus dari parameter yang diketahui, dengan kasus regresi tetap untuk kelompok yang fasenya terbalik.
  • Decoder buatan sendiri (lib/geo/bil.ts, lib/geo/tar.ts) langsung membaca raster BIL dan arsip tar CHIRPS, jadi tidak perlu dependensi GDAL.
  • Proses build mengunduh 120 raster bulanan CHIRPS, mengambil sampel dari 86 koordinat kota ditambah grid mosaik 0,25° berisi 2.414 sel daratan di seluruh Indonesia, lalu menjalankan fitting harmonik pada setiap titiknya. Sebuah pengecekan determinisme memastikan versi sumber dan ambang batas yang sama menghasilkan bundel yang identik per byte; nilai 34 kota awal tetap identik per byte setelah metode pengambilan sampel berubah untuk kota-kota baru.
  • Aturan radius sudut milik sistem desain bersama sengaja dilonggarkan di sini: 2px pada penanda data, 10px dan 22px pada panel dan sheet, dicatat sebagai penyimpangan bernama khusus aplikasi ini, bukan ketidakkonsistenan.
  • Pengambilan data, fitting, dan klasifikasi berjalan saat build. Hasilnya berupa static export di GitHub Pages, di-deploy oleh GitHub Actions setiap kali push ke main.
  • 169 tes di 17 berkas menjaga CI. Sekitar 6.369 baris TypeScript, 98 commit antara 17 Agustus dan 29 September 2026: tiga hari pertama membangun pipeline dan situs aslinya, lalu beberapa minggu berikutnya mendesain ulang palet dan sistem tipografi, menggabungkan /metode dan /harmonik menjadi satu halaman /cara-kerja, dan memperluas cakupan dari 34 kota menjadi 86.

Tangkapan layar

Beranda
Beranda (2)
Beranda (3)
Peta Pola Hujan
Semua Kota
Perbandingan

Sedang merekrut, atau membangun hal serupa?

Saya terbuka untuk posisi full-time dan proyek freelance tertentu.