Thinking about how to squeeze more out of my discretionary time

Depending on what time A- finally goes to bed, I might have around 1-2 hours of discretionary time that I can use to focus on a small task and complete it. If I pick something that’s too big, I get tempted to stay up late, which often makes me grumpy the next day. So a good approach might be to have a number of reasonably small tasks that give me as quick a payoff as possible, especially if those tasks can result in compounding improvements.

Now that I can post Org Mode headings to my journal from Emacs, it’s easier to log finished tasks as journal entries that will get picked up during my weekly and monthly review. The next step might be to figure out how to flesh out those lines into more useful posts. That way, I can find things again by searching my blog. Also, if other people can pick up ideas from my posts, I might be able to benefit from their improvements.

There’s a lot of room for growth in terms of my workflow for doing stuff, learning stuff, and sharing stuff. Here’s what a possible learning path might be like:

sharing-path.png

  • Planning: I’ve just started excavating the Org files that I’ve been tossing ideas into over the last 5+ years of limited discretionary time. Now things are mostly refiled, and I’ve got quite a few projects on my priority list. I might spend a bit of non-computer time mulling over 1-3 possibilities throughout the day, and then work on the most interesting one after processing my inbox. I find that in the course of a week, I tend to focus on one or two projects in order to take advantage of momentum. It’s also good to set aside planning/improvement/review time instead of getting tempted to prioritize coding all the time, as fun as it is to write stuff.

    I don’t have to optimize this. Most tasks are good to work on and move me forward, so I don’t have to spend a lot of time trying to analyze the best effort/reward ratio. I can usually just go with whatever I feel like working on.

  • Coding: I usually work with Emacs Lisp or Javascript, with a little bit of Python. I have some technical debt in Ruby that I don’t have the brainspace to dig into at the moment. It may have to wait until A- goes to in-person school. For Emacs Lisp, my next workflow improvement might be to get the hang of Lispy. For my personal projects that use Javascript, it would probably be worth learning more about toolkits.
  • Writing: Dictation is out for now, since I don’t feel much like talking at night. It’s nice to be quiet after a whole day of talking with a kiddo. When I get the Georgi keyboard I ordered, stenography might be an interesting long-term skill investment. The bottleneck is probably still my thinking speed, though. That means I could probably:
    • embrace lists and outlines as a way of getting fragmented thoughts down (possibly over several sessions) and then shuffling them around into some form of coherence (yay Org Mode)
    • lower my threshold for posting; it’s better to think out loud
  • Screenshots: I recently tweaked my shortcuts for inserting screenshots. Now I just need to make them part of muscle memory.
  • Drawings: I can sketch things out on my Lenovo X220 tablet PC, although flipping the screen is a little annoying. One option might be to leave my screen rotated and then use a Bluetooth keyboard to type and use shortcuts. The keyboard isn’t as comfortable to type on as my laptop is, but maybe it will encourage me to add little drawings. org-krita doesn’t quite fit my workflow, so I need to write my own. I want to be able to quickly sketch something. If I like it, I want to convert it, rename it with a caption, and add it to my sketches.

(defun my/org-insert-drawing-as-link ()
  (interactive)
  (let ((file (make-temp-file "/tmp/image" nil ".psd")))
    (copy-file my/index-card-template-file file t)
    (insert (org-link-make-string (format "file:%s" file)))
    (my/open-images-in-krita (list file))))

(defun my/preview-in-other-buffer (file)
  (with-current-buffer (find-file-noselect file)
    (display-buffer (current-buffer))))

