2025-03-24 Emacs news

| emacs, emacs-news

Links from reddit.com/r/emacs, r/orgmode, r/spacemacs, r/planetemacs, Mastodon #emacs, Bluesky #emacs, Hacker News, lobste.rs, programming.dev, lemmy.world, lemmy.ml, planet.emacslife.com, YouTube, the Emacs NEWS file, Emacs Calendar, and emacs-devel. Thanks to Andrés Ramírez for emacs-devel links. Do you have an Emacs-related link or announcement? Please e-mail me at sacha@sachachua.com. Thank you!

View org source for this post

mastodon.el: Copy toot URL after posting; also, copying just this post with 11ty

| mastodon, emacs, 11ty

I often want to copy the toot URL after posting a new toot about a blog post so that I can update the blog post with it. Since I post from Emacs using mastodon.el, I can probably figure out how to get the URL after tooting. A quick-and-dirty way is to retrieve the latest status.

(defvar my-mastodon-toot-posted-hook nil "Called with the item.")

(defun my-mastodon-copy-toot-url (toot)
  (interactive (list (my-mastodon-latest-toot)))
  (kill-new (alist-get 'url toot)))
(add-hook 'my-mastodon-toot-posted-hook #'my-mastodon-copy-toot-url)

(defun my-mastodon-latest-toot ()
  (interactive)
  (require 'mastodon-http)
  (let* ((json-array-type 'list)
         (json-object-type 'alist))
    (car
     (mastodon-http--get-json
      (mastodon-http--api
       (format "accounts/%s/statuses?count=1&limit=1&exclude_reblogs=t"
               (mastodon-auth--get-account-id)))
      nil :silent))))

(with-eval-after-load 'mastodon-toot
  (when (functionp 'mastodon-toot-send)
    (advice-add
     #'mastodon-toot-send
     :after
     (lambda (&rest _)
       (run-hook-with-args 'my-mastodon-toot-posted-hook (my-mastodon-latest-toot)))))
  (when (functionp 'mastodon-toot--send)
    (advice-add
     #'mastodon-toot--send
     :after
     (lambda (&rest _)
       (run-hook-with-args 'my-mastodon-toot-posted-hook (my-mastodon-latest-toot))))))

I considered overriding the keybinding in mastodon-toot-mode-map, but I figured using advice would mean I can copy things even after automated toots.

A more elegant way to do this might be to modify mastodon-toot-send to run-hook-with-args a variable with the response as an argument, but this will do for now.

I used a hook in my advice so that I can change the behaviour from other functions. For example, I have some code to compose a toot with a link to the current post. After I send a toot, I want to check if the toot contains the current entry's permalink. If it has and I don't have a Mastodon toot field yet, maybe I can automatically set that property, assuming I end up back in the Org Mode file I started it from.

(defun my-mastodon-org-maybe-set-toot-url (toot)
  (when (derived-mode-p 'org-mode)
    (let ((permalink (org-entry-get-with-inheritance "EXPORT_ELEVENTY_PERMALINK")))
      (when (and permalink
                 (string-match (regexp-quote permalink) (alist-get 'content toot))
                 (not (org-entry-get-with-inheritance "MASTODON")))
        (save-excursion
          (goto-char (org-find-property "EXPORT_ELEVENTY_PERMALINK"
                                        permalink))
          (org-entry-put
           (point)
           "EXPORT_MASTODON"
           (alist-get 'url toot))
          (message "Toot URL set: %s, republish if needed" toot))))))
(add-hook 'my-mastodon-toot-posted-hook #'my-mastodon-org-maybe-set-toot-url)

If I combine that with a development copy of my blog that ignores most of my posts so it compiles faster and a function that copies just the current post's files over, I can quickly make a post available at its permalink (which means the link in the toot will work) before I recompile the rest of the blog, which takes a number of minutes.

(defun my-org-11ty-copy-just-this-post ()
  (interactive)
  (when (derived-mode-p 'org-mode)
    (let ((file (org-entry-get-with-inheritance "EXPORT_ELEVENTY_FILE_NAME"))
          (path my-11ty-base-dir))
      (call-process "chmod" nil nil nil "ugo+rwX" "-R" (expand-file-name file (expand-file-name "_local" path)))
      (call-process "rsync" nil (get-buffer-create "*rsync*") nil "-avze" "ssh"
                    (expand-file-name file (expand-file-name "_local" path))
                    (concat "web:/var/www/static-blog/" file))
      (browse-url (concat my-blog-base-url (org-entry-get-with-inheritance "EXPORT_ELEVENTY_PERMALINK"))))))

The proper blog updates (index page, RSS/ATOM feeds, category pages, prev/next links, etc.) can happen when the publishing is finished.

So my draft workflow is:

  1. Write the post.
  2. Export it to the local NODE_ENV=dev npx eleventy --serve --quiet with ox-11ty.
  3. Check that it looks okay locally.
  4. Use my-org-11ty-copy-just-this-post and confirm that it looks fine.
  5. Compose a toot with my-mastodon-11ty-toot-post and check if sending it updates the Mastodon toot.
  6. Re-export the post.
  7. Run my blog publishing process. NODE_ENV=production npx eleventy --quiet and then rsync.

Let's see if this works…

View org source for this post

On this day

| 11ty, js

Nudged by org-daily-reflection (@emacsomancer's toot) and Jeremy Keith's post where he mentions his on this day page, I finally got around to making my own on this day page again. I use the 11ty static site generator, so it's static unless you have Javascript enabled. It might be good for bumping into things. I used to have an "On this day" widget back when I used Wordpress, which was fun to look at occasionally.

The code might be a little adamant about converting all the dates to America/Toronto:

11ty code for posts on this day
export default class OnThisDay {
  data() {
    return {
      layout: 'layouts/base',
      permalink: '/blog/on-this-day/',
      title: 'On this day'
    };
  }

  async render(data) {
    const today = new Date(new Date().toLocaleString('en-US', { timeZone: 'America/Toronto' }));
    const options = { month: 'long', day: 'numeric' };
    const date = today.toLocaleDateString('en-US', options);
    const currentMonthDay = today.toISOString().substring(5, 10);
    let list = data.collections._posts
        .filter(post => {
          const postDateTime = new Date(post.date).toLocaleString('en-US', { timeZone: 'America/Toronto' });
          const postMonthDay = (new Date(postDateTime)).toISOString().substring(5, 10);
          return postMonthDay === currentMonthDay;
        })
        .sort((a, b) => {
          if (a.date < b.date) return 1;
          if (a.date > b.date) return -1;
          return 0;
        })
        .map(post => {
          const postDateTime = new Date(post.date).toLocaleString('en-US', { timeZone: 'America/Toronto' });
          const postDate = new Date(postDateTime);
          const postYear = postDate.getFullYear();
          return `<li>${postYear}: <a href="${post.url}">${post.data.title}</a></li>`;
        })
        .join('\n');
    list = list.length > 0
      ? `<ul>${list}</ul>`
      : `<p>No posts were written on ${date} in previous years.</p>`;

    return `<section><h2>On this day</h2>
<p>This page lists posts written on this day throughout the years. If you've enabled Javascript, it will show the current day. If you don't, it'll show the posts from the day I last updated this blog. You might also like to explore <a href="/blog/all">all posts</a>, <a href="/topic">a topic-based outline</a> or <a href="/blog/category">categories</a>.</p>
<h3 class="date">${date}</h3>
<div id="posts-container">${list}</div>

<script>
  $(document).ready(function() { onThisDay(); });
</script>
</section>`;
  }
};
Client-side Javascript for the dynamic list
function onThisDay() {
  const tz = 'America/Toronto';
  function getEffectiveDate() {
    const urlParams = new URLSearchParams(window.location.search);
    const dateParam = urlParams.get('date');
    if (dateParam && /^\d{2}-\d{2}$/.test(dateParam)) {
      const currentYear = new Date().getFullYear();
      const dateObj = new Date(`${currentYear}-${dateParam}T12:00:00Z`);
      if (dateObj.getTime()) {
        return {
          monthDay: dateParam,
          formatted: dateObj.toLocaleDateString('en-US', { month: 'long', day: 'numeric' })
        };
      }
    }
    const today = new Date(new Date().toLocaleString('en-US', { timeZone: tz }));
    return {
      monthDay: today.toISOString().substring(5, 10), // MM-DD
      formatted: today.toLocaleDateString('en-US', { month: 'long', day: 'numeric' })
    };
  }
  // Fetch and process the posts
  fetch('/blog/all/index.json')
    .then(response => response.json())
    .then(posts => {
      const dateInfo = getEffectiveDate();
      const dateElement = document.querySelector('h3.date');
      if (dateElement) {
        dateElement.textContent = dateInfo.formatted;
      }
      const matchingPosts = posts.filter(post => {
        const postDate = new Date(post.date).toLocaleString('en-US', { timeZone: tz });
        const postMonthDay = (new Date(postDate)).toISOString().substring(5, 10);
        return postMonthDay === dateInfo.monthDay;
      });

      matchingPosts.sort((a, b) => {
        const dateA = new Date(a.date);
        const dateB = new Date(b.date);
        return dateB - dateA;
      });

      const elem = document.getElementById('posts-container');
      if (matchingPosts.length > 0) {
        const postsHTML = matchingPosts.map(post => {
          const postDate = new Date(post.date).toLocaleString('en-US', { timeZone: tz });
          const postYear = new Date(postDate).getFullYear();
          return `<li>${postYear}: <a href="${post.permalink}">${post.title}</a></li>`;
        }).join('\n');
        elem.innerHTML = `<ul>${postsHTML}</ul>`;
      } else {
        elem.innerHTML = `<p>No posts were written on ${dateInfo.formatted}.</p>`;
      }
    })
    .catch(error => {
      console.error('Error fetching posts:', error);
    });
}

I used to include the day's posts as a footer on the individual blog post page. That might be something to consider again.

View org source for this post

Stick figure out feelings

| drawing

Feel free to use or remix these stick figures under the Creative Commons Attribution License.

Text and links from sketch

Stick figure out feelings https://sachachua.com/2025-03-22-02

Feelings wheel by Geoffrey Roberts, stick figures by Sacha Chua and the kiddo

  • happy
    • playful
    • content
    • interested
    • proud
    • accepted
    • powerful
    • peaceful
    • trusting
    • optimistic
  • surprised
    • startled
    • confused
    • amazed
    • excited
  • bad
    • tired
    • busy
    • stressed
    • bored
  • fearful
    • scared
    • anxious
    • weak
    • rejected
    • insecure
    • threatened
  • angry
    • let down
    • humiliated
    • bitter
    • mad
    • aggressive
    • frustrated
    • distant
    • critical
  • disgusted
    • disapproving
    • disappointed
    • awful
    • repelled
  • sad
    • lonely
    • vulnerable
    • despair
    • guilty
    • depressed
    • hurt

I had fun drawing stick figures based on Geoffrey Roberts' emotion wheel while waiting for A+. After she finished her class, she sat with me, suggesting some ways to improve the expressions and even adding her own flair.

We imagined another sketch showing cats expressing the different emotions. A+ already has a title for that sketch: "Feline feelings." It'll be a good challenge, figuring out how to draw cats clearly enough to show those emotions. Related: this sketch of bird stickers on r/Supernote.

Other variations: drawing other emotion wheels, like the Plutchik wheel or the Junto wheel. Some wheels vary emotional intensity, which will be a nice exercise.

A challenge: working on the outer ring of emotions. How do I distinguish "disillusioned" from "perplexed"? What about "free" from "joyful"?

I found my copy of Bikablo Emotions, and I'm looking forward to picking up more tips from it. I remember flipping through it for my post on sketchnotes: Building my visual vocabulary (2013). So many things to explore… =)

View org source for this post

Weekly review: Week ending March 21, 2025

| review, weekly

Some walking, some writing, some Emacs tweaking. A+ and I went to a pottery wheel workshop. That was nice. My eyes have been dry lately, so I've been using eye drops.

Blog posts

Sketches

Toots

  • On Michel de Montaigne's tangents: quote from Je Replie Ma Vue Au Dedans | Brain Baking (toot)

    “One of the consequences of his unique approach to writing is the many digressions present in the Essais. And with many, I mean a great deal of 'em. Most, if not all, essays only mention the topic—as supposedly made apparent to the reader via the title—in passing. Bakewell picks out an example: About chariots. The text starts with a digression on writing, sways over to the very compelling subject of sneezing only to land on the actual topic two pages later to then to drift off again onto a summary of recent happenings in the New World.”

    If I meander, at least I'm in excellent company.

  • On intentional friction - quote from PKM Summit 2025 Notes | Brain Baking (toot) Intentional friction: slow down and add context (your why) for tasks and notes. I like this because it makes it easier to pick things up again and actually do something about it. Related thought: turning books into action items

    “Someone else then advised to add context: why did you record this, or why do you think this might be important? If you can't write that down, then don't save it. This is added friction: constantly aiming to reduce friction is not always beneficial to your system. We still have the habit to collect too much stuff and do too little with it. This seemed to be a shared struggle among attendants and speakers alike.”

  • On sharing your questions - quote from Ness Labs on collective curiosity (toot) Also via @takeonrules's journal entry

    1. Mapping the unknown. Many breakthroughs start when someone admits “I don't understand why…” Sit down with your colleagues and explicitly write down what you don't know or understand about a topic. This turns knowledge gaps into shared opportunities for discovery. 

    This reminds me of that link I just shared about a person's big questions: https://tracydurnell.com/questions/
    another example: https://reeswrites.com/about-big-questions/

    Oh hey, Ness Labs = Anne-Laure Le Cunff, of the ADHD and curiosity paper I've also got a link to somewhere in my drafts; adding another blog to my feed reader

    Followed up: I started a list of questions I often consider, inspired by Tracy Durnell.

  • On the density and invisibility of digital notes (toot)

    And these digital files take a different kind of stewardship. The density of information per cubic inch of material is mind-boggling. Yet that density of information exists invisible to our analogue self, we need wizardry to make it visible and hopefully known. This density and invisibility, I suspect, makes it easy to lose and misplace and disregard.

    It's difficult to get this sense of heft for digital thoughts. I wanted go experiment with that a bit using treemaps, but I'm not quite there yet. Spatial relationships are interesting too. I used to lay out index card sketches. Maybe I'll learn how to use Noteful or similar apps to get a handle on a larger topic by using sketched and hyperlinked maps…

  • On learning the terminology - quote from "How did you know to do that?" on avdi.codes (toot)

    Learning the terminology is an important step that people struggle with. Communities help with that.

    Just as an example: I've realized that when I'm studying a problem, I rely a lot on “second-order Googling”. That's a process whereby I don't try to discover a solution in a single search. Instead, in my first few searches, I just try to find other people talking about the problem area, using my own naïve description of the task at hand.

    Then, once I discover some conversations that are taking place among people experienced in that domain, I read over them looking for the specific terminology that I had missed. Once I have the terminology, I'm able to use it to compose much more focused searches that usually lead me directly to the answer I'm looking for.

  • On each person shaping Emacs to fit them - quote from BSAG » On the 'Emacs From Scratch' cycle (toot)

    It struck me the other day that there is probably more variation and diversity among different users' Emacs configurations than among the configurations of any other editor. Users are able to change almost any aspect of the way that Emacs functions, with easy access to clear documentation explaining how it works right now, and how you can change it. This means that each instance of Emacs ends up a unique shape, like an old tool with a wooden handle worn down into the shape of its owners' habitual grasp. That simile doesn't quite work, because Emacs users work hard and deliberately to shape their Emacs tools to fit their needs, so it is more than just passive wear.

  • What lights you up? quote from "Little p purpose" – Butterfly Mind (toot)

    Jordan Grumet, the guest on the podcast, addresses this worry. He distinguishes between big P Purpose and little p purpose. Purpose with a big P is the one that gets me, and apparently a lot of people, stressed. It feels like, “Why am I here? What am I meant to do?” It induces anxiety if we want to find Purpose but don't know where to look. Little p purpose, though, does not ask “why?”; it doesn't examine the reason for our existence. Instead it asks, “what lights you up?”

  • On tagging posts with the people you got the ideas from - quote from "Early web influencers" | smays.com (toot) I hadn't considered using tags to tag people's names in blog posts before, but the way it's used in this post is neat. I clocked in the link for Nikol Lohr and saw a series of posts related to that person's thoughts. Interesting.

    This entry was posted in Internet and tagged Bruce Sterling, Chris Pirillo, Clay Shirky, Dan Gillmor, Dave Winer, David Weinberger, Doc Searls, Douglas Coupland, Douglas Rushkoff, Halley Suitt, Hugh MacLeod, Jakob Nielsen, Jeff Jarvis, Kevin Kelly, Mark Cuban, Mark Ramsey, Nikol Lohr, Scott Adams, Seth Godin, Steve Outing, Steven Levy, Terry Heaton, Tom Peters

  • On the connection between reading and writing - quote from "The more I read" - Dan Cullum (toot)

    There is a strong correlation between the amount I’m reading, and the ideas I have for this blog. When I’m reading a lot, I feel like I have ideas coming out my eyes.

  • On books - quote from "The Lost Art of Research as Leisure" by Mariam Mahmoud (toot)

    Writing nearly 350 years earlier, Galileo had declared books “the seal of all the admirable inventions of mankind,” because books allow us to communicate through time and place, and to speak to those “who are not yet born and will not be born for a thousand or ten thousand years.”

    Reminds me of the Great Conversation described in Adler and van Doren's How to Read a Book.

  • Toronto Public Library workers vote resoundingly in favour of strike | Canadian Union of Public Employees (toot)

    Toronto Public Library workers have given their union a strong strike mandate in ongoing contract negotiations with the Toronto Public Library. The workers, represented by CUPE 4948, held a strike vote over the weekend with a historic turnout, where over 96 per cent voted in favour of authorizing the union to take strike action if necessary.

    … CUPE 4948 and the Toronto Public Library have multiple bargaining dates scheduled throughout March. The union remains focused on securing a contract that includes inflation-adjusted wage increases, solutions to chronic understaffing and workplace violence, improved working conditions, and stronger benefits.

    CUPE 4948's Instagram has a few videos from librarians explaining issues around short staffing, precarious work, and other things the union wants to improve.

    The library is one of my favourite parts of Toronto. Librarians are awesome. I want them to feel safe and appreciated. I hope they can come to a good agreement!

  • On solitude - quote from "How to Meet Your Mystery: Thomas Merton on Solitude and the Soul" – The Marginalian (toot)

    Thomas Merton, quoted in the Marginalian:

    The solitary is one who is aware of solitude in himself as a basic and inevitable human reality, not just as something which affects him as an isolated individual. Hence his solitude is the foundation of a deep, pure and gentle sympathy with all other men, whether or not they are capable of realizing the tragedy of their plight.

  • The beginnings of an information workflow - toot

    The beginnings of an information workflow: read on my iPad (bigger screen than my phone, easier to carry around the house than my laptop); share interesting tidbits to Chrome on my phone; share a quote and maybe a thought via Tusky (includes reasonably readable link to context, might spark further conversation); collect those from my GoToSocial instance and archive them in a blog post or Org Mode notes, keeping track of ideas I want to connect or flesh out further

  • On solitude - quote from 'Living Against Time: Virginia Woolf on the Art of Presence and the “Moments of Being” That Make You Who You Are' – The Marginalian (toot) On Virginia Woolf:

    In Moments of Being (public library) — the posthumous collection of her autobiographical writings — she writes:

    A great part of every day is not lived consciously. One walks, eats, sees things, deals with what has to be done; the broken vacuum cleaner; ordering dinner; writing orders to Mabel; washing; cooking dinner; bookbinding. When it is a bad day the proportion of non-being is much larger.

    In her 1925 novel Mrs. Dalloway — part love letter to these moments of being, part lamentation about the proportion of non-being we choose without knowing we are choosing — she locates the key to righting the ratio in “the power of taking hold of experience, of turning it round, slowly, in the light.”

  • On curiosity - quote from "The Hypercuriosity Theory of ADHD" (toot) A+ and I both have strong interest-based focus, which means classwork might be tricky. Fortunately, I can use my interest in helping her grow to help me Learn All the Things so I can advocate for her and help her figure out her brain. Might be ADHD, might be something else, but it's probably a good idea to work with it instead of trying to squish it into something that it's not.

    Given that high trait curiosity might be a strength in ADHD, interventions could focus on harnessing this natural tendency rather than trying to suppress it.

    For instance, AI-assisted tools have shown promise in providing personalized learning experiences for individuals with ADHD, allowing them to engage with material in ways that capitalize on their natural curiosity. Game-based learning has also demonstrated positive effects on engagement and interest, particularly in subjects like mathematics. The Montessori classroom model, which is designed to foster curiosity, has shown promising results—students with ADHD in Montessori settings exhibit more actively engaged on-task behaviors compared to traditional classroom settings. Lastly, outdoor socially-oriented activities have been associated with higher levels of curiosity.

  • On emotional support, parenting, and gold stars - quote from "Free! Live discussion about autism Nov. 13, 7pm ET" - Penelope Trunk (toot) I came across Penelope Trunk's blog again after many years of not regularly reading RSS feeds (aside from the blogs about Emacs, of course).

    This quote resonated:

    But parents have messed up view of what emotional support is, because parents want gold stars for parenting. So the support most parents give is to steer the kid to get gold stars. Parents mistake helping a kid get gold stars for helping a kid feel loved."

    Our kid is 9, bored at school, and procrastinates homework. I know what that's like because I was like that too. (I think she's doing better than I did.) I've been working on fretting less. Pushing her to get the work done and check those checkboxes might not be in her best interest anyhow.

  • On side notes / footnotes - toot

    I like this use of side notes/footnotes at https://www.citationneeded.news/free-and-open-access-in-the-age-of-generative-ai/ . Footnotes use letters to distinguish them from numbered references, and are duplicated as side notes on large screens. I also like the “Show buttons that expand the side note” or “Include side notes after the paragraph on small screens” approaches on other sites.

  • Sketchnoting Science: How to Make Sketchnotes from Technical Content | NIST (toot)

    Enjoyed the examples of technical sketchnotes in https://www.nist.gov/publications/sketchnoting-science-how-make-sketchnotes-technical-content , found via https://www.sketchnotelab.com/p/sketchnote-lab-dispatch-march-2025

Time:

Category The other week % Last week % Diff % h/wk Diff h/wk
Discretionary - Productive 10.4 19.2 8.7 32.4 14.7
Personal 6.9 9.4 2.5 15.9 4.2
Business 0.9 1.7 0.8 2.9 1.4
Discretionary - Play 0.5 1.2 0.6 2.0 1.1
Discretionary - Social 0.0 0.0 0.0 0.0 0.0
Discretionary - Family 0.0 0.0 0.0 0.0 0.0
Sleep 33.8 33.7 -0.2 56.9 -0.3
Unpaid work 3.5 3.3 -0.2 5.5 -0.4
A- 43.9 31.6 -12.3 53.4 -20.6

More piano and writing this week, and less childcare because March Break is over.

Next week: settling into more reading, writing, and drawing.

View org source for this post

Visual book notes: ADHD is Awesome - Penn and Kim Holderness (2024)

| visual-book-notes

(Feel free to use or share this under the Creative Commons Attribution license!)

Text and links from sketch

ADHD is Awesome - Penn and Kim Holderness (2024) sachachua.com/2025-03-20-01

Notes:

  • Ch 1: ADHD 101
  • Ch 2: Diagnosis
  • Ch 3: Inside the ADHD brain
    • all-in or completely off
    • dopamine
    • Great at paying attention, terrible at choosing what pay attention to
  • Ch 4: The ADHD experience
    • checklist
    • reorder if needed
    • immediate; set a time to discuss long-term
  • Ch 5: The emotional side of ADHD
    • full-body experiences
    • overwhelmed: flooded
      • don't want to flip out
  • Ch 6: You're going to be okay
    • Benefits: Creativity, hyperfocus, bold vision, intuition, determination
    • Downsides (manageable!): Inattention, impulsivity, hyperactivity
  • Ch 7: Facing your ADHD
    • Strategies to stay regulated
  • Ch 8: Operation Mindset Shift
    • This is the brain I've got. I can work with it. Maybe it's actually cool.
    • Impulsive -> Creative
    • Distractible -> Curious
    • Noncompliant -> Independent Thinker
  • Ch 9: The ADHD upsides for you
    • chocolate + peanut butter
    • hyperfocus
    • designing your own life
  • Ch 10: The ADHD Upsides for others
  • Ch 11: The Right Stuff
    • Meds help 80-90% of kids, 70% of adults.
    • Behavioral therapy helps too.
    • solve upstream problems
    • carrots, not sticks
  • Ch 12: Charge your battery
    • exercise, sleep, nutrition, connection, medication, meditation (try eyes open)
  • Ch 13: Master your daily routine
    • stash extras
    • 15-min reset
    • cargo pants/clothes
    • songs
    • follow the food
  • Ch 14: Control your environment
    • secure the perimeter from distractions
    • edit your space
    • get comfy
    • right-size stimulation
    • use visual stimulation
  • Ch 15: Get it done
    • meaning
    • checklist
    • breaks, timers
    • reward yourself
    • when it's hard, acknowledge and ask for help
  • Ch 16: How to be an ADHD whisperer
    • connect, don't correct
  • Ch 17: Parents and caretakers
    • Strengths-based
    • slow down, reduce demands
    • parent-training class
  • Ch 18: Taking care of caretakers
    • ADHD: explanation, not excuse
    • useful scripts
  • Ch 19: Listening
    • mine for gold
    • gamify

ADHD is Awesome (2024) by Penn and Kim Holderness is a practical, positive, easy-to-read book on living with ADHD.

I find ADHD-oriented tips useful. My brain is prone to misplacing things, going off on tangents, and having attentional hiccups. Organizing my life around following my interests and minimizing commitments helps me increase happiness and reduce stress. Sketchnotes help me focus on what I'm learning and provide visual stimulation in my notes, making them more fun for me to review and share. I don't stock extras of things in a cabinet, but I do keep an Oops fund so I don't have to beat myself up over mistakes that cost a little money. I don't wear cargo pants, but I do wear vests with lots of pockets, a habit I picked up from my dad. I'm still working on developing that 15-minute reset habit, and on seeing and doing something about clutter.

As for the kiddo, there's no getting A+ to do things she's not interested in, and there's no holding her back if she's focused on something. Tips for parenting kids with ADHD also seem to work well for her: breaks, timers, taking advantage of hyperfocus, avoiding shame. My job is to:

  • Practise connecting instead of correcting: Fretting at her doesn't accomplish anything. We work better when we feel connected.
  • Explore and model things that work for me: I can show her how I use sketchnotes, checklists, timers, breaks, curiosity, learning, experimentation, self-compassion… Also, taking care of my sleep/exercise/happiness makes it easier to be the kind of parent I want to be.
  • Help her learn how to figure things out for herself: I can help her navigate systems that aren't designed for her (like school) and figure out things that would work better for her.
  • Frame things positively: Finding positive ways to frame our quirks can help with both self-image and other people's perceptions (chapter 4). Focusing on our strengths works better than beating ourselves up for our weaknesses. We still want to work around our weaknesses so they don't limit us, but might be able to use our strengths to do that.

The Hypercuriosity Theory of ADHD (and the paper) is also a good read that's somewhat related.

See related Mastodon discussion

View org source for this post

Old-school blogger

| blogging, writing

Text from sketch

Old-school blogger

[timeline showing different strands braided together]

I started blogging in 2001 (really, more like 2002), as a university student who had started playing around enjoyed learning out loud. Both blogging and Emacs continued through:

  • teaching computer science
  • going on a technical internship in Japan
  • taking up graduate studies
  • working at IBM
  • experimenting with consulting and semi-retirement
  • parenting

directly related to blogging: grad studies, working, experimenting

It's wonderful having such a long archive. I can trace my growth. I've changed a lot over the past 24 years. I miss being so optimistic and energetic, but who I am now and who I'm becoming are also okay.

[drawing of the butterfly life cycle]

  • caterpillar
  • chrysalis: We're in this messy stage where I digest myself and move my insides around
  • butterfly: maybe someday

Learning out loud by blogging:

  • Springboard: Writing as I learn means I can use my notes to pick up from where I left off.
  • Sometimes my notes help other people.
  • Sometimes people share what they've been learning.
  • Writing helps me gather my tribe.

Questions to explore:

  • What do I want to learn? How?
  • What's nearby?
  • What might be useful
    • to my future self
    • to others

Looking forward - I want to…

  • draw more. It's fun.
  • deepen my reflections.
  • learn more.
  • prepare so I can keep doing this.

How can I improve workflows for capturing/thinking/sharing/finding?

What can I do so I can keep learning and writing all my life? How can I get even better at it?

sach.ac/2025-03-16-01

Dave Winer's looking for old school bloggers (also this) so that nudged me to think about how and why I blog.

Still writing

From How to Take Smart Notes (Sönke Ahrens):

If you want to learn something for the long run, you have to write it down. If you want to really understand something, you have to translate it into your own words.

Writing and sharing are part of how I learn. Taking notes helps me learn things that are bigger than my working memory or my uninterrupted time segments. Sharing my notes helps me find them again later on, since I can search the Internet from my phone. Also, if I share my notes, sometimes I get to learn from other people too, and sometimes my notes help people figure out stuff and then they can build on that.

It makes sense to me to share these notes on a blog on my own domain, with a chronological view and an RSS feed that makes it easier for other people to check for updates if they want. Well, some other people. I suppose RSS readers are still a fairly technical sort of thing, and I don't particularly like posting on platforms like Facebook or LinkedIn. Anyway, I'll just keep writing here, and maybe people will come across posts via search engines or figure out how to get updates however they want to.

Summarizing posts
(let* ((annotations '((2001 "university")
                      (2003 "graduated, teaching")
                      (2004 "internship in Japan")
                      (2005 "grad school")
                      (2007 "working at IBM")
                      (2008 "drawing")
                      (2012 "experiment with semi-retirement")
                      (2016 "A+ was born")
                      (2019 "EmacsConf, COVID-19")
                      (2022 "SuperNote A5X")
                      (2023 "even more EmacsConf automation")
                      (2024 "cargo bike")
                      (2025 "added iPad to the mix")))
       (json-array-type 'list)
       (json-object-type 'alist)
       (posts-by-year
        (mapcar
         (lambda (o) (cons (car o) (length (cdr o))))
         (seq-group-by
          (lambda (o) (substring (alist-get 'date o) 0 4))
          (json-read-file "~/proj/static-blog/_site/blog/all/index.json")))))
  (append
   '(("Year" "Posts" "Note") hline)
   (cl-loop
    for i from 2001 to 2025
    collect
    (list (format "[[https://sachachua.com/blog/%d][%d]]"
          i i)
          (alist-get (number-to-string i) posts-by-year nil nil #'string=)
          (or (car (alist-get i annotations)) "")))))
Year Posts Note
2001 3 university
2002 31  
2003 869 graduated, teaching
2004 971 internship in Japan
2005 678 grad school
2006 877  
2007 510 working at IBM
2008 421 drawing
2009 452  
2010 399 Quantified Self
2011 397  
2012 361 experiment with semi-retirement
2013 359  
2014 339  
2015 251  
2016 141 A+ was born
2017 145  
2018 176  
2019 121 EmacsConf, COVID-19
2020 94  
2021 132  
2022 78 SuperNote A5X
2023 122 even more EmacsConf automation
2024 148 cargo bike
2025 49 added iPad to the mix

I don't see myself giving up these tools until I really can't use them any more. I'm keeping an eye out for assistive technology that might help me work around my limitations and the likely cognitive/physical decline I'll eventually run into. I'm encouraged by the fact that quite a few people manage to keep learning and writing even into their 80s and 90s.

Some weeks, Emacs News is all I can squeeze in: a long categorized list of links. When I have more time, I add little bits of code, drawings, reflections.

I love writing about little tweaks. Mostly that's about Emacs. I love the way I can shape it into something that fits me.

I like to summarize books and ideas as sketchnotes so that I have a chance of remembering what I want to learn from them. Also, the drawings are handy for sharing with others, and they're a way of giving back.

I'm slowly learning to write about life in a way that helps me learn more while respecting people's privacy. I like doing little experiments. Even tinier than the ones described in Tiny Experiments. Not "I will write 100 blog posts over the next 100 days," but rather, "What if I postpone fretting about A+'s homework until Saturday? What happens then?"

Writing workflow

After I get the kiddo through the morning routine and ready for virtual school, I usually play piano for about an hour or so. Then it's recess and some more hugs, and then I settle down for some writing or drawing. The weather is getting better, so I'm looking forward to moving some of that outside. Maybe I'll dust off those baby monitor apps so I can hear if A+ needs any help.

I mostly write on my laptop using Org Mode in Emacs. Org Mode is great for literate programming. I can mix my notes and my code however I like.

I don't write in a straightforward way. I jump around. I go on tangents and down rabbit-holes. It helps a little if I've sketched my thoughts beforehand, like for this post, or if I've done some audio braindumping to help me figure out where the interesting thoughts are. Sometimes I capture little thoughts on my phone and then move them to the post I'm working on. I'm trying to figure out how to chunk my thoughts better.

I have a lot of Emacs tweaks to make it easier to link to blog posts, bookmarks, sketches, sites from search results. I like including the text of sketches, too.

I use the 11ty static site generator to make my blog. I switched to it a few years ago because I didn't want to worry about keeping Wordpress secure. I don't have room for many programming languages in my brain at the moment, so I like the fact that 11ty uses JavaScript. It takes me about five minutes to compile my blog.

Reading workflow

From Dan Cullum: The more I read:

There is a strong correlation between the amount I’m reading, and the ideas I have for this blog. When I’m reading a lot, I feel like I have ideas coming out my eyes.

Reading makes me want to write, too.

I love the Toronto Public Library enough to transplant myself from the tropics and learn how to deal with winter. I've been reading more e-books lately. It's easier to highlight e-books compared to paper books. I can pick them up and put them down easily, and keep the pages open when I'm taking notes. I don't have to worry about misplacing them, either. I have some code to grab my highlights as a JSON, and then I can do things with them: include them in blog posts, add them to my personal notes, etc.

Not everything is available as an e-book, though, and sometimes the e-books have long hold times. Paper books are still handy enough.

I like reading blogs. They're much shorter than books are, and much less fluffy. Sometimes I feel like mainstream printed books have a lot of padding because of the considerations of the publishing industry: the book must be a certain size so it doesn't get lost on the bookstore shelf; the book must have a certain weight and thickness so people feel that it's worth $25. Blog posts can just get to the core of the idea instead of belabouring the point. I like the fractal density of hyperlinked text, too, and the conversational possibilities of it. It's a lot easier to bounce an idea back and forth to develop it when you can post in a day instead of waiting for a year for a book to be published.

I like reading on the new iPad. It's smaller than my laptop and bigger than my phone. It's easy to browse through blogs on it, unlike on my Supernote. I'm starting to develop a workflow for reading and writing smaller snippets: (toot)

  1. Read in NetNewsWire.
  2. Open interesting posts in Chrome on the iPad.
  3. Highlight the text.
  4. Use "Copy Link with Highlight".
  5. Tap on the selection again. Use "Share" to send it to Ice Cubes, a Mastodon client that can post to my GoToSocial instance and let me use my full post limit (5,000 characters, mwahahahaha).
  6. Paste the link into the toot, add my own thoughts, and post it.

I like linking to text fragments. Sharing from a webpage on my Android phone does this automatically. "Copy Highlight as Link" works from Chrome on the iPad. It saves people that little bit of scrolling or finding, although I suppose it would be helpful for people to go through the context before that selection. Alternatively, I could share directly from NetNewsWire and just link to the blog post instead of the text.

I like making visual book notes. They help me read a book well, and turning the sketch into a blog post gives me more opportunities to revisit it: when I write the post, and if someone comments or shares it.

Eventually I want to dust off my code for collecting Mastodon posts into a blog post, and maybe also re-establish a weekly review process.

Tangent: Check out Reading more blogs; Emacs Lisp: Listing blogs based on an OPML file for a table of the blogs I'm reading, along with the code I used to make a table of blogs, their latest post (as of the time I wrote my post, of course), and the post date.

Keeping an eye on the future

As the kiddo becomes more independent ("Mom, I'm 9, you don't have to fret about my jacket"), I'll have more time for myself. This is a good time to go bike and walk and explore outside, and to go deep and wide into our interests as a family. I do about 2-4 hours of consulting a week, just the stuff I'm interested in. (TODO: There's a tangent I want to write about interest-based nervous systems, which I notice in both A+ and myself, and probably building on this 2014 reflection on having a buffet of goals.) The rest is life time, divided among the things we want to learn/do/share and the things we do to take care of ourselves.

Even though I have increasing autonomy when it comes to time, and an increasing amount of focused time, I still haven't gotten to the bottom of my idea list or my to-write list. I don't think I'll ever get to the bottom of those lists, actually. I come up with ideas faster than I can do them. That's a good problem to have.

It makes sense to prepare for a couple of changes that will likely come up:

  • Age-related farsightedness: It'll probably get harder to read small text, and I might eventually need to juggle my regular glasses as well as reading glasses. (W- already does this occasionally. He prefers having different pairs of glasses instead of bifocals or progressives, and his reasons seem sound. I don't want to have to adopt different postures to see out of different zones of glasses.) Developing good workflows for reading will probably help here. Also, the cargo vests I wear will probably help me with the "Where are my glasses?" problem.
  • Menopause will probably rewire my brain a lot. I hear brain fog and tip-of-the-tongue can be challenging (see also Brain fog in menopause).
  • My mom is 79 and running into issues with cognitive and physical decline. She has a hard time typing, speaking, remembering, deciding, or feeling good. On the other hand, there are examples of people who have stayed sharp for decades. There are lots of factors that are beyond my control. Still, it would be nice to see if I can stack the deck a little. So yes to:
    • walks, bike rides, exercise, and maybe I can figure out a fun way to improve strength;
    • lots of learning and sharing and connecting
    • and experiments with technological and cognitive aids, like speech recognition to work around typing, text-to-speech interfaces to work around vision, notes to work around working memory, and maybe large language models to work around issues with recall.
    • … and I might as well learn Morse code or explore accessibility tools, just in case I'm limited to twitching cheek muscles or something like that.

The life expectancy at birth for the Philippines for women born in 1983 is ~65 years; in Canada, about ~80 years. I want to keep learning and writing and sharing for as many of those years as I can.

See discussion on Mastodon

View org source for this post