Narthur's ADHD Journal

For a while I’ve had two monitors for my personal computer in my room. Recently my computer’s HDMI port died, meaning I was down to a single monitor until I could order a Display Port to HDMI cable to utilize one of the still-functioning ports on my computer.

Being back to a single monitor for that computer for a while highlighted just how helpful I find it to have multiple monitors in order to be able to continue making progress on tasks in spite of my ADHD symptoms.

Having multiple monitors means I can have multiple programs visible at the same time, which is very helpful for tasks such as my personal accounting where I need to have YNAB and for example my bank open at the same time and refer to both. When my symptoms are bad, I have a hard time with working memory. Being able to have everything I need for the task at hand visible at once helps mitigate this problem.

An aside, I’ve found myself noticing how well or poorly computer games do at this, too. I’ve come to think that having easy access to all necessary information needed for the decision at hand should be an accessibility concern for all software to be ADHD friendly.

Somewhat related to this, I’ve continued to find my desk whiteboard that I use for my work computer to be very useful for augmenting my working memory. I’ve just purchased another one to keep on my non-work desk, too.

I’d be interested to hear how other people augment their working memory, whether or not they have ADHD. I feel like there are probably more ways I could make my life more resilient to poor working memory that I haven’t thought of yet.


There are LCD writing tablets for kids. They are supposed to survive for a year on a single watch battery. The only things you can do are “draw” (pressure-based) and “erase all”.

The price here in Poland is $3.20 per tablet (8.5"), so I just bought four.

Two are always with me at work. For example, when I’m tired, I just break down work tasks into incredibly tiny steps, like “1) git fetch 2) make a new branch 3) actually add filtering” or whatever. I found myself preferring those tablets to a paper notebook, because they feel “free” and also because they’re a novelty and therefore more fun.

I haven’t tried a whiteboard so I don’t know how it compares. I guess a cool thing about those tablets is that you can take them with you everywhere. Incredibly light, too. Just thin pieces of plastic.


Another thing I do at work is “keep a Confluence page detailing how to perform all common tasks”. Partly it’s because Documentation Is Good. But partly it’s just because I will forget otherwise. Even basic things like “which four commands need to be done in what order when starting our app”.

I’m not sure it’s even “working memory augmentation” as much as… living in stateless mode?

“Write things down” is obvious advice. But there are lots of things I could be writing down. I’ve found diaries and such to be less directly useful than those micro-manuals for everything. But I dunno.


I’ve scheduled a two-week break on my breaths goal to see if I still want to keep it.

1 Like

Having conversations around my diet and nutrition, specifically around finding ways to consistently eat in a way that won’t result in a mid-afternoon crash.


I’ve scheduled my breaths goal for archive, and restarted a showers goal to help me stay more consistent with personal hygiene. I’ve set the deadline for 9am.

1 Like

I’ve switched around my schedule such that I take Friday and Saturday off from work, work on my own projects on Sunday, and do work for my primary client Monday through Thursday.

Today I’ve made the following improvements to my custom Beeminder dashboard:

  • added support for colon-separated time values when adding data
  • dashboard now pre-fills the value input with the goal’s last datapoint value
  • markdown is now parsed and displayed in the fineprint
  • there are now +/- buttons on either side of the value input for incrementing the value, similar to the official Android Beeminder app
1 Like

I’m archiving my goal for posting to this journal for now.


I’ve restarted my breaths goal to try to continue keeping breath exercise a part of my natural tools for managing emotions.


does it work for you? mine doesnt seem to update the data onto the graph. im using inspire 2.

1 Like

Yes, been using my inspire 2 with Beeminder with generally no issues. Though it can take some time for data to sync from the inspire 2 to the fitbit app, and then from the fitbit app to Beeminder. If I’m impatient I trigger those syncs manually.


thank you for the quick reply. i appreciate it. i’m having issues with data sync into beeminder… waiting for support to help me.


Yesterday I had a coaching session with @philip thinking about ways I could better keep track and surface what I accomplish on my different software development projects. We came up with the idea of writing some code that would automatically create TaskRatchet tasks for summarizing what I accomplished for each of my Toggl time entries.

