Drop #642 (2025-04-21): Monday Morning Grab Bag

A Long Walk To Recutils; [Finally] Joplin; Designing The Dark Arts

The first section has way more than one resource, so warm-up your bookmark muscles.

Also — for MacOS folk — today is a great day to brew update && brew upgrade && brew cleanup (even though some of those steps do happen automagically every so often for most Homebrew installs).


TL;DR

(This is an LLM/GPT-generated summary of today’s Drop using Ollama + llama 3.2 and a custom prompt.)

After local llama 3.2 failed to recognize the first section was about Recutils, I tried to get the TL;DR on a few commercial LLMs and they all failed to grok Recutils was the focus for the section. Be super careful about relying on these tools to do work that actually requires contextual discernment, since LLM/GPTs have no “discernment” abilities.

  • A Long Walk To Recutils: Recutils provides a simple plain text database format with tools for managing data, including record selection, insertion, deletion, and update, as well as conversion to CSV format. (https://www.gnu.org/software/recutils/)
  • Finally Joplin: The author discusses their experience with Joplin, an open-source note-taking application that supports Markdown, has robust synchronization options, and includes end-to-end encryption. (https://joplinapp.org/)
  • Designing The Dark Arts: An article on inclusive dark mode design provides practical advice on choosing background colors, selecting typography, addressing technical challenges, and designing for diverse visual needs, offering actionable tips for improving dark mode implementations. (https://www.smashingmagazine.com/2025/04/inclusive-dark-mode-designing-accessible-dark-themes/)

A Long Walk To Recutils

Photo by Mikkel Kvist on Pexels.com

A post on Mastodon (makes note to rant about Bluesky in Wednesday’s Drop) informed me of another “disappeared” project being curated by Reed Underwood. That link is to the Codeberg site which houses “data and tools related to extralegal or ambiguous searches, detentions, and deportations,” and fuels the Disappeared website. We’ve mentioned other, similar, tracker efforts before, and having parallel efforts is a very good thing. Not just because they can riff from each other, but decentralizing these efforts means there’s a backup in the inevitable event one of them gets squashed by the state (and I still can’t believe I’m typing sentences like that with a serious/somber tone in America).

Speaking of backups, Reed encourages others to contribute to the repo and/or use the data, so I’ve made a 47 Watch “backup” of the site (warning: no dark mode for that — yet — thanks to the third section) that is more “app-like”, and is based on a JSON version of Reed’s disappeared.xml, which is made with the bonkers fast xml2json.

As I was poking through issues to try to help with, I came across a reference to GNU Recutils. It has 100% been a minute since I’ve played with this suite of utilities, so it warranted a mention in today’s Drop.

GNU Recutils is a collection of command-line tools and libraries that lets us create and manipulate plain text databases called recfiles. The beauty lies in the format’s simplicity: records are separated by blank lines, with each field starting on a new line consisting of a field name followed by a colon and its value.

Consider this tiny book collection:

Title: Leviathan Wakes
Author: James S. A. Corey
Publisher: Orbit Books
Location: home

Title: The Colour of Magic
Author: Terry Pratchett
Location: loaned

That’s it. No complex setup, no server configuration, no schema migrations — just plain text that’s equally friendly to humans and machines.

Plain text databases offer several distinct advantages:

  • You can edit them with any text editor.
  • They work beautifully with version control systems like Git.
  • Standard Unix tools like grep, awk, and sed can process them.
  • They’re portable across virtually any operating system.
  • The data remains accessible even if the software disappears.

For small to medium-sized datasets, this approach hits a sweet spot between structure and simplicity.

Despite the simplicity of the format, Recutils provides sophisticated tools for managing your data:

  • recsel: Select and query records (like SQL’s SELECT)
  • recins: Insert new records
  • recdel: Delete records
  • recset: Update existing records
  • recfix: Check integrity and fix issues
  • csv2rec/rec2csv: Convert between CSV and rec formats

There’s genuine power hiding behind these minimalist commands. Want to find all loaned books? Simply type:

recsel -e "Location = 'loaned'" -P Title books.rec

The system supports record types, field constraints, encryption of sensitive fields, auto-generated values (like UUIDs and timestamps), and even relational features.

Don’t let the plain text format fool you—Recutils offers sophisticated database features:

  • data types: define fields as integers, dates, enums, and more
  • integrity constraints: ensure data follows your business rules
  • keys and indices: optimize lookup performance
  • auto-generated values: create sequential ids, timestamps, and uuids
  • field-level encryption: protect sensitive information
  • relationships: create foreign keys between record types

This means we can build surprisingly complex data models while maintaining the simplicity of text files, without daft, icky YAML indentation rules, and all of the extra cruft in JSON files.

The GNU Project itself uses recfiles to manage its participation in the Google Summer of Code program.

Recutils is great for:

  • personal collections (books, music, recipes)
  • project management (tasks, bugs, features)
  • simple inventory systems
  • contact management
  • research data collection
  • configuration databases

If you’re on a Unix-like system, installation is typically straightforward through your package manager. Once installed, just create a simple .rec file and start exploring the commands. The learning curve is pretty gentle, especially if you’re already comfortable with command-line tools.

GNU Recutils won’t replace DuckDB, PostgreSQL, etc., but it offers a refreshing alternative for many everyday data management tasks. The approach feels like a return to Unix philosophy: do one thing well, work with plain text, and compose simple tools into powerful workflows.


[Finally] Joplin

Note-taking apss and I have had a love/hate relationship for decades. Back in the day, I was a heavy user of Evernote, but it fell victim to en💩ification, and I became a bit unmoored, floating between one note-app and another. I’ve mentioned in a few Drops that I’ve been using Joplin (GH) — an open-source, cross-platform note-taking application. It was designed for flexibility and extensibility, and supports a wide range of workflows from personal note-taking to managing code snippets, documentation, and even drafting long-form content. It has strong Markdown support, a robust plugin system, and the ability to handle multimedia content such as images, videos, and audio attachments. Joplin also includes robust synchronization options, end-to-end encryption, and a command-line interface for terminal-based usage.

It’s been solid enough that I haven’t even thought of switching from it, but the thought of actually writing about it in more detail for a Drop wads a bit daunting (as that incomplete summary paragraph, above, shows, Joplin has tons of features).

Thankfully, I do not have to write said piece, as Andrea Ciarrocchi has done my job for me in “Taking notes with Joplin”. Andrea starts at Joplin’s inception, walks you through all the features, and is very up front about some of Joplin’s warts (all note-taking apps have some).

It’s a great read and may just convince you to give Joplin a go.


Designing The Dark Arts

The RSS feeds picked up “Inclusive Dark Mode: Designing Accessible Dark Themes For All Users” this past week, and — while we’ve covered design in general, and dark mode specifically, on various occasions, Alex Williams contextualized the accessibility contexts around dark mode super well, and has me re-thinking some choices.

It is very fair to say that dark mode has become nigh ubiquitous across apps and websites, but there’s much more to it than simply inverting colors. As the article reveals, thoughtful dark mode design can be the difference between accessibility and exclusion for many users.

While many of us choose dark mode for its sleek appearance or battery-saving potential, for others dark mode is a bona fide necessity. People with light sensitivity or those working in dimly lit environments can experience significant eyestrain reduction when using properly designed dark interfaces.

However, the article makes a compelling point that dark mode can actually create problems for certain humans. Those with astigmatism may experience text blurring or halation effects that make reading difficult. This tension between different accessibility needs is what makes dark mode design so nuanced.

One key insight from the article is that pure black backgrounds (#000000) often create more issues than they solve. The extreme contrast with white text can cause visual discomfort and reduce readability for many readers. The article suggests alternatives that maintain the dark aesthetic while improving accessibility.

The piece also covers many technical challenges like anti-aliasing issues that can plague dark interfaces, making text appear blurred or creating distracting halos around characters. These details make the difference between a dark mode that helps users and one that creates barriers.

The full article offers practical advice on:

  • choosing the right background colors (hint: dark grays over pure black)
  • selecting appropriate typography for dark interfaces
  • addressing technical challenges like anti-aliasing
  • designing for diverse visual needs including color blindness, cataracts, and night blindness
  • implementing user controls and customization options
  • testing strategies with real users

Alex balances theoretical knowledge and practical implementation advice super well. So, whether you’re a developer, designer, or product manager, you’ll find actionable, practical tips to improve your dark mode implementation.

The article also includes illustrative examples and specific color recommendations that I’ve only hinted at here. For anyone serious about creating truly inclusive dark experiences, the detailed guidance in the full piece is invaluable.


FIN

Remember, you can follow and interact with the full text of The Daily Drop’s free posts on:

  • 🐘 Mastodon via @dailydrop.hrbrmstr.dev@dailydrop.hrbrmstr.dev
  • 🦋 Bluesky via https://bsky.app/profile/dailydrop.hrbrmstr.dev.web.brid.gy

☮️

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.