Statue

How I use Obsidian to manage my goals, tasks, notes, and software development knowledge base (includes a starter kit)

From someone that has used Roam Research and countless task/note management apps

22 min read

Published: 1,362 days ago

Last Tended: 11 days ago (View History)

A two-column layout. The first column shows the author's active goals and todo list for the day. The second column shows a graph view of the author's Obsidian vault.

Disclaimer

This essay was originally published on Imprint (imprint.io) on August 15. Since that site no longer exists, I have republished it here. If you would like to view the original, you can view it on the Wayback Machine.

Tip

I no longer use Obsidian to manage my goals, tasks, notes, and software development knowledge base anymore. I have moved all of my notes to Capacities and use a custom productivity system for goals, tasks, etc. However, I believe this essay still contains some nuggets of wisdom. Enjoy!

Reception

This essay got quite the reaction on Twitter, Reddit, and Hacker News. Give them a look!

For someone who has as much experience as me in the task and note management app arenas, I believe I have finally found the tool that will serve me for many years to come. The tool is called Obsidian and it touts itself as being “a powerful knowledge base that works on top of a local folder of plain text Markdown files.” For reference, a Markdown file is a text file that is organized in a standardized way. More info can be found here. Obsidian allows you to create bidirectional links between your notes. So, instead of having your notes be siloed into different folders and subfolders, you can let your notes be automatically organized based on how they relate to similar topics and points. A lot of people like to use the brain metaphor in that the bidirectional nature resembles how our brains work and how it makes connections with everything that we are thinking and learning about. For reference, here is a screenshot of what my network of notes looked like a few days ago:

Roam Research and Why I Stopped Using It

Before using Obsidian, I had been using Roam Research for about 2 months, starting in April. It calls itself the “notes tool for networked thoughts.” Like many others, I was on the hype train and I had it open all day on my computer. It was that good and I understood and supported what Roam Research meant when they replied with the following regarding their planned $15 pricing policy:

You’re not our target user if Roam is worth less than netflix. — Roam Research (@RoamResearch) May 5, 2020

While using Roam Research, I had heard of Obsidian as being a comparable but limited alternative, but I didn’t try it out until I encountered a hiccup with Roam Research’s service towards the end of June. It kept deleting some text that I was trying to enter and it caused me to stop using the service that day. I had also been seeing people that were reporting data loss issues and that pushed me to give Obsidian a try. When you have someone that has made quite a bit of money from a course on how to properly use Roam Research report data loss, it doesn’t ring very well in the trust and reliability departments, especially if you are paying for the service.

@RoamResearch Roam just froze and deleted everything on a super important page, is there anyway to rollback a page in a database? — Nat Eliason (@nateliason) July 31, 2020

I wouldn’t be surprised if the issues that I and other users encountered are because of the approach that Roam Research took when it came to developing their software. On Twitter, Sam Wight describes why he believes it wasn’t a very good one:

Quick thread on @RoamResearch and why their software approach is not a very good one. — Sam Wight (@samwightt) June 12, 2020

I was actually debating whether I would mention these issues. However, as a fellow software craftsman, this is a call for Conor and his team at Roam Research to do a better job when it comes to offering a reliable service. I shouldn’t need to set up a backup system myself if I’m paying for the service. With them hitting $1 Million in Annual Recurring Revenue within two months of starting to charge, I think they can take the criticism.

Now, I still wish them success with this endeavor. I’m also looking forward to seeing how much of an impact Roam Research will make in the collective knowledge management and academia spaces.

My Past History with Task and Note Management Apps

For those interested in the apps that I used for task and note management before Obsidian, here you go: (mostly chronological and from what I can remember/find the name of)

Task management: Reminders (iPhone), Trello, Google Tasks, Wunderlist, Google Keep, Plan, Asana, Things, Notion, Taskful, Planny, Quire, Habitica, Focus Matrix, Coda, Sorted3, Complice, and Roam Research

Note management: Notes (iPhone), Catch, Workflowy, Evernote, Google Keep, Notability, Outlinely, Milanote, Notion, Bear, Slite, and Roam Research

My Experience with Obsidian so Far and a Rebuttal

