, 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); })(); Old classics meet modern technology at CCEL - News & Stories | 麻豆区

麻豆区

Skip to main content

Calvin News

Old classics meet modern technology at CCEL

Tue, Aug 13, 2013
Grace Ruiter

Five-hundred-year-old hymns meet 21st century technology in Hymnary.org鈥檚 first iPad app, which is set to launch in late October. Calvin computer science students working for and its mother site, the (CCEL), are helping develop it.

鈥淸The app] is basically a digital version of a hymnal,鈥 explained sophomore Tyler Dougherty, who has done most of the programming for the app.

But the app is more than just an electronic version of grandma鈥檚 hymnal.

A new kind of hymnal

鈥淸Using the app], you can play music along with hymns, find information about the hymn鈥檚 history and search through the hymns,鈥 Dougherty noted, adding, 鈥淭here鈥檚 also a tool called flexscore, which allows you to make the hymn text bigger, change the size of the music and change the key of a song for different instruments. 鈥

The app鈥檚 blend of classic hymns and new technology builds on the efforts of both Hymnary.org and CCEL to bring hymns and theological classics to the masses through modern technology.

Classics in the digital age

Founded by computer science professor Harry Plantinga in 1993, the CCEL website offers free access to over 1,000 religious classics. CCEL also sells the classics in a number of other formats. Like Hymnary.org, its most recent focus has been on the iPad market.

Launched by CCEL in 2007, Hymnary.org is a searchable hymn database of more than a million songs. The site features not only the text and music, but also composer information, alternate versions of texts and extensive historical information on many hymns.

Always improving

In addition to the iPad app, the five student employees at CCEL and Hymnary.org this summer are working to make both of these sites more user-friendly and efficient.

Calvin senior Will Groenendyk is modifying the search process on the CCEL website so information about authors is more accessible.

鈥淲hat鈥檚 cool about the new author pages is that if you enter the author鈥檚 ID, everything about them automatically pops up,鈥 he said.

A great opportunity

Groenendyk, who hopes to pursue a career in software programming when he graduates, feels working at CCEL this summer has helped prepare him for that career.

鈥淚鈥檝e learned so much,鈥 he said. 鈥淵ou learn a lot of theory in the classroom, but I learned a lot of practical stuff [working at CCEL]."

While Dougherty is less sure of his career plans, he appreciated the experience as well.

鈥淚 think I have a better grasp of what a real world job in day-to-day programming is like,鈥 he said. 鈥淚t鈥檚 a lot different than classes.鈥

Groenendyk also enjoyed being able to use his skills for a Christian cause.

鈥淚t鈥檚 been amazing,鈥 Groenendyk reflected. 鈥淭he last few summers I鈥檝e worked at public schools, so to be able to work in a Christian setting with all Christian people is awesome.鈥

Help from unexpected places

While CCEL and Hymnary.org depend on computer science students like Dougherty and Groenendyk for technological help, students from different majors have helped CCEL expand its ministry in other ways.

When CCEL started offering Kindle versions of their books, they needed someone who was familiar with the texts to write book descriptions. So they hired . CCEL has also worked with , using them as voice actors when they added audiobooks to their offerings.