By this point in the pipeline, the boring parts are done. New files have been copied to the cutting board. I’ve picked out the ones that are my daughter. What’s left is the step that turns “a pile of selected files” into “a browsable month in her archive.”

That’s one button. By now the picker has already moved my chosen files into a hand-off folder. In the app’s My Records tab, there’s a count of what’s waiting in that folder, and next to it a button that says, in effect, bring these in. I press it, and the rest happens on its own.

What the Button Does

Press it and, for every file waiting in the hand-off folder:

  • Videos get converted to a smooth, browser-friendly streaming size — H.264, 720p, quick-start — using ffmpeg. (The why is the last post: so they play everywhere and don’t buffer.)
  • Photos get resized down from their full camera resolution to something sensible for a tablet.
  • Everything gets filed into the right place: Year → Month, based on the date in the file’s name.

When it finishes, the month it filed into now has those new files, and the count resets to zero. My mother taps that month tonight and the new videos are just there.

Why the Count Matters

That little number next to the button — “12 files ready” — does more than it looks like.

It’s the one place in the whole pipeline where I see, at a glance, there’s new stuff to bring in. Backup is silent. The hourly check is silent. The picker is a deliberate visit. But the count is a gentle nudge on the tab I open anyway: something’s waiting.

It also closes the loop honestly. If I selected 12 files and the count says 12, then 0 after import, I know it worked. No guessing whether the transcode finished — the number tells me.

The “Sort by Month” Trick

Filing into Year → Month sounds like it needs a clever date engine. It doesn’t. The date comes straight from the file name.

Phone cameras name files with the date they were taken — year, month, day, all in the name. So “which month does this belong to?” is just reading the first eight digits of the file name. No metadata database, no date-guessing logic. The file name is the source of truth.

I learned to trust only the file name the hard way. Early on I tried to be clever and fall back to a file’s “modified date” when the name had no date. That produced nonsense — files landing in the wrong year entirely, because a “modified date” gets rewritten by things like re-downloading from a chat app. So the rule became strict and simple: if the name has a real date, use it; if it doesn’t, don’t guess. Boring, and correct.

“It Didn’t Work” vs “It Wasn’t Done Yet”

One honest note about the hand-off between the picker and this button. When I first moved files along, they seemed stuck — they didn’t clear when I expected. I assumed a bug.

They weren’t stuck. Video was just slow. A thumbnail and a transcode both lean on ffmpeg, and on a small NAS a video takes real seconds. The file was mid-conversion when I checked; a moment later it cleared fine. Nothing was broken — I was just faster than the machine.

It’s a small thing, but it caught me more than once: with video in the loop, “it didn’t work” and “it wasn’t done yet” look identical for a few seconds. Now I wait for the count to settle before deciding anything’s wrong.

The Shape of It

This button is where the pipeline pays off. Every stage before it exists so that this one press can be trivial: shrink, sort, done. No file names to type, no folders to choose, no format to worry about. Select the moments; press the button; watch them tonight.

The next posts step back to look at how the archive itself is organized — starting with the fact that there’s no database at all.