commit 4b36b9a68e5ba598aaeacb2a3945b12906bad47b Author: andyeisenberg Date: Sat Aug 8 18:21:12 2026 +0000 Initial commit diff --git a/Eisenberg_CV.pdf b/Eisenberg_CV.pdf new file mode 100644 index 0000000..f708bac Binary files /dev/null and b/Eisenberg_CV.pdf differ diff --git a/headshot_circle_crop.png b/headshot_circle_crop.png new file mode 100644 index 0000000..e30cafc Binary files /dev/null and b/headshot_circle_crop.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..35f34d1 --- /dev/null +++ b/index.html @@ -0,0 +1,59 @@ + + + + + + + Andy Eisenberg - Temple University + + + + + + + + + + +
+ + + + + + + \ No newline at end of file diff --git a/projects/project-template.html b/projects/project-template.html new file mode 100644 index 0000000..ad2d74d --- /dev/null +++ b/projects/project-template.html @@ -0,0 +1,58 @@ + + + + + + Project Name - Andy Eisenberg + + + + + + + + +
+
+

Add Project Title Here

+

Add your project description here. You can include details about what the project does, why it matters, and any links (arXiv, download, GitHub, etc.).

+ +

Details

+

Add subsections as needed. This template supports all the same heading and paragraph styles as the main site.

+ +

Links

+ +
+
+ + + + diff --git a/scripts/assemble.js b/scripts/assemble.js new file mode 100644 index 0000000..4b080f7 --- /dev/null +++ b/scripts/assemble.js @@ -0,0 +1,37 @@ +// Assembles section HTML files into the page. +// Each section is a separate file for easy editing. + +const sections = [ + "sections/header.html", + "sections/about.html", + "sections/teaching.html", + "sections/research.html", + "sections/cv.html", + // "sections/projects.html", + "sections/contact.html", +]; + +async function loadSections() { + const container = document.getElementById("page-content"); + let html = ""; + + for (const section of sections) { + try { + const response = await fetch(section); + if (response.ok) { + const text = await response.text(); + html += text; + } else { + console.warn(`Could not load section: ${section}`); + html += `

Error loading section: ${section}

`; + } + } catch (err) { + console.warn(`Failed to load section: ${section}`, err); + html += `

Failed to load section: ${section}

