The topic of too many, too inefficient meetings is definitely not a new one. But when we agreed on our most important team values in my current project recently, the uncontested number one value was efficient meetings. Our team felt that we have too many meetings with too many participants and too little remaining time to actually get stuff done.
I have also recently listened to a podcast episode on the topic which inspired the title for this post and which I recommend you to listen to as well, because common problems with and best practices for meetings are discussed. I, myself, also have the impression that I spent way too much time in meetings during the last months where it was no exception for me to sit in meetings for 5 to 7 hours a day and that such days frustrated me. This is especially true if those meetings are poorly prepared and thus feel like a waste of time.
So, as kind of a new year’s resolution, I wanted to track how much time I spend in meetings during 2025. For this, I use a tool that I already use heavily at work: Obsidian. I have created a page meeting-time-2025 on which I added a Simple Time Tracker widget to track meeting time by categories. I have pinned this page to my sidebar and just press the start button whenever I enter a meeting (or get dragged into an unscheduled meeting). Then, on my yearly note for 2025, I added the following DataviewJS query which makes use of the Heatmap Calendar plugin:
```dataviewjs
dv.span("** Time in meetings 😵**")
const calendarData = {
year: 2025, // optional, remove this line to autoswitch year
intensityScaleStart: 0,
intensityScaleEnd: 25200000,
colors: {
green2red: [
`#007f4e`,
`#72b043`,
`#f8cc1b`,
`#f37324`,
`#e12729`
],
},
entries: []
}
// get the time tracker plugin api instance
let api = dv.app.plugins.plugins["simple-time-tracker"].api;
// load trackers in the file with the given path
let trackers = await api.loadAllTrackers("meeting/meeting-time-2025.md");
for (let { section, tracker } of trackers) {
for (var d = new Date(2025, 0, 1); d <= new Date(2025,11,31); d.setDate(d.getDate() + 1)) {
let totalTime = 0;
let isoDate = d.toISOString().split('T')[0];
for (let entry of tracker.entries){
if (entry.subEntries){
totalTime += api.getTotalDuration(entry.subEntries.filter((e) => e.startTime.contains(isoDate)));
} else if(entry.startTime.contains(isoDate)) {
totalTime += api.getDuration(entry);
}
}
if (totalTime > 0 || dv.page("daily/" + isoDate)){
calendarData.entries.push({
date: isoDate,
intensity: totalTime,
})
}
}
}
renderHeatmapCalendar(this.container, calendarData)
```
Which produces the following output:
Days in black mean that I didn’t work on that day. Dark green means less than 11% of the day spent in meetings, which is practically nothing and leaves enough time for larger focus topics. Brighter green means less than 33% of the day spent in meetings, which still leaves some time for smaller topics and is ok for most days. Yellow means less than 55% of the time spent in meetings, which still allows to prepare those meetings well and not lose track of urgent topics, but gets to the point of not being fun anymore. Orange would mean less than 77% of the time spent in meetings, which usually means many back-to-back meetings where proper preparation becomes difficult. Above that would be indicated by red color and is a big no-go to me, because it does mean a lot of stress and meetings for which I can’t prepare properly and summarize important take-aways afterwards. Maybe I’ll tweak those values in the future, but this is what I want to go with for now.
So, for now, it looks quite good this year. The year is still hard-coded, but if I want to continue in 2026, I can easily adjust the template for the yearly note to fix this. I’m looking forward to the data and overview this will provide me with by the end of the year. It will probably help me to discover tendencies and determine whether my feeling of too many meetings is actually justified or just an impression created by a few outlier days with too many meetings.