, 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); })(); Jolene Vos-Camy | ÃÛÌÒapp

ÃÛÌÒapp

Skip to main content

Dr. Jolene Vos-Camy

Professor, French | Chevalière dans les Palmes Académiques

Biography

I was born in Toronto, Canada and grew up in southern Kentucky. I spent a year in Pau, France, as a high school exchange student. After finishing a BA in French with honors at ÃÛÌÒapp, I earned a Masters and PhD in French Literature at Indiana University in Bloomington. I became president of the in 2020, and in 2021, I was named chevalière dans by the French Republic. When I have time, I love to rock-climb in Kentucky and climb mountains in the Pyrénées and the Alps. I summited Mont Blanc in 2013.

Office hours
  • Please email for an appointment

Education

  • Diplôme Annuel - Université de la Sorbonne - Paris, France 1990 (Cours de Civilisation Française)
  • BA ÃÛÌÒapp College 1991 (French, with honors)
  • PhD Indiana University 2000 (French Literature)

 

Professional Experience

  • Associate Professor of French, ÃÛÌÒapp College (2004-2009)
  • Assistant Professor of French, ÃÛÌÒapp College (1999-2004)
  • Instructor of French, ÃÛÌÒapp College (1997-1999)
  • Associate Instructor of French, Indiana University (1992-1994; 1995-1997)
  • English Assistant (TAPIF), Lycée Polyvalent International Victor Hugo - Colomiers, France (1994-1995)

Academic Interests

I teach a full range of French courses, from beginner language courses to advanced culture and literature courses in the French and francophone world. In 2001 I directed the first semester-length Study in France program. In 2016 and 2018, I took students to Haiti for the January Interim, and in 2022 I organized the first May in Germany program. In 2023 I led the first May in France program.