1 poin oleh GN⁺ 2025-06-29 | 1 komentar | Bagikan ke WhatsApp
  • Di Inggris, proses pengajuan paspor dipandang seperti game puzzle, dan pengalaman memformalkan proses pengajuan yang rumit ini dengan pemrograman menggunakan Haskell dibahas di sini
  • Pengajuan paspor online menjadikan pengumpulan dokumen yang beragam, penafsiran aturan yang rumit, dan sub-quest tak terduga sebagai elemen kesenangan utamanya
  • Dengan mengaitkan logika proses pengajuan ke 'Constructive Logic', ditekankan bahwa dokumen asli yang mendukung tiap pembuktian itu wajib ada
  • Dengan memanfaatkan monad LogicT dan manajemen state (State) di Haskell, penulis melacak daftar dokumen yang diperlukan dan jalur logis pembuktian kewarganegaraan Inggris
  • HMPO pada praktiknya cenderung lebih dulu meminta jalur pembuktian yang paling rumit, dan adopsi alat otomatis masih lambat karena keterbatasan dalam menafsirkan hukum yang kompleks

Pendahuluan: Pengajuan paspor sebagai permainan

  • Belakangan ini tren menyelesaikan game online atau puzzle dengan pemrograman makin meningkat, dan Passport Application di Inggris juga dibahas dengan pendekatan seperti ini
  • Passport Application adalah semacam "game petualangan puzzle pengumpulan dokumen" yang dimainkan warga Inggris tiap 10 tahun, dengan biaya sekitar £100 dan desain berbasis teks yang sangat minimalis
  • Tujuan game ini adalah mengumpulkan berbagai dokumen pendukung (artefacts) melalui sejumlah instansi pemerintah untuk membuktikan bahwa "pemohon ini adalah warga Inggris" menurut kriteria hukum yang kompleks
  • Hadiah dari game ini adalah sebuah buku paspor dan "tanggal saat permainan berikutnya bisa dimulai"

Struktur dan tingkat kesulitan permainan

  • Versi offline berbasis kertas dijalankan melalui pos tercatat dan prosedur verifikasi, dan dokumen yang harus dikumpulkan di tiap tahap dijelaskan dalam bentuk panduan atau tabel
  • Prosedur awal relatif mudah, tetapi seiring permainan berjalan, berbagai "side quest" dan rintangan mulai muncul
    • Contoh: meminta verifikasi identitas dari kenalan dengan profesi tertentu, memperoleh terjemahan tersertifikasi untuk dokumen berbahasa asing, kerja sama keluarga, serta menjelajahi prosedur administratif unik di tiap instansi

Pengalaman: menantang tingkat kesulitan 'anak pertama yang lahir di luar negeri'

  • Penulis, mewakili dirinya, mencoba tingkat kesulitan 'anak pertama yang lahir di luar negeri' untuk putri kecilnya, dan karena sudah punya banyak pengalaman sebelumnya, ia memperkirakan tingkat kesulitannya akan cukup tinggi
  • Belakangan diketahui bahwa setengah dari permintaan dokumen awal sebenarnya tidak perlu, dan persyaratan serta penjelasan dokumen dirancang dengan sangat ambigu dan membingungkan
  • Examiner yang menangani tidak bisa dihubungi langsung, dan bantuan tidak resmi hanya bisa diperoleh melalui agen perantara layanan konsultasi
  • Permintaan dokumen terus muncul berulang kali, kadang bahkan meminta dokumen yang tidak ada, termasuk permintaan akta kelahiran/akta nikah leluhur keluarga yang langka, sehingga tingkat kesulitannya makin meningkat

Logika HMPO: Bureaucratic Logic

  • Logika pengajuan paspor dapat dipandang sebagai Bureaucratic Logic (logika birokratis) yang diturunkan dari Constructive Logic
  • Alih-alih pembuktian sederhana "benar/salah", pemohon harus langsung menyerahkan bukti dokumen asli yang sesuai untuk tiap aturan
  • Karena Excluded Middle tidak diizinkan, tidak mungkin membuktikan dengan cara "salah satu dari skenario ini pasti benar"; pemohon harus mengikuti satu jalur tertentu dan menyerahkan dokumennya
  • Khususnya, "Britishness" bergantung pada kewarganegaraan orang tua, sehingga permintaan dokumen berjalan secara rekursif dalam bentuk pohon keluarga
    • Base case: lahir di Inggris sebelum 1983, naturalisasi, dan kasus lain yang tidak memerlukan bukti dari orang tua

