How I Spent My Perl Toolchain Summit v2025 (Leipzig)

by · ·12 min read ·2,437 words
Table of Contents

#PTS 2025 in Leipzig

The Perl Toolchain Summit (PTS) is an annual event, held in Europe, where work on improving the Perl toolchain takes place. I was fortunate to be able to attend PTS once again in 2025. We met in Leipzig, Germany. This was my 1st trip to Leipzig and my 10th PTS in total.

The Saarschleife, a hairpin bend in the Saar river

Die Saarschleife — the great bend in the Saar

#Getting There

In 2023, I took my little travel companion along for the ride. In 2024 I flew solo. In 2025 I took a different little travel companion, which evened things out between the two of them nicely.

#A Detour Through Iceland

With my eldest daughter in tow, we decided to make a real trip of it. Having never been to Iceland, I convinced my daughter to add a one day layover in Iceland to the beginning of our trip. She agreed, but only under the following conditions:

  • we would make a stop at the Blue Lagoon and get mud masks
  • we would go ziplining.

After arriving at Keflavik very early in the morning we got our rental car and headed directly to the Blue Lagoon. The rental site had said that the car was small and only big enough for a couple of suitcases. I scoffed at this nonsense which could not possibly be correct. When we found the car I quickly realized that I could fit maybe one suitcase in the trunk and everything else would need to be stacked on the back seat. Thankfully it was just the two of us!

The Blue Lagoon did not disappoint. Aside from the warm water feeling wonderful when contrasted with the cold outside air, this place had the most amazing water pressure in the showers. It was like standing under continuous buckets of hot water. My understanding is that in Iceland neither water nor heat are in short supply, so I felt no compunction about this rare pleasure. The hot water was physically a bit draining after a long flight. The result of that was that I forgot my bathing suit somewhere in the Blue Lagoon. May you rest in peace, blue Speedo jammers. If I’m honest they were probably becoming threadbare and I was doing my local masters swim club a favour by finally upgrading my trunks.

The Blue Lagoon

The Blue Lagoon

We then hopped back in the car to head out towards ziplining. The gorge we would be ziplining over was somewhere on the Golden Circle. I had hoped that my kid would help a little with the navigation, but she really struggled with doing that since she was in possibly the deepest sleep of her life. We drove through the lunar landscape together alone.

Geothermal steam rising from the hills

Geothermal steam on the drive around the Golden Circle

When we arrived for ziplining we confirmed that we would indeed be prone, in the “Superman position”. Not my idea, but if my kid was going to pull all the stops out I would have to follow, even if only for my own self esteem. The drive up to the starting point was basically like going up the side of a cliff on some kind of makeshift road and it was terrifying. I swear the grade was 45 degrees. The young lady who drove the car was enjoying her first day on the job. As we teetered near the side of the gorge and she stalled the manual transmission I took some comfort in the roll bars on the buggy, even if they would offer no support as we careened into the gorge below.

Once we exited the buggy I asserted that I had, thankfully, not evacuated my bowels and with that I climbed the tower we would start from. My daughter thankfully got strapped in by the more experienced help while the newbie fastened my belts and clips. I could not help but wonder if this is how my story would end. I desperately hoped someone would come and check the work of my strapping in, even if I was too proud to ask if this would be the case. I can now announce that the work was, in fact, double checked. I believe there were no corrections to be made, but you just never know.

We ziplined the 1 km above the gorge in parallel. It was supposed to be a race but my daughter immediately was taken by the wind and disappeared in front of me. As I looked down at the water below, I was taken with how quiet and how smooth my last moments on this earth were going to be. I gave myself over to my fate. My life ended up being shorter than I had imagined it would be, but I’d had a good run.

Then, in a stunning twist, I did not, in fact, fall to my death. I was the object of some ridicule because of how much faster my daughter finished, but other than that I was intact with a new appreciation for being dangled above a gorge and also paying for this same privilege.

We continued on the circle, with a stop at Geysir and eventually making our way to our hotel in Reykjavík, through pea soup fog.

Reykjavík’s rainbow street looking toward Hallgrímskirkja

