, but this code // executes before the first paint, when

is not yet present. The // classes are added to so styling immediately reflects the current // toolbar state. The classes are removed after the toolbar completes // initialization. const classesToAdd = ['toolbar-loading', 'toolbar-anti-flicker']; if (toolbarState) { const { orientation, hasActiveTab, isFixed, activeTray, activeTabId, isOriented, userButtonMinWidth } = toolbarState; classesToAdd.push( orientation ? `toolbar-` + orientation + `` : 'toolbar-horizontal', ); if (hasActiveTab !== false) { classesToAdd.push('toolbar-tray-open'); } if (isFixed) { classesToAdd.push('toolbar-fixed'); } if (isOriented) { classesToAdd.push('toolbar-oriented'); } if (activeTray) { // These styles are added so the active tab/tray styles are present // immediately instead of "flickering" on as the toolbar initializes. In // instances where a tray is lazy loaded, these styles facilitate the // lazy loaded tray appearing gracefully and without reflow. const styleContent = ` .toolbar-loading #` + activeTabId + ` { background-image: linear-gradient(rgba(255, 255, 255, 0.25) 20%, transparent 200%); } .toolbar-loading #` + activeTabId + `-tray { display: block; box-shadow: -1px 0 5px 2px rgb(0 0 0 / 33%); border-right: 1px solid #aaa; background-color: #f5f5f5; z-index: 0; } .toolbar-loading.toolbar-vertical.toolbar-tray-open #` + activeTabId + `-tray { width: 15rem; height: 100vh; } .toolbar-loading.toolbar-horizontal :not(#` + activeTray + `) > .toolbar-lining {opacity: 0}`; const style = document.createElement('style'); style.textContent = styleContent; style.setAttribute('data-toolbar-anti-flicker-loading', true); document.querySelector('head').appendChild(style); if (userButtonMinWidth) { const userButtonStyle = document.createElement('style'); userButtonStyle.textContent = `#toolbar-item-user {min-width: ` + userButtonMinWidth +`px;}` document.querySelector('head').appendChild(userButtonStyle); } } } document.querySelector('html').classList.add(...classesToAdd); })(); John Calvin’s birthday commemorated with cake, speech, bagpipes? - News & Stories | 鶹

Skip to main content

Calvin News

John Calvin’s birthday commemorated with cake, speech, bagpipes?

Wed, Jul 11, 2018
Connor Bechler

Striding forth from the leftmost chapel doors, John Calvin carried a set of bagpipes on his left shoulder as he approached Scottish theologian John Knox, his fellow reformer, friend, and apparent pipes mentor. Halting besides Knox’s podium, Calvin—played by piper Roger Billings—brought the instrument to his lips and released a salvo of bars from the doxology into the sizable audience.

This was the pinnacle of John Calvin’s 509th birthday celebration, held on the Chapel patio and hosted by the H. Henry Meeter Center for Calvin Studies. Prior to the performance, Knox—channeled by Calvin theological seminary PhD student Jacob Thielman—introduced his co-reformer, noting their shared theological connections and time in Geneva.

In the Calvin community’s more than 25 year tradition of officially celebrating the French theologian, reformer, and pastor’s birthday, this is the first celebration to feature bagpipes, although not for a lack of trying.

“For a long time, I’ve wanted to figure out a way to get bagpipes into the ceremony,” said professor Karin Maag, director of the Meeter Center and organizer of the yearly celebrations. “It can be challenging to keep this event new and fun for people.”

Typically, the birthday party features cake, drinks, and a two-minute speech delivered by a Calvin faculty or staff member in John Calvin’s stead, and is attended by around 100 community members present on campus over the summer. Maag noted that the ceremony has impressed visiting scholars to the Meeter Center, due to its strong attendance and genial atmosphere.

Maag greatly enjoys the tradition: “I like how it brings everybody together on campus; faculty, students, and staff.”