Regarding Obsidian, I have been enjoying the experience so far. Obviously, I have lost access to a number of features from Roam Research, i.e. filters, queries, block references (every bullet point you write is a block and you can reference all of them), and editable block embeds. However, I have been able to make do and haven’t really missed them. Based on my experience and Obsidian’s recent updates, don’t let people like Robert Haisfield get you down with their comments:

If you’re using @obsdmd as though it’s @RoamResearch, then you get what you pay for. I use both, and both have their strengths, but Obsidian has page level backlinks and no filtering. As soon as you get more than a few linked refs, their backlinks implementation is burdensome — Robert Haisfield (@RobertHaisfield) July 20, 2020

Not trying to call out Justin, it’s just that his tour is a visual example of this broader phenomena. Many Roam users will watch it and think to themselves “square peg, round hole” — Robert Haisfield (@RobertHaisfield) July 20, 2020

So, you might be wondering what he is talking about when it comes to linked references and Obsidian’s backlinks implementation. In both of the following cases, for each listed reference/mention, you will see the name of the note where the note you are on is referenced and then the context in which it was used.

Let’s start with Roam Research:

In the first picture, you will see the linked references that are at the bottom of my 🎌 Backlog Tasks note. In the second picture, you will see what happens when I click on the filter button that’s to the upper right. This allows you to filter the listed blocks/references.

Now, let’s look at Obsidian:

Note

This is from the most recent Insider build (0.8.4).

This is showing the linked mentions for a goal of mine that was related to setting up a tech-focused online social for my hometown. The great thing about this version is that Obsidian has added the ability to see more of the context around the linked mention. Additionally, they have added the ability to collapse linked/unlinked mention results. They don’t offer the ability to filter mentions at the moment, but it would make sense for them to eventually add it.

The solution that’s better, at the moment, depends on the type of user you are. If you are a full-time researcher or writer, I can see Roam’s approach being more valuable, especially if you want to copy all your past work into it and see what type of connections you can discover. If you are someone that blogs on a casual basis, you probably won’t see the lack of linked reference/mention filtering as a deal-breaker. With my workflow that does treat Obsidian like Roam (to a point), I actually haven’t missed this feature.

However, I do see the benefits of it. So, if I don’t create it, someone else in the community will make a more extensive backlinks plugin that supports filtering when Obsidian’s plugin API is released. And, even if the API doesn’t include what’s needed to do this, Obsidian will be incentivized to add this feature themselves if there’s enough of a demand. There’s already a post that asks for this feature on their forum.

Why I Believe in Obsidian’s Future

Besides what I have stated above, these are the main reasons why I’m flying the Obsidian banner:

Future-Proof: Your notes are future-proof since they use Markdown and not some type of proprietary format.

Portability: You don’t have to rely on Obsidian’s servers in order to access your notes. You can use iCloud, Google Drive, other cloud storage providers, or even roll your own server.

Safe and Private: If you use a cloud storage provide to store your notes, you won’t have to worry about issues of data loss or your data getting into the wrong hands. I don’t think I’m alone in saying that I trust players like Google and Apple more than smaller players (including the app developers themselves) when it comes to the security of my data.

Extendability: Obsidian uses 19 core plugins to function and there’s more to come. The great thing is that we will be able to install third party plugins and be able to build our own in the future as well. If you keep reading, you will see what type of plugin I have in mind.

Good mobile experience: Obsidian doesn’t have a mobile app yet. However, with me storing my notes in iCloud, I have easy access to my notes using iA Writer on my iPhone. As a side note, if you also have an iPhone, I strongly recommend that you use iCloud to store your notes. I tried to use Google Drive, but I couldn’t add new notes without manually moving them from the iCloud area in iA Writer to the Google Drive folder that I was using for my notes.

Now, let’s get into the real meat of this article.

Goal Management

So, when it comes to managing my goals, I like to break things down. For each of my goals, I break them down into three parts: the overarching goal, the included milestones, and the intentions that are associated with each milestone. Here’s a diagram (created using Obsidian via their support for Mermaid diagrams):

