- > 3min 436 2026-02-09 Pure Blog #Blogging
- 1min 96 2026-02-06 Feishin music player for Linux #Music #Linux
- 1min 157 2026-02-05 Global org-capture shortcut in KDE #Linux #Emacs
- 2min 381 2026-02-03 Installing Fedora Workstation on the laptop #Linux
- 2min 263 2026-01-27 Removing analytics from baty.net #blogging #ai
- 2min 271 2026-01-25 A Leica Q2 again #photography #leica
- 2min 338 2026-01-24 Linux and/or macOS #linux
- 1min 183 2026-01-21 Blogging with org-mode and ox-hugo again #blogging #hugo
- 1min 110 2026-01-20 Navidrome and Supersonic #Music #Linux
- 1min 59 2026-01-16 OM on Sameness #Culture
- 2min 297 2026-01-16 Fedora/KDE on the Framework laptop #Linux
- 1min 180 2026-01-09 Berghia Nudibranch #ReefTank
- 2min 375 2026-01-06 Dropping back to Doom Emacs #Emacs
- 2min 238 2026-01-04 A blogging resolution loophole #Blogging #Hugo
- 1min 155 2026-01-03 Chaos around here #Linux
- 1min 106 2026-01-01 Livin' the dream over at Irreal #Blogging
Pure Blog
At the beginning of the year, I jokingly resolved that I wouldn’t change my blog platform more than once every three months. Technically, I’ve kept my word. But last week Kev Quirk introduced his new blogging platform, Pure Blog. I am constitutionally unable to resist trying new blogging platforms, so I set up a copy and started tinkering.
It’s nice! It’s not technically an SSG (it uses PHP), but it maintains content as YAML-fronted Markdown files, just like most SSGs. What attracted me most, originally, was that the whole thing felt like something I’d build, given the time and talent. It focused on the things I find important, so it was a good fit right off the bat.
Here’s mine, so far, running at pure.baty.net. I’m playing with fonts and colors a bit. Currently, it mimics my Emacs theme, ef-day.

