Sometimes You Discover Simple by Building Complex First
TLDR: I built a whole web app to review 3800 wedding photos. Iterated on it multiple times. Then realized I could’ve just downloaded the thumbnails using the Google Drive API and used Finder. Sometimes you can’t think your way to simple — you have to build your way there.
🎯 The Problem
My family had ~3800 wedding photos on Google Drive. We needed to narrow it down to ~300 for the album.
Scrolling through Google Drive? Painful. No keyboard shortcuts, slow loading, can’t easily track what you’ve reviewed.
So I thought: let me build something.
🛠️ V1: Tinder for Photos
First idea: a simple web app. Show one photo at a time. Arrow keys to accept/reject. Swipe-style UI.
Built it in a few minutes with Cursor. Worked great… Then I realized: reviewing 3800 photos one-by-one was gonna take forever.
⚡ V2: Grid View + Batch Selection
Okay, let’s speed this up. Added a 4-photo grid view. Keyboard shortcuts (1-4 to select, Space to confirm).
But then portrait photos looked weird in the grid. So I added adaptive layouts — detect orientation, adjust the grid.
Then images were loading slow. So I added preloading, retry logic, smaller thumbnails.
Then I wanted to review my “accepted” photos. So I added browse modes.
You see where this is going. I kept adding features. The codebase grew. 11 commits later, I had a pretty solid app.
(It was actually kinda fun to build, not gonna lie.)
đź’ˇ The Aha Moment
After one review session, I’d accepted ~60 photos from a folder of 400. I wanted to see them all together — make sure my picks looked good as a set.
So I made Cursor write a script to download the thumbnails locally. Opened the folder in Finder.
And then it hit me.
Wait. I could’ve just done this from the beginning.
Download all the thumbnails. Open in Finder. Arrow keys to flip through. Cmd+Delete to trash what I don’t want. Cmd+Z if I mess up.
No web app needed. No JavaScript. No state management. Just… Finder.
🎬 The Final Solution
Deleted the web app. Kept two Python scripts:
fetch_photos.py— Get photo list from Google Drivedownload_photos.py— Download all thumbnails locally
That’s it. 836MB, 3852 photos, downloaded in 2 minutes. Review in Finder. Delete what you don’t want.
Open-sourced it here if you ever need it.
đź§ The Lesson
I spent some time building a web app that I replaced with two scripts and Finder.
Was it wasted time? Honestly… not really.
Here’s the thing: some insights only come from usage. I didn’t know Finder would be enough until I actually tried reviewing photos. The download approach seemed slow initially (it wasn’t). The web app seemed necessary (it wasn’t).
I couldn’t have planned my way to the simple solution. I had to build my way there.
The Balance
With AI making building so fast, it’s tempting to skip planning entirely. Just vibe code it, right?
But planning still matters. Every hour of planning probably saves you tokens and iteration cycles. Don’t skip it.
The trick is: don’t over-optimize architecture early. For simple projects, just build something, use it, and stay open to throwing it away.
The simplest solution might be obvious in hindsight. But sometimes you only see it after building the complex thing first.
Hope this was useful :)
If you’re reviewing a ton of photos from Google Drive, check out photo-reviewer. Two scripts, zero web app, maximum simplicity.