Blog Posts
Comments are Back
For a number of years, I was using Disqus to provide comments on my blog. However, I was increasingly unhappy with how bloated the solution was, how many additional entries I was having to put into my Content Security Policy, and unsure how comfortable I was with having a third party own comments to my own site.
So last year, I removed comments from my site entirely.
This worked fine, and I didn't really think about it much, until somebody reached out to me via email recently, with what was essentially a comment on a blog post, and I realized that nobody else but me was going to benefit from it.
So I started thinking about how to go about adding comments again.
Fixing issues with Yubico's PAM U2F bindings in version 1.3.1
I've been using a Yubikey for years, now, and on each computer I use, I install their U2F (Universal 2 Factor) bindings for the linux Pluggable Authentication Modules (PAM) support, requiring usage of my Yubikey for login and sudo access.
Today, I updated my work machine, and didn't even notice that there were new pamu2fcfg and libpam-u2f packages, updating to version 1.3.1; I never really care, as everything just works. But when I came back to my machine after lunch, I was unable to login: I'd provide my password, but my Yubikey wouldn't activate.
A Weekly Priority List in Logseq Journal View
I've been using Logseq for a few years now, and even blogged about it last year. I appreciate how it surfaces todo items on the upcoming day(s), as well as anything I've given a due date in the coming week. That said, one exercise I engage each week is a weekly prioritization for the upcoming week, where I note down the items most important for me to complete. While many of these might have due dates, some might be aspirational or more along the lines of things I can do when I have a few minutes of down time between meetings.
Roundup of PHP 8.4 Posts
Collapsing the Vivaldi Tab Sidebar
tl;dr: In Vivaldi, middle clicking the separator between the tab sidebar and the web page will either collapse or expand the sidebar; when collapsed, it shows just the tab favicons, and the workspace selector icon.
If you want to know how I got to that point, read on.
Using resurrect.wezterm to manage Wezterm session state
One of my goals when adopting Wezterm was to replace tmux. To do that, I needed not just the ability to open additional tabs/windows and to split into panes, but also a feature I'd come to rely on heavily in the tmux ecosystem: session saving and restoration, which I accomplished with the tmux-resurrect plugin.
I tried a number of options, but was eventually pointed to resurrect.wezterm.
In this post, I'll detail how I've configured it, as well as a workflow I've developed for interacting with it that gives me (a) reasonable satisfaction that I won't lose work, and (b) additional flexibility for branching off work.
Managing Wezterm Keybindings, or Merging with Lua
As I expand my Wezterm usage, I find that either (a) a third-party module will have default keybinding configuration I want to adopt, and/or (b) I want to segregate keybindings related to specific contexts into separate modules to simplify my configuration.
Keybindings are stored as a list of tables (what we call associative arrays in PHP). Simple, right?
Unlike in other languages I use, Lua doesn't have a built-in way to merge lists.
So, I wrote up a re-usable function.
Wezterm GUI Notifications
Wezterm has a utility for raising GUI system notifications, window:toast_notification(), which is a handy way to bring notifications to you that you might otherwise miss if the window is hidden or if a given tab is inactive.
However, on Linux, it's a far from ideal tool, at least under gnome-shell. (I don't know how it does on KDE or other desktop environments.) It raises the notification, but the notification never times out, even if you provide a timeout value (fourth argument to the function). This means that you have to manually dismiss the notification, which can be annoying, particularly if the notifications happen regularly.
So, I worked up my own utility.
Escaping Regex Characters in Lua
Quick little note mainly for myself: Lua regex is different than PCRE. The big place it differs is in where you escape pattern matching characters (e.g. .
, ?
, +
, etc.). In PCRE, you escape these with a leading backslash (e.g., \.
, \?
, \+
). However, with Lua, you use the %
character: %.
, %?
, %+
.
Diagnosing Vivaldi resource usage
I recently noticed my CPU usage was high, and it was due to my open Vivaldi browser. I wasn't sure what tab was causing the issue, so I searched to see if Vivaldi had any tools for reporting this.
It turns out that Shift-Esc
will open a task manager, and you can sort on any of:
- Task (a string representing high level things like the browser as a whole, GPU process, worker tabs, and more)
- Memory footprint
- CPU (this was what I was interested in!)
- Network usage
- Process ID
You can select any task to end its process.
I was able to quickly track down the issue to a background worker running for a PWA window I'd closed earlier, and ended the process.