惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

TaoSecurity Blog
TaoSecurity Blog
L
LINUX DO - 最新话题
Help Net Security
Help Net Security
N
News | PayPal Newsroom
www.infosecurity-magazine.com
www.infosecurity-magazine.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
The Last Watchdog
The Last Watchdog
S
Security @ Cisco Blogs
W
WeLiveSecurity
C
CXSECURITY Database RSS Feed - CXSecurity.com
Webroot Blog
Webroot Blog
T
Troy Hunt's Blog
V
Vulnerabilities – Threatpost
Google Online Security Blog
Google Online Security Blog
N
News and Events Feed by Topic
T
Threat Research - Cisco Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tor Project blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
Darknet – Hacking Tools, Hacker News & Cyber Security
PCI Perspectives
PCI Perspectives
Google DeepMind News
Google DeepMind News
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Apple Machine Learning Research
Apple Machine Learning Research
IT之家
IT之家
S
SegmentFault 最新的问题
J
Java Code Geeks
P
Privacy & Cybersecurity Law Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 【当耐特】
博客园_首页
H
Hacker News: Front Page
T
Threatpost
Jina AI
Jina AI
博客园 - Franky
月光博客
月光博客
L
LINUX DO - 热门话题
The Cloudflare Blog
H
Heimdal Security Blog
博客园 - 司徒正美
酷 壳 – CoolShell
酷 壳 – CoolShell
Cloudbric
Cloudbric
雷峰网
雷峰网
Hugging Face - Blog
Hugging Face - Blog
S
Secure Thoughts
T
Tenable Blog
I
Intezer
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

Maggie Appleton

The Dark Forest and Generative AI One Developer, Two Dozen Agents, Zero Alignment Gas Town’s Agent Patterns, Design Bottlenecks, and Vibecoding at Scale January 2026 | Maggie Appleton A Treatise on AI Chatbots Undermining the Enlightenment A Brief History & Ethos of the Digital Garden Vibe Code is Legacy Code May 2025 | Maggie Appleton Home-Cooked Software and Barefoot Developers Statistically, When Will My Baby Be Born? Speculative Calendar Events ChatGPT Would be a Decent Policy Advisor March 2025 | Maggie Appleton The Expanding Dark Forest and Generative AI Humanity's Last Exam Squish Meets Structure Common Misconceptions in AI Undetected AI Exam Answers Unbaited Smidgeons Growing a Human: The First 30 Weeks How to Import Academic Papers from Zotero into Tana December 2024 | Maggie Appleton Aesthetic Command Lines with Hyper, Spaceship, and Oh My Zsh Leaving Elicit July 2024 | Maggie Appleton A Short History of Bi-Directional Links The Pattern Language of Project Xanadu Assumed Audiences Ambient Co-presence On Opening Essays, Conference Talks, and Jam Jars Spinning Worlds, Seasickness, and Dealing with Vestibular Neuritis A Collection of Design Engineers Gathering Structures Daily Notes Pages Historical Trails December 2023 | Maggie Appleton September 2023 | Maggie Appleton Digital Gardening for Non-Technical Folks Language Model Sketchbook, or Why I Hate Chatbots June 2023 | Maggie Appleton Computational Notebooks Folk Interfaces Reverse Outlining with Language Models Command K Bars Spatial Web Browsing A Picture Worth a Thousand Programmes Programmable Notes Programming Portals Teenage Skeuomorphic Desktop Designs Tending Evergreen Notes in Roam Research Growing the Evergreens Why You Own an iPad and Still Can't Draw A Brief Introduction to Digital Anthropology Transclusion and Transcopyright Dreams The Block-Paved Path to Structured Data Empty Pointers and Constellations of AI Metaphors We Web By The Gift Economy Epistemic Disclosure November 2022 | Maggie Appleton Joining Ought July 2022 | Maggie Appleton The Linear Oppression of Note-taking Apps Paleolithic Nostalgia The Finest Narrative Non-Fiction Essays Algorithmic Transparency October 2021 | Maggie Appleton Plebeian Programming with Keyboard Maestro The Cultural Anthropology of React August 2021 | Maggie Appleton Natureculture, Moral Purity, and Cultural Boundaries The Echo & Narcissus Writing Club Pink, Soft, Glittering Developers Fetishism & Mechanical Keyboards Making Programming Visual, Spatial, and Learnable Organic, Local, Artisan Data Storage Positioning Elements & Scrollytelling in CSS Painting Roam Research with Custom CSS A Digital Anthropology Reading List The Eponymous Laws of Programming A History of Cyborgs Neologisms GreenSock Animations with React Hooks The Bare Essentials of Greensock September 2020 | Maggie Appleton Illustrating Gatsby's Key Concepts Problematic Proteins New Harvest & Illustrating the Cultivated Meat Podcast Synecdoche: Drawing the Part for the Whole A Meta-Tour of This Site Douglas, Dirt, and Matter Out of Place The Knowledge Hydrant A Naïve Exploration of Computer-Supported Collaborative Learning Silent Synchronous Reading Sessions What the Fork is React Suspense? Visually Workshopping the AWS Cloud Are Data Unions the Future of Data? Pattern Languages in Programming and Interface Design A Metaphorical Reading Collection
Interoperable Personal Libraries and Ad Hoc Reading Groups
2022-02-20 · via Maggie Appleton

