diff --git a/frontend/src/pages/lectures/Lectures.tsx b/frontend/src/pages/lectures/Lectures.tsx index b5317a1..aa1b21b 100644 --- a/frontend/src/pages/lectures/Lectures.tsx +++ b/frontend/src/pages/lectures/Lectures.tsx @@ -90,7 +90,7 @@ interface InPersonEvent { interface Competition { title: string; startDate: string; - endDate: string; + endDate?: string; location: string; lumaUrl: string; description?: string; @@ -131,7 +131,15 @@ const inPersonEvents: InPersonEvent[] = [ }, ]; -const kernelCompetitions: EventItem[] = [ +const kernelCompetitions: Competition[] = [ + { + title: "Linear Algebra Kernels For The Age Of Research", + startDate: "2026-06-12", + location: "Online", + lumaUrl: "/news/linear-algebra-kernels-age-of-research", + description: + "Open competition on classical linear algebra kernels, starting with QR and eigh on B200.", + }, { title: "The $1.1M AMD x GPU MODE - E2E Model Speedrun", startDate: "2026-03-06", @@ -237,8 +245,12 @@ function InPersonEventCard({ event }: { event: InPersonEvent }) { } function CompetitionCard({ event }: { event: Competition }) { - const ongoing = isOngoing(event.startDate, event.endDate); - const duration = getDurationDays(event.startDate, event.endDate); + const ongoing = event.endDate + ? isOngoing(event.startDate, event.endDate) + : parseLocalDate(event.startDate) <= new Date(); + const duration = event.endDate + ? getDurationDays(event.startDate, event.endDate) + : null; return ( @@ -251,8 +263,11 @@ function CompetitionCard({ event }: { event: Competition }) { {event.title} - {formatDate(event.startDate)} - {formatDate(event.endDate)} ({duration}{" "} - days) · {event.location} + {event.endDate + ? `${formatDate(event.startDate)} - ${formatDate( + event.endDate, + )} (${duration} days) · ${event.location}` + : `Open now · ${event.location}`} {event.description && ( @@ -318,7 +333,7 @@ export default function Lectures() { (e) => parseLocalDate(e.date) >= now, ); const activeCompetitions = kernelCompetitions.filter( - (e) => parseLocalDate(e.endDate) >= now, + (e) => !e.endDate || parseLocalDate(e.endDate) >= now, ); return (