Added resume and developer pages.

This commit is contained in:
JesseBrault0709 2024-06-14 16:33:20 +02:00
parent ad55d30a73
commit eff03cfd43
12 changed files with 275 additions and 48 deletions

View File

@ -10,18 +10,15 @@ import jakarta.inject.Named
class Header extends BaseWebViewComponent {
final String siteName
final String siteTagLine
final List<Page> menuItems
@Inject
Header(
@Named('siteName') String siteName,
@Global('siteTagLine') String siteTagLine,
@Global('menuItems') List<String> menuItems,
@InjectPages('/*') Set<Page> allPages
) {
this.siteName = siteName
this.siteTagLine = siteTagLine
this.menuItems = menuItems.collect { menuItem ->
allPages.find { it.name == menuItem }
}

View File

@ -6,7 +6,6 @@ import com.jessebrault.site.icon.BarsIcon
<header id="header">
<div class="titles">
<h1>$siteName</h1>
<h2>$siteTagLine</h2>
</div>
<nav>
<button id="nav-bars" class="bars-wrapper">

View File

@ -0,0 +1,38 @@
package com.jessebrault.site.developer
import com.jessebrault.site.util.TitleMaker
import com.jessebrault.ssg.di.InjectText
import com.jessebrault.ssg.di.SelfPage
import com.jessebrault.ssg.page.Page
import com.jessebrault.ssg.page.PageSpec
import com.jessebrault.ssg.text.Text
import com.jessebrault.ssg.view.WvcPageView
import jakarta.inject.Inject
@PageSpec(name = 'Developer', path = '/developer')
class DeveloperPage extends WvcPageView {
final Text developer
final Page selfPage
private final TitleMaker titleMaker
@Inject
DeveloperPage(
@InjectText('/Developer.md') Text developer,
@SelfPage Page selfPage,
TitleMaker titleMaker
) {
this.developer = developer
this.selfPage = selfPage
this.titleMaker = titleMaker
}
String getTitle() {
titleMaker.makeTitle(pageTitle)
}
String getDescription() {
developer.frontMatter.description
}
}

View File

@ -0,0 +1,34 @@
package com.jessebrault.site.resume
import com.jessebrault.site.util.TitleMaker
import com.jessebrault.ssg.di.InjectText
import com.jessebrault.ssg.di.SelfPage
import com.jessebrault.ssg.page.Page
import com.jessebrault.ssg.page.PageSpec
import com.jessebrault.ssg.text.Text
import com.jessebrault.ssg.view.WvcPageView
import jakarta.inject.Inject
@PageSpec(name = 'Résumé', path = '/resume')
class ResumePage extends WvcPageView {
final Text resume
final Page selfPage
private final TitleMaker titleMaker
@Inject
ResumePage(@InjectText('/Resume.md') Text resume, TitleMaker titleMaker, @SelfPage Page selfPage) {
this.resume = resume
this.titleMaker = titleMaker
this.selfPage = selfPage
}
String getTitle() {
titleMaker.makeTitle(pageTitle)
}
String getDescription() {
resume.frontMatter.description
}
}

View File

@ -0,0 +1,21 @@
---
package com.jessebrault.site.developer
import com.jessebrault.site.StandardPage
import com.jessebrault.site.util.OpenGraph
---
<StandardPage
title={title}
description={description}
openGraph={<OpenGraph
title={pageTitle}
description={description}
path={selfPage.path}
/>}
>
<div class="article-container">
<article id="developer-article">
<Render item={developer} />
</article>
</div>
</StandardPage>

View File

@ -0,0 +1,21 @@
---
package com.jessebrault.site.resume
import com.jessebrault.site.StandardPage
import com.jessebrault.site.util.OpenGraph
---
<StandardPage
title={title}
description={description}
openGraph={<OpenGraph
title={pageTitle}
description={description}
path={selfPage.path}
/>}
>
<div class="article-container">
<article id="resume-article">
<Render item={resume} />
</article>
</div>
</StandardPage>

View File

@ -14,7 +14,7 @@ build {
basePackage 'com.jessebrault.site'
globals {
siteTagLine = 'Conductor, Composer, Developer'
menuItems = ['Biography', 'Compositions', 'Videos', 'Lessons', 'Contact']
menuItems = ['Biography', 'Compositions', 'Videos', 'Lessons', 'Résumé', 'Developer', 'Contact']
compositionCategories = ['Orchestra', 'Chamber', 'Solo', 'Wind Ensemble']
spotifyUrl = 'https://open.spotify.com/artist/4ea1gZnLlQTrXKIMsnlr45?si=DfR-KCDyTiycbjmYwu566w'
youtubeUrl = 'https://www.youtube.com/@JesseBrault0709'

View File

@ -50,10 +50,6 @@ header .titles h1 {
letter-spacing: 0.1em;
}
header .titles h2 {
display: none;
}
nav .bars-wrapper {
background: none;
padding: 0;
@ -481,13 +477,6 @@ form.contact {
padding-inline: 30px;
}
header .titles h2 {
display: unset;
font-size: 2em;
font-size: 18px;
letter-spacing: 0.15em;
}
.banner,
.landscape-banner {
flex-direction: unset;
@ -569,22 +558,6 @@ form.contact {
}
}
@media screen and (max-width: 1023px) {
nav ul {
position: absolute;
left: 0;
z-index: 1;
width: 100%;
display: none;
flex-direction: column;
align-items: center;
row-gap: 10px;
padding: 20px;
background-color: var(--petrol);
border-bottom: 1px solid var(--charcoal);
}
}
@media screen and (min-width: 1024px) {
header {
align-items: center;
@ -596,18 +569,6 @@ form.contact {
letter-spacing: 0.175em;
}
header .titles h2 {
display: none;
}
nav .bars-wrapper {
display: none;
}
nav ul {
display: flex;
}
.banner,
.landscape-banner {
padding: 0 50px 50px;
@ -644,9 +605,29 @@ form.contact {
}
}
@media screen and (max-width: 1199px) {
nav ul {
position: absolute;
left: 0;
z-index: 1;
width: 100%;
display: none;
flex-direction: column;
align-items: center;
row-gap: 10px;
padding: 20px;
background-color: var(--petrol);
border-bottom: 1px solid var(--charcoal);
}
}
@media screen and (min-width: 1200px) {
header .titles h2 {
display: unset;
nav .bars-wrapper {
display: none;
}
nav ul {
display: flex;
}
.contact-banner svg {

View File

@ -15,7 +15,7 @@ window.addEventListener('load', () => {
const navItems = document.getElementById('nav-items')
const toggleMenu = () => {
if (window.matchMedia('screen and (max-width: 1023px)').matches) {
if (window.matchMedia('screen and (max-width: 1199px)').matches) {
if (navItems.style.display === 'flex') {
navItems.style.display = 'none'
} else {

View File

@ -1,6 +1,6 @@
const addResourcesToCache = async () => {
const cache = await caches.open('v1')
cache.addAll(['/', '/compositions', '/videos', '/lessons', '/contact'])
cache.addAll(['/', '/compositions', '/videos', '/lessons', '/resume', '/developer', '/contact'])
;[
'https://jessebrault.nyc3.cdn.digitaloceanspaces.com/images/portrait1.jpg',
'https://jessebrault.nyc3.cdn.digitaloceanspaces.com/images/portrait2.jpg',

57
texts/Developer.md Normal file
View File

@ -0,0 +1,57 @@
---
description: Information about Java, TypeScript, and web developer Jesse Brault.
---
# Jesse Brault: Software Developer
## Languages
- Java (5 years), Groovy (5 years), Kotlin (2 years)
- TypeScript (4 years), JavaScript (5 years), HTML, CSS/SCSS
- Lua, Ruby, Bash
## Frameworks, Libraries and Technologies
- Spring, Spring Boot, Gradle, JUnit, IntelliJ Idea
- NodeJS, React, Express, Prisma, GraphQL, VSCode
- MySQL, SQLite
## Programming Interests and Skills
- Web development
- Test-driven development
- Continuous integration and deployment
- REST protocol
- Dependency injection
- Programming languages
- Compilers
- Git, Github
- ORMs
- Open-source software
- Creating tools and plugins
## Personal Projects
All of my software projects are hosted publicly on GitHub. Please [contact](/contact) me if you have any inquiries related to them or my work in general.
### JVM
- [**groowt**, or **Groovy Web Tools**](https://github.com/JesseBrault0709/groowt): A set of libraries and CLI tools for facilitating web-development in Groovy, inspired by Ruby on Rails and Grails. Includes a custom templating language *Web View Components* inspired by ReactJS and Ruby's ERB templates, with a compiler developed with the ANTLR parser generator. 2024present. Java, Groovy, Kotlin.
- [**ssg**, or **Static Site Generator**](https://github.com/JesseBrault0709/ssg): An extensible CLI application for statically generating websites from text files and other input. I created this out of a need for a static site generator in which I could embed Groovy without all the hassle of a full-size server-oriented framework such as Grails. So far, I am using it for all my personal sites (including this very site), and in the past has been used elsewhere. 2023present. Groovy, Java.
- [**jbarchiva**](https://github.com/JesseBrault0709/jbarchiva): A Gradle plugin to facilitate easy access to my personal Maven repository at [archiva.jessebrault.com](https://archiva.jessebrault.com/). 2022-present.
- [**fsm**](https://github.com/JesseBrault0709/fsm): A set of easily configurable finite state machines with a simple domain-specific language, also featuring Groovy integration. Java, Groovy. 20222023.
### TypeScript
- [**jbci**, or **Jesse Brault Continuous Integration**](https://github.com/JesseBrault0709/jbci): A CI program written in TypeScript which listens to GitHub webhooks and then executes pre-configured shell scripts based on the webhook payload, mainly used to update my websites by simple pushes to my various GitHub repositories. 2022present.
- [**jb-api**](https://github.com/JesseBrault0709/jb-api): A backend for my personal websites which listens for JSON "contact" requests, validates them, and sends mail to personal e-mail addresses. 2022present.
- [**Meals Made Easy**](https://github.com/JesseBrault0709/MealsMadeEasy): A fully-functioning meal-planning web-app developed during my time in _Co.Lab | You Belong in Tech_. I worked closely with a product manager and designer to make the project come alive. It is built with TypeScript, React, Redux, and SCSS. 2021.
### Web Sites
- [Jesse Brault](https://github.com/JesseBrault0709/jb-ssg-site): Where you are right now. It is made using the above-described Groowt and Ssg libraries/utilities. 2024present.
- [Red Dog Ensemble](https://github.com/JesseBrault0709/reddog): A website for a contemporary classical music ensemble I co-founded in New York City, made using the above-mentioned Ssg. 2023. <a href="https://reddogensemble.com/" target="_blank">Visit site.</a>
## Soft Skills
- Cooperation
- Team player
- Leadership
- Agile development method
- Self-discipline
- Quick learning
- Proactive spirit
- Cross-functional teamwork
- Embracing of team diversity

79
texts/Resume.md Normal file
View File

@ -0,0 +1,79 @@
---
description: Online résumé of conductor and composer Jesse Brault.
---
# Résumé
For an official up-to-date résumé/CV, please [contact](/contact) me directly.
## Education
- **Master of Music**, Orchestral Conducting. The Juilliard School. 20152018.
- Private Teachers: Alan Gilbert, James Ross
- Guest teachers: Bernard Haitink, Gianandrea Noseda, David Zinman, Fabio Luisi
- Relevant coursework: score reading, counterpoint, harmony, history.
- **Bachelor of Music**, Theory and Composition. St. Olaf College. *Summa cum laude*. 20092013.
- Private Teachers: Steven Amundson, Timothy Mahr, Justin Merritt.
- Relevant coursework: composition, theory, history, analysis.
## Conducting Experience
- **Private Chamber Orchestra Concert**, at the Juilliard School. December 2023.
- Conducted own work *Spirit Travels*
- **NDR Elbphilharmonie Orchester**: Assistant conductor and off-stage brass conductor for Alan Gilbert. June 2022.
- Strauss: *An Alpine Symphony*
- **Boston Symphony Orchestra**: Assistant conductor for Yuan Chang. January 2020.
- Chihchun Chi-sun Lee: *Formosan Triptych*
- Mozart: Piano concerto no. 25
- Tchaikovsky: Symphony no. 3
- **New Jersey Symphony Orchestra**: Assistant conductor for Xian Zhang. December 2019.
- Anna Clyne: *Within Her Arms*
- Rachmaninoff: Piano concerto no. 3
- Dvořák: Symphony no. 8
- **St. Louis Symphony Orchestra**: Assistant conductor for Andrew Grams. November 2019.
- Tchaikovsky: *The Nutcracker*
- **Oedipus in the District**: Music director for a contemporary one-act opera performed twice at The Tank, New York, NY. October 2019.
- Josh Getman: *Oedipus in the District*
- **Red Dog Ensemble**: Conductor and co-founder. Inaugural recording of album *Neon and Oak* at Avaloch Farm Institute, Boscawen, New Hampshire. October 2019.
- Jon Cziner: *flowers of fire*
- Tom Morrison: *Neon and Oak*
- Sato Matsui: *The Imperfect Storm*
- Will Stackpole: *L'abîme*
- **Nord Anglia Performing Arts Festival**: Bratislava, Slovakia. Guest conductor. March 2019.
- Programmed music for two youth orchestras (ages 1018) and a combined orchestra/chorus work
- Prepared parts for distribution to students in advance of festival
- Worked closely with festival staff during planning and execution stages
- Led and conducted all rehearsals and final concert
- **Ensemble Connect**: Guest conductor. March 2019.
- John Adams: *Chamber Symphony*
- **National Youth Symphony**: Prep-conductor for side-by-side with Daniel Harding and Royal Concertgebouw Orchestra.
February 2019.
- Schumann: *Manfred Overture*
- **Graduation Recital**, The Juilliard School. May 2018.
- Sibelius: *Valse triste*
- Mahler: Symphony no. 4 (arr. Stein)
- **Orlando Philharmonic**: Assistant conductor for Eric Jacobson. October 2017.
## Composition Performances
- *Spirit Travels*, at The Juilliard School. December 2023.
- *Capriccioso*, played on-air by NPO Klassiek (Netherlands). [Listen here at 24:20](https://www.npoklassiek.nl/uitzendingen/podium/cb3c4d56-6c59-4100-8a92-b6081daf9719/2022-03-19-podium)
- *Capriccioso*, at the Mauritshuis, The Hague, Netherlands. Recorded February 2022 and released live in March 2022.
- *Near, Under, Far*, online performance by cellist Gabriel Cabezas from New York, New York. October 2021.
- *Arcadia*, online performance by Julia Hamos and Stephen Waarts from Berlin, Germany. November 2020.
- *Conversations*, performed by Jocelyn Zhu and Mariella Haubs on WQXR, New York, New York. April 2019.
- *Conversations*, world premiere in New York, New York by Jocelyn Zhu and Mariella Haubs. April 2019.
- *Sonata Shambhala*, premieres at Marlboro College, Vermont; Seattle, Washington; and Camphill Ghent, New York;
by Benjamin Hochman. November 2018.
## Album
- **Neon and Oak**: recorded with [Red Dog Ensemble](https://reddogensemble.com/) and released in March 2023. Co-edited with Will Stackpole. Features four new works by emerging composers. See [here](https://reddogensemble.com/album.html) for more information.
## Teaching Experience
- **Juilliard Pre-College**: Substitute teacher for music theory, counterpoint, and ear training. 20182020.
- **Fordham University**: Adjunct professor and Fordham Lincoln Center Chamber Orchestra conductor. 20182019.
- **Juilliard Music Advancement Program**: Substitute teacher for music theory, ear training, and history. 20182019.
- **New York Youth Symphony**: Substitute teacher for private composition lessons. 2019.
- **St. Olaf College**: Teaching assistant for Steven Amundson, music theory. 20102013.
- **Private Tutor**, St. Olaf College: for ear training. 20112013.
## Instruments
- Trombone
- Piano
- Organ