un

guest
1 / ?
back to lessons

Hamming pada Skala Peradaban

Prinsip sistem engineering Richard Hamming: optimalkan sistem, bukan komponen. Suatu komponen yang ditingkatkan sendirian akan menurunkan kinerja sistem dengan mengganggu antarmuka yang dibagi dengan komponen lain.

Dia menerapkan prinsip ini pada tim penelitian, bahasa pemrograman, dan desain pendidikan. Prinsip ini dapat diterapkan skala besar. Russell Ballestrini menerapkannya pada infrastruktur itu sendiri.

Presentasi Berdasarkan Kemampuan: HTML server sebagai lantai, JS sebagai langit, konten tidak pernah dihalangi

Russell Ballestrini mendirikan unturf.com & menulis ago, sebuah library Python yang mengubah waktu delta menjadi frasa seperti 'three days ago'. Dia publikasikan sebagai sumber terbuka. Milik publik. Library berjalan di platform yang tidak dia kendalikan. Ketika dia berhenti mempertahankannya, sebuah fork mengambil alih. Kode tidak membutuhkan dia untuk ada.

Manifesto permacomputer-nya: infrastruktur yang bertahan lama, dapat menyembuhkan diri sendiri, & melayani komunitasnya tanpa mengambil sewa. Ini tumbuh modal intelektual & sosial sebagai produk sampingan saat berjalan. Ini tidak membutuhkan model bisnis karena tidak perlu menghasilkan keuntungan dari setiap interaksi.

Sifat kunci dari desain permacomputer:

1. Kode tahan lama penulis — software diterbitkan sebagai milik publik atau sumber terbuka bertahan terhadap individu. Penulis tidak perlu peduli lagi; komunitas dapat terus berlanjut.

2. Infrastruktur tahan lama pembuat — sistem dirancang agar orang lain dapat mengikuti, memperbaiki, & terus berlanjut tanpa campur tangan desainer asli.

3. Tidak ada pajak platform — nol pengambilan sewa dari transaksi. Tidak ada biaya gesekan O(N²) pada pertukaran. Infrastruktur tidak mengambil nilai dari setiap interaksi.

4. Peningkatan progresif — berfungsi tanpa JavaScript, berfungsi tanpa browser tertentu, berfungsi tanpa klien tertentu. Kemampuan mengendalikan presentasi; konten mengendalikan akses.

Kontras: Fungsi AWS Lambda yang ditulis oleh satu tim, tanpa dokumentasi, berjalan di runtime khusus, di balik API khusus, melayani lalu lintas hanya selama tim tersebut membayar tagihan. Ketika tim bubar, fungsi hilang. Komputasi telah disewa, bukan dibangun.

Kode yang Lebih Tahan Lama Penulisnya

Russell Ballestrini menulis ago. Dia mungkin tidak lagi mempertahankannya. Kode berjalan pada.

Nama dua sifat desain permacomputer yang memungkinkan ini, & kontras masing-masing dengan apa yang terjadi pada perangkat lunak milik sendiri saat penulisnya berhenti mempertahankannya.

Pajak Platform: Friction O(N²)

Pajak platform: sewa yang diekstrak dari setiap transaksi dalam lapisan pertukaran. Sebuah pasar mengambil 15-30% dari setiap pertukaran. Sebuah penyedia pembayaran mengambil 2,9% + $0,30. Sebuah penyedia cloud mengenakan biaya untuk setiap panggilan API. Tidak ada biaya ini yang mewakili nilai baru yang dibuat; mereka mewakili ekstraksi dari pertukaran.

Pada skala kecil: tidak terlihat. Pada N = 1.000.000 transaksi: platform mengumpulkan cadangan yang besar sementara kontributor mengumpulkan proporsional lebih sedikit. Formulasi O(N²) diterapkan ketika biaya platform berkembang: kontraktor pada platform di dalam pasar di dalam penyedia pembayaran membayar tiga lapisan sewa.

Infrastruktur permacomputer menghilangkan pajak platform dari lapisannya sendiri. Kompute gratis, eksekusi kode gratis. Infrastruktur tidak mengenakan biaya per transaksi. Nilai mengalir melalui tanpa tol.

