1/ Roam backup terminologies & strategies. Recently in the Slack channels a discussion was started about backup. When you do an Export you have 3 options. Markdown, JSON and EDN. These terms can be confusing.

I want to provide an opinionated view & some basic guidance. #roamcult
2/ my basic strategy is to export in EDN & Markdown. These two formats give me (1) ability to fully restore my graph & (2) to restore the text of individual pages.

JSON is JavaScript Object Notation and mostly is intended for programmers & isn't as useful for a backup strategy.
3/ EDN (from the developer documentation) is Extensible Data Notation. A superset of edn is used by Clojure to represent programs, and it is used by Datomic and other applications as a data transfer format.

Nerdy! Yawn!
4/ For none nerds: the EDN format most accurately reflects the way the internal database of Roam stores data. So when exporting EDN, it is a full fidelity backup, as a format it is expressive enough to really capture all the attributes that make up a graph. JSON doesnt do this.
5/ There is one essential thing to know about using EDN: In Roam when you use a EDN backup to do a restore, it restores (replaces) the entire database currently stored in Roam. It restores everything. It overwrites the graph.

This means its not good for restoring just a page.
6/ A markdown backup exports each page as an individual file using the Markdown format. So Markdown is very useful for restoring the content of a single page. Markdown does not retrain all aspects of a page, but maintains important elements that covers the 80/20 of recovery needs
7/ Markdown exports the text, the outline structure and some basic formatting elements (bold, italics and highlight). Again, this is very useful for retrieving the text of a page or text of blocks. One minus of Markdown is that it exports block refs as refs ((AwxsIaD21)).
8/ If you want full fidelity Markdown export (including block refs), #roam42 converter tool does this for you. It is not a backup tool, but allows you to extract full text for export into other programs.
9/ So Roam allows you to export your data, but it doesn't include any tools for an automated backup strategy. This is a complaint point for many many users. We should discuss what would be a good automated solution??????
10/ In the meantime, we can and SHOULD set up a good backup strategy. And frankly speaking, if Roam eventually automates the backup, it is still a best practice to have your own manual backup strategy in the unlikely event Roams backup fails -- this is life it happens.
11/ BACKUP Strategy includes answering a few questions:
(1) What do we need to backup?
(2) When do we need to backup?
(3) How do we remember to do our backup?
(4) How long should you keep your backups?
12/ (1) What do we need to backup:
+ Do a EDN backup to get a full fidelity backup of your graph. In worse case scenario, we use this to replace and restore a graph to the date of the backup.This is for disaster recovery!
+ Do a Markdown backup so you can restore individual pages
13/ (2) When do we need to backup?
You need to establish how frequently you think your database needs to be backed up. Once a month is probably not wise, Once a week is very reasonable.
I do it every 3 to 4 days, and then sometimes when I did a lot of important work in a day.
14/ How do we remember to do our backup?
Set up a recurring reminder in a TODO program, or better yet, use DELTA feature of Roam to create a repeating reminder. Here is what mine looks like:

+ Backup: EDN & Markdown {{[[∆]]:4+0}}

Every 4 days on my DNP I get a backup reminder
15/ How long should you keep your backups?
This depends on your needs, but I do my backup every 4 days and put it into a Google Drive folder. I keep the EDN backups for about 2 months, since I won't every fully restore a backup older than that. continued...
16/ But I never delete the Markdown backups. I like to be able to go back in history to any date and get the contents of a page. I am surprised at how often I do go back in time a few months to see what the contents of a page where in the past.
17/ In summary, my backup strategy:
+ Export to EDN & Markdown
+ Backup every 4 days, or on days when have done extensive work
+ Store backups in a cloud storage for easy retrieval
+ Use Delta to get a reminder
+ Keep EDN backups for 2 months, Markdowns I dont delete
18/ Finally have some expressed concern that a $15 month program with no automated or time based backup is disappointing. We can't fault a person if they think that. In comparison, Dynalist is $3 a month & includes automated daily backups to cloud services. So it can be done.
19/ Wow.. a Saturday morning tweeting about Backup strategies. Man, I need to get a life away from Roam at some point :-)

