This is the Dockerfile to install OCI8 in FrankenPHP using the new official installer for PHP extensions PIE, which replaces PECL (deprecated now). The recipe can be easily adapted for any docker installation of PHP OCI8 using PIE:
Continue reading “FrankenPHP: Install OCI8 using PIE”Best of Both Worlds: Running a Shared Lightroom Catalog across Linux and Windows
Adobe Lightroom Classic runs fine in a Virtual Machine (VM) on Linux for basic culling and editing. But heavy, GPU-based tasks like AI Denoise take a long time, because they have to run fully on the CPU instead. On my Intel Core i7 Gen 13 under Windows with a GeForce RTX 4070 Ti Super, de-noising a Nikon NEF with 45.7MP takes about 6s, in the VM it takes 15min—or about 150 times longer! Also having the catalogue and the images isolated inside the VM is not very practical.
Continue reading “Best of Both Worlds: Running a Shared Lightroom Catalog across Linux and Windows”Hummingbird Photography in Costa Rica
I participated in a twelve-day photo workshop led by Greg Basco and Paolo Valerio from Foto Verde Tours with a focus on multi-flash hummingbird photography in Costa Rica from 6 to 12 February, 2026.

Nikon Z8 with NIKKOR Z 400mm ƒ/4.5 VR S, exposure 1/200s at ƒ/11 and ISO 320 using a multi-flash setup.
During the workshop, we visited four different habitats: the Atlantic rainforest and the wetlands of Caño Negro, both bordering Nicaragua, as well as the cloud forest in the Central Volcanic Mountain Range and the Elfin forest of the Talamanca Mountains.
Continue reading “Hummingbird Photography in Costa Rica”Night Walk Flash Photography in Cost Rica
All photos were taken on a single night walk in situ in Drake Bay, Costa Rica on 22 February, 2026.

My wife and I met our tour guide Karen from https://osaoutdoorsadventures.com/ in Drake Bay early evening to get a potential head-start of other groups. Luckily, we were the only guests, so our group size was minimal. The night walk led us up a creek, mainly in the river bed. My wife wore the rubber boots given by Karen; I had my Guyana-proven jungle boots on.
Continue reading “Night Walk Flash Photography in Cost Rica”Twig tip: Ternary operator with an undefined variable
You can use the default filter in combination with the ternary operator :? on a variable within a Slim Twig template when the variable is undefined:
{{ myVar|default ? '' : ' class="myClass"'}}
or in an if statement:
{% if myVar|default %}
...
{% endif %}
When the variable is undefined and should not be an empty string:
{{ myVar|default('') == '' ? '' : ' class="myClass"'}}
Twig tip: How to access the query string
You can access the query string from a Slim Twig template by using the get_uri() method:
{% set query = get_uri().getQuery() %}
{% set query = query|length ? '?'~query : '' %}
Use Proton Drive on Linux
You can use rclone to sync your data with Proton Drive and vice versa. But the chances are high, that you also have Proton VPN, which ironically will not let you use access your Proton Drive through VPN! But there is a simple solution. You can use rclone’s --bind argument with your local IP address to bypass the VPN.
The following synchronizes the remote drive with the local drive in home:
rclone sync ProtonDrive: ~/ProtonDrive/ --verbose --bind 192.168.1.xy
Use esbuild instead of uglifyjs-folder and csso-cli
You can use the superfast esbuild instead of uglifyjs-folder and csso-cli to copy (and minify) your JavaScript and/or CSS files (without having to bundle the files) in your npm scripts.
Continue reading “Use esbuild instead of uglifyjs-folder and csso-cli”Use Lightroom on a mapped network drive (on Linux with VirtualBox)
If you try to open a catalog stored on a network drive, Adobe Lightroom will complain about “Lightroom can not be opened on network volumes, removable storage or read on read only volumes.” You can easily overcome this by assigning the network drive to a drive letter using the subst command:
C:\Windows\System32\subst.exe L: \\ERITHACUS\IMAGES
This is especially useful if you want to run Lightroom on Linux in a virtual Windows machine with VirtualBox, but want to keep your photos on a mounted drive (in my case /media/simon/IMAGES).
Setup folder sharing in VirtualBox
First you need to add your mounted image folder to VirtualBox as a shared folder:

Create responsive images on the fly with php and Imagick
To improve paging loading performance across multiple devices, web developers can provide each image in different resolutions using the srcset attribute and let the browser choose which one to load e.g.:
// on the page, where we want to display the image e.g.,
// index.php
<figure><img src="images/photo-1200.jpg"
srcset="images/photo-1200.jpg 1200w,
images/photo-1024.jpg 1024w,
images/photo-800.jpg 800w,
images/photo-600.jpg 600w" width="1200" height="800">
<figcaption>the description of the photo</figcaption>
</figure>
Continue reading “Create responsive images on the fly with php and Imagick”