Memodelkan aturan dengan kode Haskell

  • Untuk memodularisasi aturan dan mengotomatisasi penalaran, logika pengajuan diprototipekan dengan Haskell (khususnya memanfaatkan monad LogicT)
  • Dengan mendeklarasikan type seperti Person/Document/Proof, berbagai jalur dokumen pembuktian untuk tiap kondisi dimodelkan
  • Fungsi pembuktian Britishness menelusuri berbagai jalur pembuktian yang mungkin (Set of Proofs) bersama input (informasi untuk tiap person)
  • Dengan mengikuti pohon Proof, sistem menghasilkan kombinasi dokumen minimum yang diperlukan (Set of Set Document)
  • Kombinasi StateT dan LogicT IO dipakai untuk kueri interaktif dan berbagi state, serta melakukan branching & backtracking sesuai "informasi yang sudah diketahui"
  • Logika analisis struktur kewarganegaraan Inggris:
    • Jalur tunggal untuk bukti naturalisasi
    • Jalur (base) bersyarat untuk kelahiran di Inggris sebelum 1983
    • Pembuktian rekursif melalui orang tua (termasuk syarat tambahan seperti pernikahan yang sah)
    • Penambahan jalur pengecualian berdasarkan apakah orang tua berstatus BOTBD (British Otherwise Than By Descent)
    • Aturan pengecualian seperti Crown Service juga ditangani dalam kode

Contoh eksekusi dan jalur pembuktian

  • Melalui ghci, berdasarkan input nyata (tempat lahir pemohon, kewarganegaraan orang tua, dll.), sistem secara otomatis menurunkan total 3 jalur pembuktian (Proof)
  • Untuk tiap jalur pembuktian, dihasilkan daftar dokumen yang diminta (kombinasi sertifikat, akta nikah, dan lain-lain)
  • Pada jalur paling rumit, dipastikan bahwa pembuktian rekursif hingga leluhur dan pembuktian hubungan pernikahan diperlukan

Diskusi dan kesimpulan

  • Dalam praktiknya, HMPO tampak sengaja lebih dulu meminta jalur pembuktian yang paling rumit, sementara kontradiksi hukum nyata atau aturan kecil biasanya mengikuti panduan terpisah atau prinsip "balance of probabilities"
  • Jika alat otomatis semacam ini tersebar luas, pemohon akan jauh lebih mudah memahami jalur pembuktian dan dokumen yang mereka perlukan
  • Namun, karena hukumnya sangat subtil dan mudah berubah, otomatisasi sederhana dengan "komputer memberi verdict yes/no" tetap berisiko
  • Penulis saat ini sedang mencoba pembuktian melalui jalur kedua dan ketiga

Ringkasan kode referensi dan struktur dokumen

  • Seluruh kode Haskell dapat dilihat di GitHub
  • Implementasi detail logika Haskell seperti berbagai type, jalur pembuktian, struktur modul, dan fungsi kueri dapat diperiksa di sana