The IndieWeb community recently hosted an open, barcamp -style session on personal libraries . Specifically, how to create systems on the open web where people can publish their personal book collections, share and find other people’s book lists, and generally use books as a medium to connect with each other.

You can do most of these things via existing platforms; Goodreads being the canonical example. You can track your reading, write reviews, join reading groups, and browse curated book lists. But like all private, walled gardens, it comes with a few predictable catches:

  • Your library data belongs to Goodreads and you’ll have trouble ever getting it out again. Goodreads used to provide an API for developers, but as of December 2020 they no longer issue new keys. There’s probably good reason for this, but it speaks to fundamental issues of access and power in closed ecosystems If Goodreads goes down, it’ll take all your books, groups, and connections with it.
  • You have no power or agency as a user to adapt or extend the Goodreads system to fit your own needs. You have to accept and use whatever features and affordances the product managers, designers, and developers of Goodreads deem important.

This doesn’t make Goodreads evil. It makes it unappealing for people who care about long-term resiliency, open data on the web, and end-users having agency over their tools.

The pop-up session focused on exploring alternatives to closed platforms; what pieces of infrastructure might enable us to build a ‘decentralized Goodreads’? Plenty of us publish personal libraries to our own websites, but rarely in common formats that can talk to one another or pool data into communal centres to find connections and relationships.

Data Exchange Formats

Most of the pop-up focused on the issue of data exchange formats. How do we get independent websites to agree on a common format for books? This includes both the format the data is passed between sites in (RSS, JSON, OPML, CSV), and the shape of the data itself.

My Library and Antilibrary book collections on this site are perfect examples of poorly formatted data that can’t be automatically read by other sites. They’re currently generated by an object in a JavaScript file :

export const bookData = [
	{
		title: "Computers as Theatre",
		author: "Brenda Laurel",
		cover: "/images/books/theatre.webp",
		link: "https://www.google.co.uk/books/edition/Computers_as_Theatre/NedQAAAAMAAJ",
	},
	{
		title: "Everything, All the Time, Everywhere",
		subtitle: "How We Became Postmodern",
		author: "Stuart Jeffries",
		cover: "/images/books/everything.webp",
		link: "https://www.google.co.uk/books/edition/Everything_All_the_Time_Everywhere/pchGEAAAQBAJ",
	},
	{
		title: "The Design of Everyday Things",
		author: "Don Norman",
		cover: "/images/books/designthings.webp",
		link: "https://www.google.co.uk/books/edition/The_Design_of_Everyday_Things/heCtnQEACAAJ",
	},
];

I have a title, author, a cover image in a local image folder, and a link to the book record on Google Books. This might be all I need to display a bunch of books on my library page, but it’s poorly designed from an interoperability standpoint.

I’d never considered the limitations of this approach before the event, only because I hadn’t thought ahead to the possiblity of publishing this list in ways others could consume it. I also built this website under the mantra of “do the bare minimum and no more” so it’s a garden of low-hanging fruit

How could we improve the formatting of this data to standardise it? First, we’d have to make sure each book entry had a set of properties that would help identify it in a larger context. Title and author are useful, but they’re not enough. We’d also need a UID (unique identification) number like an ISBN to make sure we don’t misidentify books – duplicate titles and author names are uncommon but not unheard of.

People in the pop-up session suggested adding a number of optional, nice-to-have properties like reading status (to read, reading, read), page count, related notes, reading start and end dates, rating (out of 5), and genre/tags.

These would be harder to standardise than the core properties and factual metadata, but hold much more potential for enabling rich social interactions around books.

A few people reasonably pointed out we’ll never have a single, unified format. It’s better to pursue forgiving and flexible standards that enable people to publish books in a variety of formats. And instead build tools that can translate between formats and map properties from one type to another.