For reference, I got the the term intention from Complice and intentions are the main way in which I chip away at a goal. A key part of my system is that I like to specify the item’s type, title, and whether they have been completed in the item’s name. This helps me focus on one item at a time. When it comes to the completion state, I use the ”🗸” character for incomplete items, 🚧 for in progress items, ✅ for completed items, and 🚨 for items where my plans have changed and I need to edit them. I add emojis and a dash in the front of goals and milestones. As a way to make my life easier, I use Alfred’s text expansion feature in order to speed up the creation of note titles and their associated contents. At the end of this article, you will find a link to a starter kit/vault that includes all of these, an Alfred workflow, and a vault that follows the Obsidian workflow that is described in this article.

Note

If the above character for incomplete items looks off, this is what it looks like on an Mac:

This is from Emojipedia.

Here’s a legend for how I name goals, milestones, intentions, and recurring intentions: 

Here’s how each item’s note is structured:

Goals

Associations: [[Goal]]

### Notes

### Milestones
- ex. [[Ⓜ - 🗙 Milestone A]]

Milestones

Associations: [[Milestone]]

### Notes

### Milestones
- ex. [[Ⓜ - 🗙 Intention A]]

Intentions

Associations: [[Intention]]

### Clocks
- Estimate:
- Start Time:
- End Time:

### Result (total time and explain if I go over my estimate)

### Notes
- ex. This is also where I place sub-tasks via Markdown check lists, i.e. [ ] Example Task

Note

The “Clocks” and “Result” sections will be explained in the next section.

Recurring Intentions

Associations: [[Intention]] [[Base Intention, ex. ♦︎ Complete five programming problems on HackerRank]]

### Clocks
- Estimate:
- Start Time:
- End Time:
- 
### Result (total time and explain if I go over my estimate)

### Notes
-

Note

As you can see above, I associate the recurring intention with its base intention. I use the diamond to identify base intentions, which don’t have anything in their respective notes.

I have also recently created two notes to keep track of my active goals and goals that are on the back-burner. Here’s their format:

Active Goals:

Due this month
- This week / next week
    - ex. [[⛳️ - 🗙 Complete my Obsidian article]]
    
Ongoing
- ex. [[⛳️ - 🗙 Complete the Version 1 Beta for Project Iota]]

Goal Backlog:

- After doing something
    - ex. [[⛳️ - 🗙 Goal Title]]

The great thing about the Active Goals note is that I embed it into all of my daily notes, which serves as a calendar for my goal deadlines. Here’s a a picture of the daily note from yesterday:

Task Management

Now…before I dive a bit deeper into my intentions and how I manage my miscellaneous tasks, let me talk about what I use to guide each of my days.

Daily Notes

I use Obsidian’s Daily Notes feature for this purpose and here’s the template that I instruct Obsidian to use:

![[🎯 Active Goals]]

[[Morning Pages (date)]]

TODO
- [ ] Complete my daily Morning Pages activity with tea (at least 25 mins)
- [ ] Finalize today's plans
      
Other

Here’s a breakdown for each part:

![[🎯 Active Goals]]

  • As I mentioned in the previous section, this allows me to have easy access to my upcoming goal deadlines. This is actually a pretty recent addition, but my plan is to update this on a weekly or bi-weekly basis.

[[Morning Pages (date)]]

  •  I’m personally a fan of the activity that has been recently trending. It was coined by Julia Cameron in her book called The Artist’s Way that was published in 1992. Here’s how she describes them on her website:

    Morning Pages are three pages of longhand, stream of consciousness writing, done first thing in the morning. There is no wrong way to do Morning Pages–they are not high art. They are not even “writing.” They are about anything and everything that crosses your mind– and they are for your eyes only. Morning Pages provoke, clarify, comfort, cajole, prioritize and synchronize the day at hand. Do not over-think Morning Pages: just put three pages of anything on the page…and then do three more pages tomorrow.

  • I did this activity by hand initially. However, if I continued to do that, I wouldn’t be able to easily connect my thoughts with my ever-growing collection of notes. So, I just type them out and do it for at least 25 minutes. I’ll touch on this more in the next section.

TODO

  • This is where my daily, recurring tasks live, in addition to where I reference any milestones, intentions, and miscellaneous tasks that I have planned for that day.

Other

  • I usually use this area to jot down any miscellaneous notes that I have throughout the day.

Tags

I do use Obsidian’s tags feature. My system only uses two and they are related to showing the progress that I have made with intentions, milestones, intentions, and misc tasks that I have assigned myself on a given day through the day’s daily note. Here they are and they are pretty self-explanatory:

