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

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

Skip to main content

Dr. Joel H. Westra

Department Chair, Professor, Director, Pre-Law Program

Biography

Prof. Westra joined the Calvin faculty in 2007 and has directed Calvin’s Pre-Law Program since 2008. His teaching and research interests intersect the fields of international relations, international law, and US foreign policy. 

In addition to his professional scholarship, Prof. Westra regularly offers commentary on international politics and foreign policy for local and national news outlets. 

Outside of academia, he enjoys traveling, cooking, and dining out with his family, working out, playing the piano, and renovating his Prairie Style home in East Grand Rapids with his wife, Julie.

Education

  • B.A., Political Science, University of Houston
  • M.A., Social Sciences, The University of Chicago
  • Ph.D. Political Science, The University of Chicago

Professional Experience

  • Professor of Politics (2024–present)
  • Associate Professor of Politics, »Æ´óÏɸßÊÖÂÛ̳ (2012–2024)
  • Assistant Professor of Politics, »Æ´óÏɸßÊÖÂÛ̳ (2007–2012)
  • Post-Doctoral Fellow, John G. Tower Center for Political Studies, Southern Methodist University (2005–2007)
  • Visiting Lecturer, Committee on International Relations, The University of Chicago (2004– 2005)

Academic Interests

Prof. Westra's teaching and research interests include international organizations and law, international security, international relations theory, and US foreign policy. His research focuses on multilateral and regional security institutions as instruments of international order, specifically on questions pertaining to institutional design and to mechanisms of legitimation and restraint on the use of armed force within the international system.

Awards

  • Exceptional Service Award (2024)
  • »Æ´óÏɸßÊÖÂÛ̳ Advising and Mentoring Award (2019)

Publications

Research and Scholarship