Reykjavík's rainbow street, looking toward Hallgrímskirkja

Hallgrímskirkja lit up at night

Hallgrímskirkja at night

A washroom sign reading “please flush only toilet paper and what nature provides”

Disturbingly specific instructions

We finished our evening with dinner at “The Public House” on the main drag in town and with a walk. We then slept 3 or 4 hours and got back into the car to head back to the airport.

#Family in Saarland

Back at the airport we got on our flight for Frankfurt. Once in Saarland we met up with my sister and my mother. That may sound like nothing special, but the 3 of us (my Mother, my sister and I) have not been together in Germany since I was in the 6th grade, so it was a really special occasion. I got to catch up with lots of family and over the next few days my daughter enjoyed her first trip to Germany. She is 25% German, so it basically had to be done.

An old portrait of an ancestor in Prussian uniform

A bit of family history

#On to Leipzig

After a few days of food, drink and family, the real work was about to begin. We got on a train bound for Leipzig. We had one unscheduled stop due to someone summoning the emergency brake. Shortly after this the train made another unscheduled stop in order to transfer a passenger to a waiting ambulance. Previous to this there had been an announcement asking for any doctors on the train to attend to the passenger. This was then followed by an announcement saying “we now have enough doctors”.

Once we were in Leipzig things got back to a familiar rhythm. First the arrival dinner and then back to bed to prepare for day 1. Not being jetlagged on the first day makes such a huge difference.

The day started with a group run with Shawn and Mickey. This has become a sort of tradition.

A map of a running route through Leipzig

A morning run in Leipzig

The venue was quite nice. There were a couple of levels to choose from and the MetaCPAN crew immediately staked out and then monopolized the top floor. This was really helpful for just general communication and getting stuff done, but I feel like I probably missed out on a lot of other interesting conversations that happened in the other main room below us.

The opening session of PTS 2025, attendees seated in a brick-ceilinged room

Getting started: welcome to PTS 2025 in Leipzig

#The Actual Work

One highlight of Leipzig was being able to work with Mohammad S. Anwar. In person he is just as delightful as one might hope and he picks things up quickly. He was churning out pull requests for MetaCPAN in no time at all.

I probably spent more time on code review and helping other people be productive, but I did get a few things done myself. Maybe the most interesting was introducing the use of Playwright for end-to-end testing on metacpan-web.

At these events there is the work, but there are also the meetings. Lots of little conversations can turn into impromptu breakout sessions in addition to the other meetings that get scheduled ad hoc over the course of the days. As usual I made it a point not to get pulled into meetings so that I could focus on the project. At one point Tib told me he’d be giving a presentation on CPAN, strongly hinting that I should be there. I dodged that meeting entirely, but it was fruitless because he later came to me with his laptop and showed me his slides anyway. It turns out he was correct – I would have benefited from that meeting.

I should also note that this year we held the inaugural edition of The Great PTS CLI Throwdown, which was a great learning experience and a lot of fun.

A highlight of the summit was sitting down and recording an episode of the BooK’s The Underbar podcast with the MetaCPAN gang. In the intervening months I have found myself on more episodes of the podcast. Insert joke about middle-aged man recording a podcast.

Now the hotel room which I shared with my kid was very nice and it looked out onto the same courtyard which our meeting house overlooked. Late one evening there had been a touch of rain and the metal ramp leading up to the meeting space had become slick. My daughter, in our 4th floor room heard an unmistakable crash, followed by a loud, vulgar oath, cried to the heavens. Thereupon immediately followed an announcement on the group Signal chat that the ramp was to be avoided under these wet conditions. It was also confirmed that the bloodcurdling howl which had echoed into the night air was not that of a stranger, but one of our own, who thankfully appeared to have been spared the worst. It was, if you will, the sound of The Flying Dutchman.

Our hotel room in Leipzig

Our room in Leipzig

#A Bit of Leipzig

On the Sunday afternoon my kid and I stepped out to see a bit of Leipzig. She is interested in music, so we went to see the church where JS Bach had once conducted the music. We were fortunate enough to hear the organ play and we then checked out the associated museum. It was well worth it.

