Making an nb bookmark from iOS

Couldn’t resist figuring this out. You can run scripts over ssh with Shortcuts and iOS: The script on the receiving end: #!/opt/homebrew/bin/bash url=${1) /opt/homebrew/bin/nb ${1} Tailscale makes this kind of thing easier. (And yes, use an ssh key.)

April 28, 2025 · 1 min · 38 words · mike

Bolting a CLI interface onto imgup for SmugMug uploading and blogging

imgup is a project I worked on a few years ago to solve the problem of where to put photos for my blogs after experiencing a few weird things with different services: The image files being renamed into something illegible, or suffering from crappy compression. Since I have been using SmugMug for years and keep everything there, I decided to create a non-browseable album I could upload images to, then share from there. ...

April 27, 2025 · 2 min · 269 words · mike

All along the watchtower

I used to have a chief engineer on my team whom I loved dearly, because when I’d be in the throes of my worst managerial contortions, he’d quietly ask, “Mike, what problem are you trying to solve?” He was very good at winding things back and resetting. At the beginning of our relationship I would feel attacked, because it’s so easy to get so far out to sea that you lose sight of that initial thing that started the process of piling up fixes and solutions and almost feel like you didn’t even know what problem you were trying to solve, you just sort of got caught up in all that change-agent energy and felt like doing something. ...

April 26, 2025 · 2 min · 397 words · mike

cielagonote is what I woke up yesterday morning wanting to find

My kick has reached some kind of logical conclusion in the form of cielagonote. This morning I started off with a zsh wrapper around fzf and nb for finding and editing notes. nb is fine and all, but I really like the sort of speedy narrowing you get from something like deft or other members of the Notational Velocity family tree. So I was looking for something to wrap around nb to keep taking advantage of its git syncing and a few other features, but also warily eyeing too much dependence on it. If the Giant nb-Eating Space Goat were to pull into orbit tomorrow, I would want to simply watch it magestically devour nb, then have a quick way to write a note about my impressions of the experience without accidentally naming that note the same as another about a similar experience. ...

April 25, 2025 · 2 min · 349 words · mike

cielagonote v0.2.0 - WMD Edition

cielagonote 0.2.0 adds some basic file management and a convenience feature for daily notes. There are two things that I would love to polish up but probably never will: Since I am a heavy emacsclient user, I run into some interactions between it and kitty that leave the terminal in a disordered state. I’ve solved that with a reset after exiting an edit operation. It adds a small bit of latency to an otherwise zippy interaction. The rename and delete operations drop you back into the command line for a second. It’d be a lot spiffier if that were handled more nicely. On the other hand, this is 233 lines of Ruby and an off-the-shelf cast of supporting characters. It was pretty delightful to use it in anger a few times with my topic logs this morning, and it did what I wanted by feeling way less in the way and less “now I am entering into some other place and descending down into a corner of it and doing a thing and coming back up out of it.” ...

April 25, 2025 · 2 min · 232 words · mike

Emacs keybindings for micro

The biggest problem I’ve had with micro has been getting used to its very CUA-like sensibility. Sticking these in ~/.config/micro/bindings.json looks like it is relieving the worst of it, leaving me with a just-fine zippy little editor that doesn’t need Emacs infrastructure to operate. { "\u001b\u003c": "CursorStart", "\u001b\u003e": "CursorEnd", "\u003cCtrl-x\u003e\u003c0\u003e": "Unsplit", "\u003cCtrl-x\u003e\u003c2\u003e": "HSplit", "\u003cCtrl-x\u003e\u003c3\u003e": "VSplit", "\u003cCtrl-x\u003e\u003cCtrl-c\u003e": "Quit", "\u003cCtrl-x\u003e\u003cCtrl-f\u003e": "OpenFile", "\u003cCtrl-x\u003e\u003cCtrl-s\u003e": "Save", "\u003cCtrl-x\u003e\u003ch\u003e": "SelectAll", "\u003cCtrl-x\u003e\u003co\u003e": "command:fzf", "Alt-/": "lua:comment.comment", "Alt-a": "lua:snippets.Accept", "Alt-b": "WordLeft", "Alt-d": "lua:snippets.Cancel", "Alt-f": "WordRight", "Alt-s": "lua:snippets.Insert", "Alt-v": "CursorPageUp", "Alt-w": "Copy", "Alt-x": "CommandMode", "Ctrl-a": "StartOfLine", "Ctrl-e": "EndOfLine", "Ctrl-g": "Escape", "Ctrl-k": "CutLine", "Ctrl-r": "FindPrevious", "Ctrl-s": "Find", "Ctrl-v": "CursorPageDown", "Ctrl-y": "Paste", "Ctrl-z": "Undo", "CtrlP": "command:palettero", "CtrlSpace": "command:palettero", "CtrlUnderscore": "Undo", "F1": "command:cheat", "F12": "command:makeup", "F4": "command:jumptag", "F5": "command:runit", "F9": "command:makeupbg" } I used to use jed for this, until something went wrong with it for a while. It seems to be operating correctly again to judge from my latest pull down from Homebrew, but I just went to this trouble with micro … ...

