+
+
diff --git a/src/components/FAQs.astro b/src/components/FAQs.astro
index 98f6212..1b5717f 100644
--- a/src/components/FAQs.astro
+++ b/src/components/FAQs.astro
@@ -2,10 +2,11 @@
import { markdown } from "@astropub/md";
import { Image } from "astro:assets";
-import dropdown from "~/assets/dropdown.svg";
+import dropdown from "~/assets/glyphs/dropdown.svg";
import Heading from "./Heading.astro";
-import SquiggleFlanked from "./SquiggleFlanked.astro";
+import HeadingFlanked from "./HeadingFlanked.astro";
+import { links } from "~/data";
type FAQSection = [string, [string, string][]];
@@ -19,8 +20,8 @@ const faqs: FAQSection[] = [
[
[
"What events are you planning?",
- (await markdown(`
-We will let you know soon! This is partially dependent on corporate sponsorships. Subscribe to the newsletter to be the first to know!
+ await markdown(`
+We will let you know soon! This is partially dependent on corporate sponsorships. Subscribe to the newsletter to be the first to know!
@@ -29,21 +30,33 @@ At the very least, SquiggleConf will include:
- Social events for all attendees around the conference
- Breaks and breakout sessions during the conference
- Spaces to ask speakers questions and network with other attendees
- `)) as string,
+ `),
],
[
"What is the full schedule of events?",
- "We will let you know soon! This is partially dependent on the CFP and corporate sponsorships. Subscribe to the newsletter to be the first to know!",
+ await markdown(
+ `We will let you know soon! This is partially dependent on the CFP and corporate sponsorships. Subscribe to the newsletter to be the first to know!`,
+ ),
],
],
],
[
- "Talks",
+ "Sessions",
[
+ [
+ "How can I ask speakers questions?",
+ await markdown(`Talks have time reserved for live Q&A. Additionally, each session has a channel in Discord where you can ask questions.
+
+ We'd also encourage you to find them in-person between sessions and start conversations. They're friendly people.`),
+ ],
[
"Will talks be recorded?",
"Yes! Talks will be made available online for free after the conference.",
],
+ [
+ "Will workshops be recorded?",
+ "No, workshops are intended to be a live in-person experience.",
+ ],
],
],
[
@@ -51,43 +64,40 @@ At the very least, SquiggleConf will include:
[
[
"Do you have bulk purchasing and/or group options?",
- (await markdown(
- `
-We will later this summer. Subscribe to the newsletter to be the first to know!
-
-See also [Sponsorships](/#sponsorships) for options to get ticket discounts and promote your development brand.
- `,
- )) as string,
+ await markdown(
+ `Yes! See the [tickets purchase link](${links.tickets}) for the options.`,
+ ),
],
[
"If I can't afford a full ticket, is there a way for me to come?",
- (await markdown(
- 'We\'ll have a plethora of discounts and scholarships for diversity, local bootcamp and university students, and loyal attendees of Boston TS Club. We\'ll also have space for [volunteers](/about#volunteering).',
- )) as string,
+ await markdown(
+ `We have discounts for [bulk purchasing](${links.tickets}), a [DEI scholarship](/about#dei-scholarship}), and space for [volunteers](/about#volunteering). We also plan on reaching out to local bootcamp and university students, as well as loyal attendees of Boston TS Club.`,
+ ),
],
[
"What does or doesn't a ticket include?",
- (await markdown(
+ await markdown(
`
Your ticket gets you:
- Access to all attendee social events before, during, and after the conference
- Complete access to the talks day (Thursday, October 3rd)
+- Access to the morning workshops (Friday, October 4th)
- Light beverages and snacks through the conference day
-- One "swag bag" with branded apparel and toys
+- One "swag bag" with branded apparel and items
-Note that talk tickets do not include:
+Note that talk tickets _do not_ include:
- Meals, including lunch at Faneuil Hall Marketplace
-- Paid workshop access: those tickets will be separate and are not yet available
+- Travel to or from the conference
`,
- )) as string,
+ ),
],
[
"What is your refund policy?",
- (await markdown(
+ await markdown(
"Full refunds. If you can't make it, please let us know - we can work with you. Do not come to SquiggleConf if you have any COVID symptoms.",
- )) as string,
+ ),
],
],
],
@@ -95,9 +105,7 @@ Note that talk tickets do not include:
---
-
- FAQs
-
+ FAQs
{
@@ -128,19 +136,11 @@ Note that talk tickets do not include:
width: 100%;
}
- .squiggle-flanked {
- margin-bottom: 3rem;
- }
-
.action-button {
display: inline-block;
margin: 2rem;
}
- .h2 {
- font-size: var(--fontSizeH2);
- }
-
.faqs {
display: flex;
flex-direction: column;
diff --git a/src/components/Footer.astro b/src/components/Footer.astro
index 5b9180a..3d22ed5 100644
--- a/src/components/Footer.astro
+++ b/src/components/Footer.astro
@@ -1,7 +1,7 @@
---
-import HeroName from "~/components/HeroName.astro";
-import { locations } from "~/data";
+import { locations } from "~/data/index";
+import HeroName from "./HeroName.astro";
import LocationLink from "./LocationLink.astro";
---
diff --git a/src/components/SecondaryInfo.astro b/src/components/FunInfo.astro
similarity index 94%
rename from src/components/SecondaryInfo.astro
rename to src/components/FunInfo.astro
index 9ed75d7..8e96059 100644
--- a/src/components/SecondaryInfo.astro
+++ b/src/components/FunInfo.astro
@@ -18,7 +18,7 @@ const sections = [
[
"🛠️",
"Wonderful Workshops",
- "Oct 4th: Opt into a half-day workshop of your choice from our speakers and sponsors.",
+ "Oct 4th: Opt into a morning workshop of your choice from our speakers and sponsors.",
],
];
---
@@ -45,15 +45,16 @@ const sections = [
.secondary-info {
align-items: center;
display: flex;
- row-gap: 2rem;
- justify-content: space-between;
flex-wrap: wrap;
font-family: var(--fontFamilyHeading);
+ justify-content: space-between;
+ list-style: none;
+ margin: auto;
max-width: var(--widthBodyFull);
padding: 0 var(--widthBodyPadding);
+ row-gap: 2rem;
text-align: center;
width: 100%;
- margin: auto;
}
.emoji {
diff --git a/src/components/Header.astro b/src/components/Header.astro
index 71f8d07..0b1bc50 100644
--- a/src/components/Header.astro
+++ b/src/components/Header.astro
@@ -5,6 +5,7 @@
HomeAbout UsFAQs
+ SessionsSpeakersTravel
+
+
diff --git a/src/data.ts b/src/data.ts
deleted file mode 100644
index efb5ee4..0000000
--- a/src/data.ts
+++ /dev/null
@@ -1,73 +0,0 @@
-import bluesky from "./assets/bluesky.svg";
-import discord from "./assets/discord.svg";
-import github from "./assets/github.svg";
-import linkedin from "./assets/linkedin.svg";
-import mastodon from "./assets/mastodon.svg";
-import thisWeekInReact from "./assets/partners/this-week-in-react.png";
-import inngestBlack from "./assets/sponsors/inngest-black.svg";
-import openjsFoundationColor from "./assets/sponsors/openjs-foundation-color.svg";
-import twitter from "./assets/twitter.svg";
-
-export const links = {
- scholarship: "https://forms.gle/pnoAmVgijk3p4j5C7",
- tickets: "https://buytickets.at/squiggleconf/1249793/r/website",
- volunteer: "https://forms.gle/YfRvmSPBMpGe3T2g9",
-};
-
-export const partners = [
- {
- href: "https://thisweekinreact.com?utm_source=squiggleconf",
- logo: thisWeekInReact,
- title: "This Week In React",
- },
-];
-
-export const sponsors = [
- {
- href: "https://inngest.com?utm_source=squiggleconf",
- logo: inngestBlack,
- title: "Inngest",
- },
- {
- href: "https://openjsf.org?utm_source=squiggleconf",
- logo: openjsFoundationColor,
- title: "OpenJS Foundation",
- },
-];
-
-const socials = [
- {
- alt: "Bluesky",
- href: "https://bsky.app/profile/squiggleconf.com",
- src: bluesky,
- },
- {
- alt: "LinkedIn",
- href: "https://www.linkedin.com/company/squiggleconf",
- src: linkedin,
- },
- {
- alt: "Mastodon",
- href: "https://fosstodon.org/@SquiggleConf",
- src: mastodon,
- },
- {
- alt: "Twitter",
- href: "https://twitter.com/SquiggleConf",
- src: twitter,
- },
-];
-
-export const locations = [
- ...socials,
- {
- alt: "GitHub",
- href: "https://www.github.com/SquiggleTools/SquiggleConf",
- src: github,
- },
- {
- alt: "Discord",
- href: "https://discord.squiggleconf.com",
- src: discord,
- },
-].sort((a, b) => a.alt.localeCompare(b.alt));
diff --git a/src/data/index.ts b/src/data/index.ts
new file mode 100644
index 0000000..5ff410d
--- /dev/null
+++ b/src/data/index.ts
@@ -0,0 +1,137 @@
+import youtube from "../assets/logos/YouTube.svg";
+import bluesky from "../assets/logos/bluesky.svg";
+import discord from "../assets/logos/discord.svg";
+import github from "../assets/logos/github.svg";
+import linkedin from "../assets/logos/linkedin.svg";
+import mastodon from "../assets/logos/mastodon.svg";
+import twitter from "../assets/logos/twitter.svg";
+import jsParty from "../assets/partners/js-party.png";
+import thisWeekInReactDarkMode from "../assets/partners/this-week-in-react-dark-mode.png";
+import thisWeekInReactLightMode from "../assets/partners/this-week-in-react-light-mode.png";
+import inngest from "../assets/sponsors/inngest.svg";
+import inngestBlack from "../assets/sponsors/inngest-black.svg";
+import openjsFoundationColor from "../assets/sponsors/openjs-foundation-color.svg";
+import openjsFoundationLight from "../assets/sponsors/openjs-foundation-light.svg";
+
+export type { Person, TalkFormat, TalkInfo } from "./notion-data.js";
+import * as notionData from "./notion-data.js";
+
+export const partners = [
+ {
+ href: "https://changelog.com/jsparty?utm_source=squiggleconf",
+ logos: {
+ dark: jsParty,
+ light: jsParty,
+ },
+ title: "JS Party",
+ },
+ {
+ href: "https://thisweekinreact.com?utm_source=squiggleconf",
+ logos: {
+ dark: thisWeekInReactDarkMode,
+ light: thisWeekInReactLightMode,
+ },
+ title: "This Week In React",
+ },
+];
+
+export const links = {
+ scholarship: "https://forms.gle/pnoAmVgijk3p4j5C7",
+ tickets: "https://ticket.squiggleconf.com",
+ volunteer: "https://volunteer.squiggleconf.com",
+};
+
+export const sponsors = [
+ {
+ href: "https://inngest.com?utm_source=squiggleconf",
+ logos: {
+ dark: inngest,
+ light: inngestBlack,
+ },
+ title: "Inngest",
+ },
+ {
+ href: "https://openjsf.org?utm_source=squiggleconf",
+ logos: {
+ dark: openjsFoundationLight,
+ light: openjsFoundationColor,
+ },
+ title: "OpenJS Foundation",
+ },
+];
+
+export const locations = [
+ {
+ alt: "Bluesky",
+ href: "https://bsky.app/profile/squiggleconf.com",
+ src: bluesky,
+ },
+ {
+ alt: "LinkedIn",
+ href: "https://www.linkedin.com/company/squiggleconf",
+ src: linkedin,
+ },
+ {
+ alt: "Mastodon",
+ href: "https://fosstodon.org/@SquiggleConf",
+ src: mastodon,
+ },
+ {
+ alt: "Twitter",
+ href: "https://twitter.com/SquiggleConf",
+ src: twitter,
+ },
+ {
+ alt: "YouTube",
+ href: "https://www.youtube.com/@SquiggleConf",
+ src: youtube,
+ },
+ {
+ alt: "GitHub",
+ href: "https://www.github.com/SquiggleTools/SquiggleConf",
+ src: github,
+ },
+ {
+ alt: "Discord",
+ href: "https://discord.squiggleconf.com",
+ src: discord,
+ },
+].sort((a, b) => a.alt.localeCompare(b.alt));
+
+type TalkSlug = keyof typeof notionData.talksBySlug;
+
+const talksToExclude: TalkSlug[] = [
+ // (Sylwia might not be able to make it 😢)
+ "workshop-sylwia-vargas",
+];
+
+const sortOrder: TalkSlug[] = [
+ // Full
+ "talk-robby-russell",
+ "talk-aakansha-doshi",
+ "talk-dan-vanderkam",
+ "talk-don-isaac",
+ "talk-jess-lin",
+ "talk-loris-cro",
+ "talk-rick-viscomi",
+ "talk-rizel-scarlett",
+ "talk-titian-cernicova-dragomir",
+ // Lightning
+ "talk-rachel-nabors",
+ "talk-chris-griffing",
+ "talk-laurynas-keturakis",
+ "talk-corina-murg",
+ "talk-yagiz-nizipli",
+ // Workshop
+ "workshop-katerina-and-max",
+ "workshop-sylwia-vargas",
+];
+
+// sort by sortOrder
+export const talks = Object.values(notionData.talksBySlug)
+ .filter((t) => !talksToExclude.includes(t.slug))
+ .sort((a, b) => {
+ const aIndex = sortOrder.indexOf(a.slug);
+ const bIndex = sortOrder.indexOf(b.slug);
+ return aIndex - bIndex;
+ });
diff --git a/src/data/notion-data.ts b/src/data/notion-data.ts
new file mode 100644
index 0000000..9fdd128
--- /dev/null
+++ b/src/data/notion-data.ts
@@ -0,0 +1,570 @@
+export interface PersonLinks {
+ bluesky: null | string;
+ github: null | string;
+ gitlab: null | string;
+ linkedin: null | string;
+ mastodon: null | string;
+ medium: null | string;
+ twitch: null | string;
+ twitter: null | string;
+ website: null | string;
+ youtube: null | string;
+}
+
+export interface Person {
+ bio: null | string;
+ links: PersonLinks;
+ name: string;
+ qualification: null | string;
+ role: null | string;
+ slug: string;
+}
+
+export const peopleBySlug = {
+ "aakansha-doshi": {
+ bio: "Aakansha is passionate about Free and open-source software (FOSS) and loves deep diving into the internals of Web and Javascript. She is a core maintainer of excalidraw, react-tags, mermaid-to-excalidraw and more. She also leads the FOSS meetups in Bangalore, India. Beyond her tech interests, she is a big foodie, loves traveling, and spending quality time with her family.",
+ links: {
+ bluesky: null,
+ github: "https://github.com/ad1992",
+ gitlab: null,
+ linkedin: "https://www.linkedin.com/in/aa1992",
+ mastodon: null,
+ medium: null,
+ twitch: null,
+ twitter: "https://x.com/aakansha1216",
+ website: null,
+ youtube: null,
+ },
+ name: "Aakansha Doshi",
+ qualification: "[Excalidraw](https://excalidraw.com/) Core Maintainer",
+ role: "Open Source",
+ slug: "aakansha-doshi",
+ },
+ "chris-griffing": {
+ bio: "I love building things on my Twitch stream and some of those things have been CLI tools. When you are creating binaries, you sometimes want people to be able to extend your tools with their own functionality. The simplest path has traditionally been exposing a server API for someone to interact with but many security-minded users are averse to the idea of a tool they use running a local http server. You can give your users extensibility without the need for a local http server and at the same time allow them to use any of the languages supported by the Extism toolkit.",
+ links: {
+ bluesky: null,
+ github: "https://github.com/cmgriffing",
+ gitlab: null,
+ linkedin: "https://www.linkedin.com/in/cmgriffing",
+ mastodon: null,
+ medium: null,
+ twitch: "https://twitch.tv/cmgriffing",
+ twitter: "https://x.com/cmgriffing",
+ website: "https://chrisgriffing.com",
+ youtube: "https://youtube.com/@cmgriffing",
+ },
+ name: "Chris Griffing",
+ qualification: "WASM Fanatic",
+ role: "[GitKraken](https://www.gitkraken.com/)",
+ slug: "chris-griffing",
+ },
+ "corina-murg": {
+ bio: "I’m a certified accessibility engineer and founder of Web for Everyone, an initiative dedicated to introducing accessibility concepts to frontend developers. I’m also the accessibility specialist for Gridiron Survivor, an open source project building a SaaS application. In my previous career as a high school math teacher, I was regularly concerned with creating learning experiences that were accessible and welcoming to each and everyone of my students. Teaching a legally blind student first introduced me to the concept of digital accessibility. Through my work in frontend development, I want to make sure that everyone, including my former student and other people with disabilities, can easily navigate and understand the products and services we build. Outside coding, I love reading and memorizing poems, as well as taking walks with my cat.",
+ links: {
+ bluesky: null,
+ github: "https://github.com/CorinaMurg",
+ gitlab: null,
+ linkedin: "https://www.linkedin.com/in/corinamurg",
+ mastodon: null,
+ medium: null,
+ twitch: null,
+ twitter: "https://x.com/CorinaMurg",
+ website: "https://webforeveryone.us",
+ youtube: null,
+ },
+ name: "Corina Murg",
+ qualification: "Accessibility Engineer",
+ role: "Founder, [Web for Everyone](https://webforeveryone.us/)",
+ slug: "corina-murg",
+ },
+ "dan-vanderkam": {
+ bio: "",
+ links: {
+ bluesky: null,
+ github: "https://github.com/danvk",
+ gitlab: null,
+ linkedin: "https://www.linkedin.com/in/danvk",
+ mastodon: null,
+ medium: null,
+ twitch: null,
+ twitter: "https://x.com/danvdk",
+ website: null,
+ youtube: null,
+ },
+ name: "Dan Vanderkam",
+ qualification: "TypeScript Compiler Contributor",
+ role: "[_Effective TypeScript_](https://effectivetypescript.com/) Author",
+ slug: "dan-vanderkam",
+ },
+ "don-isaac": {
+ bio: "My name is Don, and I work on next-gen tooling for finding incorrect code both statically and dynamically. I currently work on both Oxc and an autonomous UI testing agent, and have been writing code for over 10 years.",
+ links: {
+ bluesky: null,
+ github: "https://github.com/DonIsaac",
+ gitlab: null,
+ linkedin: "https://www.linkedin.com/in/donaldisaac",
+ mastodon: null,
+ medium: null,
+ twitch: null,
+ twitter: "https://x.com/Don_dev_",
+ website: null,
+ youtube: null,
+ },
+ name: "Don Isaac",
+ qualification:
+ "[JavaScript Oxidation Compiler](https://oxc.rs/) Maintainer",
+ role: "",
+ slug: "don-isaac",
+ },
+ "fatima-sarah-khalid": {
+ bio: "As a Developer Evangelist at GitLab, Fatima specializes in CI/CD, community building, and evangelizing AI-powered workflows. She is deeply passionate about open source and is committed to building more inclusive tech communities. Better known as \"sugaroverflow\" on the internet, she's known for storytelling, simplifying technical concepts, and keynotes on inclusion & ally-ship. In recognition of her contributions to technology and advocacy, she received the WCT Rising Star award in 2018. When she's not playing board games with friends, you'll find her reading science fiction by the ocean.",
+ links: {
+ bluesky: "https://bsky.app/profile/sugaroverflow.bsky.social",
+ github: "https://github.com/sugaroverflow",
+ gitlab: "https://gitlab.com/sugaroverflow",
+ linkedin: "https://www.linkedin.com/in/sugaroverflow",
+ mastodon: "https://hachyderm.io/@sugaroverflow",
+ medium: null,
+ twitch: null,
+ twitter: "https://x.com/sugaroverflow",
+ website: null,
+ youtube: null,
+ },
+ name: "Fatima Sarah Khalid",
+ qualification: "Developer Evangelist, [GitLab](https://gitlab.com/)",
+ role: "",
+ slug: "fatima-sarah-khalid",
+ },
+ "jess-lin": {
+ bio: 'I\'ve been a software engineer for a decade. I first worked on an open source IDE at Facebook in 2013; then moved to ads at Pinterest, collaboration tools at Stripe, and absolutely everything at Instabase when it was only 5 people. In recent years, I\'ve enjoyed roles that bring me close to users, first as a deployed engineer at Retool and now as a devrel at Render.On software teams, I\'ve always found myself helping colleagues communicate their technical ideas. With my background, I can help engineers efficiently and with a lot of empathy. I’ve produced, written, and ghostwritten successful tech blog posts that have hit the front page of Hacker News and been featured in prominent newsletters.This talk came out of a colleague at Render asking me to explain all the edits I made to his posts \\(he could see the "what" but not the "why"\\)—and SquiggleConf is the perfect excuse to sit down and explain!',
+ links: {
+ bluesky: null,
+ github: "https://github.com/jssln",
+ gitlab: null,
+ linkedin: "https://www.linkedin.com/in/jessica-lin-17b0771b",
+ mastodon: null,
+ medium: null,
+ twitch: null,
+ twitter: "https://x.com/jesstyping",
+ website: "https://www.jssln.com",
+ youtube: null,
+ },
+ name: "Jess Lin",
+ qualification: "Software Engineer & Technical Writer",
+ role: "DevRel, [Render](https://render.com/)",
+ slug: "jess-lin",
+ },
+ "katerina-skroumpelou": {
+ bio: "",
+ links: {
+ bluesky: null,
+ github: "https://github.com/mandarini",
+ gitlab: null,
+ linkedin: null,
+ mastodon: "https://mas.to/@psybercity",
+ medium: "https://pakotinia.medium.com",
+ twitch: null,
+ twitter: "https://x.com/psybercity",
+ website: "https://psyber.city",
+ youtube: null,
+ },
+ name: "Katerina Skroumpelou",
+ qualification: "Senior Engineer, [Nx](https://nx.dev/)",
+ role: "Google Developer Expert for Angular",
+ slug: "katerina-skroumpelou",
+ },
+ "laurynas-keturakis": {
+ bio: "I'm a full-stack software engineer building API tools at Fiberplane. I care about open source observability tools and focus on making them more accessible for every day developers.",
+ links: {
+ bluesky: "https://bsky.app/profile/laurynas.cc",
+ github: "https://github.com/keturiosakys",
+ gitlab: null,
+ linkedin: "https://www.linkedin.com/in/lketurakis",
+ mastodon: "https://hachyderm.io/@laurynas",
+ medium: null,
+ twitch: null,
+ twitter: "https://x.com/_laurynas",
+ website: "https://laurynas.cc",
+ youtube: null,
+ },
+ name: "Laurynas Keturakis",
+ qualification: "[fpx](https://github.com/fiberplane/fpx) Maintainer",
+ role: "Developer, [Fiberplane](https://fiberplane.com/)",
+ slug: "laurynas-keturakis",
+ },
+ "loris-cro": {
+ bio: "Hi, I'm Loris. I work at the Zig Software Foundation, and my main job is to help Zig grow a vibrant community and ecosystem. While, like most people, I started with only high-level programming languages, Zig has introduced me to systems programming and shown me all the design choices that previous programming languages had precluded me from accessing. I now use my newfound superpowers to try to write performant and robust applications, and on occasion I even succeed :^\\)",
+ links: {
+ bluesky: "https://bsky.app/profile/kristoff.it",
+ github: "https://github.com/kristoff-it",
+ gitlab: null,
+ linkedin: "https://linkedin.com/in/kristoff-it",
+ mastodon: "https://hachyderm.io/@kristoff",
+ medium: null,
+ twitch: "https://www.twitch.tv/kristoff_it",
+ twitter: "https://x.com/croloris",
+ website: "https://kristoff.it",
+ youtube: "https://www.youtube.com/@ZigSHOWTIME",
+ },
+ name: "Loris Cro",
+ qualification: "Zig Livecoder",
+ role: "VP Community, [Zig Software Foundation](https://ziglang.org/zsf/)",
+ slug: "loris-cro",
+ },
+ "max-kless": {
+ bio: "",
+ links: {
+ bluesky: null,
+ github: "https://github.com/MaxKless",
+ gitlab: null,
+ linkedin: "https://www.linkedin.com/in/max-kless-398530216",
+ mastodon: null,
+ medium: null,
+ twitch: null,
+ twitter: "https://x.com/MaxKless",
+ website: null,
+ youtube: null,
+ },
+ name: "Max Kless",
+ qualification:
+ "[Nx Console](https://github.com/nrwl/nx-console) VSCode Extension Maintainer",
+ role: "Senior Engineer, [Nx](https://nx.dev/)",
+ slug: "max-kless",
+ },
+ "nick-nisi": {
+ bio: "I’ve been immersed in TypeScript for over a decade, bringing my experience and expertise to a variety of companies and contributing to significant projects like The Dojo Toolkit and Codesandbox. I’m a panelist on the popular JavaScript podcast, JS Party, where I have the pleasure of interviewing and learning from the best in the industry. Currently, I’m a software engineer at a leading tech company, and I actively engage with the tech community by speaking at conferences and sharing my passion for web development, TypeScript, and Vim. My goal is to foster a collaborative environment and inspire fellow developers. When I’m not coding or podcasting, I’m practicing my public speaking through the art of karaoke, or being kept on my toes by my two kids who ensure life is never dull!",
+ links: {
+ bluesky: "https://bsky.app/profile/nicknisi.com",
+ github: "https://github.com/nicknisi",
+ gitlab: null,
+ linkedin: "https://linkedin.com/in/nicknisi",
+ mastodon: "https://fediverse.nicknisi.com/@nicknisi",
+ medium: null,
+ twitch: null,
+ twitter: "https://x.com/nicknisi",
+ website: "https://nicknisi.com",
+ youtube: "https://www.youtube.com/nicknisi",
+ },
+ name: "Nick Nisi",
+ qualification: "MC for [TS Conf](https://archive.tsconf.io/2021/)",
+ role: "Panelist of [JS Party](https://changelog.com/jsparty)",
+ slug: "nick-nisi",
+ },
+ "rachel-nabors": {
+ bio: "Rachel Lee Nabors has led developer education at FAANG companies and startups. They've participated in browser development, web animation standards and open source with Mozilla, W3C, and Microsoft and wrote “Animation at Work.” Most recently, they built award-winning React and React Native dev portals at Meta. Currently, they live in London, writing a book on how to survive your tech career.",
+ links: {
+ bluesky: null,
+ github: "https://github.com/rachelnabors",
+ gitlab: null,
+ linkedin: "https://linkedin.com/in/rachelnabors",
+ mastodon: "https://toot.cafe/@rachelnabors",
+ medium: null,
+ twitch: "https://www.twitch.tv/nearestnabors",
+ twitter: "https://x.com/rachelnabors",
+ website: null,
+ youtube: null,
+ },
+ name: "Rachel Nabors",
+ qualification: "Author, Cartoonist, and DevRel Extraordinaire",
+ role: "",
+ slug: "rachel-nabors",
+ },
+ "rick-viscomi": {
+ bio: "I'm a web performance engineer working on the Chrome Web DevRel team at Google, where my mission is to make the web faster. My role is to promote web performance best practices to help developers succeed with Core Web Vitals, and a major part of that is giving developers the right tools to measure and debug slow user experiences. I'm currently working closely with the Chrome DevTools team on the next generation Performance panel, and since 2017 I've been working on the Chrome UX Report, a public dataset of real-world performance data from millions of websites. I've also built several tools including the Core Web Vitals Technology Report and the CrUX Dashboard to help developers track performance and discover opportunities for improvement, and I co-wrote Using WebPageTest, a book about the web performance testing tool.",
+ links: {
+ bluesky: null,
+ github: "https://github.com/rviscomi",
+ gitlab: null,
+ linkedin: null,
+ mastodon: null,
+ medium: null,
+ twitch: null,
+ twitter: "https://x.com/rick_viscomi",
+ website: "https://rviscomi.dev",
+ youtube: "https://www.youtube.com/@RickViscomi",
+ },
+ name: "Rick Viscomi",
+ qualification: "[Chrome](https://www.google.com/chrome/) Team, Google",
+ role: "Web Performance DevRel",
+ slug: "rick-viscomi",
+ },
+ "rizel-scarlett": {
+ bio: "I am a Staff Developer Advocate at TBD, Block's newest business unit. At TBD, we're shifting the paradigm by converting open standards into open source SDKs that make cross border payments and data ownership more accessible for users. I'm responsible for helping people understand how to use the SDKs through documentation, content creation, conference talks, and practical code examples. With a diverse background spanning GitHub, startups, and non-profit organizations, I have cultivated a passion for utilizing emerging technologies to champion equity within the tech industry. I moonlight as an Advisor at G{Code} House, an organization aimed at teaching women of color and non-binary people of color to code. I believe in leveraging vulnerability, honesty, and kindness as means to educate early-career developers.",
+ links: {
+ bluesky: null,
+ github: "https://github.com/blackgirlbytes",
+ gitlab: null,
+ linkedin: "https://linkedin.com/in/rizel-bobb-semple",
+ mastodon: "https://hachyderm.io/@blackgirlbytes",
+ medium: null,
+ twitch: null,
+ twitter: "https://x.com/blackgirlbytes",
+ website: null,
+ youtube: null,
+ },
+ name: "Rizèl Scarlett",
+ qualification: "",
+ role: "Staff Developer Advocate, [TBD](https://developer.tbd.website/)",
+ slug: "rizel-scarlett",
+ },
+ "robby-russell": {
+ bio: "Hi, I'm Robby Russell, the creator of Oh My Zsh, one of the most popular open-source projects on GitHub with nearly 2,400 contributors. As I reflect on the 15th anniversary of its release, I remember creating Oh My Zsh to scratch a selfish itch within my small team, never anticipating its widespread adoption. By attending my talk, you'll gain a deeper understanding of why it became successful, learn from the unexpected journey, and discover valuable lessons that can help you in your own projects.",
+ links: {
+ bluesky: null,
+ github: "https://github.com/robbyrussell",
+ gitlab: null,
+ linkedin: "http://www.linkedin.com/in/robbyrussell",
+ mastodon: "https://ruby.social/@robbyrussell",
+ medium: null,
+ twitch: null,
+ twitter: "https://x.com/robbyrussell",
+ website: null,
+ youtube: null,
+ },
+ name: "Robby Russell",
+ qualification: "[Oh My Zsh](https://ohmyz.sh/) Creator",
+ role: "CEO, [Planet Argon](https://www.planetargon.com/)",
+ slug: "robby-russell",
+ },
+ "sylwia-vargas": {
+ bio: "",
+ links: {
+ bluesky: null,
+ github: null,
+ gitlab: null,
+ linkedin: null,
+ mastodon: null,
+ medium: null,
+ twitch: null,
+ twitter: "https://x.com/SylwiaVargas",
+ website: null,
+ youtube: null,
+ },
+ name: "Sylwia Vargas",
+ qualification: "",
+ role: "",
+ slug: "sylwia-vargas",
+ },
+ "titian-cernicova-dragomir": {
+ bio: "Hi, I’m Titian! I’m a software engineer on the JavaScript Infrastructure team at Bloomberg, where I work on JavaScript and TypeScript tooling for the company’s internal developers. I am passionate about TypeScript and, together with my colleagues, have contributed to TypeScript features such as Private Methods in classes and Isolated Declarations. I also enjoy answering questions about TypeScript, so you might have come across one of my Stack Overflow answers. Feel free to ask me any questions! In my free time, I love spending time with my lovely wife, two kids, and my fully gray cat.",
+ links: {
+ bluesky: null,
+ github: "https://github.com/dragomirtitian",
+ gitlab: null,
+ linkedin: "https://uk.linkedin.com/in/titian-cernicova-dragomir-2b37457a",
+ mastodon: null,
+ medium: null,
+ twitch: null,
+ twitter: "https://x.com/TitianCernicova",
+ website: null,
+ youtube: null,
+ },
+ name: "Titian Cernicova-Dragomir",
+ qualification: "TypeScript Compiler Contributor",
+ role: "Software Engineer, [Bloomberg](https://www.bloomberg.com/)",
+ slug: "titian-cernicova-dragomir",
+ },
+ "yagiz-nizipli": {
+ bio: "I’m Yagiz Nizipli. I’m a Node.js Technical Steering committee member, and a Principal Systems Engineer at Cloudflare. With a deep passion for performance optimization, I’ve made significant improvements to Node.js performance by having more than 250+ contributions. I’ve written several tools such as “node —run” and “node —env-file”. I’m also the author of Ada URL Parser, the implementation used by Node.js and Cloudflare workers.",
+ links: {
+ bluesky: null,
+ github: "https://github.com/anonrig",
+ gitlab: null,
+ linkedin: null,
+ mastodon: null,
+ medium: null,
+ twitch: null,
+ twitter: "https://x.com/yagiznizipli",
+ website: "https://yagiz.co",
+ youtube: null,
+ },
+ name: "Yagiz Nizipli",
+ qualification:
+ "[Node.JS TSC](https://github.com/nodejs/TSC) Member, a top Node.JS [Contributor](https://github.com/nodejs/node/commits?author=anonrig)",
+ role: "Principal Systems Engineer, [Cloudflare](https://www.cloudflare.com/)",
+ slug: "yagiz-nizipli",
+ },
+} satisfies Record;
+
+export type TalkFormat = "Full" | "Lightning" | "Workshop";
+
+export interface TalkInfo {
+ description: string;
+ people: Person[];
+ slug: string;
+ tags: string[];
+ talkFormat: TalkFormat;
+ title: string;
+}
+
+export const talksBySlug: Record = {
+ "talk-aakansha-doshi": {
+ description:
+ "How do we manipulate pixels in a DOM-oriented world? HTML \\