- Saat membuat hn.unlurker.com, saya menambahkan fitur
scan pada klien API HN yang mengambil seluruh item secara berurutan, lalu mengunduh seluruh data Hacker News ke lokal
- Saat menjalankan
hn scan --no-cache --asc -c- -o full.json, unduhan sempat beberapa kali berhenti, tetapi berkat scan yang bisa dilanjutkan, beberapa jam kemudian saya berhasil mendapatkan file JSON berukuran 20 GiB
- Setelah mengubah JSON menjadi tabel dengan
read_json_auto dari DuckDB, saya menghitung proporsi penyebutan Python, JavaScript, Java, Ruby, dan Rust menggunakan SQL text ILIKE serta rata-rata bergerak 12 minggu
- Bahkan hanya dengan
grep sederhana, saya bisa memastikan frasa “correct horse battery staple” muncul 231 kali di Hacker News, dan DuckDB tampak sangat cocok untuk analisis sekali jalan pada skala ini
- Begitu seluruh data tersedia secara lokal, konten lama Hacker News bisa dianalisis dengan berbagai cara, tetapi proyek ini saya akhiri di sini dan langkah berikutnya saya serahkan kepada orang lain
Mengunduh seluruh item Hacker News
- Untuk membuat hn.unlurker.com, saya menulis klien API HN
- Sebenarnya sudah ada beberapa klien, tetapi saya ingin mencoba fitur Go terbaru dan linter pada proyek baru
- Di HN API, komentar dan cerita disebut item
- Klien ini bisa mengambil item aktif, daftar item, dan sebagainya
- Proyek aslinya hanya membutuhkan item terbaru, tetapi demi kelengkapan saya menambahkan fitur
scan
scan mengunduh item secara berurutan dari 0 hingga yang terbaru, atau ke arah sebaliknya
- Saya memperkirakan unduhan penuh ini bukan akan berukuran puluhan ribu GiB, melainkan sekitar puluhan GiB JSON, jadi saya mencobanya
hn scan --no-cache --asc -c- -o full.json
- Unduhan sempat beberapa kali macet dan saya hentikan dengan
CTRL-C, tetapi karena scan bisa dilanjutkan, prosesnya selesai beberapa jam kemudian
- Hasilnya adalah file JSON 20 GiB yang berisi seluruh hal yang pernah terjadi di Hacker News
- Jika menjalankan perintah yang sama lagi, data bisa diperbarui kembali dengan data terbaru
Menganalisis data lokal dengan DuckDB
- Awalnya saya hanya mencari dengan
grep
- Setelah itu saya mencoba menganalisisnya dengan DuckDB
- DuckDB adalah mesin eksekusi analitik cepat yang bisa di-embed dan juga tersedia sebagai alat baris perintah
- Berkat UI barunya, alat ini mudah dipakai bahkan untuk pemula, dan LLM membantu menulis kueri SQL
- Data JSON dimuat ke DuckDB dengan cara berikut
CREATE TABLE items AS
SELECT *
FROM read_json_auto('/home/jason/full.json', format='nd', sample_size=-1);
- Kueri contohnya mengelompokkan item per minggu dan menghitung proporsi item yang memuat kata tertentu dibanding seluruh item
python, javascript, java, ruby, rust dicari dengan text ILIKE
- Untuk tiap proporsi, dihitung rata-rata bergerak 12 minggu
- Dengan cara yang sama, kata-kata terkait basis data juga divisualisasikan
- Grafik contoh mencakup proporsi penyebutan rata-rata bergerak 12 minggu untuk
mysql, postgres, mongo, redis, sqlite
- DuckDB tampak sangat bagus untuk menganalisis dataset sebesar ini
- Meski kini saya memiliki salinan lokal dari seluruh konten Hacker News, saya memutuskan proyek ini selesai sampai di sini
1 komentar
Komentar Hacker News
Saya tahu dua database yang memiliki tabel Hacker News yang diperbarui, yang memungkinkan menjalankan analisis tanpa perlu mengunduhnya terlebih dahulu
BigQuery membutuhkan akun Google Cloud, dan kuerinya mungkin bisa dilakukan dalam tingkat gratis; gunakan
bigquery-public-data.hacker_news.fullClickHouse tidak perlu mendaftar dan bisa menjalankan kueri langsung di browser: https://play.clickhouse.com/play?user=play#U0VMRUNUICogRlJPT...
clickhousedi komentar ini juga: https://play.clickhouse.com/play?user=play#U0VMRUNUICogRlJPT...Sebelum tahu tentang database HN ClickHouse, saya sudah mencoba sendiri pekerjaan mengunduh seluruh JSON
Dulu saya pernah melakukan hal serupa dengan akun Twitter/Bluesky @fesshole. Saya mengunduh seluruh arsipnya dan melakukan fine-tuning model agar menghasilkan pengakuan yang lebih gila
Saya cukup bangga, tetapi akhirnya sadar bahwa yang saya lakukan hanyalah mengajari mesin polos tentang masturbasi dan perceraian
Rasanya seperti adegan di film fiksi ilmiah ketika alien atau AI supercerdas melihat sejarah manusia dengan sangat cepat lalu memutuskan bahwa kita tidak layak diselamatkan
Jika sama sekali tidak ada keterhubungan dengan dunia luar terkait data itu, bagaimana manusia atau model bisa tahu bahwa flash drive tersebut berisi data tentang masturbasi dan perceraian?
Saya melihat keduanya secara keseluruhan positif, dan bersyukur bisa hidup di masyarakat tempat hal-hal seperti ini dinormalisasi
Kueri Java juga mencakup semua kemunculan JavaScript, jadi Java menjadi terambil secara berlebihan
trust,antitrust, danfrustrationBahwa ada file JSON 20GiB yang berisi semua yang pernah terjadi di Hacker News terasa mengejutkan besar, mengingat situs ini hanya berisi teks
Apakah itu berarti selama 18 tahun keberadaan HN, orang-orang telah mengunggah lebih dari 20 miliar byte teks? Rata-rata lebih dari 2MB per hari, sekitar 7,5KB per detik
Selain itu, cukup banyak di antaranya mungkin bukan manusia.
/newestpenuh dengan spam botItu pun mencakup metadata dan sintaks JSON, jadi jumlah teks sebenarnya pasti lebih rendah lagi. Perhitungan “lebih dari 2MB per hari” memang benar
[0] Sebenarnya perhitungannya dilakukan ChatGPT, tapi kelihatannya benar: https://chatgpt.com/share/68124afc-c914-800b-8647-74e7dc4f21...
Banyak di antaranya memang sampah, tetapi data awal sebelum 2018–2019, terutama sebelum bot yang lebih pintar bermunculan, tampaknya layak ditelusuri
Menurut standar sebelum Facebook, HN mungkin merupakan jejaring sosial yang cukup besar, dan karena skalanya pas serta dikelola dengan aktif, nilainya juga relatif tinggi
Pada 2019, ketika Google+ ditutup, saya pernah memodelkan berapa banyak data teks yang dikontribusikan ke situs itu
Yang dimaksud data teks di sini mengecualikan media seperti gambar, audio, video, serta elemen halaman tambahan seperti kerangka HTML, CSS, dan JS
Mengingat tingkat partisipasinya sangat rendah dan rata-rata posting sekitar 120 karakter, riwayat 7 tahun dari puluhan juta akun aktif pun hanya beberapa GiB. Profil terdaftar memang lebih dari 4 miliar, tetapi aktivitas nyatanya jauh lebih kecil
Archive Team melakukan upaya pelestarian Google+ secara terpisah meski bekerja sama dengan Internet Archive, dan hasilnya campuran. Banyak konten terselamatkan, tetapi jauh lebih banyak yang terlewat; komentar hampir tidak tersisa; thread dipotong menjadi kira-kira 10 yang terbaru; dan karena tidak ada pencarian, secara umum kegunaannya rendah. “Vanity accounts” yang memakai nama akun pilihan alih-alih hash acak bahkan lebih sulit diakses
Selain itu, dengan men-scrape seluruh halaman untuk mereproduksi tampilan online-nya, kebutuhan penyimpanan meningkat drastis, sementara banyak hal yang justru membuat situs itu menarik malah terlewat
Bahkan ketika hendak menyimpan kontribusi teks dari populasi besar, kebutuhan penyimpanannya cukup modest. Misalnya rata-rata waktu online per hari 45 menit, kecepatan mengetik 45wpm, dan hanya separuh waktu online dipakai untuk menulis alih-alih membaca, itu sekitar 1.000 kata per orang per hari, alias sekitar 6KiB. Per 1.000 orang menjadi 6MiB, per 1 juta orang 6GiB, dan per 1 miliar orang sekitar 6PiB
Nilai sebenarnya hampir pasti lebih rendah. Waktu menulis terlalu dilebih-lebihkan dan kemungkinan nyatanya lebih dekat ke 10%, sementara kecepatan input mobile juga mungkin sekitar 20–30wpm. Misalnya di Facebook ada sekitar 2,45 miliar “potongan konten” per hari, dan separuhnya adalah video. Jika diasumsikan 120 karakter per posting, data teksnya jauh di bawah 300GiB per hari—jumlah yang mengejutkan kecil
Sebagian besar sistem pengumpulan data dan kapitalisme pengawasan saat ini diisi oleh data yang tidak diketik langsung oleh manusia, seperti lokasi, video, interaksi online, dan perdagangan
Apa netiket saat mengunduh HN? Haruskah bertanya dulu kepada dang sebelum membebani server?
Atau boleh diasumsikan bahwa perusahaan teknologi bernilai miliaran dolar sudah melakukannya berkali-kali, jadi tidak akan terlihat?
https://console.cloud.google.com/marketplace/product/y-combi...
Saya pernah melakukan hal serupa. Saya memakai trik dengan dataset BigQuery; entah kenapa datanya terus diperbarui, lalu saya mengekspor datanya ke Parquet, mengunduhnya, dan menjalankan kueri dengan DuckDB
“Sekarang setelah semua konten Hacker News diunduh secara lokal, kita bisa melatih ratusan bot berbasis LLM dan menjalankannya sebagai kontributor, lalu secara perlahan dan tak terelakkan mengganti semua teks manusia dengan keluaran vibrator Chinese room yang selamanya menggemakan dan mendaur ulang masa lalu”—itu memang lelucon, tetapi saya takut suatu hari nanti ada yang akan mencobanya
Saya berharap itu tidak terjadi, tetapi kalau terjadi, bisakah kita menghentikannya?
Ada banyak masalah yang harus diselesaikan, dan privasi salah satunya. Relasi koneksi tidak perlu dibuka kepada pengguna, tetapi dalam implementasi yang naif, data itu akan tetap ada di server
Jalur ketidakpercayaan juga bisa ditambahkan sebagai bobot negatif. Jika Anda tidak memercayai seseorang secara langsung atau tidak langsung, nilai rantai kepercayaan yang menghubungkan Anda dan orang itu akan turun
Karena ini sebuah jaringan, sistem dapat menyesuaikan diri terhadap upaya manipulasi, tetapi seberapa tangguh sistemnya masih menjadi pertanyaan
Komentar yang panjang dan berisi biasanya masih bisa dibedakan, tetapi sudah jauh lebih sulit dibanding 1–2 tahun lalu. Untuk komentar pendek satu atau dua kalimat, menurut saya LLM kini sudah cukup bagus untuk lolos seperti manusia
Sebaliknya, banyak komentar di HN berisi wawasan yang cukup unik dan menyimpang dari pemikiran populer rata-rata. Jika LLM mencoba menirunya, yang keluar hanya omong kosong
Jika ditambahkan filter yang hanya meloloskan jawaban yang rasional dan masuk akal dari omong kosong itu, jawabannya akan menjadi membosankan dan tetap nyaris omong kosong
Agar jawabannya akurat, presisi, dan unik, harus memakai sesuatu yang bukan LLM
Heuristik karma dan kecepatan situs ini memang kasar dibanding machine learning yang canggih, tetapi berfungsi karena komunitasnya lebih kecil dibanding Reddit atau Twitter dan moderator turun tangan langsung
Agar gerombolan akun palsu LLM bisa “menggantikan” teks manusia, mereka harus terus memposting tulisan yang benar-benar dianggap menarik oleh orang. Kalau tidak, mereka akan dibatasi atau diam-diam disingkirkan jauh sebelumnya
Bahkan menjaga beberapa akun AI tetap hidup pun biaya marjinalnya besar. Menjalankan inferensi pada puluhan thread baru selama 24 jam tidak gratis, dan menjaga agar keluarannya tidak tergelincir menjadi sampah SEO generik juga ternyata sulit
Imbalannya juga praktis tidak ada. Trafik HN tidak bisa dimonetisasi, dan karma adalah mata uang yang buruk bagi operator bot
Apakah kita bisa menghentikan pelaku jahat yang gigih dan punya sumber daya? Mungkin bisa, tetapi penanggulangannya akan sama seperti sekarang: rate limit yang kuat, batasan lebih ketat untuk akun baru, peninjauan oleh moderator manusia, dan mungkin sedikit analisis gaya tulisan
Ini akan merepotkan pengguna baru yang sah, tetapi tidak mematikan. Pada akhirnya HN bertahan karena manusia yang ada di sini ingin membaca tulisan manusia lain. Jika komentar mulai terdengar seperti burung beo probabilistik, pembaca akan mengabaikan atau melaporkannya, dan bot-bot itu akan berbicara satu sama lain
Ditulis oleh GPT-3o
“Di Metal Gear Solid 2, naskah ambisius Hideo Kojima kadang dinilai sebagai salah satu contoh pertama video game postmodern, dan juga dinilai telah mengantisipasi konsep seperti politik pascakebenaran, berita palsu, echo chamber, dan fakta alternatif”
[0] https://en.wikipedia.org/wiki/Metal_Gear
[1] https://en.wikipedia.org/wiki/Dead_Internet_theory
Dalam beberapa tahun ke depan, saya rasa banyak API akan mulai menyediakan opsi untuk sekadar mengembalikan file DuckDB
Kalau pada akhirnya JSON akan dimuat ke database, tidak ada alasan untuk tidak menerima database sebagai respons
Saya berharap orang tidak memakai grafik bertumpuk. Menurut saya hampir mustahil untuk tidak mendistorsi kesan pembaca
Karena sangat sulit memperkirakan tinggi titik data tertentu di tengah noise, dan grafik itu mengisyaratkan dependensi yang kemungkinan tidak ada
Berikutnya saya sedang mempertimbangkan pendekatan menumpuk beberapa grafik garis yang disejajarkan, masing-masing hanya berisi satu seri per wilayah
Lihat karya di https://flowimmersive.com/
[1]: https://atlas.web.cern.ch/Atlas/GROUPS/PHYSICS/PUBNOTES/ATL-...
Dulu saya pernah membuat satu, dan https://github.com/ashish01/hn-data-dumps cukup menyenangkan
Fitur yang akan keren jika diimplementasikan adalah mencerminkan fakta bahwa item yang lebih baru lebih sering diperbarui seiring waktu, sehingga item yang baru diunduh menjadi cache usang lebih cepat daripada item lama
Saya memakai fungsi berbasis usia untuk menentukan keusangan. Awalnya, item dianggap usang mulai 1–2 menit setelah dibuat, lalu diperbarui sering selama beberapa hari, kemudian cepat menurun setelah minggu pertama, dan setelah sekitar 2 minggu diperlakukan sebagai tidak berubah
// DefaultStaleIf marks stale at 60 seconds after creation, then frequently for the first few days after an item is// created, then quickly tapers after the first week to never again mark stale items more than a few weeks old.const DefaultStaleIf = "(:now-refreshed)>" +"(60.0*(log2(max(0.0,((:now-Time)/60.0))+1.0)+pow(((:now-Time)/(24.0*60.0*60.0)),3)))"https://github.com/jasonthorsness/unlurker/blob/main/hn/core...