, 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); })(); Kenneth Erffmeyer | »Æ´óÏɸßÊÖÂÛ̳

»Æ´óÏɸßÊÖÂÛ̳

Skip to main content

Mr. Kenneth Erffmeyer

Vice President for Advancement

Biography

Ken currently serves »Æ´óÏɸßÊÖÂÛ̳ as the Interim Vice President for Advancement, supervising 50 employees. He oversees Calvin’s alumni, parent and community relations department, the January Series program, event services and the development office. Sub-departments within the development office include planned giving, the annual fund, grants and foundations, and advancement services.

Education

  • MBA (1988)&²Ô²ú²õ±è;–&²Ô²ú²õ±è;University of Minnesota Carlson School of Management, marketing
  • BS (1986)&²Ô²ú²õ±è;–&²Ô²ú²õ±è;Calvin College, accountancy

Professional Experience

  • 2024-present – Vice President for Advancement, »Æ´óÏɸßÊÖÂÛ̳
  • 2023-2024 – Senior Gift Officer, »Æ´óÏɸßÊÖÂÛ̳
  • 2021-2023 – Senior Vice President for Advancement, The Fuller Foundation
  • 2008-2021 – Vice President for Advancement, »Æ´óÏɸßÊÖÂÛ̳
  • 2003-2008 – Vice President of Human Resources, Thomson Reuters
  • 1996-2003 – Management Consultant, Deloitte & Touche 
  • 1988-1996 – Manager, Andersen Consulting, Chicago, IL

Professional Associations

Memberships past and present:

  • Calvin Alumni Association Board
  • Board of Directors at Calvin Christian School, Edina, MN
  • Board of Directors at Ada Christian School, Ada, MI
  • Board of Directors at St. Cecilia Music Center
  • Board of Directors of the Barnabas Foundation