HackerTrans
TopNewTrendsCommentsPastAskShowJobs

dougdonohoe

no profile record

Submissions

Show HN: DD Photos App – desktop front end to ddphotos photo album site gen

github.com
2 points·by dougdonohoe·21 days ago·2 comments

Show HN: DD Photos – static photo albums, now with Docker and 1-command deploy

ddphotos.donohoe.info
4 points·by dougdonohoe·2 months ago·0 comments

iCloud Photo Sharing Sucks – Can AI Help Me Replace It?

medium.com
3 points·by dougdonohoe·4 months ago·0 comments

Show HN: DD Photos – open-source photo album site generator (Go and SvelteKit)

github.com
71 points·by dougdonohoe·4 months ago·22 comments

comments

dougdonohoe
·21 days ago·discuss
Discussion of original release of DD Photos: https://news.ycombinator.com/item?id=47322838
dougdonohoe
·21 days ago·discuss
I was frustrated with photo sharing sites. Apple's iCloud shared albums take 20+ seconds to load, and everything else comes with ads, cumbersome UIs, or social media distractions. I just want to share photos with friends and family: fast, mobile-friendly, distraction-free.

So I built DD Photos, an open-source, self-hosted publishing tool. Example: https://ddphotos.donohoe.info/.

It worked great. The sites are fast, but it was developer-heavy (Go, Node, libvips), so I Dockerized it.

It was still tech-heavy (requiring typing in the Terminal and familiarity with unix commands), so I decided to build a friendly front-end that tries to remove the biggest barriers (e.g., editing YAML, CLI, etc.).

I built it in Java/Swing, leveraging the app engine I built 20+ years ago for DD Poker (https://www.ddpoker.com / https://github.com/dougdonohoe/ddpoker). Not surprisingly, it required a tiny bit of modernization :-)

But I got it done and I think (hope?) it is actually easy enough for non-techies to use it. It's also helpful to techies too (I mean who loves editing YAML?). I use it now (eat/dogfood).

I'm seeking feedback and anyone willing to give it a spin. Works on Mac/Linux/Windows.

Thanks!

Doug
dougdonohoe
·4 months ago·discuss
I had asked about Hugo in the first prompt, and it told me what it was, and then my prompt was:

"Huh, could you build my functionality using Hugo [link to repo]? I mean I'm using dynamic JS features"

And the above was the response. I didn't put more than 10 seconds thought into it. The commenter claimed I could build the site with less code with a tool I had never heard of and I was curious if I had missed something.
dougdonohoe
·4 months ago·discuss
I've never heard of Hugo until I saw subpixel's comment. I was curious and asked Claude if I could have built my site using it. Claude's response:

Short answer: technically yes, but it would be a worse fit and require real workarounds.

Here's why your project strains Hugo's model:

The core mismatch — client-side JSON fetching. Your architecture has photogen generate static JSON index files, and then the SvelteKit frontend fetches those at runtime in the browser. This is intentional — it means the HTML shell is pre-built and tiny, and photo data loads dynamically. Hugo assumes it will have all content at build time and bake it into HTML. Your approach of loading JSON client-side is fundamentally at odds with Hugo's philosophy.

PhotoSwipe lightbox + swipe gestures. This is a JavaScript-heavy component for the full-screen photo viewer with swipe, keyboard navigation, and captions. Hugo doesn't prevent you from using JS, but you'd be bolting it on rather than having it as a first-class part of your component model. Managing that in Svelte components vs. Hugo templates is a real quality-of-life difference.

Shareable photo permalinks (e.g. /albums/patagonia/5) that resolve client-side — this kind of dynamic routing within a static shell is SvelteKit's bread and butter. In Hugo you'd have to either pre-generate a page per photo (slow builds, lots of files) or do ugly JS hacks.

Dark/light theme toggle, justified grid layout, OpenGraph tags — these are all doable in Hugo, but you'd essentially be writing a SvelteKit app inside Hugo's templating language, which is less ergonomic.

The bottom line: Hugo shines when your content is known at build time and the interactivity needs are minimal. Your site has a static shell but runtime-dynamic data loading and a rich JS-driven UI. That's exactly the gap SvelteKit fills. Hugo looks applicable at a glance — but once you look at what the site actually does, SvelteKit is the right call.
dougdonohoe
·4 months ago·discuss
Correct - if the resized image is already there it is skippped (this can be overwritten with -force flag).
dougdonohoe
·4 months ago·discuss
Thanks, appreciate it. I'll checkout thumbsup too.
dougdonohoe
·4 months ago·discuss
No real challenges. I made the Go `photogen` tool run in parallel using goroutines (e.g., 3-6 depending on your CPU). It's pretty fast at churning through hundreds of photos.
dougdonohoe
·8 months ago·discuss
My question to my team was always "Is it done, or done-done?". Which is another way to say this, I suppose.
dougdonohoe
·9 months ago·discuss
I worked in the Bay Area during the dot-com boom and large swathes of time were effectively 996. I was generally irritable, gained a bunch of weight (up to 220; am now 170), and eventually burned out. What was old is now new. Perhaps AI encourages 996'ing, but people will still burn out just the same.
dougdonohoe
·9 months ago·discuss
Feel this. I don't even use Alexa, Siri or Hey Google in my house. My fridge is a fridge and not wifi enabled.
dougdonohoe
·9 months ago·discuss
Soylent Green is people!
dougdonohoe
·10 months ago·discuss
Duolingo makes it hard to ignore - the whole app is gamified. It's like ignoring water while swimming in the ocean. Yes, you can turn off notifications, but sometimes they were helpful.

I think gamification triggers some innate feature of our brain, just like TikTok or Reels or mobile games, etc. It is designed to be hard to ignore.
dougdonohoe
·10 months ago·discuss
I can relate to this post - great thoughts!

I took Spanish in high school and college, so had a rudimentary understanding of verb tenses and some vocabulary. Before I walked the Camino de Santiago el Norte (45+ days in Spain), I used Duolingo to brush up on my Spanish.

It helped my reading most, my speaking a fair amount and my listening/conversation the least. I was able to ask questions, but was often flummoxed at any reply that wasn't the most basic.

I grew to hate the gamification, but was addicted to my "streak' also ... using math lessons when I didn't feel like doing a Spanish lesson. The so-called "leagues" were kind of useless since the same people weren't in the league from week to week. Any friendly competitiveness to "learn more" was lost when randomly assigned to a different group each week.

I finally abandoned the app this spring.

I'm trying Babbel now since I'm going back to Spain for a month and Patagonia next year.
dougdonohoe
·10 months ago·discuss
[flagged]
dougdonohoe
·11 months ago·discuss
I don't have confidence that systems built on top of a specific model will work the same on a higher version. Unlike, say, the Go programming language where backwards compatibility is something you can generally count on (with exceptions being well documented).

I wouldn't want to be in charge of regression testing an LLM-based enterprise software app when bumping the underlying model.
dougdonohoe
·6 years ago·discuss
Um, no. My day starts at 7:30 or 8:00 am. Standup is at 11am. I'm about 1/2 done with the day when standup happens. Other folks on my team start work at 10:00 am, so it's closer to the start of the day. I prefer having 1/2 day to get stuff done by the time standup rolls around.