HN user

_bramses

807 karma

Website: https://www.bramadams.dev/

bram @ bramadams . dev

Posts126
Comments70
View on HN
www.bramadams.dev 4d ago

The How and Why of Entity Shorthand

_bramses
2pts0
docs.google.com 1mo ago

Reading Is a System

_bramses
3pts2
github.com 3mo ago

Use Claude to Annotate Handwriting and Photos on iPhone

_bramses
1pts0
apps.apple.com 5mo ago

Show HN: A Question and Annotation Driven Parallel Reading App

_bramses
1pts0
github.com 5mo ago

BookTalk: A Reading Companion That Captures Your Voice

_bramses
1pts0
swote.vercel.app 6mo ago

Swote: Swipe (or drag) Up Quotes from Books

_bramses
1pts0
www.bramadams.dev 7mo ago

My Working Thoughts

_bramses
3pts0
www.bramadams.dev 8mo ago

Sixty Books a Year Book Club

_bramses
2pts0
www.bramadams.dev 9mo ago

My Five Favorite Inventions

_bramses
2pts0
your-commonbase.beehiiv.com 11mo ago

I Was Wrong About Mobile

_bramses
1pts2
your-commonbase.beehiiv.com 1y ago

We Traded Fun for Practicality

_bramses
2pts0
github.com 1y ago

Show HN: The Commonbase Data Structure

_bramses
4pts0
www.bramadams.dev 1y ago

Software is about promises

_bramses
90pts22
www.bramadams.dev 1y ago

Why Can't Coding Be Celebrated Like Art or Sports?

_bramses
3pts3
www.bramadams.dev 1y ago

Almonds Can't Do Math

_bramses
3pts1
www.bramadams.dev 1y ago

The Leverage of Programming Keeps Going Up

_bramses
1pts0
www.bramadams.dev 1y ago

Comment Sections Are Bad for You

_bramses
2pts2
www.bramadams.dev 1y ago

Some Thoughts on Remarkability

_bramses
1pts0
www.bramadams.dev 1y ago

Just Wait a Week

_bramses
3pts0
www.bramadams.dev 1y ago

Are Inboxes Evil?

_bramses
3pts0
www.bramadams.dev 1y ago

Can You Back into a Second Brain with a Collection of Software Features?

_bramses
1pts0
www.bramadams.dev 2y ago

Upgrading a 500 Year Old Technology

_bramses
3pts0
www.bramadams.dev 2y ago

Personal computing paves the way for personal library science

_bramses
193pts51
www.bramadams.dev 2y ago

Personal Library Science

_bramses
1pts0
www.bramadams.dev 2y ago

Your Art or Your Life

_bramses
2pts0
www.bramadams.dev 2y ago

Reset Your Social Media Annually

_bramses
2pts1
www.bramadams.dev 2y ago

Trillions of Lines Written, and We're Still at Day Zero

_bramses
3pts0
www.bramadams.dev 2y ago

You Can Track Real World Time in Custom GPTs

_bramses
1pts0
www.bramadams.dev 2y ago

The History You Miss on Your Way to Work

_bramses
2pts0
www.bramadams.dev 2y ago

A Case for Audio Guides at Museums

_bramses
1pts1

The punchy sentence delivery is so annoying and repetitive. The "X is not Y, its Z" form they all take is headache inducing.

Location: New York, NY

Remote: Yes

Willing to relocate: No

Technologies: JS, Claude, OpenAI, Python, Postgres, React, Node

Résumé/CV: https://www.bramadams.dev/share/

Email: bram@bramadams.dev

Only interested in contract/part-time!

I'm a senior developer who is good at taking your prototype ideas into a more stable form. I have been a developer ambassador at OpenAI, a developer relations at Algolia, and a software engineer at HBO. I can either help you communicate technical ideas internally or externally, or build something.

Thanks for the feedback! I don’t agree with your assessment, since the slideshow is about books, not learning in general, but I’ll take those thoughts into consideration.

I agree with your point wrt fragmentation, but my point is to actually assess the underlying mechanisms and address them more directly.

Reading something you don't want to is going to stifle retention regardless of how you try and quantify it.

I agree and in fact, I point that very thing out in the slide about bad habits of holding onto a book that is not serviceable.

As a meta point many of the things I would talk about are lost in the medium of cutting text for slides, and I apologize that the examples (like the Illustration sections) must be on the responsibility of the reader. It makes more sense when delivered alongside talking!

