Girasole: Stoll down memory lane with the help of PHP

Maybe because I'm not a coder to begin with, it never ceases to amaze me how much I can accomplish with just a few lines of PHP. Girasole PHP script is a case in point. It's so short and simple that it hardly deserves to be called an application. Yet it fulfills a huge need I've had for quite a while. It may have something to do with age, but the older I get, the more I appreciate the joy of reliving memories through my photos. I'm not keen on uploading my entire library to Google Photos or a similar service to make use of their "photos from the past" functionality. Because 1) pushing several terabytes of data would take forever and a day, 2) would be prohibitively expensive, and 3) I'm not enamored with the idea of entrusting my most private data to a third party, no matter how good their privacy protection track record is.

So a couple of years ago I decided to cobble together a utility that would trawl my entire photo library, find all photos taken on the current day in previous years, and render the results as a simple web gallery. After a few attempts, Natsukashii was born. It was far from perfect: it was way too slow, resource-consuming, and had quite a few dependencies. But it did the job, so I've been begrudgingly using it ever since.

I don't know why it took me so long to arrive at the simple idea of writing something similar in PHP. I whipped up a quick prototype and the preliminary tests were encouraging. Not only was it significantly simpler (a bit over 120 lines of code, in fact), it had only one dependency (the php-exif library). More importantly, and rather unexpectedly, it was blazing fast, zipping through my 10.000+ photo library in a mere minute or two (something that took Natsukashii close to half an hour).

So there you have it: another win for yours truly, who can now relive his happy moments from the past, while yet again appreciating the power and simplicity of PHP. I dubbed the fruits of my labors Girasole (Sunflower in Italian), and if you are interested in trying it yourself, head to the project's GitHub repository.