Hacker News

Latest

More than one hundred years of Film Sizes

2026-01-11 @ 08:22:44Points: 31Comments: 5

The Concise TypeScript Book

2026-01-11 @ 05:42:03Points: 88Comments: 20

A battle over Canada’s mystery brain disease

2026-01-11 @ 04:45:27Points: 145Comments: 97

Ripple: The Elegant TypeScript UI Framework

2026-01-11 @ 04:32:47Points: 23Comments: 17

My Home Fibre Network Disintegrated

2026-01-11 @ 04:19:04Points: 150Comments: 130

Max Payne – two decades later – Graphics Critique

2026-01-11 @ 03:43:44Points: 34Comments: 10

Workers at Redmond SpaceX lab exposed to toxic chemicals

2026-01-11 @ 03:15:14Points: 116Comments: 28

Show HN: VAM Seek – 2D video navigation grid, 15KB, zero server load

2026-01-11 @ 02:57:34Points: 33Comments: 4

VAM Seek renders a 2D thumbnail grid next to your video. Click any cell to jump. All frame extraction happens client-side via canvas – no server processing, no pre-generated thumbnails.

- 15KB, zero dependencies - One-line integration - Works with any <video> element

Live demo: https://haasiy.main.jp/vam_web/deploy/lolipop/index.html

Would love feedback!

A Year of Work on the Arch Linux Package Management (ALPM) Project

2026-01-11 @ 02:08:14Points: 59Comments: 11

Sisyphus Now Lives in Oh My Claude

2026-01-11 @ 02:00:45Points: 32Comments: 20

Show HN: Ferrite – Markdown editor in Rust with native Mermaid diagram rendering

2026-01-11 @ 01:50:01Points: 167Comments: 80

Built a Markdown editor using Rust + egui. v0.2.1 just dropped with major Mermaid improvements:

→ Native Mermaid diagrams - Flowcharts, sequence, state, ER, git graphs - pure Rust, no JS

→ Split view - Raw + rendered side-by-side with sync scrolling

→ Syntax highlighting - 40+ languages with large file optimization

→ JSON/YAML/TOML tree viewer - Structured editing with expand/collapse

→ Git integration - File tree shows modified/staged/untracked status

Also: minimap, zen mode, auto-save, session restore, code folding indicators.

~15MB binary, instant startup. Windows/Linux/macOS.

GitHub: https://github.com/OlaProeis/Ferrite

v0.2.2 coming soon with performance improvements for large files. Looking for feedback!

Show HN: Librario, a book metadata API that aggregates G Books, ISBNDB, and more

2026-01-10 @ 23:45:25Points: 106Comments: 36

TLDR: Librario is a book metadata API that aggregates data from Google Books, ISBNDB, and Hardcover into a single response, solving the problem of no single source having complete book information. It's currently pre-alpha, AGPL-licensed, and available to try now[0].

My wife and I have a personal library with around 1,800 books. I started working on a library management tool for us, but I quickly realized I needed a source of data for book information, and none of the solutions available provided all the data I needed. One might provide the series, the other might provide genres, and another might provide a good cover, but none provided everything.

So I started working on Librario, a book metadata aggregation API written in Go. It fetches information about books from multiple sources (Google Books, ISBNDB, Hardcover. Working on Goodreads and Anna's Archive next.), merges everything, and saves it all to a PostgreSQL database for future lookups. The idea is that the database gets stronger over time as more books are queried.

You can see an example response here[1], or try it yourself:

  curl -s -H 'Authorization: Bearer librario_ARbmrp1fjBpDywzhvrQcByA4sZ9pn7D5HEk0kmS34eqRcaujyt0enCZ' \
  'https://api.librario.dev/v1/book/9781328879943' | jq .
  
This is pre-alpha and runs on a small VPS, so keep that in mind. I never hit the limits in the third-party services, so depending on how this post goes, I’ll or will not find out if the code handles that well.

The merger is the heart of the service, and figuring out how to combine conflicting data from different sources was the hardest part. In the end I decided to use field-specific strategies which are quite naive, but work for now.

Each extractor has a priority, and results are sorted by that priority before merging. But priority alone isn't enough, so different fields need different treatment.

For example:

- Titles use a scoring system. I penalize titles containing parentheses or brackets because sources sometimes shove subtitles into the main title field. Overly long titles (80+ chars) also get penalized since they often contain edition information or other metadata that belongs elsewhere.

- Covers collect all candidate URLs, then a separate fetcher downloads and scores them by dimensions and quality. The best one gets stored locally and served from the server.

For most other fields (publisher, language, page count), I just take the first non-empty value by priority. Simple, but it works.

Recently added a caching layer[2] which sped things up nicely. I considered migrating from net/http to fiber at some point[3], but decided against it. Going outside the standard library felt wrong, and the migration didn't provide much in the end.

The database layer is being rewritten before v1.0[4]. I'll be honest: the original schema was written by AI, and while I tried to guide it in the right direction with SQLC[5] and good documentation, database design isn't my strong suit and I couldn't confidently vouch for the code. Rather than ship something I don't fully understand, I hired the developers from SourceHut[6] to rewrite it properly.

I've got a 5-month-old and we're still adjusting to their schedule, so development is slow. I've mentioned this project in a few HN threads before[7], so I’m pretty happy to finally have something people can try.

Code is AGPL and on SourceHut[8].

Feedback and patches[9] are very welcome :)

