, 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); })(); Spurring innovation in 24 hours - News & Stories | 鶹

Skip to main content

Calvin News

Spurring innovation in 24 hours

Wed, Mar 27, 2019
Connor Bechler

In a haze of coding, caffeine, circuits, teamwork, snacks, and sleep deprivation, around 120 students from Calvin and other universities worked for 24 hours straight, developing a wide range of software and hardware computing projects. The students were competing in Calvin’s first “hackathon,” a marathon software and hardware development competition held from February 8-9 by the CalvinHacks student organization.

As the sun set on February 9, a team of Calvin students emerged victorious, their project—PlantBit—scoring first place. A combination of a smartphone application, an arduino board, a Google Home, and a moisture sensor, PlantBit allows its user to remotely turn on and off grow lights for their plants, while also providing data on the moisture of the plant’s soil.

“It was inspired by the massive amount of succulents I keep in my room,” said team member Lauren Ebels, a biology Ի major. “I have a whole bunch of grow lights for them, but couldn’t set them to be on when they’d help the plants the most.”

Over the course of the 24 hours, the team divided and conquered: Junior Shion Fukuzawa programmed the remote control iphone app, Seniors David Widjaja, Megan Koh, and Toussaint Cruise set up the hardware and control database, and Ebels connected the Google Home to the control database.

“There’s a sense of accomplishment,” said Fukuzawa, a math major and computer science minor. “At the end you have to submit something no matter what, and the fact that you worked as a team for 24 hours and actually made something is pretty satisfying.”

“CalvinHacks was a really fun event, and was unlike anything I had ever done before” said Caleb Schmurr, a Calvin junior electrical engineering student whose team worked on a project using an e-ink screen to display information from a Google Home.

“I liked getting the chance to spend time working in an environment that encouraged and supported creative uses of technology,” Schmurr added. “We were able to use our programming abilities gained from either coursework at Calvin or other experiences to create a really unique project.”

Among a multitude of other creative submissions, Calvin teams also designed a web-based video game, a sign language video detection user interface, and an app for tracking grocery purchases.