Linux Lawyering

Running a solo law practice on open source software.

Batch OCR for Scanned Exhibits on Debian

My PDF workflow post ended with OCR as one of the things I need from a PDF tool. Master PDF Editor can OCR a document, but it does one document at a time. That’s fine for a single contract. It’s miserable for a folder of scanned exhibits. Scanned exhibits come in piles. A recent matter had a folder of image-only PDFs: check images, tax returns, a letter that somebody faxed in. I don’t want to open each one, click OCR, and wait. I want to point a tool at a folder and come back later. ...

October 14, 2026 · J Robinson

How This Blog Uses AI

When I started Linux Lawyering, the plan was simple: written by a human, for humans. I typed every word of the early posts myself, and I liked it that way. But that plan ran into my calendar. I run a solo practice, and that comes first. The homelab, the PDF experiments, and the failed driver installs kept piling up faster than I could write them up. So the backlog grew while the blog sat quiet. ...

October 14, 2026 · J Robinson

Is Your Backup Actually Working?

A green checkmark tells you a backup job exited cleanly. It doesn’t tell you the backup exists, is recent, or can be restored. Those are three different questions, and I only started asking them on a schedule last month. I’m a lawyer, and client files are the one thing I can’t lose. I’m not going to cite you a rule here; you know your own jurisdiction’s duties better than I know them. But the common-sense version of the duty to safeguard client data surely includes knowing whether your safeguards work. “The job didn’t complain” is a weak answer to “how do you know?” ...

October 14, 2026 · J Robinson

Managing Gmail Filters as Code with gmailctl

Gmail filters work fine until they don’t. You set up a rule to label court notices, another to archive newsletters, and a third to keep vendor invoices out of the way. A year later nobody remembers what each rule does, and the one you added last spring is quietly archiving replies from your own colleagues. I wanted the firm’s filters in a file I could read, diff and version. The tool I landed on is gmailctl, a command-line program that reads a config file and pushes the result to Gmail through Google’s API. ...

October 14, 2026 · J Robinson

Master PDF Editor Won't Come Forward on Wayland

In the PDF workflow post, I said I was test driving Master PDF Editor. My complaints there were about scrolling and page views. This one is about the window itself, and it’s a bigger problem for anyone who opens files all day. What broke I run Debian Trixie with GNOME on Wayland, and I installed Master PDF Editor as a Flatpak. If Master PDF is already open and I open a second PDF from the file manager, the file loads. The Master PDF window doesn’t come to the front. It stays behind whatever I was working in, and I have to Alt+Tab or click the taskbar to find it. ...

October 14, 2026 · J Robinson

Paperless-ngx vs. Papra: Trialing Two Self-Hosted Document Managers

I’m trialing two self-hosted document managers side by side, and I don’t have a winner. The trial is ongoing. What I do have is a build that works, a few lessons about AI-assisted filing, and a failure that taught me something about how Linux treats dependencies. Why two A law office is a paper-and-PDF factory. I want scans and incoming documents to land somewhere, get OCR’d, get titled and tagged, and be searchable later, without paying a monthly fee to a cloud vendor who then holds my files. ...

October 14, 2026 · J Robinson

Self-Hosting Stirling PDF as an Office PDF Toolbox

I’ve written before about replacing Acrobat on Linux. The desktop editors handle the daily work. But there’s a pile of jobs that aren’t daily and aren’t pretty: merging a hundred exhibits, compressing a file so the court’s portal will take it, redacting, converting a Word file back and forth, running OCR on a bad scan. So I put a PDF toolbox on the network and open it in a browser. It’s called Stirling PDF. ...

October 14, 2026 · J Robinson

Trimming a Brief to the Word Limit

A recent appellate reply brief of mine started at 10,881 words. The cap under URAP 24(g) is 7,000. That’s a lot of brief to lose, and I didn’t want to lose it by hand—or by letting an AI quietly rewrite my work. So I used AI to propose cuts, built a small tool to review them safely, and found that the biggest savings didn’t come from cutting at all. Here’s what worked, what broke, and what I’d do again. ...

October 14, 2026 · J Robinson

Two Vaults, AI, and Client Confidentiality

My AI-assisted knowledge base is split in two on purpose. Legal and professional knowledge lives in one vault, homelab and personal stuff lives in another, and client casefiles live in neither. The split exists mostly because of confidentiality, and it took me a while to see that. What a vault is, here A “vault” is just a folder of plain Markdown files. I view it in Obsidian, but nothing depends on Obsidian. The files sit on my own server, under Git, and get replicated to a second machine every day. No subscription, no proprietary database, no export button to hunt for. ...

October 14, 2026 · J Robinson

Writing a Brief in Markdown

I drafted a recent Utah reply brief as a pile of Markdown files instead of one Word document. Some of it worked well. Some of it bit me. And one problem, what to name the files, is still open. This is one brief’s experience, not a standard I’ve adopted. I have a design for a fuller Markdown drafting setup, but as of today it’s a proposal. It isn’t what I used here. ...

October 14, 2026 · J Robinson