April 25, 2025 · 1 min · 190 words · mike

lol

Just nb install fzf.nb-plugin and nb fzf. alias nbf“nb fzf”= if you’re feeling frisky. Done. I mean, not really, because cielagonote does the whole “make it if it doesn’t exist” thing, and it’s doing full-text search. But if the thing you don’t like about nb is “list, get a number, enter a number” to operate on your file, this does the job. #!/usr/bin/env bash ############################################################################### # fzf.nb-plugin # # FZF Plugin for nb # ############################################################################### # Add the new subcommand name with `_subcommands add <name>`. _subcommands add "fzf" # Define help and usage text with `_subcommands describe <subcommand> <usage>`. _subcommands describe "fzf" <<HEREDOC Usage: nb fzf Description: Search through current notebook using fzf and then edit sepected item. HEREDOC _fzf() { local note=$(_ls -t note --filename -a --no-footer --no-header --no-indicator --tree | fzf --ansi --header "$(_notebook current --name)" --preview "echo {} | sed '"'s/\x1b\[[0-9;]*m//g'"' | awk -F'[][]' '"'{print $2}'"' | xargs -n 1 nb show -p | ${NB_MARKDOWN_TOOL:-bat} -" | awk -F'[][]' '{print $2}') if ! [[ -z "$note" ]]; then command nb edit "$note" fi }

April 25, 2025 · 1 min · 177 words · mike

nuhtizhunal veblocitrix

fzf is a command line fuzzy finding TUI thing that gives you really fast progressive narrowing on a directory full of stuff then invokes whatever on the target. This morning’s science experiment is wrapping it in a zsh function for my nb that pops up a fuzzy finder with incremental search, or offers to start a new note in nb. If you take the New Note option, you get a prompt for the title and can start typing. The whole thing is wrapped around nb so I get the benefits of its autosync infrastructure, just with a search interface that is way faster for finding things. ...

April 25, 2025 · 2 min · 324 words · mike

log2file.el for quick logging into md or org (pencils down, back to work)

In the process of diddling around with a bunch of different kinds of logs and formats, I realized I had two things that did the same thing, more or less, for org files and Markdown files. The org version bothered me because I went down the wrong track and ended up using org-agenda-files with a given filetag to populate the list of potential targets and get out of some stuff I couldn’t get right. The Markdown version was better, but didn’t have a non-fiddle-with-your-config-file way to get new files added. ...

April 23, 2025 · 3 min · 509 words · mike

lmno-blog-capture.el and the whole lightweight text thing

Yesterday I made a little thing to quickly capture lmno.lol blog posts from a little window in Emacs. I’m kind of having fun package-izing these things, so today I bundled it up into pdxmph/lmno-blog-capture, with a customization group (with one option). I’ve been on a small tear with these things lately, and whenever I go on a small tear I think “this is happening for a reason,” and the reason is usually “because there’s something you don’t want to go do,” and that is true here. But I like times like this, because they exercise part of me that doesn’t get exercised much: I spend a lot of my day thinking “will this scale,” and “but do we really need to do this,” and “what is security engineering going to do when they find out this happened,” and “did I make Compliance angry.” ...

April 22, 2025 · 7 min · 1315 words · mike