The fifteen-second problem

DHSeaDev — Chrome Extensions & Idle Games

There is a category of work problem that never reaches a roadmap. It is too small to escalate, too frequent to ignore, and too boring to describe out loud without watching people’s eyes go flat. Somebody opens a PDF, opens a second PDF, drags pages from one into the other, saves, closes both, and moves to the next file. Fifteen seconds. Forty if the software is having a day.

Nobody files a ticket over fifteen seconds. That is the trap.

Fifteen seconds, forty times a day, is ten minutes. Ten minutes a day is roughly a working week a year, spent on an operation with no judgment in it and no professional skill being exercised. And the time is the smaller cost. The real cost is that the fifteen seconds sits in the middle of something that does require judgment, and it breaks the thread. You were reviewing a document. Now you are dragging page thumbnails. When you come back, you re-read the last two lines to remember where you were.

So I build small tools for this. Not platforms, not systems. Single-window utilities that do one unglamorous thing correctly and then get out of the way. Three of them are described below, all built for a process-serving office, all in Python, all running locally on the machine where the files already are.

Merging two PDFs without Adobe Acrobat

The premise is deliberately narrow. There is a reference document, a standing exhibit or cover sheet that gets appended to a whole batch of files, and there is a stream of documents that each need it attached.

The interface is two controls. Browse once to pick the reference PDF. Then drag files onto a drop zone, one after another, and each comes back with the reference pages appended. No export dialog, no Save As, no destination folder to navigate, no filename to invent. The original is updated in place, keeping the name it already has, in the folder it already lives in.

That last decision is what makes the tool worth building, and it is also the one that needed the most care. Overwriting in place removes every step after the drop, but it is destructive, and destructive defaults are how someone loses an afternoon of work. So the tool asks. Every drop raises a confirmation naming the file about to be overwritten and the file whose pages are being appended, and it defaults to No. It refuses anything that is not a PDF. It disables the drop zone while it is writing, so a second file dropped mid-merge cannot race the first and produce a corrupt result.

That is the entire design conversation: how do I remove five steps without removing the one moment where a human gets to say “wait, wrong file.”

Worth being clear about what this replaces. Not a bad workflow. A perfectly fine one, in expensive software licensed per seat, that does a hundred things well and this one thing at the speed of a general-purpose application. The tool does not beat it at anything except this. That is the point.

Moving files in bulk by file number

The second problem is a list. Someone has a list of file numbers, from a report or an email or a spreadsheet column, and those files need to move from one folder to another. Fifty of them. Sometimes three hundred.

By hand that means sorting a folder, finding the first number, ctrl-clicking, scrolling, finding the second, and repeating while trying not to lose the selection. Everyone who has done this has lost the selection at item forty.

The tool takes the list as it arrives. Paste the numbers one per line, pick a source and a destination folder, press the button. It prefix-matches each file in the source against the numbers, so the list does not need full filenames, just the number the file starts with, which is what the report gave you anyway. It de-duplicates the list, because pasted lists always contain duplicates. It refuses to run when source and destination are the same folder. It counts the matches and shows that count before touching anything.

Then it moves, and reports back in three buckets: moved, skipped, failed. Skipped means a file of that name already existed at the destination, so it left both alone rather than clobbering one. Failed means the operating system refused, and it names the file and the reason.

Three buckets instead of one matters more than it looks. A tool that says “Done!” after a bulk operation is asking to be trusted. A tool that says “moved 47, skipped 2, failed 1, here is the one” is describing what happened, and that is the only thing that lets someone run it against three hundred files without checking its work afterward.

Renaming files in bulk from a configuration

The third is renaming. Files arrive named however the sender felt like naming them. Downstream, something expects a convention: a number in front, a date in a particular format, a suffix identifying the document type.

The important word is configuration. A rename script that hardcodes one pattern is a script you rewrite every time the requirement shifts by one character, and requirements always shift by one character. Driving the rename from a configuration makes the pattern data rather than code. It can be adjusted by the person who actually knows what the convention is supposed to be, without opening an editor, and a new document type becomes a new entry instead of a new build.

Bulk renaming carries the same hazard as bulk moving, magnified, because a rename applied to the wrong set is hard to reverse: the information needed to reverse it is exactly the information just overwritten. The same discipline applies. Show the intended result before committing. Do not silently overwrite an existing name. Report what actually happened rather than asserting success.

What the three have in common

None of them are clever. That is the feature.

Each collapses a multi-step manual sequence into a single gesture, and each spends its complexity budget in exactly one place: the guardrail around the irreversible step. Overwrite gets a named confirmation. Bulk move gets a count and a same-folder refusal. Bulk rename gets a preview. Everything else is stripped out. No settings screens, no profiles, no onboarding, no login.

A few principles fell out of building them.

  • Fit the shape of the existing habit. The mover accepts a pasted list because a pasted list is what people already have in hand. A tool that requires you to reformat your input first has quietly added a step while claiming to remove one.
  • Report honestly, in categories. “Success” is a claim. “Moved 47, skipped 2, failed 1” is evidence. People calibrate their trust on the second one and eventually stop double-checking, which is the entire return on the tool.
  • Guard the irreversible, not the reversible. Confirmation dialogs on safe actions train people to click through confirmation dialogs. Save them for the action that cannot be undone.
  • Ship one window. A utility that fits on one screen with no scrollbar gets used. The moment it grows a settings tab it starts competing with the general-purpose software it was meant to be faster than.

When a small tool is worth building

The argument against internal tooling is always the same: it is not worth engineering time to save a few seconds. That argument counts the wrong thing. It counts the seconds and misses the interruption, the error rate on repetitive manual work, and the compounding cost of a task that scales linearly with volume in a business that wants volume to grow.

It also misjudges the cost side. These are not big builds. They are a few hundred lines each, with the effort concentrated in the failure modes rather than the happy path, because the happy path for “append a PDF” is genuinely trivial and everything worth paying for is in what happens when the file is locked, or the drop is a Word document, or someone drops a second file while the first is still writing.

The bar is not “will this transform the business.” It is three questions. Does someone do this more than once a week? Does it require no judgment? Does it currently take longer than one gesture? If all three are yes, build it. It will take an afternoon and it will run for years.

The three tools described here ship together as PDF Tools. The same reasoning produced ServeBoard, which is the larger version of the same instinct, and it is the thread running through most of the case studies here. If there is a fifteen-second problem sitting in the middle of your week, it is usually worth an afternoon.

Leave a Reply

Your email address will not be published. Required fields are marked *