`; + } + } + + container.innerHTML = html; +} + +loadSections(); diff --git a/sections/about.html b/sections/about.html new file mode 100644 index 0000000..e54a4d0 --- /dev/null +++ b/sections/about.html @@ -0,0 +1,5 @@ +
+

About

+

My name is Andy Eisenberg. I'm currently an Assistant Professor of Instruction at Temple University. I completed + my PhD at Tufts University, working under Kim Ruane.

+
\ No newline at end of file diff --git a/sections/contact.html b/sections/contact.html new file mode 100644 index 0000000..c7f2fa2 --- /dev/null +++ b/sections/contact.html @@ -0,0 +1,20 @@ +
+

Contact

+ +
+ +
+ Department + Department of Mathematics, Temple University +
+
+ Location + Wachman Hall +
+
+
+ + diff --git a/sections/cv.html b/sections/cv.html new file mode 100644 index 0000000..dd18bed --- /dev/null +++ b/sections/cv.html @@ -0,0 +1,7 @@ +
+

Curriculum Vitae

+ + +
diff --git a/sections/header.html b/sections/header.html new file mode 100644 index 0000000..81b209d --- /dev/null +++ b/sections/header.html @@ -0,0 +1,6 @@ +
+ Andy Eisenberg +

Andy Eisenberg

+

Assistant Professor of Instruction

+

Temple University

+
diff --git a/sections/projects.html b/sections/projects.html new file mode 100644 index 0000000..ad6b7f1 --- /dev/null +++ b/sections/projects.html @@ -0,0 +1,12 @@ +
+

Projects

+

Links to projects, packages, and other work I've done:

+ +
+
+

Add Project Title

+

Brief description of the project, what it does, and what it's useful for.

+ Learn more → +
+
+
diff --git a/sections/research.html b/sections/research.html new file mode 100644 index 0000000..49dd8a4 --- /dev/null +++ b/sections/research.html @@ -0,0 +1,39 @@ +
+

Research

+

My research is in geometric group theory, with interests in right-angled Coxeter groups and rewriting systems.

+ +

Selected Publications

+ +
+

Gilman's Conjecture

+

Joint with Adam Piggott. We resolve a conjecture made by Robert Gilman in 1984, showing + that any group presented by a finite, monadic, confluent rewriting system must be a plain group.

+

J. Algebra 517 (2019), 167--185.

+ +
+ +
+

CAT(0) Extensions of Right-Angled Coxeter Groups

+

Joint with Charlie Cunningham, Adam Piggott, and Kim Ruane. We show that any split + extension of a right-angled Coxeter group by a generating automorphism of finite order acts faithfully and + geometrically on a CAT(0) metric space.

+

Topol. Proc., 48 (2016), 277-287.

+ +
+
+

Recognizing Right-Angled Coxeter Groups Using Involutions

+

Joint with Charlie Cunningham, Adam Piggott, and Kim Ruane. We discuss a new method for + constructing candidate right-angled Coxeter presentations for a given group, and we apply this method to + some first examples.

+

Pacific J. Math. 248 (2016), no. 1, 41-77.

+ +
+ + +
\ No newline at end of file diff --git a/sections/teaching.html b/sections/teaching.html new file mode 100644 index 0000000..0736da3 --- /dev/null +++ b/sections/teaching.html @@ -0,0 +1,26 @@ +
+

Teaching

+ + +

Courses

+

Any given course numbers below reflect Temple University course numbering.

+ + + +
diff --git a/style.css b/style.css new file mode 100644 index 0000000..c7c4343 --- /dev/null +++ b/style.css @@ -0,0 +1,386 @@ +/* ===== CSS Custom Properties ===== */ +:root { + --bg: #fafafa; + --bg-secondary: #f0f0f0; + --text: #1a1a1a; + --text-secondary: #555; + --accent: #2c5282; + --accent-hover: #1a365d; + --border: #ddd; + --nav-bg: rgba(250, 250, 250, 0.95); + --shadow: rgba(0, 0, 0, 0.08); + --code-bg: #f5f5f5; + --max-width: 820px; +} + +/* Dark mode via checkbox hack — no JS */ +#dark-mode-toggle:checked ~ label ~ * { + /* We can't easily do sibling traversal into child elements, + so we use a JS-free class toggle approach instead. */ +} + +/* ===== Reset & Base ===== */ +*, *::before, *::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html { + scroll-behavior: smooth; + scroll-padding-top: 3rem; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + font-size: 16px; + line-height: 1.7; + color: var(--text); + background: var(--bg); +} + +/* ===== Theme Switch ===== */ +#theme-switch { + position: fixed; + top: 1rem; + right: 1rem; + z-index: 1000; + width: 48px; + height: 48px; + border-radius: 50%; + border: 1px solid var(--border); + background: var(--bg); + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + transition: background 0.3s, border-color 0.3s; + color: var(--text-secondary); +} + +#theme-switch:hover { + border-color: var(--accent); + color: var(--accent); +} + +#theme-switch .sun-icon { display: none; } +#theme-switch .moon-icon { display: block; } + +/* Dark mode: JS will toggle this class */ +body.dark-mode #theme-switch .sun-icon { display: block; } +body.dark-mode #theme-switch .moon-icon { display: none; } + +/* ===== Navigation ===== */ +#main-nav { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 999; + background: var(--nav-bg); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + border-bottom: 1px solid var(--border); + padding: 0.75rem 0; +} + +#main-nav ul { + display: flex; + justify-content: center; + gap: 0.5rem 1.5rem; + list-style: none; + max-width: var(--max-width); + margin: 0 auto; + padding: 0 1.5rem; + flex-wrap: wrap; +} + +#main-nav a { + text-decoration: none; + color: var(--text-secondary); + font-size: 0.85rem; + font-weight: 500; + letter-spacing: 0.03em; + text-transform: uppercase; + padding: 0.25rem 0; + transition: color 0.2s; + border-bottom: 2px solid transparent; +} + +#main-nav a:hover { + color: var(--accent); + border-bottom-color: var(--accent); +} + +/* ===== Main Content ===== */ +#page-content { + max-width: var(--max-width); + margin: 0 auto; + padding: 0 1.5rem; +} + +/* ===== Section Styling ===== */ +section { + padding: 5rem 0; + border-bottom: 1px solid var(--border); +} + +section:last-child { + border-bottom: none; +} + +section h1, +section h2, +section h3 { + font-family: Georgia, "Times New Roman", Times, serif; + font-weight: 400; + line-height: 1.3; +} + +section h2 { + font-size: 1.8rem; + margin-bottom: 1.5rem; + color: var(--text); +} + +section h3 { + font-size: 1.2rem; + margin-bottom: 0.75rem; + margin-top: 1.5rem; + color: var(--text); +} + +section p { + margin-bottom: 1rem; + color: var(--text-secondary); +} + +section a { + color: var(--accent); + text-decoration: none; + border-bottom: 1px solid transparent; + transition: border-color 0.2s; +} + +section a:hover { + border-bottom-color: var(--accent); +} + +/* ===== Hero Section ===== */ +#page-content > section.hero { + padding: 7rem 0 4rem; + border-bottom: none; + text-align: center; +} + +.hero h1 { + font-size: 2.5rem; + margin-bottom: 0.5rem; + color: var(--text); +} + +.hero .subtitle { + font-size: 1.1rem; + color: var(--text-secondary); + margin-bottom: 0.25rem; +} + +.hero .institution { + font-size: 1rem; + color: var(--accent); + font-weight: 500; +} + +.hero img.headshot { + width: 120px; + height: 120px; + border-radius: 50%; + object-fit: cover; + margin: 1.5rem 0; + border: 3px solid var(--border); +} + +/* ===== Project Cards ===== */ +.project-list { + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.project-card { + padding: 1.25rem; + background: var(--bg-secondary); + border-radius: 6px; + border: 1px solid var(--border); + transition: box-shadow 0.2s, border-color 0.2s; +} + +.project-card:hover { + border-color: var(--accent); + box-shadow: 0 2px 12px var(--shadow); +} + +.project-card h3 { + margin-top: 0; + margin-bottom: 0.5rem; +} + +.project-card p { + margin-bottom: 0; + font-size: 0.95rem; +} + +.project-card a { + display: inline-block; + margin-top: 0.75rem; + font-size: 0.9rem; + font-weight: 500; +} + +/* ===== Links List ===== */ +.link-list { + list-style: none; + padding: 0; +} + +.link-list li { + margin-bottom: 0.75rem; + padding-left: 1rem; + position: relative; + color: var(--text-secondary); +} + +.link-list li::before { + content: "\00B7"; + position: absolute; + left: 0; + color: var(--accent); +} + +.link-list a { + color: var(--accent); +} + +/* ===== Publication Entries ===== */ +.publication-entry { + margin-bottom: 1.25rem; + padding-left: 1rem; + border-left: 3px solid var(--border); +} + +.publication-entry:hover { + border-left-color: var(--accent); +} + +.publication-entry .title { + font-weight: 500; + color: var(--text); +} + +.publication-entry .description { + font-weight: 100; + color: var(--text); +} + +.publication-entry .venue { + color: var(--text-secondary); + font-style: italic; +} + +.publication-entry .links { + margin-top: 0.25rem; + font-size: 0.9rem; +} + +/* ===== Contact Section ===== */ +.contact-grid { + display: grid; + grid-template-columns: 1fr; + gap: 1rem; +} + +.contact-item { + display: flex; + flex-direction: column; +} + +.contact-item .label { + font-size: 0.8rem; + text-transform: uppercase; + letter-spacing: 0.05em; + color: var(--text-secondary); + margin-bottom: 0.25rem; +} + +.contact-item a, +.contact-item span { + color: var(--text); +} + +/* ===== Footer ===== */ +footer { + text-align: center; + padding: 2rem 0; + color: var(--text-secondary); + font-size: 0.85rem; + border-top: 1px solid var(--border); +} + +/* ===== Dark Mode Styles ===== */ +body.dark-mode { + --bg: #1a1a2e; + --bg-secondary: #16213e; + --text: #e0e0e0; + --text-secondary: #a0a0a0; + --accent: #63b3ed; + --accent-hover: #90cdf4; + --border: #2d3748; + --nav-bg: rgba(26, 26, 46, 0.95); + --shadow: rgba(0, 0, 0, 0.3); + --code-bg: #16213e; +} + +body.dark-mode #main-nav { + border-bottom-color: var(--border); +} + +body.dark-mode .project-card { + border-color: var(--border); +} + +body.dark-mode .publication-entry { + border-left-color: var(--border); +} + +body.dark-mode section a { + color: var(--accent); +} + +body.dark-mode section a:hover { + border-bottom-color: var(--accent); +} + +body.dark-mode #theme-switch { + background: var(--bg-secondary); + border-color: var(--border); + color: var(--text-secondary); +} + +/* ===== Responsive ===== */ +@media (max-width: 600px) { + .hero h1 { + font-size: 1.8rem; + } + + section h2 { + font-size: 1.4rem; + } + + #main-nav ul { + gap: 0.25rem 0.75rem; + } + + #main-nav a { + font-size: 0.75rem; + } +}