{"id":3063,"date":"2025-01-31T19:25:18","date_gmt":"2025-01-31T19:25:18","guid":{"rendered":"https:\/\/andyjohnson.uk\/blog\/?p=3063"},"modified":"2025-01-31T19:25:18","modified_gmt":"2025-01-31T19:25:18","slug":"photos-news","status":"publish","type":"post","link":"https:\/\/andyjohnson.uk\/blog\/2025\/01\/31\/photos-news\/","title":{"rendered":"Photos news"},"content":{"rendered":"\n<p>Herewith a housekeeping announcement about changes to the photo galleries on this site. <\/p>\n\n\n\n<p>Prior to some time in November the photos at <a href=\"https:\/\/andyjohnson.uk\/photos\">andyjohnson.uk\/photos<\/a> were served by an old installation of <a href=\"https:\/\/lycheeorg.dev\/\">Lychee<\/a>. Nice as Lychee is, I&#8217;d grown a little frustrated by the difficulties of uploading photos from my phone. I&#8217;d also, frankly, forgotten how to build Lychee on Windows \u2014 a problem, as I was intermittently aware that the installation was out of date.<\/p>\n\n\n\n<p>So I retired Lychee and, for a while, brought the photos into WordPress and served them using a plug-in called <a href=\"https:\/\/wp-modula.com\/\">Modula<\/a>. This worked fairly well, and Modula is slick and pretty, but in the end I concluded that it wasn&#8217;t the best solution for a couple of reasons:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Modula requires that all photos are stored in the WordPress media library, which lacks a way to group related images into albums. There are various plug-ins that provide a folder-like overlay on-top of the media library, but they don&#8217;t change the underlying organisation of the library. Without using some sort of naming file convention, it looked like it would be difficult to keep things organised.<\/li>\n\n\n\n<li>Modula is primarily designed for ecommerce sites that use images for product information. Its not a good fit for a personal photo gallery.<\/li>\n<\/ol>\n\n\n\n<p>So I looked around at self-hostable photo gallery software that could run on the VPS that hosts this blog: basically a standard Linux\/Apache\/PHP virtual machine with only control panel and ftp access. And after a bit of research I decided to try <a href=\"https:\/\/piwigo.org\/\">Piwigo<\/a>.<\/p>\n\n\n\n<p>I&#8217;d looked at Piwigo several years ago but found it to be clunky and distinctly web 1.0-ish. In the years since it seems to have been successfully dragged into the JavaScript era, and now seemed quite snappy and pretty. It also has an updated Android uploader app. I decided to give it a go using <a href=\"https:\/\/doc.piwigo.org\/piwigo-themes\/bootstrap-darkroom-theme-piwigo\">Bootstrap Darkroom<\/a>, which looked to be the most up-to-date of the various themes that Piwigo supports. I fairly quickly found that it did 90% of what I wanted, but the theme lacked some polish. Piwigo has a nice event-driven extensibility mechanism that allowed me to push this to 95% using just config tweaks, but the theme still lacked one thing I wanted: the ability to show the <a href=\"https:\/\/www.media.mit.edu\/pia\/Research\/deepview\/exif.html\">EXIF description<\/a> or <a href=\"https:\/\/iptc.org\/standards\/photo-metadata\/iptc-standard\/\">IPTC description<\/a> metadata next to the image.<\/p>\n\n\n\n<p>At this point I thought &#8220;<em>hey, I&#8217;m a software developer &#8211; how hard can it be&#8230;<\/em>&#8221; so I forked <a href=\"https:\/\/github.com\/Piwigo\/piwigo-bootstrap-darkroom\">the repo<\/a>. What I should have thought is &#8220;<em>hey, I&#8217;m not a web developer &#8211; this will be hard&#8230;<\/em>&#8220;. But I persevered and got properly familiar with <a href=\"https:\/\/www.npmjs.com\/\">npm<\/a> and <a href=\"https:\/\/yarnpkg.com\/\">yarn<\/a> and <a href=\"https:\/\/sass-lang.com\/\">sass<\/a> and <a href=\"https:\/\/www.php.net\/\">PHP<\/a> and  <a href=\"https:\/\/code.visualstudio.com\/\">VS Code<\/a>, and dug into how to build the five year-old theme code with all its legacy dependencies&#8230; and it wasn&#8217;t easy. But I&#8217;m back now, battle-hardened and glad to be alive, and now I give you my <a href=\"https:\/\/github.com\/andyjohnson0\/dark-aperture-theme\/\">Dark Aperture<\/a> theme for Piwigo:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"547\" src=\"https:\/\/andyjohnson.uk\/blog\/wp-content\/uploads\/2025\/01\/screenshot.png\" alt=\"Dark Aperture theme screenshot\" class=\"wp-image-3065\" srcset=\"https:\/\/andyjohnson.uk\/blog\/wp-content\/uploads\/2025\/01\/screenshot.png 1000w, https:\/\/andyjohnson.uk\/blog\/wp-content\/uploads\/2025\/01\/screenshot-300x164.png 300w, https:\/\/andyjohnson.uk\/blog\/wp-content\/uploads\/2025\/01\/screenshot-768x420.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><figcaption class=\"wp-element-caption\">Dark Aperture theme example screenshot<\/figcaption><\/figure>\n\n\n\n<p>It&#8217;s based on the <a href=\"https:\/\/github.com\/Piwigo\/piwigo-bootstrap-darkroom\">Bootstrap Darkroom codebase<\/a>, with a bunch of enhancements and fixes that are specific to my needs. I make no claims that it is useful to anyone else. My thanks to Thomas Kuther, who wrote the code that I merely adapted and tweaked<\/p>\n\n\n\n<p>The theme&#8217;s name comes from <a href=\"https:\/\/andyjohnson.uk\/photos\">Wide Aperture<\/a>, which is the least-worst name I could come up with for the new Piwigo site running my new theme. I think it looks pretty good.<\/p>\n\n\n\n<p>For the time-being the site has a few albums that are a subset of the photos that were on the old Lychee site. After I&#8217;ve recovered from all this <a href=\"https:\/\/en.wikipedia.org\/wiki\/Web_development\">webdev<\/a> I&#8217;ll upload a better, wider selection.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Herewith a housekeeping announcement about changes to the photo galleries on this site. Prior to some time in November the photos at andyjohnson.uk\/photos were served by an old installation of Lychee. Nice as Lychee is, I&#8217;d grown a little frustrated by the difficulties of uploading photos from my phone. I&#8217;d also, frankly, forgotten how to &hellip; <a href=\"https:\/\/andyjohnson.uk\/blog\/2025\/01\/31\/photos-news\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Photos news&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,64,62],"tags":[65,68,67,66],"class_list":["post-3063","post","type-post","status-publish","format-standard","hentry","category-blogging","category-photography","category-programming","tag-photography","tag-php","tag-piwigo","tag-webdev"],"_links":{"self":[{"href":"https:\/\/andyjohnson.uk\/blog\/wp-json\/wp\/v2\/posts\/3063","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/andyjohnson.uk\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/andyjohnson.uk\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/andyjohnson.uk\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/andyjohnson.uk\/blog\/wp-json\/wp\/v2\/comments?post=3063"}],"version-history":[{"count":6,"href":"https:\/\/andyjohnson.uk\/blog\/wp-json\/wp\/v2\/posts\/3063\/revisions"}],"predecessor-version":[{"id":3070,"href":"https:\/\/andyjohnson.uk\/blog\/wp-json\/wp\/v2\/posts\/3063\/revisions\/3070"}],"wp:attachment":[{"href":"https:\/\/andyjohnson.uk\/blog\/wp-json\/wp\/v2\/media?parent=3063"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/andyjohnson.uk\/blog\/wp-json\/wp\/v2\/categories?post=3063"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/andyjohnson.uk\/blog\/wp-json\/wp\/v2\/tags?post=3063"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}