I just finished writing and deploying the code to do this for me. When Toggl posts and event to my webhook, my code checks to see if it’s a time entry-related event and if it has a stop time. If both are true, it creates a TaskRatchet task for me to summarize what I accomplished during that time entry.

Currently it creates these tasks one hour out if I wrote a description in Toggl, and 30 minutes out if I didn’t. I’m hoping this will be a little nudge to be more consistent with noting what I’m doing in Toggl, too.

I used to run my personal automation code using Google Cloud Functions. But I’ve recently moved it to a persistent server instance.

This is the file that handles creating the tasks:

1 Like

My automations sends me Telegram messages notifying me of upcoming beemergencies on a modified zeno schedule that only takes the next due goal into account, instead of having separate zeno schedules for each goal like Beeminder does. My phone then creates an alarm one minute in the future for each notification, creating notifications that I am forced to manually dismiss.

Today I modified my code to add similar notifications for TaskRatchet. So now I have two zeno schedule “instances,” one for Beeminder and one for TaskRatchet.

I also took this as an opportunity to generalize my code between the two by creating a factory function that I use to set up each schedule.


My taskratchet notifications don’t seem to be working, and I think I may have broken my beeminder notifications, too. I’m wroking on debugging the issue.

In the meantime, in order to clean up my server logs, I modified my Beeminder createDatapoint function to hopefully ignore 422 duplicate datapoint errors caused when I purposefully ~create multiple datapoints with the same request ID.

(On a side note, I think I’d like to add similar optional idempotency to TaskRatchet’s create task API endpoint, at least on v2 of the API.)

1 Like

I managed to fix the TaskRatchet notifications. The issue was I was using my getTasks function instead of my getPendingTasks function, so my code was finding the oldest task, checking if it’s due today (which it will never be since it was the oldest task on my account), and then exiting early. Switching to getPendingTasks fixed the issue.

Also, given the solution I found, I’m thinking my Beeminder notifications are probably still working, and it was just a coincidence that I didn’t receive one during the period I was testing.

1 Like

Also quite cool that Arc can do this:

1 Like

A conversation with @adamwolf prompted me to reconsider if I could automate data entry for my email zero goals. I looked into adding Gmail API access to my automations server, but Google requires a full OAuth flow to authenticate, which I didn’t feel like messing with. So instead I’ve added several web hook routes to my server, one per inbox I beemind. I’m then using Google Apps Script to post my inbox count to my webhooks every five minutes. My automations server then posts a datapoint to the appropriate goal, with a value of 1 if the inbox is empty, and zero otherwise.

Here’s the code I copy-pasted between my different Google accounts, modifying the hook I was hitting for each respective account:

function main() {
  const count = GmailApp.getInboxThreads().length;

  UrlFetchApp.fetch(`${BASE}/hooks/email-zero`, {
    method: "post",
    contentType: "application/json",
    payload: JSON.stringify({

Aside: @adamwolf and I would love to have some kind of conditional upsert or insert ability built into the Beeminder API such that in cases like this you could say, “Hey, Beeminder, only add this datapoint if it would modify the goal’s aggregated value for the date.” Otherwise, in cases like this, you’re pretty much stuck with adding potentially 100’s of useless datapoints each day if you don’t want to bother with fetching datapoints and doing the calculations yourself to determine if the new datapoint is needed.


Aside: @adamwolf and I would love to have some kind of conditional upsert or insert ability built into the Beeminder API such that in cases like this you could say, “Hey, Beeminder, only add this datapoint if it would modify the goal’s aggregated value for the date.

Depending on how you aggregate, you may be able to approximate this with a carefully chosen requestid based on the date and value - e.g. including the datapoint value in the requestid, or a -zero/-nonzero suffix.

  • Identified server errors as coming from rate limiting due to my sloppy email-zero automations
  • Changed how I log those errors to make them easier to interpret in server logs
  • Added createBinaryDatapoint function to address rate limiting for email-zero goals (ht @theospears)
  • Worked on refactoring my Express usage
1 Like