Daily Notes for 2023-05-24

ยท 1165 words ยท 6 minute read

Cleaning up my literate config file ๐Ÿ”—

I like keeping my Doom Emacs config file in config.org. I didn’t like the #RESULTS drawers cluttering up the file, especially for longer functions with copious output.

The way to selectively disable that for a given src block is to append :results output silent to the block opener, e.g.

#+begin_src emacs-lisp :results output silent
(vertico-reverse-mode)
(setq vertico-count 10)
(setq vertico-resize t)
#+end_src

The way to do it for an entire file is to put #+property: header-args :results silent at the top.

You can still evaluate a given src block by tapping return on either the first or #+end_src lines, but the output goes to the minibuffer instead of a #RESULTS drawer. If you need to really read through the output, there’s always the *Messages* buffer, or tacking :results output replace onto the src block opener to get your #RESULTS drawer back.

JOHS and the city ๐Ÿ”—

The city and the county are again considering extending the JOHS for just a year. I still don’t understand the division of labor there. It’s the worst of both worlds: The city drops a pallet of money on the county’s dock, but remains on the hook for the tactical response. The county takes the money, claims the high ground of long-term, strategic perspective, then has an effective veto over elements of the city’s tactical response even as it fails to allocate half its budget, and actual providers on the ground struggle to retain help with a living wage, or even get decent contracts through the JOHS.

If the JOHS were a joint office, performing some actual coordinative role, maybe it’d be different. But it’s a county office: Its reporting structure roles up to the chair, it uses county administrative structures and processes, and it is beholden to county leadership. It’s also profoundly dysfunctional, leaving millions and millions of dollars on the table, and failing in its most basic data-gathering, reporting, and contracting commitments.

But we’re in one of those situations where the dysfunction seems to be politically expedient. The city and county are at fundamental odds on homelessness policy, and the people in this policy area at the county level view themselves as a sort of superego governing the city’s id. Once one partner in a relationship predicates their participation on the notion that they’re mostly there to keep their partner from doing something they don’t like, the relationship is sunk. Burn it down and start over with a new charter.

Batteries-included situations and their discontents ๐Ÿ”—

I think I’ve hit the first thing using Doom Emacs that is not sitting well with me. Well, let’s scope out a little: I think I’ve hit the first time something that is inevitable with “batteries-included” situations has annoyed me as I’ve used Doom in particular.

Emacs has a bunch of “completion frameworks,” which control what happens when you go to issue a command, open a file, look up a definition or whatever. The last time I used Emacs a lot Helm was sort of the big deal, but since then plenty of others have come along. If you look in the part of Doom’s config that offers pre-packaged completion frameworks, you get several choices:

:completion
company           ; the ultimate code completion backend
;; helm              ; the *other* search engine for love and life
;; ido               ; the other *other* search engine...
;; ivy               ; a search engine for love and life
vertico           ; the search engine of the future

Which, so far so good. As near as I can parse the conversation, newer completion frameworks like Vertico are built around the idea that it’s better to build off of core Emacs functionality and think in a more modular manner. So then you look up what happens when you enable Vertico, that involves a series of complementary packages:

  • consult
  • consult-flycheck
  • embark
  • embark-consult
  • marginalia
  • orderless
  • vertico
  • vertico-posframe (maybe)
  • wgrep

Because I do not want to make this about the problem I’m dealing with at this particular moment, I just want to say holy cow what a stew of possible starting points for solving a problem.

I’ve spent this morning trying to track down a UI annoyance and the mere act of changing word order in my searches has implicated four of the packages on that list. Because the Emacs community is a relatively small one — at least by the time you get done subdividing it into “Emacs users who also use Doom and who are using Vertico within Doom” — you exhaust possible resolutions quickly, and begin to realize you’ve seen the same configuration go by several different times as people in this relatively small subset share it around.

Anyhow, I’m not here to bag on Doom or complain about copypasta configs. I’m just noting that at a certain point in the world of batteries-included frameworks you are sorting through a metric ton of batteries, all tucked away behind a very smooth housing requiring a variety of Torx and jeweler’s screwdrivers to get open. One of those paradoxes, I guess, where your lower-skilled people (me) get a ton of leverage from all the layers of abstraction and affordance, but then wander into situations where it would take a very highly skilled person (not me) to sort out where the magic is going wrong (or just not going the way you wished, since “wrong” is sort of fraught, here.)

And I fall on the maximizer end of the satisficer/maximizer spectrum, so it’s hard to say of some UI glitch “well, that’s an annoyance I’ll be living with,” even if there are ample workarounds or even simple “then quit moving your arm that way” solutions.

Okay. I think I’ve gotten that off my chest. Time to go to the Doom Discourse, mention the issue, and see what I get.

Monodraw ๐Ÿ”—

Even if you don’t follow that link, I had an excuse to use Monodraw to illustrate my problem. Monodraw makes it super easy to make ASCII diagrams then copies them in a pre block to your clipboard.


โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                          โ”‚  โ”‚                          โ”‚
โ”‚                          โ”‚  โ”‚                          โ”‚
โ”‚     Original window      โ”‚  โ”‚                          โ”‚
โ”‚                          โ”‚  โ”‚                          โ”‚
โ”‚                          โ”‚  โ”‚      Preview window      โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค  โ”‚                          โ”‚
โ”‚                          โ”‚  โ”‚                          โ”‚
โ”‚                          โ”‚  โ”‚                          โ”‚
โ”‚      Preview window      โ”‚  โ”‚                          โ”‚
โ”‚                          โ”‚  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                          โ”‚  โ”‚                          โ”‚
โ”‚                          โ”‚  โ”‚                          โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค  โ”‚                          โ”‚
โ”‚                          โ”‚  โ”‚                          โ”‚
โ”‚                          โ”‚  โ”‚      Vertico window      โ”‚
โ”‚      Vertico window      โ”‚  โ”‚                          โ”‚
โ”‚                          โ”‚  โ”‚                          โ”‚
โ”‚                          โ”‚  โ”‚                          โ”‚
โ”‚                          โ”‚  โ”‚                          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

There is a world somewhere that I could use Monodraw in a business context and not have it be a complete distraction, but for anything other than “a box with words in it,” e.g. a more complex organizational diagram or flow chart, it is utterly distracting, either by people who want there to be boxes with colors or people who want to know how on Earth you made such a complex diagram with pipes and dashes.