Skip to content

Commit 2e2f3a9

Browse files
committed
Merge branch 'upcoming-events' into staging
2 parents 1181c79 + 1d2e2aa commit 2e2f3a9

File tree

9 files changed

+178
-63
lines changed

9 files changed

+178
-63
lines changed

assets/scss/_typography-custom.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ a {
127127
.styled-link,
128128
.byline-link,
129129
.content :is(:where(a):not(:where([class~="not-prose"], [class~="not-prose"] *, .btn))),
130-
section a:not(.breadcrumb-link-parent, .social-link-container, .btn, .hardware-card-wide-link, .social-icon, .no-style, .project-filter-link),
130+
section a:not(.breadcrumb-link-parent, .social-link-container, .btn, .hardware-card-wide-link, .social-icon, .no-style, .project-filter-link, .event-type-tag-link),
131131
section a.social-link-container .social-link-text,
132132
.breadcrumb-link-text,
133133
.author-card-compact h4 a,

assets/scss/custom.scss

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,3 +269,22 @@ code {
269269
-ms-user-select: none; /* IE 10+ and Edge */
270270
user-select: none; /* Standard syntax */
271271
}
272+
273+
.event-type-tag-link {
274+
@apply inline-block font-semibold no-underline rounded-full text-xs transition-transform transform;
275+
background: linear-gradient(135deg, var(--color-primary-new) 0%, var(--color-secondary-new) 100%);
276+
color: white !important;
277+
padding-top: 0.125rem !important; /* Equivalent to py-0.5 */
278+
padding-bottom: 0.125rem !important; /* Equivalent to py-0.5 */
279+
padding-left: 0.625rem !important; /* Equivalent to px-2.5 */
280+
padding-right: 0.625rem !important; /* Equivalent to px-2.5 */
281+
282+
&:hover {
283+
@apply -translate-y-px shadow-md;
284+
}
285+
286+
.dark & {
287+
background: linear-gradient(135deg, theme('colors.darkmode.primary') 0%, color-mix(in srgb, theme('colors.darkmode.primary') 80%, black) 100%);
288+
color: theme('colors.darkmode.text') !important;
289+
}
290+
}

content/contributors/chris-eliasmith/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ description: "Professor, Canada Research Chair in Theoretical Neuroscience, and
44
image: "chris-eliasmith.jpg"
55
social:
66
- icon: "fa fa-house"
7-
link: "https://compneuro.uwaterloo.ca/people/chris-eliasmith.html"
7+
link: "https://watarts.uwaterloo.ca/~celiasmi/"
88
title: "website"
99
- icon: "fa-brands fa-github"
1010
link: "https://github.com/ctn-waterloo"
1111
title: "github"
1212
- icon: "fa-solid fa-graduation-cap"
13-
link: "https://scholar.google.com/citations?user=Dcy8n7UAAAAJ&hl=en"
13+
link: "https://scholar.google.com/citations?user=KOBO-6QAAAAJ&hl=en"
1414
title: "scholar"
1515
draft: false
1616
---
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
title: "Neuromorphic drivers"
3+
type: neuromorphic-software
4+
description: "Python and Rust libraries to interact with event cameras in real-time."
5+
logo: "neuromorphic-drivers.png"
6+
website: "https://github.com/neuromorphicsystems/neuromorphic-drivers"
7+
dependencies: "NumPy, Rust"
8+
field_of_application: "Drivers"
9+
source_code: "https://github.com/neuromorphicsystems/neuromorphic-drivers"
10+
pypi_id: "neuromorphic-drivers"
11+
license: "MIT"
12+
supports_hardware: false
13+
supports_NIR: false
14+
language: "Python, Rust"
15+
maintainer:
16+
- "Alexandre Marcireau"
17+
draft: false
18+
---
19+
20+
## Overview
21+
22+
Neuromorphic drivers is a library to interact with USB event cameras in real-time. It is compatible with all major operating systems (Linux x64 and ARM, macOS x64 and ARM, and Windows x64) and it aims to support as many commercial devices as possible.
23+
24+
The library can be used in Python and Rust.
25+
26+
By design, Neuromorphic drivers provides no processing algorithms. It may instead be combined with other libraries (for instance [Tonic](/neuromorphic-computing/software/data-tools/tonic/) or [Faery](/neuromorphic-computing/software/data-tools/faery/) to build real-time processing pipelines.
27+
28+
Neuromorphic drivers does not depend on Metavision, libcaer, or dv-processing. It instead uses its own implementation of the [cameras' USB protocols](https://github.com/neuromorphicsystems/neuromorphic-drivers/tree/main/drivers/src/devices). This approach facilitates cross-platform support and lets us ship lightweight [pre-compiled Python wheels](https://pypi.org/project/neuromorphic-drivers/#files), which means that Python users do not need specific shared libraries or a compiler toolchain on their machine.
16.1 KB
Loading

content/workshops/tsp1-neuromorphic-chip-chris-eliasmith/index.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ type: "workshops"
1414
show_author_bios: true
1515
hardware_tags: ["tsp1"]
1616
software_tags: ["nengo"]
17-
speaker_photo: "chris-eliasmith.jpg"
18-
speaker_bio: "Dr. Chris Eliasmith is a Professor at the University of Waterloo and co-founder of Applied Brain Research. He is the Director of the Centre for Theoretical Neuroscience and holds a Canada Research Chair in Theoretical Neuroscience. Dr. Eliasmith is renowned for his work on the Neural Engineering Framework (NEF) and the Semantic Pointer Architecture (SPA), which provide principled methods for building large-scale brain models. His research focuses on understanding how the brain computes and using those principles to build neuromorphic systems. He is the author of \"How to Build a Brain\" and has led the development of Spaun, one of the world's largest functional brain models."
1917
---
2018

2119
## About This Workshop
@@ -60,7 +58,7 @@ No specific prerequisites are required, though familiarity with neural networks
6058
## Resources
6159

6260
- [Applied Brain Research Technology Page](https://www.appliedbrainresearch.com/technology)
63-
- [Nengo Neural Simulator](https://www.nengo.ai/)
61+
- [Nengo Neural Simulator](../../neuromorphic-computing/software/snn-frameworks/nengo/)
6462
- [Centre for Theoretical Neuroscience](https://uwaterloo.ca/centre-for-theoretical-neuroscience/)
6563

6664
## Registration

data/community_projects.toml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,3 +173,10 @@ completed_issues = [ ]
173173
title = "Find new maintainer: Contact Gregor Lenz"
174174
url = "https://open-neuromorphic.org/contributors/gregor-lenz/"
175175
tags = [ ]
176+
177+
[[projects]]
178+
name = "Neuromorphic Drivers"
179+
slug = "neuromorphic-drivers"
180+
repo = "https://github.com/neuromorphicsystems/neuromorphic-drivers"
181+
description = "Python and Rust libraries to interact with event cameras in real-time."
182+
completed_issues = [ ]

layouts/partials/homepage/whats-new.html

Lines changed: 66 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,74 @@
66
<section class="mt-8 mb-14">
77
<div class="container mx-auto px-6">
88
<h2 class="section-title">What's New at ONM</h2>
9-
<p class="section-subtitle">Stay up-to-date with the latest workshops, blog posts, and community highlights.</p>
10-
<div class="grid md:grid-cols-1 lg:grid-cols-3 gap-8">
9+
<p class="section-subtitle">Stay up-to-date with the latest events, articles, and community highlights.</p>
10+
11+
<!-- =================================================
12+
UPCOMING EVENTS ROW
13+
====================================================== -->
14+
{{ if $sortedAllUpcomingEvents }}
15+
<div class="upcoming-events-section mb-16">
16+
<h3 class="text-2xl font-bold mb-8 text-center text-text dark:text-darkmode-text">Upcoming Events</h3>
17+
<div class="row justify-center">
18+
{{ range first 3 $sortedAllUpcomingEvents }}
19+
<div class="md:col-6 lg:col-4 mb-8 flex">
20+
<div class="event-card-simple bg-white dark:bg-darkmode-theme-light rounded-xl p-4 shadow-md hover:shadow-lg transition-all duration-300 ease-in-out h-full flex flex-col w-full">
21+
<div class="flex items-center justify-between mb-2 w-full">
22+
<span class="date-badge text-xs">{{ .Date.Format "Jan 02, 2006" }}</span>
23+
{{ with .EventType }}
24+
{{ $linkMap := dict
25+
"Workshops" "/workshops/"
26+
"Student Talks" "/neuromorphic-computing/student-talks/"
27+
"Hacking Hours" "/neuromorphic-computing/software/hacking-hours/"
28+
"Town Hall" "/getting-involved/town-hall/"
29+
}}
30+
{{ $eventLink := index $linkMap . }}
31+
{{ if $eventLink }}
32+
<a href="{{ $eventLink | relLangURL }}" class="event-type-tag-link">{{ . }}</a>
33+
{{ else }}
34+
<span class="event-type-tag-link cursor-default">{{ . }}</span>
35+
{{ end }}
36+
{{ end }}
37+
</div>
38+
<h4 class="text-lg font-semibold mb-1 flex-grow">
39+
<a href="{{ .Permalink }}" class="text-text dark:text-darkmode-dark hover:text-[var(--color-primary-new)]">{{ .Title }}</a>
40+
</h4>
41+
<p class="text-xs text-gray-600 dark:text-gray-400 mb-2">
42+
{{ .Description | truncate 80 }}
43+
</p>
44+
<p class="text-xs text-gray-500 dark:text-gray-300">
45+
{{ partial "icon.html" (dict "style" "regular" "name" "clock" "class" "mr-1") }} {{ .StartTime }} - {{ .EndTime }} {{ .TimeZone }}
46+
{{ if .IsRecurring }}
47+
<br/>{{ partial "icon.html" (dict "style" "solid" "name" "location-dot" "class" "mr-1") }} <a href="{{ .LocationURL }}" target="_blank" class="hover:underline">{{ .LocationName }}</a> (Recurring)
48+
{{ else if .Authors }}
49+
<br/>{{ partial "icon.html" (dict "style" "regular" "name" "circle-user" "class" "mr-1") }}
50+
{{- /* Logic to link authors */ -}}
51+
{{ $numAuthors := len .Authors }}{{ range $i, $authorName := .Authors }}{{ $nameForProcessing := $authorName | replaceRE "[.]" "" | replaceRE "ć" "c" | replaceRE "Ć" "C" }}{{ $contributor_slug := $nameForProcessing | anchorize }}{{ $contributor_page := site.GetPage (printf "contributors/%s" $contributor_slug) }}{{ if $contributor_page }}<a href="{{ $contributor_page.RelPermalink }}">{{ $authorName }}</a>{{ else }}{{ $authorName }}{{ end }}{{ if lt $i (sub $numAuthors 1) }}, {{ end }}{{ end }}
52+
{{ end }}
53+
</p>
54+
<a href="{{ .Permalink }}" class="font-semibold text-xs text-[var(--color-primary-new)] hover:underline block mt-auto pt-2 self-start">
55+
View Details {{ partial "icon.html" (dict "style" "solid" "name" "arrow-right" "class" "ml-1") }}
56+
</a>
57+
</div>
58+
</div>
59+
{{ end }}
60+
</div>
61+
{{ $workshopsPage := site.GetPage "workshops" }}
62+
{{ if and $workshopsPage (gt (len $sortedAllUpcomingEvents) 3) }}
63+
<div class="text-center mt-0">
64+
<a href="{{ $workshopsPage.RelPermalink }}" class="btn btn-new-outline">View All Events</a>
65+
</div>
66+
{{ end }}
67+
</div>
68+
{{ end }}
1169

12-
<!-- Events Column -->
70+
<!-- =================================================
71+
RECENT ACTIVITY GRID
72+
====================================================== -->
73+
<div class="grid md:grid-cols-1 lg:grid-cols-3 gap-8">
74+
<!-- Recent Event Column -->
1375
<div class="lg:col-span-1">
1476
{{ partial "homepage/whats-new/recent-event.html" $most_recent_past_event }}
15-
{{ partial "homepage/whats-new/upcoming-events.html" $sortedAllUpcomingEvents }}
1677
</div>
1778

1879
<!-- Blog Posts Column -->
@@ -21,4 +82,4 @@ <h2 class="section-title">What's New at ONM</h2>
2182
</div>
2283
</div>
2384
</div>
24-
</section>
85+
</section>

layouts/partials/logic/get_sorted_upcoming_events.html

Lines changed: 54 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -4,61 +4,63 @@
44

55
{{ $fmUpcomingEvents := where site.RegularPages "Params.upcoming" true }}
66
{{ range $fmUpcomingEvents }}
7-
{{ $allUpcomingEvents = $allUpcomingEvents | append (dict
8-
"Title" .Title
9-
"Description" .Description
10-
"Date" .Date
11-
"StartTime" .Params.start_time
12-
"EndTime" .Params.end_time
13-
"TimeZone" .Params.time_zone
14-
"Permalink" .RelPermalink
15-
"IsRecurring" false
16-
"Authors" .Params.author
17-
"Image" .Params.image
18-
)}}
7+
{{ $allUpcomingEvents = $allUpcomingEvents | append (dict
8+
"Title" .Title
9+
"Description" .Description
10+
"Date" .Date
11+
"StartTime" .Params.start_time
12+
"EndTime" .Params.end_time
13+
"TimeZone" .Params.time_zone
14+
"Permalink" .RelPermalink
15+
"IsRecurring" false
16+
"Authors" .Params.author
17+
"Image" .Params.image
18+
"EventType" (.Type | humanize | title)
19+
)}}
1920
{{ end }}
2021

2122
{{ $recurringEventData := site.Data.recurring_events.events }}
2223
{{ range $recurringEventData }}
23-
{{ if .active }}
24-
{{ $targetDayKey := .day_of_week | default "Monday" }}
25-
{{ $targetDayIndex := index $daysMap $targetDayKey | default 1 }}
26-
{{ $currentDayIndex := int $now.Weekday }}
27-
{{ $daysToAdd := sub $targetDayIndex $currentDayIndex }}
28-
{{ if lt $daysToAdd 0 }}{{ $daysToAdd = add $daysToAdd 7 }}{{ end }}
29-
{{/* Further logic to adjust daysToAdd if event is today but already passed */}}
30-
{{ if eq $daysToAdd 0 }}
31-
{{ $eventStartHour := int (substr .start_time 0 2) }}
32-
{{ $eventStartMinute := int (substr .start_time 3 2) }}
33-
{{ $nowHour := $now.Hour }}
34-
{{ $nowMinute := $now.Minute }}
35-
{{ if or (gt $nowHour $eventStartHour) (and (eq $nowHour $eventStartHour) (ge $nowMinute $eventStartMinute)) }}
36-
{{ $daysToAdd = 7 }}
37-
{{ end }}
38-
{{ end }}
39-
{{ $nextOccurrenceDate := $now.AddDate 0 0 (int $daysToAdd) }}
40-
41-
{{ $detailsPage := "" }}
42-
{{ with .details_page_link }}
43-
{{ $pagePath := strings.TrimSuffix "/" . | strings.TrimPrefix "/" }}
44-
{{ $detailsPage = site.GetPage $pagePath }}
45-
{{ end }}
46-
47-
{{ $allUpcomingEvents = $allUpcomingEvents | append (dict
48-
"Title" .title
49-
"Description" .description
50-
"Date" $nextOccurrenceDate
51-
"StartTime" .start_time
52-
"EndTime" .end_time
53-
"TimeZone" .time_zone
54-
"Permalink" (cond (ne $detailsPage nil) $detailsPage.RelPermalink (.details_page_link | relLangURL))
55-
"IsRecurring" true
56-
"Host" .host
57-
"LocationName" .location_name
58-
"LocationURL" .location_url
59-
"Image" .image
60-
)}}
61-
{{ end }}
24+
{{ if .active }}
25+
{{ $targetDayKey := .day_of_week | default "Monday" }}
26+
{{ $targetDayIndex := index $daysMap $targetDayKey | default 1 }}
27+
{{ $currentDayIndex := int $now.Weekday }}
28+
{{ $daysToAdd := sub $targetDayIndex $currentDayIndex }}
29+
{{ if lt $daysToAdd 0 }}{{ $daysToAdd = add $daysToAdd 7 }}{{ end }}
30+
{{/* Further logic to adjust daysToAdd if event is today but already passed */}}
31+
{{ if eq $daysToAdd 0 }}
32+
{{ $eventStartHour := int (substr .start_time 0 2) }}
33+
{{ $eventStartMinute := int (substr .start_time 3 2) }}
34+
{{ $nowHour := $now.Hour }}
35+
{{ $nowMinute := $now.Minute }}
36+
{{ if or (gt $nowHour $eventStartHour) (and (eq $nowHour $eventStartHour) (ge $nowMinute $eventStartMinute)) }}
37+
{{ $daysToAdd = 7 }}
38+
{{ end }}
39+
{{ end }}
40+
{{ $nextOccurrenceDate := $now.AddDate 0 0 (int $daysToAdd) }}
41+
42+
{{ $detailsPage := "" }}
43+
{{ with .details_page_link }}
44+
{{ $pagePath := strings.TrimSuffix "/" . | strings.TrimPrefix "/" }}
45+
{{ $detailsPage = site.GetPage $pagePath }}
46+
{{ end }}
47+
48+
{{ $allUpcomingEvents = $allUpcomingEvents | append (dict
49+
"Title" .title
50+
"Description" .description
51+
"Date" $nextOccurrenceDate
52+
"StartTime" .start_time
53+
"EndTime" .end_time
54+
"TimeZone" .time_zone
55+
"Permalink" (cond (ne $detailsPage nil) $detailsPage.RelPermalink (.details_page_link | relLangURL))
56+
"IsRecurring" true
57+
"Host" .host
58+
"LocationName" .location_name
59+
"LocationURL" .location_url
60+
"Image" .image
61+
"EventType" (.id | humanize | title)
62+
)}}
63+
{{ end }}
6264
{{ end }}
6365
{{ $sortedAllUpcomingEvents := sort $allUpcomingEvents "Date" "asc" }}
64-
{{ return $sortedAllUpcomingEvents }}
66+
{{ return $sortedAllUpcomingEvents }}

0 commit comments

Comments
 (0)