frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

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

https://0xghost.dev/blog/std-move-deep-dive/
35•signa11•2d ago•9 comments

The Concise TypeScript Book

https://github.com/gibbok/typescript-book
70•javatuts•3h ago•7 comments

Vojtux – Unofficial Linux Distribution Aimed at Visually Impaired Users

https://github.com/vojtapolasek/vojtux
33•TheWiggles•3d ago•4 comments

More than one hundred years of Film Sizes

https://wichm.home.xs4all.nl/filmsize.html
13•exvi•1h ago•0 comments

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

https://github.com/OlaProeis/Ferrite
145•OlaProis•7h ago•54 comments

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

https://www.hollywoodreporter.com/tv/tv-news/black-mirror-bandersnatch-real-life-works-influences...
28•rafaepta•5d ago•7 comments

Finding and fixing Ghostty's largest memory leak

https://mitchellh.com/writing/ghostty-memory-leak-fix
421•thorel•14h ago•91 comments

You are not required to close your <p>, <li>, <img>, or <br> tags in HTML

https://blog.novalistic.com/archives/2017/08/optional-end-tags-in-html/
7•jen729w•1d ago•3 comments

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

https://trails.pieterma.es/
339•pmaze•16h ago•90 comments

My Home Fibre Network Disintegrated

https://alienchow.dev/post/fibre_disintegration/
137•alienchow•5h ago•113 comments

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

https://devblog.archlinux.page/2026/a-year-of-work-on-the-alpm-project/
54•susam•7h ago•5 comments

A battle over Canada’s mystery brain disease

https://www.bbc.com/news/articles/c623r47d67lo
132•lewww•4h ago•87 comments

Code and Let Live

https://fly.io/blog/code-and-let-live/
318•usrme•1d ago•115 comments

Open Chaos: A self-evolving open-source project

https://www.openchaos.dev/
372•stefanvdw1•17h ago•78 comments

An Experimental Approach to Printf in HLSL

https://www.abolishcrlf.org//2025/12/31/Printf.html
25•ibobev•3d ago•1 comments

CPU Counters on Apple Silicon: article + tool

https://blog.bugsiki.dev/posts/apple-pmu/
69•verte_zerg•3d ago•0 comments

AI is a business model stress test

https://dri.es/ai-is-a-business-model-stress-test
247•amarsahinovic•16h ago•250 comments

I build products to get "unplugged" from the internet

https://getunplugged.io/I-build-products-to-get-unplugged
17•keplerjst•4h ago•4 comments

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

102•jamesponddotco•9h ago•30 comments

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

https://www.economist.com/united-states/2026/01/08/why-overdose-deaths-are-falling-in-america
125•marojejian•13h ago•97 comments

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

https://github.com/unhaya/vam-seek
26•haasiy•6h ago•3 comments

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

https://llmholdem.com/
108•projectyang•14h ago•55 comments

Ripple: The Elegant TypeScript UI Framework

https://jsdev.space/meet-ripple/
16•javatuts•5h ago•11 comments

Sisyphus Now Lives in Oh My Claude

https://github.com/Yeachan-Heo/oh-my-claude-sisyphus
27•deckardt•7h ago•15 comments

ASCII-Driven Development

https://medium.com/@calufa/ascii-driven-development-850f66661351
124•_hfqa•3d ago•78 comments

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

https://github.com/apify/mcp-cli
37•jancurn•4d ago•3 comments

Workers at Redmond SpaceX lab exposed to toxic chemicals

https://www.fox13seattle.com/video/fmc-w1ga4pk97gxq0hj5
100•SilverElfin•6h ago•18 comments

Visual regression tests for personal blogs

https://marending.dev/notes/visual-testing/
15•beingflo•4d ago•4 comments

Code Is Clay

https://campedersen.com/code-is-clay
63•ecto•13h ago•32 comments

Kodbox: Open-source cloud desktop with multi-storage fusion and web IDE

https://github.com/kalcaddle/kodbox
24•indigodaddy•8h ago•0 comments
Open in hackernews

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

102•jamesponddotco•9h ago
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...

Comments