Without too much fuss, Pure Blog behaves the way I want a blog to behave. It’s simple, yet complete for what I need. I do have a wishlist, though.
- Footnote support
- Header improvements (such as making the blog title clickable or otherwise customizable)
- I’d like to override the Copyright text.
- A built-in /archive page with compact list of all posts, different from that of the home page. (I’ve made my own basic version)
- Possibly an easier upgrade mechanism. I’m using a custom justfile but it’s fragile. Kev’s instruction for upgrades are close, but miss things like /content/layouts/, which are technically code, not content. And custom CSS is edited using the admin panel, which makes that also content, not code. It’s not onerous now, but I have to pay more attention than I’d like.
In fairness, the whole project was meant to scratch a particular itch for one person. I’m not complaining! Like I told Kev, “Can open, worms everywhere!” :)
But now what? Part of me wants to break my rule and move baty.net to Pure Blog. That would be an enormous project, because years of using different tools has brought a variety of front matter formats (TOML, YAML, dates, tags, etc).
Another option is to make a new blog, such as I have so far with pure.baty.net, but even though the domain is fitting and kind of funny, I think the novelty will wear off.
I’m thinking about replacing baty.blog with a fresh new Pure Blog and leaving the old site behind. I have the content saved, so while it’ll break links, at least the content is still out there somewhere.
Anyway, Kev’s made a nifty, simple, useful, and easy-to-host blogging tool with Pure Blog. I need to figure out what to do with it.
I’m giving the Feishin music player a go on Linux. It’s full-featured and very Roon-like, but streams from my Navidrome instance.
It’s an Electron app, which some people can’t stomach, but it doesn’t bother me much. It’s a minor ick to suffer for a music player I might actually enjoy using.
If it turns out to be too much, then there are dozens of other options. I learned about Feishin from the post, The state of Linux music players in 2026, which was linked to here which was linked to by Andreas’ always interesting Link Dump.
I like being able to create new Org mode tasks from anywhere, via a simple keyboard shortcut. This probably doesn’t justify a whole post, but here’s how I did it.
Create a script at ~/.local/bin/orgcapture.sh
Here’s the script:
#!/bin/bash
emacsclient -c -F '((name . "capture") (width . 80) (height . 34))' -e '(progn (org-capture) (delete-other-windows))'
In my Emacs config, I have a hook that tidies up the new frame:
(defun my/org-capture-finalize-hook ()
"Close frame after org-capture if it was opened for capture."
(when (and (> (length (frame-list)) 1) ; More than one frame
(frame-parameter nil 'client)) ; Frame created by emacsclient
(delete-frame)))
(add-hook 'org-capture-after-finalize-hook 'my/org-capture-finalize-hook)
In KDE’s Settings, I added a new command in the Shortcuts settings that point to that script. I assigned it to F3.
Now I hit F3 any time and a small capture buffer pops up in a new frame. That’s it. If there’s a better method for doing this, let me know.
Installing Fedora Workstation on the laptop
My laptop has been running Fedora’s KDE spin. I first tried the stock Fedora with Gnome, but since my desktop was running KDE, I figured I should standardize on that.
Standardization is boring. :)
I installed Fedora Workstation this morning. I’d taken notes from the last time, and those helped speed things along. Still, it was 2 hours from installer to a fully functional system. I’m typing this post in Emacs and will deploy using Hugo shortly.
For the record, here are my raw notes from the installation. I need to work on the order in which I do things, but this wasn’t bad.
Installing Gnome on the Framework 2026-02-03
- sudo dnf install syncthing
- Settings
- Trackpad -> Disable tap to click
- Install Gnome Tweaks
- set caps lock to control
- Emacs Input on
- sudo dnf install -y stow just fzf zoxide ripgrep
- Install Extension Manager (Flatpak)
- Installed Dash to Dock extension (via Extension Manager)
- Installed Clipboard Indicator extension (via Extension Manager)
- Installed starship curl -sS https://starship.rs/install.sh | sh
- stow bash
- stow pandoc
- sudo dnf install pandoc
- sudo dnf install texlive-scheme-full
- sudo dnf install neovim
- sudo dnf install rust cargo # (for eza, since eza is no longer in fedora repos)
- Build and install eza
git clone https://github.com/eza-community/eza.git
cd eza/
cargo install --path .
- Add berkely-mono to ~/.local/share/fonts/berkeley-mono
- sudo dnf copr enable dejan/lazygit
- sudo dnf install lazygit
- Install Signal (Flatpak)
- stow auth
- stow git
- stow gnupg
- stow jrnl
- stow pass
- stow ssh
- stow aerc
- sudo dnf install aerc
- sudo dnf install emacs
- Configure emacs
- git clone https://github.com/jamescherti/minimal-emacs.d.git ~/.config/emacs
- git clone [my dotemacs repo] to ~/.config/emacs-mine
- cp ~/.config/emacs-mine/pre-early-init.el ~/.config/emacs/
- ln -s ~/Sync/emacs/manual-packages ~/.config/emacs-mine/
- sudo dnf install fastfetch
- Add "Start Syncthing" to Startup Applications in Gnome Tweaks app
- Install FireCode Nerd Font
- ...a nearly infinite number of little tweaks that I didn't record.
Since the laptop is meant to be a sort of satellite computer orbiting my desktop Mac Mini, I don’t need everything installed. The above covers just the basics.
One day I should write a script that takes care of this for me.
There are people who claim not to care at all about how many people visit their site. I don’t believe them.
I suppose if you have a tendency to write differently based on analytics, and you don’t want that, then sure, get rid of them. But you care, at least a little, right?
I care. I like to see where people are coming from. I often find interesting blog posts that happen to mention me. It starts conversations. I’ve never changed what or how I write because of what analytics tells me, but I’ve learned about what people like and where they come from. I find it interesting.
This morning, however, I deleted analytics from all of my sites.
A few weeks ago, I noticed that traffic had increased tenfold to baty.net and 90% of that traffic was from China. It was all one or two views of every possible page on the site. AI bots, obviously.
I spent a few hours figuring out how to block IPs from China at the firewall. It worked, but the IP list changes regularly and needs updating. There are nearly 10,000 rules in my firewall.
When I looked today, 60% of my traffic is now from Singapore, with the same click-every-possible-link behavior. Sigh.
I thought that bots wouldn’t register visits when the site’s tracking scripts rely on JavaScript, but apparently that’s not the case.
Web traffic is still processed on the server by GoAccess, so if I feel like digging, it’s all there, but the simple “Who, and from where?” analytics are no longer worth it.
A Leica Q2 again
Well the entire Leica SL2 kit has been sold, which left me with the GRIII as my only digital camera. I love the little Ricoh, but it doesn’t scratch my “Go out and take photos” itch.
I’ve gone back to a Leica Q2. I have previously owned a Q, Q2, and Q2 Monochrom, but eventually sold them due to other urges (mostly for digital M cameras).
Lately I’ve been wanting something smaller for carrying everywhere. The SL2 is ginormous and heavy. The Q2 isn’t exactly tiny, but it’s much easier to have with me than the SL2. I could have gone smaller with something like a Fuji, or even the GRIII, but I decided to stick with the Leica. I’ll still have the GRIII for when I don’t feel like carrying a camera, but the Leica goes everywhere else.
28mm is challenging for me, but I’m unashamed to crop when needed, and the 47MP sensor gives me plenty of leeway. The 1.7 Summilux is a great lens. The clever macro switch is a joy to use. It’s easy and intuitive to switch to manual focusing, which I do a lot. I can live with 28mm.
Add weather sealing, IBS, and super simple button/menu layouts, and it really is a great combination.
I admit being tempated by the newer Q3, but new ones cost $7,000, and even used copies are still twice what I paid for the Q2. I got a very good deal on my camera, so I’m happy with that.
I like not having to decide which digital camera or which lenses to bring every time I leave the house.
Linux and/or macOS
I’ve been alternating between Linux (Fedora/KDE) and macOS since the beginning of the year.
I’d describe Linux and the software running on Linux like this:
Less polish, more power.
What I find challenging is that sometimes I want the power, other times I want the polish.
Surprisingly, I am starting to prefer being in Linux than being in macOS. Linux feels like it’s mine and I like that feeling. Everything in the OS makes me believe it was done with me mind. “Me” being “the user”. Even when things are frustrating, I usually understand why. macOS used to feel this way, but has drifted from it. It’s not all Tahoe’s fault, but it certainly hasn’t helped.
What I miss most about running macOS is not macOS. It’s the software. The polish.
Most of the stuff I use on Linux also works on my Mac. That doesn’t apply the other way around. Whenever I discover some cool new app and find that it’s macOS only, it stings a little.
I want BBEdit and Tinderbox and Keyboard Maestro and Things and iA Writer and Preview. There are usually “equivalent” apps on Linux, but they’re not really. They do mostly the same things, but they’re not the same. Not even close. It’s been hard to adjust.
The other glaring omission on Linux is an easy way to share things with family and friends. How am I supposed to send funny memes to my wife when I have to jump through so many hoops first?
KDE Connect would be a great solution, but every other time I want to use it, the computer can’t see my phone, or vice versa. By the time I cycle wifi on both devices, the moment has passed. Maybe I’ll try talking everyone into switching to Signal. Ha! There’s no chance of that, so I’m on my own here.
If we’re keeping track, I’m writing this in Emacs on the Linux desktop. It’s where I’ll probably end up full time eventually, but it’s not happened yet.
d
For a few years (a few years ago) I wrote all my blog posts using one big Org mode outline and let ox-hugo generate the Markdown files for Hugo. I eventually decided it was a layer of abstraction that I didn’t need, so I fell back to writing in Markdown directly.
I’m really into using Emacs for everything again (still?), so I dusted off and updated my old ox-hugo config and here I am, typing this with Emacs in a big Org mode outline.
I have a (ya)snippet for generating the posts, like so:
# -*- mode: snippet -*-
# name: Hugo blog post
# key: blog
# uuid: blog
# --
**** TODO ${1:title}
:PROPERTIES:
:EXPORT_FILE_NAME: index.md
:EXPORT_HUGO_BUNDLE: `(format-time-string "%Y-%m-%d")`-${1:$(replace-regexp-in-string " " "-" (downcase yas-text))}
:EXPORT_HUGO_SLUG: ${1:$(replace-regexp-in-string " " "-" (downcase yas-text))}
:EXPORT_HUGO_CUSTOM_FRONT_MATTER: :coverCaption ""
:END:
#+begin_description
#+end_description
$0
The snippet prompts for a title, then creates the appropriate properties for the post.
One nice thing about this is that once the Markdown is generated, I no longer need the .org file. Writing this way is a bonus, but not a requirement.
I’ve been running Navidrome on the NAS for a few weeks as a way to avoid figuring out how to use Roon on Linux. Navidrome is no Roon, but it’s fast and simple and works well enough for my purposes.
Navidrome’s web UI is fine, but I thought I’d look for a “real” (Linux) client for it. Navidrome’s API is compatible with the OpenSubsonic API, which apparently is quite popular, so there are many options. I’ve started with Supersonic.

I don’t tinker with my music clients much. I listen to complete albums only and almost never use playlists.
Supersonic as a front end to Navidrome is working great so far.
OM on Sameness
Our Algorithmic Grey-Beige World – On my Om:
We’re living in the endgame. Algorithmic reality doesn’t just commodify interaction. It standardizes imagination. The algorithms squeeze creativity out of millions by showing them exactly what “works.” We don’t get unique. We get infinite variations of the same.
I hate 90% of the internet, now. It makes me sad and angry.
Fedora/KDE on the Framework laptop
When I was setting up my desktop computer with Linux, I wanted to install Gnome, but I couldn’t get itto work with the Apple Studio Display. I went with KDE instead, and put Gnome on the laptop.
After using both for a couple weeks, it turns out I prefer KDE. This morning, I wiped the Framework and installed KDE. It took me a couple of hours to get to a point where I could do most of the things I normally do (write this post, for example).
I didn’t take detailed notes, but I did list all of the things I’ve done so far. I’m putting it here for safe keeping. I keep threatening to make this into a script, but honestly I’d rather just run through it manually each time.
Install log for Fedora/KDE on the Framework
Jan 16, 2026
- Configure inverse scrolling
- Disable tap-to-click
- Set Caps Lock as Control
- Log into 1Password
- Log into Firefox
- sudo dnf install syncthing
- Add device to Syncthing from another computer. Share everything
- sudo dnf install -y stow
- sudo dnf install -y fzf ripgrep zoxide just
- curl -sS https://starship.rs/install.sh | sh
- stow bash
- stow auth
- stow ssh
- sudo dnf install -y pandoc
- sudo dnf install -y texlive-scheme-full
- sudo dnf install -y neovim
- add Start Syncthing to Autostart apps
- stow pandoc
- sudo dnf install -y btop
- sudo dnf install -y fastfetch
- sudo dnf install -y emacs
- git clone https://github.com/jamescherti/minimal-emacs.d.git .config/emacs
- git clone git@github.com:jackbaty/dotemacs.git .config/emacs-mine
- cp .config/emacs-mine/pre-early-init.el .config/emacs/
- ln -s ~/Sync/emacs/manual-packages .config/emacs-mine/
- Install Berkeley Mono font to ./local/share/fonts
- sudo dnf copr enable dejan/lazygit && sudo dnf install lazygit
- Install Signal (Flatpak)
- sudo dnf install aerc
- stow aerc
- python3 -m venv maestral-venv
- python3 -m pip install –upgrade maestral
- maestral start (then auth with Dropbox)
- maestral autostart -Y
- sudo dnf install -y go hugo
Berghia Nudibranch
My reef tank continues to confound all efforts to make it pretty.
The most pressing problem is a serious outbreak of Aiptasia. I’ve been unable to keep up with it using chemical methods1. The most common non-chemical suggestion is to introduce Berghia Nudibranch into the tank. The only thing these “sea slugs” eat is Aiptasia.

My tank is only 32 gallons, so I ordered six slugs. The medium ones (1/2-3/4 inch in length) run about $17 each. The expensive part was shipping. They must be shipped overnight, so shipping was $56. Yeesh.
They arrived yesterday and I began to drip-acclimate them. Once acclimated, I placed their jar on its side on a live rock. They all eventually crawled out onto the rock in about two hours. They immediately disappear into crevasses and holes in the rock. They are nocturnal and remain hidden most of the time, so it’s likely I’ll never even see them again.
I’m told it can take months for them to seriously dent the Aiptasia population, so now I wait.
-
Mainly, dosing each one individually with Aiptasia-X ↩︎
Dropping back to Doom Emacs
Weaning myself from Emacs is like a minor hobby for me. Or at least you’d think it was, based on how much time I spend on it. I’ve only ever succeeded once or twice, and only for a short time. There is simply nothing like Emacs and definitely nothing like Org mode. Besides, I have a decade of notes in there. Nearly every note-taking, text-editing problem I’ve ever run into has been solved either by me or someone else in Emacs. I’m comfy there.
And yet, last week I tried leaving Emacs again.
I was sucked in by the promise of Markdown being available and useful just about anywhere, with any modern tool. I was tired of C-x C-something for everything. For example, opening my Emacs bookmarks means C-x r b and for some reason I always have to look at the keyboard while typing it. Yes, yes, I can rebind it if it bugs me, but that’s a can of worms I’ve regretted opening before.
It’s possible that the thing I thought about most has been the native Emacs bindings in nearly every app on macOS and the fact that they’re not everywhere on Linux. Assuming I’ll never be able to go all in with only macOS or Linux, I thought I might try covering more bases by switching to Evil mode in Emacs. True Vim bindings aren’t always available, but most apps and CLI tools, etc can fake it pretty well. Vim can fake it pretty well, too, and I spend a lot of time there.
So I dug out my vanilla evil-mode config and went to town. I hated it immediately. Mine was a half-ass configuration I cobbled together from a bunch of blog/Reddit posts. It was inconsistent and broken in places.
You know what does Evil mode really well? Doom Emacs.
So I spent a few hours this morning (re)installing Doom and migrating the important bits of my vanilla config over.
Doom tries to do too much, but it does a pretty good job of it. I’m modal-editing my way around everything and it’s like coming home. I’m sure I’ll start stubbing my toes on things at some point, but for now, the problems I traded for it are worth it.
In How about some blogging stability for 2026? I wrote that I resolved to not change blogging platforms more than once a quarter. This would be an easy goal for most people. For me, though, it’s a bit of a challenge.
I was bored this morning, which is never a good sign. For something to do, instead of changing platforms, I decided to change Hugo themes instead. Totally within the boundaries, right?
Anyway, we’re trying the Blowfish theme. It’s a derivative of the old Congo theme that I quite liked before it was mostly abandoned. Moving themes with Hugo is never simple, but I think the only thing I’ve lost are featured images. In PaperMod, they’re controlled with front matter. In Blowfish, it’s done via naming convention. This means that any of my old posts that have cover images I’d like to keep, I need to rename the image files. It’s easy, but will be tedious so I’m just going to pick at them over time.
Instead of simply changing the “theme” configuration setting, I created a whole new site by copying everything over from the PaperMod version. This is probably doing things the hard way, but it feels less like a permanent move. If it turns out I don’t love the new theme, I can just copy over a couple of new post markdown files and deploy the old version. I like to keep my options open.
Chaos around here
I’m typing this in NeoVim on the Framework running Fedora/Gnome. Earlier today, I fired up the Mac Mini and thought, “Man, this is how I want to do computing.” This, in direct opposition to how I’ve felt about it for the past few months. As part of the new year, I’d “decided” that I was putting the Linux experiment on hold indefinitely. I’d fired up Tinderbox for blogging at daily.baty.net as part of my new move back to macOS.
None of these things stick. I’m about to shut down this laptop and move over too the Mac Mini running Tahoe and remind myself why I don’t want to live there. It seems like somewhere I’d like to live. Do I really want to not have control over my operating system? Do I want to live with Liquid Glass even though I hate it?
Anyway, like I said, chaos1.
-
There’s a “companion piece” to this one. ↩︎
Livin' the dream over at Irreal
Over at Irreal, Blogging Platforms:
For me, blogging is all about writing and sharing my discoveries. The last thing I want is to worry about is my blogging platform. I want it to be as transparent as possible so I don’t have to think about it. I just want to write my post in Org mode and push a button to publish it.
Most days, this is what I dream of, too. Picking something and sticking with it would be good for me. So far, I’ve not been able to do that, even for a short time it seems. Maybe 2026 will be the year! :)