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

Tide Analysis

Penjelas pasang surut untuk delapan pelabuhan Indonesia dari data mentah, yang menolak kalau datanya terlalu pendek

Tangkapan layar
pelabuhan Indonesia mencakup keempat tipe pasang surut
8
rekaman per jam tiap pelabuhan, Januari sampai Agustus 2026
212 hari
galat amplitudo saat derau 15 cm
< 1 cm
library pasang surut, aljabar linear, atau grafik
0
Di halaman ini

Masalahnya

Pelajar dan pembaca yang ingin memahami pasang surut kebanyakan menemukan alat yang hanya mencari jawaban di tabel. Sebagian besar alat prediksi pasang surut mengambil konstanta yang sudah diterbitkan, yaitu angka yang menggambarkan tarikan Bulan dan Matahari terhadap air di suatu pantai, lalu menjumlahkannya menjadi kurva. Cara itu cepat, tetapi tidak membuktikan apa pun soal fisikanya dan tidak bisa dipakai di tempat yang konstantanya belum pernah diterbitkan.

Tide Analysis berangkat dari data muka laut per jam yang masih mentah dan menghitung sendiri konstanta itu, langsung di browser. Cara ini memperlihatkan hal yang disembunyikan alat berbasis tabel. Beberapa siklus pasang surut sangat berdekatan, sehingga butuh sekitar enam bulan data untuk memisahkannya. Kalau data dua minggu diminta memisahkannya, jawaban yang benar adalah "tidak bisa". Situs ini bukan untuk navigasi, dan menyebut Pushidrosal sebagai sumber resmi yang harus dipakai.

Yang saya bangun

Matematikanya diuji dengan data yang jawabannya sudah diketahui

Saya menulis sendiri perhitungan astronomi, pencocokan kurva, dan mesin prediksinya, sebagai fungsi biasa yang bisa diuji tanpa browser. Sebelum solver-nya ada, saya membuat generator yang menyusun data pasang surut buatan dari konstanta dan derau yang saya tentukan. Solver harus menemukan kembali konstanta itu. Dengan derau 15 cm di setiap pembacaan, semua amplitudo tetap kembali dengan selisih kurang dari satu sentimeter. Kalau salah satu tes ini gagal, yang salah adalah matematikanya, bukan toleransinya.

Aplikasi mengaku kalau datanya terlalu pendek

Sebelum mencocokkan kurva, aplikasi memeriksa apakah datanya cukup panjang untuk memisahkan setiap pasangan siklus. Kalau tidak, aplikasi menolak dan menyebut dua siklus yang bertabrakan serta berapa hari data yang dibutuhkan. Setiap hasil juga melaporkan angka kestabilan, dan grafik selalu menampilkan selisih antara prediksi dan pengamatan, tempat cuaca dan gelombang badai terlihat. Interaksi utamanya memungkinkan Anda menggeser panjang data dari 15 hari sampai sekitar enam bulan dan melihat siklus-siklus mulai bisa dipisahkan.

Saya memilih sensor yang masih merekam

Satu stasiun pasang surut bisa melaporkan beberapa sensor, dan sensor dengan data paling lengkap justru bisa rusak. Satu sensor radar di Benoa diam di −0,281 m selama tujuh bulan, sementara alat ukur di sebelahnya mencatat pasang 2,3 m. Sensor lain di Semarang punya lonjakan 9 meter yang membuatnya tampak paling aktif. Aturan yang saya pakai akhirnya memilih sensor dengan rentang khas terbesar dan memperlakukan lonjakan sebagai celah data. Setiap kasus ini sekarang menjadi tes.

Hasil yang mengejutkan tetap disimpan sebagai tes

Kehilangan 70% data dalam potongan yang tersebar hampir tidak mengganggu hasil. Kehilangan 70% yang sama dalam satu blok merusaknya. Temuan itu saya simpan sebagai tes. Panel kestabilan mencocokkan setiap data dalam empat potongan terpisah, untuk menunjukkan apakah sebuah konstanta milik pelabuhannya atau hanya milik bulan-bulan itu. Di Benoa, pasang bulan utama bergeser 9% antar-potongan dan pasang matahari utama bergeser 56%.

