Roam
- How I'm using Roam
- My databases:
- this public roamblog you're viewing right now. hi! (also located at intertwingled.blog)
- a private roam for journalling, collecting links, introspection, & whatever
- a Intend team roam
- a Liminal Space Agency team roam
- a private group roam for developing thoughts, ideas, practices, case studies, etc... related to emotional reconsolidation
- Initially I hadn't done much with Roam that I couldn't do with WorkFlowy, but I noted:
- I'm using it differently because I know I will be able to work with whatever I enter differently
- Analogy: people write differently when writing digitally vs pen-on-paper, because you can edit the digital stuff. (Or just differently between pencil & pen)
- Ontological thoughts
- Kinds of things that might want tags/pages/refs etc:
- proper nouns, eg Intend
- perspectives/arguments/essays, eg Intend Philosophy & Paradigm
- concepts, eg goal
- tags for "types of node", eg #question
- instances of utterances, eg Kinds of things that might want tags/pages/refs etc:
- I find myself wanting to have a better glossary feature, where I can more clearly specify a few terms that all exist in relation to each other, and some canonical reference for their relationship
- I think the best current version is what I've hacked together as an example using a page and some block refs. Here's some sample text:
- There's a model of lead & lag measures, and it's importance to focus on the lead measures every day but to not forget about the lag measures
- Here's how I've set up that page:
- this is currently workable, and much more so than in most applications!
- what I like about it
- I can shift-click on a term & see its definition in the sidebar!
- I don't have to create a bunch of alias pages
- the terms are naturally contextualized/namespaced because the block ref refers to the definition of those terms that's on the lead & lag measures page
- what I don't like about it
- it doesn't smoothly support capitalization, plurals or subtle variations of terms, or concepts that have multiple forms like an acronym, a short-form, etc
- I don't want to have to type out an alias every time. that would be awful
- I guess I could define some aliases, but there's not currently a smooth
- unlike page-refs, block-refs are ugly.
- while editing, this means that a bunch of key terms are replaced by random meaningless garbage:
- There's a model of [[lead & lag measures]], and it's importance to focus on the ((X9nt9f2i_))s every day but to not forget about the ((sjQ7Qlavj))s
- if I copy the node out of roam it doesn't derefence the block refs
- UPDATE: actually it looks like this has been fixed! super fucking cool
- it's almost like what I want is pre-defined aliases for block refs, so that I can instead have something that looks like
- There's a model of lead & lag measures, and it's importance to focus on the (((lead measure)))s every day but to not forget about the (((lag measure)))s
- I don't want to have to type out an alias every time. that's awful
- Roam Feature Wishlist
- (see also feature requests in this tweetstorm (there's some overlap between that and this))
- Interlinking / Embedding between databases
- Or some other solution for collaboration
- (Apparently this is in the pipeline. I was one of the first people with this many databases although apparently lots of other people now have a similar number)
- Tweet from Roam 2019-11-17
- Full-fledged interlinking is really hard, because the system currently loads the whole thing into memory
- WorkFlowy import
- I'm ready to switch, but I need to know the import format to know how to format my WF stuff. Josh says they'll build JSON export, and my plan is to write a function to convert WorkFlowy JSON to Roam JSON
- I want underline support. I use underlines for stuff.
- Give tags a CSS selector based on their name, so that I can custom-style them (workflowy's is actually just title="Filter # tag", not intended for hax)
- this is done! the selector to use is
span.rm-page-ref[data-tag="capslog"]to get something like this: (this is an image)
- roamblog stuff
- a memorable page url
- something like roamresearch.com/#/app/malcolmocean/pageName/Roam such that it would redirect to this page
- that way, for pages with short names, I could literally type them in, rather than having to find the link
- a shortcut to a search results page
- actually, a memorable page url and a shortcut to a search results page could be the same! it could be like... whether the page exists or not, going to a particular url would go to as-if-that-page, and would show references below
- and if I did this while logged in, it would create the page as an actual entity like the Find or Create Page thing does
- but if a guest user did it, then it would only exist while they were on it, to view the unlinked references (which functions as a kind of search)
- probably would want to auto-show the unlinked references in that case
- some shareable page url that actually previews with an appropriate page title
- (I'm not sure if this can be done with the current hash (# ) based urls, so it might have to use special share-links or something)
- commenting features
- At minimum, this would need some sort of mode where people have write access but no ability to overwrite each other's nodes
- (which, combined with ability to reorganize each other's nodes, could actually be a cool permset for a private shared DB too, so that it's always clear who's saying what)
- But it could be implemented either as:
- a comments "section" that functions in this way, where I would do something like and that node would allow comments
- users can leave comments as subbullets on any other bullet, but things stay collapsed unless I open them
- supposedly this exists as
{{comment-button}}- ...as of August 2nd, 2020, this... needs work.
- I think that even with these caveats I might still want to have people need to request access to comment.
- custom header / theme
- this is also helpful for distinguishing private roams, similar to how slack workspaces have different themes
- custom per-roam CSS more generally
- that would allow me to share custom tag styles for instance (see Give tags a CSS selector based on their name, so that I can custom-style them (workflowy's is actually just title="Filter # tag", not intended for hax))
- this is useful for shared private roams too, not just publishing
- custom domain
- maybe having a specific page operate as the homepage would be nice, instead of the daily notes
- Twitter stuff
- turn on character count for each node on a page or whatever
- counts links as 23chars always
- emoji (and some other ascii chars) are two chars
- twitter integration → post from roam directly to twitter with one click
- embed tweets without previous tweet shown
- Hypertext roambook stuff
- (Basically all of the roamblog stuff is relevant here too)
- Inasmuch as Roam seems like an epic platform for publishing hypertext books, and one of the current most excellent hypertext books is meaningness.com (with some custom scripts designed for this purpose) it seems like there are some features worth copying from meaningness:
- 1. hover on page to get a short blurb about it without needing to click through
- 2. hoverable footnotes
- (sort of achievable with shift-click to open in sidebar)
- 3. ability to easily tag pages as "under construction" (maybe other options too)
- 4. option to have a table of contents page as the landing/index page, rather than daily notes
- (although there is sort of a funny way in which daily notes could also function as a blog feed! but this is the hypertext book section, not the roamblog section)
- Things to replace slack
- 1) emoji-reactions (oddly this actually feels biggest somehow)
- BOOM this is done
- 2) "see new nodes" (maybe this already exists? roam is certainly tracking it)
- 3) @-mentions & notifications thereof
- (we have a hack for this, that's honestly kinda better since it affords a lot of control)
- although it doesn't allow easily mentioning more than one person, so that's an issue
- I can think of a hack that would also fix that
- 4) private pages (eg only users/groups tagged can see something)
- 5) alerts for keywords used by others
- could be a combo of the "see new nodes" feature (2) plus a filter, I guess
- Timeline feature
- kind of like the existing attribute tables, but specifically designed for making timelines. more on this to come.
- Ideas for things to build right now
- script to convert epubs into roam JSON import
- this should be pretty damn straightforward with nodeJS
- unzip
- turn each html file into a page
- detect glossary/index and do clever things
- main challenges
- images...
- script to convert slack JSON export into roam JSON import
- also pretty damn straightforward!
- though a few design complexities
- Things to do once there's a Roam API
- automatically import liked tweets
- Different purposes of a roam db
- journalling/personal stuff
- roamblog - collection of related articles published periodically
- roambook - eg meaningness if it were on roam
- ????
- Examples of other public Roams
- HowToHuman (troubleshooting guide for the human condition)
- sensemaking-web (mapping Game B & people in that space)
- Rob Haisfield Thinking in Public (thoughts on learning & app design, among other topics)
- The Just City (collaborative roam about improving human coordination)
- AcesoUnderGlass (epistemic spot check book reviews)
- Aletheia (Fountain Portal health-tech newsletter)
- roamhacker (a plugin for Roam)
- metaroam (a place for roam feature requests, bug reports, & workflow examples)
- (I think now defunct)
- Collecting others tweets about this
- Amazing thread grooving about interplay between more perma-media and more iteraty-media
- Haven't actually read either of these papers:
- cool stuff to play with
25 linked references
metaphor
- People talk about technical debt in the context of software, but there's also huge metaphor debt. If Evernote has trouble competing with Roam, this will be part of why. They've invested a ton of resources not just in the specific implementation of their software but in the entire meaning of what notes are and what it means to take notes or organize them.
- This is related to something that Lawrence Wang said on a Relational Exegesis call June 11th, 2020, which was about Roam using ClojureScript and also being itself structured as a list-of-lists, which is kind of like Lisp
Metaphors are partially embodied in the words used for th… › By contrast, Evernote doesn't have "files" & "folders", i… › If you want a notes app with a genuinely new metaphor, lo…
- Roam is inspired by the zettelkasten, which is a very obscure and unfamiliar system, but is still a physical structure
October 28th, 2021
- vital Roam hotkeys (particularly for using Roam with only keyboard)
- #2tweet TIL if you go to a new page on Roam and you want to focus the text to type, press ctrl+enter!
- TIL if you go to a new page on Roam and you want to focus the text to type, press ctrl+enter!
September 3rd, 2021
- Roam datepicker flower lol
lmk
- I feel like it would actually be particularly cool if Roam had something like a drop-box for people to offer what they think is an answer to a particular question I have, as distinct from a more general comment
February 10th, 2021
- Very exciting InterRoam concept!
February 7th, 2021
- similar vibe to the daily notes in Roam
me as project advisor / biz consultant / design jammer / co-visioner
- gave some very early useful feedback:
leadership
Lots of things "leadership" can mean, that are quite diff… › blazing a trail - leading in the literal sense - doing a …
- Me saying I'm the godfather of #roamcult was pointing at a subtle kind of leadership—I quickly got totally left behind by other people who went way deeper into Roam than me, which is fine! Booster rockets.
January 19th, 2021
- On Roam Clubhouse call
- Jeremy Nixon is working on a book about abstraction
- Sam Morrison talked about something like... fuck, I forgot what it was. and I can't find Sam
- Conor White-Sullivan talking about resolving relationship issues via parallel-roaming
- David Bieber
- "fleeting todos" system
- if I get the urge to do something but I'm not about to actually do it, I put it there
- resonates with Intend and the full-fledged pomodoro technique
- Diana Zink
- I like her vibe
- "brains are large neural clouds collaborating with each other"
- organizational vs creational dopamine
- many-to-many communication
- collective intelligence
- (decentralized) university
- Lindsey asks: how custom css?
January 5th, 2021
- evolved into Trailblazer
- built API-first
- and noticed it completely changed the way you thought about things depending on which client app you used
call with Andy Ayrey re Designing a better browser\workfl… › A > tinder for tabs was one of our first experiments › A > we didn't really go forward with it... › we were in an accelerator
- couldn't make an adequate biz case for the Roam-like thing
September 7th, 2020
- I applied to Roam's backend alpha tester program
- My Q responses:
- Have you participated in or started any experiments or interesting projects, multiplayer or otherwise using Roam? If so, please describe your involvement and share any relevant links.
- I was one of the first people to have a public roamblog, now hosted at intertwingled.blog
I've also explored using Roam for teams etc, with multiple private Roam dbs. In one of these we've been modelling different kinds of therapy etc, and we imported the entirety of a book as something to comment on & backlink.
In another, I imported multiple years of history of the #media channel from our slack, using a tool I made called slack2roam: github.com/malcolmocean/slack2roam
The third is the Complice team Roam, which is the one that's most like, actual project management rather than a shared knowledge base.
I have many different Roam dbs.
- Are there any interesting use cases you've found for Roam that we should know about? If so, please share any details and relevant links.
- I've mentioned a fair number of them above. My roamblog allows me to start drafting my thoughts on a topic that aren't ready to be formally "published" to my blog/newsletter, and meanwhile I can start referring to topics I intend to write on and building up backlinks internally.
One I haven't mentioned is that I'm part of a culture incubator (described by @Conaw as "Like a memex, but if the memex were a house, and also maybe a cult. IRL collective intelligence innovation") that records almost all of our conversations, so being able to make conversations named entities that can be referred to when taking notes on another conversation or whatever, and to easily find which recordings talk about particular topics... is very powerful, and we're just in the early stages with it.
One of the reasons I want interlinked databases is that sometimes I want to eg take notes in my private Roam, on one of those recordings, with it still linking somehow to the main topics in the shared Roam. The challenge of figuring out which Roam DB to put things in is actually one of the main things limiting my use of Roam, as I've had 5 databases I use on a regular basis, since last fall.
- Have you built anything on top of Roam, whether it be using roam/js, roam/css, or a custom browser extension? If so, please describe the projects and share any relevant links.
- I wrote some of the earliest custom CSS themes as userstyles, and was the person who got Conor to give tags custom data-tag attributes for styling, and ultimately created a lot of momentum towards what became to make roam/css.
Not exactly "on top" but very API-related:
github.com/malcolmocean/wf2roam
github.com/malcolmocean/slack2roam
I might build a slack-bot to auto-sync slack2roam once there's an API.
- If you were given test access to the new backend alpha, what experiments would you run and/or what things will you build?
- I've already started ideating about building an integration between Roam & my app Complice, similar to an old one that I built with WorkFlowy. I want to be ready to launch it the moment the Roam API goes live, so I'd love to be able to build it in advance. A bunch of Complice users have requested such an integration, and we're discussing it a bit in the # complice-integration channel on the Roam slack: app.slack.com/client/TNEAEL9QW/C016YCJ4A20/
Probably other experiments too, but I don't even know what's possible yet!
- Are there any other things that we should know about you that would make you particularly suited for alpha testing?
- "Malcolm is amazing alpha tester." — Conor White-Sullivan
twitter.com/Conaw/status/1221923379315240960
intertwingled.blog
- If you're new to Roam, it's sort of like a wiki but WAY cooler.
July 29th, 2020
- Went on Social Design Club session for Roam
- Relevant links here:
recording management systems
- We have explored using Roam for keeping track of recordings as well, and I think there's a decent chance that one way or another, Roam will be a core system in the long-term for this... but short term it is kind of one layer out from the recordings themselves, in a few senses:
- you can upload files to Roam but it's very hard to keep track of them and afaict atm if you lose the link to the file it's just unreachable forever because it doesn't have a name, just a url
- you can't easily play audio files in roam. sure, you can use hiccup to embed a little <audio> player, but it's very primitive
- roam's attribute tables are cool & show lots of promise, but currently not actually useful for organizing large numbers of things, for many reasons
June 4th, 2020
- Roam launched custom per-database CSS! You should be seeing it now if you're viewing this.
- You can check out the CSS used for this roam at roam/css. The styles used (mostly written by me) include:
- my custom tag styles (#portaged from my 8 year old workflowy account)
May 30th, 2020
- had a call with Simon Lau @ Otter and talked about Roam imports
- made this sample page:
- using this json:
[{ "title": "Transcript of Otter->Roam demo", "children": [ { "string": "keywords:: roam paragraph transcript uttered", }, { "string": "date:: [[May 30th, 2020]] 1:57 PM {{utcToLocal: 1590865762829}}", }, { "string": "speakers:: [[Malcolm Ocean]] [[Simon Lau]]", }, { "string": "ottergroup:: [Roam](https://otter.ai/group/12345)", }, { "string": "[[Malcolm Ocean]] [00:10](https://otter.ai/note/2222BVVVDDWWSETB)", "create-time": 1590865772829, "create-email": "malcolm.m.ocean@gmail.com", "children": [ { "string": "This is where the actual transcript goes. This would be a paragraph of text, uttered by Malcolm" }, { "string": "Here's another paragraph, consecutively uttered by Malcolm" } ] }, { "string": "[[Simon Lau]] [00:30](https://otter.ai/note/2222BVVVDDWWSETB)", "create-time": 1590865792829, "create-email": "simon@otter.ai", "children": [ { "string": "Oh fascinating, I see how that would work" } ] } ] }]
design portfolio
- see Roam for some of the advice I've given Roam
- (there's been more, over the years; I've been friends with Conor for years while he was building this, and periodically helping refine the idea)