wredcoll•9h ago
I applaud the effort, but last time I tried this the major issue was the sheer amount of book data only available from amazon.com and scraping that is tedious to put it mildly.
jamesponddotco•9h ago
Hardcover and ISBNDB have a good amount of data, with Hardcover being excellent for getting good covers and genres.

I'm hoping Goodreads and Anna's Archive will help fill in the gaps, especially since Anna's Archive have gigantic database dumps available[1].

[1]: https://todo.sr.ht/~pagina394/librario/12

culi•2h ago
You should also consider OpenLibrary and LibraryThing. Both of which have good coverage on WikiData which also aggregates identifiers.

In fact, now that I think about it, you could also contribute your work to WikiData. I don't see ISBNdb ids on WikiData so you could write a script to make those contributions. Then anyone else using WikiData for this sort of thing can benefit from your work

ksr•9h ago
Nice, I might try your API for my ISBN extractor / formatter at https://github.com/infojunkie/isbn-info.js

Right now, I use node-isbn https://www.npmjs.com/package/node-isbn which mostly works well but is getting old in the tooth.

jamesponddotco•8h ago
Feel free to do so, just keep in mind that the demo server might be unstable and can break at any moment, haha.

I wrote a Go SDK[1] for the service, maybe I'll try writing one in TypeScript tomorrow.

[1]: https://git.sr.ht/~pagina394/librario-go

jamesponddotco•8h ago
Created a ticket[1] to remind myself to work on this.

[1]: https://todo.sr.ht/~pagina394/librario/22

ksr•8h ago
Will keep an eye, thanks!
moritzruth•8h ago
What do you think about BookBrainz?

https://bookbrainz.org/

jamesponddotco•8h ago
First time I'm seeing it, to be honest, but it looks interesting. I do plan on having an UI for Librario (built a few mockups yesterday[1][2][3]), and I think the idea is similar, but BookBrainz looks bigger in scope.

I could add them as an extractor, I suppose :thinking:

[1]: https://i.cpimg.sh/pexvlwybvbkzuuk8.png

[2]: https://i.cpimg.sh/eypej9bshk2udtqd.png

[3]: https://i.cpimg.sh/6iw3z0jtrhfytn2u.png

nmstoker•8h ago
This is great - the service and that you're extending it and considering a UI.

Personally I would go with option 2 as the colour from the covers beats the anaemic feel of 1 and it seems more original than the search with grid below of 3.

jamesponddotco•8h ago
Glad you liked the idea!

Number two is what my wife and I prefer too, and likely what's going to be chosen in the end.

WillAdams•6h ago
Doesn't seem to have a very compleat dataset --- the first book I thought to lok for, Hal Clement's _Space Lash_ (originally published as _Small Changes_) is absent, and I didn't see the later collection _Music of Many Sphere_ either:

https://www.goodreads.com/book/show/939760.Music_of_Many_Sph...

cmaury•8h ago
Are you able to pull upcoming titles? All I want is a weekly/monthly list of books by authors I've ready which are coming out, and I've not been able to find it or to build it.
jamesponddotco•8h ago
If the data is present in one of the extractors, yes, but I think only Amazon and similar stores keep this kind of data right now. We don't have a extractor for Amazon yet.

After v1.0.0 is out I plan to add the ability to add books manually to the database, at which point we'll be able to start improving the database without relying on third-party services.

culi•3h ago
A couple years I looked for a similar service and failed to find it. I did however find this incredible podcast network called New Books In where they interview authors about their new books. It's a massive network that's broken down by categories that can get pretty niche. Everything from "Digital Humanities" to "Diplomatic History" to "Critical Theory". Episodes appear in multiple categories so broad categories like "Science" also exist

https://newbooksnetwork.com/subscribe

It's definitely biased towards academia which I personally see as a pro not a con

wizzwizz4•8h ago
Please ensure that your database keeps track of whence data was obtained, and when. It's exceptionally frustrating when automated data ingesting systems overwrite manually-corrected data with automatically-generated wrong data: keeping track of provenance is a vital step towards keeping track of authoritativeness.
jamesponddotco•7h ago
We don't support POST, PATCH, and whatnot yet so I didn't take that into account yet, but it's in the plans.