What is your backup strategy? Would love to learn from your best practices. Please tweet back.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with RoamHacker 👨‍🔧 ((roam42.com))

RoamHacker 👨‍🔧 ((roam42.com)) Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @roamhacker

22 Jan
1/ Roam Milestone: Write API
Today is important day in Roam history. Many users will likely not be aware of it, but those building tools & integrations on Roam have lots reason for joy. Team RR is working on extending their API allowing for some important capabilities. #roamcult
2/ History lesson, the past: Roam already has a wonderful query API. This means we can read data from a graph database with relative ease. For the most part they don't hide anything from us. The database is truly exposed to the developer. It is powerful & is graph based.
3/ Roam is currently working on a large and important project: a new scalable database backend and also a new API (client and server side). However, this is a big task, one that should not be rushed, and one we should not put pressure on Roam to rush.

Do it right! Do it right!
Read 15 tweets
18 Dec 20
@tracyplaces Journalling sensei on a Friday Roam hangouts. Live tweeting some of her insights sprinkled with southern wisdom and good story telling. #roamcult #roamos

Check out her course:
rebootspodcast.podia.com/dashboard
She was inspired to transition from paper to "digital" journalling via Roam by @MamanLunettes kid's YouTube videos. Violeta was so impressed by how her kids adapted Roam to their specific styles, different approaches, but Roam being a common denominator.
Young Sofia doing live demo of her approach to addressing her feelings with prompts. Using block refs to link to questions & then writing out what happened. Sofia is so articulate. Her prompts help her to have a conversation with herself to resolve the problem.
Read 11 tweets
18 Dec 20
1/3 @Conaw the new CSS stuff is really great. The intentional surfacing of data elements and visual structure is going to be a big help as we move forward. I have one recommendation: Change the roam/css model to be like {{[[roam/js]]}}.

Recommendation: {{[[roam/css]]}}
2/3 The current one page model works very well, but gets difficult to manage as the number of customization grows since everything has to be on one page.

Second, it would be nice to prototype visual designs right in the context of what you are working on.
3/3 Additionally, it would give roam/js developers flexibility in providing UI customization.

So if we had {{[[roam/css]]}} that could be defined any where, this would be useful.
Read 4 tweets
15 Dec 20
@RoamResearch Starting a thread that we can build on (@CatoMinor3 @AbhayPrasanna @gottalead and others) with some early feedback. First enjoying the new things, But while you are messing with the code, a few ideas.
RECOMMENDATION
.rm-title-display is title page. If it is a Daily Notes Page, it would be nice if there was an attribute indicating its a DNP. Lots of us modify based on context: standard page or DNP. class="rm-title-display rm-title-dnp" otherwise no attrib. (In sidebar as well)
PRAISE
Loving the concept of these classes representing structuee:
.rm-block-main
.rm-block-children

I see this in sidebar as well -- liking that too
Read 4 tweets
13 Dec 20
So today @dvargas92495 brought up a really good question. Many are using SmartBlocks to not just build workflows for daily activities, but some are building very complex SmartBlocks with the JavaScript (connections to YouTube, GDrive, poetry and Shakespeare API's - wild stuff)
So while SmartBlocks has JS support, its not a primary goal. So his question was: why are people using it that way since you could just do roam/js. I have also wondered the same thing. I asked @shawnpmurphy8 (maker of famous attributes table extension) & he had strong opinions.
He said: Here is my thoughts on why folks are gravitating so heavily to SmartBlocks.
+ because it is simple
+ it is easy to develop/test as you go
+ it is easy to do hybrid... JS + SB COMMANDs + some general template stuff (indent / unindent etc.)
Read 8 tweets
9 Dec 20
Live tweeting from the Roam impromptu zoom call with @Conaw. #roamcult
They want to make Roam very programmable. From easy to advanced, to simple extensions and more. Hope for lots of devs using Roam Depot in future.
Future of creators in Roam: very important that people can build off other peoples graphs. Multi-player, many contributing & sharing. Lower barrier to create very large content databases (even without a lot of tech knowledge). Want them to be build businesses of their work. Image
Read 16 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!