Static analysis of expl3 programs (12): Expltools goes to Canada

Last month, I visited Canada for the second time, following my trip to Vancouver during my postgraduate studies for ACL 2017. This time, I first spent five days with my family in Banff National Park and then attended the three-day TUG 2026 conference in Calgary.

At TUG, I presented two talks. The first, titled Expltools: Two years of LaTeX3 static analysis, covered the latest developments in the expltools bundle that I have been blogging about for the past two years.

In this post, I will recount the whole week as I remember it. For more information about TUG, see also the conference program and watch the other talks in this YouTube playlist.

July 10 and 11: From Brno to Banff

On Friday, July 10, I travelled by train from Brno, Czechia, to Prague, where I spent the evening with my brother and mom at Klášterní šenk before spending the night at the Charles University dormitories.

Spending the evening with my brother and mom at Klášterní šenk and tasting their own Benedict Klášterní IPA beer
Image: Spending the evening with my brother and mom at Klášterní šenk and tasting their own Benedict Klášterní IPA beer

Early the next morning, the three of us flew from Prague to Calgary, Canada, via Frankfurt. Despite roughly 14 hours of travel, we arrived in Calgary the same evening because of the time difference.

A horse statue in the hall near Arrival Door 14 at Calgary International Airport
Image: A horse statue in the hall near Arrival Door 14 at Calgary International Airport

From the airport, we took a bus directly to Banff, where we checked in at the Samesun hostel in shared dormitory rooms.

Upon arrival in Banff
Image: Upon arrival in Banff
Me on a bunk bed in a mixed dormitory room shared with about ten other travellers
Image: Me on a bunk bed in a mixed dormitory room shared with about ten other travellers

July 12: Cave and Basin, Cascade of Time Garden, Bow Falls

On Sunday, we explored the town of Banff and its immediate surroundings, visiting the Cave and Basin National Historic Site, the Cascade of Time Garden, and Bow Falls.

Breakfast at Samesun
Image: Breakfast at Samesun
The Cave and Basin National Historic Site
Image: The Cave and Basin National Historic Site
A Columbian ground squirrel eating a petunia at the Cascade of Time Garden
Image: A Columbian ground squirrel eating a petunia at the Cascade of Time Garden
A rainbow above Bow Falls
Image: A rainbow above Bow Falls

July 13: Emerald Lake, Lake Louise, Moraine Lake, and Johnston Canyon Waterfalls

On Monday, we took a guided tour of the “big three” glacial lakes: Emerald Lake, Lake Louise, and Moraine Lake.

A common loon in breeding plumage on Emerald Lake
Image: A common loon in breeding plumage on Emerald Lake

The tour ended at Johnston Canyon, where we left the guided group so that we would have enough time to visit both the Lower Falls and Upper Falls. Afterwards, we returned to Banff by bus.

Johnston Canyon, Lower Falls
Image: Johnston Canyon, Lower Falls

July 14: Banff Wildlife, Sulphur Mountain

On Tuesday, we first took a morning wildlife-viewing tour.

A young mule deer with its antlers still in velvet
Image: A young mule deer with its antlers still in velvet
A golden-mantled ground squirrel
Image: A golden-mantled ground squirrel
A snowshoe hare in its brown summer coat
Image: A snowshoe hare in its brown summer coat

We were lucky enough to spot a grizzly bear mother with three cubs. If only silly old me had thought to bring a long lens for my Canon EOS 80D.

A grizzly bear mother with one of her cubs
Image: A grizzly bear mother with one of her cubs
A grizzly bear mother with two of her cubs
Image: A grizzly bear mother with two of her cubs

In the afternoon, we took the gondola to the top of Sulphur Mountain and back.

A view of the Banff town from the Sulphur Mountain
Image: A view of the Banff town from the Sulphur Mountain
Sunset above the Bow River
Image: Sunset above the Bow River

July 15: Lake Minnewanka, Stewart Canyon, Back to Calgary

On Wednesday, we checked out of the Samesun hostel and took a bus to Lake Minnewanka, where we hiked to Stewart Canyon and back.

A ring-billed gull on Lake Minnewanka
Image: A ring-billed gull on Lake Minnewanka
Stewart Canyon
Image: Stewart Canyon
A Mormon fritillary in Stewart Canyon
Image: A Mormon fritillary in Stewart Canyon

In the evening, we took a bus to Calgary, where we checked in at the conference hotel and venue, Alt Hotel Calgary East Village.

July 16: Calgary Public Library, City Hall, Tower, Peace Bridge, and Chinatown

On Thursday, we spent most of the day walking around Calgary.

Calgary Public Library
Image: Calgary Public Library
Calgary City Hall
Image: Calgary City Hall
A lion statue in front of Calgary City Hall
Image: A lion statue in front of Calgary City Hall
Calgary Tower
Image: Calgary Tower
Peace Bridge
Image: Peace Bridge
A lion statue in Sien Lok Park
Image: A lion statue in Sien Lok Park