Prior Art and Existing Systems

This problem space isn’t new and plenty of people have built bits and pieces of potential solutions.

There are a number of existing standard formats for books:

  • Schema.org has a Book type with an extensive list of properties
  • Google has a standard format for surfacing books in search results

Tom Critchlow wrote a piece proposing Library JSON - a standard format for book data exchange. Tom Zijlstra adapted it to OPML format OMPL = Outline processor markup language. A format used to import and export from RSS feeds. using the properties defined on the Schema.org book type.

Publishing feeds in either JSON or RSS would allow us to create streams of books and subscribe to them using existing systems. Working with RSS feeds and writing JSON isn’t the most user friendly interface though. Most people outside the world of web development would need something closer to a traditional GUI to manage their collections. Some people suggested spreadsheets as an accessible interface format.

Another possibility is encouraging people to shift from platforms like Goodreads over to more open platforms with API access. The Internet Archive has setup Open Library which is a non-profit, open-source book catalogue. They provide both a user-friendly interface for creating book lists, and have an API that allows you to fetch book information like covers, authors, and lists (currently reading, best sci-fi novels, etc.).

Frankly, these data exchange issues are outside my wheelhouse. I’m glad other people get a kick out of standardising schemas. I’m just here for the UX design challenges and social implications once we’ve sorted out how to surface this data.

An idea I brought to the event and ended up hosting a session on was ad hoc reading groups – discussions and meetups facilitated by our public bookshelves.

Personal bookshelves on website are a jazzy feature, but it’s sometimes unclear what they’re for. What does publishing a personal library to the web do for us?

They certainly help lay contextual groundwork for people visiting our personal websites. They tell others what kind of ideas we’ve encountered and what disciplines we’ve studied.

They also work well as invitations. Books are an easy starting point for conversation; “oh you read that too!”. People frequently reference a book from my shelf when they first send a Twitter DM or email.

They could do more though. Publishing a book to a public library could be a way to signal you want to talk to other people about it. We all have at least a few obscure or niche titles on our shelves, and it can be hard to find other people willing to read and discuss them. Why not simply start with the people who are already interested in that book?

Bookclubs and reading clubs are obviously well established social formats we can borrow from to imagine how this could work. Usually you gather a group of people, then muddle through some democratic system of voting on books, and eventually everyone compromises on what to read. This is slightly easier with fiction, but non-fiction gets particularly tricky, unless you gather a group based on a specific discipline or domain.

Taking a book-first, rather than a group-first approach would enable reading groups who don’t have to compromise on their book choices. They could gather only once or twice to discuss the book, then go their seperate ways. No long-term committment to organising and maintaining a bookclub required. For the record, I’m not against the group-first bookclub approach. I was raised in a home that hosted multiple bookclubs a week, and I’ve been part of plenty of good ones as an adult. I just think there’s room for other alternative formats for reading groups.

We would need a system that enables people to:

  • Publish a list of books they would be willing to discuss with other people to the open web. Antilibraries – collections of books you haven’t read yet but would like to read – are particularly well suited to this proposition.
  • See which books people in their social network want to discuss, and/or subscribe to other people’s lists
  • Be notified when 4+ people in their network have the same book on their discussion list – possibly via an email thread? The ideal number of participants in a discussion group is obviously a matter of subjective preference. I’ve always found 4-7 an ideal number. Enough to lose one. Not too many to jostle for talking time.
  • Coordinate and schedule a time to read and discuss the book with that group.

There are plenty of troublesome assumptions and unanswered pragmatic issues in that sketch. What’s a “social network” (are using the Twitter API to check for mutuals)? What kind of system is scanning for book matches between lists? Is it capable of firing off group email chains once it finds one? How would it handle keeping email addresses private and double-checking people want to opt-in to a particular discussion group? Could people see upcoming groups and choose to join one opportunistically?

The more I think through these questions, the more it feels necessary to have some third-party intemediary service in the middle to match up book lists and email out proposed discussion groups to people. Not a “platform,” but a mediator of independent websites. Ideally one with minimal maitenance costs and moderation work, lest someone try to turn it into a ‘startup’.

I have to think about it more. My friends over at Hyperlink Academy are experimenting with models and infrastructure to quickly spin up clubs and peer-to-peer learning groups – some of which could be part of the solution.

If you have ideas about how we might duct-tape together internet protocols or existing services to make something like this possible, I’d love to read them. Preferably as a public essay instead of a DM, but I appreciate that’s not everyone’s MO.