Only to then realise that naive flock() won't cut it on your basic NFS setup so you resort to bizarre tricks like using hard links to the lock file to emulate proper locking on NFS because they can tell you which of the racing clients won.
Those were good times... right?
cgic was a great library, even if it was still excruciatingly tedious to write. I'm not entirely certain whether I discovered cgic or Perl first, but I know which one I preferred writing.
1. with 1777 permissions (sticky bit set); and
2. rsynced between a cluster of systems;
and you've got a modern Function-as-a-Service backend.