Categories: geek

RSS - Atom - Subscribe via email

2025-03-03 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, communick.news, 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

Two weeks with the iPad Air (+ SuperNote A5X and Lenovo P52)

Posted: - Modified: | geek, tech, ipad

[2025-03-01 Sat]: Genaro suggested beorg, so now I've got that on my iPad and it seems to be doing fine for browsing my Org Mode files. I think I'll set up WebDAV on our network-attached storage (NAS) and see what that's like, too.

Also, apparently, it's been about three weeks, whoops!

I've had this iPad Air 13" for about two three weeks now, and I'm slowly settling into how the different pieces of tech can work together and how things can flow.

Text from sketch

Getting used to SuperNote A5X + iPad Air 13"

SuperNote A5X:

  • I prefer it for writing, sketchnotes
    • pen feel
    • strokes: exactly as I expect, no hooks or smoothing
    • lighter weight
    • no backlight
  • Also nice for reading EPUBs, PDFs

iPad Air:

  • Libby for library e-books
  • Procreate, Simply Draw for art
  • NetNewswire for RSS
  • Copying & pasting is nice

Procreate replaces spaces with underscores and doesn't overwrite files. Instead, it adds 2 to the filename.

I want to start building up thought maps so I can see quick summaries and open questions. The laptop is probably the best place to do it.

Org Mode files with sketches, text, and links

  • Export to HTML
  • Also, add export to HTML gallery view?

Private sketches: Available through DS

Private web server on the NAS? I can just run my sketch viewer.

DS: Synology NAS drive

  • Program the server to consolidate files?
  • Consider moving metadata to subdir for easier flipping?

Ideas for next steps:

  • Figure out easier doodling from iPad: resample, autocrop, insert with HTML markup
  • Automate recolour/rename from Dropbox (phone? server?)

On the iPad, I've been mostly using:

Moving data around is a bit of a hodgepodge: internal webserver or Dropbox for the Supernote, Dropbox and Synology's DS Drive for the iPad, and Syncthing for the server. I'm sure that'll settle down eventually as I figure out a better flow.

Untitled_Artwork.jpg

I like how drawing, singing, and playing the piano give me a way to distract myself from the urge to nag A+. Still definitely just starting out, but it's fun anyway. It's nice to be able to breeze through library e-books again, too.

I notice I've been missing the occasional calendar reminder from my phone, so that's probably a sign that I need to (a) set up the iPad for calendar access as well, (b) have more distinct notifications on my phone, and (c) take the phone with me as I go from room to room. On the plus side, that probably means I've been getting in the zone, yay! It seems a little easier to just take the whole stack of phone+Supernote+iPad when I move rooms instead of leaving them in different places and then having to go find them. The laptop is a lot heavier, though, so I tend to move that on an as-needed basis.