In the evening, I attended the reception on the mezzanine of the Alt Hotel, where I greeted Erik Nijenhuis and Frank Mittelbach and met Max Chernoff, Timothy Erickson, and Aarush Bhat in person for the first time.

July 17: The first day of the conference, Calgary ZOO

The first day of the conference was heavily focused on accessibility and PDF/UA-2 compliance in LaTeX and beyond.

Me listening to one of the interesting talks
Image: Me listening to one of the interesting talks | Photo by Frank Mittelbach
A group photo of the TUG 2026 participants
Image: A group photo of the TUG 2026 participants | Photo by Alan Wetmore

My brother and mom spent the day at the Calgary ZOO.

A firefox at the Calgary ZOO
Image: A firefox at the Calgary ZOO

I spent the evening reading through my slides and scribbling notes on my Onyx Boox Max 2 Pro reader in preparation for my two talks scheduled for the next day.

July 18: The second day of the conference, Horseshoe Canyon, Royal Tyrrell Museum, and Willow Creek Hoodoos

The second day of the conference was much richer thematically, moving beyond accessibility to other developments in the TeX world.

In the morning, I gave my first talk, titled Expltools: Two years of LaTeX3 static analysis (see also the presentation slides), in which I discussed the latest developments in my expltools bundle.

Me, explaining new algorithms added to expltools in the past year
Image: Me, explaining new algorithms added to expltools in the past year | Photo by Jim Tubman
Video: “Expltools: Two years of LaTeX3 static analysis” on YouTube

During the coffee break after my talk, I spoke with Matthew Skala, who offers an online machine learning course and was interested in further exploring an experiment that I had presented in Section 4 of my talk.

I also spoke with Mitchell Gerrard, who was interested in the topics from the talk through our shared interest in static analysis of computer programs and later that day gave their own talk on literate programming.

Me speaking with Mitchell Gerrard about static analysis of computer programs
Image: Me speaking with Mitchell Gerrard about static analysis of computer programs | Photo by Pavneet Arora

In the afternoon, I gave my second talk, titled No more backtracking: Abbreviations in the Markdown package for TeX (see also the presentation slides, the preprint, and the finished article in TUGboat 47:2), in which I discussed a new feature in my markdown package for automatically formatting acronyms in Markdown documents.

Video: “No more backtracking: Abbreviations in the Markdown package for TeX” on YouTube

After the talk, I spoke with Erik Nijenhuis and Boris Veytsman, both of whom suggested extracting the underlying algorithm and generalizing it for use in LaTeX documents more broadly. I outlined what this would entail in Section 7, titled Future work, of the TUGboat article.

At the end of the day, the TUG Annual General Meeting took place, chaired by Karl Berry. I also met Karl in person for the first time, despite having corresponded with him for well over a decade.

My brother and mom travelled to Drumheller, where they visited Horseshoe Canyon, the Royal Tyrrell Museum in Midland Provincial Park, and the Willow Creek Hoodoos.

Royal Tyrrell Museum
Image: Royal Tyrrell Museum
Willow Creek Hoodoos
Image: Willow Creek Hoodoos

July 19: The last day of the conference and back to Brno

On the last day of the conference, all three of us checked out at the hotel. In the morning, I attended the remaining talks while my brother and mom played pool in the hotel lobby.

My Ph.D. supervisor Petr Sojka and his student Ondřej Metelka discussing their UTFpatgen program
Image: My Ph.D. supervisor Petr Sojka and his student Ondřej Metelka discussing their UTFpatgen program
 attribution="Jim Tubman" %}
My brother and mom playing pool in the hotel lobby
Image: My brother and mom playing pool in the hotel lobby

After the lunch, I said my goodbyes and we left for the airport.

The flight back to Prague took another 14 hours, but this time the time difference worked against us. We arrived the following morning, and I then took a train to Brno, where I arrived late that same night to my wife and son.

Parting thoughts

This summer was crazy. Starting at the end of June, I attended OSSConf in Slovakia for the first time; thanks to Erik Nijenhuis for inviting the TUG participants to OSSConf 2027 on behalf of Pavel Stříž and me! I then spent a week with my family and in-laws in Central Bohemia before heading to TUG.

Almost immediately after returning home from TUG, I headed to my first international LARP, discussed in a separate blog post, followed by cooking at a summer camp and renovating our own kitchen. Altogether, that made for almost two months of near-continuous social activity, which I found particularly exhausting.

Our kitchen in the middle of renovations
Image: Our kitchen in the middle of renovations

For those reasons, I arrived at TUG 2026 more stressed than usual, and much of the conference passed in more of a blur than I would have liked. Despite that, and despite the many competing experiences, TUG 2026 was still the highlight of my summer. I thoroughly enjoyed it and am looking forward both to future TUG conferences and, perhaps, to seeing more of Canada someday.

Written on September 2, 2026
Last updated on September 2, 2026