Tracking my oopses
| lifeMy stress level seems to be higher this year compared to last year. There are a number of ways I can tell when I need to slow down. I feel more tired, less energetic. Enthusiasm is difficult to muster. I need to break things down into smaller tasks. I make lots of little mistakes: I misplace things, I forget things, I don't think ahead.
I track my mistakes in my home-made web-based journal under the Oops category. It feels a little better, come to think of it, when I can recover at least some data from a mistake. It's part of life, just a signal that tells me my brain is getting overloaded.
I thought it would be interesting to analyse the frequency of my oops. For example, here are some recent oopses:
- I forgot to check the EmacsConf upload folder before e-mailing the speakers a nudge about videos. There were a few more videos in there, whew! It's all good, people are patient and wonderful. Impact: people's patience. (2025-11-21-01)
- I ate the last of the brown rice because I forgot to check if there was more. Good thing W- had more in the freezer. (2025-11-18-06)
- I fumbled the Apple Pencil as I took my iPad off the piano. It disengaged from the magnetic lock, slid down the piano cover, and fell on the floor, breaking the tip. I didn't want to rush to catch it because I was tired and I was also holding the iPad. Fortunately, I have a number of backup tips. Impact: maybe $3 to replace that tip eventually. Cause: tired. (2025-11-18-03)
- I washed the clothes on hot because I'm trying to avoid insect bites, but I accidentally shrank A+'s favourite purple shirt. Maybe next time I can just do a small load of my stuff. Impact: $10. I made up by buying new clothes for her, which I've been meaning to do anyway. #household (2025-11-15-16)
- I crossed the street against the lights because I wasn't looking at the pedestrian light. (2025-11-11-06)
Here's a yearly analysis:
Code for retrieving and grouping my journal entries
(append '(("Year" "Count"))
(sort
(mapcar (lambda (group)
(list
(car group)
(length (cdr group))))
(seq-group-by
(lambda (o) (substring (my-journal-date o) 0 4))
(seq-filter (lambda (o) (string= (my-journal-category o) "Oops")) (my-journal-get-entries))))
:key 'car))
Data table
| Year | Count |
| 2017 | 12 |
| 2018 | 75 |
| 2019 | 36 |
| 2020 | 38 |
| 2021 | 33 |
| 2022 | 25 |
| 2023 | 28 |
| 2024 | 37 |
| 2025 | 73 |
Code for graphing comments by year
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
df = pd.DataFrame(data[1:], columns=data[0])
df['Count'] = df['Count'].astype(int)
df['Year'] = df['Year'].astype(int)
df = df.sort_values('Year')
plt.figure(figsize=(12, 6))
ax = sns.barplot(x='Year', y='Count', data=df)
plt.title('Oops by Year (2017-2025)', fontsize=16, fontweight='bold')
plt.xlabel('Year')
plt.ylabel('Number of oops entries')
plt.xticks(rotation=45)
plt.grid(axis='y')
for i, v in enumerate(df['Count']):
ax.text(i, v + 1, str(v), ha='center', fontsize=9)
plt.tight_layout()
plt.savefig('year_count_plot.svg')
return 'year_count_plot.svg'
2017 was not a full year of data, so that's probably why the number is so low. 2018 was when my dad died. I flew to the Philippines several times with my 2-year-old daughter so that we could spend time with my mom. It's a wonder that I managed to keep things mostly sorted out. Things were mostly manageable in between despite the ongoing pandemic. This year, though, a confluence of factors added a lot more strain on my brain. I wonder if part of it is because I'm concerned about health issues for people I care about. I also worry about the kiddo, school, change, and possibly adolescence. Who knows, maybe I'm starting to go through perimenopause, which apparently tends to include brain fog and mood swings. Fun. These are big things that I won't be able to resolve on my own, but I can get better at not overextending myself.
Might be fun to do a month-by-month analysis.
Code for retrieving and grouping my journal entries
(append '(("Year" "Month" "Count"))
(sort
(mapcar (lambda (group)
(list
(substring (car group) 0 4)
(string-to-number (substring (car group) 5))
(length (cdr group))))
(seq-group-by
(lambda (o) (substring (my-journal-date o) 0 7))
(seq-filter (lambda (o) (string= (my-journal-category o) "Oops")) (my-journal-get-entries))))
:key (lambda (row) (format "%s-%02d" (car row) (cadr row)))))
Code for making the heatmap
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame(data[1:], columns=data[0])
df = pd.pivot_table(df, columns=['Month'], index=['Year'], values='Count', aggfunc='sum', fill_value=0).iloc[::-1].sort_index(ascending=True)
plt.figure(figsize=(12, 8))
sns.heatmap(
df,
annot=True,
fmt="d", # Format as integer
cmap="YlGnBu", # Color map
linewidths=.5,
cbar_kws={'label': 'Count of "Oops" Entries'}
)
# Set the title and axis labels
plt.title('Heatmap of "Oops" Entries by Month and Year', fontsize=16)
plt.xlabel('Month', fontsize=12)
plt.ylabel('Year', fontsize=12)
plt.savefig('number-of-oops-by-month.png')
return df
Data table
Month 1 2 3 4 5 6 7 8 9 10 11 12 Year 2017 0 0 0 0 0 0 0 0 7 2 0 3 2018 4 7 4 10 10 8 8 1 7 7 5 4 2019 4 4 2 4 4 1 3 5 1 1 2 5 2020 3 1 2 2 1 5 7 7 4 2 2 2 2021 2 2 1 1 2 4 6 4 2 2 1 6 2022 2 3 2 1 3 2 0 3 2 2 4 1 2023 3 1 1 1 5 2 4 5 0 0 3 3 2024 0 1 1 4 4 8 8 1 3 3 2 2 2025 7 1 7 2 6 4 9 8 10 4 15 0
Oooh, what's up with this month, yeah…
Most of my mistakes are small and easy to fix, just wasting time or patience. Others are a bit more annoying (dropping electronic devices, etc.). Some are potentially life-limiting (gotta make sure I look at the right lights before crossing the street). I tend to have a hard time with:
- transitions, like coming home after a bike ride: I might accidentally hang up my keys on the wrong hook if I'm not paying attention. I've started saying the steps out loud.
- tidying: If I have an attentional lapse, I put things in not-quite-the-right-place, so I probably can't listen to podcasts or think about complex thoughts.
- travel: If I'm biking or walking, I have to pay extra attention.
- task switching: interruptions, stacks, etc. I say things out loud and write them down if needed.
When I notice myself making more oopses than usual, I try to sleep more, take things more slowly, offload more of my thoughts to drawings and notes, ask for help, and do fewer things.
I'm working on single-tasking more instead of getting distracted by interesting thoughts. Maybe I used to be able to think about stuff, but now it's probably better to just let my mind be slightly bored if necessary instead of letting it get overloaded. I have to adapt to my capacity at the moment. I can either trust that those thoughts will come back if they're important, or take a moment to write them down on my phone. I can also give myself more focus time during the day to revisit those thoughts so that I don't get tempted to squeeze them in while, say, I'm putting away the dishes.
Maybe routines, songs, physical cues like checklists, or pointing and calling (physically pointing to something and saying it out loud for confirmation) can help me with some of my frequently-made mistakes.
Little by little. I might not be able to get rid of all the little mistakes, but if I can smoothen out some of the frequent ones, have an oops fund for the monetary costs of moderate mistakes, and keep myself from making the life-limiting ones, that might be enough.