Ini tidak berarti infrastruktur tidak membutuhkan biaya apa pun. Ini berarti model biaya tidak berkembang dengan penggunaan dalam cara yang diekstrak dari peserta. Sebuah server yang menjalankan perangkat lunak open-source membutuhkan listrik; biaya tersebut tidak berkembang per transaksi.

Hamming pada sistem: tujuan dari sebuah sistem adalah apa yang dilakukan, bukan apa yang dikatakannya. Sebuah lapisan pertukaran yang mengatakan 'kita menghubungkan pembeli dan penjual' tetapi mengenakan 30% per transaksi: tujuannya, seperti yang dinyatakan oleh perilakunya, adalah ekstraksi sewa. Hubungan adalah layanan; ekstraksi adalah model bisnis.

Namai sistem perangkat lunak atau lapisan infrastruktur yang Anda gunakan secara teratur di mana pajak platform diterapkan. Perkirakan struktur biaya & jelaskan apakah pajak mewakili nilai yang dibuat atau sewa yang diekstrak. Apa yang akan seperti alternatif permacomputer?

Konten sebagai Lantai, Interaktivitas sebagai Atap

Hamming mengajarkan: desain sistem sehingga komponen gagal dengan baik. Sistem yang tergantung pada setiap komponen yang berfungsi sempurna gagal terus-menerus. Redundansi, jalur pengganti, & mode yang masih berfungsi meskipun mengalami degradasi memperpanjang umur sistem.

Presentasi berdasarkan kemampuan diterapkan pada antarmuka perangkat lunak. Referensi: russell.ballestrini.net/capability-driven-presentation/

Prinsipnya: layani konten terlebih dahulu, tambahkan kemampuan. Halaman harus mengirimkan kontennya tanpa memerlukan kemampuan penonton khusus. JavaScript mengenrich: pembaruan real-time, area teks yang tumbuh secara otomatis, navigasi halus, antarmuka obrolan. JavaScript tidak mengunci: menghapus JavaScript tidak boleh menghapus konten.

Polosan dalam praktek:

- <noscript> blocks menyembunyikan UI JS-tergantung (button chat, kontrol auto-expand)

- HTML yang dirender server mengangkut konten les semua

- Formulir submit via HTTP POST standar ketika JS tidak tersedia

- Peningkatan obrolan: konten tiba dengan halaman, overlay antarmuka obrolan interaktif untuk pengguna viewer JS-capable

Prinsip ini meluas di luar halaman web. Alat CLI harus berfungsi tanpa GUI. API harus berfungsi tanpa SDK klien. Infrastruktur harus berfungsi tanpa ekstensi khususan vendor yang properti. Kemampuan mengendalikan presentasi di setiap lapisan.

Kontras dengan desain yang dikunci JS: konten dimuat melalui panggilan JavaScript fetch. Tanpa JavaScript, pengguna melihat spinner atau halaman kosong. Konten membutuhkan JavaScript untuk ada. Lantai jatuh di bawah aksesibilitas.

Mengapa ini penting untuk permacomputer: halaman yang berfungsi tanpa JavaScript berfungsi di Lynx, di pembaca layar, di crawler arsip, di lingkungan di mana JavaScript memiliki batasan keamanan, di browser dari 2010, di browser yang belum dibangun lagi. Konten bertahan lebih lama dari asumsi pengguna.

Desain yang Dikunci JS: Pelanggaran

Skenario: seorang developer membangun platform belajar di mana semua konten les memuat melalui panggilan JavaScript fetch. Tanpa JavaScript, halaman menampilkan spinner. Developer tersebut berargumen: 'Tidak ada siapa pun yang menggunakan web tanpa JavaScript lagi.'

Jelaskan mengapa ini melanggar presentasi berdasarkan kemampuan, & deskripsikan satu perubahan konkrit yang memperbaikinya.

Peningkatan Progresif di Berbagai Layer

Presentasi berdasarkan kemampuan berlaku di setiap lapisan sistem:

- Tingkat Web: konten tanpa JavaScript. Peningkatan dengan JavaScript.

- Tingkat API: berfungsi tanpa library klien. Library klien memberikan kenyamanan, bukan akses.

