How I use Obsidian
I've been using Obsidian for a little while now. At first, it was largely just a replacement for Notes.app, like Ulysses before it, I preferred it purely because I could see the markdown files that it was saving. As time went on though, I would pick up some new bits from folks at work who also use Obsidian, or from podcasts or blogs I subscribe to. It's now become a big part of my life on macOS and iOS β right up there with iTerm or Safari.
Writing documentation
Almost any piece of documentation I write for work starts its life in Obsidian. I have a vault just for work docs that doesn't get synchronised and lives on my work computer, but means I can write outlines and drafts out and publish a doc when it's ready. Not to mention having a local backup in case Confluence decides to crash and lose my work β though, to be fair, this is happening a lot less lately.
Daily notes and to-do lists
This is where Obsidian really shines in my opinion. I used to use Taskpaper for plain text daily to-do lists. And by daily to-do lists, I mean a single long list that I would keep adding things to / checking things off from. While this was kind of neat in the sense that I have a historic list of all things I've don, the method for organising those to-do items was a bit unwieldy. Each day I would need to tag an item with @today
if I wanted it to be visible in the "today" view. Booo ππΌ.
Obsidian has a built in concept of a "Daily Note". Right from the command palette, you can "open today's daily note" and if there isn't one, Obsidian will offer to make one for you. Of course, where this note is saved and its filename is customisable. But the cool thing is, you can also install a plugin to create a daily note from a template!
My daily note template is as follows:
- A created at timestamp
- A tag of "Daily Notes"
- A section for a to-do list
- A section for notes, tagged with #daily_note
(more on why in a bit).
created: <% tp.file.creation_date() %>
---
tags:: [[+Daily Notes]]
---
##### β
To do
- [ ]
---
# π Notes
- <% tp.file.cursor() %>
#daily_note
So now, whenever a daily note is created, it's labeled with the day's date and the cursor is placed in the notes section, ready to go.
There is one more plugin I use though, to make this setup really work for me. And that is a plugin to roll-over any to-dos from the previous daily note to today. This way I still have the history of what was done when, but not all the clutter or manual work of tagging when a task should appear.
So when I first log in for the day, I'll usually open the day's daily note and clean up whatever to-do items are rolling over, add any new for the day and then be good to go!
Plugins to make this happen: - Templater - Rollover Daily Todos - Calendar is also nice. It adds a calendar to the sidebar so you can jump to any daily note, without having to search.
Reviewing daily notes
I mentioned that I have a #daily_note
tag in the notes section itself. The reason for this is that every 6 months or so at work, performance review season rolls around. And, in what I am calling a weird coincidence, every 6 months or so I wish I had taken notes about what I had done for the previous 6 months. This is where the daily note tag comes in. My mate Mike put me on to another plugin called Dataview which basically lets you query your Obsidian vault. He also shared with me this script (below) that will search for notes in a folder with a given tag, and then pull the notes in to a view broken down by month and year.
So now, whenever I am taking notes in meetings, or when I am puzzling something out, I throw a #daily_note
on the end of important lines and violΓ , a prompt and a fighting chance of remembering what I did in the last 6 months.
// get daily notes pages
let pages = dv.pages('"Daily Notes" and #daily_note').sort(p => p.file.cday)
// group pages by year
let years = pages.groupBy(p => p.file.cday.toFormat("yyyy"))
// for each year...
years.forEach(year => {
// add a header
dv.header(3, year.key)
// group by month
let months = year.rows.groupBy(y => y.file.cday.toFormat("MMMM"))
// for each month...
months.forEach(month => {
// add a table with the month name as header
// and each item for that month in the body
let file = month.rows.file
dv.table(
[month.key],
file.
lists
.where(item => !item.task)
.map(item => ["- " + item.text]))
})
})
Writing these posts
I also use Obsidian for writing my weekly posts and posts like this one! While I wish it had better Micropub support, I make do with a Ruby script that pulls in Jekyll-like markdown files and converts them to the JSON that Micropub expects.