#made-progress

#did-not-get-to

Intentions (Continued)

As you saw in the previous section, this is what the template for my intentions looks like:

Associations: [[Intention]]

### Clocks
- Estimate:
- Start Time:
- End Time:
  
### Result (total time and explain if I go over my estimate)

### Notes
-

The Clocks and Result sections pertain to the software development work that I do. When I got my first contract software development job in 2018, I found it difficult to provide good estimates. It didn’t help that I was new to React and React Native. But man, university wasn’t kidding when they said that a lot of software development projects go over budget and aren’t delivered on time. So, based on my negative experiences in this arena in 2018, I came up with this system in the middle of this year in order to help me create estimates for future work that I do. I specify the estimate and then record the start time using an Alfred text expansion, i.e. “/time.” I personally like to work in 50 minute allotments with 10 minute breaks. So, I also record when a break starts and when I start work again using that aforementioned text expansion. When I complete the task, I record the time on the “End Time:” line and then add up the total amount of time and quickly jot down why my estimate went over time if I went over my estimate. I put the total time next to a [[Total Time]] note reference. Here’s an excerpt of a development task that I completed in June:

Intention Title: [[✅ Be able to filter items that are favorited]]

Clocks
- Estimate: 45 mins
    - add a new item that will be the test item - 5 mins
    - add the isFavorited property to it and all the other items on the backend (set it to true for the test item) - 10 mins
    - get the filtering to work since this does not involve the modal at all - 30 mins
- Start Time: 9:29 PM
- End Time: 10:00 PM (31 mins)
  
Result (total time and explain if I go over my estimate)
- [[Total Time]]: 31 mins

If I went over my estimate, I usually put the following after the [[Total Time]] reference:

Why?
- explain why I went over my estimate

By doing this consistently, I get access to the following result:

I then enter this information into an Airtable table and add tags that are associated with the type of work that I was doing for each milestone or intention. For this last step, I try to do it once a week on the weekend. By doing this, I can create an average of the logged amount of hours of similar types of work and that will help me create estimates for work that I do in the future. So far, I have been enjoying this approach and wish I had it in 2018. I can’t wait for Obsidian to give us access to the Public Plugin API. I’m planning on creating a plugin that will allow me to automate this process and not have to use Airtable anymore so I can keep everything inside of Obsidian.

Miscellaneous Tasks

As for my miscellaneous tasks, I extend my item naming convention to support these types of tasks as well. Here’s how I format their title and contents:

Miscellaneous Tasks: [[Misc - 🗙 Title]]

Associations: [[Misc Task]] [[Type of Misc Task (ex. Family)]]

### Notes
- 

Recurring Miscellaneous Tasks: (Date) Misc - 🗙 Title

Associations: [[Misc Task]] [[Type of Misc Task]] [[Base Recurring Task, ex. ♦︎ Go Grocery Shopping]]

### Notes
- 

I use Obsidian’s saved search query feature in order to easily list the different types of miscellaneous tasks that I have assigned myself. Here are two examples of what you can expect:

Here’s a list of saved notes and search queries:

Here’s one of the search queries in action:

Note Management

As for how I manage my notes, I’ll break this up into four categories:

  • Morning Pages (Continued)
  • Evergreen Notes
  • Resource Notes
  • Miscellaneous and Knowledge Base Notes

Morning Pages (Continued)

So, let’s continue where we left off in regards to this topic. This is the template that I use for each of my Morning Pages:

Association: [[Morning Pages]]

Associated Comments/Pages
-

Under the associated comments/pages area, I use the following strategy:

New ideas or notes: I create a new note and then add my thoughts to the new note that was created.

Thoughts related to past ideas/notes: I reference the associated note and enter my notes beside it.

Here’s an example:

Association: [[Morning Pages]]

Associated Comments/Pages

- [[This is a new note]]
- [[This is a past idea or note]] I think I should go about this in a different way. Let's...

Evergreen Notes

I have recently stumbled onto the trend of creating evergreen notes. Andy Matuschak coined the term and he describes it like so:

Evergreen notes are written and organized to evolve, contribute, and accumulate over time, across projects.

