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

ÃÛÌÒapp

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); })(); Loren Haarsma | ÃÛÌÒapp

ÃÛÌÒapp

Skip to main content

Dr. Loren Haarsma

Associate Professor

Education

  • BS physics and mathematics, ÃÛÌÒapp College, 1985
  • MS physics, University of Washington, 1987
  • PhD physics, Harvard University, 1994

    Professional Experience

    • Associate professor, ÃÛÌÒapp College, 1999–present
    • Post-doctoral research in neuroscience, University of Pennsylvania, 1997–1999
    • Post-doctoral researcher in neuroscience, Tufts University, 1994–1997.

    Academic Interests

    I teach all areas of undergraduate physics, with a particular interest in quantum mechanics and biophysics. I also study issues at the intersection of science and Christian faith.

    Learn more about my latest book here:

    When Did Sin Begin cover.jpg

    Research

    I use a technique called electrophysiology to attach tiny electrodes to cells and measure the flow of electrically charged ions through the membranes of living cells. Working with collaborators, I have several ongoing projects. One recently completed project with John Ubels (Biology) studied how high levels of potassium ions in tear fluid helps project cells on the surface of the eye from UV damage, and investigated the early steps of how UV radiation damages these cells. A new project with Paul Harper (Physics) will use ion channels in artificial lipid membranes to study the biophysics of lipid molecules

    I am currently working on a book project on human evolution and the doctrine of original sin.