Software

Back to Org-roam (from Denote)

Using both Org-roam and Denote for my notes is not sustainable. I had to make a call one way or the other.

I went with Org-roam.

This is a bit disappointing because I prefer the philosophy of Denote. I like that Denote is agnostic about file types (I can mix and match Markdown and Org-mode files, for example). I like that it forces a consistent file naming scheme. I like that it doesn’t depend on Org-mode features or any other complex dependencies. I like that it doesn’t try to do too much, but is easily extensible. Plus, I’m not trying to build some sort of zettelkasten or anything, so simple is preferable.

But, I keep finding things in Org-roam that I “need”. I use aliases all the time. I like to use several tags on a file, but don’t want them all in the file name. I like the full-featured daily notes functions. I like the ability to extract a heading out to a new roam file. Or I can use org-roam-refile to move a heading to another file in the Org-roam directory. I’m sure I could find ways to handle some of these things in Denote, but with Org-roam I get them out of the box.

What I really like in Org-roam, and have come to rely on, is the ability to have individual Org headings become their own independent roam nodes. For a while, I thought this added unnecessary complexity, but it turns out to be super useful. For example, I have a books.org file, with each book as its own heading. (See Book logging in Emacs). Since moving this file into Org-roam, I’ve turned each book’s heading into its own node, making it easier to search for a book or to link between the book and its author note or a concept note. And I can still create summary tables within the books.org file.

Then there’s the Graph. I make fun of the Graph because it really is mostly useless, but dammit it’s fun to poke around in.

Part of my org-roam graph

Add Org-roam’s larger ecosystem to the above list, and the decision to keep my notes in Org-roam becomes hard to argue with. I’m slowly moving my Denote notes back into Org-roam and fixing links, etc.

I don’t know why I’m so sentimental about Denote. Not using it makes me a little sad. Prot is brilliant and I like the way he thinks. Denote is a terrific, smart, simple Emacs package, but right now Org-roam makes more sense for my notes.

Viewing Caddy logs by date in GoAccess

UPDATE: I’ve had trouble getting GoAccess to parse the logs consistently after changing the date format.

I’ve been using GoAccess on the VPS running my static sites for keeping an eye on web server access logs. It works great and requires no tracking scripts. I run a cron job every five minutes to process my site logs and generate an HTML report. This is fine, but GoAccess always processes the entire log file and offers no way to filter the results. Sometimes I only want to see stats for, say, today or for the past week.

To do this, I run GoAccess on only a subset of the log file using the command line directly on the server. The GoAccess man page includes some examples using sed so that’s where I started. The first problem I ran into was that Caddy’s log files use json by default rather than the trusty old common or combined formats. The default log format uses a UNIX timestamp for dates, so the first thing to do was to change the format to iso8601 in Caddy’s configuration, like so…

daily.baty.net {
    log {
        output file /home/jbaty/logs/caddy/daily.baty.net.log
        format json {
            time_format iso8601
        }
    }
}

Now I can parse the logs based on the date using sed:

#!/bin/sh

sed -n '/'$(date '+%Y\/%m\/%d' -d 'today')'/,$ p' logs/caddy/daily.baty.net.log | goaccess -a --unknowns-as-crawlers --ignore-crawlers -

Now when I run ./stats-today on the server, I get something like this:

Check me out with my 5 whole visitors so far this morning! 😆

An Arc browser boost for a better Twitter experience

There are still a few people that I want to hear from that have not (yet) left Twitter, so I visit Twitter maybe once a day. Andy Bell posted the following “Boost” for the Arc browser:

[aria-label="Trending"], 
[aria-label="Search and explore"], 
[aria-label="Twitter Blue"],
[data-testid="DMDrawerHeader"], 
[href*="promote"] {
  display: none !important;
}

It takes about 10 seconds to add new boosts like the above.

I dislike Twitter, but I love Arc. Now Twitter doesn’t suck as much.

Using jAlbum for photo galleries

The jAlbum UI

I’ve been a Flickr user since 2004 and a SmugMug user for nearly as long. For some reason, I prefer looking at my photos via online galleries rather than, say, my Photos library, and both Flickr and SmugMug have helped me do that.

I’ve also kept standalone static web galleries for the odd side project, such as a memorial to my dog Leeloo. Recently, I’ve been creating more of these, so I started looking for easier or better ways of generating static web galleries from a selection of photos. There are what feels like a thousand options. Everything from giant GUI apps to the nerdiest little command line utilities.

After looking around a bit, I’ve settled on jAlbum. I didn’t expect to like it. After all, it’s from that time (2004) when software was named so that everyone knew what it was written in. And I developed an allergy to Java not long after that. Go figure!

jAlbum is surprisingly robust and capable, while still being simple to use. The defaults are mostly fine, but it lets me tweak the dickens out of it, should I want to.

