From bf1a75df5b62fcf46413478c13cffe96b6b3352d Mon Sep 17 00:00:00 2001 From: Liz O'Gorman Date: Sun, 8 Mar 2026 13:35:15 -0400 Subject: [PATCH 01/12] Update author bio to include Ph.D. after name --- data/authors/eaogorman.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/authors/eaogorman.yaml b/data/authors/eaogorman.yaml index a59dcb5..c0c63a7 100644 --- a/data/authors/eaogorman.yaml +++ b/data/authors/eaogorman.yaml @@ -9,7 +9,7 @@ name: alternate: "Liz" pronouns: "she/her" role: "Computational Neurobiologist" -bio: "Elizabeth (Liz) A. O'Gorman is a computational neurobiologist with a Ph.D. in Neurobiology and a concurrent M.S. in Electrical and Computer Engineering concentrating in Data Analytics and Machine Learning from Duke University. Her research interests include developing and using state-of-the-art computational methods to discover fundamental algorithms and computations used by the brain to produce adaptive individual and social behaviors. Methods confine and compliment scientific discoveries --- to that end, her objective is to develop and use novel methods to advance science. Most recently, as a computationalist, she has developed methods for adaptive neuroscience experimentation, and as an experimentalist, she has used these methods to reinforce adaptive behaviors. Ultimately, she is interested in how environment and experience shape adaptive behaviors throughout the lifespan, in health and disease or disorder, using computational and experimental approaches." +bio: "Elizabeth (Liz) A. O'Gorman, Ph.D. is a computational neurobiologist with a Ph.D. in Neurobiology and a concurrent M.S. in Electrical and Computer Engineering concentrating in Data Analytics and Machine Learning from Duke University. Her research interests include developing and using state-of-the-art computational methods to discover fundamental algorithms and computations used by the brain to produce adaptive individual and social behaviors. Methods confine and compliment scientific discoveries --- to that end, her objective is to develop and use novel methods to advance science. Most recently, as a computationalist, she has developed methods for adaptive neuroscience experimentation, and as an experimentalist, she has used these methods to reinforce adaptive behaviors. Ultimately, she is interested in how environment and experience shape adaptive behaviors throughout the lifespan, in health and disease or disorder, using computational and experimental approaches." status: icon: "🔬" postnominals: From e046236edecae1dfdc5ae9066896a408f9de27c4 Mon Sep 17 00:00:00 2001 From: Liz O'Gorman Date: Sun, 8 Mar 2026 13:36:40 -0400 Subject: [PATCH 02/12] Update navigation links to include About, Publications, Presentations, Skills, Experience, Projects, Teaching --- config/_default/menus.yaml | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/config/_default/menus.yaml b/config/_default/menus.yaml index 4040517..571fe4a 100644 --- a/config/_default/menus.yaml +++ b/config/_default/menus.yaml @@ -1,27 +1,28 @@ # Navigation Links -# To link a homepage widget, specify the URL as a hash `#` followed by the filename of the - # desired widget in your `content/home/` folder. - # The weight parameter defines the order that the links will appear in. +# The weight parameter defines the order that the links will appear in (lower = further left). main: - - name: Bio + - name: Home url: / weight: 10 + - name: About + url: /about/ + weight: 20 + - name: Publications + url: /papers + weight: 30 - name: Presentations - url: /#presentations - weight: 11 - - name: Talks - url: /#talks - weight: 12 - - name: News - url: /#news - weight: 13 + url: /talks + weight: 40 + - name: Skills + url: /skills + weight: 50 - name: Experience url: experience/ - weight: 20 + weight: 60 - name: Projects url: projects/ - weight: 30 + weight: 70 - name: Teaching url: teaching/ - weight: 40 + weight: 80 From 8f4a7c9e650024467e202257c93c22428ab2e6ba Mon Sep 17 00:00:00 2001 From: Liz O'Gorman Date: Sun, 8 Mar 2026 13:37:08 -0400 Subject: [PATCH 03/12] Customize HugoBlox block for landing page --- .../partials/hbx/blocks/dev-hero/block.html | 487 ++++++++++++++++++ 1 file changed, 487 insertions(+) create mode 100644 layouts/partials/hbx/blocks/dev-hero/block.html diff --git a/layouts/partials/hbx/blocks/dev-hero/block.html b/layouts/partials/hbx/blocks/dev-hero/block.html new file mode 100644 index 0000000..128b322 --- /dev/null +++ b/layouts/partials/hbx/blocks/dev-hero/block.html @@ -0,0 +1,487 @@ +{{/* Hugo Blox: Dev Hero */}} +{{/* Documentation: https://hugoblox.com/blocks/ */}} +{{/* License: https://github.com/HugoBlox/kit/blob/main/LICENSE.md */}} + +{{/* Initialise */}} +{{ $page := .wcPage }} +{{ $block := .wcBlock }} +{{ $content := $block.content }} +{{ if not (reflect.IsMap $content) }}{{ $content = dict }}{{ end }} +{{ $design := $block.design }} +{{ if not (reflect.IsMap $design) }}{{ $design = dict }}{{ end }} + +{{/* Enable animations if typewriter or scroll animations are configured */}} +{{ $typewriter := index $content "typewriter" }} +{{ if not (reflect.IsMap $typewriter) }}{{ $typewriter = dict }}{{ end }} +{{ $typewriter_enabled := partial "functions/coerce_bool" (dict "value" (index $typewriter "enable") "default" false) }} +{{ $animations_enabled := partial "functions/coerce_bool" (dict "value" (index $design "animations") "default" false) }} +{{ $has_animations := or $typewriter_enabled $animations_enabled }} +{{ if $has_animations }} + {{ $page.Store.Set "has_animations" true }} + {{ $page.Store.Set "has_alpine" true }} +{{ end }} + +{{/* Get author data from YAML */}} +{{ $username := "me" }} +{{ $username_raw := index $content "username" }} +{{ if eq (printf "%T" $username_raw) "string" }} + {{ $username = strings.TrimSpace $username_raw }} +{{ end }} +{{ $author := partial "functions/get_author_profile" $username }} + +{{/* Get avatar */}} +{{ $avatar := "" }} +{{ $avatar_shape := "circle" }} +{{ $avatar_shape_raw := index $design "avatar_shape" }} +{{ if eq (printf "%T" $avatar_shape_raw) "string" }} + {{ $avatar_shape = lower (strings.TrimSpace $avatar_shape_raw) }} +{{ end }} +{{ with $author.avatar }} + {{ $avatar = .Fill "300x300 webp Center" }} +{{ end }} + +{{/* Layout style */}} +{{ $style := "centered" }} +{{ $style_raw := index $design "style" }} +{{ if eq (printf "%T" $style_raw) "string" }} + {{ $style_candidate := lower (strings.TrimSpace $style_raw) }} + {{ if in (slice "centered" "split") $style_candidate }} + {{ $style = $style_candidate }} + {{ end }} +{{ end }} + +{{ $show_status := partial "functions/coerce_bool" (dict "value" (index $content "show_status") "default" false) }} +{{ $show_scroll := partial "functions/coerce_bool" (dict "value" (index $content "show_scroll_indicator") "default" false) }} + +{{ $scroll_target := "#projects" }} +{{ $scroll_target_raw := index $content "scroll_target" }} +{{ if eq (printf "%T" $scroll_target_raw) "string" }} + {{ $scroll_target = strings.TrimSpace $scroll_target_raw }} +{{ end }} +{{ if not $scroll_target }}{{ $scroll_target = "#projects" }}{{ end }} + +{{/* Name size: xs, sm, md (default), lg, xl */}} +{{ $name_size := "md" }} +{{ $name_config := index $design "name" }} +{{ if reflect.IsMap $name_config }} + {{ $size_raw := index $name_config "size" }} + {{ if eq (printf "%T" $size_raw) "string" }} + {{ $candidate := lower (strings.TrimSpace $size_raw) }} + {{ if in (slice "xs" "sm" "md" "lg" "xl") $candidate }} + {{ $name_size = $candidate }} + {{ end }} + {{ end }} +{{ end }} +{{ $name_classes_split := dict "xs" "text-2xl sm:text-3xl md:text-4xl" "sm" "text-3xl sm:text-4xl md:text-5xl" "md" "text-4xl sm:text-5xl md:text-6xl" "lg" "text-4xl sm:text-5xl md:text-6xl lg:text-7xl" "xl" "text-5xl sm:text-6xl md:text-7xl lg:text-8xl" }} +{{ $name_classes_centered := dict "xs" "text-2xl sm:text-3xl md:text-4xl lg:text-5xl" "sm" "text-3xl sm:text-4xl md:text-5xl lg:text-6xl" "md" "text-4xl sm:text-5xl md:text-6xl lg:text-7xl" "lg" "text-5xl sm:text-6xl md:text-7xl lg:text-8xl" "xl" "text-6xl sm:text-7xl md:text-8xl lg:text-9xl" }} + +{{ $greeting := "" }} +{{ $greeting_raw := index $content "greeting" }} +{{ if eq (printf "%T" $greeting_raw) "string" }}{{ $greeting = $greeting_raw }}{{ end }} +{{ $name_prefix := "" }} +{{ $name_prefix_raw := index $content "name_prefix" }} +{{ if eq (printf "%T" $name_prefix_raw) "string" }}{{ $name_prefix = $name_prefix_raw }}{{ end }} + +{{ $title_override := "" }} +{{ $title_raw := index $content "title" }} +{{ if eq (printf "%T" $title_raw) "string" }}{{ $title_override = strings.TrimSpace $title_raw }}{{ end }} + +{{ $tagline := "" }} +{{ $tagline_raw := index $content "tagline" }} +{{ if eq (printf "%T" $tagline_raw) "string" }}{{ $tagline = $tagline_raw }}{{ end }} + +{{ $bio_override := "" }} +{{ $bio_raw := index $content "bio" }} +{{ if eq (printf "%T" $bio_raw) "string" }}{{ $bio_override = $bio_raw }}{{ end }} + +{{ $role := $author.role | default $tagline }} +{{ $bio := $author.bio | default $bio_override }} + +{{ $typewriter_strings := slice }} +{{ $strings_raw := index $typewriter "strings" }} +{{ if reflect.IsSlice $strings_raw }} + {{ range $strings_raw }} + {{ $val := strings.TrimSpace (printf "%v" .) }} + {{ if $val }}{{ $typewriter_strings = $typewriter_strings | append $val }}{{ end }} + {{ end }} +{{ else if eq (printf "%T" $strings_raw) "string" }} + {{ $val := strings.TrimSpace $strings_raw }} + {{ if $val }}{{ $typewriter_strings = slice $val }}{{ end }} +{{ end }} + +{{ $typewriter_prefix := "" }} +{{ $typewriter_prefix_raw := index $typewriter "prefix" }} +{{ if eq (printf "%T" $typewriter_prefix_raw) "string" }}{{ $typewriter_prefix = $typewriter_prefix_raw }}{{ end }} +{{ $type_speed := partial "functions/coerce_int" (dict "value" (index $typewriter "type_speed") "default" 80 "min" 10 "max" 500) }} +{{ $delete_speed := partial "functions/coerce_int" (dict "value" (index $typewriter "delete_speed") "default" 50 "min" 10 "max" 500) }} +{{ $pause_time := partial "functions/coerce_int" (dict "value" (index $typewriter "pause_time") "default" 2000 "min" 200 "max" 10000) }} + +{{ $links_raw := $author.links | default (index $content "links") }} +{{ $links := slice }} +{{ if reflect.IsSlice $links_raw }} + {{ range $links_raw }} + {{ $url := "" }} + {{ $icon := "hero/link" }} + {{ $label := "" }} + {{ if reflect.IsMap . }} + {{ $url_raw := index . "url" | default (index . "link") }} + {{ if eq (printf "%T" $url_raw) "string" }}{{ $url = strings.TrimSpace $url_raw }}{{ end }} + {{ $icon_raw := index . "icon" }} + {{ if eq (printf "%T" $icon_raw) "string" }}{{ $icon = $icon_raw }}{{ end }} + {{ $label_raw := index . "label" | default (index . "name") }} + {{ if eq (printf "%T" $label_raw) "string" }}{{ $label = $label_raw }}{{ end }} + {{ else if eq (printf "%T" .) "string" }} + {{ $url = strings.TrimSpace . }} + {{ end }} + {{ if $url }} + {{ $links = $links | append (dict "url" $url "icon" $icon "label" $label) }} + {{ end }} + {{ end }} +{{ else if eq (printf "%T" $links_raw) "string" }} + {{ $url := strings.TrimSpace $links_raw }} + {{ if $url }} + {{ $links = slice (dict "url" $url "icon" "hero/link" "label" "") }} + {{ end }} +{{ end }} + +{{ $cta_buttons_raw := index $content "cta_buttons" }} +{{ $cta_buttons := slice }} +{{ if reflect.IsSlice $cta_buttons_raw }} + {{ $cta_buttons = $cta_buttons_raw }} +{{ else if and $cta_buttons_raw (reflect.IsMap $cta_buttons_raw) }} + {{ $cta_buttons = slice $cta_buttons_raw }} +{{ end }} + +{{ $status_icon := "" }} +{{ $status := $author.status }} +{{ if and $status (reflect.IsMap $status) }} + {{ $status_icon_raw := index $status "icon" }} + {{ if eq (printf "%T" $status_icon_raw) "string" }} + {{ $status_icon = $status_icon_raw }} + {{ end }} +{{ end }} + +
+ + {{/* Background Effects - only visible in dark mode */}} + + + {{/* Light mode subtle background */}} +
+
+
+
+ +
+ + {{ if eq $style "split" }} + {{/* Split layout with avatar on side */}} +
+ + {{/* Avatar */}} + {{ with $avatar }} +
+
+
+ {{ $author.title }} +
+ {{/* Status emoji badge */}} + {{ if $show_status }} + {{ with $status_icon }} + + {{ . | emojify }} + + {{ end }} + {{ end }} + {{/* Decorative ring */}} +
+
+
+ {{ end }} + + {{/* Content */}} +
+ {{/* Greeting */}} + {{ with $greeting }} +