(defun my/org-convert-sketch-at-point (&optional two-col)
  (interactive "p")
  (let* ((link (org-element-context))
         (file (org-element-property :path link))
         date
         (intermediate (concat (file-name-sans-extension file) ".png"))
         new-file new-link)
    (unless (eq (org-element-type link) 'link)
      (error "Not at a link"))
    ;; (call-process "krita" nil nil nil file "--export" "--export-filename" intermediate)
    (call-process "convert" nil nil nil (concat file "[0]") intermediate)
    (my/preview-in-other-buffer intermediate)
    (setq
     date (org-read-date)
     caption (read-string "Caption: ")
     new-file (expand-file-name (format "%s %s.png" date caption) my/sketches-directory)
     new-link (concat "#+CAPTION: " date " " caption "\n"
                      (org-link-make-string (concat "sketch:" (file-name-base new-file)))))
    (rename-file intermediate new-file t)
    (delete-region (org-element-property :begin link)
                   (org-element-property :end link))
    (if two-col
        (progn (insert
                (format  "#+begin_columns
#+begin_column50
%s
#+end_column50
#+begin_column50
"
                         new-link))
               (save-excursion (insert "
#+end_column50
#+end_columns
")))
      (insert new-link "\n"))))

(defun my/reload-sketches ()
  (interactive)
  (url-retrieve "https://sketches.sachachua.com/reload" (lambda (&rest args) (message "Updated sketches."))))


2021-04-11 What are drawings useful for

What are drawings useful for? Nonlinear thinking, sharing, flipping through, building up, visual shorthand, fun. Text is nicer for searching, linking, and dealing with stop-and-go thoughts.

W-‘s offered to let me use his iPad. Concepts and Procreate are both pretty cool, and I have a reasonable workflow for sending files back to my computer and getting them into my Org file. My X220 is still the fastest for quickly switching between text and drawing, though, so I might use it for most of the sketches.

Also, graphviz is pretty handy for quick diagrams, and it will probably be even more useful as I dig into it and other text-based diagram tools. The diagram at the beginning of this post was generated with:

#+begin_src dot :file "sharing-path.png" :cmdline -Kdot -Tpng -Nfontname=sachacHand -Nfontsize=30
digraph {
  rankdir=LR;
  node [shape=box];
  "Planning" -> "Coding" -> "Writing" -> "Screenshots" -> "Drawings" -> "GIFs?" -> "Video" -> "Streaming";
  "Planning" -> "Reading" -> "Writing";
  "Planning" -> "Writing";
}
#+end_src

Animated GIFs, videos, and streaming may have to wait until I have more brainspace. Plenty to tweak even now!

Weekly review: Week ending April 9, 2021

  • I figured out how to asynchronously tangle and compile my Emacs configuration.
  • I tweaked my shortcuts for inserting the latest screenshot into my Org file.
  • I added my first ligature and my first contextual substitution to my font.
  • The code I wrote to update my journal from Emacs makes it pretty easy to use Orgzly to capture keywords throughout the day, flesh them out during my inbox review, and post them or update them. That means I should be able to continue to take notes even if I’m offline for an extended period of time.
  • Pretty good progress on emotion regulation! So neat to see.

Blog posts

Sketches

Time

Category The other week % Last week % Diff % h/wk Diff h/wk
A- 43.4 46.3 2.9 77.8 4.9
Unpaid work 3.8 4.9 1.2 8.3 2.0
Discretionary – Play 0.0 0.8 0.8 1.3 1.3
Discretionary – Productive 8.9 8.8 -0.1 14.9 -0.1
Discretionary – Family 0.6 0.0 -0.6 0.0 -1.0
Sleep 33.3 32.5 -0.8 54.6 -1.3
Personal 5.4 4.6 -0.8 7.8 -1.3
Business 4.7 2.0 -2.7 3.3 -4.5

Grabbing the Youtube auto-generated captions is pretty useful when making Emacs News

I’ve been adding Emacs-related videos to my public Emacs News playlist to make it easier to include them when I put together Emacs News every week. I still haven’t had much time to watch things, though. But the code I wrote to convert captions into a table so that they could be used to make notes after a meetup presentation turned out to be handy for Emacs News as well.

Screenshot_20210408_221732.png

Figure 1: With a bit of clicking, Youtube can display translated subtitles and a transcript on the side. I haven’t figured out how to get the transcript translated on Youtube yet.

Screenshot_20210408_221732.png

Figure 2: My Org buffer displays the auto-translated captions, making things easy to skim through.

Then I can jump to sections I’m particularly curious about. Neat!

2021-04-05 Emacs news

Links from reddit.com/r/emacs, r/orgmode, r/spacemacs, r/planetemacs, Hacker News, planet.emacslife.com, YouTube, the Emacs NEWS file and emacs-devel.

Monthly review: March 2021

Lots of coding again this month!

  • Emacs News: I wrote some code to schedule announcements on IRC and Twitter, and I pulled the other meetups’ iCal feeds in automatically.
  • Streaming: I tried streaming again, but I think OBS was taking up too much CPU and it made my computer a little too unresponsive. I’ll try streaming from OBS to Twitch instead of using ffmpeg to multicast next time.
  • Captions: I wrote some code to use word-level timing from Google’s video transcripts when splitting subtitles. I experimented with redirecting my automatic caption output into Emacs, using it to dictate a few sentences.
  • Video processing: I split the BigBlueButton video based on XML, writing some Emacs Lisp code to generate title clips with LaTeX and make the FFMPEG commands to cut by keyframes when possible. I split out audio into a separate track for smoother playback.
  • Publishing: I added the ability to expand all, collapse all, and toggle visibility of headings in my exported HTML. I added night mode to my blog, and I removed the search form and sidebar.
  • Other Emacs improvements: I added preview to my consult function for reading a sketch filename. I added the ability to set the category and add other text to my journal from Emacs.
  • Drawing:
    • I drew a lot during A-‘s classes. I practised sketching plants following “Illustration School: Let’s Draw Plants and Small Creatures.”
    • I tried sketching in both Concepts and Procreate. They’re both nice. I modified my sketch viewer to handle SVGs. I figured out how to switch colours on the SVG I exported from Concepts so that it could respect dark mode. I also changed my stylesheet.
    • I wrote some Emacs Lisp code to extract paths or groups to individual SVGs in preparation for updating my font.
  • Other:
    • I sewed some long dresses and a bonnet for A-. She wears them often. I also sewed a pair of pajama pants for myself.
    • I ordered the Georgi chording keyboard. I want to see if I can get the hang of stenography for captioning, writing, and coding.

Blog posts

Sketches

Time

Category Previous month % This month % Diff % h/wk Diff h/wk
Sleep 30.1 34.6 4.4 64.2 7.4
Business 0.7 1.8 1.1 3.3 1.8
Discretionary – Family 0.0 0.2 0.2 0.3 0.3
Discretionary – Play 0.5 0.6 0.1 1.1 0.2
Discretionary – Social 0.1 0.0 -0.1 0.0 -0.1
Unpaid work 3.6 3.4 -0.2 6.4 -0.3
A- 45.9 44.4 -1.5 82.6 -2.5
Personal 6.2 4.6 -1.5 8.6 -2.6
Discretionary – Productive 12.9 10.4 -2.5 19.3 -4.2

Weekly review: Week ending April 2, 2021

  • I converted A-‘s old dress and skirt into a floor-length dress.
  • I sketched a few more plants and animals from “Illustration School: Let’s Draw Plants and Small Animals.”
  • I dusted off my font-making workflow and started to figure out how to run things again. I was able to load the glyphs I drew in Concepts and kern them.
  • I wrote some Emacs Lisp code to extract paths or groups to individual SVGs in preparation for updating my font.
  • I attended the Emacs SF meetup. I also sorted out my announcement code.
  • I started playing around with Lispy. I used it when writing something to convert Youtube captions into an Org table.

Blog posts

Sketches

Time

Category The other week % Last week % Diff % h/wk Diff h/wk
Business 0.0 4.7 4.7 7.8 7.8
Sleep 32.0 33.3 1.2 55.9 2.1
Personal 4.2 5.4 1.2 9.1 2.0
Unpaid work 3.2 3.8 0.6 6.3 1.0
Discretionary – Family 0.2 0.6 0.4 1.0 0.7
Discretionary – Play 1.2 0.0 -1.2 0.0 -2.0
Discretionary – Productive 10.9 8.9 -2.0 15.0 -3.4
A- 48.3 43.4 -4.9 72.9 -8.2