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

Bentuk Kota

Atlas yang mengukur 33 lingkungan Indonesia dua kali, dengan mobil dan jalan kaki, untuk memperlihatkan celah metrik mobil

Tangkapan layar
lokasi, diukur dengan mobil dan jalan kaki
33
lokasi ditandai karena cakupan gang tipis
9
calon lokasi ditolak, disertai alasannya
22
panggilan jaringan saat runtime
0
Di halaman ini

Masalahnya

Peneliti yang membandingkan pola jalan kota umumnya memakai satu ukuran: entropi orientasi dari makalah Geoff Boeing tahun 2019. Ukuran ini dihitung dari jaringan jalan untuk kendaraan. Di Indonesia, cara itu melewatkan sebagian besar cara orang bergerak. Kampung dijalin gang, lorong sempit untuk pejalan kaki yang tidak pernah muncul di peta mobil. Perumahan berpagar mudah dimasuki mobil, tetapi pintunya cuma satu atau dua dan jalan buntunya di mana-mana. Kalau diukur dengan mobil saja, keduanya keluar salah, dengan arah yang berlawanan.

Saya membuat Bentuk Kota untuk perencana kota, pemeta OpenStreetMap, dan pembaca yang penasaran dengan kota-kota Indonesia. Aplikasi ini mengukur lingkaran yang sama di lingkungan yang sama dua kali: sekali sebagai jaringan kendaraan, sekali sebagai jaringan pejalan kaki. Keduanya lalu disandingkan. Selisih di antara keduanya itulah temuannya.

Kampung dan perumahan membawa nuansa kelas sosial di Indonesia. Karena itu saya menetapkan satu aturan untuk seluruh produk: aplikasi ini menggambarkan, tidak pernah menilai. Tidak ada peringkat, nilai kelayakan jalan kaki, atau indeks layak huni di mana pun.

Yang saya bangun

Matematika jalannya saya tulis sendiri

Pengukurannya adalah inti proyek ini, jadi saya tidak memakai pustaka graf, grafik, atau peta. Membangun jaringan, membaca arah jalan, dan menghitung entropi, rasio jalan memutar, serta jumlah simpang semuanya kode saya sendiri. Saya menulisnya langsung dari makalahnya, lengkap dengan rujukan bagiannya. Kode pengukurnya hanya menerima angka dan mengembalikan angka, sehingga kode yang sama jalan di pipeline data dan di tes.

Tes memakai jalan yang jawabannya sudah diketahui

Tidak ada yang tahu entropi Bendungan Hilir yang sebenarnya, jadi tesnya tidak berpura-pura tahu. Tes membangun jaringan yang jawabannya sudah pasti: kisi sempurna, kisi yang sama diputar 29°, jaringan acak, dan pohon murni. Lalu tes memastikan angka hasil ukurnya kembali benar. Setiap grafik, buatan maupun nyata, juga harus lolos cek matematika dasar, misalnya tetap sama saat diputar 180°.

Asumsi terbesar jadi sakelar yang bisa diubah pembaca

Tag OpenStreetMap mana yang dihitung sebagai jalan kendaraan atau jalan kaki mengubah setiap angka di situs. Saya menaruh pilihan itu di satu tempat yang terdokumentasi dan menampilkannya di halaman asumsi, sebagai sakelar antara tiga pemetaan. Pembaca bisa melihat seberapa besar setiap kesimpulan bergantung padanya.

Lokasi dipilih dengan mengukur cakupan peta

Rencana awal saya adalah daftar pilihan tangan. Dua putaran tebakan hanya menghasilkan 10 lokasi yang layak dari 49 tebakan, dan yang gagal pun tidak membuktikan apa-apa. Jadi saya menulis penyisir untuk 56 kota yang mengurutkan calon area berdasarkan seberapa banyak jalan setapak yang benar tercatat di peta. Penyisir ini menemukan 14 dari 33 lokasi akhir, termasuk lokasi pertama di Papua, Lombok, dan Kalimantan.

Aturan untuk cakupan yang menyesatkan