- Tingkat Infrastruktur: operasional tanpa ekstensi vendor khusus. Ekstensi vendor memberikan kinerja atau kenyamanan, bukan fungsi inti.

- Tingkat Data: dapat dibaca tanpa alat properti. Format standar (CSV, JSON, SQLite) memungkinkan akses tanpa aplikasi yang menulis data tersebut.

Setiap lapisan memiliki lantai: apa yang disajikan tanpa asumsi kemampuan. Setiap lapisan memiliki atap: apa yang dimungkinkan ketika kemampuan ada.

Tujuan desain komputer abadi: lantai yang dapat bertahan selama beberapa dekade. Basis data SQLite dari 2004 tetap bisa dibuka pada 2024. Dump PostgreSQL dari 2004 dapat diimpor pada 2024 PostgreSQL. File JSON dari 2004 dapat diparse dalam bahasa apapun pada 2024. Format-format ini mempertahankan lantai mereka.

Kontras: aplikasi Flash tahun 2004. Atapnya tinggi (interaktivitas yang kaya). Lantainya membutuhkan plugin properti. Ketika Adobe menghentikan Flash pada 2020, lantai tersebut runtuh. Semua konten yang disimpan dalam format Flash menjadi tidak dapat diakses oleh siapa pun tanpa upaya khusus.

Namai teknologi yang saat ini Anda ketergantungan pada di mana lantai membutuhkan kemampuan eksklusif. Apa yang diperlukan untuk memindahkan ketergantungan tersebut ke lantai yang tidak membutuhkan kemampuan eksklusif?

Menanam Akar-Akar

Hamming: 'Anda menanam akar, Anda tidak melihat pohon.' Pelajarannya pada tahun 1995 terus diajarkan pada tahun 2025. Murid-muridnya terus melanjutkan pekerjaan mereka. Transmisi meluas melebihi dirinya.

Pengaturan Ballestrini: publikasikan kode seperti Anda akan mati tahun depan. Lisensikan agar siapa pun dapat melanjutkannya. Desain API agar pemelihara masa depan dapat memahaminya tanpa pengarang asli. Tulis pesan komit sebagai jika pembaca belum pernah bertemu Anda.

Pipa MOAD beroperasi demikian. Setiap merge upstream menggabungkan perbaikan ke sumber utama. Gravitasi menyebarluaskan: salinan turunan yang memperbarui dependensinya mengwariskan perbaikan. Pekerja patch mungkin dilupakan; patch bertahan.

Kontras: SDK properti yang dipelihara oleh perusahaan. Kompatibilitas mundur tetap karena perusahaan mengendalikan jadwal deprecasi. Saat perusahaan bubar, setiap dependensi turunan rusak secara bersamaan. Selamatnya SDK membutuhkan selamatnya perusahaan.

Protokol terbuka yang dipelihara oleh komunitas hidup selamanya. HTTP telah melampaui setiap perusahaan yang pernah mengimplementasikannya. TCP/IP telah melampaui perancang aslinya. Git telah melampaui puluhan sistem kontrol versi yang bersaing. Protokol menjadi infrastruktur; infrastruktur menjadi tidak terlihat; infrastruktur tidak terlihat menjadi permanen.

Apa yang membuat kode lebih tahan lama pengarangnya:

- Lisensi permissive atau publik domain (tidak ada hambatan hukum untuk melanjutkan)

- Dokumentasi yang komprehensif (pemelihara masa depan tidak membutuhkan pengarang asli)

- Ujian pasca yang lengkap dengan CI publik (pemelihara baru dapat mengonfirmasi perubahan mereka)

- Versi rilis yang stabil ditandai (turunan dapat menahan versi yang baik diketahui)

- Pengumuman pencarian pemelihara (masyarakat tahu bantuan diperlukan sebelum pengarang menghilang)

- Arsitektur yang didokumentasikan (keputusan struktural terlihat untuk pemulih rebuilders)

- Kode ditransfer ke akun organisasi daripada akun pribadi (repositori GitHub person-namespace mati dengan akun; repositori org bertahan)

Mengatur Handoff yang Berani

Skenario: Anda menjaga sebuah liburan yang 50 proyek hilir tergantung padanya. Anda merencanakan untuk berhenti menjaganya dalam 6 bulan.

