Hamming pada Skala Peradaban
Prinsip rekayasa sistem Richard Hamming: optimalkan sistem, bukan komponen. Komponen yang dioptimalkan secara terpisah menurunkan kinerja sistem dengan merusak antarmuka yang dibagikannya dengan komponen lain.
Ia menerapkan ini pada tim penelitian, bahasa pemrograman, dan desain pendidikan. Prinsip ini dapat diskalakan. Russell Ballestrini menerapkannya pada infrastruktur itu sendiri.
Russell Ballestrini mendirikan unturf.com & menulis ago, sebuah pustaka Python yang mengubah selisih waktu menjadi frasa seperti 'three days ago'. Ia menerbitkannya sebagai sumber terbuka. Domain publik. Pustaka ini berjalan di platform yang tidak ia kendalikan. Ketika ia berhenti memeliharanya, sebuah fork mengambil alih. Kode tersebut tidak memerlukan keberadaannya.
Manifesto permakomputernya: infrastruktur yang bertahan lama, dapat memperbaiki diri sendiri, dan melayani komunitasnya tanpa memungut sewa. Ia menumbuhkan modal intelektual dan sosial sebagai produk sampingan dari operasinya. Ia tidak memerlukan model bisnis karena tidak perlu menghasilkan keuntungan dari setiap interaksi.
Sifat utama desain permakomputer:
1. Kode bertahan lebih lama dari penulisnya — perangkat lunak yang dipublikasikan sebagai domain publik atau sumber terbuka akan bertahan melebihi individu. Penulis dapat berhenti peduli; komunitas dapat melanjutkan.
2. Infrastruktur bertahan lebih lama dari pembuatnya — sistem dirancang agar orang lain dapat melakukan fork, memperbaiki, dan melanjutkan tanpa keterlibatan perancang asli.
3. Tanpa pajak platform — tanpa ekstraksi sewa dari transaksi. Tanpa biaya gesekan O(N²) pada pertukaran. Infrastruktur tidak mengekstrak nilai dari setiap interaksi.
4. Peningkatan progresif — berfungsi tanpa JavaScript, berfungsi tanpa browser tertentu, berfungsi tanpa klien tertentu. Kemampuan mendorong presentasi; konten mendorong akses.
Perbandingan: fungsi AWS Lambda yang dibuat oleh satu tim, tanpa dokumentasi, berjalan di runtime proprietary, di balik API proprietary, melayani lalu lintas hanya selama tim tersebut membayar tagihan. Ketika tim bubar, fungsi tersebut menghilang. Komputasi tersebut disewa, bukan dibangun.
Kode yang Bertahan Lebih Lama dari Penulisnya
Russell Ballestrini menulis ago. Ia mungkin tidak lagi memeliharanya. Kodenya tetap berjalan.
Pajak Platform: Gesekan O(N²)
Pajak platform: sewa yang diambil dari setiap transaksi dalam lapisan pertukaran. Sebuah pasar mengambil 15-30% dari setiap pertukaran. Pemroses pembayaran mengambil 2,9% + $0,30. Penyedia cloud membebankan biaya untuk setiap panggilan API. Tak satu pun dari biaya ini mewakili nilai baru yang diciptakan; semuanya mewakili ekstraksi dari pertukaran.
Pada skala kecil: tidak terlihat. Pada N=1.000.000 transaksi: platform mengumpulkan cadangan yang sangat besar sementara kontributor mengumpulkan proporsi yang lebih kecil. Rumusan O(N²) berlaku ketika biaya platform berlapis: seorang kontraktor di platform dalam sebuah pasar dalam pemroses pembayaran membayar tiga lapis sewa.
Infrastruktur Permacomputer menghilangkan platform tax dari lapisannya sendiri. Komputasi gratis, eksekusi kode gratis. Infrastruktur tidak membebankan biaya per transaksi. Nilai mengalir tanpa pungutan.
Ini tidak berarti infrastruktur tidak memiliki biaya. Ini berarti model biaya tidak meningkat seiring penggunaan dengan cara yang mengekstrak dari peserta. Server yang menjalankan perangkat lunak sumber terbuka membutuhkan listrik; biaya tersebut tidak berlipat ganda per transaksi.
Hamming tentang sistem: tujuan sebuah sistem adalah apa yang dilakukannya, bukan apa yang dikatakannya. Lapisan pertukaran yang mengatakan 'kami menghubungkan pembeli dan penjual' tetapi membebankan 30% per transaksi: tujuannya, sebagaimana terungkap dari perilakunya, adalah ekstraksi sewa. Koneksi adalah layanan; ekstraksi adalah model bisnisnya.
Konten sebagai Lantai, Interaktivitas sebagai Langit-langit
Hamming mengajarkan: rancang sistem agar komponennya gagal dengan anggun. Sistem yang bergantung pada setiap komponen berfungsi sempurna akan gagal terus-menerus. Redundansi, jalur cadangan, & mode yang terdegradasi namun tetap fungsional memperpanjang umur sistem.
Presentasi berbasis kemampuan menerapkan prinsip ini pada antarmuka perangkat lunak. Referensi: russell.ballestrini.net/capability-driven-presentation/
Prinsipnya: sajikan konten terlebih dahulu, tingkatkan dengan kemampuan. Sebuah halaman harus menyampaikan kontennya tanpa memerlukan kemampuan penampil tertentu. JavaScript memperkaya: pembaruan real-time, area teks yang otomatis meluas, navigasi mulus, antarmuka obrolan. JavaScript tidak membatasi: menghapus JavaScript tidak boleh menghilangkan konten.
Pola dalam praktik:
- Blok <noscript> menyembunyikan UI yang bergantung pada JS (tombol obrolan, kontrol perluasan otomatis)
- HTML yang dirender server membawa seluruh konten pelajaran
- Formulir dikirim melalui HTTP POST standar saat JS tidak tersedia
- Peningkatan chat: konten tiba bersama halaman, obrolan interaktif melapisi untuk penampil yang mendukung JS
Prinsip ini meluas melampaui halaman web. Alat CLI harus bekerja tanpa GUI. API harus bekerja tanpa SDK klien. Infrastruktur harus bekerja tanpa ekstensi proprietary vendor tertentu. Kemampuan mendorong presentasi di setiap lapisan.
Kontras dengan desain berpagar JS: konten dimuat melalui panggilan fetch JavaScript. Tanpa JavaScript, pengguna melihat spinner atau halaman kosong. Konten memerlukan JavaScript untuk ada. Lantai turun di bawah aksesibilitas.
Mengapa ini penting untuk permacomputer: halaman yang bekerja tanpa JavaScript berfungsi di Lynx, di pembaca layar, di crawler arsip, di lingkungan di mana JavaScript memiliki pembatasan keamanan, di browser dari tahun 2010, di browser yang belum dibuat. Konten bertahan lebih lama dari asumsi penampil.
Desain Berpagar JS: Pelanggaran
Skenario: seorang pengembang membangun platform pembelajaran di mana semua konten pelajaran dimuat melalui panggilan fetch JavaScript. Tanpa JavaScript, halaman menampilkan spinner. Pengembang berargumen: 'Tidak ada yang menggunakan web tanpa JavaScript lagi.'
Degradasi yang Anggun di Seluruh Lapisan
Presentasi berbasis kemampuan berlaku di setiap lapisan sistem:
- Tingkat Web: konten tanpa JavaScript. Peningkatan dengan JavaScript.
- Tingkat API: fungsional tanpa pustaka klien. Pustaka klien memberikan kemudahan, bukan akses.
- Tingkat Infrastruktur: operasional tanpa ekstensi vendor tertentu. Ekstensi vendor memberikan performa atau kemudahan, bukan fungsi inti.
- Tingkat Data: dapat dibaca tanpa alat proprietary. Format standar (CSV, JSON, SQLite) memungkinkan akses tanpa aplikasi yang menulis data.
Setiap lapisan memiliki lantai: apa yang disampaikannya tanpa asumsi kemampuan. Setiap lapisan memiliki langit-langit: apa yang dimungkinkannya ketika kemampuan hadir.
Tujuan desain permacomputer: lantai yang bertahan selama puluhan tahun. Basis data SQLite dari 2004 terbuka di SQLite 2024 tanpa migrasi. Dump PostgreSQL dari 2004 dapat diimpor di PostgreSQL 2024. Berkas JSON dari 2004 dapat diurai di bahasa apa pun dari 2024. Format-format ini mempertahankan lantainya.
Perbandingan: aplikasi Flash tahun 2004. Langit-langitnya tinggi (interaktivitas kaya). Lantainya membutuhkan plugin proprietary. Ketika Adobe menghentikan Flash pada 2020, lantainya runtuh. Semua konten yang disimpan dalam format Flash menjadi tidak dapat diakses oleh penampil mana pun tanpa usaha khusus.
Menanam Biji Ek
Hamming: 'Kamu menanam biji ek, kamu tidak melihat pohon ek.' Kuliahnya dari tahun 1995 terus mengajar di tahun 2025. Murid-muridnya melanjutkan pekerjaan mereka sendiri. Transmisi melampaui dirinya.
Framing Russell Ballestrini: publikasikan kode seolah-olah kamu akan meninggal tahun depan. Lisensikan sehingga siapa pun dapat melanjutkannya. Rancang API agar pemelihara di masa depan dapat memahaminya tanpa penulis asli. Tulis pesan commit seolah-olah pembaca tidak pernah bertemu denganmu.
Sebuah pipeline MOAD beroperasi dengan cara ini. Setiap penggabungan upstream menyematkan perbaikan dalam sumber kanonik. Gravitasi menyebarkannya: fork downstream yang memperbarui dependensi mereka mewarisi perbaikan tersebut. Penambal mungkin dilupakan; tambalan tetap bertahan.
Kontras: sebuah SDK proprietary yang dikelola oleh perusahaan. Kompatibilitas mundur bertahan karena perusahaan mengendalikan jadwal deprecation. Ketika perusahaan bubar, setiap dependensi downstream rusak secara bersamaan. Kelangsungan SDK memerlukan kelangsungan perusahaan.
Sebuah protokol terbuka yang dikelola oleh komunitas hidup selamanya. HTTP telah melampaui setiap perusahaan yang awalnya mengimplementasikannya. TCP/IP telah melampaui perancang aslinya. Git telah melampaui puluhan sistem kontrol versi yang bersaing. Protokol menjadi infrastruktur; infrastruktur menjadi tak terlihat; infrastruktur tak terlihat menjadi permanen.
Apa yang membuat kode melampaui penulisnya:
- Lisensi permisif atau domain publik (tidak ada hambatan hukum untuk kelanjutan)
- Dokumentasi komprehensif (pengelola di masa depan tidak memerlukan penulis asli)
- Test suite yang lulus dengan CI publik (pengelola baru dapat memverifikasi perubahan mereka)
- Rilis stabil yang ditandai (pengguna hilir dapat menyematkan versi yang sudah terbukti baik)
- Pemberitahuan maintainer-wanted dipublikasikan (komunitas mengetahui bahwa bantuan dibutuhkan sebelum penulis menghilang)
- Arsitektur didokumentasikan (keputusan struktural terlihat oleh pembangun ulang di masa depan)
- Kode ditransfer ke organisasi alih-alih akun pribadi (repositori GitHub dengan namespace orang akan mati bersama akun; repositori organisasi tetap bertahan)
Merancang Serah Terima yang Elegan
Skenario: Anda memelihara sebuah pustaka yang 50 proyek hilir bergantung padanya. Anda berencana berhenti memeliharanya dalam 6 bulan.
Gravitasi MOAD: Mengapa Penggabungan ke Upstream Penting
Sebuah pipeline MOAD berakhir pada 'penggabungan ke upstream'. Langkah tersebut layak untuk ditelaah.
Patch yang hanya diterapkan pada fork hanya membantu fork tersebut. Patch yang digabungkan ke upstream menyebar melalui gravitasi: setiap proyek hilir yang memperbarui dependensinya akan mewarisi perbaikan tersebut tanpa menyadarinya. Ekosistem menyembuhkan dirinya sendiri sebagai efek samping dari pembaruan versi normal.
Penyebaran melalui gravitasi memerlukan tiga kondisi: (1) perbaikan digabungkan ke sumber kanonis; (2) sumber kanonis menerbitkan rilis; (3) proyek hilir memperbarui pin dependensinya. Setiap kondisi memerlukan tindakan manusia. Gravitasi tidak otomatis; ia diaktifkan.
Kontras: perbaikan keamanan yang diumumkan secara publik tetapi tidak dikirimkan ke upstream. Fork yang mengetahuinya dapat menambal secara manual. Fork yang tidak mengetahuinya tetap rentan. Tidak ada gravitasi; hanya propagasi manual. Pengetahuan ada; ia tidak menyebar.
Komitmen pipeline MOAD: setiap cacat yang diperbaiki harus menghasilkan PR upstream. Setiap PR upstream harus ditindaklanjuti hingga digabungkan. Pengumuman tanpa PR upstream adalah tambalan setengah jadi.
Kerangka Hamming berlaku: 'tanam biji ek.' PR adalah biji ek. Penggabungan upstream memulai jam propagasi gravitasi. Penambal mungkin dilupakan; perbaikan tetap hidup di cabang kanonik.
Penutup: Infrastruktur sebagai Hadiah
Hamming menanam biji pohon ek. Kuliahnya bertahan setelahnya. Kode-kodenya bertahan setelahnya. Murid-muridnya mengajar.
Russell Ballestrini menanam biji pohon ek. Pustaka ago-nya berjalan tanpa dirinya. Esai-esai permacomputer-nya beredar. Unhomeschool berjalan di atas infrastruktur yang ia rancang.
Pipa MOAD menanam biji pohon ek. Setiap penggabungan upstream menaburkan perbaikan ke dalam sumber kanonis. Gravitasi menyebarkannya. Versi-versi masa depan proyek yang belum pernah mendengar tentang penambal asli menjalankan kode yang lebih bersih karena pekerjaan yang dilakukan hari ini.
Desain permacomputer bukanlah altruisme. Ini adalah rekayasa yang baik. Sistem yang membutuhkan penciptanya untuk tetap ada adalah rapuh. Sistem yang dirancang untuk bertahan lebih lama dari penciptanya adalah tangguh. Pilihan desain ini tidak menambah biaya ekstra saat pembuatan; ini hanya membutuhkan niat.
Infrastruktur sebagai hadiah: bukan dalam arti sentimental, tetapi dalam arti teknis. Sebuah hadiah bertahan setelah pemberian. Kode di bawah lisensi permisif, dokumentasi yang ditulis untuk pengelola berikutnya, pengujian yang berjalan di CI publik: ini adalah hadiah dalam arti teknis. Mereka bertahan. Mereka tumbuh. Mereka melampaui.
Pertanyaan terakhir Hamming kepada murid-muridnya: 'Apa yang sedang kamu lakukan yang akan berarti dalam 20 tahun?' Jawaban permacomputer: apa pun yang kamu letakkan di lantai yang tetap kokoh.