Jalan setapak di peta tidak bisa membedakan gang dari jalur taman. Calon terbaik di Bogor, dengan cakupan 40,9%, ternyata kebun raya. Calon terbaik di Jakarta 78% berada di dalam satu taman. Pelajaran itu saya jadikan aturan. Saya juga menambah cek bahwa hasil survei harus menebak hasil pipeline dengan selisih paling banyak satu poin persen. Cek ini menangkap dua lokasi yang dimasukkan dengan koordinat lama.

Hasilnya

Bentuk Kota sudah live dan terbuka untuk umum, dalam bahasa Indonesia dan Inggris. Situs ini memuat 33 lokasi, masing-masing diukur sebagai dua jaringan dengan tiga pemetaan tag, dipilih dari 126 calon titik yang disurvei di 56 kota; 22 dari calon itu ditolak dan tetap dipublikasikan, lengkap dengan alasannya, bukan dihapus. Setiap lokasi menunjukkan seberapa lengkap gangnya terpetakan, dan 9 dari 33 lokasi ditandai karena cakupannya tipis, supaya data peta yang hilang tidak memalsukan temuan.

Batasan itu ikut menyentuh perbandingan utamanya. Semua calon perumahan berpagar datanya tipis, dengan cakupan 0,9–4,4%, sehingga perbandingan kampung dan perumahan bertumpu pada dua dari tiga lokasi perumahan yang terbaca. Halamannya menyebut angka itu. Situs tidak memanggil jaringan sama sekali setelah dimuat. Saya membangun versi pertamanya dalam delapan hari pada Agustus 2026, lalu terus mengerjakannya sampai akhir September.

Di balik layarDetail teknis untuk engineer
  • Metode: entropi orientasi Boeing (2019) pada histogram arah 36 bin ("mawar"), indikator keteraturan orientasi φ, sampel circuity, statistik derajat simpul, dan cakupan footway. Penerapan ganda kendaraan/jalan kaki adalah gagasan saya.
  • Inti pengukuran di lib/morphology/ (1.029 baris) berupa TypeScript murni: tanpa DOM, tanpa React, tanpa jam, tanpa jaringan.
  • Tes sintetis: kisi sempurna, kisi diputar 29°, graf acak, pohon murni. Invarian dicek di setiap histogram: simetri 180°, circuity ≥ 1, proporsi derajat berjumlah 1.
  • Pemetaan tag OSM ada di satu modul dengan 3 pilihan yang bisa diganti; sensitivitasnya dilaporkan di /asumsi. Metode, batasan, dan atribusi ODbL ada di /metode.
  • Aturan cakupan: porsi taman di atas 25% tidak dihitung sebagai kawasan kota; landuse=grass diambil lalu diabaikan karena pemeta memakainya untuk jalur hijau di tepi jalan.
  • Data diambil lewat kueri Overpass yang terarah saat build, di-cache dan diberi jeda. PRD awalnya memakai PBF Geofabrik Indonesia (~1 GB); 33 lingkaran berjari-jari satu kilometer hanya beberapa megabyte, dan membaca PBF berarti menambah dependensi protobuf untuk data yang dipakai sekali.
  • Static export Next.js 14 di GitHub Pages. Empat dependensi runtime (Next.js, React, React DOM, Zod). Kartu, pengurutan, mode kepadatan, dan sorotan antarkartu dirender di server sebagai HTML dan CSS dengan state di URL; satu-satunya komponen klien adalah helper kecil untuk navigasi.
  • Halaman lempeng berukuran ~4,7 MB HTML, ~59% di antaranya flight payload App Router. Tanda penggaris dipangkas dari 165 menjadi 66 byte; sisanya adalah tabel data tersembunyi untuk pembaca layar.
  • Rasio kontras dan skala huruf dihitung ulang oleh unit test dari nilai hex-nya (palette.test.ts, type-scale.test.ts). Satu tes khusus menjaga agar penggaris distribusi tidak terbaca sebagai peringkat.
  • 585 tes di 16 file. Suite sintetis, invarian, dan validasi data, ditambah audit aksesibilitas, menjadi gerbang setiap deploy.
  • Dwibahasa (id/en), bisa dipasang sebagai PWA, semua milestone M0–M6 selesai.
  • Sekitar 13.840 baris TypeScript, 101 commit antara 20 Agustus dan 27 September 2026.

Tangkapan layar

Beranda
Lokasi
Asumsi
Metode

Sedang merekrut, atau membangun hal serupa?

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