The UI construction set 🔗
Years and years ago, before it was what it is today, which is horrible, Electronic Arts did some interesting marketing things that would lead you to believe that it was less a software company than some sort of rural artist colony that happened to make software but otherwise spent its time in rustic pursuits. They had a “Construction Set” product line that let you make your own stuff: music, racing games, pinball games, and adventure games.
I had the Adventure Game and Racing Destruction Construction Sets and they were really fun. The Adventure Game set gave you all you needed to make a world with regions, rooms, things, and creatures. Things could do magical stuff, and creatures had a very simple set of behavioral rules.
That was my first experience with a software tool that let me make things inside a computer.
Jump forward a few years, and Borland came out with Sprint, an extensible word processor with a modifiable UI that let you pick from several basic keybinding profiles (WordStar and Emacs, at least) and then add your own customizations if you wanted.
I was reminded of Sprint this morning as I sat down to extend Doom’s menus for use with Denote, which I wrote about yesterday. It’s just very clean and easy to do:
:nv "n d" nil ;; Doom has deft here, so we have to nil it out first
(:prefix-map ("n" . "notes")
(:prefix ("d" . "Denote")
:desc "ripgrep" "/" #'mph/denote-rg-search
:desc "Backlinks" "b" #'denote-link-backlinks
:desc "Move subtree" "c" #'mph/denote-org-copy-subtree
:desc "add keywords" "k" #'denote-keywords-add
:desc "remove keywords" "K" #'denote-keywords-remove
:desc "Move subtree" "m" #'mph/denote-org-move-subtree
:desc "New note" "n" #'denote
:desc "Rename with frontmatter" "r" #'denote-rename-file-using-front-matter)))
It took me a few minutes to find my way back to how to deal with a keybinding collision in Doom’s mappings – it has Deft bound to
d under the
notes (org) section. I don’t use Deft and didn’t want to skirt around the binding with
denote so I had to nil
d out before I could use it.
Otherwise – five minutes of work to build out a submenu for Denote with a mix of things I’ll use all the time (making new notes, doing a ripgrep search of my Denote directory, showing backlinks) plus a few things that are useful in the short term, such as renaming a file on the disk after changing its metadata (since Denote uses file naming as metadata) or removing provisional keywords I used to move a bunch of notes in and operate on them in steps.
It’s simple, mnemonic, but also offers visual prompts to help with learning. After a while you’re not even going to look at the menu because the simple three-key sequences sink in after enough repetition.
It has made learning how to do new things much, much easier than it used to be. I’ve just taken to opening a scratch buffer, copying over an existing menu config and clearing it out, then I start trying to do things with a new tool, figuring out over the course of a few hours what things I’d like to be able to get to with a few keystrokes instead of remembering the function name or native keybindings. As I figure one of those things out, I add it to the menu, evaluate, and keep going. That is so much better than all the chord memorization I used to do.
A little more on Denote 🔗
I also spent some time this morning figuring out how to do things “the Denote Way,” which means leveraging existing tools in Emacs instead of learning a bunch of functions that significantly duplicate functionality you already have.
“Part of the reason Denote does not reinvent existing functionality is to encourage you to learn more about Emacs,” says Denote’s creator, Prot. Like, just bookmark your Denote directory and use the built-in find-file command in (
SPC . to narrow by tags in
dired in Doom), because tags are embedded in filenames, and lead with
_. If you need fulltext search, ripgrep is there for you, and you’ve probably already used it somewhere else.
I appreciate the approach. I think it will lead to learning how to do more by using fewer things across different use cases, instead of learning shallow functionality across a plethora of hyper-specialized tools.
I also learned that Denote leverages org dynamic blocks, so you can create dynamic backlinks blocks with live links:
#+BEGIN: denote-links :regexp "_management"
C-c C-c in the block and it dynamically updates all the items tagged with
management. All that stuff is just atomized interview prep notes from my job search, which I broke down and stuck in org-roam and spent a little time converting to Denote’s format to try things out.
Fully equipped 🔗
I took my Townie down to Foster Rd. for lunch today, then stopped off at one of the local bike shops in the Mt. Scott neighborhood. At some point early in my ownership I stuck hybrid pedals on it. Years ago Shimano came out with the Click’r pedal, which offered some of the stability and torque advantages of a clipless pedal with a little more ease of use. The hybrid pedals were supposed to make it easier to just hop on and ride with street shoes on if you didn’t want to change, or to snap in with cleats if you wanted to do a longer ride (or ride in the rain).
In practice, I don’t think it was a great idea. I very seldom wanted to wear the cleats, and don’t use the Townie for more than a few miles at a time. The right side of the pedals never seemed to be facing up. And they were small under normal street shoes.
So I just got some decent pedals with good traction today, and also added a cup holder, which seemed to tickle the counter guy.
“It’s complete now,” he said.
I’ve got a six mile ride for lunch on Thursday … that’s a little farther than I usually consider, but new pedals and a cup holder seem to demand a celebratory cruise.
I need to do some reading on fences. The one around our property is in bad shape. The way our house is built and situated, the east and west sides don’t need one for privacy at all. The north side sort of demands it during the summer months – our neighbors on that side are as avid about their back yard time as we are.
But also, fences are sort of weird to me. Whoever built our house took the initiative to put one in. Our neighbors to the east sort of built off of it to fence in the south side of their lot. Our neighbors to the west don’t care because their garage is our west property line. My thought is just “there is a total of one east window in this house, and it is a high window that doesn’t line up with the neighbors’ west window, and there are no west windows at all, so why even have fences on those sides?”
I’m wondering if there’s a way to handle the north side … the longest part of our lot that shares a boundary with a neighbor … without a fence fence. Or if the answer is something relatively high back there, but not as high (and hence more durable?) on the other two sides.
But mostly I just don’t understand anything about fences at all.
When I look at them, sometimes they seem to be for privacy – they’re high and block people on the street seeing in – and other times they seem to be kind of for security? Like, you’d have to make an effort to vault a waist-high one made out of chain link, or they wall off access to the back yard, or they (more rarely) seal in the driveway (though good lord do I get annoyed with all the old chain link driveway gates that just sort of loll around blocking the sidewalk). Sometimes they just seem to be there to demark the property line, which would suggest something less elaborate would do, and serve mainly as lawn mower guidance.
They weren’t a common feature in the small town where I lived in Indiana. They weren’t common in the Virginia neighborhood I lived in, or else they were low, chain link things. They were unheard of out in the Pennsylvania coal and dairy country I lived in except for one place that was half house, half mechanic’s garage there in the hamlet. I remember low, chain link fences around every yard in Houston, TX as a child. The only childhood home I can remember having tall fences was when my family lived in a townhouse in suburban Pittsburgh, and everyone had a tiny patch of back patio. They’re very common in this neighborhood, more tall than not for newer construction, more likely to be low chain link things for all the smaller postwar houses.
Anyhow, I need to learn more about them. There’s the part of me trying to engage with the whole topic by observation – a mode I get into that Al tolerates, but barely – and the part of me that has a vague inkling that fences around yards might be one of those things that are common but also not thought through in detail, which means there are lots of opportunities to step on norms people didn’t even know they had.