I’ve only spent the morning with it, but I have created some initial galleries at static.baty.net/photos. I think it already looks fine, and I haven’t even begun to tweak it.

jAlbum has built-in (S)FTP capability for automating the process of getting everything out to my server, but it doesn’t support ssh keys so I can’t use that. I’m instead using rsync via a tiny Makefile, so all I need to do is type make and the changes are deployed.

Fighting with Eleventy

Over at daily.baty.net, I’ve been trying to wrangle Eleventy into showing the posts I want on the home page, in the order I want them. I’ve completely failed so far and it’s very frustrating. I don’t think this is at all the fault of Eleventy. I’m just really slow to pick up new things.

I have two tag-based “collections” in Eleventy: Journal and Post. I’ve always only shown “collections.journal” on the home page but I wanted to include regular blog posts, too. Do you think I can figure out how to do that? Nope. The closest I’ve come is to create a custom collection like so:

eleventyConfig.addCollection("myHomeCollection", function(collectionApi) {
        const journals = collectionApi.getFilteredByTags("journal");
        const posts = collectionApi.getFilteredByTags("post");
        return allHomePosts = [...journals,...posts];
    });

This gets me the correct set of posts, but they’re sorted first by tag and then by date, so it’s unusable on the home page. I want reverse-chronological over the entire array but I’ve no idea how to do that. I’m so dense.

In the template, I use the reverse filter, {% for post in postslist | reverse %}, but no joy. What the heck am I doing wrong here?

Using :tag for org-refile-targets in Emacs

Today I learned that I can use tags in Org files as a filter for org-refile-targets. I have my refile targets map to org-agenda-files but limit them to only top-level headings in order to keep the list under control. Once in a while, though, I would like to make a more deeply nested heading available for refiling. I can do this by using (:tag . “refile”). Who knew?!

(setq org-refile-targets '((org-agenda-files :maxlevel . 1)
(org-agenda-files :tag . "refile")))

(h/t Marcin ‘mbork’ Borkowski)

Eleventy and my Daily Notes

Somehow, for reasons unknown, I’ve rebuilt daily.baty.net using Eleventy.

It started when I struggled to make some tweaks to the site, which is (was) generated using Tinderbox. Tinderbox, being Tinderbox, is ridiculously powerful and flexible, but it wasn’t doing what I thought I was telling it to do. So I stepped away and started tinkering with its inspiration, my Drummer blog. For a hot minute, I considered going back to using Drummer, even though I worry about its longevity. Drummer is how blogging is supposed to work (at least in my head), so I started looking at it again.

Then Twitter decided to shut off its free API, which Drummer depends on for identity. Thankfully, Dave is working on a path around the Twitter problem, but in the meantime has temporarily shut down Drummer.

While I waited, I wondered if instead, I could make Hugo look and work like my Tinderbox blog, but I quickly realized that I’m never going to understand Hugo’s templating process/language enough to do anything clever with it.

What about Eleventy? I’d never really considered Eleventy but I know some people really like it. When I saw that they had recently announced the v2.0 (beta), I figured it was a good time to see what it was all about.

The short answer is that I like it! I found the basics much easier to grok than Hugo. I had a simple blog put together in a couple of hours. It was one of those incremental things where I experienced small, early wins, so I was encouraged to continue.

I pulled the (admittedly outdated) CSS and markup from my Tinderbox templates and shoehorned them into Nunjucks files. It was surprisingly easy, so I kept going and was so successful that within a few more hours I’d decided to go all-in and now daily.baty.net is running Eleventy. Good times!

Drummer and Twitter

Dave‘s blogging tool, Drummer, will be affected by Twitter’s API rug pull.

I’ve maintained (on and off) a blog using Drummer since its release. Drummer thinks the way I do. Drummer was a direct inspiration for what is now daily.baty.net. I basically recreated the parts of Drummer I like but built it using Tinderbox.

I sometimes consider going back to using Drummer, but I hesitate because I worry about it’s long-term viability. Dave’s got a lot of ideas and he doesn’t waste time dealing with the old ones. If Drummer ever becomes an “old idea” then I fear I’ll be left without any support. Dave sometimes struggles with support as it is, but zero is worse than a little.

Anyway, I’ll keep an eye on Dave’s progress and who knows, maybe Drummer will become A Thing for me again.

Cal Newport on tool selection

The Any-Benefit Approach to Network Tool Selection: You’re justified in using a network tool if you can identify any possible benefit to its use, or anything you might possibly miss out on if you don’t use it.

Cal Newport, “Deep Work”

Evernote in 2023

You all remember Evernote, right? For years (beginning in the late 2000s), Evernote was the note-taking tool for many of us. Then, they got weird, started selling merchandise and branded scanners, and made odd tangental mobile apps for some reason. Evernote seemed to have lost focus.

Continue reading…