diff --git a/src/components/link/PostLink.astro b/src/components/link/PostLink.astro
new file mode 100644
index 0000000..890703d
--- /dev/null
+++ b/src/components/link/PostLink.astro
@@ -0,0 +1,3 @@
+---
+
+---
\ No newline at end of file
diff --git a/src/components/structure/Header.astro b/src/components/structure/Header.astro
index 78d8639..17d897b 100644
--- a/src/components/structure/Header.astro
+++ b/src/components/structure/Header.astro
@@ -13,7 +13,7 @@ import HeaderLink from './HeaderLink.astro';
-
+
diff --git a/src/content/pages/resume.mdx b/src/content/pages/resume.mdx
index 6c5eeef..540819b 100644
--- a/src/content/pages/resume.mdx
+++ b/src/content/pages/resume.mdx
@@ -1,5 +1,6 @@
import PostPreview from "@components/content/PostPreview.astro";
import ResumeHeader from "@components/resume/ResumeHeader.astro";
+import { getPostUrlBySlug } from "@root/util/query";
@@ -48,6 +49,7 @@ I believe *"good enough"* is the enemy of *good*.
I believe that languages like **TypeScript**, **Rust** and **Haskell** help me get it right the _first time_, saving many headaches and much debugging in the future.
+* Recently, there's a lot of talk about "fine-tuning" in the context of large language models, but I believe the term also applies naturally to open-source software.
## Education
@@ -66,6 +68,7 @@ I believe that languages like **TypeScript**, **Rust** and **Haskell** help me g
The skills below are listed in no particular order. Use the links to jump between sections!
+* [Product Development](#product-development)
* [Frontend Engineering](#frontend-engineering)
* [Backend Engineering](#backend-engineering)
* [Functional Programming, Compilers, and Formal Methods](#functional-programming-compilers-and-formal-methods)
@@ -74,6 +77,29 @@ The skills below are listed in no particular order. Use the links to jump betwe
* [Teaching](#teaching)
* [Open Source](#open-source)
+## Product Development
+
+As a **Research & Development Engineer** for [Hasuo Lab](https://group-mmm.org/~ichiro/) at the National Institute of Informatics,
+
+* I worked closely with researchers to help translate their academic work into proof-of-concept software tools aimed at improving **formal verification** workflows in the automotive industry.
+* For each project, I considered carefully how best to leverage my team’s core competencies to solve problems brought to us by collaborators from Japanese automotive companies.
+* I contributed to the successful delivery of four prototypes:
+ * (*ongoing*) A **model checker** for a simple imperative probabilistic programming language.
+ * A domain-specific language called `tempo-lang` which compiles to **signal temporal logic** expressions, along with a **language server** and web app for creating, documenting, and exemplifying specifications. (see [[Reimann 2024]](https://doi.org/10.48550/arXiv.2403.18764))
+ * A web app for demonstrating the behavior of RSS safety conditions (see [[Hasuo 2022]](https://arxiv.org/abs/2207.02387))
+ * (*joined midway*) A proof checker for Differential Floyd-Hoare Logic (see [[Hasuo 2022]](https://arxiv.org/abs/2207.02387))
+* I presented our work at the [IAA Mobility 2023](https://www.iaa-mobility.com/en/visitors/the-iaa-mobility-2023) trade show in Munich, DE.
+
+Many of my [open-source](#open-source) project are aimed at designing better software for students and researchers, whose needs are often underserved by commercial software:
+
+* I created [Noteworthy](https://github.com/benrbray/noteworthy) to experiment with new ways to support WYSIWYG editing of documents making extensive use of math, diagrams, links, and academic citations.
+* I created [`prosemirror-math`](https://github.com/benrbray/prosemirror-math) in order to encourage more widespread adoption of user-friendly LaTeX math input on the web. With
weekly downloads and [adoption](https://forums.zotero.org/discussion/99411/available-for-beta-testing-math-support-in-notes) by the [Zotero](https://www.zotero.org/) reference manager, I like to think that I've already had an impact!
+* For the **DHGP Project**, I worked closely with humanities researchers to design software allowing them to integrate natural language processing tools into their academic workflow.
+
+I find it immensely satisfying to work on bespoke solutions tailored to meet the needs of a niche audience who will benefit directly from my improvements. A good user experience is at the forefront of all the work that I do.
+
+ {/* and I've honed all the skills listed on this page in service of that goal. */}
+
## Frontend Engineering
I have 7 years of experience writing **TypeScript**, both professionally and for open source projects.
@@ -165,6 +191,7 @@ As a teenager I worked as an independent **game developer**, publishing Flash ga
In my role as a **Computer Vision Engineer** at [EmbodyMe](https://embodyme.com/),
+* I improved the quality and performance of our **mouth inpainting** model by
* I trained deep learning models to transfer facial expressions from one video to another. I also contributed to graphics the post-processing pipeline; for example, by applying spherical harmonics lighting to the meshes output by our model.
* I maintained our Python/PyTorch codebase (which includes training and visualization code for face-reenactment and inpainting models).
* I led a biweekly deep learning & graphics reading group to follow recent developments (GANs / attention / transformers / distillation / NeRF) and distribute knowledge among the team.
diff --git a/src/styles/global.css b/src/styles/global.css
index 9f4ab33..4204b77 100644
--- a/src/styles/global.css
+++ b/src/styles/global.css
@@ -69,8 +69,6 @@ h1,h2,h3,h4,h5 {
article code {
background-color: #eee;
border-radius: 0.2em;
- /* border: 1px solid #c0c0c0; */
- /* padding: 0 0.1em; */
padding: 0.1em 0.2em;
font-size: 0.9em;
}
@@ -164,8 +162,6 @@ article {
}
article blockquote {
- /* padding: var(--gap-1); */
- /* margin: 0 auto; */
border-left: 0.2em solid rgb(169, 215, 89);
margin-left: 0em;
margin-right: 2em;
diff --git a/src/styles/theme.css b/src/styles/theme.css
index 05ba59e..f912102 100644
--- a/src/styles/theme.css
+++ b/src/styles/theme.css
@@ -54,10 +54,10 @@
--line-height: 1.4em;
/* gaps */
- --gap-0: 0.5rem;
- --gap-1: 1.0rem;
- --gap-2: 1.5rem;
- --gap-3: 2.0rem;
+ --gap-0: 0.4rem;
+ --gap-1: 0.8rem;
+ --gap-2: 1.4rem;
+ --gap-3: 1.8rem;
/* colors */
--color-text: #000;
diff --git a/src/util/query.ts b/src/util/query.ts
index 98c83f7..4a4458e 100644
--- a/src/util/query.ts
+++ b/src/util/query.ts
@@ -23,7 +23,7 @@ export const shortenProjectSlug = (slug: string) => {
* Computes the URL for a given post, so that the `content/`
* folder can be freely reorganized without breaking URLs.
*/
-export const getPostUrl = (post: CollectionEntry<"blog">) => {
+export const getPostUrl = (post: CollectionEntry<"blog">): string => {
// some posts explicitly provide a URL, for
// example when linking to a static PDF file
if(post.data.url) {
@@ -37,7 +37,7 @@ export const getPostUrl = (post: CollectionEntry<"blog">) => {
}
}
-export const getPostUrlBySlug = async (postSlug: CollectionEntry<"blog">["slug"]) => {
+export const getPostUrlBySlug = async (postSlug: CollectionEntry<"blog">["slug"]): Promise => {
const post = await getEntry({ collection: "blog", slug: postSlug });
return getPostUrl(post);
}