Data hanya dirilis kalau lisensinya jelas

Sebuah pemeriksaan berjalan sebelum setiap build dan menggagalkannya kalau ada sumber data yang lisensinya belum jelas. Dua dari tiga sumber yang sudah saya sambungkan, UHSLC dan BIG, dirilis dalam keadaan mati, karena ketentuan atribusi untuk stasiun Indonesia tidak pernah terkonfirmasi.

Hasilnya

Tide Analysis sudah live dalam bahasa Indonesia dan Inggris, dan berjalan sepenuhnya di browser tanpa server. Aplikasi ini memuat delapan pelabuhan Indonesia dari jaringan muka laut IOC, masing-masing berupa rekaman per jam selama 212 hari, dari 1 Januari sampai 1 Agustus 2026. Kedelapannya mencakup keempat tipe pasang surut, masing-masing diklasifikasikan dari hasil hitung stasiun itu sendiri. Anda bisa membandingkan metode modern dengan metode Admiralty klasik, dan menyalakan atau mematikan siklus untuk melihat ritme pasang purnama dan perbani dua mingguan muncul. Satu contoh lengkap menelusuri satu konstanta dari stempel waktu sampai hasil akhirnya. Saya membangunnya dalam tiga hari, 12 sampai 14 Agustus 2026.

Di balik layarDetail teknis untuk engineer
  • lib/astro berisi kalkulator argumen Doodson dan koreksi nodal; lib/tide berisi least-squares fit, prediksi, dan metode Admiralty. Fungsi biasa di atas typed array, tanpa React, DOM, jam, atau jaringan.
  • Kriteria Rayleigh menjadi gerbang setiap fit. Penolakan berbentuk terstruktur dan diuji dua arah. K1/P1 dan S2/K2 butuh sekitar 183 hari; 15 hari memisahkan enam dari sepuluh konstituen standar dan 29 hari memisahkan delapan.
  • Setiap solve mengembalikan condition number (κ) di tipe hasilnya. Korelasi konstituen, leakage di frekuensi yang ditolak, dan coverage mask dilaporkan bersamanya.
  • Aturan sensor: robust scale terbesar, dengan lonjakan dibuang menjadi celah yang dideklarasikan. Dua stack overflow pada input seukuran data nyata diperbaiki setelah tes sintetis lolos.
  • records:validate mencocokkan setiap sumber dengan manifest lisensi sebelum build. IOC, UHSLC, dan BIG masing-masing punya adapter ke satu bentuk Record internal. UHSLC awalnya direncanakan aktif, tetapi data Indonesianya diatribusikan lewat BIG.
  • Penjelajah konstituen menjumlahkan ulang konstanta yang sudah di-fit dan tidak melakukan fit ulang. Fit ulang langsung akan membuat M2 menyerap tetangganya dan menyembunyikan beat pasang purnama-perbani antara M2 dan S2.
  • Nilai ± setiap konstanta adalah satu standard error dengan asumsi derau per jam yang independen, padahal residu pasang surut melanggarnya. Di Benoa, ± untuk S2 sekitar 1% sementara pergeserannya antar-potongan 56%. M4 bergeser 81%.
  • Tipe pasang surut memakai rasio Formzahl, dari 0,204 di Sabang sampai 3,486 di Kolinamil, pelabuhan Jakarta. Kolinamil kehilangan 740 jam data dan hanya mencakup 202,5 dari 212 hari, tetapi celahnya tersebar sehingga fit-nya tetap bersih. Grafiknya SVG buatan sendiri, tanpa library grafik, aljabar linear, atau pasang surut. Dua dependensi runtime (Next.js, React).
  • Static export ke GitHub Pages, dengan gerbang tes dan pemeriksaan lisensi. 377 tes di 24 berkas. Sekitar 12.500 baris TypeScript, 88 commit.

Tangkapan layar

Beranda
Tidal Character
Record
Tide Chart
Method

Sedang merekrut, atau membangun hal serupa?

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