4.5 KiB
title | date | draft | extraHeadContent | tags | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
2024 Emails | 2025-01-01T17:10:13-08:00 | true |
|
|
On a whim, I started tracking my email volume during my morning startup routine during 2024.
Specifically, for each of my email accounts (gmail and proton), I recorded the number of unread emails I had at the start of the morning, and how many remained unread at the end of the routine. The ideal would be for the latter number to always be 0. Practically speaking, I tended to aim for ensuring that I had one fewer unread email in each account than I'd ended the previous day with - acknowledging that, since I wouldn't be checking my email every day (life gets in the way!), there would be regular spikes.
Anyway, here's wonderwall the graph1:
{{< rawhtml >}} {{< /rawhtml >}}
And filtered views of just each account
{{< rawhtml >}} {{< /rawhtml >}}
{{< rawhtml >}} {{< /rawhtml >}}
I'm not sure what conclusions to draw from this, other than:
- I didn't check my email very much (or, at least, didn't track my checking) during May and June (unsurprising, as this was the time I was dealing with my Mum's passing-away)
- I received a lot of emails in early July (again - unsurprising. This was mostly syncing up with interaction with the solicitors, funeral home, etc.)
- I'm receiving more email on my Gmail Account than my Proton. Unsurprising once again, as I've had that account for decades (as opposed to a year or so for Protonmail) and am probably on way more mailing lists that I should probably unsubscribe from, as well as being the account associated with various accounts and ecommerce sites.
I can't think why anyone would - but if you want to see the code that generated this, it's here:
#!/usr/bin/env python3
import os
import pathlib
import yaml
counts = {}
def main():
should_hide_gmail = os.environ.get('SHOULD_HIDE_GMAIL') == 'TRUE'
if not should_hide_gmail:
counts['gmail-start'] = []
counts['gmail-end'] = []
should_hide_proton = os.environ.get('SHOULD_HIDE_PROTON') == 'TRUE'
if not should_hide_proton:
counts['proton-start'] = []
counts['proton-end'] = []
d = pathlib.Path('/Users/scubbo/Dropbox/Obsidian/scubbo-vault/GTD/Daily TODOs')
for f_path in d.iterdir():
if f_path.is_dir():
continue
if not f_path.name.startswith('Todo - 2024'):
continue
with f_path.open('r') as f:
date = f_path.name[7:-3]
content = f.read()
data_index = content.index('# Data')
start_of_data_block = data_index+content[data_index:].index('```') + 3
length_of_data_block = content[start_of_data_block:].index('```')
data = yaml.safe_load(content[start_of_data_block:start_of_data_block+length_of_data_block])
if not should_hide_gmail:
if gs_count := data['gmail']['start-count']:
counts['gmail-start'].append({'date': date, 'count': gs_count})
if ge_count := data['gmail']['end-count']:
counts['gmail-end'].append({'date': date, 'count': ge_count})
if not should_hide_proton:
if ps_count := data['protonmail']['start-count']:
counts['proton-start'].append({'date': date, 'count': ps_count})
if pe_count := data['protonmail']['end-count']:
counts['proton-end'].append({'date': date, 'count': pe_count})
print([{'label': key, 'data': sorted(value, key=lambda x: x['date'])} for key, value in counts.items()])
if __name__ == '__main__':
main()
Output was piped to pbcopy
, and then hard-coded into the JS that serves this page.
-
made with Chart.js, which I'd already used in my EDH ELO tracker. ↩︎