16 पॉइंट द्वारा GN⁺ 2025-12-31 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Hacker Book एक ऐसा प्रोजेक्ट है जो 2006 से 2025 तक के Hacker News के पूरे डेटा को SQLite फ़ॉर्मेट में संरक्षित करता है
  • इसमें कुल 46,399,072 पोस्ट, 1,637 shards शामिल हैं, और HN के 19 साल के रिकॉर्ड को समेटे हुए है
  • यह सर्वर-साइड ऐप नहीं है, बल्कि WASM में compile किया गया SQLite इस्तेमाल करता है, और ज़रूरत पड़ने पर सिर्फ़ कुछ shards डाउनलोड करके दिखाता है
  • वेब इंटरफ़ेस के ज़रिए पोस्ट, यूज़र, कमेंट ब्राउज़ किए जा सकते हैं, और यह HN की रीयल-टाइम संरचना जैसा UI देता है
  • शीर्ष पोस्टों में AI, open source, तकनीकी इतिहास, सामाजिक मुद्दे जैसे विविध विषय शामिल हैं
  • यह डेवलपर्स और शोधकर्ताओं को इंटरनेट टेक कम्युनिटी के दीर्घकालिक डेटा विश्लेषण के लिए आधार उपलब्ध कराता है

Hacker Book का अवलोकन

  • Hacker Book एक प्रोजेक्ट है जो Hacker News का पूरा डेटा SQLite database के रूप में उपलब्ध कराता है
    • डेटा 9 अक्टूबर 2006 से 28 दिसंबर 2025 तक की अवधि को कवर करता है
    • इसमें कुल 46,399,072 items, 1,637 shards, और 8.5GB आकार शामिल है (पेज के नीचे दी गई जानकारी)
  • वेबसाइट https://hackerbook.dosaygo.com/ पर उपलब्ध है
    • इंटरफ़ेस Hacker News जैसा है, जिसमें पोस्ट सूची, points, कमेंट की संख्या, और लेखक की जानकारी दिखाई जाती है

डेटा संरचना और ब्राउज़िंग सुविधाएँ

  • हर item में पोस्ट शीर्षक, source domain, points, लेखक, कमेंट की संख्या, और पोस्ट करने का समय शामिल है
  • यूज़र-आधारित पेज(view=user&id=) और पोस्ट-आधारित डिटेल पेज(view=item&id=) के ज़रिए ब्राउज़ किया जा सकता है
  • ‘More’ लिंक के माध्यम से पेज-दर-पेज अतिरिक्त items लोड किए जा सकते हैं

तकनीकी विवरण

  • डेटा SQLite फ़ॉर्मेट में उपलब्ध है, इसलिए इसे लोकल एनवायरनमेंट में query और analysis के लिए इस्तेमाल किया जा सकता है
  • HN के पूरे रिकॉर्ड को एक single database में एकीकृत करके, शोधकर्ता और डेवलपर समय-आधारित ट्रेंड विश्लेषण कर सकते हैं
  • डेटा sharding संरचना बड़े पैमाने के डेटा के कुशल प्रबंधन में मदद करती है

प्रोजेक्ट का महत्व

  • यह Hacker News के 19 वर्षों में संचित कम्युनिटी ज्ञान को संरक्षित करने वाले एक डिजिटल आर्काइव की भूमिका निभाता है
  • यह open data की accessibility बढ़ाता है, जिससे तकनीकी इतिहास शोध और कम्युनिटी विश्लेषण में इसका उपयोग हो सकता है
  • “All the HN Belong to You” स्लोगन की तरह, कम्युनिटी के पूरे रिकॉर्ड को किसी के लिए भी खोजने योग्य बनाकर सार्वजनिक किया गया है

