diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index dae246d9..bff2bf68 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -2,7 +2,7 @@ name: Deploy Hugo site to Pages on: push: - branches: ["main"] + branches: ["main", "collaboration-network"] permissions: diff --git a/archetypes/community-resources.md b/archetypes/community-resources.md new file mode 100644 index 00000000..734f907b --- /dev/null +++ b/archetypes/community-resources.md @@ -0,0 +1,36 @@ +--- +title: "{{ replace .Name "-" " " | title }}" # Resource Title, e.g., "Neuromorphic Engineering Blog" +date: {{ .Date }} +# Meta Description for SEO (120-160 characters): +# Briefly describe the resource and its value to the neuromorphic community. +description: "A description of this valuable community resource." +image: "resource-logo.png" # Main logo or banner for the resource (place in this folder) +draft: true +type: "community-resources" # Do not change +video: "" # Optional: YouTube video ID for an introductory video. + +# --- Resource Details --- +# The primary type of the resource. E.g., "YouTube Channel", "Blog", "Podcast", "Community Website" +resource_type: "Website" +# The main URL to access the resource +website: "https://example.com" +# Optional: List of authors/creators. Match with contributor profiles if they exist. +author: + - "Creator Name" +# Set to true if this resource is part of our foundational supporter network. +is_supporter: false + +# --- Resource Log --- +# Add entries here to log updates, new content, or milestones related to the resource. +# Newest entries should be at the top. +resource_log: + - date: "YYYY-MM-DD" + title: "First Log Entry" + description: "Briefly describe the update, e.g., 'Launched a new video series on SNNs'." + # Optional link to the specific update/content + # link: "https://example.com/update" +--- + +Provide a more detailed overview of the resource here. This content will appear on its dedicated page. +Explain what the community can find here, who it's for, and why it's a valuable resource. +Use code with caution. \ No newline at end of file diff --git a/assets/js/main.js b/assets/js/main.js index 02b65418..9a6bd1a7 100755 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -1,3 +1,4 @@ +// assets/js/main.js // main script (function () { "use strict"; @@ -52,6 +53,8 @@ bubblePool.push(bubble); } let activeBubbles = new Map(); + let recentlyHidden = new Set(); + const COOLDOWN_PERIOD = BUBBLE_INTERVAL; const updateBubblePositions = () => { activeBubbles.forEach((bubble, partner) => { @@ -65,20 +68,38 @@ }; requestAnimationFrame(updateBubblePositions); + const setBubbleContent = (partner) => { + const name = partner.dataset.projectName || ''; + const description = partner.dataset.projectDescription || ''; + const contributions = partner.dataset.contributions; + + return ` +
${description}
+ ${contributions ? `{{ .Description }}
+ + View Resource → + ++ Welcome to our directory of Community Resources. This is a curated list of valuable websites, channels, and projects created by and for the neuromorphic community. +
++ {{ $logDate.Format "January 2" }} +
+{{ .description | markdownify }}
+- Open Neuromorphic (ONM) is a global community fostering education, research, and open-source collaboration in brain-inspired AI and hardware. -
- +{{/* New Hero Section from Mockup */}} ++ Open Neuromorphic (ONM) is a global community fostering education, research, and open-source collaboration in brain-inspired AI and hardware. +
+ - +Stay up-to-date with the latest workshops, blog posts, and community highlights.
-- {{ .Description | truncate 80 }} -
-
- {{ partial "icon.html" (dict "style" "regular" "name" "clock" "class" "mr-1") }} {{ .StartTime }} - {{ .EndTime }} {{ .TimeZone }}
- {{ if .IsRecurring }}
-
{{ partial "icon.html" (dict "style" "solid" "name" "location-dot" "class" "mr-1") }} {{ .LocationName }} (Recurring)
- {{ else if .Authors }}
-
{{ partial "icon.html" (dict "style" "regular" "name" "circle-user" "class" "mr-1") }}
- {{ $numAuthors := len .Authors }}
- {{ range $i, $authorName := .Authors }}
- {{ $nameForProcessing := $authorName | replaceRE "[.]" "" }}
- {{ $nameForProcessing = $nameForProcessing | replaceRE "ć" "c" | replaceRE "Ć" "C" }}
- {{ $contributorSlug := $nameForProcessing | anchorize }}
- {{ $contributorPagePath := printf "contributors/%s" $contributorSlug }}
- {{ $contributorPage := site.GetPage $contributorPagePath }}
- {{ if $contributorPage }}{{ $authorName }}{{ else }}{{ $authorName }}{{ end }}{{ if lt $i (sub $numAuthors 1) }}, {{ end }}
- {{ end }}
- {{ end }}
-
No upcoming events scheduled at the moment. Check back soon!
-Stay up-to-date with the latest workshops, blog posts, and community highlights.
+{{ .Description | truncate 120 }}
-No recent blog posts. Stay tuned for new content!
-+ {{ partial "icon.html" (dict "style" "regular" "name" "circle-user" "class" "mr-1") }} + {{ partial "components/author-links.html" . }} +
{{ end }} + + View Details {{ partial "icon.html" (dict "style" "solid" "name" "arrow-right" "class" "ml-1") }} ++ {{ .Description | truncate 80 }} +
+
+ {{ partial "icon.html" (dict "style" "regular" "name" "clock" "class" "mr-1") }} {{ .StartTime }} - {{ .EndTime }} {{ .TimeZone }}
+ {{ if .IsRecurring }}
+
{{ partial "icon.html" (dict "style" "solid" "name" "location-dot" "class" "mr-1") }} {{ .LocationName }} (Recurring)
+ {{ else if .Authors }}
+
{{ partial "icon.html" (dict "style" "regular" "name" "circle-user" "class" "mr-1") }}
+ {{ $numAuthors := len .Authors }}
+ {{ range $i, $authorName := .Authors }}
+ {{ $nameForProcessing := $authorName | replaceRE "[.]" "" }}
+ {{ $nameForProcessing = $nameForProcessing | replaceRE "ć" "c" | replaceRE "Ć" "C" }}
+ {{ $contributorSlug := $nameForProcessing | anchorize }}
+ {{ $contributorPagePath := printf "contributors/%s" $contributorSlug }}
+ {{ $contributorPage := site.GetPage $contributorPagePath }}
+ {{ if $contributorPage }}{{ $authorName }}{{ else }}{{ $authorName }}{{ end }}{{ if lt $i (sub $numAuthors 1) }}, {{ end }}
+ {{ end }}
+ {{ end }}
+
No upcoming events scheduled at the moment. Check back soon!
+{{ .Description | truncate 120 }}
+No recent blog posts. Stay tuned for new content!
Whether you're new to the field, a seasoned researcher, or an industry professional, find your path within ONM through these community highlights.
+{{/* Start Your Journey Section - Increased top padding, reduced bottom padding */}} +Whether you're new to the field, a seasoned researcher, or an industry professional, find your path within ONM through these community highlights.
- {{ $journey_ribbons := slice - (dict - "title" "Understanding SNN Frameworks" - "description" "Dive into our comprehensive benchmarks of Spiking Neural Network libraries. Essential reading for choosing the right tools for your research and optimizing your SNN models." - "cta_link" "blog/spiking-neural-network-framework-benchmarking/" - "cta_text" "Read Benchmark Post" - "explore_links" (slice - (dict "title" "SNN Software Guide" "url" "neuromorphic-computing/software/snn-frameworks/") - (dict "title" "Hands-On with snnTorch" "url" "workshops/hands-on-with-snntorch-jason-eshraghian/") - ) - "contributor_text_prefix" "Insight by " - "primary_contributor_name" "Gregor Lenz" - "contributor_text_suffix" ", Kade Heckel, et al." - "default_image_path" "blog/spiking-neural-network-framework-benchmarking/neurons-race.png" - "alt_text" "SNN Framework Benchmarks" - "layout_class" "" - ) - (dict - "title" "Bio-Inspired Visual Attention" - "description" "Explore how visual attention mechanisms, inspired by the human visual system, can enhance robotic perception and interaction for efficient real-world applications." - "cta_link" "workshops/whats-catching-your-eye-visual-attention-mechanism-giulia-dangelo/" - "cta_text" "Watch Workshop" - "explore_links" (slice - (dict "title" "Efficient Event Data Compression" "url" "blog/efficient-compression-event-based-data-neuromorphic-applications/") - (dict "title" "Neuromorphic Hardware Guide" "url" "neuromorphic-computing/hardware/") - ) - "contributor_text_prefix" "Workshop by " - "primary_contributor_name" "Giulia D'Angelo" - "contributor_text_suffix" "" - "default_image_path" "workshops/whats-catching-your-eye-visual-attention-mechanism-giulia-dangelo/open-neuromorphic-thumbnail-giulia.png" - "alt_text" "Visual Attention Mechanism Workshop" - "layout_class" "reverse" - ) - (dict - "title" "Essential Reads in Digital Neuromorphic Hardware" - "description" "A curated list of influential papers and theses on digital neuromorphic hardware designs. An invaluable resource for course material and staying current with research trends." - "cta_link" "blog/digital-neuromorphic-hardware-read-list/" - "cta_text" "Access the Reading List" - "explore_links" (slice - (dict "title" "NIR Workshop: Unifying Neuromorphic Tools" "url" "workshops/neuromorphic-intermediate-representation/") - (dict "title" "About Open Neuromorphic & Our Mission" "url" "about/") - ) - "contributor_text_prefix" "Curated by " - "primary_contributor_name" "Fabrizio Ottati" - "contributor_text_suffix" "" - "default_image_path" "blog/digital-neuromorphic-hardware-read-list/banner.png" - "alt_text" "Neuromorphic Hardware Reading" - "layout_class" "" - ) - }} + {{ $journey_ribbons := slice + (dict + "title" "Understanding SNN Frameworks" + "description" "Dive into our comprehensive benchmarks of Spiking Neural Network libraries. Essential reading for choosing the right tools for your research and optimizing your SNN models." + "cta_link" "blog/spiking-neural-network-framework-benchmarking/" + "cta_text" "Read Benchmark Post" + "explore_links" (slice + (dict "title" "SNN Software Guide" "url" "neuromorphic-computing/software/snn-frameworks/") + (dict "title" "Hands-On with snnTorch" "url" "workshops/hands-on-with-snntorch-jason-eshraghian/") + ) + "contributor_text_prefix" "Insight by " + "primary_contributor_name" "Gregor Lenz" + "contributor_text_suffix" ", Kade Heckel, et al." + "default_image_path" "blog/spiking-neural-network-framework-benchmarking/neurons-race.png" + "alt_text" "SNN Framework Benchmarks" + "layout_class" "" + ) + (dict + "title" "Bio-Inspired Visual Attention" + "description" "Explore how visual attention mechanisms, inspired by the human visual system, can enhance robotic perception and interaction for efficient real-world applications." + "cta_link" "workshops/whats-catching-your-eye-visual-attention-mechanism-giulia-dangelo/" + "cta_text" "Watch Workshop" + "explore_links" (slice + (dict "title" "Efficient Event Data Compression" "url" "blog/efficient-compression-event-based-data-neuromorphic-applications/") + (dict "title" "Neuromorphic Hardware Guide" "url" "neuromorphic-computing/hardware/") + ) + "contributor_text_prefix" "Workshop by " + "primary_contributor_name" "Giulia D'Angelo" + "contributor_text_suffix" "" + "default_image_path" "workshops/whats-catching-your-eye-visual-attention-mechanism-giulia-dangelo/open-neuromorphic-thumbnail-giulia.png" + "alt_text" "Visual Attention Mechanism Workshop" + "layout_class" "reverse" + ) + (dict + "title" "Essential Reads in Digital Neuromorphic Hardware" + "description" "A curated list of influential papers and theses on digital neuromorphic hardware designs. An invaluable resource for course material and staying current with research trends." + "cta_link" "blog/digital-neuromorphic-hardware-read-list/" + "cta_text" "Access the Reading List" + "explore_links" (slice + (dict "title" "NIR Workshop: Unifying Neuromorphic Tools" "url" "workshops/neuromorphic-intermediate-representation/") + (dict "title" "About Open Neuromorphic & Our Mission" "url" "about/") + ) + "contributor_text_prefix" "Curated by " + "primary_contributor_name" "Fabrizio Ottati" + "contributor_text_suffix" "" + "default_image_path" "blog/digital-neuromorphic-hardware-read-list/banner.png" + "alt_text" "Neuromorphic Hardware Reading" + "layout_class" "" + ) + }} - {{ range $ribbon := $journey_ribbons }} - {{ $image_to_display_src := $ribbon.default_image_path | relURL }} - {{ $alt_text_for_image := $ribbon.alt_text }} - {{ $contributor_page_resource := "" }} + {{ range $ribbon := $journey_ribbons }} + {{ $image_to_display_src := $ribbon.default_image_path | relURL }} + {{ $alt_text_for_image := $ribbon.alt_text }} + {{ $contributor_page_resource := "" }} - {{ if $ribbon.primary_contributor_name }} - {{ $contributor_name_for_slug_cleaned := $ribbon.primary_contributor_name | replaceRE "[.]" "" }} - {{ $contributor_slug_final := $contributor_name_for_slug_cleaned | anchorize }} - {{ $contributor_page_path_final := printf "contributors/%s" $contributor_slug_final }} - {{ $contributor_page_resource = site.GetPage $contributor_page_path_final }} + {{ if $ribbon.primary_contributor_name }} + {{ $nameForProcessing := $ribbon.primary_contributor_name | replaceRE "[.]" "" }} + {{ $nameForProcessing = $nameForProcessing | replaceRE "ć" "c" | replaceRE "Ć" "C" }} + {{ $contributor_slug := $nameForProcessing | anchorize }} + {{ $contributor_page_path := printf "contributors/%s" $contributor_slug }} + {{ $contributor_page_resource = site.GetPage $contributor_page_path }} - {{ if $contributor_page_resource }} - {{ with $contributor_page_resource.Params.image }} - {{ $contributor_image_filename_from_frontmatter := . }} - {{ $bundled_image := $contributor_page_resource.Resources.GetMatch $contributor_image_filename_from_frontmatter }} - {{ if $bundled_image }} - {{ $processed_contributor_img := $bundled_image.Fill "250x250 Lanczos" }} - {{ $image_to_display_src = $processed_contributor_img.RelPermalink }} - {{ $alt_text_for_image = printf "Profile image of %s" $contributor_page_resource.Title }} - {{ else }} - {{ $asset_image_check_path := strings.TrimPrefix "/" $contributor_image_filename_from_frontmatter }} - {{ $asset_img := resources.Get $asset_image_check_path }} - {{ if $asset_img }} - {{ $processed_contributor_img := $asset_img.Fill "250x250 Lanczos" }} - {{ $image_to_display_src = $processed_contributor_img.RelPermalink }} - {{ $alt_text_for_image = printf "Profile image of %s" $contributor_page_resource.Title }} - {{ else if (fileExists (printf "static%s" $contributor_image_filename_from_frontmatter)) }} - {{ $image_to_display_src = $contributor_image_filename_from_frontmatter | relURL }} - {{ $alt_text_for_image = printf "Profile image of %s" $contributor_page_resource.Title }} - {{ end }} - {{ end }} - {{ end }} - {{ end }} - {{ end }} + {{ if $contributor_page_resource }} + {{ with $contributor_page_resource.Params.image }} + {{ $contributor_image_filename_from_frontmatter := . }} + {{ $bundled_image := $contributor_page_resource.Resources.GetMatch $contributor_image_filename_from_frontmatter }} + {{ if $bundled_image }} + {{ $processed_contributor_img := $bundled_image.Fill "250x250 Lanczos" }} + {{ $image_to_display_src = $processed_contributor_img.RelPermalink }} + {{ $alt_text_for_image = printf "Profile image of %s" $contributor_page_resource.Title }} + {{ else }} + {{ $asset_image_check_path := strings.TrimPrefix "/" $contributor_image_filename_from_frontmatter }} + {{ $asset_img := resources.Get $asset_image_check_path }} + {{ if $asset_img }} + {{ $processed_contributor_img := $asset_img.Fill "250x250 Lanczos" }} + {{ $image_to_display_src = $processed_contributor_img.RelPermalink }} + {{ $alt_text_for_image = printf "Profile image of %s" $contributor_page_resource.Title }} + {{ else if (fileExists (printf "static%s" $contributor_image_filename_from_frontmatter)) }} + {{ $image_to_display_src = $contributor_image_filename_from_frontmatter | relURL }} + {{ $alt_text_for_image = printf "Profile image of %s" $contributor_page_resource.Title }} + {{ end }} + {{ end }} + {{ end }} + {{ end }} + {{ end }} -- {{ $ribbon.contributor_text_prefix -}} - {{- if $contributor_page_resource -}} - {{ $ribbon.primary_contributor_name }} - {{- else -}} - {{- $ribbon.primary_contributor_name -}} - {{- end -}} - {{- $ribbon.contributor_text_suffix | safeHTML -}} -
-- {{ $ribbon.description }} -
- -+ {{ $ribbon.contributor_text_prefix -}} + {{- if $contributor_page_resource -}} + {{ $ribbon.primary_contributor_name }} + {{- else -}} + {{- $ribbon.primary_contributor_name -}} + {{- end -}} + {{- $ribbon.contributor_text_suffix | safeHTML -}} +
++ {{ $ribbon.description }} +
+ - {{ end }} ++ Interested in becoming a supporter? Contact us to learn more. +
+ {{ else }} ++ This tier is currently open. Be the first to support our mission! +
++ Interested in becoming a supporter? Contact us to learn more. +
+ {{ end }} +