Im working on a number of projects at once that are all under the umbrellas of: personal library science, booktech, and qualitative improvements to personal life [1]. Notable mentions:

- Life’s Articles, a personal Wikipedia

- Counting Worms, a very fast calorie tracker

- BookTalk, a audio based reading companion for capturing annotations

- Kindle Blocker, a Chrome Extension that earns you minutes on websites by reading with the Kindle app

[1] https://www.bramadams.dev/working-software/

I'm not OP, but heres how I connect Claude Code [1] to Linear MCP [2]. This allows CC to run a natural language type standup with your tasks when you type "standup". Other than that, I use Linear basically in the way they make it, using Projects to track long term initiatives and trying to honor my "in progress" list.

[1] https://gist.github.com/bramses/d59fb1659ec53fda9ec33f60200f...

[2] https://linear.app/integrations/claude

I’m kicking off my 2026 book club! It’s probably a bit different from book clubs you’re familiar with.

Each of us is reading sixty books over 2026, five a month, where every book is self selected by each member.

It’s small, six people, all brought in by application only.

You can check out our shared bookshelf here! (Heavy inspiration from Stripe Press)

https://bookshelf-bookclub.vercel.app/book/cmj4pfpom001gqsbj...

(swipe left/right on mobile, up/down arrows on pc :))

Pretty easily doable by reading multiple books at the same time! Averages out to ~50 pages a day.

The trick is to always keep the book queue filled, so long books that take a while coexist for a while with a number of shorter length ones

I’m starting a book club!

- Sixty books a year (five books a month)

- Self Chosen Books (no forced reading)

- Two recorded Salon style meetings monthly

- Bespoke software for the group including: shared embedding graph of highlights and annotations, IRC chat with @ for members and books and authors, collective bookshelf

- Six members max

Learn more here if interested!

https://www.bramadams.dev/sixty-book-club/

A lot of good ideas in this comment section.

I’ll say this: between store, search, synthesize and share, store and synthesize are consistently the most difficult to nail down.

A society that wishes to succeed in creating an activated and knowledgeable populous should be interested in how to train people to notice better, and to create insightful follows.

In the words of David Deutsch (paraphrasing): knowledge consists of conjecture and error correction

Curious as to why you think so? The goal was to discuss my incorrect assumption of the mobile form factor for my software, but how did it read to you?

Discoveryness. Even if the needed content exists, it’s hard to guarantee that users will find it.

I'm curious as to what you'll think of the UX layer I applied to embeddings for public perusal. I call it "semantic scrolling" since it's not searching exactly, but moving through the cluster by using <summary>/<details> as a tree.

[1] is a single starting point (press the animated arrow to "wiki-hole") and [2] is the entire collection (books, movies, music, animations, etc.)

[1] https://www.sharecommonbase.com/synthesize/1009?id=1009 [2] - https://www.sharecommonbase.com/

thank you, i appreciate it! yes, the software is api first, and much of it’s utility comes from working in other environments like google docs, ios shortcuts, etc..

in essence, the core of the project is a vector database that works for end users who want no fuss quick capture, semantic and fts search, the ability to create new relationships with marginalia.

im not trying to replace tools like obsidian or notion, i think ycb works better with them doing what they do best! i also plan to make the stack self hostable in the near future :)

I recently changed my thought process on the responsibility of readers and writers. I think it is the responsibility of the writer to say something interesting, and then publish said interesting thing somewhere where it can be reached by readers. I think it’s an element of the modern freneticism of the Internet that we expect instant eyeballs.

Old writing is constantly reinvigorated by new readers. In fact, that is the only way that it can continue to live. It is the responsibility of the reader to decide whether a piece of writing is important or not in their context.

As such, I’ve been blogging quite a bit. Because posting on a blog allows for the critical mass of future readers. Anything interesting that I happen to say can be found through a medium that reaches billions of people.

Today, or in the future.

HTTP is basically the printing press. And my website is my media company.

Just because billions of people aren’t consistently reading what’s written, doesn’t mean that the writer has lost their responsibility to write.

Clever!

A method that has worked well for me: divorced databases.

The first database is a plaintext database that stores rows: id, data, and metadata and the second database is a vector database that stores id, embedding. whenever a new row is added the first database makes a POST request to the second database. The second database embeds the data and returns the id of its row. The first database uses that ID to store the plain text.