1 टिप्पणियां

 
GN⁺ 2025-12-31
Hacker News की राय
  • इस प्रोजेक्ट की सबसे बड़ी बात यह है कि यह पूरी तरह ब्राउज़र के अंदर चलता है, सर्वर पर नहीं
    SQLite को WASM में compile करके इस्तेमाल किया गया है, और पूरी 22GB DB डाउनलोड करने के बजाय पेज के लिए ज़रूरी shard-स्तर का डेटा ही लाया जाता है
    Network panel में shard_1636.sqlite.gz, shard_1635.sqlite.gz जैसी फाइलें क्रम से लोड होती दिखीं
    यह पुराने SQLite.js HTTPVFS ट्रिक की याद दिलाता है, लेकिन इस बार range header की जगह sharded files का इस्तेमाल किया गया है
    Interactive SQL query interface में आप सीधे चुन सकते हैं कि किस shard पर query चलानी है (कुल 1636)

    • इस तरह का read-only VFS सही API हो तो बहुत आसानी से implement किया जा सकता है
      मैंने बनाया हुआ VFS उदाहरण यहाँ है
      range request इस्तेमाल करने का उदाहरण इस लिंक में देखें
      Zstandard-compressed SQLite DB support करने के लिए बस यह library जोड़नी होगी

    • जिज्ञासा है कि क्या इस तरह के HTTP range-आधारित विचार के production-grade implementation के और उदाहरण हैं। इसमें काफी संभावना दिखती है

    • VFS support सच में चौंकाने वाला है

  • अच्छा होगा अगर इसे Kiwix में integrate किया जा सके
    मैं आजकल offline-only phone इस्तेमाल कर रहा हूँ, इसलिए Wikipedia, Wiktionary, और 100rabbits साइट सब कुछ offline देखता हूँ

  • सोच रहा हूँ कि और compression करने पर यह कितना छोटा हो सकता है
    “मुझे यह वेबसाइट पसंद नहीं क्योंकि यह scrollbar hijack करती है” जैसे comments शायद कुछ bits में भी encode हो सकते हैं

    • Brotli के hardcoded dictionary जैसा कुछ बनाना भी अजीब नहीं होगा (संबंधित लिंक)
    • अगर मेरे comments सब हटा दें तो शायद 5 bits काफी होंगे
  • मैंने select * from items limit 10 चलाया, लेकिन यह shard एक-एक करके scan करता रहा इसलिए result वापस नहीं आया
    यह 60 shard तक गया और फिर रुक गया। अगर सिर्फ एक shard चुनें तो result तुरंत आ जाता है
    DuckDB parquet file के सिर्फ ज़रूरी हिस्से HTTP से पढ़ सकता है, इसलिए शायद ज़्यादा तेज़ होगा
    users और user_domains table की error shard filter को user stats shard पर बदलने से ठीक हो जाती है

    • अजीब है। अगर यह VFS होता तो ऐसा behavior नहीं आना चाहिए था। शायद यह VFS नहीं है
  • Single-page application (SPA) की तरह, शायद Single-table application (STA) जैसा idea भी आ सकता है
    अगर table को कई keys से shard करके static files की तरह serve किया जाए, तो public data को static HTML की तरह deploy किया जा सकता है

    • Baked Data architecture pattern इससे मिलता-जुलता है
    • क्या आप “single table” नहीं बल्कि “single database” कहना चाह रहे थे? Relations के बिना app बनाना मुश्किल है, लेकिन Reddit कभी “things” नाम की एक बहुत बड़ी single table पर चलता था
  • repository 404 होकर गायब हो गई
    कम से कम कुछ data का internal structure देखना चाहता था, अफसोस हुआ

    • सच में बहुत जल्दी हट गई। मैं हाल का HN dataset ढूंढ़ रहा हूँ, लेकिन लगभग मिल ही नहीं रहा
  • मुझे भी 404 error मिल रही है
    सोच रहा हूँ क्या DuckDB जैसे columnar store और SQLite के बीच trade-off पर विचार किया गया था

    • शायद MS ने repository हटा दी हो, बाकी repositories तो ठीक चल रही हैं
    • मैं तो सीधा SQLite के साथ चला गया। DuckDB के बारे में ज़्यादा नहीं जानता
    • DuckDB compression बेहतर कर सकता है, लेकिन SQLite की universality देखते हुए standard choice के लिए वही काफी है
    • SQLite single file में DB संभाल सकता है, इसलिए archiving के लिए उपयोगी है
  • इससे फिर महसूस हुआ कि text, video से कहीं ज़्यादा efficient है
    यही ज्ञान अगर video में रखा जाए तो वह कितना बड़ा होगा, कल्पना भी नहीं कर सकता

    • YouTube 20 मिनट के video में शायद 100 काम के शब्द भर देता है और clickbait करता है। inefficiency बहुत ज़्यादा है
    • 1080p60 video 5Mbps पर हो तो वह प्रति सेकंड 120,000 शब्दों के बराबर है। औसत बोलने की रफ्तार 150wpm मानें तो text 50,000 गुना ज़्यादा efficient है
      22GB text को video में बदलें तो लगभग 1PB (1000TB) हो जाएगा
    • आजकल video LLM से text-based video या diagram भी अपने-आप बनाए जा सकते हैं
      board game या programming videos के लिए तो बस text summary पढ़ लेना बेहतर है
  • अच्छा होगा अगर इसे .zim file में बनाकर Kiwix जैसे offline browser में देखा जा सके
    मैं कभी-कभी “offline-only day” रखता हूँ और अपनी पढ़ाई को organize करता हूँ, तब Kiwix से Wikipedia या StackOverflow देखता हूँ
    Kiwix library परिचय

    • अगर ऐसी content Kiwix app में सीधे browse हो सके तो वाकई बहुत अच्छा होगा
  • मैंने भी कुछ ऐसा ही किया है
    Reddit के Project Arctic Shift dump को SQLite में import करने वाला एक tool Rust में बनाया था
    FTS5 index बनाए बिना और WAL के बिना --unsafe-mode में import करें तो सारे comments और posts लगभग 24 घंटे में आ जाते हैं और करीब 10TB DB बनती है
    SQLite की JSON functionality बढ़िया है, लेकिन मैंने load के समय सिर्फ एक बार parse करके normalize करने का रास्ता चुना
    DB build तेज़ है, लेकिन VACUUM तुरंत चलाने पर query speed काफी बढ़ जाती है। हाँ, VACUUM में कई दिन लगते हैं
    Pushshift Importer / Arctic Shift dump लिंक

    • SQLite का auto_vacuum इस्तेमाल करें तो पूरी DB दोबारा build किए बिना भी space reclaim किया जा सकता है