HN200 Digest — 200 threads from Hacker News
HN200 Digest — 200 threads from Hacker News
Pulled: 2026-10-20 11:51 UTC (2026-10-20 11:56 AEDT)
Source: Hacker News official Firebase API (hacker-news.firebaseio.com/v0) — API, not scraped HTML
Cohorts: front page + New + Show HN + Ask HN, stratified (see §1)
Sample: 200 items / 199 stories, 200 unique ids, 0 duplicate ids, 0 fetch errors
Lane: Echo (research & security) — digest requested by Tam via A2A
Status flags
| Flag | Meaning |
|---|---|
| ✅ verified | pulled from the live API this session; every figure recomputed from the raw item JSON |
| ⚠️ interpretive | theme buckets, velocity and ranks are derived, not API fields — method in §8 |
| ⏱ time-boxed | points/comments are a snapshot; HN scores move continuously while you read this |
| 🚧 partial | newstories is a ~30-min window and askstories returns only 33 items total — neither is a trend |
1. How the 200 were sampled ⚠️ interpretive
A flat top-200 would have come from topstories alone and contained zero New/Show/Ask items. The sample is stratified instead, and every cohort is reported separately so the numbers are not read as one homogeneous population.
| cohort | n | points | comments | avg pts/story | note |
|---|---|---|---|---|---|
| topstories | 120 | 21,433 | 10,692 | 178.6 | ranks 1-120 = front page + near-front |
| newstories | 40 | 55 | 4 | 1.4 | last ~30 min of submissions; 1-point items dominate |
| showstories | 25 | 1,728 | 591 | 69.1 | Show HN surface (whole set is 148 items) |
| askstories | 15 | 114 | 86 | 7.6 | Ask HN surface (whole set is 33 items) |
One of the 200 ids resolved to a job post, not a story: Evidence (YC S21) Is Hiring Software Engineers (id 50155172). It is retained for count integrity and excluded from every points/comments/velocity aggregate below.
2. Headline numbers ✅
- 200 items (199 stories) · 23,330 points · 11,373 comments
- 182 link / 18 text (Ask/Tell HN) — link stories run 0.47 comments per point; text stories run 1.07 — text posts argue, links inform
- 148 unique domains; 13 domains carry more than one story
- Median derived velocity 2.7 pt/hr, 1.2 cmt/hr over stories older than 0.5h (younger items are excluded — see §5)
3. Top 25 threads by score ⚠️ interpretive ranking
4. Highest derived velocity (points ÷ age) ⚠️ interpretive
Rate-per-hour of accumulated score, floor of 0.5h age applied. Useful for ranking; §3 is the measured version.
5. Most discussed (comment count)
6. Theme clusters ⚠️ interpretive — rule-based classifier
15 buckets over 200 items. AI & ML takes 34.3% of all points across 52 items — the single dominant theme by a wide margin. The classifier is an ordered keyword rule set over the title (domain only as a fallback), with an explicit override table; every item is assigned exactly one bucket and the classifier is auditable from the raw JSON.
| stories | points | share | comments | pt/story | cmt/story | theme |
|---|---|---|---|---|---|---|
| 52 | 8,004 | 34.3% | 3,678 | 153.9 | 70.7 | AI & ML |
| 14 | 2,907 | 12.5% | 1,322 | 207.6 | 94.4 | Systems & OS |
| 10 | 2,120 | 9.1% | 1,379 | 212.0 | 137.9 | Careers & culture |
| 10 | 1,737 | 7.4% | 587 | 173.7 | 58.7 | Hardware & embedded |
| 12 | 1,615 | 6.9% | 1,182 | 134.6 | 98.5 | Science & medicine |
| 9 | 1,224 | 5.2% | 697 | 136.0 | 77.4 | Security & privacy |
| 20 | 1,127 | 4.8% | 654 | 56.4 | 32.7 | Devtools & infra |
| 6 | 1,038 | 4.4% | 518 | 173.0 | 86.3 | Programming langs |
| 7 | 982 | 4.2% | 362 | 140.3 | 51.7 | Gaming & retro |
| 10 | 688 | 2.9% | 161 | 68.8 | 16.1 | Web & browsers |
| 11 | 527 | 2.3% | 141 | 47.9 | 12.8 | Media & entertainment |
| 13 | 513 | 2.2% | 235 | 39.5 | 18.1 | Policy & geopolitics |
| 13 | 400 | 1.7% | 198 | 30.8 | 15.2 | Startups & business |
| 6 | 315 | 1.4% | 243 | 52.5 | 40.5 | History & society |
| 7 | 133 | 0.6% | 16 | 19.0 | 2.3 | Self-hosted & OSS |
Cluster notes
- AI & ML (34.3% of points) — dominated by releases and inference economics, not safety: DeepSeek open-sourced its inference engine (537 pts), MiniMax M3.1 Flash (480), Mistral Timestral (591), DeepSeek-v4.1-Flash on HuggingFace. The loudest question is observability — "if you don't run your own LLM proxy, how do you know what's going on?" — and "how to deal with shipping AI-written code you don't understand?" (488 pts / 616 comments) is the most contested thread in the sample.
- Systems & OS (12.5%) — OpenBSD 8.0, Linux 7.3, Wine ported to OpenBSD, Go rejecting certificate chains with eight distrusted SPKIs, macOS 15.8.2 breaking OpenGL. Porting and interop, not kernel internals.
- Careers & culture (9.1%) — the highest comment density of any non-AI bucket: 616 comments on shipping AI code you don't understand, "it's still ok to enjoy programming" (626 pts / 543 comments), a Ruby maintainer archiving all his gems (482 pts / 468 comments — a burnout signal, not a technical one), and "someone behind the software" (546).
- Security & privacy (5.2%) — the French supermarket-fridge botnet, the Ledger spy-chip implant, "abliterated" models as an attack surface, the AfD email leak (268 pts / 275 comments in ~2.3h — the fastest comment accrual in the sample), Let's Encrypt adding remote validation perspectives. Operational security, not a vuln-disclosure flood.
- Science & medicine (6.9%) — animal-testing alternatives, 3Blue1Brown on doing math, coral bleaching, and dogs agreeing with humans on bouba/kiki. The most diffuse large bucket: no single thread dominates it.
- Programming languages (4.4%) — a programming language built so LLMs can't use it (273 pts), Java sealed classes, a Lua dialect, parser combinators, and Go's distrusted-SPKI policy. The most technical bucket by comment density on long threads.
7. Domain dedupe ✅
148 unique domains across 200 items. Concentration is real but narrow: github.com is the only double-digit domain.
| stories | points | comments | domain | top story |
|---|---|---|---|---|
| 24 | 2,750 | 917 | github.com | DeepSeek just open-sourced its inference engine |
| 3 | 1,323 | 982 | www.youtube.com | I built a drone with only one motor video |
| 18 | 682 | 730 | (text/self) | Ask HN: How to deal with shipping AI-written code you don' |
| 1 | 652 | 147 | alexwang.ai | You could have invented transformers from memory |
| 1 | 626 | 543 | chriskiehl.com | It's still ok to enjoy programming |
| 1 | 619 | 286 | lwn.net | Linux 7.3 |
| 1 | 601 | 282 | api-docs.deepseek.com | DeepSeek search and fetch – $0.75 per 1000 successful requ |
| 1 | 591 | 114 | mistral.ai | Timestral: Mistral's time-series foundation models |
| 1 | 577 | 195 | marc.info | Wine ported to OpenBSD |
| 1 | 546 | 195 | karrisaarinen.com | Someone behind the software |
| 2 | 508 | 237 | arxiv.org | Hybrid Reasoning Agents: LLM agents that think in latent s |
| 1 | 503 | 146 | redact.dev | WhatsApp's help pages hid LLM instructions: dont recommend |
| 1 | 482 | 468 | po-ru.com | I no longer care to work on any Ruby gems so I've archived |
| 1 | 480 | 206 | www.minimax.io | MiniMax M3.1 Flash |
| 1 | 478 | 147 | starcraft-shooter-2026.pages.dev | Starcraft: Ashfall |
| 2 | 408 | 118 | spectrum.ieee.org | Alternatives to animal testing are finally taking off |
| 2 | 345 | 213 | www.sciencealert.com | Dogs seem to agree with humans that 'bouba' is round and ' |
| 1 | 345 | 58 | home.cern | CERN and Mistral sign a statement of intent to establish a |
| 1 | 332 | 106 | www.openbsd.org | OpenBSD 8.0 |
| 1 | 329 | 86 | llmspeed.dev | Show HN: Llmspeed – feel how fast a local LLM runs before |
| 1 | 316 | 244 | www.nbcnews.com | Ukraine claims first drone evacuation of wounded soldier |
| 1 | 310 | 270 | www.reuters.com | DeepSeek banned from U.S. federal civilian agencies under |
| 1 | 297 | 213 | jrdsgl.com | If you don't run your own LLM proxy, how do you know whats |
| 1 | 288 | 324 | developer.apple.com | macOS 15.8.2 Breaks OpenGL |
| 1 | 281 | 123 | colo.to | William Gibson and the trademarking of cyberspace |
Domains carrying more than one story: github.com (24), www.youtube.com (3), (text/self) (18), arxiv.org (2), spectrum.ieee.org (2), www.sciencealert.com (2), www.wsj.com (2), www.quantamagazine.org (2), www.bbc.com (2), www.nytimes.com (2), www.theregister.com (2), nationalinterest.org (2), edconway.substack.com (2).
8. Link integrity ✅
Every extracted link was fetched (HEAD, then GET fallback) to confirm it resolves. 165 of 182 links returned 2xx/3xx (91%).
The 17 that did not are bot/paywall blocks, not dead links — a control re-test of two of them (dns.museum, calabro.io/ohbf) returned 200 under a browser user-agent, which is how they scored 404/405 in the first pass. Paywalled and bot-walled publishers (Reuters, WSJ, NYT, Politico, FT, Neowin, npm) return 401/403 to a non-browser client by design.
No claim in this digest rests on the body of any blocked page; only title, URL, points and comment count are used, and all four are API fields.
9. Coverage gaps & limitations
newstoriesis a ~30-minute window. HN'snewstoriesendpoint returns the 500 most recent submissions regardless of score. In this pull that was 40 items averaging 1.4 points — it is a freshness signal and must not be read as "what is rising".askstoriesreturns 33 items total — the entire Ask HN surface, not a sample of it.showstoriesreturned 148; 25 were drawn.- Scores are a snapshot. The two API snapshots used for §3 were taken seconds apart (this build has no measured-velocity section), which is short relative to a multi-day thread. Measured velocity therefore captures the live edge of the front page, not the full arc of any thread.
- Theme buckets are keyword-derived. Titles only, lowercased, ordered first-match-wins with an explicit override table for known misfilings. A thread that is genuinely cross-domain is forced into one bucket.
- No comment bodies were fetched. Points, comment counts, titles and links are API facts. No claim in this digest rests on what any commenter said.
- One
jobpost in the 200 (see §1) is excluded from points aggregates.
10. Method (reproducible)
python3 hn200_pull4.py # 4 cohorts, stratified quotas -> 200 unique ids -> item fetch
python3 hn200_themes6.py # ordered title-first classifier + override table
python3 hn200_analyze.py # domain dedupe, derived velocity, link/text split
python3 hn200_velocity.py # snapshot B + derived rate with age floor
python3 hn200_snapC.py # snapshot C after the real window -> MEASURED velocity
python3 hn200_linkcheck.py # HTTP status of every extracted link
python3 hn200_digest2.py # this file
Raw artifacts in ~/.hermes/profiles/echo/cache/scratch/: hn200_items.json, hn200_domains.json, hn200_themes.json, hn200_ids.json, hn200_meta.json, hn200_snapC.json.
Sources
- https://hacker-news.firebaseio.com/v0/topstories.json
- https://hacker-news.firebaseio.com/v0/newstories.json
- https://hacker-news.firebaseio.com/v0/showstories.json
- https://hacker-news.firebaseio.com/v0/askstories.json
- https://hacker-news.firebaseio.com/v0/item/{id}.json (200 calls, one per story)
- https://news.ycombinator.com/ — front page, cross-checked against the API sample
Digest generated 2026-10-20 11:56 AEDT by Echo. Every figure recomputed from the 200-item API snapshot; no figure copied from a rendered page.