When searching, the second database is optimized for cosine sim with an HNSW index. It returns the IDs to the first database, which fetch the plaintext to return to the user.

The advantages of this are that the plaintext data can be A/B tested across multiple embedding models without affecting the source, and each database can be provisioned for a specific task. Also lowers hosting costs and security because there only needs to be one central vector database and small provisioned plaintext databases.

From my last comment in August 2024 [1], I have made progress!

The project I'm developing is called Your Commonbase, a self organizing scrapbook built around Personal Library Science.

The big updates are:

1. From Fleeting Note to Connected Note with The Entry/Comment Model - An entry has its own marginalia (comments), which are also embedded as first class data. These comments allow your search model to improve over time, and create surprising clusters. See this video to see an example of the Entry/Comment model in a d3 graph [2]. All the connections are created automatically! Entries go from "fleeting entries" inbox (not linked or commented on) to "main entries" which spread and connect ideas from across the space.

2. Using yCb as a creator - I created a Google Docs extension and have been using it to create Zettelkasten's for my blogs. On average each blog references 12 or more books. This is a real use case of a PKM system outside doing it for the love of the game [3].

There's so much more including mobile upload, [[links]], audio upload, and more, but you can explore the Notion page in [2] to see the features I've added.

[1] https://news.ycombinator.com/item?id=41347206

[2] https://bramses.notion.site/Your-Commonbase-BETA-10b034182dd...

[3] - (blog: https://www.bramadams.dev/issue-59-are-inboxes-evil/ | zettelkasten: https://docs.google.com/document/d/1-eW-hfRxHEMXE70JO7_PC3Lf...)

An active reading habit (of books) is one of the most reliable ways to achieve wisdom. Why?

- Books require a "Goldilocks" amount of sustained, slow effort given to one topic. Not too costly to pursue that it is a bodily harm risk, but not trivial either in terms of time and attention investment. This slows down the frenetic nature of a mind that latches onto heuristics.

- By being exposed to different well-formed ideas (especially if you disagree) widens perspective in ways lived experience can't. A reader is uniquely exposed to ideas from other times in human history, from people who are long gone.

- A reader develops a practical trust in themselves, particularly in that they know they take auto didacticism seriously, and won't shy away from intellectual challenges, which the world presents constantly. As such, they make better judgements.

People often think that being booksmart is having your head filled with useless facts, but this is almost opposite from reality.

If your blog provider supports it, adding a “Open a Random Post” button on your blog makes the experience much more fulfilling in the long term, as you (and others) can revisit different posts from different eras. Websites don’t have physical form that readers can navigate, so we can take advantage of that by adding serendipity manually.

The technique I find most useful is to implement a “linked list” strategy where a chunk has multiple pointers to the entry it is referenced by. This task is done manually, but the diversity of the ways you can reference a particular node go up dramatically.

Another way to look at it, comments. Imagine every comment under this post is a pointer back to the original post. Some will be close in distance, and others will be farther, due to the perception of the authors of the comments themselves. But if you assign each comment a “parent_id”, your access to the post multiplies.

You can see an example of this technique here [1]. I don’t attempt to mind read what the end user will query for, I simply let them tell me, and then index that as a pointer. There are only a finite number of options to represent a given object. But some representations are very, very, very far from the semantic meaning of the core object.

[1] https://x.com/yourcommonbase/status/1833262865194557505

Sure!

The problem with existing knowledge management systems is that they all eventually become victim to scale the operator can no longer manage.

Consider two scenarios:

Scenario 1:

You have a chaotic system of notes, dispersed throughout random pieces of paper and digital notes on your phone and computer. You have a relatively easy go of it when saving new notes (its as simple as pressing "New Note" or pulling out a new sheet of paper), but as you add more notes to your system it becomes harder and harder to find a particular piece of information. The cost of adding stays the same, but searching goes up and up. Scenario 1 causes us to eventually succumb to chaos.

Scenario 2:

You have an extremely rigid system of tag management, headings, sub-headings, sub-subheadings and sub-sub-subheadings. This taxonomy makes it easier to find information...at first. The problem with these systems is that they require a ton of manual maintenance, and they also make it easy to find certain "classes" of information, but fail at geo locating others. Much more perniciously, this scenario eventually stifles creativity as it falls prey to too much order. The cost of searching stays roughly the same, but the cost of insertion goes up and up.

(I am personally guilty of creating a system like this btw [1][2]).

Both of these systems eventually begin to become inert holders of information, as the processor (us), begin to fear them and stop working with them.

IMO, the closest technology to managing human information well in my opinion is well over two thousand years old, the commonplace book [3]. Simply put, a commonplace book is extremely resilient to chaos due to its centrality of information, but even people like John Locke had to create indexes to fully utilize them [4].

This changed recently with the advent of vector databases[5]. It turns out that commonplace book entries are the perfect form factor to benefit from an address in vector space, since entries are atomic. In simpler terms, the vector processing layer handles the order, allowing our system to "live" and assign headings/tags/etc. as it evolves. Vector databases love commonplace books as well, because many vector solutions have way too much noise as they chunk and store useless information at quite a disappointing ratio.

My system differs from current offerings because it makes no attempt to automize parts that are meant for the human, and makes no attempt at making humans do the work computers should be doing. Ergo, creating a type of symbiotic relationship.

Finally, a note on why I use the term "asset". An asset should become more valuable over time, and particularly, each individual component of the overall asset class should be worth more (e.g. $1 in a bank account of $20 is inherently less valuable than $1 in a $20MM bank account, because it grows slower). So in our scenarios above, the transmutation of information to knowledge peaks out at a logarithmic curve, subject to the scale issues I mentioned before. Old entries appear less frequently in even the most ordered systems, and when they do, it is only in one particular context. My system stores time of entry in the metadata, but since I use vector addresses, the information is accessible in many different ways (dog can be found when query == canine, fido, perro, mans best friend, etc...). An informational asset should scale linearly, and each action of create/read/update/delete should improve the health of the overall system.

There's much, much, much more I could say here, but I'll stop for now :)