1 komentar

 
GN⁺ 2025-06-29
Opini Hacker News
  • Cerita dari pengalaman bekerja selama 10 tahun terakhir di berbagai sistem besar pemerintah Inggris. Dijelaskan bahwa mengembangkan perangkat lunak pemerintah Inggris adalah proses mengodekan ratusan tahun undang-undang parlemen. Ada kesulitan seperti pada sistem paspor HMPO: ketika hukum berubah, harus dicari dan diperbaiki semua bagian di tiap sistem yang terdampak oleh hukum tersebut. Pemerintah menyerahkan pekerjaan ini ke perusahaan konsultan mahal, yang termotivasi untuk memperpanjang kontrak selama mungkin dan memaksimalkan keuntungan dari klien. Dalam prosesnya, kualitas dan fleksibilitas sistem menjadi sangat bervariasi, dan ketika hukum berubah lagi, prosedur rumit ini terulang kembali. Layanan pemerintah jadi mahal karena kurangnya lembaga yang bisa mengambil keputusan secara terpusat untuk mengoordinasikan masalah ini.
    • Ada pertanyaan apakah outsourcing pemerintah pernah benar-benar berhasil untuk seseorang; belum pernah mendengar cerita pemerintah menyerahkan sesuatu ke pihak ketiga lalu sukses.
    • Ada pertanyaan mengapa vendor outsourcing tampaknya tidak memiliki kewajiban kontraktual untuk menghadirkan ‘sistem yang berfungsi’. Muncul rasa penasaran terhadap fenomena penagihan berlebihan untuk sistem yang kelihatannya bagus tetapi sebenarnya tidak berfungsi dengan semestinya.
    • Berbagi pengalaman baru-baru ini memperbarui paspor di Prancis. Ada platform baru untuk semua dokumen: cukup mengisi satu formulir online, lalu hanya perlu satu kunjungan offline. Selesai dalam 10 menit, dan paspor juga dikirim dengan cepat. Inggris belum sampai tahap putus asa, dan ada pandangan bahwa mereka seharusnya mempekerjakan developer sungguhan sebagai pegawai tetap lalu mengerjakan pengembangan secara internal.
  • Ini mengingatkan pada kasus otomatisasi dan pengodean hukum pajak Belanda menggunakan DSL. Sebagai materi terkait, direkomendasikan presentasi kasus DSL Jetbrains.
  • Dalam penjelasan struktur penentuan kewarganegaraan, diperkenalkan contoh ‘base case’: orang yang lahir di Inggris sebelum 1983 berhak menjadi warga negara tanpa memandang orang tuanya. Saya berasal dari negara tempat kewarganegaraan bisa selesai hanya dengan satu SELECT di tabel SQL, jadi struktur seperti ini sulit dipercaya.
  • Menanggapi penilaian bahwa sintaks Haskell itu intuitif, ada pendapat bahwa ia memang terasa intuitif setelah dijelaskan oleh seseorang, tetapi sebelum itu tidak intuitif. Haskell punya terlalu banyak operator, dan bahkan saat melihat kodenya, sulit langsung menangkap maknanya; dibagikan tautan ke tutorial operator Haskell sebagai contoh.
    • Ada klaim bahwa setelah menghitung secara kasar jumlah operator yang benar-benar dipakai di Haskell, hasilnya hampir mirip dengan JavaScript atau sekitar dua kali lipat. Haskell memang punya hambatan awal, tetapi bahasa yang pertama dipelajari seperti Java atau Python juga cukup kompleks; hanya terasa mudah setelah dipelajari dan dibiasakan. Bahkan sintaks dasar Python seperti : dan = juga bisa membingungkan bagi pemula, jadi intuisi adalah hasil dari kebiasaan.
    • Ada diskusi bahwa jika sesuatu menjadi intuitif setelah dijelaskan seseorang, itu pada akhirnya cukup dekat dengan makna intuitif itu sendiri.
    • Disebutkan bahwa Larry Wall pernah mengatakan hal serupa tentang Perl. Kenyataannya, masalah utamanya bukan sintaks, melainkan sulit memahami Haskell tanpa mengenal konsep-konsep khasnya seperti monad, lens, dan sebagainya, meskipun sintaksnya sederhana.
    • Ada catatan bahwa sebagian besar operator di tautan tersebut adalah hal yang biasa bagi pemula pemrograman. Sama saja seperti melihat program Java atau rumus matematika tanpa konteks, tentu tidak langsung dimengerti. Ukurannya seharusnya adalah seberapa jauh seseorang bisa memahami setelah mempelajari pengetahuan dasar dan mencoba beberapa tutorial.
  • Konten ini awalnya terasa seperti parodi, tetapi lama-kelamaan berkembang menjadi solusi yang serius dan elegan. Di bagian akhir, saya jadi ingin benar-benar memainkan “game” ini sendiri.
    • Ada komentar bahwa game ini memang bisa dimainkan, tetapi bagian ending di paruh akhir jauh lebih sulit.
  • Berbagi pengalaman benar-benar mengajukan dokumen terkait paspor Inggris di Jepang. Dokumen yang harus diserahkan bisa berbeda tergantung situasi, dan saya harus menyiapkan banyak dokumen seperti akta kelahiran saya dan anak saya, koseki keluarga Jepang asli, terjemahan, sertifikat penerimaan laporan kelahiran, dan lain-lain. Setiap halaman harus difotokopi berwarna, bahkan salinan paspor orang lain juga diminta. Prosedurnya sangat tidak jelas, dan pada akhirnya strukturnya seperti terus menyerahkan dokumen sampai permintaan mereka dianggap terpenuhi.
    • Dijelaskan bahwa ayah penulis komentar lahir di Inggris, tetapi kakeknya lahir di luar negeri, sehingga situasinya menjadi lebih rumit.
    • Disebutkan bahwa di Jepang tidak diminta akta kelahiran orang tua. Saya berkewarganegaraan Hungaria dan Inggris serta tinggal di Hungaria, tetapi diminta akta kelahiran kedua orang tua dan keempat kakek-nenek. Karena hubungan istri saya dengan kerabatnya renggang, kami melampirkan surat penjelasan dan itu diterima. Meskipun dalam kewarganegaraan saya asal-usul atau kewarganegaraan pihak ibu praktis tidak penting, saya tetap pernah meminta teman keluarga yang berprofesi sebagai pengacara untuk memverifikasi hal ini secara online.
    • Ada yang penasaran mengapa semua halaman paspor Jepang anak itu harus diserahkan dalam bentuk fotokopi berwarna.
  • Pengajuan paspor Inggris bisa dilakukan sepenuhnya secara online, dan pengajuan baru untuk warga baru (adopsi, naturalisasi, garis keturunan) juga bisa dilakukan hanya dengan perangkat mobile, termasuk memotret tanpa aplikasi terpisah. Menurut pengalaman saya, prosesnya efisien, cepat, dan intuitif.
    • Ada penilaian bahwa sistem perpanjangan paspor online yang baru dipakai baru-baru ini adalah salah satu situs terbaik yang pernah ditemui selama bertahun-tahun. Berfungsi sempurna bahkan di komputer lama dan browser lawas, UI-nya sangat sederhana dan mudah diakses siapa saja, dengan navigasi langkah demi langkah yang ramah. Ada harapan desain seperti ini lebih luas diterapkan di bidang bisnis juga; pujian untuk HMPO.
    • Ada yang baru pertama kali memakai sistem online ini dan menerima paspor dengan sangat cepat hanya dalam 2 minggu, bahkan dari California, AS. Pengalaman memperpanjang paspor Kanada memakan waktu 4 bulan, dengan prosedur rumit dan dokumen yang merepotkan. Ada harapan pilot perpanjangan digital berbasis smartphone diperluas penerapannya.
  • Saat menyiapkan paspor putri saya di Jepang, saya mengalami kesulitan besar karena masalah seperti ketidakcocokan nama keluarga orang tua pada akta kelahiran. Akhirnya saya meyakinkan mereka bahwa karena saya lahir di Inggris dan memiliki kewarganegaraan (paspor), anak kandung saya juga bisa mewarisinya. Ini memang tidak sesuai dengan dokumen standar yang diminta, tetapi katanya tetap termasuk kasus yang tidak terlalu menyulitkan.
  • Cerita pengalaman menjalani game ‘passport application’ secara tidak langsung. Aturan ‘mutable history’ terasa menarik: fakta pada dokumen tertentu bisa berubah bahkan dalam waktu singkat, sehingga dokumen yang sudah dipindai pun kadang harus diajukan dan dipindai ulang. Ada candaan bahwa proses ini bisa dianggap sebagai pengakuan implisit para penilai terhadap parallel universe (multiverse). Komunikasi dengan petugas layanan dan staf operasional yang berperan seperti “NPC” terasa seperti doa satu arah, sulit benar-benar tersampaikan. Ada dugaan OP adalah penggemar game Mornington Crescent, karena aturan-aturannya mirip dengan pengajuan paspor.
    • Dalam sistem Inggris, nama bisa diubah dengan bebas, sehingga ibu saya pun bisa mendaftarkan kelahiran saya dengan nama keluarga dari pernikahan ketiganya. Akta kelahiran juga tidak sepenuhnya tak berubah karena hanya sebagian kolom yang benar-benar tetap. Kantor paspor kadang juga melupakan riwayat sebelumnya, jadi ketidaksesuaian nama keluarga di paspor saya pernah dipermasalahkan lagi meskipun sebelumnya sudah dijelaskan. Setiap kali menelepon, mengirim email, atau menghubungi petugas (“NPC”), saya selalu mendapat jawaban yang berbeda-beda. Tidak konsisten seperti GPT. Bahkan dengan dokumen yang sama, satu anak perempuan diminta dokumen tambahan, sementara yang lain mendapat paspor tanpa masalah. Akhirnya ibu saya mengadukannya ke anggota parlemen dan masalah selesai dalam sehari.
  • Berbagi pengalaman pernah memainkan ‘game’ passport application beberapa tahun lalu. Saya lahir di Inggris, punya ayah orang Inggris, tetapi karena orang tua saya tidak menikah dan saya lahir setelah 1983 namun sebelum perubahan aturan 2006, pada awalnya saya bukan warga negara. Sekitar tahun 2010-an, hukum 2006 diberlakukan surut sehingga saya diakui sebagai warga negara. “Quest” utama adalah menyerahkan akta kelahiran asli ayah saya, dan di bagian akhir ada keanehan karena saya sampai diwajibkan menghadiri upacara sumpah setia kepada Ratu.
    • Setidaknya dapat ending credits, begitu candanya.