+ + {{ . }} +

+ {{ end }} + + {{/* Name */}} +

+ {{ with $name_prefix }}{{ . }} {{ end }} + + {{ $author.title | default $title_override | default (i18n "developer" | default "Developer") }} + +

+ + {{/* Role/Tagline with optional typewriter */}} + {{ if and $typewriter_enabled (gt (len $typewriter_strings) 0) }} +

+ {{ with $typewriter_prefix }}{{ . }} {{ end }} + +

+ {{ else if $role }} +

+ {{ $role | $page.RenderString }} +

+ {{ end }} + + {{/* Bio */}} + {{ with $bio }} +

+ {{ . | $page.RenderString }} +

+ {{ end }} + + {{/* Social Links */}} + {{ if gt (len $links) 0 }} +
+ {{ range $links }} + {{ $icon := index . "icon" | default "hero/link" }} + {{ $url := index . "url" }} + {{ $link := $url }} + {{ $target := "" }} + {{ $scheme := (urls.Parse $link).Scheme }} + {{ if not $scheme }} + {{ if not (hasPrefix $link "#") }} + {{ $link = $link | relLangURL }} + {{ end }} + {{ else if in (slice "http" "https") $scheme }} + {{ $target = "target=\"_blank\" rel=\"noopener noreferrer\"" }} + {{ end }} + + + {{ partial "functions/get_icon" (dict "name" $icon "attributes" "class=\"w-5 h-5\"") }} + + {{ end }} +
+ {{ end }} + + {{/* CTA Buttons */}} + {{ if gt (len $cta_buttons) 0 }} +
+ {{ range $idx, $btn := $cta_buttons }} + {{ if reflect.IsMap $btn }} + {{ $is_primary := eq $idx 0 }} + {{ $btn_text := "" }} + {{ $btn_url := "" }} + {{ $btn_icon := "" }} + {{ $btn_new_tab := partial "functions/coerce_bool" (dict "value" (index $btn "new_tab") "default" false) }} + {{ with index $btn "text" }}{{ $btn_text = strings.TrimSpace (printf "%v" .) }}{{ end }} + {{ with index $btn "url" }}{{ $btn_url = strings.TrimSpace (printf "%v" .) }}{{ end }} + {{ with index $btn "icon" }}{{ $btn_icon = printf "%v" . }}{{ end }} + {{ if and $btn_text $btn_url }} + {{ $link := $btn_url }} + {{ $target := "" }} + {{ $scheme := (urls.Parse $link).Scheme }} + {{ if not $scheme }} + {{ if not (hasPrefix $link "#") }} + {{ $link = $link | relLangURL }} + {{ end }} + {{ if eq (path.Ext $link) ".pdf" }}{{ $btn_new_tab = true }}{{ end }} + {{ else if in (slice "http" "https") $scheme }} + {{ $btn_new_tab = true }} + {{ end }} + {{ if $btn_new_tab }} + {{ $target = "target=\"_blank\" rel=\"noopener\"" }} + {{ end }} + + {{ if $btn_icon }} + {{ partial "functions/get_icon" (dict "name" $btn_icon "attributes" "class=\"w-5 h-5\"") }} + {{ end }} + {{ $btn_text }} + + {{ end }} + {{ end }} + {{ end }} +
+ {{ end }} +
+
+ + {{ else }} + {{/* Centered layout */}} + + {{/* Avatar */}} + {{ with $avatar }} +
+
+
+ {{ $author.title }} +
+ {{/* Status emoji badge */}} + {{ if $show_status }} + {{ with $status_icon }} + + {{ . | emojify }} + + {{ end }} + {{ end }} +
+
+ {{ end }} + + {{/* Greeting */}} + {{ with $greeting }} +