[1] https://github.com/bramses/bramses-highly-opinionated-vault-...

[2] https://news.ycombinator.com/item?id=34034414

[3] https://en.wikipedia.org/wiki/Commonplace_book

[4] https://publicdomainreview.org/collection/john-lockes-method...

[5] https://openai.com/index/introducing-text-and-code-embedding...

A few months back, I posted an essay here about how I think we are entering an age where the personal library will become an asset class unto itself [1]. This is due to a combination of the advent of semantic search and the revival of personal knowledge management in the deluge of our age.

As such, I’ve been working on the software to bring this vision to life, which is called Your Commonbase (a portmanteau of Commonplace Book and Vector Database).

In short, the purpose of the work is to create a data structure that works the way humans store, retrieve, and share information. By making these three elements as close to zero stress as possible, you catalyze creativity through remixing and augmentation of memories. My hypothesis is a lifetime building a Commonbase creates an idiosyncratic system, filled with the interpretations of an individual or a group. This individualized structure then creates demand that others want. I.e, a curation of all of the books you have read, organized by the marginalia you have added to them. This is a system people would pay for, and also a system that becomes more valuable over time.

I’ve been “working in public” by posting updates on my site [2], and am just beginning a small waitlist alpha testing phase (email me if you want in!)

[1] https://news.ycombinator.com/item?id=40192359

[2] https://www.bramadams.dev/

There is a rush in public to condense and summarize many authoritative publications to find patterns, or to replace a human expert with automated results.. yet that is fundamentally different than taking multiple incomplete perspectives to add to a human library-owners knowledge and investigations. It is subtle to speak it but not subtle in its implications.. taking "data as facts" and condensing them or reordering them or rewriting an output based on them, using automation, is different than a human mind taking in many inputs for human mind knowledge and enabling new outputs from a human author.

You nailed it! Thanks for noticing the divergence!

Would an LLM-driven "Personal Library" require manually annotated textual interpretation of each curated item, or could it derive personal interpretations from user history and the uniqueness of curated items/sets?

I’ve personally found that tagging is less robust than LLM embeddings (mainly due to dimensionality), but human appended thoughts about a source — also embedded — serve even better as tags.

Example: “this is a quote about dinosaurs…” (Old way of doing things) Tags: dinosaurs, jurassic, history Query: “dinosaurs” > results = 1…

(New way of doing things) Embedded Quote: [0.182…] User Added Thought: “this dinosaur reminds me of a time i went to six flags with my cousins and…” Embedded User Added Thought: [0.284…]

Query: “dinosaurs” > results = 2 (indexes = sources, thoughts)

The "thoughts" index can do a second layer cosine similarity search and serve as a tag on its own to fetch similar concepts. Basically a tree search created by similarity from user input/feedback loops.