I set up a copy of sketches.sachachua.com server on the NAS (so it's just on the local network) pointing to my private sketches directory, so now I can flip through my private sketches fairly easily. They're mostly just various thoughts on parenting and emotions and life. Now I can review them from either my iPad or my laptop, yay!

Ideas for next steps:

  • Keep distracting myself from fretting about A+ by completing various art/music tutorials.
  • Have fun doodling.
  • Contemplate whether I want to read my Org files on the iPad, and what the best way of doing it might be. (Organice? PlainOrg? Just do a PDF/EPUB export of stuff I'm focusing on? - update 2025-03-01: added Beorg)
  • See if A+ is up for field trips to the art gallery or museum.

The iPad Air seems like a good addition. Let's see what I can do with it.

View org source for this post

Working with smaller chunks of thoughts; adding anchors to paragraphs in Org Mode HTML export

Posted: - Modified: | org, js

I write my blog posts in Org Mode and export them to Eleventy with ox-11ty, which is derived from the ox-html backend.

Sometimes I want to link to something in a different blog post. This lets me build on thoughts that are part of a post instead of being a whole post on their own.

If I haven't added an anchor to the blog post yet, I can add one so that I can link to that section. For really old posts where I don't have an Org source file, I can edit the HTML file directly and add an id="some-id" so that I can link to it with /url/to/post#some-id. Most of my new posts have Org source, though. I have a my-blog-edit-org function and a my-blog-edit-html function in my Emacs configuration to make it easier to jump to the Org file or HTML for a blog post.

If the section has a heading, then it's easy to make that linkable with a custom name. I can use org-set-property to set the CUSTOM_ID property to the anchor name. For example, this voice access section has a heading that has CUSTOM_ID, as you can see in the . If I don't mind having long anchor names, I can use the my-assign-custom-ids function from my config to automatically set them based on the outline path.

my-assign-custom-ids
(defun my-assign-custom-ids ()
  (interactive)
  (let ((custom-ids
         (org-map-entries (lambda () (org-entry-get (point) "CUSTOM_ID")) "CUSTOM_ID={.}")))
    (org-map-entries
     (lambda ()
       (let ((slug
              (replace-regexp-in-string
               "^-\\|-$" ""
               (replace-regexp-in-string "[^A-Za-z0-9]+" "-"
                                         (downcase (string-join (org-get-outline-path t) " "))))))
         (while (member slug custom-ids)
           (setq slug (read-string "Manually set custom ID: ")))
         (org-entry-put (point) "CUSTOM_ID" slug)))
     "-CUSTOM_ID={.}")))

Adding anchors to paragraphs

If the part that I want to link to is not a heading, I can add an ID by using the #+ATTR_HTML: :id ... directive, like this snippet from my reflection on landscapes and art:

  #+ATTR_HTML: :id interest-development
  That reminds me a little of another reflection
  I've been noodling around on interest development...

Text fragments

Text fragments are even more powerful, because I can link to a specific part of a paragraph. I can link to one segment with something like #::text=text+to+highlight~. I can specify multiple text fragments to highlight by using #::text=first+text+to+highlight&text=second+text~, and the browser will automatically scroll to the first highlighted section. I can specify a longer section by using text=textStart,textEnd. Example: #:~:text=That%20is%20the%20gap,described The text fragments documentation has more options, including using prefixes and suffixes to disambiguate matches.

Text fragment links require rel="noopener" for security, so I added JKC-Codes/eleventy-plugin-automatic-noopener to my 11ty config.

Update 2025-03-20: Quick ways to link to a text fragment:

  • On my Android phone, selecting text in Google Chrome and sharing it automatically includes the text and a link to the text fragment.
  • In Google Chrome on my iPad, my process is:
    1. Select the text and choose "Copy Link with Highlight".
    2. Tap the selected text again and share it.
    3. Paste the link after the shared text.
  • There's this Text Fragment extension for Firefox.
  • I have some Emacs Lisp to link to currently-selected text using Spookfox. Spookfox connects Emacs to Firefox using a browser extension. Once it's properly set up and connected, it allows Emacs to evaluate things in the Firefox context.

These seem like good starting points for addressing smaller chunks of thoughts.

View org source for this post

2025-02-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, communick.news, 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

Using systemd to switch nginx configurations based on number of CPUs

| geek

I set up a BigBlueButton web conferencing server so that people can use it for Emacs meetups. To keep costs down, I want to resize it to 1 GB RAM 1 vCPU most of the time, and then resize it to 8 GB RAM 4 vCPU when there's a meetup. When it's at a proper size (4 CPUs), the Nginx web server should proxy the Greenlight web interface for BigBlueButton. In between meetups, I want to display a backup page to let people know they've got the right URL but that it's not up yet.

First, I need a shell script that returns the name of the configuration file to use. This is /usr/local/bin/nginx-cpu-config.sh:

#!/bin/bash
cpu_count=$(nproc)
if [ "$cpu_count" -ge 4 ]; then
    echo "/etc/nginx/nginx.conf"
else
    echo "/etc/nginx/backup-nginx.conf"
fi

Next, I need to copy /etc/nginx/nginx.conf to /etc/nginx/backup-nginx.conf. Instead of include /etc/nginx/sites-available/*;, I'll use include /etc/nginx/sites-backup/*;. Then I need to set up a copy of the /etc/nginx/sites-available/bigbluebutton in /etc/nginx/sites-backup/bigbluebutton. I changed the try_files so that it tries the backup file.

  # BigBlueButton landing page.
  location / {
    root   /var/www/bigbluebutton-default/assets;
    try_files $uri /backup/index.html @bbb-fe;
  }

I set up a /var/www/bigbluebutton/assets/backup/index.html with the message that I wanted to display between meetups.

I removed the /etc/systemd/system/haproxy.service.d/require-cpu.conf I had previously set up, so it would start even if downscaled to a single CPU. Then I created a /etc/systemd/system/nginx.service.d/based-on-cpus.conf with the following contents:

[Service]
ExecStartPre=
ExecStartPre=/bin/bash -c '/usr/sbin/nginx -t -c $(/usr/local/bin/nginx-cpu-config.sh)'
ExecStart=
ExecStart=/bin/bash -c '/usr/sbin/nginx -c $(/usr/local/bin/nginx-cpu-config.sh)'
ExecReload=
ExecReload=/bin/bash -c '/usr/sbin/nginx -s reload -c $(/usr/local/bin/nginx-cpu-config.sh)'

Then I ran systemctl daemon-reload and used service nginx restart to test.

Seems to be working. We'll see!

View org source for this post

2025-02-17 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, communick.news, 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

2025-02-10 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, communick.news, 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