[0]: https://sr.ht/~pagina394/librario/

[1]: https://paste.sr.ht/~jamesponddotco/a6c3b1130133f384cffd25b3...

[2]: https://todo.sr.ht/~pagina394/librario/16

[3]: https://todo.sr.ht/~pagina394/librario/13

[4]: https://todo.sr.ht/~pagina394/librario/14

[5]: https://sqlc.dev

[6]: https://sourcehut.org/consultancy/

[7]: https://news.ycombinator.com/item?id=45419234

[8]: https://sr.ht/~pagina394/librario/

[9]: https://git.sr.ht/~pagina394/librario/tree/trunk/item/CONTRI...

Overdose deaths are falling in America because of a 'supply shock': study

2026-01-10 @ 19:54:49Points: 139Comments: 110

Code Is Clay

2026-01-10 @ 19:43:57Points: 71Comments: 38

Show HN: Play poker with LLMs, or watch them play against each other

2026-01-10 @ 19:27:39Points: 117Comments: 56

I built this website which allows you to:

Spectate: Watch different models play against each other.

Play: Create your own table and play hands against the agents directly.

Finding and fixing Ghostty's largest memory leak

2026-01-10 @ 18:58:37Points: 446Comments: 100

Show HN: I used Claude Code to discover connections between 100 books

2026-01-10 @ 16:56:55Points: 360Comments: 96

I built a system for Claude Code to browse 100 non-fiction books and find interesting connections between them.

I started out with a pipeline in stages, chaining together LLM calls to build up a context of the library. I was mainly getting back the insight that I was baking into the prompts, and the results weren't particularly surprising.

On a whim, I gave CC access to my debug CLI tools and found that it wiped the floor with that approach. It gave actually interesting results and required very little orchestration in comparison.

One of my favourite trail of excerpts goes from Jobs’ reality distortion field to Theranos’ fake demos, to Thiel on startup cults, to Hoffer on mass movement charlatans (https://trails.pieterma.es/trail/useful-lies/). A fun tendency is that Claude kept getting distracted by topics of secrecy, conspiracy, and hidden systems - as if the task itself summoned a Foucault’s Pendulum mindset.

Details:

* The books are picked from HN’s favourites (which I collected before: https://hnbooks.pieterma.es/).

* Chunks are indexed by topic using Gemini Flash Lite. The whole library cost about £10.

* Topics are organised into a tree structure using recursive Leiden partitioning and LLM labels. This gives a high-level sense of the themes.

* There are several ways to browse. The most useful are embedding similarity, topic tree siblings, and topics cooccurring within a chunk window.

* Everything is stored in SQLite and manipulated using a set of CLI tools.

I wrote more about the process here: https://pieterma.es/syntopic-reading-claude/

I’m curious if this way of reading resonates for anyone else - LLM-mediated or not.

AI is a business model stress test

2026-01-10 @ 16:56:34Points: 257Comments: 255

Open Chaos: A self-evolving open-source project

2026-01-10 @ 16:03:55Points: 375Comments: 78

I replaced Windows with Linux and everything's going great

2026-01-10 @ 15:26:26Points: 660Comments: 576

Code and Let Live

2026-01-09 @ 19:11:59Points: 342Comments: 123

C++ std::move doesn't move anything: A deep dive into Value Categories

2026-01-09 @ 09:01:33Points: 76Comments: 24

ASCII-Driven Development

2026-01-08 @ 08:18:17Points: 130Comments: 81

Vojtux – Unofficial Linux Distribution Aimed at Visually Impaired Users

2026-01-07 @ 11:43:26Points: 46Comments: 11

CPU Counters on Apple Silicon: article + tool

2026-01-07 @ 11:39:33Points: 89Comments: 0

An Experimental Approach to Printf in HLSL

2026-01-07 @ 09:53:03Points: 27Comments: 2

Visual regression tests for personal blogs

2026-01-06 @ 20:43:12Points: 23Comments: 8

Show HN: mcpc – Universal command-line client for Model Context Protocol (MCP)

2026-01-06 @ 15:05:09Points: 39Comments: 3

Show HN: I built an Open Source screen timer for the m5stickc (Arduino)

2026-01-06 @ 13:51:24Points: 5Comments: 0

This also involved massively over-engineering a solution in order to play with a shiny new gadget (and avoid the in laws at Christmas, obviously)

I've shared some learnings on AI coding with embedded devices, and how I approached the product design/hardware selection side of things.

The Web App is at https://screenie.org - and I'm Open Sourcing the device and web app code later today (links to follow on that site)

'Bandersnatch': The Works That Inspired the 'Black Mirror' Interactive Feature (2019)

2026-01-06 @ 02:07:18Points: 38Comments: 13

Archives

2026

2025

2024

2023

2022