There will be a partial recording out, I think, but in the meantime, here are some take-aways for roam/js plugin authors.
We spent most of the time pairing using Roam Inter (amazingly it mostly worked - although Roam Inter is not really ready for prime time).
The way conversations in Inter are set up mirror how he works with team internally - everyone have their own "space", nested under bullet,
and they use block-references to communicate - never "write in each others space". They developed the block-reference notification feature for themselves (also seem to have a Slack integration), before they used things like a "Dropzone" (a single bullet you can blockref to ...
get their attention).
He was experimenting in the call with how to show which "incoming questions" he had responded to by block-reffing the block-reference and making it a done TODO, using filters on incoming block-refs (didn't know that was possible).
I do funky things with block UIDs, and he did not seem worried about that at all. So creating your own UIDs however should be fine (I use cuid library). However, it is possible to create multiple blocks with the same uid, and this causes crashes...
If you use something like cuid or nanoid, you should be fine, but if there is a risk of importing the same thing twice etc, you should perhaps check first that each id doesn't already exist in the graph (would be nice if the API did this, but alas).
I asked for an event to listen to whenever a new linked reference to a page appears, or a child block to a block is modified etc. This will not come before (maybe) with the new graph structure. For now, running roamAlphaAPI queries on setInterval seems OK to him.
Frequently querying API is not too expensive, since all the data lives in the client. I discussed the need for a diff library that can take a JSON structure and figure out the minimal number of Roam API "moves" to update the graph to fit the JSON structure...
He thinks that this diff algorithm should perhaps be core functionality. But if someone else builds it first, would be great.
I asked about the ability for plugins to store arbitrary metadata in the database (not related to any specific bullets).
He has concerns about file size, someone storing huge blobs etc. Could perhaps make it available to specific plugin authors, or maybe use another storage mechanism (separate Firebase)...
But the idea of writing a simple library that can use an arbitrary page in Roam as a key-value store, just manipulating bullets, and the content of bullets, is one he likes for now.
He likes the idea of enabling plugins to update the username of a block (enabling the unread notifications etc) and will look into it. Tricky part is that the way userids are stored, the graph might not have enough info to render the name on mouseover.
In general, he sees multiuser Roam's as an aberration, and hopes that with proper inter-graph communication, that should not be necessary anymore.
He told us about some fascinating new version control feature, which would let you link from a single bullet to many versions, could also enable things like annotations. It sounds like adding a new "dimension" / primitive to the existing graphs.
He also said he'd announce the winners of the two first #roamgames in the next two days (I guess tomorrow), but that if someone built something that later was built upon in a future RoamGame round, that person would also get a part of the money - encouraging collaboration.
The whole conversation is here roamresearch.com/#/app/Clubhouse (daily page yesterday), although a bit messed up since the extension began misbehaving towards the end (as I said, not ready for primetime)
• • •
Missing some Tweet in this thread? You can try to
force a refresh
Tomorrow is the Sámi national day, this is an indigenous nation spanning Norway, Sweden and Finland. I learnt very little about them growing up, and still am ignorant. I would like to learn more. In the meantime, I share some amazing music.
#RoamGames submission: Roam Inter. Create streams anywhere in your graph. Other Roam graphs can easily subscribe to any feed, at any place in their graph. Streams are updated in near-real time, and support block-references and embeds!
Could be used to keep track of work across a small team (daily updates etc)
Minerva Project is hiring a full-stack engineer (JS and Django) to work on our Forum platform - fully active learning with very carefully thought out lesson plans, and integrated curriculum. We started with Minerva Schools, currently we have a high school program, exec ed...
I've been working at Minerva for two years, and I deeply believe in what we are trying to achieve (I spent ten years researching collaborative learning with technology before joining). Amazing team - work closely with faculty to develop technology that fits pedagogy.
You guys have got to stop encouraging me... I've got actual work to do :( Demo of RSS feed reader inside @roamresearch, reads a list of URLs from your graph, fetches RSS, parses, and inserts title and content of three lasts posts. Total proof of concept...
If you actually wanted to build this as a real thing, would want to think about checking which articles already exist, to add new ones only, as well as parsing of content (right now just dumps a blob of HTML), and many other things.
Also not convinced it's a good idea to import tons of content into your Roam graph at the moment. But some day it will be (I'm pretty sure, I want to keep my life there), so worth it to begin playing.
Hm, implementing an RSS reader inside Roam, built on top of new write API. Actually seems very doable. Can use iframes as well - or the latest hypothesis SmartBlock trickery...
As we start writing more to blocks, becomes more important to be able to separate raw material from stuff we want to appear when we search...
If there was a global filter which still let me see stuff where I put it, but hid it from all search/block ref autocomplete, back links...
Up early on a Sunday to read for my book club on Sapiens📒, enjoying the calm. Asking myself some qs ahead of reading to prime myself, keeping track of when I read, looking up some relevant info in Wikipedia, and adding an SRS to keep track of it.
I know a lot of people are critical of this book, and I found a bunch of links that I'm also looking forward to going through. One thing that we discussed a lot around the first section is how the cognitive revolution/upper paleolithic transition actually happened.
Harari seems to suggest "we don't know but probably a random brain mutation". Vervaeke suggests we developed psycho-technologies, possibly through shamans, related to existential thread ([[Toba catastrophe]])