HNHacker News
TopNewBestAskShowJobs

dougdonohoe

515 karma · joined August 30, 2013

submissionscomments
dougdonohoe··on MinIO Docker images are completely gone
I ended up using Garage to replace MinIO, which I was using in CI for my DD Photos project. I found out MinIO was gone when my scheduled CI failed this morning.

https://github.com/dougdonohoe/ddphotos/pull/110

dougdonohoe··on Show HN: DD Photos App – desktop front end to ddphotos photo album site gen
Discussion of original release of DD Photos: https://news.ycombinator.com/item?id=47322838
dougdonohoe··on DD Photos App – desktop front end to ddphotos photo album site generator
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··on Show HN: DD Photos – open-source photo album site generator (Go and SvelteKit)
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··on Show HN: DD Photos – open-source photo album site generator (Go and SvelteKit)
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··on Show HN: DD Photos – open-source photo album site generator (Go and SvelteKit)
Correct - if the resized image is already there it is skippped (this can be overwritten with -force flag).
dougdonohoe··on Show HN: DD Photos – open-source photo album site generator (Go and SvelteKit)
Thanks, appreciate it. I'll checkout thumbsup too.
dougdonohoe··on Show HN: DD Photos – open-source photo album site generator (Go and SvelteKit)
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··on Things that aren't doing the thing
My question to my team was always "Is it done, or done-done?". Which is another way to say this, I suppose.
dougdonohoe··on AI is making us work more
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··on Fallout from the AWS outage: Smart mattresses go rogue
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··on It's OpenAI's world, we're just living in it
Soylent Green is people!
dougdonohoe··on An opinionated critique of Duolingo
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··on An opinionated critique of Duolingo
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··on What could have been
The point is that money that is going into GenAI or adding GenAI-related features to software should be going to fix existing broken software.
dougdonohoe··on Kodak says it might have to cease operations [updated]
"Doomed from the start" for a 133 year old company seems a bit hyperbolic. They have lasted 13 decades and counting. How many other company started in the 1890s are still around today?
dougdonohoe··on GPT-5
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··on The Italian towns selling houses for €1
Baltimore is in Maryland.
dougdonohoe··on The Curious Case of the Pygmy Nuthatch
Merlin is a great app for identifying birds (via sound and photo). We've used it in Europe, America, Australia and New Zealand. The library of sounds is most thorough in North America.

Fun story!

dougdonohoe··on Ask HN: What are you working on? (April 2025)
I'm writing more software-related articles. Just finished my 2nd in the past month, this one on why you should "always be refactoring."

https://medium.com/@DougDonohoe/ce45d56c8773

Writing well is hard and takes time. Was it Mark Twain that said "If I had more time, I would have written a shorter letter."? I can totally relate to that this month. Getting your point across without being long winded is challenging.

dougdonohoe··on Beyond Agency
Animated background makes this unreadable. Didn't make it past first sentence.
dougdonohoe··on You Don't Have Time Not to Test
Author of the original post here. Thanks for such thoughtful comments and reactions. I'm glad I "stuck a nerve" for at least one person!
dougdonohoe··on Show HN: You Don't Have Time Not to Test
Whoops, my bad.
dougdonohoe··on The Tsunami of Burnout Few See
Amen to this. Of the biggest frustrations I've had in my career, at the top of the list is working with engineers who do not take pride in their craft. I'm amazed at the number of people that just dial it in or make minimal effort. Perhaps some of these people are burned-out, but surely not all.

My goal was to get whatever I was working on not just "done", but "done-done". To a state where, if I walked away, it could live on in a working manner and be easily maintained by someone else. That meant having good test coverage, up-to-date documentation, instructions on how to get started with the repo, notes on dependencies, etc. Sometimes that someone else is future me, six months or six years later.

I experienced burnout early in my career, in the dot-com era, and it became especially acute when then the bubble burst. All those long hours (mostly) for naught.

The best times were at companies where everyone was all-in and we each had each-others back. Rare, but amazing when it happens. These were all at startups.

dougdonohoe··on Show HN: I've open sourced DD Poker
I just added functionality to allow users to specify a DD Poker backend server in the UI (see https://github.com/dougdonohoe/ddpoker/issues/1). This makes it easier for users to connect to a private DD Poker server in their community.
dougdonohoe··on Show HN: I've open sourced DD Poker
In our game, one's are wild unless ones are specifically called. Yes, the loser should go next.
dougdonohoe··on Show HN: I've open sourced DD Poker
I added a `TL;DR` section to the base readme with jus this info.
dougdonohoe··on Show HN: I've open sourced DD Poker
This is fixed. Proper variable is `OSTYPE`, which I've fixed. `OSNAME` is a personal historical artifact.
dougdonohoe··on Show HN: I've open sourced DD Poker
I'll have to fix the OSNAME thing, my apologies. That's an env var I have in my local ".zshrc" I had overlooked. I'll fix it later today.
dougdonohoe··on Show HN: I've open sourced DD Poker
The in-game help explains, which I have a copy here:

https://static.ddpoker.com/gamehelp/help/hostonline.html

Page 1 of 4Next →