The Thomaskirche in Leipzig

The Thomaskirche in Leipzig, where Bach was cantor

#Full Circle in Berlin

Much like the beginning of our trip, we were still trying to see as much as possible. On the Sunday evening we headed out from Leipzig to Berlin. It was already getting dark as we arrived but we found some good Asian food and then walked to the Siegessäule from the Reichstag. It was raining and dark, but a memorable walk I would not want to trade. I know my way around Berlin a tiny bit. I lived there for some months in my early 20s when I was going from door to door offering strangers a free book in exchange for giving up coffee, alcohol and 10% of their income. We’d come full circle by now, though. This time I was enjoying too much coffee, just the right amount of alcohol and doing that with the 10% of my income which I had long been withholding. I have complicated feelings about that time in my life, but I don’t have complicated feelings about Berlin – I love it.

The Siegessäule at night, seen down a wet, tree-lined avenue

The Siegessäule, on a walk in the rain

On Monday morning I headed out for some exercise. I had a scenic run that I also won’t soon forget. I returned to the hotel and then picked up a bunch of junk food for the kid I’d left behind. I also got some fresh raspberries for the present child – it can’t all be unhealthy food.

A map of a running route through central Berlin

My Monday-morning run through central Berlin

The colonnade beside the Alte Nationalgalerie on Museum Island

The colonnade on Museum Island

The Berliner Dom across the Spree

The Berliner Dom on the Spree

A surviving section of the Berlin Wall

A surviving stretch of the Berlin Wall

#The Journey Home

My child happily ate the raspberries, remarking how delicious they were. She was, however, not nearly as enamoured of the berries when we got a second look at them in the car to the airport. The return trip came with little warning and, in the back of a stranger’s car, I found myself doing the only decent thing, allowing my child to vomit into my favourite toque. It was a moment of great loss. My child lost her breakfast and I lost a trusted knit cap. We both mourned.

We flew from Berlin to Keflavik. On the ground in Iceland we wandered through the duty free. Passengers puttered around, generally subdued, which drew a stark contrast to the violence with which a man directly in front of us flatulated in ear-splitting fashion. It was bold. It was brash. It was entirely without apology. (One might even call it cheeky). It was so immediate that I asked my child if the noise had emanated from her. She confessed it had not but that she had wondered the same of me, which I frankly found to be incredibly insulting. After some detective work we had a suspect singled out and gave him a wide berth.

Once we were settled on the plane, I glanced across the aisle and, to my horror, I identified the man with the trouser trumpet, sitting just a few seats away. What followed during our time in the sky was an assault on the senses that was essentially a human rights violation. It came in punishing waves, showing no mercy for anyone within the blast radius. We made it to our destination without permanent injury, if you discount the emotional scarring. Hopefully this man one day finds the help he so richly deserves.

#The Attendees

As pictured below, this year we had Leo Lapworth, Graham Knop, Olaf Alders and Mickey Nasriachi in attendance to work on MetaCPAN. Not pictured is Shawn Sorichetti. He’s missing because this picture is from 2023. ¯\_(ツ)_/¯

We did not miss Shawn Sorichetti this year, because he was able to attend. \o/

the MetaCPAN team Photo © Salve J. Nilsen, 2023, CC-BY-NC-4.0

#The Sponsors

This event wouldn’t take place without the financial backing of our sponsors. I’d like to thank the following donors for allowing this event to happen:

#Monetary Sponsors

Booking.com, WebPros, CosmoShop, Datensegler, OpenCage, SUSE, Simplelists Ltd, Ctrl O Ltd, Findus Internet-OPAC, plusW GmbH

#In-kind Sponsors

Grant Street Group, Fastmail, shift2, Oleeo, Ferenc Erki

#Community Sponsors

The Perl and Raku Foundation, Japan Perl Association, Harald Joerg, Alexandros Karelas (PerlModules.net), Matthew Persico, Michele Beltrame (Sigmafin), Rob Hall, Joel Roth, Richard Leach, Jonathan Kean, Richard Loveland, Bojan Ramsa