He then goes on to provide the following principles on how to go about writing these types of notes:

  • They should be atomic, i.e. about one thing and entirely about that one thing.
  • They should be concept-oriented.
  • They should be densely-linked.
  • You should let these notes organize themselves organically instead of starting with a strict hierarchy in the beginning.

In Maggie Appleton’s words, they are “a way to build up a personal library of clear opinions, beliefs and original thoughts.” In her workflow, she actually added a state to her evergreen notes, i.e. seedling budding Evergreen. She offered some more information about this approach in the following tweet and in additional replies to this tweet:

Yeah still early days and all experimental. But number of seedling potentially infinite. It’s just a pile of potentials. Some may never grow to evergreens if they don’t need to.   Not too worried about time to maturity either. Am finding I develop them as and when needed. — Maggie Appleton (@Mappletons) June 10, 2020

You can check out her digital garden of Evergreen notes here. I’m personally a fan of this approach and added it to my workflow when I’m working with Evergreen notes, as you can see here:

State: 

Associations:

### Notes
- 

You can learn more about Evergreen notes and what the aforementioned principles mean by visiting this page on Andy’s website. Additionally, if you want to see some great illustrations that help to explain the concept even further, you should check out the ones that were created by Maggie.

Resource Notes

When it comes to writing up notes on items like books, presentations, and articles, I use the following template:

### Metadata
- Associations: [[Resource]] [[Resource Type, ex. Book]]
- Author:
- Link:

### Notes
-

Miscellaneous and Knowledge Base Notes

As for miscellaneous and knowledge base notes, this is the template that I use:

Associations:

### Notes
-

Software Development Knowledge Base

The main reason why I started to try out knowledge base apps was because I wanted to build a software development knowledge base. I wanted to be able to easily documents things that I learned while doing my development work and reference them in the future. Additionally, it would be nice if I could store code that I wanted to save for later reference. For instance, I may want to save an approach that I used for one project so I wouldn’t have to start from scratch in the future if I was working on something similar.

Saving Development Knowledge

In combination with Alfred and Obsidian’s header reference feature, I was able to build something that fits the bill for this scenario.

When I want to save some knowledge for later reference, I add it to the bottom of an intention. In this case, I’m saving some notes about a notable package that can be used with Javascript and other languages, called cuid.

#### cuid
- CUID (Collision Resistant IDs)
- Package that you gives you near unique IDs (a duplicate ID will be returned very rarely)

For each “header note,” I put where I want its reference to go by adding a list of destinations after all of these notes:

Note

The order needs to be consistent.

#### cuid
- CUID (Collision Resistant IDs)
- Package that you gives you near unique IDs (a duplicate ID will be returned very rarely)

#### Another header note
- You can also include code.

#### Destinations
- [[React - Notable Packages]]
- [[Destination where the reference for the second note should go]]

When I complete the intention, I add “Ready to be Recorded” to the bottom of the note.

I then run an Alfred workflow that runs a Python script that gets all of the files that were modified within three days that contain the words “Ready to be Recorded” and automatically appends each reference to the end of the notes that you marked as each header notes destination. In the above case, here’s me about to run the workflow and the final result (edit and preview modes):

Saving Code

The nice thing about Obsidian is that it allows you to easily write code blocks. It supports syntax highlighting and you can use the one associated with a given language by putting the language (written out or abbreviated) after the first backticks.

function helloWorld() {
    console.log("Hello World!")
}

I use the following template when I’m saving code to its own note:

Associations:

### Notes
- 
  
### Code
``` js

```

Closing

And, with that, that’s how I use Obsidian to manage my goals, tasks, notes, and software development knowledge base. I’m happy that I wrote this article as it has allowed me to refine and extend my system in various ways, such as ensuring that I’m not using folders for anything other than attachments and adding recurring intentions/miscellaneous tasks.

You can download a starter kit that I put together that follows this system on GitHub. As a side note, I actually used Obsidian to write this article in a vault dedicated to writing articles. I mainly did this because I like being able to have total control over the version history with Git.

I hope you found this article helpful. If you did, I would greatly appreciate it if you liked the article by clicking on the heart icon on the left hand side. And, if you wanted to go even further, feel free to buy me a coffee via Ko-fi.

Lastly, if you have any questions, feel free to ask them.

Till next time~