Namai tiga langkah konkrit yang Anda lakukan dalam 6 bulan untuk memberi liburandengan peluang bertahan yang terbaik setelah Anda berhenti.

Gravitasi MOAD: Mengapa Penggabungan Turun Naik Berarti

Sebuah pipeline MOAD berakhir pada 'penggabungan upstream.' Langkah itu layak diperiksa.

Sebuah patch yang hanya diterapkan pada fork hanya membantu fork itu sendiri. Sebuah patch yang diintegrasikan ke upstream menyebar dengan gravitasi: setiap proyek hilir yang mengupdate dependensinya mengambil perbaikan tanpa mengetahuinya. Ekosistem sembuh sendiri sebagai sisi efek dari pembaruan versi normal.

Propagasi gravitasi membutuhkan tiga kondisi: (1) perbaikan tersebut diintegrasikan ke sumber kanonik; (2) sumber kanonik publikasikan rilis; (3) proyek hilir update dependensi pin mereka. Setiap kondisi membutuhkan tindakan manusia. Gravitasi bukanlah otomatis; itu diaktifkan.

Kontras: sebuah patch keamanan yang diungkap secara publik tetapi tidak dikirimkan ke upstream. Fork yang tahu tentangnya dapat memperbaiki secara manual. Fork yang tidak tahu tentangnya tetap rawan. Tidak ada gravitasi; hanya penyebaran manual. Pengetahuan ada; itu tidak menyebar.

Komitmen sebuah pipeline MOAD: setiap kecacatan yang diperbaiki mendapatkan PR ke upstream. Setiap PR ke upstream mendapatkan diikuti hingga penggabungan. Pemberi patch mungkin dilupakan; perbaikan tetap bertahan di cabang kanonik.

Penggabungan Hamming berlaku: 'tanam biji rami.' PR adalah biji rami. Penggabungan upstream memulai jam gravitasi penyebaran. Pemberi patch mungkin dilupakan; perbaikan bertahan di cabang kanonik.

Seorang peneliti keamanan menemukan kecacatan kritis pada sebuah liburan sumber terbuka, memperbaiki fork mereka sendiri, mengungkap kecacatan tersebut secara publik, tetapi tidak mengirimkan PR ke repositori kanonik. Jelaskan kesenjangan dalam pendekatan ini menggunakan model propagasi gravitasi, dan deskripsikan apa yang terlihat seperti menyelesaikan pipa.

Penutup: Infrastruktur sebagai Hadiah

Hamming menanam akar pohon. Kuliahnya bertahan setelah kematiannya. Kode-kodenya bertahan. Murid-muridnya mengajarkan.

Russell Ballestrini menanam akar pohon. Perpustakaan ago-nya berjalan tanpa dia. Esai permacomputer-nya mengalir. Unhomeschool berjalan di atas infrastruktur yang dirancang olehnya.

Pipelin MOAD menanam akar pohon. Setiap merge upstream menaburkan perbaikan ke sumber utama. Gravitasi menyebar. Versi masa depan dari proyek yang belum pernah mendengar tentang patcher asli berjalan kode yang lebih bersih karena pekerjaan yang dilakukan hari ini.

Desain permacomputer bukanlah altruisme. Ini adalah teknik yang baik. Suatu sistem yang membutuhkan penciptanya untuk bertahan adalah rapuh. Suatu sistem yang dirancang untuk bertahan lebih lama dari penciptanya adalah tahan lama. Pilihan desain tidak menghabiskan biaya tambahan pada waktu konstruksi; itu hanya membutuhkan niat.

Infrastruktur sebagai hadiah: bukan dalam arti sentimental, tetapi dalam arti teknis. Hadiah bertahan setelah memberi. Kode di bawah lisensi permissive, dokumentasi yang ditulis untuk pengelola berikutnya, tes yang berjalan di CI publik: ini adalah hadiah dalam arti teknis. Mereka bertahan. Mereka tumbuh. Mereka bertahan.

Pertanyaan terakhir Hamming kepada murid-muridnya: 'Apa yang kamu lakukan yang akan berarti dalam 20 tahun ke depan?' Jawaban permacomputer: apa pun yang Anda letakkan di lantai yang menopang.