Still need to figure out how this will work, though.

fc417fc802•6h ago
Since you support merging fields you likely would want to track provenance (including timestamp) on a per-field basis. Perhaps via an ID for the originating request.

Although I would suggest that rather than merge (and discard) on initial lookup it might be better to remember each individual request. That way when you inevitably decide to fix or improve things later you could also regenerate all the existing records. If the excess data becomes an issue you can always throw it out later.

I say all this because I've been frustrated by the quantity of subtle inaccuracies encountered when looking things up with these services in the past. Depending on the work sometimes the entries feel less like authoritative records and more like best effort educated guesses.

krick•7h ago
Does it handle languages other than English? I remember trying out some APIs like that for some tasks, and while I managed to find titles in English somewhat successfully, any other languages (be it the original title, or a translation of some fairly well-known book) were basically inaccessible.
jamesponddotco•7h ago
I only tested English and Brazilian Portuguese so far, and Brazilian Portuguese worked, with translator information included.
fc417fc802•7h ago
You're most likely to run into issues with non-latin languages. Particularly picograms and the associated schemes for how to interpret them in a context sensitive manner. Substring search for example is likely to be broken in my experience.
apublicfrog•7h ago
Wow. I don't have any use for this personally, but your post is really well presented, detailed and sourced. I hope it goes well!
jamesponddotco•7h ago
Thanks! It's a compilation of several random comments I made for a few months, haha.
karlding•6h ago
Do you handle books with no ISBN?

I’ve recently acquired some photo books that don’t appear to have any ISBN but are listed on WorldCat and have OCLC Numbers and are catalogued in the Japanese National Diet Library. Not sure if they actually don't have ISBNs or if I just haven't been able to find them, but from what I got from some research it's quite common for self-published books.

ocdtrekkie•6h ago
Library of Congress data seems like a huge omission especially for something named after a librarian. ;) It is a very easy API to consume too.
culi•6h ago
I find WikiData to be perfect for aggregating identifiers. I mostly work with species names and it's perfect for getting the iNaturalist, GBIF, Open Tree of Life, Catalogue of Life, etc identities all in one query

I haven't tried it for books. I imagine it's not sufficiently complete to serve as a backbone but a quick look at an example book gives me the ids for OpenLibrary, Librarything, Goodreads, Bing, and even niche stuff like the National Library of Poland MMS ID.

https://www.wikidata.org/wiki/Q108922801

bbor•1h ago
Cracks me up that OP is trying Anna's Archive before Wikidata, NGL! Both great sources, though.

I recently (a year ago... wow) dipped my toe into the world of library science through Wikidata, and was shocked at just how complex it is. OP's work looks really solid, but I hope they're aware of how mature the field is!

For illustration, here are just the book-relevant ID sources I focused on from Wikidata:

  ARCHIVERS: 
  Library of Congress Control Number    `P1144` (173M)
  Open Library                          `P648`  (39M)
  Online Computer Library Center        `P10832` (10M)
  German National Library               `P227`  (44M)
  Smithsonian Institute                 `P7851` (155M)
  Smitsonian Digital Ark                `P9473` (3M)
  U.S. Office of Sci. & Tech. Info.     `P3894`

  PUBLISHERS:
  Google Books                          `P675`  (1M)
  Project Gutenberg                     `P2034` (70K)
  Amazon                                `P5749`

  CATALOGUERS:
  International Standard Book Number    `P212`
  Wikidata                              `P8379` (115B)
  EU Knowledge Graph                    `P11012`
  Factgrid Database                     `P10787` (0.4M)
  Google Knowledge Graph                `P2671` (500B)
sijirama•5h ago
hella hella cool

goodluck

eichin•4h ago
Tried throwing a batch of known-to-be-in-Amazon ISBN's through (from a recent "export my data", so even if they're old amazon fundamentally knows them.) Got 500's for a handful of the first hundred, then a bunch of 502/503s (so, single threaded, but part of the HN hug to death, sorry!)

(Only the first 4 or so were json errors, the rest were html-from-nginx, if that matters.)

omederos•4h ago
502 Bad Gateway :|