+ + {{ . }} + +

+ {{ end }} + + {{/* Name */}} +

+ {{ with $name_prefix }}{{ . }} {{ end }} + + {{ $author.title | default $title_override | default (i18n "developer" | default "Developer") }} + +

+ + {{/* Role/Tagline with optional typewriter */}} + {{ if and $typewriter_enabled (gt (len $typewriter_strings) 0) }} +

+ {{ with $typewriter_prefix }}{{ . }} {{ end }} + +

+ {{ else if $role }} +

+ {{ $role | $page.RenderString }} +

+ {{ end }} + + {{/* Bio */}} + {{ with $bio }} +

+ {{ . | $page.RenderString }} +

+ {{ end }} + + {{/* Social Links */}} + {{ if gt (len $links) 0 }} +
+ {{ range $links }} + {{ $icon := index . "icon" | default "hero/link" }} + {{ $url := index . "url" }} + {{ $link := $url }} + {{ $target := "" }} + {{ $scheme := (urls.Parse $link).Scheme }} + {{ if not $scheme }} + {{ if not (hasPrefix $link "#") }} + {{ $link = $link | relLangURL }} + {{ end }} + {{ else if in (slice "http" "https") $scheme }} + {{ $target = "target=\"_blank\" rel=\"noopener noreferrer\"" }} + {{ end }} + + + {{ partial "functions/get_icon" (dict "name" $icon "attributes" "class=\"w-5 h-5\"") }} + + {{ end }} +
+ {{ end }} + + {{/* CTA Buttons */}} + {{ if gt (len $cta_buttons) 0 }} +
+ {{ range $idx, $btn := $cta_buttons }} + {{ if reflect.IsMap $btn }} + {{ $is_primary := eq $idx 0 }} + {{ $btn_text := "" }} + {{ $btn_url := "" }} + {{ $btn_icon := "" }} + {{ $btn_new_tab := partial "functions/coerce_bool" (dict "value" (index $btn "new_tab") "default" false) }} + {{ with index $btn "text" }}{{ $btn_text = strings.TrimSpace (printf "%v" .) }}{{ end }} + {{ with index $btn "url" }}{{ $btn_url = strings.TrimSpace (printf "%v" .) }}{{ end }} + {{ with index $btn "icon" }}{{ $btn_icon = printf "%v" . }}{{ end }} + {{ if and $btn_text $btn_url }} + {{ $link := $btn_url }} + {{ $target := "" }} + {{ $scheme := (urls.Parse $link).Scheme }} + {{ if not $scheme }} + {{ if not (hasPrefix $link "#") }} + {{ $link = $link | relLangURL }} + {{ end }} + {{ if eq (path.Ext $link) ".pdf" }}{{ $btn_new_tab = true }}{{ end }} + {{ else if in (slice "http" "https") $scheme }} + {{ $btn_new_tab = true }} + {{ end }} + {{ if $btn_new_tab }} + {{ $target = "target=\"_blank\" rel=\"noopener\"" }} + {{ end }} + + {{ if $btn_icon }} + {{ partial "functions/get_icon" (dict "name" $btn_icon "attributes" "class=\"w-5 h-5\"") }} + {{ end }} + {{ $btn_text }} + + {{ end }} + {{ end }} + {{ end }} +
+ {{ end }} + + {{ end }} + + {{/* Scroll indicator - clicks to scroll to next section */}} + {{ if $show_scroll }} + {{ $scroll_link := $scroll_target }} + {{ $scroll_target_attr := "" }} + {{ $scroll_scheme := (urls.Parse $scroll_link).Scheme }} + {{ if not $scroll_scheme }} + {{ if not (hasPrefix $scroll_link "#") }} + {{ $scroll_link = $scroll_link | relLangURL }} + {{ end }} + {{ else if in (slice "http" "https") $scroll_scheme }} + {{ $scroll_target_attr = "target=\"_blank\" rel=\"noopener\"" }} + {{ end }} + +
+
+
+
+ {{ end }} +
+
From cd7a1846ef8a4549f2350a372f5127308ed4c4b9 Mon Sep 17 00:00:00 2001 From: Liz O'Gorman Date: Sun, 8 Mar 2026 13:37:30 -0400 Subject: [PATCH 04/12] Add About page separate from landing page --- content/about/_index.md | 42 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 content/about/_index.md diff --git a/content/about/_index.md b/content/about/_index.md new file mode 100644 index 0000000..2c9fa45 --- /dev/null +++ b/content/about/_index.md @@ -0,0 +1,42 @@ +--- +title: "" +summary: "" +type: landing + +design: + spacing: "6rem" + +sections: + - block: resume-biography-3 + content: + username: eaogorman + text: "" + buttons: + - text: Download Academic CV + url: uploads/eao_cv_2026.pdf + - text: Download Resume + url: uploads/eao_resume.pdf + headings: + about: "About Me" + education: "" + interests: "" + design: + background: + gradient_mesh: + enable: true + name: + size: md + avatar: + size: medium + shape: rounded + - block: collection + content: + title: Recent Publications + text: "" + filters: + folders: + - publication + exclude_featured: false + design: + view: citation +--- From dfce40c7ebc84335cc8a35aba108831c467c0af4 Mon Sep 17 00:00:00 2001 From: Liz O'Gorman Date: Sun, 8 Mar 2026 13:37:59 -0400 Subject: [PATCH 05/12] Add landing page, bio, typewriting --- content/_index.md | 135 +++++++++------------------------------------- 1 file changed, 25 insertions(+), 110 deletions(-) diff --git a/content/_index.md b/content/_index.md index a8dcf91..a912ef8 100644 --- a/content/_index.md +++ b/content/_index.md @@ -1,123 +1,38 @@ --- -# Leave the homepage title empty to use the site title title: "" summary: "" type: landing -design: - # Default section spacing - spacing: "6rem" - sections: - - block: resume-biography-3 + - block: dev-hero + id: hero content: - # Choose a user profile to display (a folder name within `content/authors/`) username: eaogorman - text: "" - # Show a call-to-action button under your biography? (optional) - buttons: + bio: Computational neurobiologist with 8+ years of experience as a scientific software developer and 5+ years of experience as an experimentalist. Passionate about/committed to... + greeting: "Hi, I'm" + tagline: "Computational Neurobiologist" + show_status: true + show_scroll_indicator: false + typewriter: + enable: true + prefix: "I" + strings: + - "develop computational methods for neuroscience." + - "build real-time adaptive experimentation systems." + - "study how the brain produces adaptive behaviors." + - "use machine learning to decode neural dynamics." + type_speed: 60 + delete_speed: 40 + pause_time: 2500 + cta_buttons: - text: Download Academic CV url: uploads/eao_cv_2026.pdf - - text: Download Résumé + icon: document-arrow-down + - text: Download Resume url: uploads/eao_resume.pdf - headings: - about: "About Me" - education: "" - interests: "" - design: - # Use the new Gradient Mesh which automatically adapts to the selected theme colors - background: - gradient_mesh: - enable: true - - # Name heading sizing to accommodate long or short names - name: - size: md # Options: xs, sm, md, lg (default), xl - - # Avatar customization - avatar: - size: medium # Options: small (150px), medium (200px, default), large (320px), xl (400px), xxl (500px) - shape: rounded # Options: circle (default), square, rounded - # background: - # color: black - # image: - # # Add your image background to `assets/media/`. - # filename: stacked-peaks.svg - # filters: - # brightness: 1.0 - # size: cover - # position: center - # parallax: false - - block: markdown - content: - title: '📚 My Research' - subtitle: '' - text: |- - Use this area to speak to your mission. I'm a research scientist in the Moonshot team at DeepMind. I blog about machine learning, deep learning, and moonshots. - - I apply a range of qualitative and quantitative methods to comprehensively investigate the role of science and technology in the economy. - - Please reach out to collaborate 😃 - design: - columns: '1' - - block: collection - id: papers - content: - title: Featured Publications - filters: - folders: - - publication - featured_only: true - design: - view: article-grid - columns: 2 - - block: collection - content: - title: Recent Publications - text: "" - filters: - folders: - - publication - exclude_featured: false - design: - view: citation - - block: collection - id: talks - content: - title: Recent & Upcoming Talks - filters: - folders: - - event - design: - view: article-grid - columns: 1 - - block: collection - id: news - content: - title: Recent News - subtitle: '' - text: '' - # Page type to display. E.g. post, talk, publication... - page_type: post - # Choose how many pages you would like to display (0 = all pages) - count: 5 - # Filter on criteria - filters: - author: "" - category: "" - tag: "" - exclude_featured: false - exclude_future: false - exclude_past: false - publication_type: "" - # Choose how many pages you would like to offset by - offset: 0 - # Page order: descending (desc) or ascending (asc) date. - order: desc + icon: document-arrow-down design: - # Choose a layout view - view: date-title-summary - # Reduce spacing - spacing: - padding: [0, 0, 0, 0] + style: centered + avatar_shape: rounded + animations: true --- From da331374d160908c08c2bfd6ceb58478e5f2478f Mon Sep 17 00:00:00 2001 From: Liz O'Gorman Date: Sun, 8 Mar 2026 14:07:25 -0400 Subject: [PATCH 06/12] Updage HugoBlox dev-hero block for bio override and reduced top gap on landing page --- layouts/partials/hbx/blocks/dev-hero/block.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/layouts/partials/hbx/blocks/dev-hero/block.html b/layouts/partials/hbx/blocks/dev-hero/block.html index 128b322..67cc562 100644 --- a/layouts/partials/hbx/blocks/dev-hero/block.html +++ b/layouts/partials/hbx/blocks/dev-hero/block.html @@ -95,7 +95,7 @@ {{ if eq (printf "%T" $bio_raw) "string" }}{{ $bio_override = $bio_raw }}{{ end }} {{ $role := $author.role | default $tagline }} -{{ $bio := $author.bio | default $bio_override }} +{{ $bio := $bio_override | default $author.bio }} {{ $typewriter_strings := slice }} {{ $strings_raw := index $typewriter "strings" }} @@ -161,7 +161,7 @@ {{ end }} {{ end }} -
+
{{/* Background Effects - only visible in dark mode */}}