From 7ae48deb29539ed81a20ce4df5584069baef8110 Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Mon, 9 Jun 2025 22:40:55 +0200 Subject: [PATCH 01/13] Commit Sched data to JSON files --- .github/workflows/{prettier.yml => check.yml} | 6 +- .github/workflows/conference-sync.yml | 23 + .../count-speakers-without-details.ts | 40 + scripts/sync-sched/schedule-2023.json | 4415 +++++++++++++++ scripts/sync-sched/schedule-2024.json | 4746 +++++++++++++++++ scripts/sync-sched/schedule-2025.json | 93 + scripts/sync-sched/speakers.json | 1874 +++++++ scripts/sync-sched/sync.ts | 414 ++ src/app/conf/2023/_data.ts | 85 +- src/app/conf/2024/_data.ts | 85 +- src/app/conf/2025/_data.ts | 21 + src/app/conf/2025/_videos.ts | 10 + src/app/conf/_api/sched-client.tsx | 194 + src/app/conf/_api/sched-data.tsx | 20 + src/app/conf/_api/sched-types.ts | 31 + src/get-github-info.ts | 1 - src/github-stats.json | 2 +- tsconfig.json | 2 +- 18 files changed, 11896 insertions(+), 166 deletions(-) rename .github/workflows/{prettier.yml => check.yml} (81%) create mode 100644 .github/workflows/conference-sync.yml create mode 100644 scripts/sync-sched/count-speakers-without-details.ts create mode 100644 scripts/sync-sched/schedule-2023.json create mode 100644 scripts/sync-sched/schedule-2024.json create mode 100644 scripts/sync-sched/schedule-2025.json create mode 100644 scripts/sync-sched/speakers.json create mode 100644 scripts/sync-sched/sync.ts create mode 100644 src/app/conf/2025/_data.ts create mode 100644 src/app/conf/2025/_videos.ts create mode 100644 src/app/conf/_api/sched-client.tsx create mode 100644 src/app/conf/_api/sched-data.tsx create mode 100644 src/app/conf/_api/sched-types.ts diff --git a/.github/workflows/prettier.yml b/.github/workflows/check.yml similarity index 81% rename from .github/workflows/prettier.yml rename to .github/workflows/check.yml index 0a3bc08fef..0983094d3e 100644 --- a/.github/workflows/prettier.yml +++ b/.github/workflows/check.yml @@ -1,4 +1,4 @@ -name: Prettier Check +name: Lint and check formatting on: pull_request @@ -16,5 +16,9 @@ jobs: - name: Install Dependencies run: pnpm i + + - name: Run ESLint + run: pnpm lint --quiet + - name: Run Prettier Check run: pnpm format:check diff --git a/.github/workflows/conference-sync.yml b/.github/workflows/conference-sync.yml new file mode 100644 index 0000000000..9c64629ccb --- /dev/null +++ b/.github/workflows/conference-sync.yml @@ -0,0 +1,23 @@ +# Sched's API rate limits are very limited, so we sync non-critical part of the data on a cron. +on: + schedule: + - cron: "*/10 * * * *" # every ten minutes + +jobs: + sync: + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Sync conference data from Sched + run: | + tsx scripts/sync-sched/sync.ts --year 2025 + + - name: Commit changes + uses: stefanzweifel/git-auto-commit-action@v5 + with: + file_pattern: "scripts/sync-sched/*.json" + commit_message: "Sync conference data from Sched" diff --git a/scripts/sync-sched/count-speakers-without-details.ts b/scripts/sync-sched/count-speakers-without-details.ts new file mode 100644 index 0000000000..42b2c077a8 --- /dev/null +++ b/scripts/sync-sched/count-speakers-without-details.ts @@ -0,0 +1,40 @@ +#!/usr/bin/env tsx + +import { join } from "node:path" +import { readFile } from "node:fs/promises" + +import type { SchedSpeaker } from "@/app/conf/_api/sched-types" + +/** + * We count the number of speakers we didn't sync details for + * to make sure we have social URLs for everybody. + */ +;(async function main() { + try { + const speakersFilePath = join(import.meta.dirname, "speakers.json") + + console.log("Reading speakers.json...") + + const speakersData = await readFile(speakersFilePath, "utf-8") + const speakers: SchedSpeaker[] = JSON.parse(speakersData) + + const speakersWithoutDetails = speakers.filter( + speaker => !speaker["~syncedDetailsAt"], + ) + + console.log(`Total speakers: ${speakers.length}`) + console.log( + `Speakers without ~syncedDetailsAt: ${speakersWithoutDetails.length}`, + ) + + if (speakersWithoutDetails.length > 0) { + console.log("\nSpeakers missing details:") + for (const speaker of speakersWithoutDetails) { + console.log(`- ${speaker.username} (${speaker.name || "No name"})`) + } + } + } catch (error) { + console.error("Error:", error) + process.exit(1) + } +})() diff --git a/scripts/sync-sched/schedule-2023.json b/scripts/sync-sched/schedule-2023.json new file mode 100644 index 0000000000..d2f715ae58 --- /dev/null +++ b/scripts/sync-sched/schedule-2023.json @@ -0,0 +1,4415 @@ +[ + { + "event_key": "511231", + "active": "Y", + "pinned": "N", + "name": "Registration & Badge Pick-Up", + "event_start": "2023-09-19 10:00", + "event_end": "2023-09-19 16:30", + "event_type": "Registration + Badge Pick-Up", + "goers": "66", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula Foyer", + "id": "247898ad29d5e594611af3cecf82f5e3", + "venue_id": "1749431", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "19", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "10:00am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "19", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "4:30pm", + "start_date": "2023-09-19", + "start_time": "10:00:00", + "start_time_ts": 1695142800, + "end_date": "2023-09-19", + "end_time": "16:30:00", + "event_type_sort": 5, + "description": "" + }, + { + "event_key": "511227", + "active": "Y", + "pinned": "N", + "name": "Unconference Planning Session", + "event_start": "2023-09-19 10:30", + "event_end": "2023-09-19 12:00", + "event_type": "Unconference", + "description": "An unconference is a participant-driven, informal event where attendees collaboratively create the agenda and lead discussions. Unlike the predetermined schedules and speakers of a traditional conference, an unconference allows for spontaneous and dynamic interactions, fostering an open and inclusive learning environment.\n\nHow to Prepare to Attend an Unconference", + "goers": "16", + "seats": "0", + "invite_only": "N", + "venue": "Sandpebble A&B", + "id": "d53044f7df10bcb5a53e6908670c41c1", + "venue_id": "1749449", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "19", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "10:30am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "19", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "12:00pm", + "start_date": "2023-09-19", + "start_time": "10:30:00", + "start_time_ts": 1695144600, + "end_date": "2023-09-19", + "end_time": "12:00:00", + "event_type_sort": 8 + }, + { + "event_key": "491989", + "active": "Y", + "pinned": "N", + "name": "Carmen San Diego GraphQL API Federation Challenge: Hunt for the Elusive Master Thief! - LeRenzo Malcom, Miro [Pre-Registration Required]", + "event_start": "2023-09-19 10:30", + "event_end": "2023-09-19 12:00", + "event_type": "Workshops", + "event_subtype": "Spec Fusion", + "description": "Embark on an exciting adventure in the world of GraphQL API federation with a thrilling twist inspired by Carmen San Diego! In this immersive workshop, students will be divided into teams and compete to find Carmen San Diego before anyone else using their GraphQL skills. The workshop starts off with an introduction to GraphQL API federation, where students will learn about the power and flexibility of GraphQL and its federation capabilities. Then the teams will be formed, and the competition scenario will be revealed—finding Carmen San Diego! Each team will create their own HQ and extend the federated graph, adding new services, connections, and data sources to gather clues and track down Carmen. They can also try to thwart other teams by giving them false clues. Real-time collaboration and problem-solving will be crucial to stay ahead. Join us for an unforgettable workshop that brings together technology and adventure, all while honing your GraphQL expertise. Can your team solve the mystery and emerge as the ultimate Carmen San Diego catchers? The race is on!", + "goers": "16", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula G", + "audience": "Beginner", + "geo_area": "Yes", + "id": "88bbc65fe92d08a0404215429f06c113", + "venue_id": "1762202", + "speakers": [ + { + "username": "lerenzo", + "id": "5604312", + "name": "LeRenzo Malcom", + "company": "Miro", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "19", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "10:30am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "19", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "12:00pm", + "start_date": "2023-09-19", + "start_time": "10:30:00", + "start_time_ts": 1695144600, + "end_date": "2023-09-19", + "end_time": "12:00:00", + "event_type_sort": 9, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/cb/Workshop_ Carmen SanDiego.pdf", + "name": "Workshop_ Carmen SanDiego.pdf" + } + ] + }, + { + "event_key": "501260", + "active": "Y", + "pinned": "N", + "name": "Rust-Powered Fullstack GraphQL: From Actix-Web & Juniper Server to WASM Yew Client - Yassin Eldeeb, The Guild [Pre-Registration Required]", + "event_start": "2023-09-19 10:30", + "event_end": "2023-09-19 12:00", + "event_type": "Workshops", + "event_subtype": "Beyond Javascript", + "description": "Rust's ecosystem is known for its speed, efficiency, and type-safety. In this hands-on workshop we'll start by setting up a high-performance GraphQL server, all the way to a WASM-powered frontend client. We'll see how the various components interact seamlessly, and understand how Rust provides an edge with its efficiency. Are you ready to explore the robustness of Rust in full-stack GraphQL applications? Join me in this exciting journey!", + "goers": "15", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F", + "audience": "Intermediate", + "id": "0b5f6bcbfc77f97f4cdc6cdf4a171f82", + "venue_id": "1762200", + "speakers": [ + { + "username": "yassineldeeb94", + "id": "18743822", + "name": "Yassin Eldeeb", + "company": "The Guild", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "19", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "10:30am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "19", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "12:00pm", + "start_date": "2023-09-19", + "start_time": "10:30:00", + "start_time_ts": 1695144600, + "end_date": "2023-09-19", + "end_time": "12:00:00", + "event_type_sort": 9, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/ac/SF GraphQL Conf 2023.pdf", + "name": "SF GraphQL Conf 2023.pdf" + } + ] + }, + { + "event_key": "1", + "active": "Y", + "pinned": "N", + "name": "Safely Evolve Your (Federated) GraphQL Schema with GraphQL Hive - Laurin Quast & Kamil Kisiela, The Guild [Pre-Registration Required]", + "event_start": "2023-09-19 10:30", + "event_end": "2023-09-19 12:00", + "event_type": "Workshops", + "description": "Do you struggle with unexpected breaking changes of your GraphQL clients? Do you want to know how your GraphQL schema is used and when it is safe to remove deprecated fields? Learn all about the open-source platform GraphQL Hive and its recommended workflow for scaling GraphQL across teams and organisations, including a full example of integrating Hive within your CI/CD pipeline on GitHub Actions. Laurin will teach you all about breaking changes, breaking change detection, and conditional breaking changes.", + "goers": "47", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "geo_area": "Yes", + "id": "55dd5ef56bd778955509d08ea81903ea", + "venue_id": "1762196", + "speakers": [ + { + "username": "laurinquast", + "id": "18743819", + "name": "Laurin Quast", + "company": "The Guild", + "custom_order": 0 + }, + { + "username": "kamilkisiela", + "id": "19082388", + "name": "Kamil Kisiela", + "company": "The Guild", + "custom_order": 1 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "19", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "10:30am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "19", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "12:00pm", + "start_date": "2023-09-19", + "start_time": "10:30:00", + "start_time_ts": 1695144600, + "end_date": "2023-09-19", + "end_time": "12:00:00", + "event_type_sort": 9, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/c9/GraphQL Hive Workshop.pdf", + "name": "GraphQL Hive Workshop.pdf" + } + ] + }, + { + "event_key": "8", + "active": "Y", + "pinned": "N", + "name": "Lunch", + "event_start": "2023-09-19 12:00", + "event_end": "2023-09-19 13:00", + "event_type": "Breaks", + "goers": "62", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula Foyer", + "id": "38cb4033d5cfed2d5b508f08374ebe9b", + "venue_id": "1749431", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "19", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "12:00pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "19", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "1:00pm", + "start_date": "2023-09-19", + "start_time": "12:00:00", + "start_time_ts": 1695150000, + "end_date": "2023-09-19", + "end_time": "13:00:00", + "event_type_sort": 1, + "description": "" + }, + { + "event_key": "511229", + "active": "Y", + "pinned": "N", + "name": "Unconference Discussion Session #1", + "event_start": "2023-09-19 13:00", + "event_end": "2023-09-19 14:30", + "event_type": "Unconference", + "description": "An unconference is a participant-driven, informal event where attendees collaboratively create the agenda and lead discussions. Unlike the predetermined schedules and speakers of a traditional conference, an unconference allows for spontaneous and dynamic interactions, fostering an open and inclusive learning environment.\n\nHow to Prepare to Attend an Unconference", + "goers": "24", + "seats": "0", + "invite_only": "N", + "venue": "Sandpebble A&B", + "id": "6543e60efc3f0c20d24a40cffef29558", + "venue_id": "1749449", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "19", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "1:00pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "19", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "2:30pm", + "start_date": "2023-09-19", + "start_time": "13:00:00", + "start_time_ts": 1695153600, + "end_date": "2023-09-19", + "end_time": "14:30:00", + "event_type_sort": 8 + }, + { + "event_key": "2", + "active": "Y", + "pinned": "N", + "name": "GraphQL Mesh - A Federated Gateway for Any API Protocol - GraphQL, OpenAPI, gRPC and More - Arda Tanrikulu & Gil Gardosh, The Guild [Pre-Registration Required]", + "event_start": "2023-09-19 13:00", + "event_end": "2023-09-19 14:30", + "event_type": "Workshops", + "description": "The GraphQL Mesh platform changes a lot of the traditional ideas about GraphQL and its relationship with other API protocols.\n\nIt can automatically generate a GraphQL API from OpenAPI/Swagger, gRPC, SOAP, oData and many other sources/protocols without changing the source.\n\nThe Guild has used GraphQL Mesh and its individual capabilities to help developers integrate and adopt GraphQL in places they never thought were possible and in extreme quickness, thanks to the fact that\nYou don't need to migrate your existing none GraphQL services in order to benefit from GraphQL You can federate any service, even if its not GraphQL Transform and manipulate services data (Naming Conventions, filter, middlewares) Add powerful gateway plugins (caching, tracing, security) Create a powerful gateway and run it anywhere (Cloudflare Workers, Deno, etc...) And even run it all on the client side\nIn this workshop, we will go through the many novel ideas behind GraphQL Mesh, see them in action and learn how to use this complete API platform today on your existing codebase.\n\nWe will leave time for an open Q&A session where we can talk in-depth about your current setups and how you could leverage The Guild's ecosystem of tools.", + "goers": "48", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F&G", + "id": "de9b490bff0d1e234ec4e19bc03392b5", + "venue_id": "1762208", + "speakers": [ + { + "username": "ardatanrikulu", + "id": "18982310", + "name": "Arda Tanrıkulu", + "company": "The Guild", + "custom_order": 0 + }, + { + "username": "gilgardosh", + "id": "19070448", + "name": "Gil Gardosh", + "company": "The Guild", + "custom_order": 1 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "19", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "1:00pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "19", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "2:30pm", + "start_date": "2023-09-19", + "start_time": "13:00:00", + "start_time_ts": 1695153600, + "end_date": "2023-09-19", + "end_time": "14:30:00", + "event_type_sort": 9 + }, + { + "event_key": "488403", + "active": "Y", + "pinned": "N", + "name": "Mr. Toad’s Wild Ride: A Rollicking, Declarative GraphQL Workshop with Envoy and Kubernetes - Jim Barton & Adam Sayah, Solo.io [Pre-Registration Required]", + "event_start": "2023-09-19 13:00", + "event_end": "2023-09-19 14:30", + "event_type": "Workshops", + "event_subtype": "Platform and Backend", + "description": "Many GraphQL adopters today use both API gateways and separate GraphQL servers to secure and route traffic to their service endpoints. GraphQL provides a consistent API for clients, but it's expensive to build and operate distinct GraphQL servers. Developers are often required to write custom code to provide platform features like security, caching, and resilience. What if there were another way? What if you could meld GraphQL server capabilities into an Envoy gateway without separate server deployments? And without disturbing upstream application services? In this fast-paced, hands-on workshop, every attendee can use their own sandboxed environment to explore these topics together: • Discovery: Inspect existing service contracts and derive GraphQL schema. • Declarative: Create IaC resolvers that consume OpenAPI services. • Stitching: Execute GraphQL queries across multiple services with a unified supergraph. • Gateway Integration: Use declarative policies to mix in gateway features like authNZ and data loss prevention. Buckle your seat belts! This Wild Ride will help you accelerate GraphQL adoption using infrastructure-as-code principles in a cloud-native environment.", + "goers": "18", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "audience": "Beginner", + "geo_area": "Yes", + "id": "f11fd521e00f5b8eedf463781f893c5e", + "venue_id": "1762196", + "speakers": [ + { + "username": "jim.barton", + "id": "12615290", + "name": "Jim Barton", + "company": "Solo.io", + "custom_order": 0 + }, + { + "username": "adam.sayah", + "id": "12615405", + "name": "Adam Sayah", + "company": "Solo.io", + "custom_order": 1 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "19", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "1:00pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "19", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "2:30pm", + "start_date": "2023-09-19", + "start_time": "13:00:00", + "start_time_ts": 1695153600, + "end_date": "2023-09-19", + "end_time": "14:30:00", + "event_type_sort": 9, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/35/GraphQLConf 2023 Mr Toad Workshop.pdf", + "name": "GraphQLConf 2023 Mr Toad Workshop.pdf" + } + ] + }, + { + "event_key": "10", + "active": "Y", + "pinned": "N", + "name": "Break", + "event_start": "2023-09-19 14:30", + "event_end": "2023-09-19 15:00", + "event_type": "Breaks", + "goers": "53", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula Foyer", + "id": "61b9efc6ff8e0f295be6c65c08871c23", + "venue_id": "1749431", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "19", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "2:30pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "19", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "3:00pm", + "start_date": "2023-09-19", + "start_time": "14:30:00", + "start_time_ts": 1695159000, + "end_date": "2023-09-19", + "end_time": "15:00:00", + "event_type_sort": 1, + "description": "" + }, + { + "event_key": "511228", + "active": "Y", + "pinned": "N", + "name": "Unconference Discussion Session #2", + "event_start": "2023-09-19 15:00", + "event_end": "2023-09-19 16:30", + "event_type": "Unconference", + "description": "An unconference is a participant-driven, informal event where attendees collaboratively create the agenda and lead discussions. Unlike the predetermined schedules and speakers of a traditional conference, an unconference allows for spontaneous and dynamic interactions, fostering an open and inclusive learning environment.\n\nHow to Prepare to Attend an Unconference", + "goers": "15", + "seats": "0", + "invite_only": "N", + "venue": "Sandpebble A&B", + "id": "edcb92ba1f2478b935124038ec1b20f0", + "venue_id": "1749449", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "19", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "3:00pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "19", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "4:30pm", + "start_date": "2023-09-19", + "start_time": "15:00:00", + "start_time_ts": 1695160800, + "end_date": "2023-09-19", + "end_time": "16:30:00", + "event_type_sort": 8 + }, + { + "event_key": "4", + "active": "Y", + "pinned": "N", + "name": "Build and Deploy Instant GraphQL APIs to the Edge - Jamie Barton, Grafbase [Pre-Registration Required]", + "event_start": "2023-09-19 15:00", + "event_end": "2023-09-19 16:30", + "event_type": "Workshops", + "description": "Learn how to generate instant GraphQL APIs using a data source connector (GraphQL and non-GraphQL sources), extend and join them both with custom resolvers and deploy to the edge without leaving the code editor.", + "goers": "39", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F&G", + "id": "295679e18701aa2be84f329db1118637", + "venue_id": "1762208", + "speakers": [ + { + "username": "jamie855", + "id": "18743804", + "name": "Jamie Barton", + "company": "Grafbase", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "19", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "3:00pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "19", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "4:30pm", + "start_date": "2023-09-19", + "start_time": "15:00:00", + "start_time_ts": 1695160800, + "end_date": "2023-09-19", + "end_time": "16:30:00", + "event_type_sort": 9 + }, + { + "event_key": "511225", + "active": "Y", + "pinned": "N", + "name": "RSC + GraphQL + RedwoodJS: A New Era in Full-Stack Development - Amy Dutton, RedwoodJS [Pre-Registration Required]", + "event_start": "2023-09-19 15:00", + "event_end": "2023-09-19 16:30", + "event_type": "Workshops", + "event_subtype": "GraphQL and Data", + "description": "How can you ensure that your development workflow and process can accommodate growth? With the potential for more choices and complexity introduced by React Server Components, is it possible to avoid “analysis paralysis” due to more options? In this 1-2 hour workshop, we will explore a new workflow for dynamic full-stack applications using React Server Components (RSC) and GraphQL. Our focus will be on how RSC and GraphQL can co-exist and complement each other, allowing data to flow through your application and enabling it to scale and evolve as more features are added. We will cover server-side fetching with React Server components, how to use Redwood cells, and migrating to fragments. Additionally, we’ll review GraphQL fundamentals inside Redwood, including security concerns and best practices, directives, and authentication. You’ll leave this workshop with a workflow and process for designing and building full-stack applications in Redwood with scalability and simplicity.", + "goers": "29", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "audience": "Intermediate", + "id": "b38ed79c29a2d0602160d9407bfa3422", + "venue_id": "1762196", + "speakers": [ + { + "username": "amy1908", + "id": "16832327", + "name": "Amy Dutton", + "company": "RedwoodJS", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "19", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "3:00pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "19", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "4:30pm", + "start_date": "2023-09-19", + "start_time": "15:00:00", + "start_time_ts": 1695160800, + "end_date": "2023-09-19", + "end_time": "16:30:00", + "event_type_sort": 9 + }, + { + "event_key": "511240", + "active": "Y", + "pinned": "N", + "name": "Light Continental Breakfast", + "event_start": "2023-09-20 07:30", + "event_end": "2023-09-20 09:00", + "event_type": "Breaks", + "goers": "55", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula Foyer", + "id": "66e332f155e04efea896d5bd5dcd2ba5", + "venue_id": "1749431", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "7:30am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "9:00am", + "start_date": "2023-09-20", + "start_time": "07:30:00", + "start_time_ts": 1695220200, + "end_date": "2023-09-20", + "end_time": "09:00:00", + "event_type_sort": 1, + "description": "" + }, + { + "event_key": "511230", + "active": "Y", + "pinned": "N", + "name": "Registration & Badge Pick-Up", + "event_start": "2023-09-20 07:30", + "event_end": "2023-09-20 18:30", + "event_type": "Registration + Badge Pick-Up", + "goers": "28", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula Foyer", + "id": "9836184d78d14978c0c49f1e2b900bb9", + "venue_id": "1749431", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "7:30am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "6:30pm", + "start_date": "2023-09-20", + "start_time": "07:30:00", + "start_time_ts": 1695220200, + "end_date": "2023-09-20", + "end_time": "18:30:00", + "event_type_sort": 5, + "description": "" + }, + { + "event_key": "20", + "active": "Y", + "pinned": "N", + "name": "Welcome Remarks - Lee Byron, GraphQL Foundation", + "event_start": "2023-09-20 09:00", + "event_end": "2023-09-20 09:15", + "event_type": "Keynote Sessions", + "goers": "80", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "id": "94d334f99906d3fc2669fc804e5fae41", + "venue_id": "1749452", + "speakers": [ + { + "username": "lee_byron.25krdom6", + "id": "18769956", + "name": "Lee Byron", + "company": "GraphQL Foundation", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "9:00am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "9:15am", + "start_date": "2023-09-20", + "start_time": "09:00:00", + "start_time_ts": 1695225600, + "end_date": "2023-09-20", + "end_time": "09:15:00", + "event_type_sort": 3, + "description": "" + }, + { + "event_key": "21", + "active": "Y", + "pinned": "N", + "name": "8 Years of GraphQL: Unraveling the Trade-Offs - Marc-Andre Giroux, Author of Production Ready GraphQL, GraphQL TSC", + "event_start": "2023-09-20 09:15", + "event_end": "2023-09-20 09:35", + "event_type": "Keynote Sessions", + "description": "In the world of GraphQL, there's been a whirlwind of choices over the past 8 years: Federation or GraphQL Monolith? Code-first or SDL-first? What's the best way to load data? In this session, we'll dive into these hot topics, peel back the layers, and chat about what works at scale and some hard-earned lessons.", + "goers": "70", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "id": "017d9954f1be1c7e2ab2696c2abe6b9b", + "venue_id": "1749452", + "speakers": [ + { + "username": "mgiroux7", + "id": "19075775", + "name": "Marc-Andre Giroux", + "company": "Netflix", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "9:15am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "9:35am", + "start_date": "2023-09-20", + "start_time": "09:15:00", + "start_time_ts": 1695226500, + "end_date": "2023-09-20", + "end_time": "09:35:00", + "event_type_sort": 3 + }, + { + "event_key": "22", + "active": "Y", + "pinned": "N", + "name": "Evolution of Application Networking Patterns with GraphQL - Keith Babo, Solo.io.", + "event_start": "2023-09-20 09:35", + "event_end": "2023-09-20 09:40", + "event_type": "Keynote Sessions", + "description": "As the adoption of GraphQL has grown, so too have the prevailing patterns for how GraphQL APIs are developed and deployed. Gone are the days where every GraphQL API was a development task to code, deploy, and manage GraphQL middleware connected to your data sources. Increasingly, GraphQL is supported as a native API for data sources, integrated directly in gateway routers and application sidecars, and provided directly in edge compute platforms and CDN providers. While this level of optimization is common as application protocols and languages reach widespread adoption, it’s critically important to understand the best practices and patterns for how GraphQL should be used at each layer of your application networking architecture. This talk will provide a survey of existing and emerging trends for application networking architectures with GraphQL, providing concrete examples and advice on how to build scalable and performant architectures for your GraphQL APIs.", + "goers": "64", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "id": "b84ea942d55fb7406e53e3af0c78017e", + "venue_id": "1749452", + "speakers": [ + { + "username": "keith.babo", + "id": "19071264", + "name": "Keith Babo", + "company": "Solo.io", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "9:35am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "9:40am", + "start_date": "2023-09-20", + "start_time": "09:35:00", + "start_time_ts": 1695227700, + "end_date": "2023-09-20", + "end_time": "09:40:00", + "event_type_sort": 3 + }, + { + "event_key": "23", + "active": "Y", + "pinned": "N", + "name": "The “Right Size” For GraphQL - Theo Browne, Ping Labs", + "event_start": "2023-09-20 09:40", + "event_end": "2023-09-20 10:00", + "event_type": "Keynote Sessions", + "description": "GraphQL ushered in a new era of DX. It challenged developers to think more about the relationships between their servers and clients.\n\nThis innovation sparked a lot of innovation outside of GraphQL, from better OpenAPI tools to tRPC to React Server Components. There are more options than ever before. Is GraphQL still the right choice?\n\nYes. Sometimes. Let’s talk about the “right size” and fit for GraphQL.", + "goers": "68", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "id": "b57a1a6027fdab59c05c42c9d0515e71", + "venue_id": "1749452", + "speakers": [ + { + "username": "theo93", + "id": "19108367", + "name": "Theo Browne", + "company": "Ping Labs", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "9:40am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "10:00am", + "start_date": "2023-09-20", + "start_time": "09:40:00", + "start_time_ts": 1695228000, + "end_date": "2023-09-20", + "end_time": "10:00:00", + "event_type_sort": 3 + }, + { + "event_key": "24", + "active": "Y", + "pinned": "N", + "name": "Spoiled for Choice: Picking the Right Federation Technique for Your Project - Bryan Robinson, Hygraph", + "event_start": "2023-09-20 10:00", + "event_end": "2023-09-20 10:05", + "event_type": "Keynote Sessions", + "description": "Federation is a hot topic right now. Whether it’s Apollo, GraphQL Mesh, Platform-level services, Content Federation, or one of many other philosophies, we’re seeing everyone talking about API federation. There’s no singular right answer for your project. Instead, it’s a developer’s best friend response: It Depends. In this talk, we’ll go over the various techniques to federate your API and which one is right for your project and team.", + "goers": "69", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "geo_area": "Yes", + "id": "2b7518a6d8f2b72122c17beb92af8c89", + "venue_id": "1749452", + "speakers": [ + { + "username": "bryan.robinson2", + "id": "19076363", + "name": "Bryan Robinson", + "company": "Hygraph", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "10:00am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "10:05am", + "start_date": "2023-09-20", + "start_time": "10:00:00", + "start_time_ts": 1695229200, + "end_date": "2023-09-20", + "end_time": "10:05:00", + "event_type_sort": 3, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/a9/Spoiled for choice (sent).pptx.pdf", + "name": "Spoiled for choice (sent).pptx.pdf" + } + ] + }, + { + "event_key": "25", + "active": "Y", + "pinned": "N", + "name": "Open Federation - Open Remote Schema Specifications with Other Specs (OpenAPI, etc.) - Uri Goldshtein, The Guild", + "event_start": "2023-09-20 10:05", + "event_end": "2023-09-20 10:15", + "event_type": "Keynote Sessions", + "description": "In order to have a thriving ecosystem, and for you to choose your solutions and stack for the future, with the worry of a vendor lock, we must have open standards and specs across all of our architecture and solutions.\n\nLet's talk about the parts that weren't open till today and see how we are tackling these parts with collaborations from many different GraphQL Vendors across the whole ecosystem.", + "goers": "71", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "id": "e29bf518adeb99b2319fa8cb70d8f445", + "venue_id": "1749452", + "speakers": [ + { + "username": "uri_goldshtein.23xujj9a", + "id": "14900013", + "name": "Uri Goldshtein", + "company": "The Guild", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "10:05am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "10:15am", + "start_date": "2023-09-20", + "start_time": "10:05:00", + "start_time_ts": 1695229500, + "end_date": "2023-09-20", + "end_time": "10:15:00", + "event_type_sort": 3 + }, + { + "event_key": "26", + "active": "Y", + "pinned": "N", + "name": "Closing Remarks - Lee Byron, GraphQL Foundation", + "event_start": "2023-09-20 10:15", + "event_end": "2023-09-20 10:30", + "event_type": "Keynote Sessions", + "goers": "66", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "id": "80869c56bb59f51de6ac8468c18eecdc", + "venue_id": "1749452", + "speakers": [ + { + "username": "lee_byron.25krdom6", + "id": "18769956", + "name": "Lee Byron", + "company": "GraphQL Foundation", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "10:15am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "10:30am", + "start_date": "2023-09-20", + "start_time": "10:15:00", + "start_time_ts": 1695230100, + "end_date": "2023-09-20", + "end_time": "10:30:00", + "event_type_sort": 3, + "description": "" + }, + { + "event_key": "16", + "active": "Y", + "pinned": "N", + "name": "Break", + "event_start": "2023-09-20 10:30", + "event_end": "2023-09-20 10:50", + "event_type": "Breaks", + "goers": "42", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula D", + "id": "c6cba5c5a91fb3f916acec7de9692bd7", + "venue_id": "1749440", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "10:30am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "10:50am", + "start_date": "2023-09-20", + "start_time": "10:30:00", + "start_time_ts": 1695231000, + "end_date": "2023-09-20", + "end_time": "10:50:00", + "event_type_sort": 1, + "description": "" + }, + { + "event_key": "511234", + "active": "Y", + "pinned": "N", + "name": "Sponsor Showcase", + "event_start": "2023-09-20 10:30", + "event_end": "2023-09-20 19:00", + "event_type": "Sponsor Showcase", + "goers": "24", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula D", + "id": "77623920b158a75435d48896a8d56b35", + "venue_id": "1749440", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "10:30am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "7:00pm", + "start_date": "2023-09-20", + "start_time": "10:30:00", + "start_time_ts": 1695231000, + "end_date": "2023-09-20", + "end_time": "19:00:00", + "event_type_sort": 7, + "description": "" + }, + { + "event_key": "5", + "active": "Y", + "pinned": "N", + "name": "Can GraphQL be FAIR? - Pascal Heus, AI/Data Lead, Postman", + "event_start": "2023-09-20 10:50", + "event_end": "2023-09-20 11:20", + "event_type": "Session Presentations", + "description": "Join us for an exciting  presentation that explores the intersection of Findable-Accessible-Interoperable-Reusable (FAIR) data and GraphQL.\n\n(FAIR)[https://www.go-fair.org/fair-principles/] is a set of principles that have been endorsed by the data producers, custodians, researchers, and scientific communities worldwide, emphasizing the importance of machine-actionability, metadata, unique identifiers, standardization, and related best practices. GraphQL, as a groundbreaking data query language and API, is ideally positioned to support such principles.\n\nIn this talk, we will provide an overview of FAIR and open the discussion around potential integration and synergies with GraphQL to help turn the FAIR vision into reality. Such integration would also expose GraphQL to new audiences and drive its adoption.\n\nAs a bonus topic, we will also explore the potential relationship and synergies between GraphQL and SPARQL, the RDF Query Language, such as exposing SPARQL endpoints as GraphQL APIs and integrating semantic RDF data into the GraphQL data graph.", + "goers": "20", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F&G", + "geo_area": "Yes", + "id": "c915230f50de5c93eb5c2bbbee3610e6", + "venue_id": "1762208", + "speakers": [ + { + "username": "plgah", + "id": "15289322", + "name": "Pascal Heus", + "company": "Postman", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "10:50am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "11:20am", + "start_date": "2023-09-20", + "start_time": "10:50:00", + "start_time_ts": 1695232200, + "end_date": "2023-09-20", + "end_time": "11:20:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/8e/202309_GraphQL_PH_FAIR.pdf", + "name": "202309_GraphQL_PH_FAIR.pdf" + } + ] + }, + { + "event_key": "474923", + "active": "Y", + "pinned": "N", + "name": "GraphQL Security Vulnerabilities in the Wild - Antoine Carossio & Tristan Kalos, Escape", + "event_start": "2023-09-20 10:50", + "event_end": "2023-09-20 11:20", + "event_type": "Session Presentations", + "event_subtype": "GraphQL Security", + "description": "Join Escape's co-founders Tristan Kalos and Antoine Carossio, leaders in GraphQL Security Testing, for an incisive look at GraphQL vulnerabilities. This groundbreaking research, involving a scan of over 1500 GraphQL endpoints, revealed a staggering 46,000+ security issues and sensitive data leaks, all accessible without authentication and with 10% classified as critical. In this session, Tristan and Antoine will share their unique testing methodology and delve into the most common GraphQL vulnerabilities unearthed during their research. They'll expose GraphQL-specific vulnerabilities, including complexity issues and schema leaks, alongside persistent standard API security threats like injections and server errors. They'll also highlight the often-underestimated problem of data leaks, including sensitive personal information and tokens. But, they won't leave you in the trenches; they'll showcase practical remediation strategies, introducing tools like GraphQL Armor and a handy security checklist for developers. Don't miss this crucial session at the GraphQL Conf 2023.", + "goers": "35", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "audience": "Beginner", + "id": "5bf24cd6483a63e62a2276fe38effb82", + "venue_id": "1749452", + "speakers": [ + { + "username": "antoine.carossio", + "id": "18743834", + "name": "Antoine Carossio", + "company": "Escape.tech", + "custom_order": 0 + }, + { + "username": "tristan119", + "id": "19011005", + "name": "Tristan Kalos", + "company": "Escape", + "custom_order": 1 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "10:50am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "11:20am", + "start_date": "2023-09-20", + "start_time": "10:50:00", + "start_time_ts": 1695232200, + "end_date": "2023-09-20", + "end_time": "11:20:00", + "event_type_sort": 6 + }, + { + "event_key": "496594", + "active": "Y", + "pinned": "N", + "name": "The Future of Efficiency Is Here: Add Planning to Your Schema! - Benjie Gillam, Graphile", + "event_start": "2023-09-20 10:50", + "event_end": "2023-09-20 11:20", + "event_type": "Session Presentations", + "event_subtype": "Platform and Backend", + "description": "Discover an entirely new approach to GraphQL execution that enables engineers to build next-level efficiency into new or existing GraphQL APIs – improving application performance, reducing operational costs, and delivering delightful user experiences. Learn how, by using a declarative analog to resolvers, your schema can gain a full understanding of the incoming GraphQL request and optimize communications with your business logic, enabling fewer and more efficient operations against your backend services and data sources. A passion project of one of the top contributors to the GraphQL specification, this MIT-licensed open source technology will support JavaScript at launch and, with the help of the community, is hopefully coming to other programming languages soon!", + "goers": "56", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "audience": "Intermediate", + "geo_area": "Yes", + "id": "275443caa2eda5df06699b724efa533c", + "venue_id": "1762196", + "speakers": [ + { + "username": "benjie3", + "id": "18743846", + "name": "Benjie Gillam", + "company": "Graphile", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "10:50am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "11:20am", + "start_date": "2023-09-20", + "start_time": "10:50:00", + "start_time_ts": 1695232200, + "end_date": "2023-09-20", + "end_time": "11:20:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/41/Future_of_Efficiency.pdf", + "name": "Future_of_Efficiency.pdf" + } + ] + }, + { + "event_key": "496479", + "active": "Y", + "pinned": "N", + "name": "GraphQL Fusion: Rethinking Distributed GraphQL - Michael Staib, ChilliCream Inc", + "event_start": "2023-09-20 11:30", + "event_end": "2023-09-20 12:00", + "event_type": "Session Presentations", + "event_subtype": "GraphQL in Production", + "description": "In this talk, we're unpacking GraphQL Fusion, a new approach that makes building distributed GraphQL APIs easier. We'll explore how this approach lets your teams work independently by owning different parts of the company's graph and cover how you can reshape subgraphs to follow your company's rules. Come learn about this powerful tool that brings efficiency and customization to your GraphQL operations.", + "goers": "59", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F&G", + "audience": "Intermediate", + "id": "4a4e842d1cd0c06083f484d31225abd1", + "venue_id": "1762208", + "speakers": [ + { + "username": "michael_staib.23xujj9p", + "id": "14900031", + "name": "Michael Staib", + "company": "ChilliCream", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "11:30am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "12:00pm", + "start_date": "2023-09-20", + "start_time": "11:30:00", + "start_time_ts": 1695234600, + "end_date": "2023-09-20", + "end_time": "12:00:00", + "event_type_sort": 6 + }, + { + "event_key": "501216", + "active": "Y", + "pinned": "N", + "name": "The New GraphiQL and the Future of Open GraphQL IDEs - Dimitri Postolov, The Guild; Thomas Heyenbrock, Stellate", + "event_start": "2023-09-20 11:30", + "event_end": "2023-09-20 12:00", + "event_type": "Session Presentations", + "event_subtype": "GraphQL Clients", + "description": "Since we’ve joined the GraphiQL maintainers team, we’ve been shipping many new features and improvements to GraphiQL itself, its components and the language server. In this talk, we will talk about the wonderful collaborative work of the GraphiQL team, sharing work between many different GraphQL companies working together, show all the recent new features that we added and show cool new upcoming features from the GraphiQL roadmap you can already try out and give feedback today!", + "goers": "34", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "audience": "Beginner", + "id": "e0985f6bdb4bbf07a5ca5ba72fbcc39c", + "venue_id": "1762196", + "speakers": [ + { + "username": "thomas.heyenbrock", + "id": "14989332", + "name": "Thomas Heyenbrock", + "company": "Stellate", + "custom_order": 0 + }, + { + "username": "en3m", + "id": "18743843", + "name": "Dimitri Postolov", + "company": "The Guild", + "custom_order": 1 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "11:30am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "12:00pm", + "start_date": "2023-09-20", + "start_time": "11:30:00", + "start_time_ts": 1695234600, + "end_date": "2023-09-20", + "end_time": "12:00:00", + "event_type_sort": 6 + }, + { + "event_key": "511243", + "active": "Y", + "pinned": "N", + "name": "Unlocking Insights: Navigating the World of GraphQL Observability - Eitan Joffe, Inigo", + "event_start": "2023-09-20 11:30", + "event_end": "2023-09-20 12:00", + "event_type": "Session Presentations", + "description": "In this talk we'll take a deep dive into the world of GraphQL analytics and observability.\nDiscover what sets it apart from conventional APIs and uncover the valuable answers it provides.\nDelve into how GraphQL analytics unveils inefficiencies in query resolvers, uncovers error patterns, and reveals usage insights. Gain the ability to pinpoint bottlenecks, fine-tune queries, and enhance user experiences through well-informed decisions.\n\nLearn the essential strategies for successfully managing a GraphQL production deployment, ensuring your API operates at its best.", + "goers": "30", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "id": "f8a4d2b939980ffadf787715033e2b4f", + "venue_id": "1749452", + "speakers": [ + { + "username": "eitan15", + "id": "17700131", + "name": "Eitan Joffe", + "company": "Inigo", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "11:30am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "12:00pm", + "start_date": "2023-09-20", + "start_time": "11:30:00", + "start_time_ts": 1695234600, + "end_date": "2023-09-20", + "end_time": "12:00:00", + "event_type_sort": 6 + }, + { + "event_key": "9", + "active": "Y", + "pinned": "N", + "name": "Lunch", + "event_start": "2023-09-20 12:00", + "event_end": "2023-09-20 13:30", + "event_type": "Breaks", + "goers": "61", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula D", + "id": "0f57893e761e683f58c4ace9e766c3bf", + "venue_id": "1749440", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "12:00pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "1:30pm", + "start_date": "2023-09-20", + "start_time": "12:00:00", + "start_time_ts": 1695236400, + "end_date": "2023-09-20", + "end_time": "13:30:00", + "event_type_sort": 1, + "description": "" + }, + { + "event_key": "490988", + "active": "Y", + "pinned": "N", + "name": "GraphQL IRL: Pitfalls, Surprises and Successes - Kewei Qu, Meta Platforms", + "event_start": "2023-09-20 13:30", + "event_end": "2023-09-20 13:40", + "event_type": "Lightning Talks", + "event_subtype": "GraphQL in Production", + "description": "This talk goes through some interesting development around Meta’s performance and reliability improvement around GraphQL. Through several interesting case studies: surprising backward incompatible schema changes, error handling framework and ever evolving recommendations on how to use @defer and @stream, I hope to share these knowledge with the GraphQL community and build awesome and robust Apps users enjoy.", + "goers": "56", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "audience": "Intermediate", + "geo_area": "Yes", + "id": "cc423d9ba6bacb53c1b24490cb208c17", + "venue_id": "1762196", + "speakers": [ + { + "username": "qkw1221", + "id": "18743864", + "name": "Kewei Qu", + "company": "Meta", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "1:30pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "1:40pm", + "start_date": "2023-09-20", + "start_time": "13:30:00", + "start_time_ts": 1695241800, + "end_date": "2023-09-20", + "end_time": "13:40:00", + "event_type_sort": 4, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/a6/GraphQL IRL.pdf", + "name": "GraphQL IRL.pdf" + } + ] + }, + { + "event_key": "502295", + "active": "Y", + "pinned": "N", + "name": "Argo: Designing a Compact and Compressible Binary Serialization Format for GraphQL - Mike Solomon", + "event_start": "2023-09-20 13:30", + "event_end": "2023-09-20 14:00", + "event_type": "Session Presentations", + "event_subtype": "Platform and Backend", + "description": "GraphQL uses JSON by default, but other serialization formats may be used instead.In this session, we start from scratch and construct a purpose-built binary serialization format for GraphQL. Come and learn about the tradeoffs involved when designing serialization formats, and see if the resulting compact format (Argo) is a good fit for your GraphQL API! Choose compelling design goals for a serialization format Build up a format with distinct advantages over JSON Compare and analyze the practical tradeoffs between JSON and a purpose-built format By the end of the session, we will have built up to Argo: a compact and compressible binary serialization format for GraphQL. After the session, more details can be found in Argo’s open source specification, design notes, and reference implementation.\nThis talk assumes significant familiarity with GraphQL (particularly the Schema Definition Language) and JSON.\nSee Argo on GitHub, Argo homepage (including link to Argo spec), or Mike's website.", + "goers": "14", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F&G", + "audience": "Advanced", + "geo_area": "Yes", + "id": "504049f2217d6c59b9f67eba97089bfe", + "venue_id": "1762208", + "speakers": [ + { + "username": "arkenflame", + "id": "18743867", + "name": "Mike Solomon", + "company": "-", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "1:30pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "2:00pm", + "start_date": "2023-09-20", + "start_time": "13:30:00", + "start_time_ts": 1695241800, + "end_date": "2023-09-20", + "end_time": "14:00:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/a4/Argo.pdf", + "name": "Argo.pdf" + } + ] + }, + { + "event_key": "501215", + "active": "Y", + "pinned": "N", + "name": "GraphQL Over Internet - Denis Badurina, The Guild", + "event_start": "2023-09-20 13:30", + "event_end": "2023-09-20 14:00", + "event_type": "Session Presentations", + "event_subtype": "GraphQL Core", + "description": "GraphQL is transport agnostic. That means it is very powerful and could be used for many different use cases. But that also means that there are extra steps we need to think about for each transport we use. In this talk I will cover the different transports GraphQL can be use in, including real-time and HTTP, the different libraries out there that could help you implement your solution and the undergoing standardisation efforts that are happening around each of these transports.", + "goers": "33", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "audience": "Beginner", + "geo_area": "Yes", + "id": "6c2eefe955e288e974a9182dac06f8fa", + "venue_id": "1749452", + "speakers": [ + { + "username": "badurinadenis", + "id": "18743810", + "name": "Denis Badurina", + "company": "The Guild", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "1:30pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "2:00pm", + "start_date": "2023-09-20", + "start_time": "13:30:00", + "start_time_ts": 1695241800, + "end_date": "2023-09-20", + "end_time": "14:00:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/f9/GraphQL over Internet.pdf", + "name": "GraphQL over Internet.pdf" + } + ] + }, + { + "event_key": "496208", + "active": "Y", + "pinned": "N", + "name": "How @Defer and @Stream Will Improve GraphQL Caching - Andreas Heiberg, Stellate", + "event_start": "2023-09-20 13:45", + "event_end": "2023-09-20 13:55", + "event_type": "Lightning Talks", + "event_subtype": "Scaling", + "description": "These directives were created to improve time to first paint without splitting fast resolving query fragments into a separate network request. However, their implications on the DX and cache hit rate of GraphQL query caching is immense. Let’s explore the future ahead!", + "goers": "67", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "audience": "Intermediate", + "geo_area": "Yes", + "id": "a6f436251a88bb94d5e79099742c9d75", + "venue_id": "1762196", + "speakers": [ + { + "username": "andreas.heiberg", + "id": "18743801", + "name": "Andreas Heiberg", + "company": "Stellate", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "1:45pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "1:55pm", + "start_date": "2023-09-20", + "start_time": "13:45:00", + "start_time_ts": 1695242700, + "end_date": "2023-09-20", + "end_time": "13:55:00", + "event_type_sort": 4, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/37/GraphQLConf_Defer_Caching_v2.pdf", + "name": "GraphQLConf_Defer_Caching_v2.pdf" + } + ] + }, + { + "event_key": "36", + "active": "Y", + "pinned": "N", + "name": "Consuming GraphQL using C# - Brandon Minnick, AWS", + "event_start": "2023-09-20 14:10", + "event_end": "2023-09-20 14:40", + "event_type": "Session Presentations", + "event_subtype": "GraphQL Clients", + "description": "GraphQL has become a staple technology in the JavaScript community, but it is still relatively new and unknown in the C# world.\n\nJoin me as we explore the GraphQL tools available for .NET developers, like HotChocolate + Strawberry Shake, and how these tools make it easy to consume GraphQL APIs in C#!", + "goers": "8", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "audience": "Beginner", + "geo_area": "Yes", + "id": "5f920cd134d4dea87fce5e59bc4418dc", + "venue_id": "1762196", + "speakers": [ + { + "username": "brandon.r.minnick", + "id": "9493345", + "name": "Brandon Minnick", + "company": "AWS", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "2:10pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "2:40pm", + "start_date": "2023-09-20", + "start_time": "14:10:00", + "start_time_ts": 1695244200, + "end_date": "2023-09-20", + "end_time": "14:40:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/e3/Consuming GraphQL APIs in C#.pptx (1).pdf", + "name": "Consuming GraphQL APIs in C#.pptx (1).pdf" + } + ] + }, + { + "event_key": "484427", + "active": "Y", + "pinned": "N", + "name": "Mutating Meetup with GraphQL - Annyce Davis, Meetup", + "event_start": "2023-09-20 14:10", + "event_end": "2023-09-20 14:40", + "event_type": "Session Presentations", + "event_subtype": "GraphQL in Production", + "description": "Over the past three years, Meetup has undergone a transformation from relying on REST APIs to fully embracing GraphQL. Despite the many benefits, it hasn't been without its challenges.\n\nIn this talk, I'll cover the benefits of using GraphQL in production, such as how it can streamline API development and improve data retrieval. I'll also discuss common challenges that arise when implementing GraphQL in production and share best practices for addressing them. Specifically, I'll touch on:\n\n* Schema design considerations\n* Caching strategies\n* Monitoring and performance optimization\n* Tools and frameworks for implementing GraphQL in production\n\nLook forward to gaining valuable insights and practical advice for implementing GraphQL in production!", + "goers": "35", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F&G", + "audience": "Beginner", + "geo_area": "Yes", + "id": "3a88eedac57e223aa69979407cfcc8f0", + "venue_id": "1762208", + "speakers": [ + { + "username": "annyce.davis", + "id": "2147992", + "name": "Annyce Davis", + "company": "Meetup", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "2:10pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "2:40pm", + "start_date": "2023-09-20", + "start_time": "14:10:00", + "start_time_ts": 1695244200, + "end_date": "2023-09-20", + "end_time": "14:40:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/e2/mutating_meetup_with_graphql.pdf", + "name": "mutating_meetup_with_graphql.pdf" + } + ] + }, + { + "event_key": "498279", + "active": "Y", + "pinned": "N", + "name": "Semi-Concurrent Deduplicated Incremental Delivery - Yaacov Rydzinski", + "event_start": "2023-09-20 14:10", + "event_end": "2023-09-20 14:40", + "event_type": "Session Presentations", + "event_subtype": "GraphQL Core", + "description": "Curious about what's new in Incremental Delivery in 2023? Want to learn more about the proposed new response format and the recently released implementation in `graphql-js`?\n\nIn this talk, we will: Explore the goals and challenges of incremental delivery with a focus on providing eager maximally-concurrent execution of deduplicated, deferred fields. Elaborate on the distinction between Incremental Data vs. Incremental / Subsequent Results. Overview the new CollectFields algorithm that performs deduplication => at build vs execution time! Discuss potential pitfalls with early execution and tools to mitigate them (resolver helpers, Paraloader, resource frameworks). Call for feedback from the community! Special thanks to Rob Richard, the champion for incremental delivery, and Benjie Gillam, who together with Rob authored the new response format!", + "goers": "29", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "audience": "Intermediate", + "geo_area": "Yes", + "id": "fc1e6c878fc02b6c2b7534ddebfac6ff", + "venue_id": "1749452", + "speakers": [ + { + "username": "yaacovcr", + "id": "18743840", + "name": "Yaacov Rydzinski", + "company": "Open Source", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "2:10pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "2:40pm", + "start_date": "2023-09-20", + "start_time": "14:10:00", + "start_time_ts": 1695244200, + "end_date": "2023-09-20", + "end_time": "14:40:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/cd/Deduplicated Incremental Delivery.pdf", + "name": "Deduplicated Incremental Delivery.pdf" + } + ] + }, + { + "event_key": "511236", + "active": "Y", + "pinned": "N", + "name": "4 Steps to a Successful GraphQL API Program - Suresh Muthu & Jared Cheney, Intuit", + "event_start": "2023-09-20 14:50", + "event_end": "2023-09-20 15:20", + "event_type": "Session Presentations", + "event_subtype": "Scaling", + "description": "This session provides a concise and practical guide for businesses looking to create a successful GraphQL API program. Attendees will learn about the key components required to develop a well-defined and well-governed API program, including API specifications, governance and consistency, dev community & help, and closed-loop feedback. While there are a lot of guidelines and best practices for REST APIs in the industry, there are not yet as many guidelines for GraphQL. Intuit made over 56 million transactions with GraphQL over the 2023 tax peak season, and that number will only get larger from here. GraphQL adoption at this scale required us to build a robust API program with a centralized set of guidelines on how the schema should be composed, along with a community-driven review process and a firm but flexible governance framework. In this session, we will share insights and lessons learned using real-life examples from our GraphQL API Program, enabling attendees to apply these learnings to their own businesses. This session offers a valuable opportunity for businesses to develop their API programs and stay competitive.", + "goers": "32", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "audience": "Beginner", + "geo_area": "Yes", + "id": "de614df0c21b5227fff20767aa065de8", + "venue_id": "1762196", + "speakers": [ + { + "username": "jared_cheney.7rad60v", + "id": "18775617", + "name": "Jared Cheney", + "company": "Intuit", + "custom_order": 0 + }, + { + "username": "suresh_muthu", + "id": "18743849", + "name": "Suresh Muthu", + "company": "Intuit", + "custom_order": 1 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "2:50pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "3:20pm", + "start_date": "2023-09-20", + "start_time": "14:50:00", + "start_time_ts": 1695246600, + "end_date": "2023-09-20", + "end_time": "15:20:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/aa/4 Steps to a Successful GraphQL API Program.pdf", + "name": "4 Steps to a Successful GraphQL API Program.pdf" + } + ] + }, + { + "event_key": "502901", + "active": "Y", + "pinned": "N", + "name": "Go Beyond the Spec With Custom Directives - Roy Derks, StepZen, an IBM Company", + "event_start": "2023-09-20 14:50", + "event_end": "2023-09-20 15:20", + "event_type": "Session Presentations", + "event_subtype": "GraphQL Core", + "description": "The GraphQL Specification is a great document for everyone building and using GraphQL APIs, and always in development. For a reason! One thing where GraphQL services and client tooling are good at, is introducing new and better ways to use GraphQL. Often, they make use of custom directives to extend GraphQL with custom or experimental behavior. In this talk I'll share best practices on using directives in GraphQL, and how builders can use custom directives to add new configurable execution capabilities to GraphQL.", + "goers": "18", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "audience": "Advanced", + "id": "eb08683c706380e0236adb2097358f4c", + "venue_id": "1749452", + "speakers": [ + { + "username": "hello2358", + "id": "16832291", + "name": "Roy Derks", + "company": "IBM", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "2:50pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "3:20pm", + "start_date": "2023-09-20", + "start_time": "14:50:00", + "start_time_ts": 1695246600, + "end_date": "2023-09-20", + "end_time": "15:20:00", + "event_type_sort": 6 + }, + { + "event_key": "501204", + "active": "Y", + "pinned": "N", + "name": "The Graph of Everything - Federated Architecture for Any API Service - Uri Goldshtein, The Guild", + "event_start": "2023-09-20 14:50", + "event_end": "2023-09-20 15:20", + "event_type": "Session Presentations", + "event_subtype": "Spec Fusion", + "description": "We debate and talk a lot about the differences between GraphQL and other API technologies. What if we could interop between all of these? What would that mean for the strength and weaknesses? What would that mean for the adoption story? In this talk I will demonstrate a few technologies that help us automatically interact from GraphQL to others API technologies and the other way around. I will show how these technologies effected how The Guild thinks about the architecture of GraphQL, where and when to use it and all the new use cases that this unfolds for our users. and one more thing - I will also demonstrate how it opens the doors for GraphQL tool developers to offer solutions for other API ecosystems.", + "goers": "59", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F&G", + "audience": "Intermediate", + "id": "7a87fe1cfc351a993ed40e01d384e3c6", + "venue_id": "1762208", + "speakers": [ + { + "username": "uri_goldshtein.23xujj9a", + "id": "14900013", + "name": "Uri Goldshtein", + "company": "The Guild", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "2:50pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "3:20pm", + "start_date": "2023-09-20", + "start_time": "14:50:00", + "start_time_ts": 1695246600, + "end_date": "2023-09-20", + "end_time": "15:20:00", + "event_type_sort": 6 + }, + { + "event_key": "19", + "active": "Y", + "pinned": "N", + "name": "Break", + "event_start": "2023-09-20 15:20", + "event_end": "2023-09-20 15:40", + "event_type": "Breaks", + "goers": "44", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula D", + "id": "3e70d76748962770972c5c80e45ee9d7", + "venue_id": "1749440", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "3:20pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "3:40pm", + "start_date": "2023-09-20", + "start_time": "15:20:00", + "start_time_ts": 1695248400, + "end_date": "2023-09-20", + "end_time": "15:40:00", + "event_type_sort": 1, + "description": "" + }, + { + "event_key": "493683", + "active": "Y", + "pinned": "N", + "name": "@Defer All the Slow Things - Alessia Bellisario, Apollo GraphQL", + "event_start": "2023-09-20 15:40", + "event_end": "2023-09-20 15:50", + "event_type": "Lightning Talks", + "event_subtype": "GraphQL Clients", + "description": "With GraphQL, clients can describe the data they require and receive nothing more, nothing less. This also means a single GraphQL query is as slow as its slowest field(s)… that is until @defer 🎉 Learn about a proposed directive that solves this problem and its underlying incremental transport mechanism.", + "goers": "41", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "audience": "Beginner", + "geo_area": "Yes", + "id": "cc22599d768dc636a67a0e93cd74bab2", + "venue_id": "1762196", + "speakers": [ + { + "username": "twitter7", + "id": "18743837", + "name": "Alessia Bellisario", + "company": "Apollo", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "3:40pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "3:50pm", + "start_date": "2023-09-20", + "start_time": "15:40:00", + "start_time_ts": 1695249600, + "end_date": "2023-09-20", + "end_time": "15:50:00", + "event_type_sort": 4, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/ef/@defer all the slow things.pdf", + "name": "@defer all the slow things.pdf" + } + ] + }, + { + "event_key": "483848", + "active": "Y", + "pinned": "N", + "name": "Launching a Public GraphQL API and Client for Open Source Lightning Web Components - Ben Sklar, Salesforce", + "event_start": "2023-09-20 15:40", + "event_end": "2023-09-20 16:10", + "event_type": "Session Presentations", + "event_subtype": "GraphQL in Production", + "description": "Learn how and why Salesforce decided to launch a public GraphQL API. You will learn about best practices, real world use cases, hear success stories, failures, challenges, and overall lessons learned from a real production deployment of a GraphQL API. This API is unique in that every user of the API may have different views of the schema due to a strict field-level and object-level security model. You'll also get to hear about upcoming new features to the API, and how you can leverage this API with our open source Lightning Web Components framework, allowing you to insert GraphQL queries directly with Lightning Web Components.", + "goers": "27", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F&G", + "audience": "Beginner", + "geo_area": "Yes", + "id": "72ac8d3f7585f86cb9acc77b9eb22241", + "venue_id": "1762208", + "speakers": [ + { + "username": "bsklar", + "id": "18743813", + "name": "Ben Sklar", + "company": "Salesforce", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "3:40pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "4:10pm", + "start_date": "2023-09-20", + "start_time": "15:40:00", + "start_time_ts": 1695249600, + "end_date": "2023-09-20", + "end_time": "16:10:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/8a/GraphQL Conf Presentation 2023 - LWC & UI API.pdf", + "name": "GraphQL Conf Presentation 2023 - LWC & UI API.pdf" + } + ] + }, + { + "event_key": "483029", + "active": "Y", + "pinned": "N", + "name": "Streamlining Access to NASA Earth Science Data with GraphQL - Ryan Abbott, Element 84", + "event_start": "2023-09-20 15:40", + "event_end": "2023-09-20 16:10", + "event_type": "Session Presentations", + "event_subtype": "GraphQL and Data", + "description": "The Common Metadata Repository (CMR), NASA's datastore for Earth science metadata offers multiple API's that allow users to access the underlying data in many ways. With the launch of recent missions, CMR's usage has increased exponentially; this usage and the features added to support new capabilities have made it increasingly difficult to keep it's response formats and capabilities consistent and performant. Unfortunately agency requirements and existing CMR client implementations limit our ability to change our APIs. In our research for a solution that would allow us to work within these limitations, the use of GraphQL as an abstraction layer would mean that our existing APIs could remain unchanged. Additionally, this would allow us to offer new functionality via a self-documenting, specification based approach. Our introduction of GraphQL has allowed us to normalize the ways that users communicate with our APIs and enabled us to make changes to our core APIs with no impact to clients. In this talk, I'll discuss the challenges, wins, losses, and lessons learned in wrapping CMR's API with GraphQL and how it's being utilized today.", + "goers": "30", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "audience": "Beginner", + "geo_area": "Yes", + "id": "2816d4a81204283289584830acda7826", + "venue_id": "1749452", + "speakers": [ + { + "username": "abbottry", + "id": "18680304", + "name": "Ryan Abbott", + "company": "NASA EED-3 / Element 84", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "3:40pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "4:10pm", + "start_date": "2023-09-20", + "start_time": "15:40:00", + "start_time_ts": 1695249600, + "end_date": "2023-09-20", + "end_time": "16:10:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/02/GraphQL Conf.pdf", + "name": "GraphQL Conf.pdf" + } + ] + }, + { + "event_key": "488856", + "active": "Y", + "pinned": "N", + "name": "How to Make Your First Open Source Contribution - Donna Zhou, Atlassian", + "event_start": "2023-09-20 15:55", + "event_end": "2023-09-20 16:05", + "event_type": "Lightning Talks", + "description": "Have you always wanted to make an open source contribution, but not sure where to start? Getting started with open source is much easier than it seems. A year ago, I started regularly contributing to GraphQL Java and the GraphQL Scalars project. I caught the open source bug and made it a habit, and now I’m a maintainer of GraphQL Java. It has been an incredible learning experience, and it has been very rewarding to meet the engineers using the library all over the world. But it wasn’t always an open source fairytale! Many years ago I tried to contribute to another project, and it was a total failure. I didn’t have a great experience and it put me off open source for a long time. In this talk, I want to explain what I did differently to succeed this time around.", + "goers": "32", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "audience": "Beginner", + "geo_area": "Yes", + "id": "81daf0dd0b26efdc784ba0a530e54a68", + "venue_id": "1762196", + "speakers": [ + { + "username": "donnasiqizhou", + "id": "18743879", + "name": "Donna Zhou", + "company": "Atlassian", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "3:55pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "4:05pm", + "start_date": "2023-09-20", + "start_time": "15:55:00", + "start_time_ts": 1695250500, + "end_date": "2023-09-20", + "end_time": "16:05:00", + "event_type_sort": 4, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/39/Open source.pdf", + "name": "Open source.pdf" + } + ] + }, + { + "event_key": "7", + "active": "Y", + "pinned": "N", + "name": "Easily Access Blockchain Data with Subgraphs - Kevin Jones, The Graph", + "event_start": "2023-09-20 16:20", + "event_end": "2023-09-20 16:50", + "event_type": "Session Presentations", + "description": "Have you ever wanted to dip your toes into web3 development and blockchain data but don't know how? Join us to learn how blockchain data can be easily queried with GraphQL!\n\nSubgraphs APIs and the tooling built around them are all open source, making it easy for developers to build decentralized applications (dapps). Within the world of web3 there are many different ways to use smart contracts, so Subgraphs are modular APIs enabling developers to build for any use case. These subgraphs can be queried via The Graph, a decentralized network for accessing blockchain data.\n\nIn this presentation we will explore: Practical aspects of accessing blockchain data using Subgraphs, including the basics of building a GraphQL schema Discuss efficient Data optimization Utility of GraphQL for blockchain data Elements of decentralization and data\nLearn how Subgraphs simplify the data extraction from blockchains, optimize data handling, and enhance query flexibility. Join us to understand how these elements work together to make blockchain data more accessible and manageable.", + "goers": "12", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "geo_area": "Yes", + "id": "ebee6213b39b87437eb7cc9c41ea972b", + "venue_id": "1749452", + "speakers": [ + { + "username": "kevin1700", + "id": "19150962", + "name": "Kevin Jones", + "company": "The Graph", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "4:20pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "4:50pm", + "start_date": "2023-09-20", + "start_time": "16:20:00", + "start_time_ts": 1695252000, + "end_date": "2023-09-20", + "end_time": "16:50:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/17/Querying Blockchain Data with GraphQL - shared.pdf", + "name": "Querying Blockchain Data with GraphQL - shared.pdf" + } + ] + }, + { + "event_key": "496520", + "active": "Y", + "pinned": "N", + "name": "Isograph — Rethink GraphQL-Powered React Apps - Robert Balicki, Pinterest", + "event_start": "2023-09-20 16:20", + "event_end": "2023-09-20 16:50", + "event_type": "Session Presentations", + "event_subtype": "GraphQL Clients", + "description": "Isograph is a framework for building GraphQL-backed React apps with a radically redesigned developer experience. Find out how you can build entire applications through the graph, and the vision for how Isograph will enable extremely performant and powerful apps.", + "goers": "42", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "audience": "Beginner", + "geo_area": "Yes", + "id": "2517f7a1d13ad3c0652e1b3cc5b65714", + "venue_id": "1762196", + "speakers": [ + { + "username": "robert.balicki", + "id": "18743858", + "name": "Robert Balicki", + "company": "Pinterest", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "4:20pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "4:50pm", + "start_date": "2023-09-20", + "start_time": "16:20:00", + "start_time_ts": 1695252000, + "end_date": "2023-09-20", + "end_time": "16:50:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/6c/GraphQL Conf 2023.pdf", + "name": "GraphQL Conf 2023.pdf" + } + ] + }, + { + "event_key": "496782", + "active": "Y", + "pinned": "N", + "name": "Supercharging GraphQL with Envoy: Unveiling the Efficiency of Declarative GraphQL - Sai Ekbote, solo.io", + "event_start": "2023-09-20 16:20", + "event_end": "2023-09-20 16:50", + "event_type": "Session Presentations", + "event_subtype": "GraphQL in Production", + "description": "Over the past decade of GraphQL, many implementations have emerged from the community, primarily that of imperative approaches to GraphQL. However, recently we have seen an uptick in implementations that allow for declarative configuration of GraphQL schemas and resolvers. These declarative approaches offer new possibilities in terms of managing and scaling GraphQL APIs. In this talk, we will dive into the challenges of implementing a declarative API for GraphQL and explore the solutions that exist in the ecosystem. Firstly, we will introduce several prominent solutions that enable declarative configuration of GraphQL APIs, such as Gloo GraphQL, GraphQL Mesh, and StepZen. We will compare and contrast these solutions, highlighting their unique features, capabilities, and integration possibilities with existing infrastructure. We will then delve into the more technical aspects and challenges of implementing a highly performant GraphQL server that we built-in as a component of the industry standard Envoy proxy. By the end of this talk, attendees will be left with a comprehensive understanding of declarative GraphQL and the solutions available in the ecosystem.", + "goers": "35", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F&G", + "audience": "Intermediate", + "geo_area": "Yes", + "id": "5d6afee232e35ba1880e7b25d810ef49", + "venue_id": "1762208", + "speakers": [ + { + "username": "keerthan.ekbote", + "id": "14553875", + "name": "Sai Ekbote", + "company": "solo.io", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "4:20pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "4:50pm", + "start_date": "2023-09-20", + "start_time": "16:20:00", + "start_time_ts": 1695252000, + "end_date": "2023-09-20", + "end_time": "16:50:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/54/graphqlconf.pdf", + "name": "graphqlconf.pdf" + } + ] + }, + { + "event_key": "491650", + "active": "N", + "pinned": "N", + "name": "CANCELED: Building Mission Control: A More Reliable, Better Performing, Drop-in Replacement for Apollo Uplink. - Michael Edelman, EdelOrg", + "event_start": "2023-09-20 17:00", + "event_end": "2023-09-20 17:30", + "event_type": "Session Presentations", + "event_subtype": "GraphQL in Production", + "description": "Mission Control is a drop-in, enterprise-grade solution, written in rust, that, once and for all, solves the reliability, availability, and performance issues that have, up until now, beguiled Apollo's Uplink service and, thus, limited the appeal of \"managed federation\" in mission-critical applications generally. Here, we will discuss the challenges and issues that led us here, our motivation for replacing Apollo Uplink as the single source of truth for our supergraph schemas, the alternative solutions we considered, and, finally, why we decided to take the path that we did--essentially reinventing the wheel--and where we plan to take it going forward. Attendees will leave with a deep understanding of the tradeoffs with respect to managed federation in mission critical environments, specifically as they relate to use of Apollo's Uplink service as a single source of truth. Moreover, attendees will walk away with a general plan for how to mitigate the challenges and limitations above, using Mission Control as the seminal example.", + "goers": "16", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F&G", + "audience": "Advanced", + "id": "bc5623fa38b3e2a58b357b35d3209023", + "venue_id": "1762208", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "5:00pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "5:30pm", + "start_date": "2023-09-20", + "start_time": "17:00:00", + "start_time_ts": 1695254400, + "end_date": "2023-09-20", + "end_time": "17:30:00", + "event_type_sort": 6 + }, + { + "event_key": "490843", + "active": "Y", + "pinned": "N", + "name": "GraphQL and CQRS, a Perfect Fit? - Gerard Klijs, AxonIQ", + "event_start": "2023-09-20 17:00", + "event_end": "2023-09-20 17:30", + "event_type": "Session Presentations", + "event_subtype": "GraphQL and Data", + "description": "With an CQRS architecture, the write and read model are separated. The read model is also eventually consistent. This makes it hard to implement GraphQL mutations as they are implemented usually. We can't directly return the updated entity, as that's not available in the write model? But do we need to return this, or can we get away with just returning if the mutation was successful? Are there ways we can still return the updated entity? We will dive deeper into this, and also at the consequences for queries, and subscriptions.", + "goers": "27", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "audience": "Intermediate", + "geo_area": "Yes", + "id": "217cf30afd15a724ebb42c4d82169a26", + "venue_id": "1749452", + "speakers": [ + { + "username": "gerard.klijs", + "id": "18743792", + "name": "Gerard Klijs", + "company": "AxonIQ", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "5:00pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "5:30pm", + "start_date": "2023-09-20", + "start_time": "17:00:00", + "start_time_ts": 1695254400, + "end_date": "2023-09-20", + "end_time": "17:30:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/63/GraphQL+CQRS.pdf", + "name": "GraphQL+CQRS.pdf" + } + ] + }, + { + "event_key": "511237", + "active": "Y", + "pinned": "N", + "name": "Why Relay is a Must for your GraphQL APIs - Marion Schleifer, Hasura", + "event_start": "2023-09-20 17:00", + "event_end": "2023-09-20 17:30", + "event_type": "Session Presentations", + "description": "GraphQL has helped the industry realize the benefit of having typed APIs. But does that mean that if we switch over to a typed API like gRPC or OpenAPI then GraphQL is overkill? In this session, I want to discuss how GraphQL with Relay is critical to UI development and GraphQL without Relay leads us to reinventing the wheel on state management and API libraries again and again. And also as a corollary, how using GraphQL without Relay might not really be worth it!", + "goers": "44", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "geo_area": "Yes", + "id": "34bdd9b21a3cf2db6600a5ef840b3fb3", + "venue_id": "1762196", + "speakers": [ + { + "username": "marion84", + "id": "19150944", + "name": "Marion Schleifer", + "company": "Hasura", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "5:00pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "5:30pm", + "start_date": "2023-09-20", + "start_time": "17:00:00", + "start_time_ts": 1695254400, + "end_date": "2023-09-20", + "end_time": "17:30:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/2d/why_relay_is_a_must_for_your_graphql_api.pdf", + "name": "why_relay_is_a_must_for_your_graphql_api.pdf" + } + ] + }, + { + "event_key": "511233", + "active": "Y", + "pinned": "N", + "name": "Booth Crawl", + "event_start": "2023-09-20 17:30", + "event_end": "2023-09-20 19:00", + "event_type": "Events & Experiences", + "description": "TBA", + "goers": "49", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula D", + "id": "a6d43808900bc56bb2ebd675544ee5a3", + "venue_id": "1749440", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "20", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "5:30pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "20", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "7:00pm", + "start_date": "2023-09-20", + "start_time": "17:30:00", + "start_time_ts": 1695256200, + "end_date": "2023-09-20", + "end_time": "19:00:00", + "event_type_sort": 2 + }, + { + "event_key": "511239", + "active": "Y", + "pinned": "N", + "name": "Light Continental Breakfast", + "event_start": "2023-09-21 07:30", + "event_end": "2023-09-21 09:00", + "event_type": "Breaks", + "goers": "38", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula Foyer", + "id": "7bb96b3d5660f2d285220d7cdd59eb7f", + "venue_id": "1749431", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "7:30am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "9:00am", + "start_date": "2023-09-21", + "start_time": "07:30:00", + "start_time_ts": 1695306600, + "end_date": "2023-09-21", + "end_time": "09:00:00", + "event_type_sort": 1, + "description": "" + }, + { + "event_key": "511232", + "active": "Y", + "pinned": "N", + "name": "Registration & Badge Pick-Up", + "event_start": "2023-09-21 07:30", + "event_end": "2023-09-21 16:00", + "event_type": "Registration + Badge Pick-Up", + "goers": "13", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula Foyer", + "id": "9a543325b8802fd94cc9ed81908dc888", + "venue_id": "1749431", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "7:30am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "4:00pm", + "start_date": "2023-09-21", + "start_time": "07:30:00", + "start_time_ts": 1695306600, + "end_date": "2023-09-21", + "end_time": "16:00:00", + "event_type_sort": 5, + "description": "" + }, + { + "event_key": "27", + "active": "Y", + "pinned": "N", + "name": "Welcome Remarks - Keith Babo, Solo.io", + "event_start": "2023-09-21 09:00", + "event_end": "2023-09-21 09:05", + "event_type": "Keynote Sessions", + "goers": "56", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "id": "5a0c1b8ab4957bfd83f55480c1508fe5", + "venue_id": "1749452", + "speakers": [ + { + "username": "keith.babo", + "id": "19071264", + "name": "Keith Babo", + "company": "Solo.io", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "9:00am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "9:05am", + "start_date": "2023-09-21", + "start_time": "09:00:00", + "start_time_ts": 1695312000, + "end_date": "2023-09-21", + "end_time": "09:05:00", + "event_type_sort": 3, + "description": "" + }, + { + "event_key": "29", + "active": "Y", + "pinned": "N", + "name": "Is a GraphQL BFF Necessary in a Server Side React World (RSC, SAs)? - Tanmai Gopal, Hasura", + "event_start": "2023-09-21 09:05", + "event_end": "2023-09-21 09:15", + "event_type": "Keynote Sessions", + "description": "With the introduction and rise in adoption of React Server Components and Server Actions (and as other UI frameworks embrace these ideas), is a GraphQL API layer that provides a \"Backend For Frontend\" type of abstraction going to be relevant? Where does GraphQL fit in and how might it evolve over the months to come?\n\nIn this talk, I'll focus on specific technical and developer-experience benefits of a GraphQL and \"server side React\" overlap, along with some code examples. Next, I'll talk about areas where the value provided by GraphQL is orthogonal to the benefits of React Server Components and Server Actions. Finally, through this exploration and these examples, I'll end on an opinionated note that GraphQL's future is with Relay and its usage as a BFD 🤯 (?!), instead of a BFF.", + "goers": "54", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "id": "e3320ba552ee773065a1a132304a36e0", + "venue_id": "1749452", + "speakers": [ + { + "username": "tanmaig", + "id": "4968006", + "name": "Tanmai Gopal", + "company": "Hasura", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "9:05am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "9:15am", + "start_date": "2023-09-21", + "start_time": "09:05:00", + "start_time_ts": 1695312300, + "end_date": "2023-09-21", + "end_time": "09:15:00", + "event_type_sort": 3 + }, + { + "event_key": "30", + "active": "Y", + "pinned": "N", + "name": "Training and Using Generative AI Models with GraphQL - Idit Levine, Solo.io", + "event_start": "2023-09-21 09:15", + "event_end": "2023-09-21 09:25", + "event_type": "Keynote Sessions", + "goers": "52", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "id": "47c1bf50ce5556edcae9a84795485a8f", + "venue_id": "1749452", + "speakers": [ + { + "username": "idit_levine.25krdj4u", + "id": "18769950", + "name": "Idit Levine", + "company": "Solo.io", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "9:15am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "9:25am", + "start_date": "2023-09-21", + "start_time": "09:15:00", + "start_time_ts": 1695312900, + "end_date": "2023-09-21", + "end_time": "09:25:00", + "event_type_sort": 3, + "description": "" + }, + { + "event_key": "31", + "active": "Y", + "pinned": "N", + "name": "GraphQL Everywhere - How GraphQL is Being Used in Places You Never Thought Were Possible - Uri Goldshtein, The Guild", + "event_start": "2023-09-21 09:25", + "event_end": "2023-09-21 09:35", + "event_type": "Keynote Sessions", + "description": "GraphQL can be helpful in more places than just client-server communication. I will talk about a number of ways The Guild is using GraphQL in places that help us make a difference with teams that are not the classic GraphQL teams and sometimes don't know what GraphQL is!", + "goers": "60", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "id": "b9e35d673e7b541421d45ce2043dc05e", + "venue_id": "1749452", + "speakers": [ + { + "username": "uri_goldshtein.23xujj9a", + "id": "14900013", + "name": "Uri Goldshtein", + "company": "The Guild", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "9:25am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "9:35am", + "start_date": "2023-09-21", + "start_time": "09:25:00", + "start_time_ts": 1695313500, + "end_date": "2023-09-21", + "end_time": "09:35:00", + "event_type_sort": 3 + }, + { + "event_key": "28", + "active": "Y", + "pinned": "N", + "name": "GraphQL Saving Lives - Leveraging Federation and Domain Experts to Help People Beat Addiction - David Emanuel Sarabia, inRecovery", + "event_start": "2023-09-21 09:35", + "event_end": "2023-09-21 09:55", + "event_type": "Keynote Sessions", + "description": "Health Tech comes with unique challenges, from data privacy laws, mission-critical uptime, to clinical validation. Further complicated by an industry resistant to change, weighed down by complex legacy enterprise systems and data silos.\n\nLearn valuable insights from our journey as an addiction care startup, transitioning from a monolith MVP engineered in isolation, to GraphQL Federation built alongside clinicians.\n\nBy involving domain experts in design thinking exercises, we not only constructed subgraphs with build-in clinical validation, data governance, and security, but also transformed our clinical end-users into champions for change.", + "goers": "48", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "id": "5684f90e0472771532ed5ee2b237300f", + "venue_id": "1749452", + "speakers": [ + { + "username": "david3103", + "id": "13551525", + "name": "David Emanuel Sarabia", + "company": "inRecovery", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "9:35am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "9:55am", + "start_date": "2023-09-21", + "start_time": "09:35:00", + "start_time_ts": 1695314100, + "end_date": "2023-09-21", + "end_time": "09:55:00", + "event_type_sort": 3 + }, + { + "event_key": "32", + "active": "Y", + "pinned": "N", + "name": "Navigating the Future: GraphQL’s Expansion, AI Adoption, and Modern Languages - Adapting for Success in 2025 - Uri Goldshtein, The Guild; Idit Levine, Solo.io; Benjie Gillam, Graphile; Lee Byron, GraphQL Foundation; Moderated by Keith Babo, Solo.io", + "event_start": "2023-09-21 09:55", + "event_end": "2023-09-21 10:20", + "event_type": "Keynote Sessions", + "description": "According to Gartner, GraphQL was implemented in just over 10% of enterprises in 2021 and they predict that GraphQL implementations will increase to over 50% of all enterprises by 2025.\n\nThe unprecedented surge in GraphQL’s popularity within enterprise ecosystems calls for an urgent introspective analysis and forward-thinking strategies. This panel discussion delves into the foreseeable future, envisioning GraphQL’s evolution by 2025 in response to expanding horizons, AI integration, and the embrace of contemporary programming languages.\n\nAs GraphQL cements its position as an indispensable tool in enterprise architectures, the necessity for the project to evolve rapidly without compromising consistency becomes apparent. Our esteemed panelists will shed light on the innovations and adaptations necessary for the GraphQL project to flourish. This includes a discussion on evolving governance models, project sustainability, and community engagement to ensure the GraphQL Foundation remains a steward of progress.\n\nAnother focal point is the emergence of AI in API ecosystems. How can GraphQL integrate with AI-driven systems? What challenges and opportunities does AI present for GraphQL APIs? Our experts will discuss the promising avenues where GraphQL and AI can complement each other, and how this synergy could redefine data-fetching paradigms.\n\nAdditionally, the panel will tackle the inevitable shift toward modern programming languages. With languages such as Rust, Kotlin, and Swift gaining traction, the GraphQL ecosystem must adapt. We’ll discuss the opportunities these languages present and how GraphQL can harness their strengths to remain a versatile and powerful tool for contemporary development.\n\nThe final segment will engage the audience in a thought-provoking dialogue on the GraphQL Foundation’s role in these evolving landscapes. Panelists will offer perspectives on what's next for the GraphQL Foundation from today through 2025.", + "goers": "55", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "id": "f485ec8e2dc60c435e8a3a90185d73bf", + "venue_id": "1749452", + "speakers": [ + { + "username": "uri_goldshtein.23xujj9a", + "id": "14900013", + "name": "Uri Goldshtein", + "company": "The Guild", + "custom_order": 0 + }, + { + "username": "idit_levine.25krdj4u", + "id": "18769950", + "name": "Idit Levine", + "company": "Solo.io", + "custom_order": 1 + }, + { + "username": "benjie3", + "id": "18743846", + "name": "Benjie Gillam", + "company": "Graphile", + "custom_order": 2 + }, + { + "username": "lee_byron.25krdom6", + "id": "18769956", + "name": "Lee Byron", + "company": "GraphQL Foundation", + "custom_order": 3 + }, + { + "username": "keith.babo", + "id": "19071264", + "name": "Keith Babo", + "company": "Solo.io", + "custom_order": 4 + } + ], + "moderators": [ + { + "username": "keith.babo", + "name": "Keith Babo", + "eventid": "f485ec8e2dc60c435e8a3a90185d73bf", + "role": "moderator", + "company": "Solo.io" + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "9:55am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "10:20am", + "start_date": "2023-09-21", + "start_time": "09:55:00", + "start_time_ts": 1695315300, + "end_date": "2023-09-21", + "end_time": "10:20:00", + "event_type_sort": 3 + }, + { + "event_key": "33", + "active": "Y", + "pinned": "N", + "name": "Closing Remarks - Keith Babo, Solo.io", + "event_start": "2023-09-21 10:20", + "event_end": "2023-09-21 10:30", + "event_type": "Keynote Sessions", + "goers": "53", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "id": "b3a3fa420d7467c46c215fa09cd548e0", + "venue_id": "1749452", + "speakers": [ + { + "username": "keith.babo", + "id": "19071264", + "name": "Keith Babo", + "company": "Solo.io", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "10:20am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "10:30am", + "start_date": "2023-09-21", + "start_time": "10:20:00", + "start_time_ts": 1695316800, + "end_date": "2023-09-21", + "end_time": "10:30:00", + "event_type_sort": 3, + "description": "" + }, + { + "event_key": "18", + "active": "Y", + "pinned": "N", + "name": "Break", + "event_start": "2023-09-21 10:30", + "event_end": "2023-09-21 10:50", + "event_type": "Breaks", + "goers": "35", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula D", + "id": "6d07d593f16320c810d6aba8553199ed", + "venue_id": "1749440", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "10:30am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "10:50am", + "start_date": "2023-09-21", + "start_time": "10:30:00", + "start_time_ts": 1695317400, + "end_date": "2023-09-21", + "end_time": "10:50:00", + "event_type_sort": 1, + "description": "" + }, + { + "event_key": "511235", + "active": "Y", + "pinned": "N", + "name": "Sponsor Showcase", + "event_start": "2023-09-21 10:30", + "event_end": "2023-09-21 17:30", + "event_type": "Sponsor Showcase", + "goers": "18", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula D", + "id": "dd289f7ecf487b271e0495ff09bba26e", + "venue_id": "1749440", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "10:30am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "5:30pm", + "start_date": "2023-09-21", + "start_time": "10:30:00", + "start_time_ts": 1695317400, + "end_date": "2023-09-21", + "end_time": "17:30:00", + "event_type_sort": 7, + "description": "" + }, + { + "event_key": "502933", + "active": "Y", + "pinned": "N", + "name": "Building Tooling That Speaks GraphQL - Tim Hall, Postman", + "event_start": "2023-09-21 10:50", + "event_end": "2023-09-21 11:20", + "event_type": "Session Presentations", + "event_subtype": "GraphQL Clients", + "description": "graphql.js underpins most of the clients and servers in the GraphQL ecosystem and it provides great primitives for developing your own tooling for working with GraphQL. In this session we'll take a look at some of the interesting and useful things you can do with parsers, visitors, and ASTs. We'll look at some examples from my experience working on Postman's new GraphQL client, including generating documentation, searching schemas, and building queries.", + "goers": "35", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "audience": "Intermediate", + "geo_area": "Yes", + "id": "9836d339aaf014a7ced7f87141fcee67", + "venue_id": "1762196", + "speakers": [ + { + "username": "tim.hall.engr", + "id": "18743807", + "name": "Tim Hall", + "company": "Postman", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "10:50am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "11:20am", + "start_date": "2023-09-21", + "start_time": "10:50:00", + "start_time_ts": 1695318600, + "end_date": "2023-09-21", + "end_time": "11:20:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/b3/Building Tooling that Speaks GraphQL.pdf", + "name": "Building Tooling that Speaks GraphQL.pdf" + } + ] + }, + { + "event_key": "499321", + "active": "Y", + "pinned": "N", + "name": "Exposing All of Wix.com APIs via GraphQL Automatically: Centralizing GraphQL Schema Generation - Gonen Jerbi, Wix.com", + "event_start": "2023-09-21 10:50", + "event_end": "2023-09-21 11:20", + "event_type": "Session Presentations", + "event_subtype": "Platform and Backend", + "description": "GraphQL has become a prevalent trend in API development, offering flexible data access. However, manually creating and maintaining GraphQL schemas in large organizations with numerous APIs can be challenging. At Wix, we tackled this issue by automating schema generation using API registry metadata. Join our talk to learn how this approach creates a centralized GraphQL server for all APIs, ensuring consistency, scalability, and ease of maintenance. Discover how this solution empowers Wix to provide platform capabilities without burdening teams with GraphQL expertise.", + "goers": "26", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F&G", + "audience": "Intermediate", + "id": "f319907e1e15ee620a33d3cbf01f323a", + "venue_id": "1762208", + "speakers": [ + { + "username": "gonenj", + "id": "18743816", + "name": "Gonen Jerbi", + "company": "Wix.com", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "10:50am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "11:20am", + "start_date": "2023-09-21", + "start_time": "10:50:00", + "start_time_ts": 1695318600, + "end_date": "2023-09-21", + "end_time": "11:20:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/af/GraphQL Conf_ Exposing All of Wix APIs via GraphQL Automatically_ Centralizing GraphQL Schema Generation.pdf", + "name": "GraphQL Conf_ Exposing All of Wix APIs via GraphQL Automatically_ Centralizing GraphQL Schema Generation.pdf" + } + ] + }, + { + "event_key": "490864", + "active": "Y", + "pinned": "N", + "name": "GraphQL Is a Superpower for Your Product Manager and Designer - Jeff Auriemma, Apollo GraphQL", + "event_start": "2023-09-21 10:50", + "event_end": "2023-09-21 11:20", + "event_type": "Session Presentations", + "description": "Good tools help get a job done faster and better. Great tools transform the entire end-to-end workflow from concept to deployment. GraphQL, an open standard and protocol for APIs, is both good and great. It allows your designer to explore the full capabilities of your data so they can conceive of the best user experience possible. GraphQL allows your engineers to say “three weeks” to your product manager where they would have said “two months” before. These enhancements have a practical impact on the relationships that are the foundation of your cross-functional team’s success. In this talk I’ll address some of the challenges product teams face as their understanding of the end user starts to outpace their ability to ship new features (which is healthy). Then, I will give some concrete examples where GraphQL can make a difference. A/B tests and designer productivity will be covered, all drawn from my experiences in both IC and EM roles on product engineering teams. For each of these scenarios I’ll show how GraphQL principles and tooling can give your team a practical advantage.", + "goers": "32", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "audience": "Beginner", + "geo_area": "Yes", + "id": "de1472b4294ac91745f3648d9228d8f2", + "venue_id": "1749452", + "speakers": [ + { + "username": "jeff.auriemma", + "id": "18743876", + "name": "Jeff Auriemma", + "company": "Apollo GraphQL", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "10:50am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "11:20am", + "start_date": "2023-09-21", + "start_time": "10:50:00", + "start_time_ts": 1695318600, + "end_date": "2023-09-21", + "end_time": "11:20:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/48/GraphQL is a superpower for your product manager and designer.pdf", + "name": "GraphQL is a superpower for your product manager and designer.pdf" + } + ] + }, + { + "event_key": "35", + "active": "Y", + "pinned": "N", + "name": "Building Geospatial GraphQL APIs By Leveraging GraphQL Database Integrations - William Lyon, Neo4j", + "event_start": "2023-09-21 11:30", + "event_end": "2023-09-21 12:00", + "event_type": "Session Presentations", + "event_subtype": "GraphQL and Data", + "description": "In this talk we explore how to work with geospatial data in GraphQL with a focus on geospatial database integrations for GraphQL. We will cover how to model spatial data types such as points, lines, and polygons in GraphQL and cover some use cases for working with geospatial data in your API such as spatial search, location-based recommendations, and routing. We will learn how to leverage geospatial database functionality through GraphQL-database integrations such as PostGIS and Neo4j.", + "goers": "13", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "audience": "Intermediate", + "id": "a638dad8443a364e12ed29b3bc50d128", + "venue_id": "1749452", + "speakers": [ + { + "username": "lyonwj1", + "id": "3634520", + "name": "William Lyon", + "company": "Neo4j", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "11:30am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "12:00pm", + "start_date": "2023-09-21", + "start_time": "11:30:00", + "start_time_ts": 1695321000, + "end_date": "2023-09-21", + "end_time": "12:00:00", + "event_type_sort": 6 + }, + { + "event_key": "493258", + "active": "Y", + "pinned": "N", + "name": "Houdini: A GraphQL-First Application Framework - Alec Aivazis, Arista Networks", + "event_start": "2023-09-21 11:30", + "event_end": "2023-09-21 12:00", + "event_type": "Session Presentations", + "event_subtype": "GraphQL Clients", + "description": "While the wider community is focused on blurring the lines between the server and client, GraphQL applications have been left behind. In this talk, Alec will present his attempt to change that: Houdini, a new application framework that blends GraphQL client, router, and bundler. An odd mix? Maybe. But with it comes the power of a GraphQL compiler, the latest in React's streaming capabilities, and a fresh take on client-side developer experience. Alec will introduce Houdini's basic APIs and demonstrate how it orchestrates your application’s data and asset needs.", + "goers": "29", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "audience": "Intermediate", + "geo_area": "Yes", + "id": "ce430c038efa9a9c19743d1ccc702de9", + "venue_id": "1762196", + "speakers": [ + { + "username": "alec102", + "id": "18743870", + "name": "Alec Aivazis", + "company": "Arista Networks", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "11:30am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "12:00pm", + "start_date": "2023-09-21", + "start_time": "11:30:00", + "start_time_ts": 1695321000, + "end_date": "2023-09-21", + "end_time": "12:00:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/d1/Houdini A GraphQL-First Framework.pdf", + "name": "Houdini A GraphQL-First Framework.pdf" + } + ] + }, + { + "event_key": "493431", + "active": "Y", + "pinned": "N", + "name": "Sophisticated Schema Mocking - Stephanie Saunders, Coinbase", + "event_start": "2023-09-21 11:30", + "event_end": "2023-09-21 12:00", + "event_type": "Session Presentations", + "event_subtype": "GraphQL in Production", + "description": "One of the key components to a stellar developer experience is GraphQL schema mocking.\n\nSchema mocking allows developers to:\n- Develop features faster by mocking unit tests with little to no code\n- Simplify e2e testing by mocking the entire schema at the network level\n- Test client data handling by intercepting and modifying server responses at the field level\n- Visualize how your component will look in production by using mocked data directly in Storybook\n\nAt Coinbase, we have iterated over sophisticated schema mocking solutions over the last few years as we have migrated to GraphQL. We’ve had failures and successes, and lots of learning along the way.\n\nIn this talk, we’ll dive deep into the following topics:\n- Out-Of-The-Box Tooling (Nock, MSW, Relay MockPayloadGenerator, graphql-tools/mock)\n- Custom Helpers (Operation Mocking, Data Component Wrappers, Network Middleware)\n- Client Side Data Manipulation (Mocking Single Fields, Client Schema Extensions)\n- Storybook (Loading Live/Mocked Data, Update Field Mocks Dynamically)", + "goers": "53", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F&G", + "audience": "Intermediate", + "geo_area": "Yes", + "id": "a44cec64a01063d4c6a11e54cc8d24d3", + "venue_id": "1762208", + "speakers": [ + { + "username": "stephanie.saunders2", + "id": "14992671", + "name": "Stephanie Saunders", + "company": "Coinbase", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "11:30am", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "12:00pm", + "start_date": "2023-09-21", + "start_time": "11:30:00", + "start_time_ts": 1695321000, + "end_date": "2023-09-21", + "end_time": "12:00:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/3b/Sophisticated Schema Mocking.pdf", + "name": "Sophisticated Schema Mocking.pdf" + } + ] + }, + { + "event_key": "17", + "active": "Y", + "pinned": "N", + "name": "Lunch", + "event_start": "2023-09-21 12:00", + "event_end": "2023-09-21 13:30", + "event_type": "Breaks", + "goers": "46", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula D", + "id": "cb1f116f01ae3d2ddf5100a18792abc2", + "venue_id": "1749440", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "12:00pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "1:30pm", + "start_date": "2023-09-21", + "start_time": "12:00:00", + "start_time_ts": 1695322800, + "end_date": "2023-09-21", + "end_time": "13:30:00", + "event_type_sort": 1, + "description": "" + }, + { + "event_key": "482840", + "active": "Y", + "pinned": "N", + "name": "Unify Data Sources with GraphQL at the Edge - Jamie Barton, Grafbase", + "event_start": "2023-09-21 13:30", + "event_end": "2023-09-21 13:40", + "event_type": "Lightning Talks", + "event_subtype": "GraphQL and Data", + "description": "Combine multiple APIs and databases into a single centralized GraphQL API that you can enhance with auth, permissions and caching, fully managed and deployed to the edge with Wasm.", + "goers": "28", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "audience": "Beginner", + "id": "520b70cfea27170fd6ed21d79f6b0357", + "venue_id": "1762196", + "speakers": [ + { + "username": "jamie855", + "id": "18743804", + "name": "Jamie Barton", + "company": "Grafbase", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "1:30pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "1:40pm", + "start_date": "2023-09-21", + "start_time": "13:30:00", + "start_time_ts": 1695328200, + "end_date": "2023-09-21", + "end_time": "13:40:00", + "event_type_sort": 4 + }, + { + "event_key": "492667", + "active": "Y", + "pinned": "N", + "name": "Scaling Schema Cardinality: Constructing Types at Runtime - Spencer MacKinnon, Okta", + "event_start": "2023-09-21 13:30", + "event_end": "2023-09-21 14:00", + "event_type": "Session Presentations", + "event_subtype": "Platform and Backend", + "description": "Typically, GraphQL schemas are constructed statically, and services will expose one or a set number of schemas depending on the roles of clients that query the system. When the system is highly configurable, allowing the creation of new types and fields at runtime, with different types and fields exposed depending on the clients privileges, building a set of static schemas becomes infeasible. This talk will discuss a technique used to construct types and fields at runtime, reflecting the users level of access within the system. This technique allowed us to scale to millions of schemas which reflected the permissions of the client querying the GraphQL endpoint. I will discuss the interplay between the static parts of the schema available to all clients and the dynamic parts built depending on the users privileges, as well as how to represent this structure with a \"metaschema\". Then, I'll demonstrate a pattern for constructing types at runtime, with a service responsible for safe instantiation that honors the GraphQL spec, interacting with a set of actors that control which types should be instantiated. I'll close with some discussion of how the spec impacts dynamic construction.", + "goers": "27", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F&G", + "audience": "Advanced", + "geo_area": "Yes", + "id": "e447a52591ed66a452e04d6ce3e3f09e", + "venue_id": "1762208", + "speakers": [ + { + "username": "spencer211", + "id": "18743795", + "name": "Spencer MacKinnon", + "company": "Okta", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "1:30pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "2:00pm", + "start_date": "2023-09-21", + "start_time": "13:30:00", + "start_time_ts": 1695328200, + "end_date": "2023-09-21", + "end_time": "14:00:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/cf/Scaling Schema Cardinality.pdf", + "name": "Scaling Schema Cardinality.pdf" + } + ] + }, + { + "event_key": "493830", + "active": "Y", + "pinned": "N", + "name": "Why Your GraphQL APIs Are (Increasingly) Under Attack - Shahar Binyamin, Inigo", + "event_start": "2023-09-21 13:30", + "event_end": "2023-09-21 14:00", + "event_type": "Session Presentations", + "event_subtype": "GraphQL Security", + "description": "Make no mistake about it: threat actors are increasingly bent on hunting down, attacking, and exploiting your GraphQL APIs. But understanding exactly how these actors go about recognizing where your GraphQL APIs reside—and how their attacks proceed—can put you on the right road to attack-thwarting countermeasures. GraphQL’s declarative query language enables clients to collect information using specialized queries. Threat actors commonly interrogate APIs in order to uncover critical information that could aid in further attacks. These information-gathering and reconnaissance tactics feed into the logic of their scanning tools to determine the location of GraphQL APIs—and what they contain. Session attendees will come away with thorough knowledge of how to detect and mitigate nefarious GraphQL activities, and how to implement a security layer to protect targeted GraphQL APIs and effectively block attacks. Attendees of this GraphQLConf talk will learn: -- The techniques attackers use to gather information on your GraphQL APIs -- The telltale anomalous behavior associated with that reconnaissance, and -- How to surface threats and block those attack paths before exploits occur.", + "goers": "25", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "audience": "Intermediate", + "id": "3d167cf84012c4ff2dcca8fca736b0dd", + "venue_id": "1749452", + "speakers": [ + { + "username": "shahar_binyamin.24vrzgo4", + "id": "17274089", + "name": "Shahar Binyamin", + "company": "Inigo", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "1:30pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "2:00pm", + "start_date": "2023-09-21", + "start_time": "13:30:00", + "start_time_ts": 1695328200, + "end_date": "2023-09-21", + "end_time": "14:00:00", + "event_type_sort": 6 + }, + { + "event_key": "511226", + "active": "Y", + "pinned": "N", + "name": "Not Your Regular Rate Limiting - Meenakshi Dhanani, Postman", + "event_start": "2023-09-21 13:45", + "event_end": "2023-09-21 13:55", + "event_type": "Lightning Talks", + "description": "Rate limiting in GraphQL APIs goes beyond the traditional approaches used in REST APIs. Regular techniques fall short when it comes to handling complex queries and preventing abuse. In this lightning talk, we will explore creative strategies for overcoming these challenges within the unique context of GraphQL's single endpoint architecture. We will also discuss practical techniques and dive into real-world examples that demonstrate how to optimize rate limiting in your GraphQL APIs and ensure the scalability and security of your applications.", + "goers": "45", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "geo_area": "Yes", + "id": "48f4e69c465b793750b5aa47bb7f2b6e", + "venue_id": "1762196", + "speakers": [ + { + "username": "meenakshi.dhanani1", + "id": "18777983", + "name": "Meenakshi Dhanani", + "company": "Postman", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "1:45pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "1:55pm", + "start_date": "2023-09-21", + "start_time": "13:45:00", + "start_time_ts": 1695329100, + "end_date": "2023-09-21", + "end_time": "13:55:00", + "event_type_sort": 4, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/b6/GraphQL Conf 2023 - Rate Limiting.pdf", + "name": "GraphQL Conf 2023 - Rate Limiting.pdf" + } + ] + }, + { + "event_key": "501214", + "active": "Y", + "pinned": "N", + "name": "AI, GraphQL, and the Rise of Malleable Applications - Aleksandra Sikora, The Guild", + "event_start": "2023-09-21 14:10", + "event_end": "2023-09-21 14:40", + "event_type": "Session Presentations", + "event_subtype": "Emerging Community Trends", + "description": "This presentation will explore how AI makes code writing and development more accessible and highlight the trend of malleable applications. We’ll see how users are becoming architects of their own apps, reshaping them to suit their needs. We will examine existing tools to understand the possibilities, and we'll see how GraphQL fits there.", + "goers": "31", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "audience": "Beginner", + "id": "4feef977ceb883c69c91ccd2dd607aec", + "venue_id": "1762196", + "speakers": [ + { + "username": "alexsandra.sikora", + "id": "18743798", + "name": "Aleksandra Sikora", + "company": "The Guild", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "2:10pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "2:40pm", + "start_date": "2023-09-21", + "start_time": "14:10:00", + "start_time_ts": 1695330600, + "end_date": "2023-09-21", + "end_time": "14:40:00", + "event_type_sort": 6 + }, + { + "event_key": "495993", + "active": "Y", + "pinned": "N", + "name": "GraphQL in Production: Empowering Efficient Data Retrieval and Unleashing Developer Productivity - Seddik Benaissa, Northeastern University", + "event_start": "2023-09-21 14:10", + "event_end": "2023-09-21 14:40", + "event_type": "Session Presentations", + "event_subtype": "GraphQL in Production", + "description": "Join me in this talk as we delve into the realm of GraphQL in practical applications. Experience firsthand how GraphQL has revolutionized the way we retrieve data. Discover the hurdles encountered with traditional APIs, such as bloated payloads and sluggish response times. Witness the tremendous success and influence of adopting GraphQL, the robust query language for APIs. Unearth real-life examples, best practices, and valuable lessons from implementing GraphQL in a production environment. Gain valuable insights into customizing data queries, optimizing performance, and enhancing developer efficiency. This presentation is essential for software engineers and developers eager to harness the power of GraphQL, conquer data retrieval obstacles, and unleash the full potential of their systems.", + "goers": "26", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F&G", + "audience": "Intermediate", + "geo_area": "Yes", + "id": "1e7a35fbd833d9be1aa9719f77c86fb7", + "venue_id": "1762208", + "speakers": [ + { + "username": "sdk.bens", + "id": "18743831", + "name": "Seddik Benaissa", + "company": "Northeastern University", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "2:10pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "2:40pm", + "start_date": "2023-09-21", + "start_time": "14:10:00", + "start_time_ts": 1695330600, + "end_date": "2023-09-21", + "end_time": "14:40:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/01/Seddik Benaissa.pdf", + "name": "Seddik Benaissa.pdf" + } + ] + }, + { + "event_key": "6", + "active": "Y", + "pinned": "N", + "name": "Increase Your Productivity With No-Code GraphQL Mocking - Laurent Broudoux, Microcks & Postman", + "event_start": "2023-09-21 14:10", + "event_end": "2023-09-21 14:40", + "event_type": "Session Presentations", + "description": "You're about to embark on a new adventure that incorporates GraphQL! Here's a filthy method for becoming a 10-x engineer: fake it until you make it!\n\nMocking GraphQL allows you to better serve the business by providing clear descriptions of schemas, types, and examples. This also helps in the separation of front-end and back-end activities and in the testing of your future API. Join this session to learn more about getting started with GraphQL mocking without having to worry about coding or constructing your own fake server, thanks to Microcks!\n\nIn this session, we will illustrate how to: shorten the feedback loop when designing a new API, speed-up development making autonomous teams, make your CI/CD pipeline rock-solid with automated tests inferred from mocks!", + "goers": "33", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "id": "95e6219a5e20a9e2f9381822460932ac", + "venue_id": "1749452", + "speakers": [ + { + "username": "laurent57", + "id": "13884588", + "name": "Laurent Broudoux", + "company": "Postman", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "2:10pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "2:40pm", + "start_date": "2023-09-21", + "start_time": "14:10:00", + "start_time_ts": 1695330600, + "end_date": "2023-09-21", + "end_time": "14:40:00", + "event_type_sort": 6 + }, + { + "event_key": "498924", + "active": "Y", + "pinned": "N", + "name": "Adoption of GraphQL in Meta Ads Manager - Bryan Yang & Yuanchao Zhu, Meta", + "event_start": "2023-09-21 14:50", + "event_end": "2023-09-21 15:20", + "event_type": "Session Presentations", + "event_subtype": "GraphQL Clients", + "description": "Within Meta, there are products still adopting GraphQL. Ads Manager is a large product that is iteratively transitioning to GraphQL from a REST-based API, GraphAPI. This talk will cover why we chose to migrate, challenges we faced and strategies to adopt GraphQL iteratively, without a full product rewrite.", + "goers": "16", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "audience": "Intermediate", + "geo_area": "Yes", + "id": "afefc1feb47ec68ca6031cfec2e7d46b", + "venue_id": "1762196", + "speakers": [ + { + "username": "bsy", + "id": "18743852", + "name": "Bryan Yang", + "company": "Meta Platforms, Inc.", + "custom_order": 0 + }, + { + "username": "yczhu", + "id": "18743882", + "name": "Yuanchao Zhu", + "company": "Meta", + "custom_order": 1 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "2:50pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "3:20pm", + "start_date": "2023-09-21", + "start_time": "14:50:00", + "start_time_ts": 1695333000, + "end_date": "2023-09-21", + "end_time": "15:20:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/3f/GraphQL Conf 2023 - Adoption of GraphQL in Ads Manager.pdf", + "name": "GraphQL Conf 2023 - Adoption of GraphQL in Ads Manager.pdf" + } + ] + }, + { + "event_key": "502937", + "active": "Y", + "pinned": "N", + "name": "Fixing the Billion Dollar Mistake: Client Controlled Nullability - Stephen Spalding, Netflix", + "event_start": "2023-09-21 14:50", + "event_end": "2023-09-21 15:20", + "event_type": "Session Presentations", + "event_subtype": "GraphQL Core", + "description": "Null has been famously called “the billion dollar mistake”. The Client Controlled Nullability proposal aims to empower client developers to tame nullability in the graph. Come learn how this magic works and why it will rock your world!", + "goers": "47", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "audience": "Advanced", + "geo_area": "Yes", + "id": "50005edb4a441b0335d1b80b4ad62b1a", + "venue_id": "1749452", + "speakers": [ + { + "username": "sspalding2", + "id": "18743825", + "name": "Stephen Spalding", + "company": "Netflix", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "2:50pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "3:20pm", + "start_date": "2023-09-21", + "start_time": "14:50:00", + "start_time_ts": 1695333000, + "end_date": "2023-09-21", + "end_time": "15:20:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/d0/Stephen Spalding - Fixing the Billion Dollar Mistake - Client Controlled Nullability.pdf", + "name": "Stephen Spalding - Fixing the Billion Dollar Mistake - Client Controlled Nullability.pdf" + } + ] + }, + { + "event_key": "511238", + "active": "Y", + "pinned": "N", + "name": "Scaling the Data Access by Leveraging GraphQL Federation for Service to Service Communication - Serhii Korin, Booking.com", + "event_start": "2023-09-21 14:50", + "event_end": "2023-09-21 15:20", + "event_type": "Session Presentations", + "event_subtype": "GraphQL in Production", + "description": "At booking.com’s scale rendering the product pages requires retrieving data from hundreds of data sources. This causes a very high load to the data backends. We pre-materialize the data required for rendering the product pages in order to scale data access. Different products have different data needs. Over time this led to the materialization layer becoming a monolithic service with a monolithic schema.\n\nThis talk focuses on how we leveraged the GraphQL Federation technology to let product teams choose which data to materialize and data owners to scale data access to their data without negatively affecting the ownership, network costs and latencies.", + "goers": "24", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F&G", + "audience": "Intermediate", + "geo_area": "Yes", + "id": "0bea54e1f79d706f2da4c802f8581ae5", + "venue_id": "1762208", + "speakers": [ + { + "username": "serhii.korin", + "id": "19235292", + "name": "Serhii Korin", + "company": "Booking.com", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "2:50pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "3:20pm", + "start_date": "2023-09-21", + "start_time": "14:50:00", + "start_time_ts": 1695333000, + "end_date": "2023-09-21", + "end_time": "15:20:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/aa/Scaling the data access by leveraging GraphQL Federation for S2S.pdf", + "name": "Scaling the data access by leveraging GraphQL Federation for S2S.pdf" + } + ] + }, + { + "event_key": "15", + "active": "Y", + "pinned": "N", + "name": "Break", + "event_start": "2023-09-21 15:20", + "event_end": "2023-09-21 15:40", + "event_type": "Breaks", + "goers": "33", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula D", + "id": "e3a855088054e180ec6e046bf3d8be8a", + "venue_id": "1749440", + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "3:20pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "3:40pm", + "start_date": "2023-09-21", + "start_time": "15:20:00", + "start_time_ts": 1695334800, + "end_date": "2023-09-21", + "end_time": "15:40:00", + "event_type_sort": 1, + "description": "" + }, + { + "event_key": "501477", + "active": "Y", + "pinned": "N", + "name": "The Evolution of GraphQL Code Generation - Laurin Quast, The Guild", + "event_start": "2023-09-21 15:40", + "event_end": "2023-09-21 15:50", + "event_type": "Lightning Talks", + "event_subtype": "GraphQL Clients", + "description": "As the maintainer of GraphQL Code Generator, Laurin shows how the tool has changed over time and informs you of the most recent best practices that allow you to keep the client code lean and scalable.", + "goers": "35", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "audience": "Beginner", + "id": "675c416b16ad2b0c519b1ec894353fc5", + "venue_id": "1762196", + "speakers": [ + { + "username": "laurinquast", + "id": "18743819", + "name": "Laurin Quast", + "company": "The Guild", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "3:40pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "3:50pm", + "start_date": "2023-09-21", + "start_time": "15:40:00", + "start_time_ts": 1695336000, + "end_date": "2023-09-21", + "end_time": "15:50:00", + "event_type_sort": 4 + }, + { + "event_key": "494695", + "active": "Y", + "pinned": "N", + "name": "Improving User Experiences with a Nullable Schema - Ernie Turner, Coinbase", + "event_start": "2023-09-21 15:40", + "event_end": "2023-09-21 16:10", + "event_type": "Session Presentations", + "event_subtype": "GraphQL and Data", + "description": "When designing a GraphQL schema, it’s tempting to mark every field as non-null using the \"!\" operator. While it may seem convenient and simplifies code readability, this seemingly innocuous choice can have unforeseen consequences for your applications, especially during service disruptions. Moreover, these downsides might not become apparent until a significant portion of your schema has been marked as non-nullable. In this talk, we will: - Challenge the traditional server-centric approach and advocate for shifting the responsibility of field nullability to the client. - Explore the reasons behind this paradigm shift and introduce existing and upcoming tools that empower clients to determine whether a field can be null or not. - Delve into the Client Controlled Nullability proposal, demonstrating its potential in GraphQL workflows. - Provide practical methods and best practices to safely migrate away from a non-null schema, ensuring compatibility with existing clients without causing disruptions.", + "goers": "31", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "audience": "Intermediate", + "geo_area": "Yes", + "id": "888b77af90aa0ff776adc9669a29cb3f", + "venue_id": "1749452", + "speakers": [ + { + "username": "ernie.turner1", + "id": "18743873", + "name": "Ernie Turner", + "company": "Coinbase", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "3:40pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "4:10pm", + "start_date": "2023-09-21", + "start_time": "15:40:00", + "start_time_ts": 1695336000, + "end_date": "2023-09-21", + "end_time": "16:10:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/ce/Improving User Experiences with a Nullable Schema_ GraphQL Conf 2023.pdf", + "name": "Improving User Experiences with a Nullable Schema_ GraphQL Conf 2023.pdf" + } + ] + }, + { + "event_key": "13", + "active": "Y", + "pinned": "N", + "name": "Why AI needs GraphQL - Anant Jhingran, IBM", + "event_start": "2023-09-21 15:40", + "event_end": "2023-09-21 16:10", + "event_type": "Session Presentations", + "description": "There is a bright future for AI-driven integration, both in the application of integration to provide access to enterprise data for use by AI tools and also for application of AI to benefit the delivery of integration scenarios. However, AI foundation models must be complemented by integration and API technologies, and GraphQL can be the perfect technology for this. Having founded StepZen (now acquired by IBM) I have a particular bias for GraphQL applications, but in this case they can be especially powerful. AI applications can be trained to call one universal GraphQL API, and not have to deal with the subtleties of formats and authorizations and sideways information passing if the application were to learn multiple backends. In this talk I’ll explain why AI needs GraphQL for integrations, and what the future of AI and GraphQL looks like.", + "goers": "21", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F&G", + "id": "f802d22f97a3d3d9d2733bf637758f56", + "venue_id": "1762208", + "speakers": [ + { + "username": "ajhingran", + "id": "19225935", + "name": "Anant Jhingran", + "company": "IBM", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "3:40pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "4:10pm", + "start_date": "2023-09-21", + "start_time": "15:40:00", + "start_time_ts": 1695336000, + "end_date": "2023-09-21", + "end_time": "16:10:00", + "event_type_sort": 6 + }, + { + "event_key": "14", + "active": "Y", + "pinned": "N", + "name": "Breaking the Mold: Innovative Approaches to Testing GraphQL APIs - Pooja Mistry, Postman", + "event_start": "2023-09-21 15:55", + "event_end": "2023-09-21 16:05", + "event_type": "Lightning Talks", + "goers": "32", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "id": "f653b9931d85c7958993ca62e7853972", + "venue_id": "1762196", + "speakers": [ + { + "username": "pooja.mistry", + "id": "15879818", + "name": "Pooja Mistry", + "company": "Postman", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "3:55pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "4:05pm", + "start_date": "2023-09-21", + "start_time": "15:55:00", + "start_time_ts": 1695336900, + "end_date": "2023-09-21", + "end_time": "16:05:00", + "event_type_sort": 4, + "description": "" + }, + { + "event_key": "501218", + "active": "Y", + "pinned": "N", + "name": "Shared Schema Policies and Automatic Standards Across Your Company’s Teams - Dimitri Postolov, The Guild", + "event_start": "2023-09-21 16:10", + "event_end": "2023-09-21 16:20", + "event_type": "Lightning Talks", + "event_subtype": "GraphQL in Production", + "description": "As GraphQL adoption grows inside our companies and more and more teams are adopting it, it gets harder to maintain a consistent way of using it across the company. In this talk, we will share different methods and open-source tools that help you manage GraphQL standardizations and guarantee best practices across your company. Sharing automatic rules from the community and writing your own custom rules for your specific company.", + "goers": "31", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "audience": "Intermediate", + "id": "ff6a2ae37d87e74c9f7739a1331804a1", + "venue_id": "1762196", + "speakers": [ + { + "username": "en3m", + "id": "18743843", + "name": "Dimitri Postolov", + "company": "The Guild", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "4:10pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "4:20pm", + "start_date": "2023-09-21", + "start_time": "16:10:00", + "start_time_ts": 1695337800, + "end_date": "2023-09-21", + "end_time": "16:20:00", + "event_type_sort": 4 + }, + { + "event_key": "38", + "active": "Y", + "pinned": "N", + "name": "Deep Learnings: Migrating legacy services to Federated GraphQL - Christian Ernst, Booking.com", + "event_start": "2023-09-21 16:20", + "event_end": "2023-09-21 16:50", + "event_type": "Session Presentations", + "event_subtype": "GraphQL in Production", + "description": "At Booking.com we made the decision to move to GraphQL in order to modernize our monolithic front-end data providing services. Our journey started with the monograph, a singular service to provide all GraphQL data as a bridge between legacy and new. This service, owned by a small team, exploded in use receiving countless contributions across the company. We soon realised as a team this would not scale for an entire company.\n\nThis talk focuses on our experience and our journey from our first steps into the world of GraphQL and then our leap to move to a Federated GraphQL layer.\n\nWe will share some of our most important learnings from the challenges we faced, including scaling and resiliency, bringing on legacy services, and multi cloud support and how we are handling these challenges via our ongoing initiatives and what we think the future of GraphQL at Booking.com looks like.", + "goers": "29", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "audience": "Beginner", + "geo_area": "Yes", + "id": "8a1158bda6933f83f43b704bff54ff63", + "venue_id": "1749452", + "speakers": [ + { + "username": "christian.ernst", + "id": "19084532", + "name": "Christian Ernst", + "company": "Booking.com", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "4:20pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "4:50pm", + "start_date": "2023-09-21", + "start_time": "16:20:00", + "start_time_ts": 1695338400, + "end_date": "2023-09-21", + "end_time": "16:50:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/70/Migrating Legacy Services to Federated GraphQL.pdf", + "name": "Migrating Legacy Services to Federated GraphQL.pdf" + } + ] + }, + { + "event_key": "501201", + "active": "Y", + "pinned": "N", + "name": "How to Choose a GraphQL Gateway? - Dotan Simha, The Guild", + "event_start": "2023-09-21 16:20", + "event_end": "2023-09-21 16:50", + "event_type": "Session Presentations", + "event_subtype": "Platform and Backend", + "description": "Federation, Stitching, Gateways, so many terms out there and so many options for choosing your GraphQL gateway strategy. In this talk I will demonstrate my open work on comparing different GraphQL gateway solutions, what are the different requirements to take into account and show how many existing solutions fit into this framework for choice.\n\nhttps://the-guild.dev/blog/state-of-graphql-gateways-in-2023", + "goers": "37", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F&G", + "audience": "Intermediate", + "id": "70f9e59dc60cf417aa38eb890b2a8abe", + "venue_id": "1762208", + "speakers": [ + { + "username": "dotansimha", + "id": "18743828", + "name": "Dotan Simha", + "company": "The Guild", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "4:20pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "4:50pm", + "start_date": "2023-09-21", + "start_time": "16:20:00", + "start_time_ts": 1695338400, + "end_date": "2023-09-21", + "end_time": "16:50:00", + "event_type_sort": 6 + }, + { + "event_key": "511242", + "active": "Y", + "pinned": "N", + "name": "Dataloader 3.0 - An Alternative Algorithm to Solve N+1 Problems - Jens Neuse, WunderGraph", + "event_start": "2023-09-21 17:00", + "event_end": "2023-09-21 17:30", + "event_type": "Session Presentations", + "description": "When you ask GraphQL Developers how they solve N+1 problems, the immediate answer you get is using the \"Dataloader\" pattern.\nWhat actually is the Dataloader pattern? How does it work and how does it solve the problem?\nThis talk dives deep into the topic of efficiently resolving deeply nested data.\nOnce we understand how the Dataloader pattern works,\nwe explore its drawbacks and limitations.\nFinally, we will present an alternative algorithm that uses breadth-first resolving compared to depth-first, which Dataloader builds on top.\nJoin Jens in this talk to learn more about how breadth-first resolving could help GraphQL servers and Gateways resolve N+1 problems more effectively.", + "goers": "46", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula E", + "geo_area": "Yes", + "id": "09bc04c42310bfe14024455bce46d781", + "venue_id": "1762196", + "speakers": [ + { + "username": "jens63", + "id": "19226202", + "name": "Jens Neuse", + "company": "WunderGraph", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "5:00pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "5:30pm", + "start_date": "2023-09-21", + "start_time": "17:00:00", + "start_time_ts": 1695340800, + "end_date": "2023-09-21", + "end_time": "17:30:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/c0/Dataloader_3.0_WunderGraph_Jens_Neuse_slides.pdf", + "name": "Dataloader_3.0_WunderGraph_Jens_Neuse_slides.pdf" + }, + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/38/Dataloader_3.0_WunderGraph_Jens_Neuse_algorithm.pdf", + "name": "Dataloader_3.0_WunderGraph_Jens_Neuse_algorithm.pdf" + } + ] + }, + { + "event_key": "511241", + "active": "Y", + "pinned": "N", + "name": "The Benefits of Code First Over Schema First in GraphQL - Patrick Arminio, Apollo", + "event_start": "2023-09-21 17:00", + "event_end": "2023-09-21 17:30", + "event_type": "Session Presentations", + "event_subtype": "GraphQL Core", + "description": "This talk will explore the advantages of using a code-first approach for developing GraphQL APIs over a schema-first approach. GraphQL has gained popularity as a modern API technology that enables developers to build APIs that are flexible, performant, and easy to use. However, one of the challenges of using GraphQL is deciding whether to use a schema-first or a code-first approach.\n\nIn this talk, we will discuss how code-first allows for greater flexibility, scalability, and maintainability in GraphQL API development. We'll explore how it can improve the development process, especially for large teams and complex projects. By using code-first, developers can write code that generates the schema, which provides greater control over the API design and allows for more efficient iteration.Moreover, we'll examine how Strawberry, a GraphQL library built on Python, leverages the power of Python's type system to provide an end-to-end type-safe code-first approach. This approach allows developers to define their GraphQL schema using Python classes, which Strawberry then converts into a GraphQL schema, ensuring type safety throughout the development process.", + "goers": "19", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula F&G", + "audience": "Intermediate", + "id": "118f99976647d953d6554bac33dbf3bf", + "venue_id": "1762208", + "speakers": [ + { + "username": "patrick.arminio", + "id": "19178765", + "name": "Patrick Arminio", + "company": "Apollo", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "5:00pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "5:30pm", + "start_date": "2023-09-21", + "start_time": "17:00:00", + "start_time_ts": 1695340800, + "end_date": "2023-09-21", + "end_time": "17:30:00", + "event_type_sort": 6 + }, + { + "event_key": "37", + "active": "Y", + "pinned": "N", + "name": "The evolution of the GraphQL Orchestrator powering Intuit Consumer Apps - Ashpak Shaikh, Intuit", + "event_start": "2023-09-21 17:00", + "event_end": "2023-09-21 17:30", + "event_type": "Session Presentations", + "event_subtype": "GraphQL in Production", + "description": "This session will talk about the GraphQL journey at Intuit discussing what challenges we faced while scaling the GraphQL ecosystem at Intuit as the number of GraphQL microservices grew. We will focus on the internal GraphQL Orchestrator implementation that powers the Consumer Group, combining 50+ microservices that serve 150+ clients spanning multiple Intuit applications like Mint, TurboTax, Turbo Tax Live, and Virtual Expert Platform.\n\nThe session will cover the following topics\n* The combination of Recursive Schema Stitching + Apollo Federation for schema composition.\n* Inclusion of REST microservices in the GraphQL Ecosystem using declarative Adapters.\n* Securing the unified graph using GraphQL Authorization and user consent checks.\n* Loosely coupled registration of microservices with the GraphQL gateway using AWS S3 as persistence.\n* Our journey to open source the orchestrator implementation.", + "goers": "15", + "seats": "0", + "invite_only": "N", + "venue": "Grand Peninsula A,B,C", + "audience": "Advanced", + "geo_area": "Yes", + "id": "17f150667d13a57f28bae524443f4c60", + "venue_id": "1749452", + "speakers": [ + { + "username": "ashpak_shaikh", + "id": "19084619", + "name": "Ashpak Shaikh", + "company": "Intuit", + "custom_order": 0 + } + ], + "event_start_year": "2023", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "21", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "5:00pm", + "event_end_year": "2023", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "21", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "5:30pm", + "start_date": "2023-09-21", + "start_time": "17:00:00", + "start_time_ts": 1695340800, + "end_date": "2023-09-21", + "end_time": "17:30:00", + "event_type_sort": 6, + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf23/a3/ashpak_graphql_conf.pdf", + "name": "ashpak_graphql_conf.pdf" + } + ] + } +] \ No newline at end of file diff --git a/scripts/sync-sched/schedule-2024.json b/scripts/sync-sched/schedule-2024.json new file mode 100644 index 0000000000..3a4ba518ac --- /dev/null +++ b/scripts/sync-sched/schedule-2024.json @@ -0,0 +1,4746 @@ +[ + { + "event_key": "706600", + "active": "Y", + "pinned": "N", + "name": "Registration & Badge Pick-up", + "event_start": "2024-09-09 14:00", + "event_end": "2024-09-09 17:00", + "event_type": "Registration & Badge Pick-up", + "goers": "21", + "seats": "0", + "invite_only": "N", + "venue": "Level 2 Foyer", + "id": "2acdefcaf8b375f6a2105cf3d3a4c6e0", + "venue_id": "1944317", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "9", + "event_start_weekday": "Monday", + "event_start_weekday_short": "Mon", + "event_start_time": "2:00pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "9", + "event_end_weekday": "Monday", + "event_end_weekday_short": "Mon", + "event_end_time": "5:00pm", + "start_date": "2024-09-09", + "start_time": "14:00:00", + "start_time_ts": 1725915600, + "end_date": "2024-09-09", + "end_time": "17:00:00", + "event_type_sort": "12", + "description": "" + }, + { + "event_key": "706603", + "active": "Y", + "pinned": "N", + "name": "Registration & Badge Pick-up", + "event_start": "2024-09-10 08:00", + "event_end": "2024-09-10 19:00", + "event_type": "Registration & Badge Pick-up", + "goers": "51", + "seats": "0", + "invite_only": "N", + "venue": "Level 2 Foyer", + "id": "3c81808073ae7f888acc66d832877764", + "venue_id": "1944317", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "8:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "7:00pm", + "start_date": "2024-09-10", + "start_time": "08:00:00", + "start_time_ts": 1725980400, + "end_date": "2024-09-10", + "end_time": "19:00:00", + "event_type_sort": "12", + "description": "" + }, + { + "event_key": "706605", + "active": "Y", + "pinned": "N", + "name": "Welcome & Opening Remarks - Lee Byron, GraphQL Foundation", + "event_start": "2024-09-10 09:00", + "event_end": "2024-09-10 09:15", + "event_type": "Keynote Sessions", + "goers": "83", + "video_stream": "https://www.youtube.com/watch?v=FTzPajvTw4c", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan Ballroom", + "id": "1b3086b33b9d1b30790f02a49857cfe0", + "venue_id": "1944323", + "speakers": [ + { + "username": "lee_byron.25jvpjmb", + "id": "18743534", + "name": "Lee Byron", + "company": "GraphQL Foundation", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "9:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "9:15am", + "start_date": "2024-09-10", + "start_time": "09:00:00", + "start_time_ts": 1725984000, + "end_date": "2024-09-10", + "end_time": "09:15:00", + "event_type_sort": "11", + "description": "" + }, + { + "event_key": "686029", + "active": "Y", + "pinned": "N", + "name": "Keynote: You're Our Universe: GraphQL Community Update 2024 - Benjie Gillam, Graphile", + "event_start": "2024-09-10 09:15", + "event_end": "2024-09-10 09:25", + "event_type": "Keynote Sessions", + "description": "The GraphQL ecosystem is vast, composed of tools and libraries in many programming languages, people and organizations from across the globe, and a plethora of maintainers, contributors and developers pulling them together. The primary mission of the GraphQL Foundation is to ensure that the GraphQL community is able to focus on the continued evolution of the specification, the shared contract that competitors and collaborators alike implement to enable maximal interoperability. This talk is to thank YOU, the GraphQL community, and highlight some of the heroes that have arisen to heed this call. Find out about their efforts over the last year improving our shared specifications, implementations, documentation, tooling, tests, and websites; about how you can get involved and help shape GraphQL to fit your organization's needs; about the support we have available; and about other community initiatives you may wish to avail yourself of.", + "goers": "81", + "video_stream": "https://www.youtube.com/watch?v=xaTEuk-DKqI", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan Ballroom", + "company": "Any", + "id": "5245297ed1f7b82885c742d77f209bda", + "venue_id": "1944323", + "speakers": [ + { + "username": "benjie3", + "id": "18743846", + "name": "Benjie Gillam", + "company": "Graphile", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "9:15am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "9:25am", + "start_date": "2024-09-10", + "start_time": "09:15:00", + "start_time_ts": 1725984900, + "end_date": "2024-09-10", + "end_time": "09:25:00", + "event_type_sort": "11" + }, + { + "event_key": "706606", + "active": "Y", + "pinned": "N", + "name": "Sponsored Keynote: Uri Goldshtein, The Guild", + "event_start": "2024-09-10 09:30", + "event_end": "2024-09-10 09:40", + "event_type": "Keynote Sessions", + "goers": "71", + "video_stream": "https://www.youtube.com/watch?v=Q8l9u5K5VBA", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan Ballroom", + "id": "0cc847db0ed6bf193da7b5413c7f3e8e", + "venue_id": "1944323", + "speakers": [ + { + "username": "uri_goldshtein.23xujj9a", + "id": "14900013", + "name": "Uri Goldshtein", + "company": "The Guild", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "9:30am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "9:40am", + "start_date": "2024-09-10", + "start_time": "09:30:00", + "start_time_ts": 1725985800, + "end_date": "2024-09-10", + "end_time": "09:40:00", + "event_type_sort": "11", + "description": "" + }, + { + "event_key": "698207", + "active": "Y", + "pinned": "N", + "name": "Keynote: The State of Distributed GraphQL - Michael Staib, ChilliCream Inc", + "event_start": "2024-09-10 09:40", + "event_end": "2024-09-10 09:55", + "event_type": "Keynote Sessions", + "description": "The GraphQL community has come together to standardize how people can build distributed systems with GraphQL as an orchestrator. In this talk I will explain the general idea that we have for GraphQL as an Orchestrator in this space and how the new specification is tackling this. We will look at the progress we have made since last GraphQL Conf in the GraphQL composite schema working group and also get some sneak peaks at our early RFCs and prototypes. I will outline how this new specification is taking the best ideas of existing solutions in the market to make the next big leap towards mainstream adoption. This will allow anyone to build tooling by implementing the spec or parts of the spec that seamlessly integrate with other vendors.", + "goers": "73", + "video_stream": "https://www.youtube.com/watch?v=A8T1QHJj0WM", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan Ballroom", + "company": "Intermediate", + "id": "7a165daf8a2402b63ced2f6b49ce9155", + "venue_id": "1944323", + "speakers": [ + { + "username": "michael_staib.23xujj9p", + "id": "14900031", + "name": "Michael Staib", + "company": "ChilliCream", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "9:40am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "9:55am", + "start_date": "2024-09-10", + "start_time": "09:40:00", + "start_time_ts": 1725986400, + "end_date": "2024-09-10", + "end_time": "09:55:00", + "event_type_sort": "11" + }, + { + "event_key": "13", + "active": "Y", + "pinned": "N", + "name": "Keynote: TSC Panel - Lee Byron, GraphQL Foundation; Kewei Qu, Meta; Rob Richard, 1stDibs; Michael Staib, ChilliCream; Moderated by Sasha Solomon, Staff Software Engineer & Tech Lead", + "event_start": "2024-09-10 09:55", + "event_end": "2024-09-10 10:25", + "event_type": "Keynote Sessions", + "goers": "78", + "video_stream": "https://www.youtube.com/watch?v=3UbcTEV54bI", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan Ballroom", + "id": "b5386fb97755f765369c45e5f24094ec", + "venue_id": "1944323", + "speakers": [ + { + "username": "michael_staib.23xujj9p", + "id": "14900031", + "name": "Michael Staib", + "company": "ChilliCream", + "custom_order": 0 + }, + { + "username": "lee_byron.25jvpjmb", + "id": "18743534", + "name": "Lee Byron", + "company": "GraphQL Foundation", + "custom_order": 1 + }, + { + "username": "qkw1221", + "id": "18743864", + "name": "Kewei Qu", + "company": "Meta", + "custom_order": 2 + }, + { + "username": "robrichard87", + "id": "21066852", + "name": "Rob Richard", + "company": "1stdibs", + "custom_order": 3 + }, + { + "username": "sasha177", + "id": "21336701", + "name": "Sasha Solomon", + "custom_order": 4 + } + ], + "moderators": [ + { + "username": "sasha177", + "name": "Sasha Solomon", + "eventid": "b5386fb97755f765369c45e5f24094ec", + "role": "moderator" + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "9:55am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "10:25am", + "start_date": "2024-09-10", + "start_time": "09:55:00", + "start_time_ts": 1725987300, + "end_date": "2024-09-10", + "end_time": "10:25:00", + "event_type_sort": "11", + "description": "" + }, + { + "event_key": "706615", + "active": "Y", + "pinned": "N", + "name": "Keynote: Closing Remarks - Lee Byron, GraphQL Foundation", + "event_start": "2024-09-10 10:25", + "event_end": "2024-09-10 10:30", + "event_type": "Keynote Sessions", + "goers": "73", + "video_stream": "https://www.youtube.com/watch?v=5DpIO-isCMQ", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan Ballroom", + "id": "35f3d53159a5c274e8595e9eb4b6d6c7", + "venue_id": "1944323", + "speakers": [ + { + "username": "lee_byron.25jvpjmb", + "id": "18743534", + "name": "Lee Byron", + "company": "GraphQL Foundation", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "10:25am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "10:30am", + "start_date": "2024-09-10", + "start_time": "10:25:00", + "start_time_ts": 1725989100, + "end_date": "2024-09-10", + "end_time": "10:30:00", + "event_type_sort": "11", + "description": "" + }, + { + "event_key": "9", + "active": "Y", + "pinned": "N", + "name": "Coffee Break", + "event_start": "2024-09-10 10:30", + "event_end": "2024-09-10 11:00", + "event_type": "Breaks & Special Events", + "goers": "42", + "seats": "0", + "invite_only": "N", + "venue": "Level 2 Foyer", + "id": "00735951e116f34db5e089b0fb4bc928", + "venue_id": "1944317", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "10:30am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "11:00am", + "start_date": "2024-09-10", + "start_time": "10:30:00", + "start_time_ts": 1725989400, + "end_date": "2024-09-10", + "end_time": "11:00:00", + "event_type_sort": "3", + "description": "" + }, + { + "event_key": "706608", + "active": "Y", + "pinned": "N", + "name": "Sponsor Showcase", + "event_start": "2024-09-10 10:30", + "event_end": "2024-09-10 19:00", + "event_type": "Sponsor Showcase", + "description": "Visit the sponsors in the Sponsor Showcase!", + "goers": "23", + "seats": "0", + "invite_only": "N", + "venue": "Level 2 Foyer", + "id": "14632b39fa73ed429cb5e5db6f156ea4", + "venue_id": "1944317", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "10:30am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "7:00pm", + "start_date": "2024-09-10", + "start_time": "10:30:00", + "start_time_ts": 1725989400, + "end_date": "2024-09-10", + "end_time": "19:00:00", + "event_type_sort": "14" + }, + { + "event_key": "706622", + "active": "Y", + "pinned": "N", + "name": "Sponsored Session: From Prototype to Production: Efficiently Building Custom GraphQL APIs - Kevin Brown, Exogee", + "event_start": "2024-09-10 11:00", + "event_end": "2024-09-10 11:30", + "event_type": "API Platform", + "description": "Building robust and flexible GraphQL APIs can often feel like walking a tightrope between development speed and customization. Using open source tools, we'll rapidly prototype and iterate on a GraphQL API powered by TypeScript and NodeJS together. Topics we'll cover:\nRapid Prototyping: Techniques for quickly generating efficient and extensible APIs. Advanced Data Integration: Strategies for seamlessly joining and managing data from disparate sources. Extreme Flexibility: Extension points that let you customise the generated API and completely override how it works without rebuilding it. Robust Security: Tools to protect the data in the API with advanced role-based access control and more. Join us to learn how you can efficiently deliver high quality GraphQL APIs in TypeScript without sacrificing your ability to build whatever you need in the future.", + "goers": "16", + "video_stream": "https://www.youtube.com/watch?v=ES-wIMcUyfs", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan B-C", + "id": "3ff1dc8d085dcb2cc5d4ac48aeceaf8e", + "venue_id": "1944308", + "speakers": [ + { + "username": "kevin.brown11", + "id": "21490044", + "name": "Kevin Brown", + "company": "Exogee", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "11:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "11:30am", + "start_date": "2024-09-10", + "start_time": "11:00:00", + "start_time_ts": 1725991200, + "end_date": "2024-09-10", + "end_time": "11:30:00", + "event_type_sort": "1", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/20/GraphQL Conf 2024.pdf", + "name": "GraphQL Conf 2024.pdf" + } + ] + }, + { + "event_key": "699498", + "active": "Y", + "pinned": "N", + "name": "200 Is Not OK: Strategies for Tracing Partial Responses with GraphQL Observability - Aditi Rajawat & Rama Palaniappan, Intuit", + "event_start": "2024-09-10 11:00", + "event_end": "2024-09-10 11:30", + "event_type": "Backend", + "description": "GraphQL is agnostic to the transport layer. Almost all out of the box observability tooling is tailored to REST/HTTP APIs. Major observability challenge with GraphQL over HTTP is the support of partial response and HTTP status with 2XX may have failed. GraphQL Gateway generally fans-out one incoming request to one or many outgoing subgraph requests. It is essential to monitor each subgraph and the GraphQL gateway’s metrics and also to trace a single request across the network stack. This talk will cover how Intuit is reducing Mean Time to Detect (MTTD) and Mean Time to Recover (MTTR) for GraphQL APIs, by capturing Failed Customer Interactions, Golden Signal to determine gateway and subgraph’s health, latency, error rate and other related metrics. This talk will also cover open tracing and logging for GraphQL APIs.", + "goers": "42", + "video_stream": "https://www.youtube.com/watch?v=LbANoddAVic", + "seats": "0", + "invite_only": "N", + "venue": "Skyline B-C - Level 21", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "8b3fee2390253e8c920c1df186758b9d", + "venue_id": "1944314", + "speakers": [ + { + "username": "aditi_rajawat", + "id": "21066788", + "name": "Aditi Rajawat", + "company": "Intuit", + "custom_order": 0 + }, + { + "username": "rama_palaniappan", + "id": "21066845", + "name": "Rama Palaniappan", + "company": "Intuit", + "custom_order": 1 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "11:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "11:30am", + "start_date": "2024-09-10", + "start_time": "11:00:00", + "start_time_ts": 1725991200, + "end_date": "2024-09-10", + "end_time": "11:30:00", + "event_type_sort": "2", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/3f/200_Is_Not_OK.pptx.pdf", + "name": "200_Is_Not_OK.pptx.pdf" + } + ] + }, + { + "event_key": "689668", + "active": "Y", + "pinned": "N", + "name": "Schema-Driven Testing with Mock Service Worker - Alessia Bellisario, Apollo", + "event_start": "2024-09-10 11:00", + "event_end": "2024-09-10 11:30", + "event_type": "GraphQL Clients", + "description": "At last year’s GraphQL Conf, Stephanie Saunders sang the praises of schema mocking in her excellent talk “Sophisticated Schema Mocking”. As Stephanie outlined, tests written using mock schemas have several benefits over ones written with static response mocks (seriously, go back and watch the talk if you haven’t!) Mock schemas are the perfect pair for Mock Service Worker which describes itself as “an API mocking library that allows you to write client-agnostic mocks and reuse them across any frameworks, tools, and environments.” In this talk, I’ll demonstrate how to use mock schemas with MSW using testing tools created by the Apollo Client team. These utilities can be used with any GraphQL client for the web whether it’s Apollo Client, Relay, urql, isograph or even just plain fetch requests to a GraphQL endpoint, and support incremental delivery (@defer/@stream), subscriptions and more. With MSW + your front-end stack of choice + test runner or framework of choice (Jest, Puppeteer, Cypress, Storybook, the list goes on) this talk will teach you how to level up the tests you and your team are writing.", + "goers": "39", + "video_stream": "https://www.youtube.com/watch?v=hFmJgR0vssY", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "de54e458f4da84295d55ce44dade372e", + "venue_id": "1944311", + "speakers": [ + { + "username": "twitter7", + "id": "18743837", + "name": "Alessia Bellisario", + "company": "Apollo", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "11:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "11:30am", + "start_date": "2024-09-10", + "start_time": "11:00:00", + "start_time_ts": 1725991200, + "end_date": "2024-09-10", + "end_time": "11:30:00", + "event_type_sort": "7", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/85/BellisarioGraphQLConf2024.pdf", + "name": "BellisarioGraphQLConf2024.pdf" + } + ] + }, + { + "event_key": "706623", + "active": "Y", + "pinned": "N", + "name": "Converging Paramount EPG Architectures with the Help of GraphQL: Journey, Challenges and Solutions - Giacomo Simmi, Paramount; Satish Chitnis, Paramount / Pluto TV", + "event_start": "2024-09-10 11:00", + "event_end": "2024-09-10 11:30", + "event_type": "GraphQL in Production", + "description": "Paramount is a group of companies including Network Streaming, Paramount+, PlutoTV. Each of these companies has its own distinct tech stack and architecture. \n \nOne of the goals of the Architectural Team is to simplify the architecture of the entire group by converging and merging the solutions while avoiding a big-bang approach that would have a significant impact on the business. \n \nAfter some investigations, the GraphQL Federated Architecture emerged as a strong candidate to initiate this process using a top-down approach, starting with the Paramount EPG services. \n \nIn this session, we will describe:\n\n- The design of each intermediate EPG convergent architecture: we will outline the necessary steps to reach the final solution using a top-down and phased approach. \n- The challenges we faced: this includes choosing between code-first and schema-first approaches, modeling the data, addressing performance issues, deploying each subgraph to different infrastructures, and organizing subgraph teams, roles, and responsibilities. \n- Solutions we tried: we explored various tools and frameworks, such as Apollo and WunderGraph, to address these challenges.", + "goers": "18", + "video_stream": "https://www.youtube.com/watch?v=GnjMUsvDcL4", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan A", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "0081eba3649c74291a865c903188bfbb", + "venue_id": "1944305", + "speakers": [ + { + "username": "giacomo.simmi", + "id": "21496501", + "name": "Giacomo Simmi", + "company": "Paramount", + "custom_order": 0 + }, + { + "username": "satish.chitnis", + "id": "21496512", + "name": "Satish Chitnis", + "company": "Paramount / Pluto TV", + "custom_order": 1 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "11:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "11:30am", + "start_date": "2024-09-10", + "start_time": "11:00:00", + "start_time_ts": 1725991200, + "end_date": "2024-09-10", + "end_time": "11:30:00", + "event_type_sort": "8", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/48/Converging EPG architectures with the help of GraphQL - Journey, Challenges and Solutions.pdf", + "name": "Converging EPG architectures with the help of GraphQL - Journey, Challenges and Solutions.pdf" + } + ] + }, + { + "event_key": "699439", + "active": "Y", + "pinned": "N", + "name": "GraphQL at the Edge with WebAssembly - Ramnivas Laddad, Exograph, Inc", + "event_start": "2024-09-10 11:40", + "event_end": "2024-09-10 12:10", + "event_type": "Backend", + "description": "WebAssembly is reshaping our approach to software execution units and components. With its ecosystem maturing--the ability to deploy with multiple cloud providers, the standardization of WebAssembly Components, and the rise of WASI--its potential is fast becoming a reality. WebAssembly is especially suitable for running server-side code at the edge, where resource constraints and security concerns are paramount. To realize the full potential of running API servers at the edge--lowered latency, reduced costs, and improved scalability--we must rethink our approach to building and deploying servers. GraphQL is particularly well-suited for edge deployments. It not only reduces the number of trips between the client and the server but also allows implementations to optimize the whole query to reduce round trips to the data server. In this session, we will explore how to target a Rust implementation of GraphQL server to WebAssembly. We'll also look into how this fits within the WebAssembly ecosystem and how you can run these servers even in your browser.", + "goers": "22", + "video_stream": "https://www.youtube.com/watch?v=cEijqq-KQsU", + "seats": "0", + "invite_only": "N", + "venue": "Skyline B-C - Level 21", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "b3cdfe65307832887ded26a9270d1295", + "venue_id": "1944314", + "speakers": [ + { + "username": "ramnivas.laddad", + "id": "21066848", + "name": "Ramnivas Laddad", + "company": "Exograph", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "11:40am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "12:10pm", + "start_date": "2024-09-10", + "start_time": "11:40:00", + "start_time_ts": 1725993600, + "end_date": "2024-09-10", + "end_time": "12:10:00", + "event_type_sort": "2", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/f5/graphql-edge-webassembly-ramnivas-laddad.pdf", + "name": "graphql-edge-webassembly-ramnivas-laddad.pdf" + } + ] + }, + { + "event_key": "706588", + "active": "Y", + "pinned": "N", + "name": "6 Years of Distributed GraphQL in Production - Andreas Marek, Atlassian", + "event_start": "2024-09-10 11:40", + "event_end": "2024-09-10 12:10", + "event_type": "Federation and Composite Schemas", + "description": "Atlassian built the first ever distributed GraphQL gateway in 2018 and continues to run and improve until today. We will look at the lessons learned and challenges including: - Schema governance - Company adoption - Running a high availability gateway - Things that didn't work out", + "goers": "55", + "video_stream": "https://www.youtube.com/watch?v=v3dY3Y9VHJ8", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan B-C", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "f37774914d4fb6b5760a4c4811f042be", + "venue_id": "1944308", + "speakers": [ + { + "username": "andreas.marek1", + "id": "21066795", + "name": "Andreas Marek", + "company": "Atlassian", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "11:40am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "12:10pm", + "start_date": "2024-09-10", + "start_time": "11:40:00", + "start_time_ts": 1725993600, + "end_date": "2024-09-10", + "end_time": "12:10:00", + "event_type_sort": "6" + }, + { + "event_key": "696986", + "active": "Y", + "pinned": "N", + "name": "The Power of Strongly Coupled GraphQL Queries for Internal APIs - Mary Briskin, Tutored by Teacher", + "event_start": "2024-09-10 11:40", + "event_end": "2024-09-10 12:10", + "event_type": "GraphQL Clients", + "description": "Why settle for over-complicated APIs when you can have exactly what you need? In this talk, we'll write focused, single-use GraphQL queries that are tailored to our exact requirements. Learn how tightly coupling your GraphQL queries with your pages or components can make your front-end cleaner, your back-end faster, and your code easier to maintain. Goodbye unnecessary complexity and generalization—this is all about building APIs that fit like a glove, making your life easier and your code prettier!", + "goers": "22", + "video_stream": "https://www.youtube.com/watch?v=szGCeD_UzmY", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "1f23375107e5a16e08092d69e1b5ba1a", + "venue_id": "1944311", + "speakers": [ + { + "username": "marybriskin", + "id": "21457039", + "name": "Mary Briskin", + "company": "Tutored by Teachers", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "11:40am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "12:10pm", + "start_date": "2024-09-10", + "start_time": "11:40:00", + "start_time_ts": 1725993600, + "end_date": "2024-09-10", + "end_time": "12:10:00", + "event_type_sort": "7", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/7c/GraphQL Talk Mary Briskin.pdf", + "name": "GraphQL Talk Mary Briskin.pdf" + } + ] + }, + { + "event_key": "693335", + "active": "Y", + "pinned": "N", + "name": "Incrementally Adopting GraphQL and Relay at Pinterest - Mauricio Montalvo, Pinterest", + "event_start": "2024-09-10 11:40", + "event_end": "2024-09-10 12:10", + "event_type": "GraphQL in Production", + "description": "Pinterest is too large to simply “rewrite our app” to use GraphQL in one fell swoop. Even migrating an individual screen takes months, at our scale this is quite challenging, like changing a plane’s engine while flying. Is GraphQL adoption destined to be difficult for large companies? Can this process be made more incremental? Unfortunately, the answer seems to be no. It's hard to imagine how components consuming GraphQL data can coexist on a page that makes network requests to a REST endpoint. And yet, we figured it out. And we had a good time, too! We designed Relay-compatible APIs that allow us to read data either from a GraphQL store or from arbitrary objects (e.g. from Redux.) So, engineers can migrate individual components within a larger tree. These components specify the data they need using a fragment, and receive GraphQL-shaped data, regardless of whether the data came from GraphQL or REST. When a component tree is fully migrated, we're able to A/B test the REST and GraphQL endpoints, and only turn on GraphQL when we're sure doing so won't degrade any metrics. And we're about to release this to open source: adopting GraphQL on the front-end has never been easier!", + "goers": "31", + "video_stream": "https://www.youtube.com/watch?v=9gY1vNw7Kcc", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan A", + "company": "Beginner", + "audience": "Session Presentations", + "id": "515c8ade2da6e1fc710e87df182dd8e6", + "venue_id": "1944305", + "speakers": [ + { + "username": "mauricio.montalvo.guzman", + "id": "21066831", + "name": "Mauricio Montalvo", + "company": "Pinterest", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "11:40am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "12:10pm", + "start_date": "2024-09-10", + "start_time": "11:40:00", + "start_time_ts": 1725993600, + "end_date": "2024-09-10", + "end_time": "12:10:00", + "event_type_sort": "8", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/55/Incrementally Adopting GraphQL and Relay at Pinterest - Mauricio Montalvo.pdf", + "name": "Incrementally Adopting GraphQL and Relay at Pinterest - Mauricio Montalvo.pdf" + } + ] + }, + { + "event_key": "5", + "active": "Y", + "pinned": "N", + "name": "Lunch Break", + "event_start": "2024-09-10 12:10", + "event_end": "2024-09-10 13:30", + "event_type": "Breaks & Special Events", + "goers": "55", + "seats": "0", + "invite_only": "N", + "venue": "Level 3 Lobby + Restaurant", + "id": "c117b6cefe3eaa89940b76d68abdc3de", + "venue_id": "1979828", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "12:10pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "1:30pm", + "start_date": "2024-09-10", + "start_time": "12:10:00", + "start_time_ts": 1725995400, + "end_date": "2024-09-10", + "end_time": "13:30:00", + "event_type_sort": "3", + "description": "" + }, + { + "event_key": "691366", + "active": "Y", + "pinned": "N", + "name": "How to Not Break Your GraphQL Clients - Pascal Senn, ChilliCream", + "event_start": "2024-09-10 13:30", + "event_end": "2024-09-10 14:00", + "event_type": "Backend", + "description": "Ever had to explain to the frontend team why their application is no longer working after a release? This session will show you what you can do to never let this happen again, ever! We will start by analysing why it is so easy to do a breaking change in a GraphQL API, what this even means and how to prevent it. Then, we will explore the issues that come once a client application uses your GraphQL API, learn effective ways to prevent the issues from happening and how to apply it in real world complexities. Learn to build resilient GraphQL APIs - today.", + "goers": "43", + "video_stream": "https://www.youtube.com/watch?v=U3m0J8HFuqQ", + "seats": "0", + "invite_only": "N", + "venue": "Skyline B-C - Level 21", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "eb21b013745069912ee5b95b14aaca24", + "venue_id": "1944314", + "speakers": [ + { + "username": "pascal.senn", + "id": "21066839", + "name": "Pascal Senn", + "company": "ChilliCream", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "1:30pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "2:00pm", + "start_date": "2024-09-10", + "start_time": "13:30:00", + "start_time_ts": 1726000200, + "end_date": "2024-09-10", + "end_time": "14:00:00", + "event_type_sort": "2" + }, + { + "event_key": "692359", + "active": "Y", + "pinned": "N", + "name": "Unlocking Blockchain Data with GraphQL - Saihajpreet Singh, The Guild", + "event_start": "2024-09-10 13:30", + "event_end": "2024-09-10 13:40", + "event_type": "Federation and Composite Schemas", + "description": "Discover how GraphQL and composite schemas are transforming blockchain data access and management. This talk will highlight innovative techniques that standardize and streamline blockchain data retrieval, making it more accessible and efficient for developers. Explore the future of blockchain data management and how these advancements are setting new industry standards in web3.", + "goers": "5", + "video_stream": "https://www.youtube.com/watch?v=tjmPJGMPZGQ", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan B-C", + "company": "Beginner", + "audience": "Lightning Talks", + "geo_area": "Yes", + "id": "66a12b5aa41f22c3a7f80a9838488826", + "venue_id": "1944308", + "speakers": [ + { + "username": "saihajpreet.singh", + "id": "21066858", + "name": "Saihajpreet Singh", + "company": "The Guild", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "1:30pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "1:40pm", + "start_date": "2024-09-10", + "start_time": "13:30:00", + "start_time_ts": 1726000200, + "end_date": "2024-09-10", + "end_time": "13:40:00", + "event_type_sort": "6", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/b5/graphql-conf2024-talk.pdf", + "name": "graphql-conf2024-talk.pdf" + } + ] + }, + { + "event_key": "706596", + "active": "Y", + "pinned": "N", + "name": "GraphQL in the Era of React Server Components - Roy Derks, IBM", + "event_start": "2024-09-10 13:30", + "event_end": "2024-09-10 14:00", + "event_type": "GraphQL Clients", + "description": "There's been lots of talks around GraphQL and if it's still relevant now more and more web frameworks are introducing different ways to handle data fetching. Some say we might even be going back to the MVC model. In this new \"RPC world\" we have technologies like tRPC and React Server Components. But what does this mean for GraphQL? In this talk I'll explore the most recent ways to do handle data fetching, how they compare to GraphQL and what benefits GraphQL might still be brining you.", + "goers": "25", + "video_stream": "https://www.youtube.com/watch?v=0IcZGcO9Vm0", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "id": "b45e3e5dfce0eec4d5498bedb8c54f04", + "venue_id": "1944311", + "speakers": [ + { + "username": "hello2358", + "id": "16832291", + "name": "Roy Derks", + "company": "IBM", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "1:30pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "2:00pm", + "start_date": "2024-09-10", + "start_time": "13:30:00", + "start_time_ts": 1726000200, + "end_date": "2024-09-10", + "end_time": "14:00:00", + "event_type_sort": "7", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/17/GraphQLServerComponentsRoyDerks.pdf", + "name": "GraphQLServerComponentsRoyDerks.pdf" + } + ] + }, + { + "event_key": "691577", + "active": "Y", + "pinned": "N", + "name": "Building a Serverless GraphQL Subscription Gateway for Event-Driven Architectures - Christian Stangier & Kenneth Wußmann, MOIA GmbH", + "event_start": "2024-09-10 13:30", + "event_end": "2024-09-10 14:00", + "event_type": "GraphQL in Production", + "description": "At MOIA we're working on a new approach to mobility using ride-pooling with autonomous vehicles. Running an autonomous fleet of vehicles requires access to real-time and low-latency telematic data. This data needs to be made accessible to our users on a fleet map to always have a detailed overview of the current fleet state. Using only queries and polling we quickly ran into scalability issues and had to rethink our approach. Therefore we went to the drawing board and designed and built a serverless architecture on top of AWS and GraphQL over WebSocket to support our stream-aligned teams in building serverless subscriptions in a microservice environment. Watch a replay of our journey enabling other teams to effortlessly push updates to their users using a shared subscription gateway.", + "goers": "35", + "video_stream": "https://www.youtube.com/watch?v=kmxy32cDRT8", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan A", + "company": "Advanced", + "audience": "Session Presentations", + "id": "15ae8e609d80ee7a856469c74c379c55", + "venue_id": "1944305", + "speakers": [ + { + "username": "christian.stangier", + "id": "21066807", + "name": "Christian Stangier", + "company": "MOIA GmbH", + "custom_order": 0 + }, + { + "username": "kenneth.wussmann", + "id": "21066824", + "name": "Kenneth Wußmann", + "company": "MOIA GmbH", + "custom_order": 1 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "1:30pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "2:00pm", + "start_date": "2024-09-10", + "start_time": "13:30:00", + "start_time_ts": 1726000200, + "end_date": "2024-09-10", + "end_time": "14:00:00", + "event_type_sort": "8", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/96/Building a Serverless GraphQL Subscription Gateway.pdf", + "name": "Building a Serverless GraphQL Subscription Gateway.pdf" + } + ] + }, + { + "event_key": "700361", + "active": "Y", + "pinned": "N", + "name": "Ahead-of-Time (AOT) Techniques Help You Write GraphQL Libraries! - Mike Solomon, -", + "event_start": "2024-09-10 13:50", + "event_end": "2024-09-10 14:00", + "event_type": "GraphQL in Production", + "description": "Production-ready GraphQL deployments typically require sophisticated clients, careful telemetry, and high performance. Come see how we can apply techniques used in compilers to help write simpler and more efficient GraphQL frameworks and libraries! During this talk, you will learn: - How to create a simple yet powerful Intermediate Representation (IR) for GraphQL queries and schemas - How this IR can be used to generate client-side code, client and server telemetry, and even reduce payload sizes over the Internet!", + "goers": "35", + "video_stream": "https://www.youtube.com/watch?v=SFQB8F0Ofcg", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan B-C", + "company": "Intermediate", + "audience": "Lightning Talks", + "id": "5df1be4f2875d2ba86cd9c3daefadd02", + "venue_id": "1944308", + "speakers": [ + { + "username": "arkenflame", + "id": "18743867", + "name": "Mike Solomon", + "company": "-", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "1:50pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "2:00pm", + "start_date": "2024-09-10", + "start_time": "13:50:00", + "start_time_ts": 1726001400, + "end_date": "2024-09-10", + "end_time": "14:00:00", + "event_type_sort": "8", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/be/compiler-techniques-graphqlconf2024.pdf", + "name": "compiler-techniques-graphqlconf2024.pdf" + } + ] + }, + { + "event_key": "671426", + "active": "Y", + "pinned": "N", + "name": "In Memory of Travails - Gabriel Schulhof, Auction.com", + "event_start": "2024-09-10 14:10", + "event_end": "2024-09-10 14:40", + "event_type": "Backend", + "description": "Two aspects of resolvers have an outsized influence on their performance: the size of the execution context, and the way we compute their value. In the Node.js implementation of graphql, promises wrapping primitive values are especially disruptive, since they add a large computing overhead. The context size creates a memory usage baseline that can rise very quickly with even small additions to the context, when there are many concurrent contexts. The execution can create temporary objects, increasing memory usage. Often-run resolvers, such as those responsible for filling out large arrays of objects, can become performance bottlenecks. At Auction.com, our search results page (SRP) requests up to 500 items of roughly 80 fields each. The query resolving these fields was suffering a high latency. We shall examine the tools to instrument our code and identify memory usage and CPU utilization bottlenecks. Our realtime elements (e.g. realtime updates to the status of currently viewed properties) are implemented using a translation of kafka messages to graphql updates. We shall present the tools and procedures to reduce memory usage and CPU usage when fanning out such messages.", + "goers": "11", + "video_stream": "https://www.youtube.com/watch?v=eXWXRF6gYg8", + "seats": "0", + "invite_only": "N", + "venue": "Skyline B-C - Level 21", + "company": "Intermediate", + "audience": "Session Presentations", + "geo_area": "Yes", + "id": "667270504bb6e511749901460a6e68d1", + "venue_id": "1944314", + "speakers": [ + { + "username": "gabrielschulhof", + "id": "13020672", + "name": "Gabriel Schulhof", + "company": "Auction.com", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "2:10pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "2:40pm", + "start_date": "2024-09-10", + "start_time": "14:10:00", + "start_time_ts": 1726002600, + "end_date": "2024-09-10", + "end_time": "14:40:00", + "event_type_sort": "2", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/cd/In.Memory.of.Travails.pptx", + "name": "In.Memory.of.Travails.pptx" + } + ] + }, + { + "event_key": "692293", + "active": "Y", + "pinned": "N", + "name": "Spec Agnostic Executor for Federated GraphQL - Denis Badurina, The Guild", + "event_start": "2024-09-10 14:10", + "event_end": "2024-09-10 14:40", + "event_type": "Federation and Composite Schemas", + "description": "A fresh take on planning and executing federated GraphQL schemas. The executor is zero-dependency, spec and environment agnostic, with stable plans and explanations. Additionally, all of its steps are serializable - allowing for sophisticated caching mechanisms and deterministic plans. It supports all existing, and all future, federated specifications like Apollo Federation and the upcoming GraphQL Composite spec. We'll talk about how the new executor came to be, the challenges it faced, and how TDD expedited the process with confidence in mind.", + "goers": "34", + "video_stream": "https://www.youtube.com/watch?v=voeWmS-48Ag", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan B-C", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "de8fa563c5beb17fbe9b4f5f23c99e89", + "venue_id": "1944308", + "speakers": [ + { + "username": "badurinadenis", + "id": "18743810", + "name": "Denis Badurina", + "company": "The Guild", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "2:10pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "2:40pm", + "start_date": "2024-09-10", + "start_time": "14:10:00", + "start_time_ts": 1726002600, + "end_date": "2024-09-10", + "end_time": "14:40:00", + "event_type_sort": "6" + }, + { + "event_key": "691185", + "active": "Y", + "pinned": "N", + "name": "Sponsored Session: Championing the GraphQL Client in a Modern Platform - Jeff Auriemma, Apollo GraphQL", + "event_start": "2024-09-10 14:10", + "event_end": "2024-09-10 14:40", + "event_type": "GraphQL Clients", + "description": "GraphQL is becoming the preferred choice for enterprise API development. That means that more and more app developers are adopting GraphQL client libraries as part of a larger platform strategy rather than building their own BFFs. Platform owners, engineering leaders, toolmakers, and application developers can leverage this adoption pattern to set their teams up with an easy on-ramp and a roadmap for long-term success. My talk will outline the design features common across GraphQL client libraries and why they are essential for platform engineers to understand. I’ll share insights my team has gathered from our open-source projects, user interviews, and surveys that reveal how GraphQL newcomers and veterans relate to these tools. All of this will be tied together with some practical advice for every stage of the adoption journey: crawl, walk, run.", + "goers": "21", + "video_stream": "https://www.youtube.com/watch?v=lKZMcixWf3o", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "company": "Any", + "audience": "Session Presentations", + "id": "f53d0eed2747a55edea203c97844fe3e", + "venue_id": "1944311", + "speakers": [ + { + "username": "jeff.auriemma", + "id": "18743876", + "name": "Jeff Auriemma", + "company": "Apollo GraphQL", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "2:10pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "2:40pm", + "start_date": "2024-09-10", + "start_time": "14:10:00", + "start_time_ts": 1726002600, + "end_date": "2024-09-10", + "end_time": "14:40:00", + "event_type_sort": "7", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/58/[GraphQLConf 2024] Championing the GraphQL Client in a Modern Platform.pdf", + "name": "[GraphQLConf 2024] Championing the GraphQL Client in a Modern Platform.pdf" + } + ] + }, + { + "event_key": "691570", + "active": "Y", + "pinned": "N", + "name": "GraphQL Pagination at Meta - Sabrina Wasserman, Meta", + "event_start": "2024-09-10 14:10", + "event_end": "2024-09-10 14:40", + "event_type": "GraphQL in Production", + "description": "In this talk, I’ll discuss how we’ve developed client-side pagination frameworks at Meta on top of the Relay GraphQL connection specification to make paginating with GraphQL-backed data simpler for product engineers. Specifically, I’ll cover: - Cursor-based pagination + the Relay GraphQL Connection specification - Generating pagination queries for a given Connection field - Client-side Connection field state management - How we integrate our pagination frameworks with our UI frameworks", + "goers": "54", + "video_stream": "https://www.youtube.com/watch?v=PGBC-0E-kco", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan A", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "f385327bc79231054b3d0d5440b9a47d", + "venue_id": "1944305", + "speakers": [ + { + "username": "sabrina.wasserman", + "id": "21066857", + "name": "Sabrina Wasserman", + "company": "Meta", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "2:10pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "2:40pm", + "start_date": "2024-09-10", + "start_time": "14:10:00", + "start_time_ts": 1726002600, + "end_date": "2024-09-10", + "end_time": "14:40:00", + "event_type_sort": "8", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/70/Declarative Pagination.pdf", + "name": "Declarative Pagination.pdf" + } + ] + }, + { + "event_key": "706611", + "active": "Y", + "pinned": "N", + "name": "What Could Go Wrong with a GraphQL Query and Can OpenTelemetry Help? - Budha Bhattacharya, Tyk", + "event_start": "2024-09-10 14:50", + "event_end": "2024-09-10 15:20", + "event_type": "API Platform", + "description": "APIs are the building blocks of our modern world. As the world becomes more interconnected, we need reliable and performant APIs to ensure the best experience for our end users. Many developers are starting to use GraphQL to provide a monolithic facade on top of their complex microservice architecture. In turn, making their next-generation APIs fast, flexible, and developer-friendly.\nBut using GraphQL also introduces many new challenges when isolating failures and troubleshooting performance issues. Can OpenTelemetry help solve those challenges?\n\nDuring this talk, we will:\n1. Give a brief overview of OpenTelemetry as a technology\n2. Investigate common challenges developers and SREs might encounter when running GraphQL in production\n3. Explore how OpenTelemetry can help deal with these issues\n4. Discuss what needs to be improved to make OTel even more valuable for the community", + "goers": "17", + "video_stream": "https://www.youtube.com/watch?v=Nol_i1wZMOY", + "seats": "0", + "invite_only": "N", + "venue": "Skyline B-C - Level 21", + "company": "Beginner", + "audience": "Session Presentations", + "id": "e61013ca35c75a29e8fa8ce157e320e9", + "venue_id": "1944314", + "speakers": [ + { + "username": "budha1", + "id": "17694866", + "name": "Budhaditya Bhattacharya", + "company": "Tyk", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "2:50pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "3:20pm", + "start_date": "2024-09-10", + "start_time": "14:50:00", + "start_time_ts": 1726005000, + "end_date": "2024-09-10", + "end_time": "15:20:00", + "event_type_sort": "1" + }, + { + "event_key": "697562", + "active": "Y", + "pinned": "N", + "name": "GraphQL Is for Client Developers, Not Client Applications - Michael Bleigh, Google", + "event_start": "2024-09-10 14:50", + "event_end": "2024-09-10 15:20", + "event_type": "Developer Experience", + "description": "Many of the most common issues developers run into when building GraphQL APIs (N+1 queries, difficult authorization logic, protecting against arbitrary query complexity) come down to a single problem: when an untrusted client can construct arbitrary queries, lots can go wrong. So what if they just couldn't? The wins of GraphQL aren't in letting *clients* build their own queries but in letting *client developers* build their own queries. When Firebase chose GraphQL as the basis for its new Data Connect product, we introduced \"Connectors\", a new resource type that bundles a group of predefined GraphQL queries and mutations and exposes them at an endpoint. While trusted servers can execute arbitrary queries, untrusted clients can only use predefined queries and mutations. This approach substantially simplifies the security model of building with GraphQL. Rather than worrying about every possible query, you can build authorization and complexity mechanics around well-known predefined queries. Learn the how, the why, and the possible future of \"Connectors\" for GraphQL in Firebase and beyond.", + "goers": "39", + "video_stream": "https://www.youtube.com/watch?v=dDj6FF0y2YA", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan B-C", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "8866a2e23936ff9882c39f99b71238c5", + "venue_id": "1944308", + "speakers": [ + { + "username": "michael.bleigh", + "id": "21066834", + "name": "Michael Bleigh", + "company": "Google", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "2:50pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "3:20pm", + "start_date": "2024-09-10", + "start_time": "14:50:00", + "start_time_ts": 1726005000, + "end_date": "2024-09-10", + "end_time": "15:20:00", + "event_type_sort": "5", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/2a/GraphQL is for Client Developers, not Client Apps.pdf", + "name": "GraphQL is for Client Developers, not Client Apps.pdf" + } + ] + }, + { + "event_key": "691436", + "active": "Y", + "pinned": "N", + "name": "A Wild GraphQL Rollercoaster Ride – an Honest Federated GraphQL Adoption Story in an Enterprise - An Ngo & Lars de Bruijn, bol", + "event_start": "2024-09-10 14:50", + "event_end": "2024-09-10 15:20", + "event_type": "GraphQL in Production", + "description": "Join us in our journey of adopting GraphQL in an Enterprise setting and hear all about how we adopt GraphQL in our organization successfully. Coming from an established enterprise organization with over 800 engineers, who work predominantly with REST, we had a big challenge rolling out our federated GraphQL ambitions at scale in a distributed (micro)service landscape. Besides tech, our journey was also about changing how people work, building expertise and create a strong GraphQL community, for both engineers and product, and getting them invested in our GraphQL journey. We will share with you our hurdles, lessons learned and painful roadblocks and share with you what we wish we knew when we started, so you are well prepared when you start your own GraphQL adoption journey at scale after this talk.", + "goers": "24", + "video_stream": "https://www.youtube.com/watch?v=tuStK4r8AaI", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan A", + "company": "Any", + "audience": "Session Presentations", + "id": "bd12197d841d201adbcae218323d713a", + "venue_id": "1944305", + "speakers": [ + { + "username": "ldebruijn", + "id": "5922948", + "name": "Lars de Bruijn", + "company": "bol", + "custom_order": 0 + }, + { + "username": "an.ngo", + "id": "21066792", + "name": "An Ngo", + "company": "bol", + "custom_order": 1 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "2:50pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "3:20pm", + "start_date": "2024-09-10", + "start_time": "14:50:00", + "start_time_ts": 1726005000, + "end_date": "2024-09-10", + "end_time": "15:20:00", + "event_type_sort": "8", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/13/GraphQLConf24-presentation.pdf", + "name": "GraphQLConf24-presentation.pdf" + } + ] + }, + { + "event_key": "705687", + "active": "Y", + "pinned": "N", + "name": "Improve Application Performance and User Engagement with Advanced GraphQL Features - Kewei Qu, Meta", + "event_start": "2024-09-10 14:50", + "event_end": "2024-09-10 15:00", + "event_type": "Scaling", + "description": "In this talk, I will go through two recent experiments at Meta where we improved Application scroll perf (commonly known as frame drops) and media stalls by developing advanced GraphQL features. 1. Batched @defers. Common UI update cycles with regular defers will introduce increased state updates and may cause unnecessary re-renders. By batching deferred payloads carefully, we can achieved improved latency without introduce frame drops which is commonly associated with decreased engagement. 2. Improved CDN prefetch. Most of the time, the bottleneck to TTI is the media loads, either image load or video load. Commonly, Applications prefetch these media from CDN to improve stalls. We can make the prefetch better by using the visitor pattern which is available in many GraphQL library to enable prefetch during parsing time.", + "goers": "48", + "video_stream": "https://www.youtube.com/watch?v=obMcFwqtvUQ", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "company": "Advanced", + "audience": "Lightning Talks", + "id": "260dd09a831d9432aa4122d60df72d21", + "venue_id": "1944311", + "speakers": [ + { + "username": "qkw1221", + "id": "18743864", + "name": "Kewei Qu", + "company": "Meta", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "2:50pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "3:00pm", + "start_date": "2024-09-10", + "start_time": "14:50:00", + "start_time_ts": 1726005000, + "end_date": "2024-09-10", + "end_time": "15:00:00", + "event_type_sort": "13", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/c7/GraphQL Conference 2024_ Improve Application Performance and User Engagement with Advanced GraphQL features.pdf", + "name": "GraphQL Conference 2024_ Improve Application Performance and User Engagement with Advanced GraphQL features.pdf" + } + ] + }, + { + "event_key": "692032", + "active": "Y", + "pinned": "N", + "name": "GraphQL and Newcomers: How an API Can Transform Technical and Functional Onboarding - Vincent Desmares, Teamstarter", + "event_start": "2024-09-10 15:05", + "event_end": "2024-09-10 15:15", + "event_type": "Developer Experience", + "description": "Since 2010, I've onboarded a lot of developers on a lot of projects. Team evolution is a part of the normal life of a project but can be a big challenge. In this lighting talk I will make a restrospective on how GraphQL drasticaly reduced the \"time-to-be-opperational\" and helped get a productive team very quickly. I will share good practices around code, design-patterns, documentation, processes and open-source. To get your next GraphQL project a pleasure to be onboarded on.", + "goers": "39", + "video_stream": "https://www.youtube.com/watch?v=yrhGfVOzxbU", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "company": "Beginner", + "audience": "Lightning Talks", + "id": "daa84da2c7b8efe182514d3f6d6624ec", + "venue_id": "1944311", + "speakers": [ + { + "username": "vincent.desmares", + "id": "21066875", + "name": "Vincent Desmares", + "company": "Teamstarter", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "3:05pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "3:15pm", + "start_date": "2024-09-10", + "start_time": "15:05:00", + "start_time_ts": 1726005900, + "end_date": "2024-09-10", + "end_time": "15:15:00", + "event_type_sort": "5", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/47/GraphQL and Newcomers - 202240910 0848.pdf", + "name": "GraphQL and Newcomers - 202240910 0848.pdf" + } + ] + }, + { + "event_key": "12", + "active": "Y", + "pinned": "N", + "name": "Coffee Break", + "event_start": "2024-09-10 15:20", + "event_end": "2024-09-10 15:40", + "event_type": "Breaks & Special Events", + "goers": "38", + "seats": "0", + "invite_only": "N", + "venue": "Level 2 Foyer", + "id": "785671ee20a5e7c63578e83cf84b8a12", + "venue_id": "1944317", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "3:20pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "3:40pm", + "start_date": "2024-09-10", + "start_time": "15:20:00", + "start_time_ts": 1726006800, + "end_date": "2024-09-10", + "end_time": "15:40:00", + "event_type_sort": "3", + "description": "" + }, + { + "event_key": "706621", + "active": "Y", + "pinned": "N", + "name": "Schema First, Code First, or Both? Adopting Schema First Development with Code First Architecture - Dan Adajian, Expedia Group", + "event_start": "2024-09-10 15:40", + "event_end": "2024-09-10 16:10", + "event_type": "Defies Categorization", + "description": "At Expedia Group, we leverage a \"code-first\" approach with GraphQL Kotlin to deliver high quality experiences to travelers globally. This means we let our implementations drive our GraphQL schema. However, our developers have a growing appetite to agree on our schema up front before diving into implementation. This talk will explore how we shifted our architecture to use a schema-first approach within a code-first framework. \n \nOverall, I aim to dispel the notion that using a code-first solution prevents us from defining schema as a first step. I will explore the advantages of doing schema review at scale, as well as highlight an open source GraphQL-Codegen plugin we built to generate Kotlin classes and interfaces from our schema definitions. \n \nI am eager to contribute to the conversation around schema-first vs code-first, which has been the topic of several GraphQLConf talks over the past few years. This approach brings a fresh perspective and should inspire folks to incorporate a schema-first mentality into their GraphQL development cycle.", + "goers": "53", + "video_stream": "https://www.youtube.com/watch?v=kpeVT7J6Bsw", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "8cca1430628e1cb303791cee9104cad8", + "venue_id": "1944311", + "speakers": [ + { + "username": "danadajian", + "id": "21487429", + "name": "Dan Adajian", + "company": "Expedia Group", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "3:40pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "4:10pm", + "start_date": "2024-09-10", + "start_time": "15:40:00", + "start_time_ts": 1726008000, + "end_date": "2024-09-10", + "end_time": "16:10:00", + "event_type_sort": "4", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/22/GraphQLConf.pdf", + "name": "GraphQLConf.pdf" + } + ] + }, + { + "event_key": "706624", + "active": "Y", + "pinned": "N", + "name": "Sponsored Session: GraphQL's Future is Rooted in Governance - Adam Malone, Hasura", + "event_start": "2024-09-10 15:40", + "event_end": "2024-09-10 16:10", + "event_type": "Defies Categorization", + "description": "In this talk, we'll explore the future of GraphQL and why its success hinges on our collective ability to address the elephant in the room of governance.\n\nDespite its popularity among developers due to its flexibility and efficiency, GraphQL has yet to fully win over enterprise architects. Their world revolves around REST, model-first abstractions, data lineage, and rigorous compliance standards. To truly gain their trust and drive broader adoption in the enterprise, I'll argue that GraphQL implementations must be metadata-driven, with an emphasis on configuration over code.\n\nHowever, all is not lost! In today’s enterprise landscape, the domain model is predicated on the principle that the teams who own the data should also be responsible for managing it and making it available through agnostic channels. With this in mind, GraphQL is uniquely positioned to excel, thanks to its capabilities in federation and schema stitching. These features enable a paradigm that scales both technically and, more importantly, organizationally, aligning with the goals of managing traceability, lineage, and compliance in a manner that satisfies regulatory demands.\n\nIn this session, we'll delve into how the future of GraphQL, much like the stability of any nation, is rooted in good governance. We'll examine the priorities of enterprise architects and demonstrate how a governance-focused approach can help GraphQL evolve into a robust data access layer within any business.", + "goers": "27", + "video_stream": "https://www.youtube.com/watch?v=x2tnnh9KKVs", + "seats": "0", + "invite_only": "N", + "venue": "Skyline B-C - Level 21", + "audience": "Session Presentations", + "id": "3e7c12e3198b7ee41b80f3a58a9d1e19", + "venue_id": "1944314", + "speakers": [ + { + "username": "adam_malone.2791s6x2", + "id": "21498016", + "name": "Adam Malone", + "company": "Hasura", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "3:40pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "4:10pm", + "start_date": "2024-09-10", + "start_time": "15:40:00", + "start_time_ts": 1726008000, + "end_date": "2024-09-10", + "end_time": "16:10:00", + "event_type_sort": "4" + }, + { + "event_key": "699211", + "active": "Y", + "pinned": "N", + "name": "Consuming GraphQL in Type-Safe Languages - Anthony Miller, Apollo GraphQL", + "event_start": "2024-09-10 16:20", + "event_end": "2024-09-10 16:50", + "event_type": "GraphQL Clients", + "description": "GraphQL itself is a type-safe language. A schema is composed of well-defined types, supports nullability, and allows for inheritance through interfaces. The flexibility and expressiveness provided by a GraphQL schema seems to be a perfect fit for use with type-safe coding languages. But there are many challenges to overcome when consuming a GraphQL schema in strictly type-safe languages. This talk will discuss why GraphQL seems to conflict with type safety; explore some of the notable challenges GraphQL client developers face when consuming a GraphQL API; and uncover how the Apollo team has approached solutions for many of these issues in Swift and the Apollo iOS client.", + "goers": "29", + "video_stream": "https://www.youtube.com/watch?v=CFIqWwWLSb8", + "seats": "0", + "invite_only": "N", + "venue": "Skyline B-C - Level 21", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "c9734088ee56ff8e1410bf33e494f71d", + "venue_id": "1944314", + "speakers": [ + { + "username": "anthony_miller1", + "id": "21066803", + "name": "Anthony Miller", + "company": "Apollo GraphQL", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "4:20pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "4:50pm", + "start_date": "2024-09-10", + "start_time": "16:20:00", + "start_time_ts": 1726010400, + "end_date": "2024-09-10", + "end_time": "16:50:00", + "event_type_sort": "7", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/0c/ConsumingGraphQL.key", + "name": "ConsumingGraphQL.key" + } + ] + }, + { + "event_key": "685205", + "active": "Y", + "pinned": "N", + "name": "Lessons from Scaling GraphQL to Half a Billion Requests per Minute - Tushar Mathur, Tailcall", + "event_start": "2024-09-10 16:20", + "event_end": "2024-09-10 16:50", + "event_type": "Scaling", + "description": "Learn about the scaling challenges we faced in terms of infrastructure, organizational growth, and the technological aspects of GraphQL usage within a hyper-growth startup. In September 2016, when our team of ten-odd full-stack engineers adopted GraphQL, we were handling a few thousand requests per second on our GraphQL layer. Fast forward to 2023, the engineering team has grown to 1,000 members managing half a billion requests per minute at peak. In this talk we aim to address critical questions regarding GraphQL's performance, when is the right time to integrate it, exploring whether GraphQL is predominantly a front-end abstraction or if it can also be effectively utilized in back-end operations for service-to-service communication. Drawing from years of extensive GraphQL usage at a significant scale—without the need for federation—we will introduce for the first time an open-source project that helped us elegantly design, streamline, and scale optimal GraphQL APIs.", + "goers": "57", + "video_stream": "https://www.youtube.com/watch?v=Esb7oQ0PuXw", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "870876ffad45b79d11e09393e7f22587", + "venue_id": "1944311", + "speakers": [ + { + "username": "tushar.mathur", + "id": "21066872", + "name": "Tushar Mathur", + "company": "Tailcall", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "4:20pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "4:50pm", + "start_date": "2024-09-10", + "start_time": "16:20:00", + "start_time_ts": 1726010400, + "end_date": "2024-09-10", + "end_time": "16:50:00", + "event_type_sort": "13", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/3c/slides.pdf", + "name": "slides.pdf" + } + ] + }, + { + "event_key": "706604", + "active": "Y", + "pinned": "N", + "name": "GraphQL Federation in the Wild - Stefan Avram, Wundergraph", + "event_start": "2024-09-10 17:00", + "event_end": "2024-09-10 17:30", + "event_type": "Federation and Composite Schemas", + "description": "Real-world observations of GraphQL Federation use. \n \nGartner predicts, \"By 2027, 30% of enterprises utilizing GraphQL will employ GraphQL federation, up from less than 5% in 2024.\" The report states, “Federation enables centralized governance, team autonomy (teams can own their subgraphs), composability, and adaptability to evolving requirements at different speeds.” \n \nAs GraphQL Federation continues to redefine how enterprises architect and scale their APIs, 2024 has marked a pivotal year in its adoption and evolution. This session will explore the rising trend of GraphQL Federation, highlighting key insights and success stories from diverse customer and partner bases. \n \nWe will delve into how businesses leverage federation to create more cohesive, efficient, and scalable API landscapes, addressing current challenges and showcasing emerging best practices. \n \nJoin us to understand the broader impact of GraphQL Federation in the tech industry and gather actionable strategies to enhance your organization's API strategies through advanced GraphQL techniques.", + "goers": "46", + "video_stream": "https://www.youtube.com/watch?v=K9HCb5Q2Juc", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "company": "Any", + "audience": "Session Presentations", + "geo_area": "Yes", + "id": "9b4f92f2579d24a3c20e6533686aca6b", + "venue_id": "1944311", + "speakers": [ + { + "username": "stefan239", + "id": "21335795", + "name": "Stefan Avram", + "company": "Wundergraph", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "5:00pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "5:30pm", + "start_date": "2024-09-10", + "start_time": "17:00:00", + "start_time_ts": 1726012800, + "end_date": "2024-09-10", + "end_time": "17:30:00", + "event_type_sort": "6", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/1b/GraphQL Federation in the Wild.pdf", + "name": "GraphQL Federation in the Wild.pdf" + } + ] + }, + { + "event_key": "698709", + "active": "Y", + "pinned": "N", + "name": "Build Confidently: How @Catch and Error Handling Pave the Way to Confidence in Field Nullability - Itamar Kestenbaum, Meta", + "event_start": "2024-09-10 17:00", + "event_end": "2024-09-10 17:30", + "event_type": "GraphQL Clients", + "description": "In this session - we’ll explore how GraphQL Clients can provide a road for developers to make full use of Semantic Nullability! GraphQL Spec defines that field errors should result in a null value. This makes null values ambiguous - either null due to error - or null due to nullability. Semantic Nullability allows you to define nullability explicitly - see https://github.com/graphql/graphql-wg/discussions/1410 Therefore, GraphQL Clients need to be able to handle errors differently - giving engineers more confidence in how field states are handled. In this session, we'll cover: 1. Why explicitly handling errors can enable us to move to a new normal where all errors are surfaced explicitly (throw-by-default on error) 2. How using @catch directive allows us to differentiate error nulls from true nulls in product code 3. Steps 1 and 2 will require developers to handle errors explicitly - and this opens the door to Semantic Nullability! I’ll also cover how working on the @catch directive helped push the semantic nullability conversation forward, the rollout at Meta, and what future capabilities can be unlocked. Original proposal: https://github.com/facebook/relay/issues/4416", + "goers": "45", + "video_stream": "https://www.youtube.com/watch?v=_TSYKAtaK5A", + "seats": "0", + "invite_only": "N", + "venue": "Skyline B-C - Level 21", + "company": "Any", + "audience": "Session Presentations", + "id": "c8426c5a3d9418e921f6d8717ff98ac3", + "venue_id": "1944314", + "speakers": [ + { + "username": "itamark", + "id": "80829", + "name": "Itamar Kestenbaum", + "company": "Meta", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "5:00pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "5:30pm", + "start_date": "2024-09-10", + "start_time": "17:00:00", + "start_time_ts": 1726012800, + "end_date": "2024-09-10", + "end_time": "17:30:00", + "event_type_sort": "7", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/c0/GraphQLConf 2024 - Relay Error Handling and @catch (7).pdf", + "name": "GraphQLConf 2024 - Relay Error Handling and @catch (7).pdf" + } + ] + }, + { + "event_key": "706602", + "active": "Y", + "pinned": "N", + "name": "Reception", + "event_start": "2024-09-10 17:30", + "event_end": "2024-09-10 19:00", + "event_type": "Breaks & Special Events", + "goers": "48", + "seats": "0", + "invite_only": "N", + "venue": "Level 2 Foyer", + "id": "4df9dbdef91ea1bc5fce211e6b7e3f52", + "venue_id": "1944317", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Tuesday", + "event_start_weekday_short": "Tue", + "event_start_time": "5:30pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Tuesday", + "event_end_weekday_short": "Tue", + "event_end_time": "7:00pm", + "start_date": "2024-09-10", + "start_time": "17:30:00", + "start_time_ts": 1726014600, + "end_date": "2024-09-10", + "end_time": "19:00:00", + "event_type_sort": "3", + "description": "" + }, + { + "event_key": "706599", + "active": "Y", + "pinned": "N", + "name": "Registration & Badge Pick-up", + "event_start": "2024-09-11 08:00", + "event_end": "2024-09-11 17:00", + "event_type": "Registration & Badge Pick-up", + "goers": "9", + "seats": "0", + "invite_only": "N", + "venue": "Level 2 Foyer", + "id": "c044cbad42295fda4adedd7018df6b2a", + "venue_id": "1944317", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "8:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "5:00pm", + "start_date": "2024-09-11", + "start_time": "08:00:00", + "start_time_ts": 1726066800, + "end_date": "2024-09-11", + "end_time": "17:00:00", + "event_type_sort": "12", + "description": "" + }, + { + "event_key": "706618", + "active": "Y", + "pinned": "N", + "name": "Keynote: Welcome Back & Opening Remarks - Sasha Solomon, Staff Software Engineer/Tech Lead", + "event_start": "2024-09-11 09:00", + "event_end": "2024-09-11 09:05", + "event_type": "Keynote Sessions", + "goers": "64", + "video_stream": "https://www.youtube.com/watch?v=VgndfUI_xKI", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan Ballroom", + "id": "8a7cb5ace8f6474a756f317f336d549f", + "venue_id": "1944323", + "speakers": [ + { + "username": "sasha177", + "id": "21336701", + "name": "Sasha Solomon", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "9:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "9:05am", + "start_date": "2024-09-11", + "start_time": "09:00:00", + "start_time_ts": 1726070400, + "end_date": "2024-09-11", + "end_time": "09:05:00", + "event_type_sort": "11", + "description": "" + }, + { + "event_key": "706612", + "active": "Y", + "pinned": "N", + "name": "Keynote: Apollo's Journey with GraphQL: Transforming Enterprise APIs for the Future - Matt DeBergalis, Apollo GraphQL", + "event_start": "2024-09-11 09:05", + "event_end": "2024-09-11 09:25", + "event_type": "Keynote Sessions", + "description": "As the tech landscape continues to move into the next frontier, GraphQL is now the most important new API technology in the enterprise. Join Matt DeBergalis, CTO and Co-founder of Apollo GraphQL, to explore how GraphQL is rapidly gaining adoption, revolutionizing API strategies, and readying the enterprise for an AI-driven world.", + "goers": "64", + "video_stream": "https://www.youtube.com/watch?v=QbuRTGdt4fA", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan Ballroom", + "id": "486758a780cbd512a88c6def8f9ba36a", + "venue_id": "1944323", + "speakers": [ + { + "username": "matt1575", + "id": "7503056", + "name": "Matt DeBergalis", + "company": "Apollo GraphQL", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "9:05am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "9:25am", + "start_date": "2024-09-11", + "start_time": "09:05:00", + "start_time_ts": 1726070700, + "end_date": "2024-09-11", + "end_time": "09:25:00", + "event_type_sort": "11" + }, + { + "event_key": "706613", + "active": "Y", + "pinned": "N", + "name": "Sponsored Keynote: GraphQL, BFFs and AI - Anant Jhingran, IBM", + "event_start": "2024-09-11 09:25", + "event_end": "2024-09-11 09:35", + "event_type": "Keynote Sessions", + "description": "There is no AI without APIs--after all, whether it is models, vector databases or enterprise systems, they are all behind APIs. GraphQL APIs make it especially convenient to connect to backend systems. BFF patterns supported by GraphQL APIs eliminate the need for enterprise-wide agreements--each LLM powered application can get a magical view of the data it needs.", + "goers": "60", + "video_stream": "https://www.youtube.com/watch?v=vLFWJ5FO7GI", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan Ballroom", + "company": "Any", + "id": "950039dcb680cef826423ad5c0678714", + "venue_id": "1944323", + "speakers": [ + { + "username": "ajhingran", + "id": "19225935", + "name": "Anant Jhingran", + "company": "IBM", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "9:25am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "9:35am", + "start_date": "2024-09-11", + "start_time": "09:25:00", + "start_time_ts": 1726071900, + "end_date": "2024-09-11", + "end_time": "09:35:00", + "event_type_sort": "11" + }, + { + "event_key": "693038", + "active": "Y", + "pinned": "N", + "name": "Keynote: GraphQL in the House - Andrew Doyle, U.S. House of Representatives", + "event_start": "2024-09-11 09:35", + "event_end": "2024-09-11 09:55", + "event_type": "Keynote Sessions", + "description": "An overview of how the Office of the Clerk has used GraphQL to modernize a large legacy system used to manage legislative data and processes in the House of Representatives. The talk will cover architecture, technologies, process and an overview of our application. We have moved significant portions of our application from a legacy database management and application framework to a modern relational database with a microservice business logic layer and a single page application client. GraphQL is used to tie the application, data and business logic together in a single API that is shared across multiple applications and modules. The initial approach has evolved into a platform for building applications that host complex data and business logic. We are also evolving our architecture to deliver data from our applications directly to legislative branch partners over a GraphQL endpoint, replacing multiple legacy delivery methods.", + "goers": "61", + "video_stream": "https://www.youtube.com/watch?v=VqVBGM4XEiE", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan Ballroom", + "company": "Any", + "id": "2b8cf13e46335dc0f98c57dd576551c3", + "venue_id": "1944323", + "speakers": [ + { + "username": "andrew.doyle1", + "id": "21066800", + "name": "Andrew Doyle", + "company": "U.S. House of Representatives", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "9:35am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "9:55am", + "start_date": "2024-09-11", + "start_time": "09:35:00", + "start_time_ts": 1726072500, + "end_date": "2024-09-11", + "end_time": "09:55:00", + "event_type_sort": "11" + }, + { + "event_key": "706619", + "active": "Y", + "pinned": "N", + "name": "Keynote: GraphQL Clients in 2024 - Jeff Auriemma, Apollo GraphQL", + "event_start": "2024-09-11 09:55", + "event_end": "2024-09-11 10:05", + "event_type": "Keynote Sessions", + "description": "GraphQL is an established and trusted piece of technology in the modern stack. GraphQL client libraries are the bridge connecting your language or framework of choice to your backend, often exposing elegant APIs for features such as state management, caching, and type-safety. The past year has been transformative for GraphQL client users: innovations both within the GraphQL community and in prominent web and mobile frameworks have put more value into users’ hands. In this keynote, you’ll learn what’s new in the open-source GraphQL client world and why it matters more than ever in 2024.", + "goers": "59", + "video_stream": "https://www.youtube.com/watch?v=wqRKO_vLY_c", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan Ballroom", + "id": "7669ef25b3ab08adabebe712dc0ee19c", + "venue_id": "1944323", + "speakers": [ + { + "username": "jeff.auriemma", + "id": "18743876", + "name": "Jeff Auriemma", + "company": "Apollo GraphQL", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "9:55am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "10:05am", + "start_date": "2024-09-11", + "start_time": "09:55:00", + "start_time_ts": 1726073700, + "end_date": "2024-09-11", + "end_time": "10:05:00", + "event_type_sort": "11" + }, + { + "event_key": "706630", + "active": "Y", + "pinned": "N", + "name": "Keynote: Empathy Driven Development - Sarah Sanders, Highnote", + "event_start": "2024-09-11 10:05", + "event_end": "2024-09-11 10:15", + "event_type": "Keynote Sessions", + "description": "In this talk, Sarah will guide us as we explore the transformative power of Empathy Driven Development and its impact on creating a rich developer experience. By stepping into the shoes of the developers using our products, we can transform how they interact with our products, schemas, and documentation. Sarah will also touch on the importance of future-oriented thinking in this approach, discussing how rapidly evolving technology is reshaping developer workflows. By anticipating these changes, we can adapt our developer experience strategies to remain relevant and effective. This talk promises to offer valuable insights into fostering a more empathetic, forward-thinking approach to development that improves our current practices and prepares us for the evolution of technology.", + "goers": "46", + "video_stream": "https://www.youtube.com/watch?v=0K_Sp0g1ogc", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan Ballroom", + "id": "d3f8f96d85291af99ee392ae1e8db596", + "venue_id": "1944323", + "speakers": [ + { + "username": "sasanders26", + "id": "21066861", + "name": "Sarah Sanders", + "company": "Highnote", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "10:05am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "10:15am", + "start_date": "2024-09-11", + "start_time": "10:05:00", + "start_time_ts": 1726074300, + "end_date": "2024-09-11", + "end_time": "10:15:00", + "event_type_sort": "11" + }, + { + "event_key": "14", + "active": "Y", + "pinned": "N", + "name": "Keynote: Closing Remarks - Sasha Solomon, Staff Software Engineer/Tech Lead", + "event_start": "2024-09-11 10:20", + "event_end": "2024-09-11 10:30", + "event_type": "Keynote Sessions", + "goers": "60", + "video_stream": "https://www.youtube.com/watch?v=t9swX1jpLSU", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan Ballroom", + "id": "ddf5766e2b98ed4a1055c31926575d1b", + "venue_id": "1944323", + "speakers": [ + { + "username": "sasha177", + "id": "21336701", + "name": "Sasha Solomon", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "10:20am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "10:30am", + "start_date": "2024-09-11", + "start_time": "10:20:00", + "start_time_ts": 1726075200, + "end_date": "2024-09-11", + "end_time": "10:30:00", + "event_type_sort": "11", + "description": "" + }, + { + "event_key": "11", + "active": "Y", + "pinned": "N", + "name": "Coffee Break", + "event_start": "2024-09-11 10:30", + "event_end": "2024-09-11 11:00", + "event_type": "Breaks & Special Events", + "goers": "34", + "seats": "0", + "invite_only": "N", + "venue": "Level 2 Foyer", + "id": "30ea7a71fd410161e413a6a41eb5902c", + "venue_id": "1944317", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "10:30am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "11:00am", + "start_date": "2024-09-11", + "start_time": "10:30:00", + "start_time_ts": 1726075800, + "end_date": "2024-09-11", + "end_time": "11:00:00", + "event_type_sort": "3", + "description": "" + }, + { + "event_key": "706607", + "active": "Y", + "pinned": "N", + "name": "Sponsor Showcase", + "event_start": "2024-09-11 10:30", + "event_end": "2024-09-11 17:00", + "event_type": "Sponsor Showcase", + "description": "Visit the sponsors in the Sponsor Showcase!", + "goers": "17", + "seats": "0", + "invite_only": "N", + "venue": "Level 2 Foyer", + "id": "b106db6eb7ca1aba331fcfb86dff9f22", + "venue_id": "1944317", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "10:30am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "5:00pm", + "start_date": "2024-09-11", + "start_time": "10:30:00", + "start_time_ts": 1726075800, + "end_date": "2024-09-11", + "end_time": "17:00:00", + "event_type_sort": "14" + }, + { + "event_key": "706597", + "active": "Y", + "pinned": "N", + "name": "Why You Should Use Implementation-First to Build Your GraphQL Schema - Erik Wrede, fulfillmenttools", + "event_start": "2024-09-11 11:00", + "event_end": "2024-09-11 11:30", + "event_type": "Backend", + "description": "When we look at GraphQL server implementation approaches, you often see the discussion between code-first and schema-first as a schema building approach. What is overlooked is that Facebook actually built their Hack-based GraphQL server with implementation-first. This approach will infer the GraphQL schema from your code, and by extension from your business layer. In this talk, I will look at various implementations of implementation-first and explain why Facebook chose this approach to build their own GraphQL server and why it is actually the better approach in most projects.", + "goers": "16", + "video_stream": "https://www.youtube.com/watch?v=ZilgUSmo_hA", + "seats": "0", + "invite_only": "N", + "venue": "Skyline B-C - Level 21", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "c13801cab4bdcf1c9e7321fba8daca3f", + "venue_id": "1944314", + "speakers": [ + { + "username": "erikwrede2", + "id": "21102110", + "name": "Erik Wrede", + "company": "fulfillmenttools", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "11:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "11:30am", + "start_date": "2024-09-11", + "start_time": "11:00:00", + "start_time_ts": 1726077600, + "end_date": "2024-09-11", + "end_time": "11:30:00", + "event_type_sort": "2", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/e0/Implementation-First-GraphQL Conf 2024.pdf", + "name": "Implementation-First-GraphQL Conf 2024.pdf" + } + ] + }, + { + "event_key": "691875", + "active": "Y", + "pinned": "N", + "name": "GraphQL Field Discovery and Query Generation Using Generative AI - Rachit Sengupta & Siva Thiru, Intuit", + "event_start": "2024-09-11 11:00", + "event_end": "2024-09-11 11:30", + "event_type": "Developer Experience", + "description": "Discovering GraphQL fields and generating queries is a tedious task for developers. They spend a considerable amount of time finding the appropriate fields in large schemas. To solve this problem at Intuit where we have a super graph consisting of millions of lines we implemented a framework that makes use of Generative AI to help developers with attribute discovery and query generation. The benefits of our approach include being able to work with large schemas without the hassle of going through the whole schema and requiring less back and forth communication between consumers and schema owners, which results in a huge boost in developer productivity. We created chunks of the schema and ingested them into a vector store, we then do a retrieval, dynamically build a minimal schema and perform RAG where the LLM is provided with the minimal schema and the user query. The LLM responds with either a list of discovered attributes or GraphQL query. This framework aims to achieve lower latency and less hallucinations by reducing the size of the schema sent to the LLM, this also results in lower costs and higher accuracy.", + "goers": "35", + "video_stream": "https://www.youtube.com/watch?v=Zjz2ou41-LI", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan B-C", + "company": "Any", + "audience": "Session Presentations", + "id": "83cfae91425cec04854a0ebc173d9c77", + "venue_id": "1944308", + "speakers": [ + { + "username": "siva27", + "id": "9778144", + "name": "Siva Thiru", + "company": "Intuit", + "custom_order": 0 + }, + { + "username": "rachit_sengupta", + "id": "21066842", + "name": "Rachit Sengupta", + "company": "Intuit", + "custom_order": 1 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "11:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "11:30am", + "start_date": "2024-09-11", + "start_time": "11:00:00", + "start_time_ts": 1726077600, + "end_date": "2024-09-11", + "end_time": "11:30:00", + "event_type_sort": "5", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/9b/GraphQLConf_2024_PPT.pptx.pdf", + "name": "GraphQLConf_2024_PPT.pptx.pdf" + } + ] + }, + { + "event_key": "706620", + "active": "Y", + "pinned": "N", + "name": "Revolutionizing Data Access Using GraphQL in the Oracle Database - Shashank Gugnani, Oracle", + "event_start": "2024-09-11 11:00", + "event_end": "2024-09-11 11:30", + "event_type": "GraphQL in Production", + "description": "We will explore the revolutionary integration of GraphQL with the Oracle Database in this session. The way developers query and interact with the database has been greatly simplified by this integration. We will introduce the concept of Duality Views, a brand-new feature available in Oracle Database 23ai. Using Duality Views, data is still stored in relational tables in a highly efficient normalized format but is accessed by apps in the form of JSON documents. Duality Views are created using an intuitive and flexible GraphQL-like syntax, enhancing developer productivity. \n \nWe will also demonstrate new capabilities in the database to automatically infer the GraphQL schema from existing relational schemas, making it easy to introspect and visualize the relational schema as well as write GraphQL queries against the database. Finally, we will talk about new GraphQL directives to allow calculations, reshaping, and transformations in a GraphQL query that can be executed on a relational database. \n \nCome learn how Oracle's support for GraphQL is transforming data access and providing a powerful and seamless solution for modern application development.", + "goers": "6", + "video_stream": "https://www.youtube.com/watch?v=WUiDRozAcQk", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan A", + "company": "Intermediate", + "audience": "Session Presentations", + "geo_area": "Yes", + "id": "f766992611ab85a48547edab68f135d2", + "venue_id": "1944305", + "speakers": [ + { + "username": "shashank.gugnani", + "id": "21458022", + "name": "Shashank Gugnani", + "company": "Oracle", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "11:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "11:30am", + "start_date": "2024-09-11", + "start_time": "11:00:00", + "start_time_ts": 1726077600, + "end_date": "2024-09-11", + "end_time": "11:30:00", + "event_type_sort": "8", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/e1/GraphQLConf-2024-v5-pdf.pdf", + "name": "GraphQLConf-2024-v5-pdf.pdf" + } + ] + }, + { + "event_key": "685433", + "active": "Y", + "pinned": "N", + "name": "State of @Defer and @Stream - Rob Richard, 1stDibs", + "event_start": "2024-09-11 11:00", + "event_end": "2024-09-11 11:30", + "event_type": "GraphQL Spec", + "description": "The @defer and @stream directives are proposed additions to the GraphQL Spec. In this session, you’ll learn about these directives and how you can use them to lower latency in your GraphQL application. The proposal has been in progress for some time now and has gone through many iterations. Learn about the motivation behind these changes and how they will lead to scalable GraphQL servers and efficient clients.", + "goers": "51", + "video_stream": "https://www.youtube.com/watch?v=Ef6qv26fZHk", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "company": "Any", + "audience": "Session Presentations", + "id": "dd457152162ecb3609b4adac4026fe02", + "venue_id": "1944311", + "speakers": [ + { + "username": "robrichard87", + "id": "21066852", + "name": "Rob Richard", + "company": "1stdibs", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "11:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "11:30am", + "start_date": "2024-09-11", + "start_time": "11:00:00", + "start_time_ts": 1726077600, + "end_date": "2024-09-11", + "end_time": "11:30:00", + "event_type_sort": "10", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/64/Defer and Stream GraphQL Conf 2024.pdf", + "name": "Defer and Stream GraphQL Conf 2024.pdf" + } + ] + }, + { + "event_key": "691762", + "active": "Y", + "pinned": "N", + "name": "Dynamically Serving a GraphQL API with Custom Types at Runtime - Emily Li, Benchling", + "event_start": "2024-09-11 11:40", + "event_end": "2024-09-11 12:10", + "event_type": "Backend", + "description": "Existing GraphQL frameworks are well designed to handle statically defined types and resolvers. Here at Benchling, we faced the problem of serving a GraphQL API which incorporated customer-defined types at runtime with a dynamically generated graph that varies customer-to-customer. In this talk, I’ll describe some of the challenges in serving this GraphQL API, including dynamic generation of graph components and performance. Then, I’ll describe how we extended Strawberry (the GraphQL framework we decided to use) to handle our use cases as well as a graph-caching strategy that allowed us to dramatically improve the performance of serving the API.", + "goers": "23", + "video_stream": "https://www.youtube.com/watch?v=M3wGkC7rzmE", + "seats": "0", + "invite_only": "N", + "venue": "Skyline B-C - Level 21", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "24100908c07eed48ee464ca2509ef527", + "venue_id": "1944314", + "speakers": [ + { + "username": "emily.li2", + "id": "21066813", + "name": "Emily Li", + "company": "Benchling", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "11:40am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "12:10pm", + "start_date": "2024-09-11", + "start_time": "11:40:00", + "start_time_ts": 1726080000, + "end_date": "2024-09-11", + "end_time": "12:10:00", + "event_type_sort": "2", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/ce/Emily_Li_GraphQLConf_2024.pdf", + "name": "Emily_Li_GraphQLConf_2024.pdf" + } + ] + }, + { + "event_key": "681437", + "active": "Y", + "pinned": "N", + "name": "GraphQL Docs: Beyond the Schema - Sarah Sanders, Highnote", + "event_start": "2024-09-11 11:40", + "event_end": "2024-09-11 12:10", + "event_type": "Developer Experience", + "description": "GraphQL Docs: Beyond the Schema is a presentation focusing on how Technical Writers and DevEx teams can enhance developer experience with interactive documentation. I hope to inspire DevEx teams and Technical Writers to consider GraphQL as more than just \"self-documenting.\" The problem I will present is that I want more than a schema as a developer. I want to know how to use the schema to build my product. The solution to the problem will focus on interactive documentation by defining what makes it interactive, for example, embedded code samples linked to a user's sandbox environment. I will then explore how DevEx teams can implement these elements to create interactive documentation for their GraphQL API. I expect the audience to gain insight into exactly how they can create their own interactive GraphQL documentation and best practices. This presentation will help better the ecosystem by highlighting the pain points of GraphQL documentation as it exists today, emphasizing the need to create interactive documentation for developers working with GraphQL, and enforcing the importance of creating rich developer experiences.", + "goers": "29", + "video_stream": "https://www.youtube.com/watch?v=IzJeffH_x_s", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan B-C", + "company": "Any", + "audience": "Session Presentations", + "id": "65768f566de8acf5320a4ed1fef47606", + "venue_id": "1944308", + "speakers": [ + { + "username": "sasanders26", + "id": "21066861", + "name": "Sarah Sanders", + "company": "Highnote", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "11:40am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "12:10pm", + "start_date": "2024-09-11", + "start_time": "11:40:00", + "start_time_ts": 1726080000, + "end_date": "2024-09-11", + "end_time": "12:10:00", + "event_type_sort": "5", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/59/GraphQL Docs Beyond the Schema (1).pdf", + "name": "GraphQL Docs Beyond the Schema (1).pdf" + } + ] + }, + { + "event_key": "692382", + "active": "Y", + "pinned": "N", + "name": "The Intersection of GraphQL and Design Systems in Product Development - Ruben Cagnie & Alan Quigley, Toast", + "event_start": "2024-09-11 11:40", + "event_end": "2024-09-11 12:10", + "event_type": "GraphQL in Production", + "description": "Introducing GraphQL into the product development lifecycle changes the game. This talk explores the impact of GraphQL on mock data-driven development, highlighting data consistency and discoverability. Learn how GraphQL centralizes UI engineering, streamlining workflows and enhancing collaboration, resulting in superior product design and build quality.", + "goers": "21", + "video_stream": "https://www.youtube.com/watch?v=WZjwk_tRgvA", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan A", + "company": "Any", + "audience": "Session Presentations", + "id": "19cf965c68cfae3c7c19c6a9966bcadf", + "venue_id": "1944305", + "speakers": [ + { + "username": "alan.quigley", + "id": "21066789", + "name": "Alan Quigley", + "company": "Toast Inc", + "custom_order": 0 + }, + { + "username": "ruben.cagnie", + "id": "21066855", + "name": "Ruben Cagnie", + "company": "Toast", + "custom_order": 1 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "11:40am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "12:10pm", + "start_date": "2024-09-11", + "start_time": "11:40:00", + "start_time_ts": 1726080000, + "end_date": "2024-09-11", + "end_time": "12:10:00", + "event_type_sort": "8", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/69/presentation.pdf", + "name": "presentation.pdf" + } + ] + }, + { + "event_key": "686002", + "active": "Y", + "pinned": "N", + "name": "Techniques to Protect Your GraphQL API - Benjie Gillam, Graphile", + "event_start": "2024-09-11 11:40", + "event_end": "2024-09-11 12:10", + "event_type": "GraphQL Security", + "description": "GraphQL poses unique challenges when it comes to security due to the nature of its powerful query language. In this talk we'll explore different types of GraphQL APIs and their varying and common security needs. We'll then look at the techniques that can be used to protect these APIs and which techniques pair well with each API type. These techniques are not specific to any one vendor or programming language but general best practices that help protect your servers from threats both known and unknown. Attendees will come away with an understanding of common threats GraphQL APIs face, and suitable techniques to address them.", + "goers": "43", + "video_stream": "https://www.youtube.com/watch?v=W7qIux5BAvs", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "4dc607a403a2316846b59d0c5a9858c9", + "venue_id": "1944311", + "speakers": [ + { + "username": "benjie3", + "id": "18743846", + "name": "Benjie Gillam", + "company": "Graphile", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "11:40am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "12:10pm", + "start_date": "2024-09-11", + "start_time": "11:40:00", + "start_time_ts": 1726080000, + "end_date": "2024-09-11", + "end_time": "12:10:00", + "event_type_sort": "9", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/3c/graphql-techniques-to-protect.pdf", + "name": "graphql-techniques-to-protect.pdf" + } + ] + }, + { + "event_key": "8", + "active": "Y", + "pinned": "N", + "name": "Lunch Break - Attendees on Own", + "event_start": "2024-09-11 12:10", + "event_end": "2024-09-11 13:40", + "event_type": "Breaks & Special Events", + "description": "Lunch will be on your own. San Francisco offers a variety of dining options nearby to suit different tastes and preferences. Feel free to explore the local area and enjoy your meal. We’ll reconvene at 1:40 PM for the next session.", + "goers": "38", + "seats": "0", + "invite_only": "N", + "venue": "Attendees On Own", + "id": "4003c42a935c2de7c19896b6c0351c0d", + "venue_id": "1979819", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "12:10pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "1:40pm", + "start_date": "2024-09-11", + "start_time": "12:10:00", + "start_time_ts": 1726081800, + "end_date": "2024-09-11", + "end_time": "13:40:00", + "event_type_sort": "3" + }, + { + "event_key": "698984", + "active": "Y", + "pinned": "N", + "name": "Dynamic (but Safe) Operations: Using AI to Generate Trusted Operations from Text Prompts - Michael Watson, Apollo GraphQL", + "event_start": "2024-09-11 13:40", + "event_end": "2024-09-11 14:10", + "event_type": "API Platform", + "description": "Platform engineering and internal developer portals have been a growing trend in the tech industry to make developers more efficient. For example, how do we help new developers ship their first feature faster? GraphQL helps Platform API efforts ship features faster, but what about when your schema gets very complex? How can a new developer find what they need quickly? GraphQL already provides a complete and understandable description of the data in our APIs, but what if we provide that context to a LLM? In this talk, we'll journey through GitHub's APIs and explore how a GraphQL schema is a significant advantage in AI-based tooling. We're seeing more AI-based tools generate fetch code based on OpenAPI definitions, and while they may be tempting at first, it could be a decision with unexpected trade-offs. We'll show how to take a standard open-sourced LLM and provide a GraphQL-aware context to generate operations from text input. After this talk, you can safely bring AI to your developer efficiency initiatives with any LLM, 3rd party, or self-hosted!", + "goers": "24", + "video_stream": "https://www.youtube.com/watch?v=3msKy5VOml0", + "seats": "0", + "invite_only": "N", + "venue": "Skyline B-C - Level 21", + "company": "Any", + "audience": "Session Presentations", + "id": "f02cda18e19887fddeb56b06445ac256", + "venue_id": "1944314", + "speakers": [ + { + "username": "watson17", + "id": "19024254", + "name": "Michael Watson", + "company": "Apollo GraphQL", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "1:40pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "2:10pm", + "start_date": "2024-09-11", + "start_time": "13:40:00", + "start_time_ts": 1726087200, + "end_date": "2024-09-11", + "end_time": "14:10:00", + "event_type_sort": "1", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/82/Dynamic (but Safe) Operations.pdf", + "name": "Dynamic (but Safe) Operations.pdf" + } + ] + }, + { + "event_key": "691410", + "active": "Y", + "pinned": "N", + "name": "Schema-Driven UI Components: Revolutionizing Headless ERP with GraphQL - Seiya Izumi & Masanori Uehara, Tailor Inc.", + "event_start": "2024-09-11 13:40", + "event_end": "2024-09-11 14:10", + "event_type": "Developer Experience", + "description": "Modern ERPs must be highly customizable and easily integrated with other systems while generating UI components on top should be seamless. In this talk, we will explore why GraphQL, with its robust and flexible querying capabilities, is exceptionally suited for developing modern ERP solutions. In addition, we’ll explore the technical aspects of generating front-end UI components directly from the GraphQL schema, what we call Schema-Driven UI, not Server-Driven UI. This approach is particularly beneficial in the ERP domain, where dynamic and complex data interactions are common. Automating the process of generating UI components directly from the Schema ensures consistency across systems by keeping everything in sync.", + "goers": "13", + "video_stream": "https://www.youtube.com/watch?v=U4gCky2TFWE", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan B-C", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "b43e5c894796be3b0b0f0d0b662d4a5a", + "venue_id": "1944308", + "speakers": [ + { + "username": "masanori.uehara", + "id": "21066828", + "name": "Masanori Uehara", + "company": "Tailor Inc.", + "custom_order": 0 + }, + { + "username": "seiyaizumi", + "id": "21066863", + "name": "Seiya Izumi", + "company": "Tailor Inc.", + "custom_order": 1 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "1:40pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "2:10pm", + "start_date": "2024-09-11", + "start_time": "13:40:00", + "start_time_ts": 1726087200, + "end_date": "2024-09-11", + "end_time": "14:10:00", + "event_type_sort": "5", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/1b/Schema Driven UI - Tailor Inc.pdf", + "name": "Schema Driven UI - Tailor Inc.pdf" + } + ] + }, + { + "event_key": "689933", + "active": "Y", + "pinned": "N", + "name": "Identity and GraphQL: More Than You Want to Think About IDs - Matt Mahoney, Meta", + "event_start": "2024-09-11 13:40", + "event_end": "2024-09-11 14:10", + "event_type": "GraphQL in Production", + "description": "IDs are really important to get right, yet GraphQL the language doesn't discuss them at all, besides requiring every single implementation to have a special ID type! At Meta, we found our types all had their own eclectic idea of what an ID really was. Some had three! We'll walk through where in production systems IDs matter, and how Meta attempts to formalize a few core principles to prevent disaster.", + "goers": "36", + "video_stream": "https://www.youtube.com/watch?v=jv8q7kFyxo0", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan A", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "6204717dd5e10bf10587733c08897dc1", + "venue_id": "1944305", + "speakers": [ + { + "username": "mahoney.mattj", + "id": "19314398", + "name": "Matthew Mahoney", + "company": "Meta", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "1:40pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "2:10pm", + "start_date": "2024-09-11", + "start_time": "13:40:00", + "start_time_ts": 1726087200, + "end_date": "2024-09-11", + "end_time": "14:10:00", + "event_type_sort": "8", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/d9/Identity and GraphQL_ More Than You Want to Think About IDs 2024.pdf", + "name": "Identity and GraphQL_ More Than You Want to Think About IDs 2024.pdf" + } + ] + }, + { + "event_key": "692702", + "active": "Y", + "pinned": "N", + "name": "Semantic Nullability: A Path Toward Safe Non-Null Fields - Jordan Eldredge, Meta", + "event_start": "2024-09-11 13:40", + "event_end": "2024-09-11 14:10", + "event_type": "GraphQL Spec", + "description": "One of GraphQL’s killer features is field-granular error handling which can dramatically increase the resiliency of network responses. However, this has traditionally come at the cost of developer ergonomics, with client developers being forced to contend with nearly every field potentially being null. In the last year, members of the Nullability Working Group, and engineers at Meta have been exploring how we can untangle nullability and error handling in order to safely allow clients to “see” the true nullability of the server’s resolvers without sacrificing response residency. In this talk we’ll explain the ideas and RFCs that underpin this change, share the work we’ve done at Meta and across the community to validate this approach, and demonstrate Semantic Nullability in action!", + "goers": "43", + "video_stream": "https://www.youtube.com/watch?v=kVYlplb1gKk", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "8daaf10ac70360a7fade149a54538bf9", + "venue_id": "1944311", + "speakers": [ + { + "username": "jordaneldredge", + "id": "21066819", + "name": "Jordan Eldredge", + "company": "Meta", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "1:40pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "2:10pm", + "start_date": "2024-09-11", + "start_time": "13:40:00", + "start_time_ts": 1726087200, + "end_date": "2024-09-11", + "end_time": "14:10:00", + "event_type_sort": "10", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/87/Semantic Non Null GraphQL Conf 2024.pdf", + "name": "Semantic Non Null GraphQL Conf 2024.pdf" + } + ] + }, + { + "event_key": "692355", + "active": "Y", + "pinned": "N", + "name": "In-House Schema Registry - the Good, the Bad, and the Ugly - Kamil Kisiela, The Guild", + "event_start": "2024-09-11 14:20", + "event_end": "2024-09-11 14:50", + "event_type": "API Platform", + "description": "When working with GraphQL, you might find yourself looking for tools to prevent breaking changes, or in case of Federation, compose GraphQL APIs. At this point, you may be tempted to build your own schema registry, from scratch. I’ve been there, done that, and now I’m going to tell you why I think it is a bad idea and what are the challenges you will most likely face, when developing your won solution.", + "goers": "21", + "video_stream": "https://www.youtube.com/watch?v=jreLGIzgZ9U", + "seats": "0", + "invite_only": "N", + "venue": "Skyline B-C - Level 21", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "af55205b1d68ec3b3d1b1663e4bd2adf", + "venue_id": "1944314", + "speakers": [ + { + "username": "kamilkisiela", + "id": "19082388", + "name": "Kamil Kisiela", + "company": "The Guild", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "2:20pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "2:50pm", + "start_date": "2024-09-11", + "start_time": "14:20:00", + "start_time_ts": 1726089600, + "end_date": "2024-09-11", + "end_time": "14:50:00", + "event_type_sort": "1" + }, + { + "event_key": "698734", + "active": "Y", + "pinned": "N", + "name": "Schema Scoring: Ensuring Schema Excellence in GraphQL - Christian Ernst, Booking.com", + "event_start": "2024-09-11 14:20", + "event_end": "2024-09-11 14:50", + "event_type": "Developer Experience", + "description": "At Booking.com we have scaled to over 120+ subgraphs and that number continues to grow rabidly as we modernize our frontend and backend. As subgraphs develop it has begun to be impossible for one to team to oversee all of the changes to the graph because of the rapid changes that occur from teams. As we have grown we created best practices and guidelines fro GraphQL. We soon recognised this was not enough and there was the need to track the quality of schemas over time automatically and in a way that can provide actionable feedback to teams. At Booking.com we have developed the infrastructure to analyse schemas beyond standard linting to help improve the quality of the Graph across the board enabling better developer experience for everyone.", + "goers": "34", + "video_stream": "https://www.youtube.com/watch?v=4xCcSqdablo", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan B-C", + "company": "Beginner", + "audience": "Session Presentations", + "id": "6e20cd3c4ee36577f15713955444338f", + "venue_id": "1944308", + "speakers": [ + { + "username": "christian.ernst1", + "id": "21066804", + "name": "Christian Ernst", + "company": "Booking.com", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "2:20pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "2:50pm", + "start_date": "2024-09-11", + "start_time": "14:20:00", + "start_time_ts": 1726089600, + "end_date": "2024-09-11", + "end_time": "14:50:00", + "event_type_sort": "5", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/e6/Schema Scoring.pdf", + "name": "Schema Scoring.pdf" + } + ] + }, + { + "event_key": "706625", + "active": "Y", + "pinned": "N", + "name": "Blueprints of Successful GraphQL Architectures - Pascal Senn, ChilliCream", + "event_start": "2024-09-11 14:20", + "event_end": "2024-09-11 14:50", + "event_type": "GraphQL in Production", + "description": "This session will take you behind the curtains of a few companies and will show you how enterprises built GraphQL APIs successfully, what challenges they face, and how their architecture influences how they built APIs. In this session, we will start with looking into database-driven GraphQL APIs and end up exploring large-scale enterprise domains, where the size of the organization becomes the challenge.", + "goers": "32", + "video_stream": "https://www.youtube.com/watch?v=45rKrmW7NLA", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "106c2abfed7f25a882b98024152b8c48", + "venue_id": "1944311", + "speakers": [ + { + "username": "pascal.senn", + "id": "21066839", + "name": "Pascal Senn", + "company": "ChilliCream", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "2:20pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "2:50pm", + "start_date": "2024-09-11", + "start_time": "14:20:00", + "start_time_ts": 1726089600, + "end_date": "2024-09-11", + "end_time": "14:50:00", + "event_type_sort": "8" + }, + { + "event_key": "691729", + "active": "Y", + "pinned": "N", + "name": "The Billion D∅Llar Panel - Nullability in GraphQL - Stephen Spalding, Netflix; Alex Reilly, Independent; Janette Cheng & Jordan Eldredge, Meta; Benjie Gillam, Graphile", + "event_start": "2024-09-11 14:20", + "event_end": "2024-09-11 14:50", + "event_type": "GraphQL Spec", + "description": "Panel discussion on Client Controlled/Semantic Nullability", + "goers": "37", + "video_stream": "https://www.youtube.com/watch?v=CujBv8L6tVQ", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan A", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "c12a426b75f4851c04a7e16e54135887", + "venue_id": "1944305", + "speakers": [ + { + "username": "alex_reilly.7ldur4l", + "id": "14900019", + "name": "Alex Reilly", + "company": "Independent", + "custom_order": 0 + }, + { + "username": "sspalding2", + "id": "18743825", + "name": "Stephen Spalding", + "company": "Netflix", + "custom_order": 1 + }, + { + "username": "benjie3", + "id": "18743846", + "name": "Benjie Gillam", + "company": "Graphile", + "custom_order": 2 + }, + { + "username": "janette.cheng", + "id": "21066816", + "name": "Janette Cheng", + "company": "Meta", + "custom_order": 3 + }, + { + "username": "jordaneldredge", + "id": "21066819", + "name": "Jordan Eldredge", + "company": "Meta", + "custom_order": 4 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "2:20pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "2:50pm", + "start_date": "2024-09-11", + "start_time": "14:20:00", + "start_time_ts": 1726089600, + "end_date": "2024-09-11", + "end_time": "14:50:00", + "event_type_sort": "10" + }, + { + "event_key": "699192", + "active": "Y", + "pinned": "N", + "name": "GraphQL as a Data Mesh Access Layer in Global Banking - Kenneth Stott, Hasura, Inc.", + "event_start": "2024-09-11 15:00", + "event_end": "2024-09-11 15:30", + "event_type": "API Platform", + "description": "Discuss the strengths and weaknesses of the GraphQL standard and tooling ecosystem while implementing GraphQL as the primary Data Mesh/Data Access Layer in a Mega-Bank. Review the regulatory challenges, the history of data management and data governance at international financial institutions, its influence on data engineering and data solutions, and how GraphQL stacks up as an API Platform in a highly federated, highly regulated, polyglot data mesh architecture.", + "goers": "12", + "video_stream": "https://www.youtube.com/watch?v=kLUbcEABH0s", + "seats": "0", + "invite_only": "N", + "venue": "Skyline B-C - Level 21", + "company": "Advanced", + "audience": "Session Presentations", + "id": "26843420d633586e4b750ae4fe01e174", + "venue_id": "1944314", + "speakers": [ + { + "username": "kennethstott", + "id": "21066821", + "name": "Kenneth Stott", + "company": "Hasura, Inc.", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "3:00pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "3:30pm", + "start_date": "2024-09-11", + "start_time": "15:00:00", + "start_time_ts": 1726092000, + "end_date": "2024-09-11", + "end_time": "15:30:00", + "event_type_sort": "1" + }, + { + "event_key": "697133", + "active": "Y", + "pinned": "N", + "name": "Design Principles of Federated GraphQL - Martijn Walraven, Apollo", + "event_start": "2024-09-11 15:00", + "event_end": "2024-09-11 15:30", + "event_type": "Federation and Composite Schemas", + "description": "GraphQL was conceived as a unified access layer that empowers product teams by providing a common language for exposing and consuming data capabilities. These capabilities were typically implemented in a single schema through a resolver-based model. That poses challenges in environments with diverse microservices managed by various teams however, as found in most large organizations. Recognizing these challenges, we introduced Apollo Federation in 2019 to deliver on the promise of GraphQL within those environments. It respects existing service and team boundaries through a principled schema composition model that supports team collaboration and efficient, query plan-based execution across services. This has allowed GraphQL APIs to effectively scale to large numbers of services and teams. Given the success and common challenges observed, a working group comprising engineers from various organizations has been formed to establish a proposed open standard for federated GraphQL. This initiative aims to unify best practices and design principles. This talk will highlight the key discussions from this group and their implications for the evolving standard.", + "goers": "52", + "video_stream": "https://www.youtube.com/watch?v=eb8EoGGZCjY", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan B-C", + "company": "Any", + "audience": "Session Presentations", + "id": "e24b8d54971024a028352f5f35930575", + "venue_id": "1944308", + "speakers": [ + { + "username": "martijn.walraven", + "id": "21066825", + "name": "Martijn Walraven", + "company": "Apollo", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "3:00pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "3:30pm", + "start_date": "2024-09-11", + "start_time": "15:00:00", + "start_time_ts": 1726092000, + "end_date": "2024-09-11", + "end_time": "15:30:00", + "event_type_sort": "6" + }, + { + "event_key": "690785", + "active": "Y", + "pinned": "N", + "name": "UNSET Fields: Differentiating Between Null and Purposeful Omissions in Your Server Response - Janette Cheng, Meta", + "event_start": "2024-09-11 15:00", + "event_end": "2024-09-11 15:10", + "event_type": "GraphQL in Production", + "description": "You've heard about distinguishing semantic vs error nulls, but what about \"unset\" fields? Unset fields are neither semantic or error nulls because the server has not calculated them. Why would something like this ever come up? - WhatsApp delta updates: When the client wants to tell the server, \"This is the value I have for this field, only bother calculating it again and sending it down if it's out of date.\" - Instagram server migration from a non-GraphQL server: We started with a server that has multiple code paths to resolve a field, and now we are not guaranteed every field we request will always be resolved. Not being able to distinguish between null and unset is a problem we expect is more widespread, and to which we have found a not amazing solution that could be better if we update the spec. How do you distinguish \"unset\" from null? - How you achieve this today (not particularly elegant, but possible) - Omission from server response? (not currently spec-compliant)", + "goers": "29", + "video_stream": "https://www.youtube.com/watch?v=90dc_NelaA0", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan A", + "company": "Intermediate", + "audience": "Lightning Talks", + "id": "2f6808aabe48239c0cccb9db43626aac", + "venue_id": "1944305", + "speakers": [ + { + "username": "janette.cheng", + "id": "21066816", + "name": "Janette Cheng", + "company": "Meta", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "3:00pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "3:10pm", + "start_date": "2024-09-11", + "start_time": "15:00:00", + "start_time_ts": 1726092000, + "end_date": "2024-09-11", + "end_time": "15:10:00", + "event_type_sort": "8", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/19/Unset Fields (GraphQL Conf '24).pdf", + "name": "Unset Fields (GraphQL Conf '24).pdf" + } + ] + }, + { + "event_key": "706595", + "active": "Y", + "pinned": "N", + "name": "What if ... How to Achieve GraphQL Domination - Andreas Marek, Atlassian", + "event_start": "2024-09-11 15:00", + "event_end": "2024-09-11 15:30", + "event_type": "GraphQL Spec", + "description": "Imaging being free of constraints like time, resources and previous decisions: how could we make the perfect version of GraphQL and achieve ubiquitous GraphQL usage. In this talk we will look at all the things we could do (in theory): - Combine Relay and GraphQL - Simpler Errors - HTTP as first class citizen - No custom or maybe more custom Scalars - GraphQL linter - Dynamic GraphQL schemas", + "goers": "17", + "video_stream": "https://www.youtube.com/watch?v=vb4T51DO3Z4", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "company": "Beginner", + "audience": "Session Presentations", + "id": "74697b2144c044a7a134bc7e04e190d1", + "venue_id": "1944311", + "speakers": [ + { + "username": "andreas.marek1", + "id": "21066795", + "name": "Andreas Marek", + "company": "Atlassian", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "3:00pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "3:30pm", + "start_date": "2024-09-11", + "start_time": "15:00:00", + "start_time_ts": 1726092000, + "end_date": "2024-09-11", + "end_time": "15:30:00", + "event_type_sort": "10" + }, + { + "event_key": "695423", + "active": "Y", + "pinned": "N", + "name": "Not Your Regular Rate Limiting #GraphQL - Pooja Mistry, Postman", + "event_start": "2024-09-11 15:10", + "event_end": "2024-09-11 15:20", + "event_type": "GraphQL in Production", + "description": "REST APIs are typically endpoint-based, meaning each endpoint has its rate limit, while GraphQL APIs tend to be more flexible and allow for a single endpoint to handle multiple requests. Although more flexible, rate limiting in GraphQL APIs is more complex than rate limiting in REST APIs. This talk discusses popular rate-limiting strategies and helps you choose the strategy that best fits your application's use case and requirements.", + "goers": "34", + "video_stream": "https://www.youtube.com/watch?v=w7ubbGmadso", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan A", + "company": "Intermediate", + "audience": "Lightning Talks", + "id": "6fd1c120b48d6c62c4544ccbf27a665a", + "venue_id": "1944305", + "speakers": [ + { + "username": "pooja.mistry1", + "id": "21225462", + "name": "Pooja Mistry", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "3:10pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "3:20pm", + "start_date": "2024-09-11", + "start_time": "15:10:00", + "start_time_ts": 1726092600, + "end_date": "2024-09-11", + "end_time": "15:20:00", + "event_type_sort": "8" + }, + { + "event_key": "692297", + "active": "Y", + "pinned": "N", + "name": "GraphQL Subscriptions in Production Is Easy, Isn’t It? - Laurin Quast, The Guild", + "event_start": "2024-09-11 15:20", + "event_end": "2024-09-11 15:30", + "event_type": "GraphQL in Production", + "description": "GraphQL Subscriptions can super-charge any application but add layers of complexity. Let's delve into the practical aspects of moving GraphQL Subscriptions from localhost into a production environment! Learn about MesageQueues, PubSub, WebSockets, Server-Sent Events, TCP connection limits, authentication, Browser Windows, and (shared) web workers!", + "goers": "37", + "video_stream": "https://www.youtube.com/watch?v=r4ryfiBfDIQ", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan A", + "company": "Intermediate", + "audience": "Lightning Talks", + "id": "5cabf2af855ce1e45161cd36903d41c0", + "venue_id": "1944305", + "speakers": [ + { + "username": "laurinquast", + "id": "18743819", + "name": "Laurin Quast", + "company": "The Guild", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "3:20pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "3:30pm", + "start_date": "2024-09-11", + "start_time": "15:20:00", + "start_time_ts": 1726093200, + "end_date": "2024-09-11", + "end_time": "15:30:00", + "event_type_sort": "8" + }, + { + "event_key": "10", + "active": "Y", + "pinned": "N", + "name": "Coffee Break", + "event_start": "2024-09-11 15:30", + "event_end": "2024-09-11 15:50", + "event_type": "Breaks & Special Events", + "goers": "34", + "seats": "0", + "invite_only": "N", + "venue": "Level 2 Foyer", + "id": "7c1eba2165f24ed45492801796cbe453", + "venue_id": "1944317", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "3:30pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "3:50pm", + "start_date": "2024-09-11", + "start_time": "15:30:00", + "start_time_ts": 1726093800, + "end_date": "2024-09-11", + "end_time": "15:50:00", + "event_type_sort": "3", + "description": "" + }, + { + "event_key": "699163", + "active": "Y", + "pinned": "N", + "name": "Panel: The Composite Schemas Working Group - Kamil Kisiela, The Guild; Pascal Senn, ChilliCream; Martijn Walraven, Apollo; Moderated by Danielle Man, Apollo GraphQL", + "event_start": "2024-09-11 15:50", + "event_end": "2024-09-11 16:20", + "event_type": "Federation and Composite Schemas", + "description": "Join panelists from Apollo, ChilliCream, and The Guild for a conversation about the newest working group in the GraphQL community. Gartner reports that by 2027, production use of federated GraphQL in enterprise systems will grow sixfold. The Composite Schemas specification is the proposed open standard that will ensure this essential technology can be fully leveraged by a robust tooling ecosystem. Hear insights and stories from the engineers and innovators who are collaborating to bring this specification to the community.", + "goers": "40", + "video_stream": "https://www.youtube.com/watch?v=sf8ac2NtwPY", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan B-C", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "75386a4288d49dcb4aba5b54e475de43", + "venue_id": "1944308", + "speakers": [ + { + "username": "kamilkisiela", + "id": "19082388", + "name": "Kamil Kisiela", + "company": "The Guild", + "custom_order": 0 + }, + { + "username": "danielle.man", + "id": "21066810", + "name": "Danielle Man", + "company": "Apollo GraphQL", + "custom_order": 1 + }, + { + "username": "martijn.walraven", + "id": "21066825", + "name": "Martijn Walraven", + "company": "Apollo", + "custom_order": 2 + }, + { + "username": "pascal.senn", + "id": "21066839", + "name": "Pascal Senn", + "company": "ChilliCream", + "custom_order": 3 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "3:50pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "4:20pm", + "start_date": "2024-09-11", + "start_time": "15:50:00", + "start_time_ts": 1726095000, + "end_date": "2024-09-11", + "end_time": "16:20:00", + "event_type_sort": "6" + }, + { + "event_key": "699597", + "active": "Y", + "pinned": "N", + "name": "Evolving GraphQL Schemas - Andrei Bocan, Atlassian", + "event_start": "2024-09-11 15:50", + "event_end": "2024-09-11 16:20", + "event_type": "GraphQL in Production", + "description": "The complicated bit when running a GraphQL service isn't putting together the initial schema, it's making sure to leave room for your schema to evolve, and ensuring that you're not painting yourself into a corner. In this session, we'll go through some lessons learned while developing Compass, a product we built from the ground up using GraphQL. We'll lay out some of the guidelines we've established to keep our APIs consistent, some hard and fast rules for backwards compatibility, as well as the processes we put in place to make it easy to keep things aligned. We'll also dive into how we've that all fits in with out GraphQL Gateway, which exposes a federated schema across the plethora of services that Atlassian runs, and the functionality we've isolated to the gateway.", + "goers": "35", + "video_stream": "https://www.youtube.com/watch?v=pVNODy8fDTM", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan A", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "167640984a909380aa61898c90625166", + "venue_id": "1944305", + "speakers": [ + { + "username": "andrei.bocan", + "id": "21066797", + "name": "Andrei Bocan", + "company": "Atlassian", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "3:50pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "4:20pm", + "start_date": "2024-09-11", + "start_time": "15:50:00", + "start_time_ts": 1726095000, + "end_date": "2024-09-11", + "end_time": "16:20:00", + "event_type_sort": "8", + "files": [ + { + "path": "https://static.sched.com/hosted_files/graphqlconf2024/af/GraphqlConf 2023.pdf", + "name": "GraphqlConf 2023.pdf" + } + ] + }, + { + "event_key": "692275", + "active": "Y", + "pinned": "N", + "name": "Comparing API Protocols - One Feature at a Time - Uri Goldshtein, The Guild", + "event_start": "2024-09-11 15:50", + "event_end": "2024-09-11 16:20", + "event_type": "GraphQL Spec", + "description": "We've seen so many comparisons between GraphQL, REST, OpenAPI, gRPC and others Usually most of these articles looks very much the same. I want to try to give a different take on the differences. I will make a list of every feature you want from an API and show how to get it in each API protocol. I think the result would be surprising, even for experts in each of the protocols.", + "goers": "18", + "video_stream": "https://www.youtube.com/watch?v=V4CJR_vkELo", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "company": "Intermediate", + "audience": "Session Presentations", + "id": "303433f67a7ffc5e3d31a6edfd8b1f28", + "venue_id": "1944311", + "speakers": [ + { + "username": "uri_goldshtein.23xujj9a", + "id": "14900013", + "name": "Uri Goldshtein", + "company": "The Guild", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "3:50pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "4:20pm", + "start_date": "2024-09-11", + "start_time": "15:50:00", + "start_time_ts": 1726095000, + "end_date": "2024-09-11", + "end_time": "16:20:00", + "event_type_sort": "10" + }, + { + "event_key": "706610", + "active": "Y", + "pinned": "N", + "name": "CANCELLED: Rethinking GraphQL Batching - Michael Staib, ChilliCream", + "event_start": "2024-09-11 16:30", + "event_end": "2024-09-11 17:00", + "event_type": "Backend", + "description": "While working on the GraphQL composite schema specification, we have explored GraphQL batching and have come up with a variety of new approaches to tackle it. In this talk, I will walk you through why batching is still needed in GraphQL and what problems it solves today. We will also explore some wild experiments with GraphQL batching prototypes that can form business flows to aggregate data, mutate it, and subscribe to updates of the flow with subscriptions. This talk is full of experiments that are to be further explored. So, join me!", + "goers": "23", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "company": "Advanced", + "audience": "Session Presentations", + "id": "9485641416d5be1d5846b846ee2c7666", + "venue_id": "1944311", + "speakers": [ + { + "username": "michael_staib.23xujj9p", + "id": "14900031", + "name": "Michael Staib", + "company": "ChilliCream", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "4:30pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "5:00pm", + "start_date": "2024-09-11", + "start_time": "16:30:00", + "start_time_ts": 1726097400, + "end_date": "2024-09-11", + "end_time": "17:00:00", + "event_type_sort": "2" + }, + { + "event_key": "697477", + "active": "Y", + "pinned": "N", + "name": "Performing Impossible Feats with Isograph - Robert Balicki, Pinterest", + "event_start": "2024-09-11 16:30", + "event_end": "2024-09-11 17:00", + "event_type": "GraphQL Clients", + "description": "Today's web developers are asked to do the impossible. Fetch just the data needed for a given page, no more and no less, while avoiding network waterfalls. Splitting network requests so that users can see high priority content faster, without fetching the same field twice. Loading the minimal JavaScript. Ensuring that their apps show the latest data, without excessively re-rendering. Ensuring content is garbage collected, but not disposing of resources still in use. Yeesh!\n\nAnd all the while, they're asked to maintain this performance profile while other developers make changes willy nilly.\n\nSounds impossible, and it is! With other frameworks, that is.\n\nFind out how Isograph makes all of this easy — and more!\n\nIsograph is a framework for building React apps powered by GraphQL data. See https://isograph.dev for more!", + "goers": "26", + "video_stream": "https://www.youtube.com/watch?v=ex8dqeWwt5A", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan A", + "company": "Any", + "audience": "Session Presentations", + "id": "468947db8b153fca9be52febb43beb6e", + "venue_id": "1944305", + "speakers": [ + { + "username": "robert.balicki", + "id": "18743858", + "name": "Robert Balicki", + "company": "Pinterest", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "4:30pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "5:00pm", + "start_date": "2024-09-11", + "start_time": "16:30:00", + "start_time_ts": 1726097400, + "end_date": "2024-09-11", + "end_time": "17:00:00", + "event_type_sort": "7" + }, + { + "event_key": "706598", + "active": "Y", + "pinned": "N", + "name": "Top 10 GraphQL Security Checks for Every Developer - Ankita Gupta, Akto.io", + "event_start": "2024-09-11 16:30", + "event_end": "2024-09-11 17:00", + "event_type": "GraphQL Security", + "description": "Why implement GraphQL security?\nWe will set the stage by introducing some examples of critical GraphQL vulnerabilities found in popular softwares.\n\n- CVE-2021-41248: This vulnerability in GraphiQL, a GraphQL IDE, relates to schema introspection responses that could lead to XSS attacks.\n- CVE-2023-38503: In Directus, a real-time API and dashboard for managing SQL database, there was a vulnerability in GraphQL subscriptions where permission filters were not properly checked, leading to unauthorized event notifications.\n- CVE-2023-34047: A vulnerability in Spring for GraphQL where a batch loader function could be exposed to GraphQL context with security context values from a different session, potentially leading to unauthorized access or information disclosure.\n\nTop 10 GraphQL Security Checks\n- #1 Disable Introspection in Production\n- #2 Robust Authentication\n- #3 Limit Query Depths\n- #4 Rate Limiting\n- #5 Input Validation\n- #6 Secure Direct Object References\n- #7 Error Handling\n- #8 Query Complexity Analysis\n- #9 Mass Assignment Checks\n- #10 Excessive Data Exposure\n\nHow to automate GraphQL Security?\n- we will talk about automating the 10 security checks in code and CI/CD", + "goers": "31", + "video_stream": "https://www.youtube.com/watch?v=b45lWgkVLYA", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan B-C", + "company": "Intermediate", + "id": "f304b62528988d6e67bb74020d97c885", + "venue_id": "1944308", + "speakers": [ + { + "username": "ankita25", + "id": "21265832", + "name": "Ankita Gupta", + "company": "Akto.io", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "11", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "4:30pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "11", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "5:00pm", + "start_date": "2024-09-11", + "start_time": "16:30:00", + "start_time_ts": 1726097400, + "end_date": "2024-09-11", + "end_time": "17:00:00", + "event_type_sort": "9" + }, + { + "event_key": "706601", + "active": "Y", + "pinned": "N", + "name": "Registration & Badge Pick-up", + "event_start": "2024-09-12 08:00", + "event_end": "2024-09-12 15:00", + "event_type": "Registration & Badge Pick-up", + "goers": "3", + "seats": "0", + "invite_only": "N", + "venue": "Level 2 Foyer", + "id": "370614bdbfb4b73d76ec71db8ce43552", + "venue_id": "1944317", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "12", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "8:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "12", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "3:00pm", + "start_date": "2024-09-12", + "start_time": "08:00:00", + "start_time_ts": 1726153200, + "end_date": "2024-09-12", + "end_time": "15:00:00", + "event_type_sort": "12", + "description": "" + }, + { + "event_key": "706609", + "active": "Y", + "pinned": "N", + "name": "Sponsor Showcase", + "event_start": "2024-09-12 08:00", + "event_end": "2024-09-12 12:30", + "event_type": "Sponsor Showcase", + "description": "Visit the sponsors in the Sponsor Showcase!", + "goers": "11", + "seats": "0", + "invite_only": "N", + "venue": "Level 2 Foyer", + "id": "1e8e7ae6eb935636a20fc2acc70c299d", + "venue_id": "1944317", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "12", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "8:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "12", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "12:30pm", + "start_date": "2024-09-12", + "start_time": "08:00:00", + "start_time_ts": 1726153200, + "end_date": "2024-09-12", + "end_time": "12:30:00", + "event_type_sort": "14" + }, + { + "event_key": "692330", + "active": "Y", + "pinned": "N", + "name": "Workshop: Scaling and Securing API Development with a GraphQL Platform - Laurin Quast & Kamil Kisiela, The Guild", + "event_start": "2024-09-12 09:00", + "event_end": "2024-09-12 10:30", + "event_type": "API Platform", + "description": "Building a GraphQL API as a solo developer handling both the front end and back end in a single Git repository can be straightforward. However, in a real-world scenario, you will need to collaborate with other developers, both within your team and externally. There will be API consumers under your control, as well as those you might not even be aware of. If you use composite schemas (such as Federation), many teams will create their subgraphs to compose a supergraph. How can you safely evolve your schema without breaking clients? How do you prevent attackers from sending vulnerable GraphQL operations to your server? A schema registry can assist you and your team in successfully adopting GraphQL at scale. Discover how to gain analytics on your GraphQL API usage, avoid shipping breaking changes through CI/CD integrations, and prevent unwanted GraphQL operations by leveraging Persisted Documents using the open-source MIT-licensed Hive API platform specially designed for GraphQL.", + "goers": "21", + "video_stream": "https://www.youtube.com/watch?v=ZDECb__f4h4", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan B-C", + "company": "Beginner", + "audience": "Workshops", + "id": "2f44e6cde4172d716d83bcb02809517f", + "venue_id": "1944308", + "speakers": [ + { + "username": "laurinquast", + "id": "18743819", + "name": "Laurin Quast", + "company": "The Guild", + "custom_order": 0 + }, + { + "username": "kamilkisiela", + "id": "19082388", + "name": "Kamil Kisiela", + "company": "The Guild", + "custom_order": 1 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "12", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "9:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "12", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "10:30am", + "start_date": "2024-09-12", + "start_time": "09:00:00", + "start_time_ts": 1726156800, + "end_date": "2024-09-12", + "end_time": "10:30:00", + "event_type_sort": "1" + }, + { + "event_key": "706617", + "active": "Y", + "pinned": "N", + "name": "Open GraphQL Foundation Board Meeting", + "event_start": "2024-09-12 09:00", + "event_end": "2024-09-12 10:30", + "event_type": "Defies Categorization", + "description": "Join GraphQL Foundation Board Members and TSC Members for a public meeting and help provide input on what the Foundation's priorities for 2025 should be.", + "goers": "15", + "video_stream": "https://www.youtube.com/watch?v=4XbzBb_YHw0", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "company": "Any", + "id": "35c3bece129c4a61d97b9b104ba12d42", + "venue_id": "1944311", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "12", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "9:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "12", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "10:30am", + "start_date": "2024-09-12", + "start_time": "09:00:00", + "start_time_ts": 1726156800, + "end_date": "2024-09-12", + "end_time": "10:30:00", + "event_type_sort": "4" + }, + { + "event_key": "706616", + "active": "Y", + "pinned": "N", + "name": "Workshop: Demand-Driven Schema Design - Michael Watson, Apollo GraphQL", + "event_start": "2024-09-12 09:00", + "event_end": "2024-09-12 10:30", + "event_type": "Defies Categorization", + "description": "One of the main advantages of GraphQL is that you can query for only the data you need. But in order to realize that promise for graph consumers, the schema needs to be thoughtfully designed to support data access requirements for the client apps that will query it. In this workshop, we’ll explore the process of demand-driven schema design and how a “dream query” can be reverse-engineered into a scalable and maintainable GraphQL schema that supports product use cases.\n\nWhat you’ll learn:\nCommon schema design patterns Build queries to display the data your app needs Best practices for designing client-focused queries Practical tips for schema reviews Federation / composite schemas considerations", + "goers": "17", + "video_stream": "https://www.youtube.com/watch?v=8W9N-I1G80o", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan A", + "audience": "Workshops", + "id": "a9ad5f1632866787f2ae33020dbe8e77", + "venue_id": "1944305", + "speakers": [ + { + "username": "watson17", + "id": "19024254", + "name": "Michael Watson", + "company": "Apollo GraphQL", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "12", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "9:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "12", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "10:30am", + "start_date": "2024-09-12", + "start_time": "09:00:00", + "start_time_ts": 1726156800, + "end_date": "2024-09-12", + "end_time": "10:30:00", + "event_type_sort": "4" + }, + { + "event_key": "706614", + "active": "Y", + "pinned": "N", + "name": "Workshop: Getting Your Data Ready for AI - With a Unified GraphQL and SQL Endpoint - Anushrut Gupta, Hasura", + "event_start": "2024-09-12 09:00", + "event_end": "2024-09-12 10:30", + "event_type": "Defies Categorization", + "description": "As AI technologies like LLMs innovate at an accelerated pace, the importance of robust data foundations has never been greater. Traditional data architectures, designed with apps and APIs in mind, are now being pushed to their limits by the demands of advanced AI applications. This workshop will delve into principles for getting your data ready for AI. One of the main principles is having all your data and business logic under one interface - we will see how to build this using GraphQL (or SQL). We will also see how to incorporate consistent authorization so that your LLM doesn't have to worry about security. Finally, we will plumb all of this together to create a fundamentally powerful data connectivity for your AI applications.\n\nTo get the most out of this workshop, bring an Anthropic account with some credits and an Anthropic API key. You can also use OpenAI, but Anthropic is preferred.", + "goers": "7", + "video_stream": "https://www.youtube.com/watch?v=andRX3esq9s", + "seats": "0", + "invite_only": "N", + "venue": "Skyline B-C - Level 21", + "audience": "Workshops", + "id": "fbc64b2c5b6403612b8ea6c2ed4cbc04", + "venue_id": "1944314", + "speakers": [ + { + "username": "anushrut.gupta", + "id": "21460012", + "name": "Anushrut Gupta", + "company": "Hasura", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "12", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "9:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "12", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "10:30am", + "start_date": "2024-09-12", + "start_time": "09:00:00", + "start_time_ts": 1726156800, + "end_date": "2024-09-12", + "end_time": "10:30:00", + "event_type_sort": "4" + }, + { + "event_key": "6", + "active": "Y", + "pinned": "N", + "name": "Coffee Break", + "event_start": "2024-09-12 10:30", + "event_end": "2024-09-12 11:00", + "event_type": "Breaks & Special Events", + "goers": "24", + "seats": "0", + "invite_only": "N", + "venue": "Level 2 Foyer", + "id": "487b5eb466c6367896d32d0006ddad8a", + "venue_id": "1944317", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "12", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "10:30am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "12", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "11:00am", + "start_date": "2024-09-12", + "start_time": "10:30:00", + "start_time_ts": 1726162200, + "end_date": "2024-09-12", + "end_time": "11:00:00", + "event_type_sort": "3", + "description": "" + }, + { + "event_key": "694498", + "active": "Y", + "pinned": "N", + "name": "Workshop: Efficient Cross-Platform GraphQL and State Management with React Native - Yassin Eldeeb, The Guild", + "event_start": "2024-09-12 11:00", + "event_end": "2024-09-12 12:30", + "event_type": "GraphQL Clients", + "description": "In this hands-on workshop, we’ll explore building cross-platform applications with GraphQL and React Native. Learn how to create an efficient data management setup that works seamlessly across Windows, iOS, Android, and web platforms. Key takeaways include: - Setting up a GraphQL client in React Native - Managing local and remote state by combining Easy Peasy and React Query - Leveraging offline support, caching, and background fetching - Optimizing performance for mobile applications By the end, you’ll understand how to harness GraphQL to build robust and user-friendly cross-platform apps that are easy to develop and maintain.", + "goers": "21", + "video_stream": "https://www.youtube.com/watch?v=O4I2BhHgYq8", + "seats": "0", + "invite_only": "N", + "venue": "Skyline B-C - Level 21", + "company": "Advanced", + "audience": "Workshops", + "id": "914fd37e2c0bd49ce423fb1cbc326ec8", + "venue_id": "1944314", + "speakers": [ + { + "username": "yassineldeeb94", + "id": "18743822", + "name": "Yassin Eldeeb", + "company": "The Guild", + "custom_order": 0 + } + ], + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "12", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "11:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "12", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "12:30pm", + "start_date": "2024-09-12", + "start_time": "11:00:00", + "start_time_ts": 1726164000, + "end_date": "2024-09-12", + "end_time": "12:30:00", + "event_type_sort": "7" + }, + { + "event_key": "706626", + "active": "Y", + "pinned": "N", + "name": "Unconference Kickoff", + "event_start": "2024-09-12 11:00", + "event_end": "2024-09-12 11:15", + "event_type": "Unconference", + "description": "Review of the topics and room schedules for the unconference.", + "goers": "15", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan A", + "id": "e25c07f23d7396a8120cc0155015f694", + "venue_id": "1944305", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "12", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "11:00am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "12", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "11:15am", + "start_date": "2024-09-12", + "start_time": "11:00:00", + "start_time_ts": 1726164000, + "end_date": "2024-09-12", + "end_time": "11:15:00", + "event_type_sort": "15" + }, + { + "event_key": "706629", + "active": "Y", + "pinned": "N", + "name": "Unconference Discussions", + "event_start": "2024-09-12 11:15", + "event_end": "2024-09-12 12:30", + "event_type": "Unconference", + "goers": "4", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan A", + "id": "aec7fe29f8660d0e0180b54af5d9bd3b", + "venue_id": "1944305", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "12", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "11:15am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "12", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "12:30pm", + "start_date": "2024-09-12", + "start_time": "11:15:00", + "start_time_ts": 1726164900, + "end_date": "2024-09-12", + "end_time": "12:30:00", + "event_type_sort": "15", + "description": "" + }, + { + "event_key": "706627", + "active": "Y", + "pinned": "N", + "name": "Unconference: Lightning Talks", + "event_start": "2024-09-12 11:15", + "event_end": "2024-09-12 12:30", + "event_type": "Unconference", + "description": "Sign up for a lightening talk slot at the GraphQL Foundation Booth in the Sponsor Showcase!", + "goers": "8", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan B-C", + "id": "e48103dc4df8d88bf37b967a0b22d357", + "venue_id": "1944308", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "12", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "11:15am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "12", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "12:30pm", + "start_date": "2024-09-12", + "start_time": "11:15:00", + "start_time_ts": 1726164900, + "end_date": "2024-09-12", + "end_time": "12:30:00", + "event_type_sort": "15" + }, + { + "event_key": "706628", + "active": "Y", + "pinned": "N", + "name": "Unconference: TSC Office Hours", + "event_start": "2024-09-12 11:15", + "event_end": "2024-09-12 12:30", + "event_type": "Unconference", + "description": "Have a question about GraphQL? Want to talk to a TSC Member about an RFC? Have an idea for the Working Group? Share it with the GraphQL TSC!", + "goers": "6", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "id": "ba56d08028cb125d8c549e7b4b4d198b", + "venue_id": "1944311", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "12", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "11:15am", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "12", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "12:30pm", + "start_date": "2024-09-12", + "start_time": "11:15:00", + "start_time_ts": 1726164900, + "end_date": "2024-09-12", + "end_time": "12:30:00", + "event_type_sort": "15" + }, + { + "event_key": "7", + "active": "Y", + "pinned": "N", + "name": "Lunch Break - Attendees on Own", + "event_start": "2024-09-12 12:30", + "event_end": "2024-09-12 14:00", + "event_type": "Breaks & Special Events", + "description": "Lunch will be on your own. San Francisco offers a variety of dining options nearby to suit different tastes and preferences. Feel free to explore the local area and enjoy your meal. We’ll reconvene at 1:30 PM for the next session.", + "goers": "18", + "seats": "0", + "invite_only": "N", + "venue": "Attendees On Own", + "id": "c291c64196e84d0862ded0b8ef31968a", + "venue_id": "1979819", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "12", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "12:30pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "12", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "2:00pm", + "start_date": "2024-09-12", + "start_time": "12:30:00", + "start_time_ts": 1726169400, + "end_date": "2024-09-12", + "end_time": "14:00:00", + "event_type_sort": "3" + }, + { + "event_key": "1", + "active": "Y", + "pinned": "N", + "name": "Unconference Discussions", + "event_start": "2024-09-12 14:00", + "event_end": "2024-09-12 15:30", + "event_type": "Unconference", + "goers": "4", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan A", + "id": "4bd0c22887a042cfffec9428d7fc9689", + "venue_id": "1944305", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "12", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "2:00pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "12", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "3:30pm", + "start_date": "2024-09-12", + "start_time": "14:00:00", + "start_time_ts": 1726174800, + "end_date": "2024-09-12", + "end_time": "15:30:00", + "event_type_sort": "15", + "description": "" + }, + { + "event_key": "4", + "active": "Y", + "pinned": "N", + "name": "Unconference: GraphQL Working Group Topics", + "event_start": "2024-09-12 14:00", + "event_end": "2024-09-12 15:30", + "event_type": "Unconference", + "goers": "6", + "seats": "0", + "invite_only": "N", + "venue": "Metropolitan B-C", + "id": "52854704c6ab04364b24f2bda3991034", + "venue_id": "1944308", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "12", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "2:00pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "12", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "3:30pm", + "start_date": "2024-09-12", + "start_time": "14:00:00", + "start_time_ts": 1726174800, + "end_date": "2024-09-12", + "end_time": "15:30:00", + "event_type_sort": "15", + "description": "" + }, + { + "event_key": "3", + "active": "Y", + "pinned": "N", + "name": "Unconference: GraphQL Working Group Topics", + "event_start": "2024-09-12 14:00", + "event_end": "2024-09-12 15:30", + "event_type": "Unconference", + "goers": "6", + "seats": "0", + "invite_only": "N", + "venue": "Skyline B-C - Level 21", + "id": "e456ed2987a18a88a3f6662842d17921", + "venue_id": "1944314", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "12", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "2:00pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "12", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "3:30pm", + "start_date": "2024-09-12", + "start_time": "14:00:00", + "start_time_ts": 1726174800, + "end_date": "2024-09-12", + "end_time": "15:30:00", + "event_type_sort": "15", + "description": "" + }, + { + "event_key": "2", + "active": "Y", + "pinned": "N", + "name": "Unconference: Show & Tell", + "event_start": "2024-09-12 14:00", + "event_end": "2024-09-12 15:30", + "event_type": "Unconference", + "description": "Sign up at the GraphQL Foundation Booth in the Sponsor showcase!", + "goers": "3", + "seats": "0", + "invite_only": "N", + "venue": "Skyline A - Level 21", + "id": "d834fa1289d62ca14c1d5f67013c6337", + "venue_id": "1944311", + "event_start_year": "2024", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "12", + "event_start_weekday": "Thursday", + "event_start_weekday_short": "Thu", + "event_start_time": "2:00pm", + "event_end_year": "2024", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "12", + "event_end_weekday": "Thursday", + "event_end_weekday_short": "Thu", + "event_end_time": "3:30pm", + "start_date": "2024-09-12", + "start_time": "14:00:00", + "start_time_ts": 1726174800, + "end_date": "2024-09-12", + "end_time": "15:30:00", + "event_type_sort": "15" + } +] \ No newline at end of file diff --git a/scripts/sync-sched/schedule-2025.json b/scripts/sync-sched/schedule-2025.json new file mode 100644 index 0000000000..ce6339ac91 --- /dev/null +++ b/scripts/sync-sched/schedule-2025.json @@ -0,0 +1,93 @@ +[ + { + "event_key": "1", + "active": "Y", + "pinned": "N", + "name": "Keynote Session Example", + "event_start": "2025-09-08 09:00", + "event_end": "2025-09-08 09:15", + "event_type": "Keynote Sessions", + "goers": "0", + "seats": "0", + "invite_only": "N", + "venue": "Keynote Room", + "audience": "Any", + "id": "aa6a893426a3d92bcbc4b140abeb56c6", + "venue_id": "2111098", + "speakers": [ + { + "username": "lee_byron.25jvpjmb", + "id": "18743534", + "name": "Lee Byron", + "company": "GraphQL Foundation", + "custom_order": 0 + } + ], + "event_start_year": "2025", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "8", + "event_start_weekday": "Monday", + "event_start_weekday_short": "Mon", + "event_start_time": "09:00", + "event_end_year": "2025", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "8", + "event_end_weekday": "Monday", + "event_end_weekday_short": "Mon", + "event_end_time": "09:15", + "start_date": "2025-09-08", + "start_time": "09:00:00", + "start_time_ts": 1757318400, + "end_date": "2025-09-08", + "end_time": "09:15:00", + "event_type_sort": "2", + "description": "" + }, + { + "event_key": "2", + "active": "Y", + "pinned": "N", + "name": "Breakout session example", + "event_start": "2025-09-10 10:30", + "event_end": "2025-09-10 10:45", + "event_type": "Breakout Session", + "description": "This is an example description.", + "goers": "0", + "seats": "0", + "invite_only": "N", + "venue": "Breakout Session Room", + "id": "c0205884be221948a39bc4af9939c675", + "venue_id": "2111100", + "speakers": [ + { + "username": "benjie3", + "id": "18743846", + "name": "Benjie Gillam", + "company": "Graphile", + "custom_order": 0 + } + ], + "event_start_year": "2025", + "event_start_month": "September", + "event_start_month_short": "Sep", + "event_start_day": "10", + "event_start_weekday": "Wednesday", + "event_start_weekday_short": "Wed", + "event_start_time": "10:30", + "event_end_year": "2025", + "event_end_month": "September", + "event_end_month_short": "Sep", + "event_end_day": "10", + "event_end_weekday": "Wednesday", + "event_end_weekday_short": "Wed", + "event_end_time": "10:45", + "start_date": "2025-09-10", + "start_time": "10:30:00", + "start_time_ts": 1757496600, + "end_date": "2025-09-10", + "end_time": "10:45:00", + "event_type_sort": "1" + } +] \ No newline at end of file diff --git a/scripts/sync-sched/speakers.json b/scripts/sync-sched/speakers.json new file mode 100644 index 0000000000..c29ad24a50 --- /dev/null +++ b/scripts/sync-sched/speakers.json @@ -0,0 +1,1874 @@ +[ + { + "username": "abbottry", + "company": "NASA EED-3 / Element 84", + "position": "Senior Software Engineer", + "name": "Ryan Abbott", + "about": "Ryan Abbott is a software engineer with over 15 years of experience building scalable and maintainable backend systems. He currently works as a contractor for NASA through Element 84, where he is responsible for developing and maintaining mission-critical applications. Ryan is passionate about leveraging the right tools and technologies to create reliable and efficient systems. When not working, Ryan can be found flying planes, playing soccer, and spending quality time with his wife and kids.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/9/c4/18680304/avatar.jpg.320x320px.jpg?949", + "socialurls": [], + "~years": [ + 2023 + ], + "~syncedDetailsAt": 1749497543087 + }, + { + "username": "adam_malone.2791s6x2", + "company": "Hasura", + "position": "Global Director, Sales Engineering", + "name": "Adam Malone", + "about": "", + "location": "", + "url": "", + "avatar": "", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "adam.sayah", + "company": "Solo.io", + "position": "Product Manager", + "name": "Adam Sayah", + "about": "Adam Sayah is Field Engineer at Solo.io, a company specializing in open source and enterprise software for application networking from the edge to service mesh. At Solo.io, Adam helps organizations build and operate robust cloud-native architecture. Prior to Solo.io, Adam held software engineering roles at cloud-native technology companies, working on Managed File Transfers, Kubernetes, API gateways, and service mesh.", + "location": "", + "url": "https://solo.io", + "avatar": "//avatars.sched.co/e/3c/12615405/avatar.jpg.320x320px.jpg?742", + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/_asayah" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/adamsayah/" + } + ], + "~years": [ + 2023 + ], + "~syncedDetailsAt": 1749497543087 + }, + { + "username": "aditi_rajawat", + "company": "Intuit", + "position": "Software Engineering Manager", + "name": "Aditi Rajawat", + "about": "Aditi is an Engineering manager at Intuit leading GraphQL API Platform team, who transitioned into this role the current year from Staff Software Engineer. She has experience of 9 years in the software industry and enjoys working on distributed software systems. She is driving GraphQL adoption at Intuit with focus on improving developer productivity and holding a high bar for operational excellence of GraphQL runtime. Recently, she is also building a new habit to read books in her free time.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/7/07/21066788/avatar.jpg.320x320px.jpg?825", + "socialurls": [], + "~years": [ + 2024 + ], + "~syncedDetailsAt": 1749497429311 + }, + { + "username": "ajhingran", + "company": "IBM", + "position": "IBM Fellow & CTO, Software", + "name": "Anant Jhingran", + "about": "Anant Jhingran is the CTO for IBM Software. He came into this current role when StepZen was acquired by IBM in February 2023. He was the CEO of StepZen, which he co-founded in early 2020 along with a couple of his Apigee colleagues. StepZen delivers GraphQL APIs using declarative approaches that he learnt from his decades of experience building out IBM's databases. \n \nHe has shipped deeply technical products that have been deployed in 1000s of enterprises. Before founding StepZen, he helped take Apigee public, as well as its acquisition by Google. He has a PhD in database systems from UC Berkeley and is accomplished in his professional career (IBM Fellow; CTO of IBM's Information Management Division; Distinguished Alumnus, IIT Delhi). His products have delivered billions of dollars of revenue at IBM and Apigee, and he has led large teams of researchers, engineers and product managers during his career.\n \nHe has received several awards including IBM Fellow, IIT Delhi Distinguished Alumnus Award, IBM Corporate Award for contributions to DB2, President's Gold Medal for highest GPA at IIT Delhi, and IBM Academy of Technology. He is the author of over a dozen patents and over 20 technical papers and is frequently giving keynotes in industry and academic conferences.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/3/48/19225935/avatar.jpg.320x320px.jpg?a5a", + "socialurls": [], + "~years": [ + 2024 + ], + "~syncedDetailsAt": 1749497429311 + }, + { + "username": "alan.quigley", + "company": "Toast Inc", + "position": "Principal Software Engineer", + "name": "Alan Quigley", + "about": "I live in Dublin with my wife and two kids, near the city centre. I’ve been a Frontend Engineer at Toast for five years, with over twenty years of experience. At Toast, I’ve helped lead our design system and micro frontend architecture, and I’m currently focusing on the GraphQL tool chain to enhance our development process. Before engineering, I worked in Animation, where I learned the value of process and consistency, which I apply to my work today.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/a/aa/21066789/avatar.jpg.320x320px.jpg?256", + "socialurls": [], + "~years": [ + 2024 + ], + "~syncedDetailsAt": 1749497429311 + }, + { + "username": "alec102", + "company": "Arista Networks", + "position": "Software Engineer", + "name": "Alec Aivazis", + "about": "Alec is an open source enthusiast currently focused on Houdini, a GraphQL client. He spends his time away from the keyboard tending to a collection of carnivorous plants. And when he's in the mood for a sunburn, he also enjoys cycling and sailing with his family.", + "location": "", + "url": "https://alec.aivazis.com/", + "avatar": "//avatars.sched.co/d/b3/18743870/avatar.jpg.320x320px.jpg?ac7", + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/alecaivazis" + }, + { + "service": "LinkedIn", + "url": "https://linkedin.com/alecaivazis" + } + ], + "~years": [ + 2023 + ], + "~syncedDetailsAt": 1749497543087 + }, + { + "username": "alex_reilly.7ldur4l", + "company": "Independent", + "position": "Software Engineer", + "name": "Alex Reilly", + "about": "", + "location": "San Francisco", + "url": "https://alex.dev", + "avatar": "//avatars.sched.co/9/8e/14900019/avatar.jpg.320x320px.jpg?3f4", + "socialurls": [ + { + "service": "Twitter", + "url": "https://x.com/alex_reilly_pro" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/alexander-reilly/" + } + ], + "~years": [ + 2024 + ], + "~syncedDetailsAt": 1749497429311 + }, + { + "username": "alexsandra.sikora", + "company": "The Guild", + "position": "Open-source developer", + "name": "Aleksandra Sikora", + "about": "Aleksandra is an open-source developer at The Guild, based in Wrocław, Poland. Previously a tech lead for the Hasura Console and a lead maintainer of Blitz.js. Deeply passionate about open-source, TypeScript and dedicated to staying up to date with the JavaScript ecosystem.", + "location": "", + "url": "https://the-guild.dev/", + "avatar": "//avatars.sched.co/5/98/18743798/avatar.jpg.320x320px.jpg?43c", + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/aleksandrasays" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/aleksandra-sikora-b54699132/" + } + ], + "~years": [ + 2023 + ], + "~syncedDetailsAt": 1749497543087 + }, + { + "username": "amy1908", + "company": "RedwoodJS", + "position": "Lead Maintainer on the RedwoodJS Core Team", + "name": "Amy Dutton", + "about": "Amy loves using her 22 years of internet experience to teach developers how to design, and designers how to develop. She lives in Nashville, TN USA with her husband, 3 adorable kids, and 2 dogs.", + "location": "", + "url": "https://redwoodjs.com", + "avatar": "//avatars.sched.co/4/80/16832327/avatar.jpg.320x320px.jpg?42e", + "socialurls": [], + "~years": [ + 2023 + ], + "~syncedDetailsAt": 1749497543087 + }, + { + "username": "an.ngo", + "company": "bol", + "position": "Tech Lead", + "name": "An Ngo", + "about": "An Ngo is a Tech Lead at bol. A GraphQL enthusiast since 2019, and founder of the API BrainTrust and a contributor of the (REST/GraphQL) API guidelines within bol. Currently core member of the GraphQL stewardship for the adoption of GraphQL at bol.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/2/28/21066792/avatar.jpg.320x320px.jpg?375", + "socialurls": [ + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/vliegveld5/" + } + ], + "~years": [ + 2024 + ], + "~syncedDetailsAt": 1749497429311 + }, + { + "username": "andreas.heiberg", + "company": "Stellate", + "position": "Engineering Manager", + "name": "Andreas Heiberg", + "about": "In 2016 Andreas built a novel closed-source GraphQL server & client implementation at DueDil to optimise their large GraphQL infrastructure beyond what the DataLoader pattern allowed. At Babylon Health Andreas was the Engineering Manager for the GraphQL team and used Apollo Federation to move the health care industry forward. Today Andreas is the Engineering Manager at Stellate - bringing superpowers to large-scale GraphQL APIs.", + "location": "London, United Kingdom", + "url": "https://stellate.co/", + "avatar": "//avatars.sched.co/9/16/18743801/avatar.jpg.320x320px.jpg?7e0", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "andreas.marek1", + "company": "Atlassian", + "position": "Software Developer", + "name": "Andreas Marek", + "about": "GraphQL TSC Member and GraphQL Java founder. Working on all things GraphQL at Atlassian.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/1/ac/21066795/avatar.jpg.320x320px.jpg?e5e", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "andrei.bocan", + "company": "Atlassian", + "position": "Principal Engineer", + "name": "Andrei Bocan", + "about": "Andrei is a professional book hoarder who frequently complains about software.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/f/c3/21066797/avatar.jpg.320x320px.jpg?012", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "andrew.doyle1", + "company": "U.S. House of Representatives", + "position": "Director of Legislative Applications", + "name": "Andrew Doyle", + "about": "Andy Doyle is a technologist with over 30 years experience building systems. He currently works for the House of Representatives modernizing applications that support the legislative process.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/e/7d/21066800/avatar.jpg.320x320px.jpg?55c", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "ankita25", + "company": "Akto.io", + "position": "Co-founder and CEO", + "name": "Ankita Gupta", + "about": "Ankita is the co-founder and CEO of Akto.io. Prior to Akto she has experience working in VMware, LinkedIn and JP Morgan. She holds MBA from Dartmouth College and Bachelors in Technology from IIT Roorkee.", + "location": "San Francisco", + "url": "https://akto.io/", + "avatar": "//avatars.sched.co/9/a0/21265832/avatar.jpg.320x320px.jpg?b49", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "annyce.davis", + "company": "Meetup", + "position": "Vice President of Engineering", + "name": "Annyce Davis", + "about": "Annyce is an Android and Kotlin Google Developer Expert. She has spent the past 10+ years developing applications for the Android ecosystem across multiple form factors. She is also an international conference speaker and author, sharing her knowledge of Android and Kotlin development with others!", + "location": "United States", + "url": "https://www.meetup.com", + "avatar": "//avatars.sched.co/3/11/2147992/avatar.jpg.320x320px.jpg?b1a", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "anthony_miller1", + "company": "Apollo GraphQL", + "position": "Principal Engineer - iOS", + "name": "Anthony Miller", + "about": "Anthony Miller leads the development of Apollo GraphQL’s iOS client library. He has a passion for client-side infrastructure, quality API design, and writing far too many unit tests. Outside of Apollo, Anthony enjoys board gaming with friends, watching movies, and relaxing by the pool.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/5/01/21066803/avatar.jpg.320x320px.jpg?46c", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "antoine.carossio", + "company": "Escape.tech", + "position": "Cofounder & CTO", + "name": "Antoine Carossio", + "about": "Former pentester for the French Intelligence Services.\nFormer Machine Learning Research @ Apple.\n\nlinkedin.com/in/acarossio/\nescape.tech (company)\n@iCarossio\nescape.tech (blog)", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/c/49/18743834/avatar.jpg.320x320px.jpg?7f3", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "anushrut.gupta", + "company": "Hasura", + "position": "Senior Product Manager, Generative AI", + "name": "Anushrut Gupta", + "about": "We are building Pacha, an incredible tool that helps you build powerful AI applications that connect to any kind of data source with authorization, give LLMs a programmatic runtime and structured memory to eliminate context loss.", + "location": "San Francisco, California", + "url": "askpacha.ai", + "avatar": "//avatars.sched.co/3/3e/21460012/avatar.jpg.320x320px.jpg?925", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "ardatanrikulu", + "company": "The Guild", + "position": "Open Source Developer", + "name": "Arda Tanrıkulu", + "about": "", + "location": "İstanbul, Türkiye", + "url": "", + "avatar": "//avatars.sched.co/1/10/18982310/avatar.jpg.320x320px.jpg?e18", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "arkenflame", + "company": "-", + "position": "Software Engineer", + "name": "Mike Solomon", + "about": "Mike is a software engineer with a background in distributed systems at scale. Previously, he was a Sr. Staff Software Engineer leading the Strato team (and a Group Tech Lead in Core Services) at Twitter.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/1/be/18743867/avatar.jpg.320x320px.jpg?5f6", + "socialurls": [], + "~years": [ + 2024 + ], + "~syncedDetailsAt": 1749497439360 + }, + { + "username": "ashpak_shaikh", + "company": "Intuit", + "position": "Sr Staff Software Engineer", + "name": "Ashpak Shaikh", + "about": "Ashpak Shaikh is a Sr Staff Software Engineer at Intuit with over a decade of experience. He is a passionate advocate for GraphQL API development and has been an API steward at Intuit for several years. Ashpak believes in simplifying complex service orchestration with the power of Domain Specific Languages(DSL) and has been instrumental in architecting a GraphQL Gateway platform that powers consumer-facing applications like Turbotax, Mint, and Virtual Expert Platform at scale. He has played a key role in open-sourcing all the components of the GraphQL platform via the graph-quilt java project.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/0/a8/19084619/avatar.jpg.320x320px.jpg?4ad", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "badurinadenis", + "company": "The Guild", + "position": "Software Architect", + "name": "Denis Badurina", + "about": "I am a self-taught senior software architect, with a distinguishing trait of resiliently finding simple solutions to complex problems using communication through words and code. Starting from my first Lego set, I've been in love with development throughout my whole life. As a creator, having the ability to turn thoughts into reality is a gift I find essential. Forever learning through practical applications, bad decisions and positive thoughts - I, ultimately, turned a hobby into an obsession.", + "location": "Sarajevo", + "url": "https://the-guild.dev/", + "avatar": "//avatars.sched.co/6/a9/18743810/avatar.jpg.320x320px.jpg?ec6", + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/enisdenjo" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/enisdenjo/" + } + ], + "~years": [ + 2024 + ], + "~syncedDetailsAt": 1749497439360 + }, + { + "username": "benjie3", + "company": "Graphile", + "position": "GraphQL Community Gardener", + "name": "Benjie Gillam", + "about": "A self-described \"community-funded open source maintainer,\" Benjie spends much of his time on OSS, enabled by appreciative and forward-thinking individuals and organizations who sponsor his continued efforts. Through his 5 years attending the GraphQL Working Group, Benjie has become one of the key members – both in terms of his own contributions, and in terms of helping others to advance their submissions. As a member of the GraphQL TSC, Benjie is proud to help guide GraphQL into the future.", + "location": "Chandler's Ford, UK", + "url": "https://graphile.org/", + "avatar": "//avatars.sched.co/b/99/18743846/avatar.jpg.320x320px.jpg?b57", + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/benjie" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/benjiegillam/" + } + ], + "~years": [ + 2025 + ], + "~syncedDetailsAt": 1749497416063 + }, + { + "username": "brandon.r.minnick", + "company": "AWS", + "position": ".NET Developer Advocate", + "name": "Brandon Minnick", + "about": "Brandon is a Developer Advocate at AWS where he gets to work closely with the developer community to help fellow mobile app and cloud developers make 5-star apps.\n\nBrandon previously worked at Xamarin + Microsoft where he focused on creating mobile apps in C# using Xamarin + .NET MAUI.\n\nAn avid mobile app developer, Brandon loves to code and has contributed to and published countless apps!", + "location": "", + "url": "https://codetraveler.io", + "avatar": "//avatars.sched.co/2/a4/9493345/avatar.jpg.320x320px.jpg?3ce", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "bryan.robinson2", + "company": "Hygraph", + "position": "Head of Developer Relations", + "name": "Bryan Robinson", + "about": "Bryan is the Head of Developer Relations at Hygraph. He has a strong passion for developer education and experience as well as decoupled architectures, frontend development, and clean design.", + "location": "", + "url": "https://hygraph.com", + "avatar": "//avatars.sched.co/5/8e/19076363/avatar.jpg.320x320px.jpg?ad8", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "bsklar", + "company": "Salesforce", + "position": "Senior Product Manager", + "name": "Ben Sklar", + "about": "Ben Sklar is a Senior Product Manager at Salesforce. He is an avid skier, hiker, and ultimate frisbee player.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/d/92/18743813/avatar.jpg.320x320px.jpg?042", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "bsy", + "company": "Meta Platforms, Inc.", + "position": "Software Engineer", + "name": "Bryan Yang", + "about": "Bryan Yang is currently a tech lead at Meta leading the adoption of GraphQL in Ads Manager of Meta. Bryan has been working for a few big tech companies including Amazon and Uber for the past decade as a software engineer and an engineering manager. Bryan is wrapping up his master's degree in System Design and Management at MIT and holds a BS degree from University of Illinois at Urbana Champaign.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/7/1c/18743852/avatar.jpg.320x320px.jpg?de3", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "budha1", + "company": "Tyk", + "position": "Director of Product Ecosystems", + "name": "Budhaditya Bhattacharya", + "about": "Budha is the director of product ecosystems at Tyk, where he leads product education, ecosystem expansion, and open standards adoption. \n \nAs the board chair of the OpenAPI Initiative, he is responsible for membership growth and driving the adoption of OAS, Arazzo, and Overlays. \n \nPart product strategist, part developer advocate, and part storyteller, he’s on a mission to remove friction from API ecosystems by breaking down tech complexities preferably with a great metaphor and a well-placed pun.", + "location": "Durham, NC", + "url": "https://www.linkedin.com/in/budha-b/", + "avatar": "//avatars.sched.co/1/fe/17694866/avatar.jpg.320x320px.jpg?7a7", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "christian.ernst", + "company": "Booking.com", + "position": "Senior Software Engineer", + "name": "Christian Ernst", + "about": "Christian is currently a Senior Software Egineer at Booking.com. For the last two years Christian has been working driving the GraphQL initiative across the company by helping teams adopt GraphQL for their use cases.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/c/5f/19084532/avatar.jpg.320x320px.jpg?8bd", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "christian.ernst1", + "company": "Booking.com", + "position": "Senior Software Engineer", + "name": "Christian Ernst", + "about": "Christian is currently a Senior Software Engineer at Booking.com. For the last three years Christian has been working to drive the GraphQL initiative across the company by helping teams adopt build new features leveraging GraphQL.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/9/39/21066804/avatar.jpg.320x320px.jpg?fff", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "christian.stangier", + "company": "MOIA GmbH", + "position": "Senior Software Engineer", + "name": "Christian Stangier", + "about": "Christian is a Software Engineer at MOIA GmbH, a company trying to improve urban transportation with ride-pooling. With over 12 years of experience as a full-stack developer, Christian is currently focused on building real-time tooling for fleet operators with GraphQL on serverless AWS.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/a/5f/21066807/avatar.jpg.320x320px.jpg?a7c", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "danadajian", + "company": "Expedia Group", + "position": "Senior Software Engineer", + "name": "Dan Adajian", + "about": "I am a Senior Software Engineer at Expedia Group who is passionate about GraphQL, open source software, and developer experience. I live in Chicago, IL and enjoying playing golf and tennis when the weather allows!", + "location": "Chicago, IL", + "url": "https://github.com/danadajian/", + "avatar": "//avatars.sched.co/a/cc/21487429/avatar.jpg.320x320px.jpg?ffa", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "danielle.man", + "company": "Apollo GraphQL", + "position": "Senior Director of Engineering", + "name": "Danielle Man", + "about": "For the last 7 years I've been helping make GraphQL easier to build with and use at Apollo. I love building products for the web, solving problems with craftsmanship and code. In my time at Apollo I've been a friend, a manager, a developer, a product manager, a recruiter, an advocate, and more. At the end of the day, I just want to make tools that help people and feel great to use. I care much more about the people I'm working with than the day-to-day specifics of my job.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/b/1a/21066810/avatar.jpg.320x320px.jpg?708", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "david3103", + "company": "inRecovery", + "position": "Founder / CEO", + "name": "David Emanuel Sarabia", + "about": "", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/7/71/13551525/avatar.jpg.320x320px.jpg?cc8", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "donnasiqizhou", + "company": "Atlassian", + "position": "Software Engineer", + "name": "Donna Zhou", + "about": "I'm a maintainer of GraphQL Java and software engineer at Atlassian. I've published a book, \"GraphQL with Java and Spring\", all about the official Spring for GraphQL integration and the GraphQL Java library.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/0/1d/18743879/avatar.jpg.320x320px.jpg?e1f", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "dotansimha", + "company": "The Guild", + "position": "CTO", + "name": "Dotan Simha", + "about": "The creator of GraphQL Code Generator, and many other GraphQL-related tools. Active developer and maintainer of GraphQL-Hive and the CTO of The Guild.", + "location": "", + "url": "https://the-guild.dev/", + "avatar": "//avatars.sched.co/1/4d/18743828/avatar.jpg.320x320px.jpg?795", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "eitan15", + "company": "Inigo", + "position": "CTO and Co-founder", + "name": "Eitan Joffe", + "about": "Software engineer and GraphQL enthusiast. Before founding Inigo, Eitan was a core member at multiple startups (Arista, Apstra, Observe) building stuff in networking, cloud infrastructure, and the observability space. Eitan's passion in life is to design, build and create stuff. He gets extra pleasure from finding elegant, simple solutions to complicated problems.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/5/e5/17700131/avatar.jpg.320x320px.jpg?aaf", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "emily.li2", + "company": "Benchling", + "position": "Software Engineer", + "name": "Emily Li", + "about": "Emily is a Software Engineer at Benchling where she has spent the past two years building a dynamically generated GraphQL API.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/d/91/21066813/avatar.jpg.320x320px.jpg?591", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "en3m", + "company": "The Guild", + "position": "Machina", + "name": "Dimitri Postolov", + "about": "Open Source developer from Paris GraphQL-ESLint, Nextra and GraphiQL maintener", + "location": "", + "url": "https://the-guild.dev", + "avatar": "//avatars.sched.co/5/78/18743843/avatar.jpg.320x320px.jpg?664", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "erikwrede2", + "company": "fulfillmenttools", + "position": "Software Engineer", + "name": "Erik Wrede", + "about": "Erik is a Software Engineer and GraphQL enthusiast that enjoys building full-stack GraphQL solutions. As a member of the GraphQL-Python Maintainer Team and Core Dev at Strawberry-GraphQL, he’s passionate about improving the developer experience and creating exciting new GraphQL tooling. Erik is excited about building performant and scalable solutions and is always eager to chat about new features, developments and the latest advancements in tech.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/6/74/21102110/avatar.jpg.320x320px.jpg?a37", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "ernie.turner1", + "company": "Coinbase", + "position": "Staff Software Engineer", + "name": "Ernie Turner", + "about": "Ernie has over fifteen years of experience building Enterprise web applications and developer platforms going back to the dark, soul crushing days of IE6. Ernie now works at Coinbase helping build their GraphQL infrastructure.", + "location": "", + "url": "https://coinbase.com", + "avatar": "//avatars.sched.co/b/bc/18743873/avatar.jpg.320x320px.jpg?222", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "gabrielschulhof", + "company": "Auction.com", + "position": "Lead Software Engineer", + "name": "Gabriel Schulhof", + "about": "Node.js Core Collaborator and TSC Member emeritus, member of the Node.js API working group. Former employers include Nokia, Intel, and SpaceX.", + "location": "Irvine, CA", + "url": "https://auction.com/", + "avatar": "//avatars.sched.co/0/e6/13020672/avatar.jpg.320x320px.jpg?d7c", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "gerard.klijs", + "company": "AxonIQ", + "position": "Software Engineer", + "name": "Gerard Klijs", + "about": "With over 10 years of experience as a backend engineer, Gerard Klijs is a contributor to several GraphQL libraries, and also the creator and maintainer of a Rust library to use Confluent Schema Registry. He has an interest in event sourcing and CQRS and likes sharing knowledge via blogs, talks, and demo projects.", + "location": "", + "url": "https://www.axoniq.io/", + "avatar": "//avatars.sched.co/2/4b/18743792/avatar.jpg.320x320px.jpg?b61", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "giacomo.simmi", + "company": "Paramount", + "position": "Software Architect", + "name": "Giacomo Simmi", + "about": "Born in the 90s, I grew up in southern Italy surrounded by martial arts, anime, video games, and computers.\nI fell in love with computer science when software was still distributed on floppy disks.\n\nI started my career as a Mobile Developer when Android was just emerging. Later, I took on roles such as Web Developer, Backend Developer, Tech Lead, and IT Manager.\n\nToday, I am an IT Architect with more than 10 years of experience in consulting companies and corporates.", + "location": "Milan, Italy", + "url": "https://keadex.dev", + "avatar": "//avatars.sched.co/6/8c/21496501/avatar.jpg.320x320px.jpg?5c6", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "gilgardosh", + "company": "The Guild", + "position": "Open Source Developer", + "name": "Gil Gardosh", + "about": "", + "location": "", + "url": "https://the-guild.dev/", + "avatar": "//avatars.sched.co/0/33/19070448/avatar.jpg.320x320px.jpg?34a", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "gonenj", + "company": "Wix.com", + "position": "Head of API Infra", + "name": "Gonen Jerbi", + "about": "Gonen, a GraphQL enthusiast for 8 years, joined Wix 6 years ago, pioneering GraphQL adoption. A transformative hackathon 5 years ago showcased automatic schema generation for Wix APIs. Today, Wix extensively uses GraphQL and plans to expose all APIs via GraphQL. Join him to explore his insights on streamlining GraphQL adoption and unleashing its potential.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/3/c5/18743816/avatar.jpg.320x320px.jpg?0f8", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "hello2358", + "company": "IBM", + "position": "Technical Product Manager", + "name": "Roy Derks", + "about": "Roy is an entrepreneur, speaker and author from The Netherlands and, in his own words, 'wants to make the world a better place through tech'. He has been giving talks and trainings to developers worldwide on technologies like GraphQL, React and TypeScript. Most recently he wrote the book Fullstack GraphQL.", + "location": "Santa Clara, CA", + "url": "https://x.com/gethackteam", + "avatar": "//avatars.sched.co/a/20/16832291/avatar.jpg.320x320px.jpg?60d", + "socialurls": [ + { + "service": "Twitter", + "url": "https://x.com/gethackteam" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/gethackteam" + } + ], + "~years": [ + 2024 + ], + "~syncedDetailsAt": 1749497439360 + }, + { + "username": "idit_levine.25krdj4u", + "company": "Solo.io", + "position": "Founder", + "name": "Idit Levine", + "about": "", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/e/82/18769950/avatar.jpg.320x320px.jpg?ca2", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "itamark", + "company": "Meta", + "position": "Software Engineer", + "name": "Itamar Kestenbaum", + "about": "Software Engineer working on Infrastructure experiences at Meta", + "location": "", + "url": "https://www.threads.net/@itamarok", + "avatar": "//avatars.sched.co/b/e5/80829/avatar.jpg.320x320px.jpg?988", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "jamie855", + "company": "Grafbase", + "position": "Dev Rel Engineer", + "name": "Jamie Barton", + "about": "Around since the days of dial-up modems and flash websites. I'm a software engineer who can do slightly more than build landing pages today. Despite my age (in tech years, at least), I'm always working with the latest tools like GraphQL to build beautiful and functional web apps.", + "location": "North East, UK", + "url": "https://grafbase.com", + "avatar": "//avatars.sched.co/c/f3/18743804/avatar.jpg.320x320px.jpg?2a2", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "janette.cheng", + "company": "Meta", + "position": "Software Engineer", + "name": "Janette Cheng", + "about": "Working on the GraphQL client and build infrastructure for mobile apps at Meta", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/c/c0/21066816/avatar.jpg.320x320px.jpg?aa7", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "jared_cheney.7rad60v", + "company": "Intuit", + "position": "Distinguished Engineer", + "name": "Jared Cheney", + "about": "Jared Cheney is a Distinguished Engineer at Intuit with over 24 years of industry experience with a focus in DevOps, consulting, and software development. He has led many initiatives involving API integrations with other products and helps lead the efforts around best practices for API guidelines and principles within Intuit.", + "location": "Boise, ID", + "url": "intuit.com", + "avatar": "//avatars.sched.co/4/e3/18775617/avatar.jpg.320x320px.jpg?01b", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "jeff.auriemma", + "company": "Apollo GraphQL", + "position": "Senior Engineering Manager", + "name": "Jeff Auriemma", + "about": "Hi, I'm Jeff! I'm a manager serving the Apollo Client, Apollo iOS, and Apollo Kotlin engineers. I also serve as a member of the GraphQL Foundation's Governing Board. In my spare time I enjoy baking, coffee, making music, kayaking, and nature walks with my spouse and three children.", + "location": "Connecticut, USA", + "url": "https://apollographql.com", + "avatar": "//avatars.sched.co/3/77/18743876/avatar.jpg.320x320px.jpg?a1e", + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/JeffAuriemma" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/jeffreyauriemma/" + } + ], + "~years": [ + 2024 + ], + "~syncedDetailsAt": 1749497439360 + }, + { + "username": "jens63", + "company": "WunderGraph", + "position": "CEO & Founder", + "name": "Jens Neuse", + "about": "CEO and Founder of WunderGraph,\nbuilding an open-source alternative to Apollo Federation and GraphOS.\nCreator of Open Federation, an open specification for federated GraphQL.\nCreator of graphql-go-tools, an open-source implementation of GraphQL in Go.", + "location": "", + "url": "https://wundergraph.com", + "avatar": "//avatars.sched.co/3/68/19226202/avatar.jpg.320x320px.jpg?aea", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "jim.barton", + "company": "Solo.io", + "position": "Field Engineer", + "name": "Jim Barton", + "about": "Jim Barton is a Field Engineer at Solo.io, a Cambridge-based company specializing in service mesh and Kubernetes-native API gateway technology. Jim’s career in enterprise software spans 30 years. He has enjoyed roles as a project engineer, sales and consulting engineer, product development manager, and executive leader of tech startups. Prior to Solo, he spent a decade architecting, building and operating systems based on enterprise open-source technologies, at the likes of Red Hat, Amazon, and Zappos. After two years of COVID-driven, Zoom-encrusted isolation, Jim especially enjoys sharing with and learning from three-dimensional people at technical conferences around the world.", + "location": "Myrtle Beach, SC, USA", + "url": "https://solo.io", + "avatar": "//avatars.sched.co/f/74/12615290/avatar.jpg.320x320px.jpg?8cc", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "jordaneldredge", + "company": "Meta", + "position": "Software Engineer", + "name": "Jordan Eldredge", + "about": "Jordan has spent the last seven years working at Meta. He currently works on Relay, a sophisticated GraphQL client for JavaScript that powers most of Meta's JavaScript applications.", + "location": "", + "url": "https://jordaneldredge.com", + "avatar": "//avatars.sched.co/7/eb/21066819/avatar.jpg.320x320px.jpg?65e", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "kamilkisiela", + "company": "The Guild", + "position": "Developer", + "name": "Kamil Kisiela", + "about": "Working on GraphQL tooling since before I had a mustache. I'm proud of it (the tooling).", + "location": "Warsaw, Poland", + "url": "https://github.com/kamilkisiela", + "avatar": "//avatars.sched.co/2/7e/19082388/avatar.jpg.320x320px.jpg?d55", + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/kamilkisiela" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/kamilkisiela" + }, + { + "service": "Instagram", + "url": "https://www.instagram.com/kisiel_ogarnij" + } + ], + "~years": [ + 2024 + ], + "~syncedDetailsAt": 1749497439360 + }, + { + "username": "keerthan.ekbote", + "company": "solo.io", + "position": "Mr.", + "name": "Sai Ekbote", + "about": "Sai Ekbote is a Software Engineer currently working on the GraphQL initiative at Solo.io. He has contributed to multiple open source projects such as Istio, Envoy and Flagger. Prior to working on cloud-native tech at solo, Sai worked as a full stack engineer at HubSpot and a simulations engineer at Raytheon.", + "location": "", + "url": "https://solo.io", + "avatar": "//avatars.sched.co/a/6d/14553875/avatar.jpg.320x320px.jpg?9aa", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "keith.babo", + "company": "Solo.io", + "position": "Chief Product Officer", + "name": "Keith Babo", + "about": "Keith Babo leads the product team at Solo.io covering the full range of application networking technologies required to build modern, cloud-native application architectures. Prior to joining Solo.io, Keith held product management and engineering leadership positions at Red Hat, Sun Microsystems, and Intel Corporation.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/2/05/19071264/avatar.jpg.320x320px.jpg?0c9", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "kenneth.wussmann", + "company": "MOIA GmbH", + "position": "Tech Lead, Senior Software Engineer", + "name": "Kenneth Wußmann", + "about": "I currently work at MOIA, building serverless applications to operate an autonomous fleet of vehicles. My journey began in the Java EE cosmos, but over time I shifted to TypeScript, Serverless Architecture and GraphQL. I am fascinated by chess and its parallels to software development.", + "location": "", + "url": "", + "avatar": "", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "kennethstott", + "company": "Hasura, Inc.", + "position": "Field CTO, Hasura, Inc.", + "name": "Kenneth Stott", + "about": "Ken’s experience spans risk management consulting at Deloitte, technology executive leadership in major finance and energy firms, and the CTO of a MedTech startup. Most recently, he was a senior data architect for key initiatives at Bank of America. Now, as Field CTO at Hasura, Inc., he drives cost-effective data solutions for large finance, energy, and healthcare enterprises, addressing complex regulatory challenges and competitive pressures.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/f/b3/21066821/avatar.jpg.320x320px.jpg?439", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "kevin.brown11", + "company": "Exogee", + "position": "Chief Technology Officer", + "name": "Kevin Brown", + "about": "Kevin founded Exogee, a company that builds GraphQL based products for companies that want to ship high quality code quickly on modern stacks. He has been building with GraphQL for more than 7 years, creating software for more than 20 years and likes solving hard problems. Kevin is originally from the US and lives in Sydney, Australia.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/f/4d/21490044/avatar.jpg.320x320px.jpg?2c5", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "kevin1700", + "company": "The Graph", + "position": "Developer Relations Engineer", + "name": "Kevin Jones", + "about": "Kevin is an experienced Developer Relations Engineer with a strong focus on the dynamic realm of blockchain technology. With a passion for fostering innovation and education in the blockchain space, specializing in dApp development and a champion of the adoption of public goods education. Leveraging over 15 years of hands-on experience in deploying production applications, Kevin brings a wealth of knowledge to drive impactful solutions.", + "location": "San Francisco, CA", + "url": "", + "avatar": "//avatars.sched.co/2/d0/19150962/avatar.jpg.320x320px.jpg?e4c", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "laurent57", + "company": "Postman", + "position": "Microcks co-founder, Director of Engineering at Postman Open Technologies", + "name": "Laurent Broudoux", + "about": "Laurent is a Cloud-Native Architecture expert and Enterprise Integration problem lover. He has helped organizations in adopting distributed and cloud paradigms while capitalizing on their critical existing assets. He is the founder and lead developer of the Microcks.io open source project: a Kubernetes-native tool for API mocking and testing. For this, he is using his 10+ years experience as an architect in Financial Services where he defined API transformation strategies, including governance and delivery process.", + "location": "Le Mans, France", + "url": "", + "avatar": "//avatars.sched.co/4/7d/18853523/avatar.jpg.320x320px.jpg?fdb", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "laurinquast", + "company": "The Guild", + "position": "Software Engineer", + "name": "Laurin Quast", + "about": "Laurin Quast is a developer that started exploring GraphQL, by leading API development at a start-up. Realizing that there are still many unsolved problems and challenges within the space, he started contributing to famous JavaScript libraries, such as GraphQL Code Generator and Tools. Diving deeper, the transition into becoming a full-time open-source developer at The Guild was inevitable. Currently, he is working on Hive helping teams scale GraphQL across teams and organizations.", + "location": "", + "url": "https://the-guild.dev/", + "avatar": "//avatars.sched.co/2/a6/18743819/avatar.jpg.320x320px.jpg?ed8", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "ldebruijn", + "company": "bol", + "position": "Tech Lead", + "name": "Lars de Bruijn", + "about": "Lars de Bruijn is a Tech Lead at bol, a leading retail platform operating in The Netherlands and Belgium. Lars is passionate about aligning business strategy with efficient execution, while ensuring the rubber hits the road with his hands-on approach. In his role he is responsible for the customer facing stack of bol, which is where he introduced Federated GraphQL and spearheaded the adoption of GraphQL in the organization.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/4/57/5922948/avatar.jpg.320x320px.jpg?fa5", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "lee_byron.25jvpjmb", + "company": "GraphQL Foundation", + "position": "Co-creator of GraphQL and Director", + "name": "Lee Byron", + "about": "", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/5/24/18743534/avatar.jpg.320x320px.jpg?480", + "socialurls": [], + "~years": [ + 2025 + ], + "~syncedDetailsAt": 1749497416063 + }, + { + "username": "lee_byron.25krdom6", + "company": "GraphQL Foundation", + "position": "Co-creator of GraphQL, Director of the GraphQL Foundation", + "name": "Lee Byron", + "about": "Lee is the co-creator of GraphQL and Executive Director of the GraphQL Foundation. He leads Product Engineering at Watershed building tools to address the climate crisis. Lee has had a hand in open source libraries used by millions of developers worldwide including GraphQL, React, Dataloader, Immutable.js, Relay, Flow and more.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/8/92/18769956/avatar.jpg.320x320px.jpg?547", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "lerenzo", + "company": "Miro", + "position": "Senior Software Engineer", + "name": "LeRenzo Malcom", + "about": "Software engineer at Miro!", + "location": "", + "url": "https://miro.com", + "avatar": "//avatars.sched.co/f/19/5604312/avatar.jpg.320x320px.jpg?db4", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "lyonwj1", + "company": "Neo4j", + "position": "Developer Advocate", + "name": "William Lyon", + "about": "William Lyon is a Staff Developer Advocate at Neo4j, the open source graph database. He previously worked as a software engineer on quantitative finance systems, mobile apps for the real estate industry, and predictive API services. He is the author of the Manning book Full Stack GraphQL Applications and has a masters degree in Computer Science from the University of Montana. You can find him online where he publishes a blog at lyonwj.com", + "location": "San Mateo, CA", + "url": "https://lyonwj.com/", + "avatar": "//avatars.sched.co/5/93/19084292/avatar.jpg.320x320px.jpg?348", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "mahoney.mattj", + "company": "Meta", + "position": "Software Engineer", + "name": "Matthew Mahoney", + "about": "I work on Meta's Mobile GraphQL team.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/c/1d/19314398/avatar.jpg.320x320px.jpg?f73", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "marion84", + "company": "Hasura", + "position": "Head of Developer Education", + "name": "Marion Schleifer", + "about": "I am leading the Developer Education efforts at Hasura, working with the documentation team and the technical evangelists team. I love interacting with and learning from the community to help improve the Hasura product. In my free time, I ride dirt bikes and practice ballet.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/b/cf/19150944/avatar.jpg.320x320px.jpg?418", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "martijn.walraven", + "company": "Apollo", + "position": "Software Engineer at Apollo", + "name": "Martijn Walraven", + "about": "Martijn Walraven lives in Amsterdam and has been with Apollo since the early days of our GraphQL journey. He is one of the co-creators of Apollo Federation. Outside of work, he enjoys volunteering at a primary school and is working towards a degree in gifted education.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/6/33/21066825/avatar.jpg.320x320px.jpg?23a", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "marybriskin", + "company": "Tutored by Teachers", + "position": "Lead Software Engineer", + "name": "Mary Briskin", + "about": "Attended the University of Waterloo. Worked at Shopify and now working at Tutored by Teachers as the Lead Software Engineer. Love using graphQL, love learning from and teaching others!", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/2/3f/21457039/avatar.jpg.320x320px.jpg?7cf", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "masanori.uehara", + "company": "Tailor Inc.", + "position": "Head of Platform", + "name": "Masanori Uehara", + "about": "Masanori is a Head of Platform at Tailor Inc, a Headless ERP Platform. He previously worked as a Backend engineer at Japan's largest C2C Marketplace, Mercari, and joined Tailor in 2023.", + "location": "Tokyo, Japan", + "url": "https://www.tailor.tech/", + "avatar": "//avatars.sched.co/4/fd/21066828/avatar.jpg.320x320px.jpg?b60", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "matt1575", + "company": "Apollo GraphQL", + "position": "CTO + cofounder", + "name": "Matt DeBergalis", + "about": "Matt DeBergalis is the Chief Technology Officer and Co-Founder of Apollo GraphQL, where he is responsible for pioneering the next frontier of the company’s cutting-edge technology. Prior to Apollo, Matt was the co-founder of Meteor Development Group and co-creator of Meteor.js, which grew to become one of the most popular open-source projects in the world for developing full-stack web apps with JavaScript. Matt also founded and is a board member of ActBlue, the largest political fundraising platform in the world that has amassed over 10 billion dollars for candidates and political groups nationwide. He attended the Massachusetts Institute of Technology and resides in the San Francisco Bay Area with his family.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/c/59/7503056/avatar.jpg.320x320px.jpg?f15", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "mauricio.montalvo.guzman", + "company": "Pinterest", + "position": "Senior Software Engineer", + "name": "Mauricio Montalvo", + "about": "I’m a software engineer with 11 years of professional experience, I consider myself full-stack but my career has been focused in Frontend Development in the past years, I love creating web apps using ReactJS & GraphQL. At Pinterest, I’m part of the Web team that’s exploring the adoption of GraphQL in our systems, I’ve been working on this for 2 years now leading a GraphQL migration project since Q3 2023.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/8/d4/21066831/avatar.jpg.320x320px.jpg?a40", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "meenakshi.dhanani1", + "company": "Postman", + "position": "Technical Enablement Architect", + "name": "Meenakshi Dhanani", + "about": "Meenakshi works as a Technical Enablement Architect at Postman, an API platform with over 20 million users. Her team focuses on many API specifications, including GraphQL, gRPC, AsyncAPI, JSON Schema, and OpenAPI. Her current emphasis is on learning about and communicating best practices with GraphQL. Her Google Maps search history includes vegan restaurants and parks nearby.", + "location": "India", + "url": "", + "avatar": "//avatars.sched.co/4/8c/18777983/avatar.jpg.320x320px.jpg?237", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "mgiroux7", + "company": "Netflix", + "position": "Senior Software Developer @ Netflix, Author of Production Ready GraphQL & GraphQL TSC Member", + "name": "Marc-Andre Giroux", + "about": "Marc-André is senior software developer at Netflix. He is the author of the book Production Ready GraphQL and a member of the GraphQL Technical Steering Committee.", + "location": "Montreal, Canada", + "url": "https://productionreadygraphql.com/", + "avatar": "//avatars.sched.co/0/61/9031414/avatar.jpg.320x320px.jpg?b12", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "michael_staib.23xujj9p", + "company": "ChilliCream", + "position": "Michael Staib", + "name": "Michael Staib", + "about": "Michael is a member of the GraphQL technical steering committee, contributing to the GraphQL composite schema specification under the GraphQL Foundation. He is a Microsoft MVP and the author of the Hot Chocolate GraphQL Server for .NET. Michael frequently speaks at conferences and trains professionals in the .NET and GraphQL ecosystems, sharing his expertise and passion for these technologies.\n\nhttps://www.youtube.com/c/ChilliCream", + "location": "Zurich", + "url": "http://chillicream.com", + "avatar": "//avatars.sched.co/a/85/14900031/avatar.jpg.320x320px.jpg?df4", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "michael.bleigh", + "company": "Google", + "position": "Firebase Engineering Lead", + "name": "Michael Bleigh", + "about": "Michael is an engineering lead on the Firebase team at Google and has been building open source tech for the web for more than 15 years. Michael's open source projects have more than 2B downloads and he has presented at conferences including Google I/O, OSCON, and RailsConf. Michael recently led the creation of Firebase Data Connect, a GraphQL-based backend-as-a-service product that helps developers build apps on a PostgreSQL database.", + "location": "Bay Area, CA", + "url": "https://mbleigh.dev", + "avatar": "//avatars.sched.co/d/0b/21066834/avatar.jpg.320x320px.jpg?83f", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "omribruchim", + "company": "Stealth", + "position": "CTO & Co-Founder @ Stealth", + "name": "Omri Bruchim", + "about": "Ex GM @ Wix, Public Speaker, Mostly talk about react, react-native, performance, and scale.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/8/5c/21066837/avatar.jpg.320x320px.jpg?b62", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "pascal.senn", + "company": "ChilliCream", + "position": "Co-Founder of ChilliCream", + "name": "Pascal Senn", + "about": "I'm co-founder of ChilliCream, where we're passionate about advancing the GraphQL ecosystem. We develop and maintain open-source software, actively help and participate in the community, and create tools that help developers to get the most out of their GraphQL APIs.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/f/4e/21066839/avatar.jpg.320x320px.jpg?7e4", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "patrick.arminio", + "company": "Apollo", + "position": "Developer Advocate", + "name": "Patrick Arminio", + "about": "Developer Advocate at Apollo GraphQL, Chair of Python Italia. Creator of Strawberry GraphQL, a python library that makes use of type hints to create GraphQL APIs.", + "location": "London", + "url": "https://patrick.wtf", + "avatar": "//avatars.sched.co/1/ab/19178765/avatar.jpg.320x320px.jpg?bd3", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "plgah", + "company": "Postman", + "position": "AI/Data Lead", + "name": "Pascal Heus", + "about": "Pascal Heus is a seasoned information technologist with extensive expertise in data management and engineering, metadata standards, and related best practices. He has collaborated with numerous data agencies and communities worldwide. His primary focus has been on driving the modernization of data management infrastructure, tooling, and advancing machine actionability and APIs in the field. Pascal brings valuable insights to the forefront of data management, enabling organizations to leverage cutting-edge practices for improved data governance and accessibility.", + "location": "Calgary, Canada", + "url": "https://www.postman.com", + "avatar": "//avatars.sched.co/f/0e/15289322/avatar.jpg.320x320px.jpg?4a4", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "pooja.mistry", + "company": "Postman", + "position": "Developer Advocate", + "name": "Pooja Mistry", + "about": "Pooja Mistry(@poojamakes) is a Developer Advocate at Postman. She is passionate about the intersection of technology and community, and she works to expand the reach of Postman’s API Platform to developers worldwide. Before working at Postman, Pooja led the Partnership Advocacy Program at IBM and worked to build communities around sharing technology insights in the API, APIOps, Integration, and Data and AI space. Pooja loves to learn, teach, and share her knowledge with developers. Along with being a proud plant mom, she strongly believes in helping new technologists get up and running with technology and feel confident in their abilities to make!", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/d/a3/18775745/avatar.jpg.320x320px.jpg?cfc", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "pooja.mistry1", + "company": "", + "position": "", + "name": "Pooja Mistry", + "about": "Pooja Mistry (@poojamakes) is a Developer Advocate at Postman, an API platform with over 30 million users. She is passionate about the intersection of technology and community, working to expand the reach of Postman’s API Platform to developers worldwide. Pooja currently runs the Postman Intergalactic program, a series of Postman educational trainings.Pooja loves to learn, teach, and share her knowledge with developers. Besides being a proud plant mom, she strongly believes in helping new technologists get up and running with technology and feel confident in their abilities.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/1/b4/21225462/avatar.jpg.320x320px.jpg?a43", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "qkw1221", + "company": "Meta", + "position": "Senior Staff Software Engineer at Meta", + "name": "Kewei Qu", + "about": "TBD", + "location": "", + "url": "https://investor.fb.com/home/default.aspx", + "avatar": "//avatars.sched.co/9/1a/18743864/avatar.jpg.320x320px.jpg?7fa", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "rachit_sengupta", + "company": "Intuit", + "position": "Staff Software Engineer", + "name": "Rachit Sengupta", + "about": "Rachit has spent over six years at Intuit, where his work has spanned from building platforms for monetization and AI powered conversation to enhancing user experiences in products like QuickBooks and TurboTax. Currently, he is part of an Applied AI team focusing on the innovative use of Generative AI to boost developer productivity through intelligent tools and methodologies, such as efficient GraphQL attribute discovery and dynamic query generation.\n\nRachit looks forward to connecting with fellow innovators at this conference to exchange insights and discuss the evolving landscape of AI technologies and their applications in improving developer experiences.", + "location": "San Diego", + "url": "", + "avatar": "//avatars.sched.co/7/bc/21066842/avatar.jpg.320x320px.jpg?426", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "rama_palaniappan", + "company": "Intuit", + "position": "Principal Engineer, API Platform Team", + "name": "Rama Palaniappan", + "about": "Rama Palaniappan is a Principal Engineer at Intuit. Rama has extensive experience in building scalable and reliable systems, and has been instrumental in the design and development of Intuit's API pla", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/5/dc/21066845/avatar.jpg.320x320px.jpg?4c4", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "ramnivas.laddad", + "company": "Exograph", + "position": "Co-founder", + "name": "Ramnivas Laddad", + "about": "Ramnivas leads the development of Exograph, a declarative approach to GraphQL backend written in Rust. He has led innovation in Spring Framework and Cloud Foundry since their beginning. Ramnivas is the author of AspectJ in Action, the best-selling book on aspect-oriented programming lauded by industry experts for its practical and innovative approach to real-world problems. He has spoken at leading industry conferences, including JavaOne, ScalaDays, SpringOne, and O'Reilly OSCON.", + "location": "", + "url": "https://exograph.dev", + "avatar": "//avatars.sched.co/6/89/21066848/avatar.jpg.320x320px.jpg?5de", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "robert.balicki", + "company": "Pinterest", + "position": "Staff software engineer", + "name": "Robert Balicki", + "about": "Robert Balicki works as a staff software engineer at Pinterest. He used to have hair down to his shoulders and play in a rock band.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/5/8b/18743858/avatar.jpg.320x320px.jpg?07e", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "robrichard87", + "company": "1stdibs", + "position": "Senior Director, Front-End Engineering", + "name": "Rob Richard", + "about": "Rob is a front-end engineer at 1stDibs, an online marketplace for extraordinary design. He is also a member of the GraphQL Technical Steering committee, where he has been championing the @defer & @stream spec proposal.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/b/cb/21066852/avatar.jpg.320x320px.jpg?cd2", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "ruben.cagnie", + "company": "Toast", + "position": "Senior Principal Engineer at Toast", + "name": "Ruben Cagnie", + "about": "I am based in Boston but originally from Belgium. I have over 20 years of experience in the industry across different roles at startups as established companies. Currently, I am the Technical Design Lead for the customer experience org at Toast. Mainly focused on mobile experiences as well as AI.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/1/37/21066855/avatar.jpg.320x320px.jpg?9fa", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "sabrina.wasserman", + "company": "Meta", + "position": "Software Engineer", + "name": "Sabrina Wasserman", + "about": "GraphQL client-side frameworks software engineer at Meta.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/d/94/21066857/avatar.jpg.320x320px.jpg?49c", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "saihaj", + "company": "", + "position": "", + "name": "Saihajpreet Singh", + "about": "", + "location": "", + "url": "", + "avatar": "", + "socialurls": [], + "~years": [ + 2025 + ], + "~syncedDetailsAt": 1749497416063 + }, + { + "username": "saihajpreet.singh", + "company": "The Guild", + "position": "Software Engineer", + "name": "Saihajpreet Singh", + "about": "I have been deeply involved in the GraphQL community for several years, contributing to key projects like GraphQL-js, GraphQL Code Generator, GraphQL Yoga, and Envelop. With extensive experience in the field, I am passionate about open-source development.", + "location": "", + "url": "https://saihaj.dev", + "avatar": "//avatars.sched.co/d/77/21066858/avatar.jpg.320x320px.jpg?75f", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "sasanders26", + "company": "Highnote", + "position": "Senior Technical Writer", + "name": "Sarah Sanders", + "about": "Sarah is a Senior Technical Writer based in San Francisco, CA. She specializes in API and Developer Documentation and uses her expertise to lead Highnote's GraphQL API Docs efforts.", + "location": "San Francisco, CA", + "url": "", + "avatar": "//avatars.sched.co/4/50/21066861/avatar.jpg.320x320px.jpg?2f0", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "sasha177", + "company": "", + "position": "Staff Software Engineer/Tech Lead", + "name": "Sasha Solomon", + "about": "Sasha is a software engineer and industry expert in schema and data modeling, with experience building APIs and operating them at scale. She was a Staff Software engineer and co-Tech Lead of the Core API Platform Team at Twitter helping build the next generation API with GraphQL and Scala.\n\nShe served on the GraphQL Governing Board as a representative of Twitter, as well as on the Technical Steering Committee (TSC) for GraphQL. She also worked at Medium as the Tech Lead of the Platform Team, jumpstarting Medium's move to GraphQL.", + "location": "Portland, OR", + "url": "sashatsolomon.com", + "avatar": "//avatars.sched.co/e/e5/21336701/avatar.jpg.320x320px.jpg?ae7", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "satish.chitnis", + "company": "Paramount / Pluto TV", + "position": "Principal Architect- Infrastructure", + "name": "Satish Chitnis", + "about": "", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/1/c3/21496512/avatar.jpg.320x320px.jpg?0c2", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "sdk.bens", + "company": "Northeastern University", + "position": "Graduate Researcher", + "name": "Seddik Benaissa", + "about": "Seddik, a software engineer and a researcher in Computer Science & Artificial Intelligence at Northeastern University,  With a love for data and a passion for exploring the world, he has traveled to 58 countries. When he's not immersed in cutting-edge technologies, Seddik can often be found embracing the wonders of nature in national parks, cheering at thrilling sports events, or actively participating in enriching tech summits.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/2/52/18743831/avatar.jpg.320x320px.jpg?746", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "seiyaizumi", + "company": "Tailor Inc.", + "position": "Lead Architect", + "name": "Seiya Izumi", + "about": "Seiya is a Frontend Engineer specializing in developing frontend infrastructure using the Tailor Platform, including SDKs, authentication systems, and design systems. He also leads technical decisions and architecture design for the Japan region. Joined Tailor in November 2022.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/7/bc/21066863/avatar.jpg.320x320px.jpg?c03", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "serhii.korin", + "company": "Booking.com", + "position": "Staff Software Engineer", + "name": "Serhii Korin", + "about": "I’m passionate about technology and adventure. While the former keeps me engaged in the ever-evolving world of innovation, the latter brings me peace through exploring new horizons, hiking in nature, or unwinding by a campfire. I also enjoy intellectual challenges, and in my spare time I love solving puzzles, playing chess and strategic board games.", + "location": "Amsterdam", + "url": "", + "avatar": "//avatars.sched.co/4/6a/19235292/avatar.jpg.320x320px.jpg?3fe", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "shahar_binyamin.24vrzgo4", + "company": "Inigo", + "position": "co-founder and CEO", + "name": "Shahar Binyamin", + "about": "Shahar Binyamin is the CEO and co-founder of Inigo. A software engineer by trade, he has extensive experience working on high-profile enterprise application and security projects. Among his roles, Shahar spent several years within the InfoSec Unit of the Israeli Defense Forces. He has also led product development at Dropbox and Kiteworks, with a focus on ensuring data and API security. Shahar lives in Silicon Valley, where Inigo is headquartered.", + "location": "", + "url": "https://inigo.io/", + "avatar": "//avatars.sched.co/c/b0/17274089/avatar.jpg.320x320px.jpg?cec", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "shashank.gugnani", + "company": "Oracle", + "position": "Software Development Manager", + "name": "Shashank Gugnani", + "about": "I am an engineering manager in the Database Transactions team at Oracle, working on the design and implementation of next-generation Oracle database products. I hold a PhD in Computer Science from The Ohio State University and an undergraduate degree in Computer Science from BITS-Pilani. My research interests are related to storage systems and problems of scale in distributed systems. I have published several papers in top conferences and journals including VLDB, HPDC, SC, IPDPS, and BigData.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/3/e1/21458022/avatar.jpg.320x320px.jpg?bde", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "siva27", + "company": "Intuit", + "position": "Staff Software Engineer", + "name": "Siva Thiru", + "about": "Siva is a staff software engineer on the API Management Platform team at Intuit based in MountainView, CA. He works on building features for API Platform where developers can author, mock, explore and share APIs with other developers. During his free time, he enjoys going on hikes and runs a couple of marathons every year", + "location": "Toronto", + "url": "", + "avatar": "//avatars.sched.co/f/23/9778144/avatar.jpg.320x320px.jpg?422", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "spencer211", + "company": "Okta", + "position": "Software Architect", + "name": "Spencer MacKinnon", + "about": "Spencer has worked on GraphQL at both Microsoft and Salesforce, where he has pushed the boundary of schema construction to, quite frankly, silly levels. He spends his free time sailing and has a fuchsia hexagon tattooed on his ankle. Follow him @smackinnon.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/e/9c/18743795/avatar.jpg.320x320px.jpg?957", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "sspalding2", + "company": "Netflix", + "position": "Engineer", + "name": "Stephen Spalding", + "about": "Stephen is a member of the Edge API team at Netflix and a member of the GraphQL TSC. His team develops and operates the Netflix API platform. This is the nexus point where hundreds of microservices are aggregated into a single API that delivers the Netflix experience for the hundreds of millions of Netflix devices worldwide.", + "location": "", + "url": "http://stephenspalding.com", + "avatar": "//avatars.sched.co/8/08/18743825/avatar.jpg.320x320px.jpg?599", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "stefan239", + "company": "Wundergraph", + "position": "Co-Founder & CCO", + "name": "Stefan Avram", + "about": "Stefan co-founded WunderGraph with Jens Neuse in 2021 and now spearheads growth and success strategies as the Chief Customer Officer.\n\nBefore WunderGraph, Stefan was a software engineer at three late-stage startups all using GraphQL.\n\nStefan is passionate about APIs, GraphQL, helping customers succeed, and building a long term company.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/0/e6/21335795/avatar.jpg.320x320px.jpg?985", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "stephanie.saunders2", + "company": "Coinbase", + "position": "Engineering Manager", + "name": "Stephanie Saunders", + "about": "This year, Stephanie made the switch from Staff Software Engineer to Engineering Manager and hasn’t looked back. She enjoys creating awesome GraphQL DevX, sifting through chaos to find order and reason, (which is an absolute requirement when you have four kids) leading other engineers to be the best they can be, and initiating company-wide culture changes. In her free time, (limited, remember the four kids) you can find her on top of a 14K Colorado peak, or 80ft under the ocean.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/1/65/14992671/avatar.jpg.320x320px.jpg?588", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "suresh_muthu", + "company": "Intuit", + "position": "Principal Engineer", + "name": "Suresh Muthu", + "about": "Suresh is a Principal Engineer at Intuit, where he focuses on the Intuit Data Exchange platform. The Intuit Data Exchange is responsible for acquiring, transforming, enriching, and managing consumer’s financial data from financial institutions across a variety of channels and authorization schemes. He has a passion for FinTech and domain-driven design and modeling APIs while dealing with legacy.", + "location": "", + "url": "https://www.intuit.com/", + "avatar": "//avatars.sched.co/2/29/18743849/avatar.jpg.320x320px.jpg?d1d", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "tanmaig", + "company": "Hasura", + "position": "CEO & Co-Founder", + "name": "Tanmai Gopal", + "about": "Tanmai is the co-founder of Hasura. He is a GPT-4-powered, full-stack, polyglot developer whose areas of interest and work span React, GraphQL, Node.js, Python, Haskell, Docker, Postgres, and Kubernetes. He is passionate about making it easy to build things. Before Hasura, Tanmai ran a consulting firm helping tech-forward enterprises migrate to cloud-native architectures and was the instructor of what became India's largest MOOC imad.tech with over 250,000 students.", + "location": "San Francisco", + "url": "https://hasura.io", + "avatar": "//avatars.sched.co/1/7c/4968006/avatar.jpg.320x320px.jpg?81a", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "theo93", + "company": "Ping Labs", + "position": "CEO, Founder", + "name": "Theo Browne", + "about": "Known primarily for sh*tposting, secondarily for shouting on Youtube, and I guess for code as well. Theo likes full stack web dev and TypeScript a lot. Many think he dislikes GraphQL despite his persistent defense of it. Ask him about RSCs or tRPC if you have a few hours to spare", + "location": "San Francisco", + "url": "t3.gg", + "avatar": "//avatars.sched.co/2/a1/19108367/avatar.jpg.320x320px.jpg?09c", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "thomas.heyenbrock", + "company": "Stellate", + "position": "Software Engineer", + "name": "Thomas Heyenbrock", + "about": "", + "location": "Munich, Germany", + "url": "", + "avatar": "//avatars.sched.co/d/37/14989332/avatar.jpg.320x320px.jpg?9f4", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "tim.hall.engr", + "company": "Postman", + "position": "Technical Lead", + "name": "Tim Hall", + "about": "Tim is a full-stack developer working on GraphQL at Postman, where he's applying what he's learned building backends and frontends with GraphQL to developing Postman's GraphQL client. He's based in Virginia and shares an office with four crazy kids and five wild pets.", + "location": "", + "url": "https://www.postman.com", + "avatar": "//avatars.sched.co/a/76/18743807/avatar.jpg.320x320px.jpg?7e7", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "tristan119", + "company": "Escape", + "position": "Co-founder & CEO", + "name": "Tristan Kalos", + "about": "Co-founder and CEO of Escape - GraphQL Security, the first company that provides developers and security teams the right tooling for building safe, scalable and compliant GraphQL APIs", + "location": "San Francisco, USA", + "url": "https://escape.tech", + "avatar": "//avatars.sched.co/7/08/19011005/avatar.jpg.320x320px.jpg?53c", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "tushar.mathur", + "company": "Tailcall", + "position": "CEO & Founder", + "name": "Tushar Mathur", + "about": "Tushar is the Founder and CEO of Tailcall Inc. Before Tailcall, he was leading engineering at Dream11. He is an avid open-source maintainer and contributor, with an ardent passion for doing functional programming.", + "location": "", + "url": "https://tailcall.run", + "avatar": "//avatars.sched.co/6/97/21066872/avatar.jpg.320x320px.jpg?498", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "twitter7", + "company": "Apollo", + "position": "Staff Software Engineer", + "name": "Alessia Bellisario", + "about": "Alessia is a Staff Open Source Engineer at Apollo GraphQL building Apollo Client. She loves ECMAScript, making generative art with pen plotters and lives in New York City with her wife and son.", + "location": "", + "url": "https://apollographql.com", + "avatar": "//avatars.sched.co/a/c6/18743837/avatar.jpg.320x320px.jpg?847", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "uri_goldshtein.23xujj9a", + "company": "The Guild", + "position": "Founder", + "name": "Uri Goldshtein", + "about": "The Guild, the largest open source group in the GraphQL ecosystem", + "location": "", + "url": "http://the-guild.dev", + "avatar": "//avatars.sched.co/8/2b/14900013/avatar.jpg.320x320px.jpg?9f1", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "vincent.desmares", + "company": "Teamstarter", + "position": "Co-founder & CTO", + "name": "Vincent Desmares", + "about": "While I was Tech lead and Team lead in a startup studio I developed business analytics platforms for Winsight, Apple and Rakuten. I then co-funded Teamstarter, a platform to boost employee initiative taking.", + "location": "Paris, France", + "url": "https://www.teamstarter.com/en", + "avatar": "//avatars.sched.co/d/cc/21066875/avatar.jpg.320x320px.jpg?f80", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "watson17", + "company": "Apollo GraphQL", + "position": "Developer Relations Manager", + "name": "Michael Watson", + "about": "A father first and builder with a passion for polish second. I strive to connect my work with the real world and share my learnings. Whether it's IoT, the cloud, woodworking or now AI, I want to better understand how these pieces can fit together to create new experiences.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/4/84/19024254/avatar.jpg.320x320px.jpg?838", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "yaacovcr", + "company": "Open Source", + "position": "Contributor", + "name": "Yaacov Rydzinski", + "about": "Open source GraphQL contributor interested primarily in executor enhancements, incremental delivery, and schema stitching, not necessarily in that order. Contributor to `graphql-tools`, especially the stitch module, part-time reviewer for `graphql-js`, implementer and re-implementer of incremental, deduplicated, and semi-concurrent GraphQL execution. Author of `value-or-promise`.", + "location": "", + "url": "https://github.com/yaacovCR", + "avatar": "//avatars.sched.co/4/e4/18743840/avatar.jpg.320x320px.jpg?eb9", + "socialurls": [], + "~years": [ + 2023 + ] + }, + { + "username": "yassineldeeb94", + "company": "The Guild", + "position": "Sr. DevTools Engineer", + "name": "Yassin Eldeeb", + "about": "Yassin Eldeeb is a high school dropout with a unique programming background. He got his first client at the age of 15, contributed to JavaScript and Rust open-source ecosystems, and is a volunteering member of https://invisible.institute/beneath-the-surface helping their cause in achieving justice in Chicago. He currently works as an Open Source Devtools Engineer at The Guild. He enjoys adrenaline-fueled activities like Sky Diving, Hiking, and Deep diving.", + "location": "Egypt", + "url": "https://the-guild.dev", + "avatar": "//avatars.sched.co/4/33/18743822/avatar.jpg.320x320px.jpg?230", + "socialurls": [], + "~years": [ + 2024 + ] + }, + { + "username": "yczhu", + "company": "Meta", + "position": "Software Engineer", + "name": "Yuanchao Zhu", + "about": "I am a software engineer at Meta. I work on adopting Relay and GraphQL in Ads Manager incrementally. I enjoy solving hard technical problems and building sustainable frameworks.", + "location": "", + "url": "", + "avatar": "//avatars.sched.co/4/46/18743882/avatar.jpg.320x320px.jpg?6ba", + "socialurls": [], + "~years": [ + 2023 + ] + } +] \ No newline at end of file diff --git a/scripts/sync-sched/sync.ts b/scripts/sync-sched/sync.ts new file mode 100644 index 0000000000..10c7cf8f88 --- /dev/null +++ b/scripts/sync-sched/sync.ts @@ -0,0 +1,414 @@ +#!/usr/bin/env tsx + +import assert from "node:assert" +import { parseArgs } from "node:util" +import { join } from "node:path" +import { readFile, writeFile } from "node:fs/promises" +import pLimit from "p-limit" + +import { + getSchedule, + getSpeakerDetails, + getSpeakers, + RequestContext, +} from "@/app/conf/_api/sched-client" +import type { ConferenceYear, SchedSpeaker } from "@/app/conf/_api/sched-types" + +/** + * Sched API rate limit is 30 requests per minute per token. + * This scripts fires: + * - one request for the entire schedule which overwritten + * - one request for the list of speakers with partial details + * - and N requests for the full details of each speaker + */ +const DEFAULT_SPEAKER_DETAILS_REQUEST_QUOTA = 10 + +const PRINT_UNCHANGED = false + +const unsafeKeys = Object.keys as (obj: T) => Array + +;(async function main() { + try { + const { values } = parseArgs({ + options: { + year: { + type: "string", + short: "y", + }, + quota: { + type: "string", + short: "q", + }, + help: { + type: "boolean", + short: "h", + }, + }, + }) + + if (values.help) { + help() + process.exit(0) + } + + const year = parseInt(values.year || new Date().getFullYear().toString()) + const quota = parseInt( + values.quota || DEFAULT_SPEAKER_DETAILS_REQUEST_QUOTA.toString(), + ) + + console.log(`Syncing schedule for year: ${year}`) + + const token = process.env[`SCHED_ACCESS_TOKEN_${year}`] + assert(token, `SCHED_ACCESS_TOKEN_${year} is not set`) + + await sync(year, quota, token) + } catch (error) { + if (error instanceof Error && error.message.includes("Unknown option")) { + console.error(`Error: ${error.message}`) + help() + process.exit(1) + } + throw error + } +})() + +async function sync(year: number, detailsRequestsQuota: number, token: string) { + const apiUrl = { + 2023: "https://graphqlconf23.sched.com/api", + 2024: "https://graphqlconf2024.sched.com/api", + 2025: "https://graphqlconf2025.sched.com/api", + }[year] + + assert(apiUrl, `API URL for year ${year} not found`) + + const ctx: RequestContext = { apiUrl, token } + + const speakersFilePath = join(import.meta.dirname, "speakers.json") + const scheduleFilePath = join(import.meta.dirname, `schedule-${year}.json`) + + console.log("Getting schedule and speakers list...") + + const schedule = getSchedule(ctx) + const thisYearSpeakers = getSpeakers(ctx) + const existingSchedule = readFile(scheduleFilePath, "utf-8").then(JSON.parse) + const existingSpeakers = readFile(speakersFilePath, "utf-8").then(JSON.parse) + + const scheduleComparison = compare( + await existingSchedule, + await schedule, + "id", + ) + printComparison(scheduleComparison, "sessions", "id") + + const writeSchedule = writeFile( + scheduleFilePath, + JSON.stringify(await schedule, null, 2), + ) + + const speakerComparison = compare( + await existingSpeakers, + await thisYearSpeakers.then(speakers => + speakers.map(s => ({ + ...s, + ["~years"]: [year as ConferenceYear], + })), + ), + "username", + { merge: mergeSpeaker }, + ) + + await updateSpeakerDetails(ctx, speakerComparison, detailsRequestsQuota) + + printComparison(speakerComparison, "speakers", "username", { + // we don't remove speakers + printRemoved: false, + }) + + const updatedSpeakers = [ + ...speakerComparison.removed, + ...speakerComparison.unchanged, + ...speakerComparison.changed.map(change => change.new), + ...speakerComparison.added, + ].sort((a, b) => a.username.localeCompare(b.username)) + + const writeSpeakers = writeFile( + speakersFilePath, + JSON.stringify(updatedSpeakers, null, 2), + ) + + await writeSchedule + await writeSpeakers +} + +async function updateSpeakerDetails( + ctx: RequestContext, + /** mutated in place */ + comparison: Comparison, + quota: number, +) { + const locations = new Map< + string /* username */, + [key: keyof Comparison, index: number] + >() + + for (const key of unsafeKeys(comparison)) { + const items = comparison[key as keyof Comparison] + for (let i = 0; i < items.length; i++) { + let item = items[i] + if (!("username" in item)) item = item.new + locations.set(item.username, [key, i]) + } + } + + const allSpeakers = [ + ...comparison.unchanged, + ...comparison.changed.map(change => change.new), + ...comparison.added, + ] + const byUpdateTime = allSpeakers.sort((a, b) => { + const aTime = a["~syncedDetailsAt"] ?? 0 + const bTime = b["~syncedDetailsAt"] ?? 0 + return aTime - bTime + }) + + const toUpdate = byUpdateTime.slice(0, quota) + + const limit = pLimit(5) + const updated = await Promise.all( + toUpdate.map(speaker => + limit(() => getSpeakerDetails(ctx, speaker.username)), + ), + ) + + for (const speaker of updated) { + const location = locations.get(speaker.username) + if (location) { + const [key, index] = location + if (key === "changed") { + comparison[key][index].new = mergeSpeaker( + comparison[key][index].new, + speaker, + ) + comparison[key][index].new["~syncedDetailsAt"] = Date.now() + } else { + comparison[key][index] = mergeSpeaker(comparison[key][index], speaker) + comparison[key][index]["~syncedDetailsAt"] = Date.now() + } + } + } + + // Re-classify after speaker details update + const actuallyChanged = comparison.changed.filter( + change => !deepStrictEqualWithoutInternals(change.old, change.new), + ) + const nowUnchanged = comparison.changed + .filter(change => deepStrictEqualWithoutInternals(change.old, change.new)) + .map(change => change.old) + + comparison.changed = actuallyChanged + comparison.unchanged.push(...nowUnchanged) +} + +function help() { + return console.log("Usage: tsx sync.ts --year ") +} + +// #region utility + +type Change = { old: T; new: T } +type Comparison = { + added: T[] + removed: T[] + changed: Change[] + unchanged: T[] +} + +function compare( + olds: T[], + news: T[], + key: keyof T, + options: { merge?: (oldItem: T, newItem: T) => T } = {}, +) { + const oldMap = new Map(olds.map(o => [o[key], o])) + const newMap = new Map(news.map(n => [n[key], n])) + + const added: T[] = [] + const removed: T[] = [] + const changed: Change[] = [] + const unchanged: T[] = [] + + for (const newItem of news) { + const oldItem = oldMap.get(newItem[key]) + if (oldItem) { + if (deepStrictEqualWithoutInternals(oldItem, newItem)) { + unchanged.push(oldItem) + } else { + changed.push({ + old: oldItem, + new: options.merge ? options.merge(oldItem, newItem) : newItem, + }) + } + } else { + added.push(newItem) + } + } + + for (const oldItem of olds) { + if (!newMap.has(oldItem[key])) { + removed.push(oldItem) + } + } + + return { added, removed, changed, unchanged } +} + +function printComparison( + comparison: Comparison, + name: string, + key: keyof T, + options: { printRemoved?: boolean } = { printRemoved: true }, +) { + if (comparison.added.length > 0) { + console.log(bold(`${comparison.added.length} ${name} added.`)) + for (const item of comparison.added) { + console.log(green(`+ ${JSON.stringify(item)}`)) + } + } + + if (options.printRemoved) { + if (comparison.removed.length > 0) { + console.log(bold(`${comparison.removed.length} ${name} removed.`)) + for (const item of comparison.removed) { + console.log(red(`- ${JSON.stringify(item)}`)) + } + } + } + + if (comparison.unchanged.length > 0) { + console.log(bold(`${comparison.unchanged.length} ${name} not changed.`)) + if (PRINT_UNCHANGED) { + for (const item of comparison.unchanged) { + console.log(yellow(`{ ${String(key)}: ${item[key]}, ... }`)) + } + } + } + + if (comparison.changed.length > 0) { + console.log(bold(`${comparison.changed.length} ${name} changed.`)) + for (const change of comparison.changed) { + console.log(change.new[key] + "\n", objectDiff(change)) + } + } +} + +function objectDiff(change: Change): string { + const allKeys = [ + ...new Set([...unsafeKeys(change.old), ...unsafeKeys(change.new)]), + ] + .sort() + .filter(key => !String(key).startsWith("~")) + + const diff = allKeys + .map(key => { + const oldValue = change.old[key] + const newValue = change.new[key] + + if (JSON.stringify(oldValue) === JSON.stringify(newValue)) { + return null + } + + return { key, oldValue, newValue } + }) + .filter(x => !!x) + + return diff + .map(diff => { + return `${yellow(String(diff.key))}:\n ${red("-" + JSON.stringify(diff.oldValue))}\n ${green("+" + JSON.stringify(diff.newValue))}` + }) + .join("\n") +} + +function green(text: string) { + return `\x1b[32m${text}\x1b[0m` +} + +function red(text: string) { + return `\x1b[31m${text}\x1b[0m` +} + +function yellow(text: string) { + return `\x1b[33m${text}\x1b[0m` +} + +function bold(text: string) { + return `\x1b[1m${text}\x1b[0m` +} + +function deepStrictEqualWithoutInternals(a: unknown, b: unknown): boolean { + if (a === b) return true + + if (a === null || b === null || a === undefined || b === undefined) { + return a === b + } + + if (typeof a !== typeof b) return false + + if (typeof a !== "object") return false + + if (Array.isArray(a) !== Array.isArray(b)) return false + + if (Array.isArray(a) && Array.isArray(b)) { + if (a.length !== b.length) return false + + for (let i = 0; i < a.length; i++) { + if (!deepStrictEqualWithoutInternals(a[i], b[i])) { + return false + } + } + return true + } + + const aObj = a as Record + const bObj = b as Record + + const aKeys = Object.keys(aObj).filter(key => !key.startsWith("~")) + const bKeys = Object.keys(bObj).filter(key => !key.startsWith("~")) + + if (aKeys.length !== bKeys.length) return false + + aKeys.sort() + bKeys.sort() + + for (const key of aKeys) { + if (!deepStrictEqualWithoutInternals(aObj[key], bObj[key])) { + return false + } + } + + return true +} + +/** + * Merges speaker data from API with existing local data, + * preserving important local fields when API returns empty values. + */ +function mergeSpeaker( + oldSpeaker: SchedSpeaker, + newSpeaker: SchedSpeaker, +): SchedSpeaker { + return { + ...oldSpeaker, + ...newSpeaker, + socialurls: newSpeaker.socialurls?.length + ? newSpeaker.socialurls + : oldSpeaker.socialurls, + ["~years"]: [ + ...new Set([ + ...(oldSpeaker["~years"] || []), + ...(newSpeaker["~years"] || []), + ]), + ].sort(), + } +} + +// #endregion utility diff --git a/src/app/conf/2023/_data.ts b/src/app/conf/2023/_data.ts index 55e10bdab8..ced52d8c12 100644 --- a/src/app/conf/2023/_data.ts +++ b/src/app/conf/2023/_data.ts @@ -1,84 +1,7 @@ import "server-only" -import { stripHtml } from "string-strip-html" -import { SchedSpeaker, ScheduleSession } from "@/app/conf/2023/types" -import pLimit from "p-limit" -async function fetchData(url: string): Promise { - try { - const response = await fetch(url, { - method: "POST", - headers: { - "Content-Type": "application/json", - "User-Agent": "GraphQL Conf / GraphQL Foundation", - }, - }) - const data = await response.json() - return data - } catch (error) { - throw new Error( - `Error fetching data from ${url}: ${(error as Error).message || (error as Error).toString()}`, - ) - } -} +import { SchedSpeaker, ScheduleSession } from "../_api/sched-types" +import { readSpeakers } from "../_api/sched-data" -const token = process.env.SCHED_ACCESS_TOKEN_2023 - -async function getUsernames(): Promise { - const response = await fetchData<{ username: string }[]>( - `https://graphqlconf23.sched.com/api/user/list?api_key=${token}&format=json&fields=username`, - ) - return response.map(user => user.username) -} - -const limit = pLimit(40) // rate limit is 30req/min - -async function getSpeakers(): Promise { - const usernames = await getUsernames() - - const users = await Promise.all( - usernames.map(username => - limit(() => { - return fetchData( - `https://graphqlconf23.sched.com/api/user/get?api_key=${token}&by=username&term=${username}&format=json&fields=username,company,position,name,about,location,url,avatar,role,socialurls`, - ) - }), - ), - ) - - const result = users - .filter(speaker => speaker.role.includes("speaker")) - .map(user => { - return { - ...user, - about: stripHtml(user.about).result, - } - }) - - return result -} - -async function getSchedule(): Promise { - const sessions = await fetchData( - `https://graphqlconf23.sched.com/api/session/export?api_key=${token}&format=json`, - ) - - const result = sessions.map(session => { - const { description } = session - if (description?.includes("<")) { - // console.log(`Found HTML element in about field for session "${session.name}"`) - } - - return { - ...session, - description: description && stripHtml(description).result, - } - }) - - return result -} - -// @ts-expect-error -- fixme -export const speakers = await getSpeakers() - -// @ts-expect-error -- fixme -export const schedule = await getSchedule() +export const schedule: ScheduleSession[] = require("../../../../scripts/sync-sched/schedule-2023.json") +export const speakers: SchedSpeaker[] = readSpeakers(2023) diff --git a/src/app/conf/2024/_data.ts b/src/app/conf/2024/_data.ts index e172f3e519..289c003006 100644 --- a/src/app/conf/2024/_data.ts +++ b/src/app/conf/2024/_data.ts @@ -1,84 +1,7 @@ import "server-only" -import { stripHtml } from "string-strip-html" -import { SchedSpeaker, ScheduleSession } from "@/app/conf/2023/types" -import pLimit from "p-limit" -async function fetchData(url: string): Promise { - try { - const response = await fetch(url, { - method: "POST", - headers: { - "Content-Type": "application/json", - "User-Agent": "GraphQL Conf / GraphQL Foundation", - }, - }) - const data = await response.json() - return data - } catch (error) { - throw new Error( - `Error fetching data from ${url}: ${(error as Error).message || (error as Error).toString()}`, - ) - } -} +import { SchedSpeaker, ScheduleSession } from "../_api/sched-types" +import { readSpeakers } from "../_api/sched-data" -const token = process.env.SCHED_ACCESS_TOKEN_2024 - -async function getUsernames(): Promise { - const response = await fetchData<{ username: string }[]>( - `https://graphqlconf2024.sched.com/api/user/list?api_key=${token}&format=json&fields=username`, - ) - return response.map(user => user.username) -} - -const limit = pLimit(40) // rate limit is 30req/min - -async function getSpeakers(): Promise { - const usernames = await getUsernames() - - const users = await Promise.all( - usernames.map(username => - limit(() => { - return fetchData( - `https://graphqlconf2024.sched.com/api/user/get?api_key=${token}&by=username&term=${username}&format=json&fields=username,company,position,name,about,location,url,avatar,role,socialurls`, - ) - }), - ), - ) - - const result = users - .filter(speaker => speaker.role.includes("speaker")) - .map(user => { - return { - ...user, - about: stripHtml(user.about).result, - } - }) - - return result -} - -async function getSchedule(): Promise { - const sessions = await fetchData( - `https://graphqlconf2024.sched.com/api/session/export?api_key=${token}&format=json`, - ) - - const result = sessions.map(session => { - const { description } = session - if (description?.includes("<")) { - // console.log(`Found HTML element in about field for session "${session.name}"`) - } - - return { - ...session, - description: description && stripHtml(description).result, - } - }) - - return result -} - -// @ts-expect-error -- fixme -export const speakers = await getSpeakers() - -// @ts-expect-error -- fixme -export const schedule = await getSchedule() +export const schedule: ScheduleSession[] = require("../../../../scripts/sync-sched/schedule-2024.json") +export const speakers: SchedSpeaker[] = readSpeakers(2024) diff --git a/src/app/conf/2025/_data.ts b/src/app/conf/2025/_data.ts new file mode 100644 index 0000000000..6a05ec29c5 --- /dev/null +++ b/src/app/conf/2025/_data.ts @@ -0,0 +1,21 @@ +import "server-only" + +import { SchedSpeaker, ScheduleSession } from "@/app/conf/2023/types" +import { readSpeakers } from "../_api/sched-data" + +export const schedule: ScheduleSession[] = require("../../../../scripts/sync-sched/schedule-2025.json") +export const speakers: SchedSpeaker[] = readSpeakers(2025) + +type SpeakerUsername = SchedSpeaker["username"] + +export const speakerSessions = new Map() + +for (const session of schedule) { + for (const speaker of session.speakers || []) { + if (!speakerSessions.has(speaker.username)) { + speakerSessions.set(speaker.username, []) + } + + speakerSessions.get(speaker.username)!.push(session) + } +} diff --git a/src/app/conf/2025/_videos.ts b/src/app/conf/2025/_videos.ts new file mode 100644 index 0000000000..e8b9f74c8b --- /dev/null +++ b/src/app/conf/2025/_videos.ts @@ -0,0 +1,10 @@ +export const videos: { + id: string + title: string +}[] = [ + // temporary + { + id: "fA81OFu9BVY", + title: `Top 10 GraphQL Security Checks for Every Developer - Ankita Gupta, Ankush Jain - Akto.io`, + }, +] diff --git a/src/app/conf/_api/sched-client.tsx b/src/app/conf/_api/sched-client.tsx new file mode 100644 index 0000000000..37e760f104 --- /dev/null +++ b/src/app/conf/_api/sched-client.tsx @@ -0,0 +1,194 @@ +import { stripHtml } from "string-strip-html" + +import { SchedSpeaker, ScheduleSession } from "./sched-types" + +/** + * Sched's API has a rate limit of 30 requests per minute. + */ +let rateLimitResetAt: number | null = null + +type RequestURL = string +type RequestPending = Promise +type RequestSuccess = "ok" +type RequestError = Error + +const requestsRetried = new Map< + RequestURL, + RequestPending | RequestSuccess | RequestError +>() + +export type RequestContext = { + apiUrl: string + token: string +} + +export async function fetchSchedData( + ctx: RequestContext, + path: string, + searchParams: Record = {}, +): Promise { + const url = new URL(ctx.apiUrl + path) + const search = new URLSearchParams(searchParams) + search.set("api_key", ctx.token) + search.set("format", "json") + url.search = search.toString() + + try { + if (rateLimitResetAt && Date.now() < rateLimitResetAt) { + const wait = rateLimitResetAt - Date.now() + await new Promise(resolve => setTimeout(resolve, wait)) + } + + const response = await fetch(url, { + method: "POST", + headers: { + "Content-Type": "application/json", + "User-Agent": "GraphQL Conf / GraphQL Foundation", + }, + cache: "force-cache", + }) + + // Take note that this is feasible only because + // we're currently only using this API at build time. + if (response.status === 429) { + let wait = 60_000 + const xRateLimitResetAt = response.headers.get("x-rate-limit-reset-at") + if (xRateLimitResetAt) { + rateLimitResetAt = Number(xRateLimitResetAt) * 1000 + console.warn( + `Rate limit reset at ${new Date(rateLimitResetAt).toISOString()}`, + ) + wait = rateLimitResetAt - Date.now() + } + + const later = Promise.withResolvers() + requestsRetried.set(url.toString(), later.promise) + const queueSize = requestsRetried.size + + console.warn( + `Rate limit exceeded, retrying in ${Math.round(wait / 1000)}s: ${url} (queue size: ${queueSize})`, + ) + + const size = Object.entries(requestsRetried).filter( + ([_, status]) => status instanceof Promise, + ).length + + console.warn(`${size} requests retrying...`) + + setTimeout( + () => + later.resolve( + fetchSchedData(ctx, path, searchParams).then(data => { + rateLimitResetAt = null + requestsRetried.set(url.toString(), "ok") + return data + }), + ), + wait, + ) + + return later.promise + } + + const data = await response.json() + return data + } catch (e) { + const error = e instanceof Error ? e : new Error(String(e)) + requestsRetried.set(url.toString(), error) + + throw new Error( + `Error fetching data from ${url}: ${(error as Error).message || (error as Error).toString()}`, + ) + } +} + +export async function getSchedule( + ctx: RequestContext, +): Promise { + const sessions = (await fetchSchedData( + ctx, + "/session/export", + )) as ScheduleSession[] + + const result = sessions.map(session => { + const { description } = session + + return { + ...session, + description: preprocessDescription(description), + } + }) + + return result +} + +const SPEAKER_FIELDS = + "username,company,position,name,about,location,url,avatar,role,socialurls" + +// We receive this fields despite the fact we don't ask for them. +const SPEAKER_IGNORED_FIELDS = ["plusones", "tickets"] + +export async function getSpeakers( + ctx: RequestContext, +): Promise { + const users = (await fetchSchedData(ctx, "/user/list", { + fields: SPEAKER_FIELDS, + })) as SchedSpeaker[] + + const result = users + .filter(speaker => speaker.role?.includes("speaker")) + .map(shapeSpeaker) + .sort((a, b) => { + if (a.avatar && !b.avatar) return -1 + if (!a.avatar && b.avatar) return 1 + return 0 + }) + + return result +} + +/** + * `/user/list` is insufficient, as it does not return `socialurls` nor any other custom fields + */ +export async function getSpeakerDetails( + ctx: RequestContext, + username: string, +): Promise { + const data = await fetchSchedData(ctx, "/user/get", { + by: "username", + term: username, + fields: SPEAKER_FIELDS, + }) + + return shapeSpeaker(data as SchedSpeaker) +} + +function preprocessDescription(description: string | undefined | null): string { + let res = description || "" + + // we respect manual line breaks + res = res.replace(//g, "\n") + + // respecting
  • and tags doesn't make sense, because speakers don't use them consistently + // we'll improve how the descriptions look later down the tree in the session details page + return stripHtml(res).result +} + +function shapeSpeaker(user: SchedSpeaker): SchedSpeaker { + const res = { + ...user, + socialurls: user.socialurls || [], + about: preprocessDescription(user.about), + } + + for (const field of SPEAKER_IGNORED_FIELDS) { + delete res[field as keyof typeof res] + } + delete res.role + + if (res.avatar?.startsWith("http://")) { + res.avatar = res.avatar.slice(5) + } + + return res +} diff --git a/src/app/conf/_api/sched-data.tsx b/src/app/conf/_api/sched-data.tsx new file mode 100644 index 0000000000..e9111a7b7a --- /dev/null +++ b/src/app/conf/_api/sched-data.tsx @@ -0,0 +1,20 @@ +import { ConferenceYear, SchedSpeaker } from "./sched-types" + +const allSpeakers: SchedSpeaker[] = require("../../../../scripts/sync-sched/speakers.json") + +export function readSpeakers(year: ConferenceYear): SchedSpeaker[] { + return ( + allSpeakers + .filter(speaker => speaker["~years"].includes(year)) + .sort((a, b) => a.name.localeCompare(b.name)) + // show speakers without avatars last + .sort((a, b) => { + if (a.avatar && !b.avatar) return -1 + if (!a.avatar && b.avatar) return 1 + return 0 + }) + ) +} + +// TODO: We need to be able to say that a speaker is returning even if they don't share username, only first name and last name. +// But this needs to be done without adding to `~years` so we don't show duplicates. diff --git a/src/app/conf/_api/sched-types.ts b/src/app/conf/_api/sched-types.ts new file mode 100644 index 0000000000..37332d53f9 --- /dev/null +++ b/src/app/conf/_api/sched-types.ts @@ -0,0 +1,31 @@ +export type ScheduleSession = { + id: string + audience: string + description: string + event_end: string + event_start: string + event_subtype: string + event_type: string + name: string + venue: string + speakers?: SchedSpeaker[] + files?: { name: string; path: string }[] +} + +export type SchedSpeaker = { + username: string + name: string + about: string + company?: string + position?: string + avatar?: string + url?: string + role?: string + location?: string + socialurls: { service: string; url: string }[] + /* unix timestamp */ + ["~syncedDetailsAt"]?: number + ["~years"]: ConferenceYear[] +} + +export type ConferenceYear = 2025 | 2024 | 2023 diff --git a/src/get-github-info.ts b/src/get-github-info.ts index f52e6c53e2..48cf01e237 100644 --- a/src/get-github-info.ts +++ b/src/get-github-info.ts @@ -8,7 +8,6 @@ async function main() { const githubStats: Record = {} - // @ts-expect-error for (const [index, filePath] of filePaths.entries()) { const content = await fs.readFile(filePath, "utf8") const { data } = grayMatter(content) diff --git a/src/github-stats.json b/src/github-stats.json index 0967ef424b..9e26dfeeb6 100644 --- a/src/github-stats.json +++ b/src/github-stats.json @@ -1 +1 @@ -{} +{} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 15907800de..8129519fd7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es5", + "target": "ES2024", "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, From 8c7bf7bfab11f04921fbf5b16e0ff9e53e51edf4 Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Mon, 9 Jun 2025 22:44:10 +0200 Subject: [PATCH 02/13] Fix type errors --- .gitignore | 2 ++ src/app/conf/2023/speakers/page.tsx | 4 +-- src/app/conf/2023/types.d.ts | 28 +------------------ src/app/conf/2024/speakers/page.tsx | 4 +-- src/app/conf/_components/speakers/speaker.tsx | 13 ++++++--- 5 files changed, 16 insertions(+), 35 deletions(-) diff --git a/.gitignore b/.gitignore index 8285bab4c3..2d422a0b51 100644 --- a/.gitignore +++ b/.gitignore @@ -61,3 +61,5 @@ src/__generated__/ .next/ public/sitemap.xml out/ + +tsconfig.tsbuildinfo diff --git a/src/app/conf/2023/speakers/page.tsx b/src/app/conf/2023/speakers/page.tsx index c89589d877..c4f098a98f 100644 --- a/src/app/conf/2023/speakers/page.tsx +++ b/src/app/conf/2023/speakers/page.tsx @@ -10,7 +10,7 @@ export default function Page() { return ( <>
    -
    +

    GraphQLConf 2023 Speakers

    Meet the unique lineup of insightful speakers we've carefully @@ -22,7 +22,7 @@ export default function Page() {

    {speakers.map(speaker => ( - + ))}
    diff --git a/src/app/conf/2023/types.d.ts b/src/app/conf/2023/types.d.ts index 3ced63c4ad..6d3be512cd 100644 --- a/src/app/conf/2023/types.d.ts +++ b/src/app/conf/2023/types.d.ts @@ -1,27 +1 @@ -export type ScheduleSession = { - id: string - audience: string - description: string - event_end: string - event_start: string - event_subtype: string - event_type: string - name: string - venue: string - speakers?: SchedSpeaker[] - files?: { name: string; path: string }[] -} - -export type SchedSpeaker = { - username: string - name: string - about: string - company?: string - position?: string - avatar?: string - url?: string - role: string - location?: string - socialurls: { service: string; url: string }[] - year: "2024" | "2023" -} +export * from "../_api/sched-types" diff --git a/src/app/conf/2024/speakers/page.tsx b/src/app/conf/2024/speakers/page.tsx index 343e76f6de..742fe5246c 100644 --- a/src/app/conf/2024/speakers/page.tsx +++ b/src/app/conf/2024/speakers/page.tsx @@ -10,7 +10,7 @@ export default function Page() { return (
    -
    +

    GraphQLConf 2024 Speakers

    Meet the unique lineup of insightful speakers we've carefully @@ -22,7 +22,7 @@ export default function Page() {

    {speakers.map(speaker => ( - + ))}
    diff --git a/src/app/conf/_components/speakers/speaker.tsx b/src/app/conf/_components/speakers/speaker.tsx index 457ccaad10..1c267e151b 100644 --- a/src/app/conf/_components/speakers/speaker.tsx +++ b/src/app/conf/_components/speakers/speaker.tsx @@ -1,7 +1,12 @@ -import { Avatar } from "./avatar" -import { SocialMediaIcon, SocialMediaIconServiceType } from "./social-media" -import { SchedSpeaker } from "@/app/conf/2023/types" import NextLink from "next/link" +import { ConferenceYear, SchedSpeaker } from "@/app/conf/_api/sched-types" + +import { SocialMediaIcon, SocialMediaIconServiceType } from "./social-media" +import { Avatar } from "./avatar" + +export interface SpeakerProps extends SchedSpeaker { + year: ConferenceYear +} export function Speaker({ name, @@ -11,7 +16,7 @@ export function Speaker({ username, socialurls, year, -}: SchedSpeaker) { +}: SpeakerProps) { return (
    From 894dda37c9c4eb82fc97927b5cfef47fce5e3108 Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Mon, 9 Jun 2025 22:44:44 +0200 Subject: [PATCH 03/13] Fix type errors --- scripts/sync-sched/schedule-2024.json | 196 +++++++++++++------------- scripts/sync-sched/speakers.json | 62 ++++++-- 2 files changed, 146 insertions(+), 112 deletions(-) diff --git a/scripts/sync-sched/schedule-2024.json b/scripts/sync-sched/schedule-2024.json index 3a4ba518ac..0968efd88c 100644 --- a/scripts/sync-sched/schedule-2024.json +++ b/scripts/sync-sched/schedule-2024.json @@ -32,7 +32,7 @@ "start_time_ts": 1725915600, "end_date": "2024-09-09", "end_time": "17:00:00", - "event_type_sort": "12", + "event_type_sort": 12, "description": "" }, { @@ -68,7 +68,7 @@ "start_time_ts": 1725980400, "end_date": "2024-09-10", "end_time": "19:00:00", - "event_type_sort": "12", + "event_type_sort": 12, "description": "" }, { @@ -114,7 +114,7 @@ "start_time_ts": 1725984000, "end_date": "2024-09-10", "end_time": "09:15:00", - "event_type_sort": "11", + "event_type_sort": 11, "description": "" }, { @@ -162,7 +162,7 @@ "start_time_ts": 1725984900, "end_date": "2024-09-10", "end_time": "09:25:00", - "event_type_sort": "11" + "event_type_sort": 11 }, { "event_key": "706606", @@ -207,7 +207,7 @@ "start_time_ts": 1725985800, "end_date": "2024-09-10", "end_time": "09:40:00", - "event_type_sort": "11", + "event_type_sort": 11, "description": "" }, { @@ -255,7 +255,7 @@ "start_time_ts": 1725986400, "end_date": "2024-09-10", "end_time": "09:55:00", - "event_type_sort": "11" + "event_type_sort": 11 }, { "event_key": "13", @@ -335,7 +335,7 @@ "start_time_ts": 1725987300, "end_date": "2024-09-10", "end_time": "10:25:00", - "event_type_sort": "11", + "event_type_sort": 11, "description": "" }, { @@ -381,7 +381,7 @@ "start_time_ts": 1725989100, "end_date": "2024-09-10", "end_time": "10:30:00", - "event_type_sort": "11", + "event_type_sort": 11, "description": "" }, { @@ -417,7 +417,7 @@ "start_time_ts": 1725989400, "end_date": "2024-09-10", "end_time": "11:00:00", - "event_type_sort": "3", + "event_type_sort": 3, "description": "" }, { @@ -454,7 +454,7 @@ "start_time_ts": 1725989400, "end_date": "2024-09-10", "end_time": "19:00:00", - "event_type_sort": "14" + "event_type_sort": 14 }, { "event_key": "706622", @@ -500,7 +500,7 @@ "start_time_ts": 1725991200, "end_date": "2024-09-10", "end_time": "11:30:00", - "event_type_sort": "1", + "event_type_sort": 1, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/20/GraphQL Conf 2024.pdf", @@ -561,7 +561,7 @@ "start_time_ts": 1725991200, "end_date": "2024-09-10", "end_time": "11:30:00", - "event_type_sort": "2", + "event_type_sort": 2, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/3f/200_Is_Not_OK.pptx.pdf", @@ -615,7 +615,7 @@ "start_time_ts": 1725991200, "end_date": "2024-09-10", "end_time": "11:30:00", - "event_type_sort": "7", + "event_type_sort": 7, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/85/BellisarioGraphQLConf2024.pdf", @@ -676,7 +676,7 @@ "start_time_ts": 1725991200, "end_date": "2024-09-10", "end_time": "11:30:00", - "event_type_sort": "8", + "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/48/Converging EPG architectures with the help of GraphQL - Journey, Challenges and Solutions.pdf", @@ -730,7 +730,7 @@ "start_time_ts": 1725993600, "end_date": "2024-09-10", "end_time": "12:10:00", - "event_type_sort": "2", + "event_type_sort": 2, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/f5/graphql-edge-webassembly-ramnivas-laddad.pdf", @@ -784,7 +784,7 @@ "start_time_ts": 1725993600, "end_date": "2024-09-10", "end_time": "12:10:00", - "event_type_sort": "6" + "event_type_sort": 6 }, { "event_key": "696986", @@ -832,7 +832,7 @@ "start_time_ts": 1725993600, "end_date": "2024-09-10", "end_time": "12:10:00", - "event_type_sort": "7", + "event_type_sort": 7, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/7c/GraphQL Talk Mary Briskin.pdf", @@ -886,7 +886,7 @@ "start_time_ts": 1725993600, "end_date": "2024-09-10", "end_time": "12:10:00", - "event_type_sort": "8", + "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/55/Incrementally Adopting GraphQL and Relay at Pinterest - Mauricio Montalvo.pdf", @@ -927,7 +927,7 @@ "start_time_ts": 1725995400, "end_date": "2024-09-10", "end_time": "13:30:00", - "event_type_sort": "3", + "event_type_sort": 3, "description": "" }, { @@ -976,7 +976,7 @@ "start_time_ts": 1726000200, "end_date": "2024-09-10", "end_time": "14:00:00", - "event_type_sort": "2" + "event_type_sort": 2 }, { "event_key": "692359", @@ -1025,7 +1025,7 @@ "start_time_ts": 1726000200, "end_date": "2024-09-10", "end_time": "13:40:00", - "event_type_sort": "6", + "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/b5/graphql-conf2024-talk.pdf", @@ -1077,7 +1077,7 @@ "start_time_ts": 1726000200, "end_date": "2024-09-10", "end_time": "14:00:00", - "event_type_sort": "7", + "event_type_sort": 7, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/17/GraphQLServerComponentsRoyDerks.pdf", @@ -1138,7 +1138,7 @@ "start_time_ts": 1726000200, "end_date": "2024-09-10", "end_time": "14:00:00", - "event_type_sort": "8", + "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/96/Building a Serverless GraphQL Subscription Gateway.pdf", @@ -1192,7 +1192,7 @@ "start_time_ts": 1726001400, "end_date": "2024-09-10", "end_time": "14:00:00", - "event_type_sort": "8", + "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/be/compiler-techniques-graphqlconf2024.pdf", @@ -1247,7 +1247,7 @@ "start_time_ts": 1726002600, "end_date": "2024-09-10", "end_time": "14:40:00", - "event_type_sort": "2", + "event_type_sort": 2, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/cd/In.Memory.of.Travails.pptx", @@ -1301,7 +1301,7 @@ "start_time_ts": 1726002600, "end_date": "2024-09-10", "end_time": "14:40:00", - "event_type_sort": "6" + "event_type_sort": 6 }, { "event_key": "691185", @@ -1349,7 +1349,7 @@ "start_time_ts": 1726002600, "end_date": "2024-09-10", "end_time": "14:40:00", - "event_type_sort": "7", + "event_type_sort": 7, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/58/[GraphQLConf 2024] Championing the GraphQL Client in a Modern Platform.pdf", @@ -1403,7 +1403,7 @@ "start_time_ts": 1726002600, "end_date": "2024-09-10", "end_time": "14:40:00", - "event_type_sort": "8", + "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/70/Declarative Pagination.pdf", @@ -1457,7 +1457,7 @@ "start_time_ts": 1726005000, "end_date": "2024-09-10", "end_time": "15:20:00", - "event_type_sort": "1" + "event_type_sort": 1 }, { "event_key": "697562", @@ -1505,7 +1505,7 @@ "start_time_ts": 1726005000, "end_date": "2024-09-10", "end_time": "15:20:00", - "event_type_sort": "5", + "event_type_sort": 5, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/2a/GraphQL is for Client Developers, not Client Apps.pdf", @@ -1566,7 +1566,7 @@ "start_time_ts": 1726005000, "end_date": "2024-09-10", "end_time": "15:20:00", - "event_type_sort": "8", + "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/13/GraphQLConf24-presentation.pdf", @@ -1620,7 +1620,7 @@ "start_time_ts": 1726005000, "end_date": "2024-09-10", "end_time": "15:00:00", - "event_type_sort": "13", + "event_type_sort": 13, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/c7/GraphQL Conference 2024_ Improve Application Performance and User Engagement with Advanced GraphQL features.pdf", @@ -1674,7 +1674,7 @@ "start_time_ts": 1726005900, "end_date": "2024-09-10", "end_time": "15:15:00", - "event_type_sort": "5", + "event_type_sort": 5, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/47/GraphQL and Newcomers - 202240910 0848.pdf", @@ -1715,7 +1715,7 @@ "start_time_ts": 1726006800, "end_date": "2024-09-10", "end_time": "15:40:00", - "event_type_sort": "3", + "event_type_sort": 3, "description": "" }, { @@ -1764,7 +1764,7 @@ "start_time_ts": 1726008000, "end_date": "2024-09-10", "end_time": "16:10:00", - "event_type_sort": "4", + "event_type_sort": 4, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/22/GraphQLConf.pdf", @@ -1817,7 +1817,7 @@ "start_time_ts": 1726008000, "end_date": "2024-09-10", "end_time": "16:10:00", - "event_type_sort": "4" + "event_type_sort": 4 }, { "event_key": "699211", @@ -1865,7 +1865,7 @@ "start_time_ts": 1726010400, "end_date": "2024-09-10", "end_time": "16:50:00", - "event_type_sort": "7", + "event_type_sort": 7, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/0c/ConsumingGraphQL.key", @@ -1919,7 +1919,7 @@ "start_time_ts": 1726010400, "end_date": "2024-09-10", "end_time": "16:50:00", - "event_type_sort": "13", + "event_type_sort": 13, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/3c/slides.pdf", @@ -1974,7 +1974,7 @@ "start_time_ts": 1726012800, "end_date": "2024-09-10", "end_time": "17:30:00", - "event_type_sort": "6", + "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/1b/GraphQL Federation in the Wild.pdf", @@ -2028,7 +2028,7 @@ "start_time_ts": 1726012800, "end_date": "2024-09-10", "end_time": "17:30:00", - "event_type_sort": "7", + "event_type_sort": 7, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/c0/GraphQLConf 2024 - Relay Error Handling and @catch (7).pdf", @@ -2069,7 +2069,7 @@ "start_time_ts": 1726014600, "end_date": "2024-09-10", "end_time": "19:00:00", - "event_type_sort": "3", + "event_type_sort": 3, "description": "" }, { @@ -2105,7 +2105,7 @@ "start_time_ts": 1726066800, "end_date": "2024-09-11", "end_time": "17:00:00", - "event_type_sort": "12", + "event_type_sort": 12, "description": "" }, { @@ -2150,7 +2150,7 @@ "start_time_ts": 1726070400, "end_date": "2024-09-11", "end_time": "09:05:00", - "event_type_sort": "11", + "event_type_sort": 11, "description": "" }, { @@ -2197,7 +2197,7 @@ "start_time_ts": 1726070700, "end_date": "2024-09-11", "end_time": "09:25:00", - "event_type_sort": "11" + "event_type_sort": 11 }, { "event_key": "706613", @@ -2244,7 +2244,7 @@ "start_time_ts": 1726071900, "end_date": "2024-09-11", "end_time": "09:35:00", - "event_type_sort": "11" + "event_type_sort": 11 }, { "event_key": "693038", @@ -2291,7 +2291,7 @@ "start_time_ts": 1726072500, "end_date": "2024-09-11", "end_time": "09:55:00", - "event_type_sort": "11" + "event_type_sort": 11 }, { "event_key": "706619", @@ -2337,7 +2337,7 @@ "start_time_ts": 1726073700, "end_date": "2024-09-11", "end_time": "10:05:00", - "event_type_sort": "11" + "event_type_sort": 11 }, { "event_key": "706630", @@ -2383,7 +2383,7 @@ "start_time_ts": 1726074300, "end_date": "2024-09-11", "end_time": "10:15:00", - "event_type_sort": "11" + "event_type_sort": 11 }, { "event_key": "14", @@ -2427,7 +2427,7 @@ "start_time_ts": 1726075200, "end_date": "2024-09-11", "end_time": "10:30:00", - "event_type_sort": "11", + "event_type_sort": 11, "description": "" }, { @@ -2463,7 +2463,7 @@ "start_time_ts": 1726075800, "end_date": "2024-09-11", "end_time": "11:00:00", - "event_type_sort": "3", + "event_type_sort": 3, "description": "" }, { @@ -2500,7 +2500,7 @@ "start_time_ts": 1726075800, "end_date": "2024-09-11", "end_time": "17:00:00", - "event_type_sort": "14" + "event_type_sort": 14 }, { "event_key": "706597", @@ -2548,7 +2548,7 @@ "start_time_ts": 1726077600, "end_date": "2024-09-11", "end_time": "11:30:00", - "event_type_sort": "2", + "event_type_sort": 2, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/e0/Implementation-First-GraphQL Conf 2024.pdf", @@ -2609,7 +2609,7 @@ "start_time_ts": 1726077600, "end_date": "2024-09-11", "end_time": "11:30:00", - "event_type_sort": "5", + "event_type_sort": 5, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/9b/GraphQLConf_2024_PPT.pptx.pdf", @@ -2664,7 +2664,7 @@ "start_time_ts": 1726077600, "end_date": "2024-09-11", "end_time": "11:30:00", - "event_type_sort": "8", + "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/e1/GraphQLConf-2024-v5-pdf.pdf", @@ -2718,7 +2718,7 @@ "start_time_ts": 1726077600, "end_date": "2024-09-11", "end_time": "11:30:00", - "event_type_sort": "10", + "event_type_sort": 10, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/64/Defer and Stream GraphQL Conf 2024.pdf", @@ -2772,7 +2772,7 @@ "start_time_ts": 1726080000, "end_date": "2024-09-11", "end_time": "12:10:00", - "event_type_sort": "2", + "event_type_sort": 2, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/ce/Emily_Li_GraphQLConf_2024.pdf", @@ -2826,7 +2826,7 @@ "start_time_ts": 1726080000, "end_date": "2024-09-11", "end_time": "12:10:00", - "event_type_sort": "5", + "event_type_sort": 5, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/59/GraphQL Docs Beyond the Schema (1).pdf", @@ -2887,7 +2887,7 @@ "start_time_ts": 1726080000, "end_date": "2024-09-11", "end_time": "12:10:00", - "event_type_sort": "8", + "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/69/presentation.pdf", @@ -2941,7 +2941,7 @@ "start_time_ts": 1726080000, "end_date": "2024-09-11", "end_time": "12:10:00", - "event_type_sort": "9", + "event_type_sort": 9, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/3c/graphql-techniques-to-protect.pdf", @@ -2983,7 +2983,7 @@ "start_time_ts": 1726081800, "end_date": "2024-09-11", "end_time": "13:40:00", - "event_type_sort": "3" + "event_type_sort": 3 }, { "event_key": "698984", @@ -3031,7 +3031,7 @@ "start_time_ts": 1726087200, "end_date": "2024-09-11", "end_time": "14:10:00", - "event_type_sort": "1", + "event_type_sort": 1, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/82/Dynamic (but Safe) Operations.pdf", @@ -3092,7 +3092,7 @@ "start_time_ts": 1726087200, "end_date": "2024-09-11", "end_time": "14:10:00", - "event_type_sort": "5", + "event_type_sort": 5, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/1b/Schema Driven UI - Tailor Inc.pdf", @@ -3146,7 +3146,7 @@ "start_time_ts": 1726087200, "end_date": "2024-09-11", "end_time": "14:10:00", - "event_type_sort": "8", + "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/d9/Identity and GraphQL_ More Than You Want to Think About IDs 2024.pdf", @@ -3200,7 +3200,7 @@ "start_time_ts": 1726087200, "end_date": "2024-09-11", "end_time": "14:10:00", - "event_type_sort": "10", + "event_type_sort": 10, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/87/Semantic Non Null GraphQL Conf 2024.pdf", @@ -3254,7 +3254,7 @@ "start_time_ts": 1726089600, "end_date": "2024-09-11", "end_time": "14:50:00", - "event_type_sort": "1" + "event_type_sort": 1 }, { "event_key": "698734", @@ -3302,7 +3302,7 @@ "start_time_ts": 1726089600, "end_date": "2024-09-11", "end_time": "14:50:00", - "event_type_sort": "5", + "event_type_sort": 5, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/e6/Schema Scoring.pdf", @@ -3356,7 +3356,7 @@ "start_time_ts": 1726089600, "end_date": "2024-09-11", "end_time": "14:50:00", - "event_type_sort": "8" + "event_type_sort": 8 }, { "event_key": "691729", @@ -3432,7 +3432,7 @@ "start_time_ts": 1726089600, "end_date": "2024-09-11", "end_time": "14:50:00", - "event_type_sort": "10" + "event_type_sort": 10 }, { "event_key": "699192", @@ -3480,7 +3480,7 @@ "start_time_ts": 1726092000, "end_date": "2024-09-11", "end_time": "15:30:00", - "event_type_sort": "1" + "event_type_sort": 1 }, { "event_key": "697133", @@ -3528,7 +3528,7 @@ "start_time_ts": 1726092000, "end_date": "2024-09-11", "end_time": "15:30:00", - "event_type_sort": "6" + "event_type_sort": 6 }, { "event_key": "690785", @@ -3576,7 +3576,7 @@ "start_time_ts": 1726092000, "end_date": "2024-09-11", "end_time": "15:10:00", - "event_type_sort": "8", + "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/19/Unset Fields (GraphQL Conf '24).pdf", @@ -3630,7 +3630,7 @@ "start_time_ts": 1726092000, "end_date": "2024-09-11", "end_time": "15:30:00", - "event_type_sort": "10" + "event_type_sort": 10 }, { "event_key": "695423", @@ -3677,7 +3677,7 @@ "start_time_ts": 1726092600, "end_date": "2024-09-11", "end_time": "15:20:00", - "event_type_sort": "8" + "event_type_sort": 8 }, { "event_key": "692297", @@ -3725,7 +3725,7 @@ "start_time_ts": 1726093200, "end_date": "2024-09-11", "end_time": "15:30:00", - "event_type_sort": "8" + "event_type_sort": 8 }, { "event_key": "10", @@ -3760,7 +3760,7 @@ "start_time_ts": 1726093800, "end_date": "2024-09-11", "end_time": "15:50:00", - "event_type_sort": "3", + "event_type_sort": 3, "description": "" }, { @@ -3830,7 +3830,7 @@ "start_time_ts": 1726095000, "end_date": "2024-09-11", "end_time": "16:20:00", - "event_type_sort": "6" + "event_type_sort": 6 }, { "event_key": "699597", @@ -3878,7 +3878,7 @@ "start_time_ts": 1726095000, "end_date": "2024-09-11", "end_time": "16:20:00", - "event_type_sort": "8", + "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/af/GraphqlConf 2023.pdf", @@ -3932,7 +3932,7 @@ "start_time_ts": 1726095000, "end_date": "2024-09-11", "end_time": "16:20:00", - "event_type_sort": "10" + "event_type_sort": 10 }, { "event_key": "706610", @@ -3979,7 +3979,7 @@ "start_time_ts": 1726097400, "end_date": "2024-09-11", "end_time": "17:00:00", - "event_type_sort": "2" + "event_type_sort": 2 }, { "event_key": "697477", @@ -4027,7 +4027,7 @@ "start_time_ts": 1726097400, "end_date": "2024-09-11", "end_time": "17:00:00", - "event_type_sort": "7" + "event_type_sort": 7 }, { "event_key": "706598", @@ -4074,7 +4074,7 @@ "start_time_ts": 1726097400, "end_date": "2024-09-11", "end_time": "17:00:00", - "event_type_sort": "9" + "event_type_sort": 9 }, { "event_key": "706601", @@ -4109,7 +4109,7 @@ "start_time_ts": 1726153200, "end_date": "2024-09-12", "end_time": "15:00:00", - "event_type_sort": "12", + "event_type_sort": 12, "description": "" }, { @@ -4146,7 +4146,7 @@ "start_time_ts": 1726153200, "end_date": "2024-09-12", "end_time": "12:30:00", - "event_type_sort": "14" + "event_type_sort": 14 }, { "event_key": "692330", @@ -4201,7 +4201,7 @@ "start_time_ts": 1726156800, "end_date": "2024-09-12", "end_time": "10:30:00", - "event_type_sort": "1" + "event_type_sort": 1 }, { "event_key": "706617", @@ -4239,7 +4239,7 @@ "start_time_ts": 1726156800, "end_date": "2024-09-12", "end_time": "10:30:00", - "event_type_sort": "4" + "event_type_sort": 4 }, { "event_key": "706616", @@ -4286,7 +4286,7 @@ "start_time_ts": 1726156800, "end_date": "2024-09-12", "end_time": "10:30:00", - "event_type_sort": "4" + "event_type_sort": 4 }, { "event_key": "706614", @@ -4333,7 +4333,7 @@ "start_time_ts": 1726156800, "end_date": "2024-09-12", "end_time": "10:30:00", - "event_type_sort": "4" + "event_type_sort": 4 }, { "event_key": "6", @@ -4368,7 +4368,7 @@ "start_time_ts": 1726162200, "end_date": "2024-09-12", "end_time": "11:00:00", - "event_type_sort": "3", + "event_type_sort": 3, "description": "" }, { @@ -4417,7 +4417,7 @@ "start_time_ts": 1726164000, "end_date": "2024-09-12", "end_time": "12:30:00", - "event_type_sort": "7" + "event_type_sort": 7 }, { "event_key": "706626", @@ -4453,7 +4453,7 @@ "start_time_ts": 1726164000, "end_date": "2024-09-12", "end_time": "11:15:00", - "event_type_sort": "15" + "event_type_sort": 15 }, { "event_key": "706629", @@ -4488,7 +4488,7 @@ "start_time_ts": 1726164900, "end_date": "2024-09-12", "end_time": "12:30:00", - "event_type_sort": "15", + "event_type_sort": 15, "description": "" }, { @@ -4525,7 +4525,7 @@ "start_time_ts": 1726164900, "end_date": "2024-09-12", "end_time": "12:30:00", - "event_type_sort": "15" + "event_type_sort": 15 }, { "event_key": "706628", @@ -4561,7 +4561,7 @@ "start_time_ts": 1726164900, "end_date": "2024-09-12", "end_time": "12:30:00", - "event_type_sort": "15" + "event_type_sort": 15 }, { "event_key": "7", @@ -4597,7 +4597,7 @@ "start_time_ts": 1726169400, "end_date": "2024-09-12", "end_time": "14:00:00", - "event_type_sort": "3" + "event_type_sort": 3 }, { "event_key": "1", @@ -4632,7 +4632,7 @@ "start_time_ts": 1726174800, "end_date": "2024-09-12", "end_time": "15:30:00", - "event_type_sort": "15", + "event_type_sort": 15, "description": "" }, { @@ -4668,7 +4668,7 @@ "start_time_ts": 1726174800, "end_date": "2024-09-12", "end_time": "15:30:00", - "event_type_sort": "15", + "event_type_sort": 15, "description": "" }, { @@ -4704,7 +4704,7 @@ "start_time_ts": 1726174800, "end_date": "2024-09-12", "end_time": "15:30:00", - "event_type_sort": "15", + "event_type_sort": 15, "description": "" }, { @@ -4741,6 +4741,6 @@ "start_time_ts": 1726174800, "end_date": "2024-09-12", "end_time": "15:30:00", - "event_type_sort": "15" + "event_type_sort": 15 } ] \ No newline at end of file diff --git a/scripts/sync-sched/speakers.json b/scripts/sync-sched/speakers.json index c29ad24a50..5e3f636a90 100644 --- a/scripts/sync-sched/speakers.json +++ b/scripts/sync-sched/speakers.json @@ -230,7 +230,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501873330 }, { "username": "andrei.bocan", @@ -244,7 +245,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501873330 }, { "username": "andrew.doyle1", @@ -258,7 +260,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501873330 }, { "username": "ankita25", @@ -269,10 +272,20 @@ "location": "San Francisco", "url": "https://akto.io/", "avatar": "//avatars.sched.co/9/a0/21265832/avatar.jpg.320x320px.jpg?b49", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/ankitaiitr" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/ankita-gupta-89214515/" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501873330 }, { "username": "annyce.davis", @@ -300,7 +313,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501873330 }, { "username": "antoine.carossio", @@ -325,10 +339,16 @@ "location": "San Francisco, California", "url": "askpacha.ai", "avatar": "//avatars.sched.co/3/3e/21460012/avatar.jpg.320x320px.jpg?925", - "socialurls": [], + "socialurls": [ + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/anushrut-gupta/" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501873331 }, { "username": "ardatanrikulu", @@ -486,10 +506,16 @@ "location": "Durham, NC", "url": "https://www.linkedin.com/in/budha-b/", "avatar": "//avatars.sched.co/1/fe/17694866/avatar.jpg.320x320px.jpg?7a7", - "socialurls": [], + "socialurls": [ + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/budha-b" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501873331 }, { "username": "christian.ernst", @@ -517,7 +543,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501873331 }, { "username": "christian.stangier", @@ -531,7 +558,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501873331 }, { "username": "danadajian", @@ -542,10 +570,16 @@ "location": "Chicago, IL", "url": "https://github.com/danadajian/", "avatar": "//avatars.sched.co/a/cc/21487429/avatar.jpg.320x320px.jpg?ffa", - "socialurls": [], + "socialurls": [ + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/dan-adajian-aa8aaa72" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501873331 }, { "username": "danielle.man", From 9977d3185cad1a9daf567c34c0b87bfdb52d8fe7 Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Mon, 9 Jun 2025 22:51:28 +0200 Subject: [PATCH 04/13] Remove event_type_sort --- scripts/sync-sched/schedule-2023.json | 156 ++------- scripts/sync-sched/schedule-2024.json | 176 +++------- scripts/sync-sched/speakers.json | 470 +++++++++++++++++++++----- src/app/conf/_api/sched-client.tsx | 4 + 4 files changed, 456 insertions(+), 350 deletions(-) diff --git a/scripts/sync-sched/schedule-2023.json b/scripts/sync-sched/schedule-2023.json index d2f715ae58..eac0e6927c 100644 --- a/scripts/sync-sched/schedule-2023.json +++ b/scripts/sync-sched/schedule-2023.json @@ -32,7 +32,6 @@ "start_time_ts": 1695142800, "end_date": "2023-09-19", "end_time": "16:30:00", - "event_type_sort": 5, "description": "" }, { @@ -68,8 +67,7 @@ "start_time": "10:30:00", "start_time_ts": 1695144600, "end_date": "2023-09-19", - "end_time": "12:00:00", - "event_type_sort": 8 + "end_time": "12:00:00" }, { "event_key": "491989", @@ -117,7 +115,6 @@ "start_time_ts": 1695144600, "end_date": "2023-09-19", "end_time": "12:00:00", - "event_type_sort": 9, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/cb/Workshop_ Carmen SanDiego.pdf", @@ -170,7 +167,6 @@ "start_time_ts": 1695144600, "end_date": "2023-09-19", "end_time": "12:00:00", - "event_type_sort": 9, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/ac/SF GraphQL Conf 2023.pdf", @@ -229,7 +225,6 @@ "start_time_ts": 1695144600, "end_date": "2023-09-19", "end_time": "12:00:00", - "event_type_sort": 9, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/c9/GraphQL Hive Workshop.pdf", @@ -270,7 +265,6 @@ "start_time_ts": 1695150000, "end_date": "2023-09-19", "end_time": "13:00:00", - "event_type_sort": 1, "description": "" }, { @@ -306,8 +300,7 @@ "start_time": "13:00:00", "start_time_ts": 1695153600, "end_date": "2023-09-19", - "end_time": "14:30:00", - "event_type_sort": 8 + "end_time": "14:30:00" }, { "event_key": "2", @@ -358,8 +351,7 @@ "start_time": "13:00:00", "start_time_ts": 1695153600, "end_date": "2023-09-19", - "end_time": "14:30:00", - "event_type_sort": 9 + "end_time": "14:30:00" }, { "event_key": "488403", @@ -414,7 +406,6 @@ "start_time_ts": 1695153600, "end_date": "2023-09-19", "end_time": "14:30:00", - "event_type_sort": 9, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/35/GraphQLConf 2023 Mr Toad Workshop.pdf", @@ -455,7 +446,6 @@ "start_time_ts": 1695159000, "end_date": "2023-09-19", "end_time": "15:00:00", - "event_type_sort": 1, "description": "" }, { @@ -491,8 +481,7 @@ "start_time": "15:00:00", "start_time_ts": 1695160800, "end_date": "2023-09-19", - "end_time": "16:30:00", - "event_type_sort": 8 + "end_time": "16:30:00" }, { "event_key": "4", @@ -536,8 +525,7 @@ "start_time": "15:00:00", "start_time_ts": 1695160800, "end_date": "2023-09-19", - "end_time": "16:30:00", - "event_type_sort": 9 + "end_time": "16:30:00" }, { "event_key": "511225", @@ -583,8 +571,7 @@ "start_time": "15:00:00", "start_time_ts": 1695160800, "end_date": "2023-09-19", - "end_time": "16:30:00", - "event_type_sort": 9 + "end_time": "16:30:00" }, { "event_key": "511240", @@ -619,7 +606,6 @@ "start_time_ts": 1695220200, "end_date": "2023-09-20", "end_time": "09:00:00", - "event_type_sort": 1, "description": "" }, { @@ -655,7 +641,6 @@ "start_time_ts": 1695220200, "end_date": "2023-09-20", "end_time": "18:30:00", - "event_type_sort": 5, "description": "" }, { @@ -700,7 +685,6 @@ "start_time_ts": 1695225600, "end_date": "2023-09-20", "end_time": "09:15:00", - "event_type_sort": 3, "description": "" }, { @@ -745,8 +729,7 @@ "start_time": "09:15:00", "start_time_ts": 1695226500, "end_date": "2023-09-20", - "end_time": "09:35:00", - "event_type_sort": 3 + "end_time": "09:35:00" }, { "event_key": "22", @@ -790,8 +773,7 @@ "start_time": "09:35:00", "start_time_ts": 1695227700, "end_date": "2023-09-20", - "end_time": "09:40:00", - "event_type_sort": 3 + "end_time": "09:40:00" }, { "event_key": "23", @@ -835,8 +817,7 @@ "start_time": "09:40:00", "start_time_ts": 1695228000, "end_date": "2023-09-20", - "end_time": "10:00:00", - "event_type_sort": 3 + "end_time": "10:00:00" }, { "event_key": "24", @@ -882,7 +863,6 @@ "start_time_ts": 1695229200, "end_date": "2023-09-20", "end_time": "10:05:00", - "event_type_sort": 3, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/a9/Spoiled for choice (sent).pptx.pdf", @@ -932,8 +912,7 @@ "start_time": "10:05:00", "start_time_ts": 1695229500, "end_date": "2023-09-20", - "end_time": "10:15:00", - "event_type_sort": 3 + "end_time": "10:15:00" }, { "event_key": "26", @@ -977,7 +956,6 @@ "start_time_ts": 1695230100, "end_date": "2023-09-20", "end_time": "10:30:00", - "event_type_sort": 3, "description": "" }, { @@ -1013,7 +991,6 @@ "start_time_ts": 1695231000, "end_date": "2023-09-20", "end_time": "10:50:00", - "event_type_sort": 1, "description": "" }, { @@ -1049,7 +1026,6 @@ "start_time_ts": 1695231000, "end_date": "2023-09-20", "end_time": "19:00:00", - "event_type_sort": 7, "description": "" }, { @@ -1096,7 +1072,6 @@ "start_time_ts": 1695232200, "end_date": "2023-09-20", "end_time": "11:20:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/8e/202309_GraphQL_PH_FAIR.pdf", @@ -1155,8 +1130,7 @@ "start_time": "10:50:00", "start_time_ts": 1695232200, "end_date": "2023-09-20", - "end_time": "11:20:00", - "event_type_sort": 6 + "end_time": "11:20:00" }, { "event_key": "496594", @@ -1204,7 +1178,6 @@ "start_time_ts": 1695232200, "end_date": "2023-09-20", "end_time": "11:20:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/41/Future_of_Efficiency.pdf", @@ -1256,8 +1229,7 @@ "start_time": "11:30:00", "start_time_ts": 1695234600, "end_date": "2023-09-20", - "end_time": "12:00:00", - "event_type_sort": 6 + "end_time": "12:00:00" }, { "event_key": "501216", @@ -1310,8 +1282,7 @@ "start_time": "11:30:00", "start_time_ts": 1695234600, "end_date": "2023-09-20", - "end_time": "12:00:00", - "event_type_sort": 6 + "end_time": "12:00:00" }, { "event_key": "511243", @@ -1355,8 +1326,7 @@ "start_time": "11:30:00", "start_time_ts": 1695234600, "end_date": "2023-09-20", - "end_time": "12:00:00", - "event_type_sort": 6 + "end_time": "12:00:00" }, { "event_key": "9", @@ -1391,7 +1361,6 @@ "start_time_ts": 1695236400, "end_date": "2023-09-20", "end_time": "13:30:00", - "event_type_sort": 1, "description": "" }, { @@ -1440,7 +1409,6 @@ "start_time_ts": 1695241800, "end_date": "2023-09-20", "end_time": "13:40:00", - "event_type_sort": 4, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/a6/GraphQL IRL.pdf", @@ -1494,7 +1462,6 @@ "start_time_ts": 1695241800, "end_date": "2023-09-20", "end_time": "14:00:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/a4/Argo.pdf", @@ -1548,7 +1515,6 @@ "start_time_ts": 1695241800, "end_date": "2023-09-20", "end_time": "14:00:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/f9/GraphQL over Internet.pdf", @@ -1602,7 +1568,6 @@ "start_time_ts": 1695242700, "end_date": "2023-09-20", "end_time": "13:55:00", - "event_type_sort": 4, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/37/GraphQLConf_Defer_Caching_v2.pdf", @@ -1656,7 +1621,6 @@ "start_time_ts": 1695244200, "end_date": "2023-09-20", "end_time": "14:40:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/e3/Consuming GraphQL APIs in C#.pptx (1).pdf", @@ -1710,7 +1674,6 @@ "start_time_ts": 1695244200, "end_date": "2023-09-20", "end_time": "14:40:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/e2/mutating_meetup_with_graphql.pdf", @@ -1764,7 +1727,6 @@ "start_time_ts": 1695244200, "end_date": "2023-09-20", "end_time": "14:40:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/cd/Deduplicated Incremental Delivery.pdf", @@ -1825,7 +1787,6 @@ "start_time_ts": 1695246600, "end_date": "2023-09-20", "end_time": "15:20:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/aa/4 Steps to a Successful GraphQL API Program.pdf", @@ -1877,8 +1838,7 @@ "start_time": "14:50:00", "start_time_ts": 1695246600, "end_date": "2023-09-20", - "end_time": "15:20:00", - "event_type_sort": 6 + "end_time": "15:20:00" }, { "event_key": "501204", @@ -1924,8 +1884,7 @@ "start_time": "14:50:00", "start_time_ts": 1695246600, "end_date": "2023-09-20", - "end_time": "15:20:00", - "event_type_sort": 6 + "end_time": "15:20:00" }, { "event_key": "19", @@ -1960,7 +1919,6 @@ "start_time_ts": 1695248400, "end_date": "2023-09-20", "end_time": "15:40:00", - "event_type_sort": 1, "description": "" }, { @@ -2009,7 +1967,6 @@ "start_time_ts": 1695249600, "end_date": "2023-09-20", "end_time": "15:50:00", - "event_type_sort": 4, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/ef/@defer all the slow things.pdf", @@ -2063,7 +2020,6 @@ "start_time_ts": 1695249600, "end_date": "2023-09-20", "end_time": "16:10:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/8a/GraphQL Conf Presentation 2023 - LWC & UI API.pdf", @@ -2117,7 +2073,6 @@ "start_time_ts": 1695249600, "end_date": "2023-09-20", "end_time": "16:10:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/02/GraphQL Conf.pdf", @@ -2170,7 +2125,6 @@ "start_time_ts": 1695250500, "end_date": "2023-09-20", "end_time": "16:05:00", - "event_type_sort": 4, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/39/Open source.pdf", @@ -2222,7 +2176,6 @@ "start_time_ts": 1695252000, "end_date": "2023-09-20", "end_time": "16:50:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/17/Querying Blockchain Data with GraphQL - shared.pdf", @@ -2276,7 +2229,6 @@ "start_time_ts": 1695252000, "end_date": "2023-09-20", "end_time": "16:50:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/6c/GraphQL Conf 2023.pdf", @@ -2330,7 +2282,6 @@ "start_time_ts": 1695252000, "end_date": "2023-09-20", "end_time": "16:50:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/54/graphqlconf.pdf", @@ -2373,8 +2324,7 @@ "start_time": "17:00:00", "start_time_ts": 1695254400, "end_date": "2023-09-20", - "end_time": "17:30:00", - "event_type_sort": 6 + "end_time": "17:30:00" }, { "event_key": "490843", @@ -2422,7 +2372,6 @@ "start_time_ts": 1695254400, "end_date": "2023-09-20", "end_time": "17:30:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/63/GraphQL+CQRS.pdf", @@ -2474,7 +2423,6 @@ "start_time_ts": 1695254400, "end_date": "2023-09-20", "end_time": "17:30:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/2d/why_relay_is_a_must_for_your_graphql_api.pdf", @@ -2515,8 +2463,7 @@ "start_time": "17:30:00", "start_time_ts": 1695256200, "end_date": "2023-09-20", - "end_time": "19:00:00", - "event_type_sort": 2 + "end_time": "19:00:00" }, { "event_key": "511239", @@ -2551,7 +2498,6 @@ "start_time_ts": 1695306600, "end_date": "2023-09-21", "end_time": "09:00:00", - "event_type_sort": 1, "description": "" }, { @@ -2587,7 +2533,6 @@ "start_time_ts": 1695306600, "end_date": "2023-09-21", "end_time": "16:00:00", - "event_type_sort": 5, "description": "" }, { @@ -2632,7 +2577,6 @@ "start_time_ts": 1695312000, "end_date": "2023-09-21", "end_time": "09:05:00", - "event_type_sort": 3, "description": "" }, { @@ -2677,8 +2621,7 @@ "start_time": "09:05:00", "start_time_ts": 1695312300, "end_date": "2023-09-21", - "end_time": "09:15:00", - "event_type_sort": 3 + "end_time": "09:15:00" }, { "event_key": "30", @@ -2722,7 +2665,6 @@ "start_time_ts": 1695312900, "end_date": "2023-09-21", "end_time": "09:25:00", - "event_type_sort": 3, "description": "" }, { @@ -2767,8 +2709,7 @@ "start_time": "09:25:00", "start_time_ts": 1695313500, "end_date": "2023-09-21", - "end_time": "09:35:00", - "event_type_sort": 3 + "end_time": "09:35:00" }, { "event_key": "28", @@ -2812,8 +2753,7 @@ "start_time": "09:35:00", "start_time_ts": 1695314100, "end_date": "2023-09-21", - "end_time": "09:55:00", - "event_type_sort": 3 + "end_time": "09:55:00" }, { "event_key": "32", @@ -2894,8 +2834,7 @@ "start_time": "09:55:00", "start_time_ts": 1695315300, "end_date": "2023-09-21", - "end_time": "10:20:00", - "event_type_sort": 3 + "end_time": "10:20:00" }, { "event_key": "33", @@ -2939,7 +2878,6 @@ "start_time_ts": 1695316800, "end_date": "2023-09-21", "end_time": "10:30:00", - "event_type_sort": 3, "description": "" }, { @@ -2975,7 +2913,6 @@ "start_time_ts": 1695317400, "end_date": "2023-09-21", "end_time": "10:50:00", - "event_type_sort": 1, "description": "" }, { @@ -3011,7 +2948,6 @@ "start_time_ts": 1695317400, "end_date": "2023-09-21", "end_time": "17:30:00", - "event_type_sort": 7, "description": "" }, { @@ -3060,7 +2996,6 @@ "start_time_ts": 1695318600, "end_date": "2023-09-21", "end_time": "11:20:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/b3/Building Tooling that Speaks GraphQL.pdf", @@ -3113,7 +3048,6 @@ "start_time_ts": 1695318600, "end_date": "2023-09-21", "end_time": "11:20:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/af/GraphQL Conf_ Exposing All of Wix APIs via GraphQL Automatically_ Centralizing GraphQL Schema Generation.pdf", @@ -3166,7 +3100,6 @@ "start_time_ts": 1695318600, "end_date": "2023-09-21", "end_time": "11:20:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/48/GraphQL is a superpower for your product manager and designer.pdf", @@ -3218,8 +3151,7 @@ "start_time": "11:30:00", "start_time_ts": 1695321000, "end_date": "2023-09-21", - "end_time": "12:00:00", - "event_type_sort": 6 + "end_time": "12:00:00" }, { "event_key": "493258", @@ -3267,7 +3199,6 @@ "start_time_ts": 1695321000, "end_date": "2023-09-21", "end_time": "12:00:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/d1/Houdini A GraphQL-First Framework.pdf", @@ -3321,7 +3252,6 @@ "start_time_ts": 1695321000, "end_date": "2023-09-21", "end_time": "12:00:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/3b/Sophisticated Schema Mocking.pdf", @@ -3362,7 +3292,6 @@ "start_time_ts": 1695322800, "end_date": "2023-09-21", "end_time": "13:30:00", - "event_type_sort": 1, "description": "" }, { @@ -3409,8 +3338,7 @@ "start_time": "13:30:00", "start_time_ts": 1695328200, "end_date": "2023-09-21", - "end_time": "13:40:00", - "event_type_sort": 4 + "end_time": "13:40:00" }, { "event_key": "492667", @@ -3458,7 +3386,6 @@ "start_time_ts": 1695328200, "end_date": "2023-09-21", "end_time": "14:00:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/cf/Scaling Schema Cardinality.pdf", @@ -3510,8 +3437,7 @@ "start_time": "13:30:00", "start_time_ts": 1695328200, "end_date": "2023-09-21", - "end_time": "14:00:00", - "event_type_sort": 6 + "end_time": "14:00:00" }, { "event_key": "511226", @@ -3557,7 +3483,6 @@ "start_time_ts": 1695329100, "end_date": "2023-09-21", "end_time": "13:55:00", - "event_type_sort": 4, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/b6/GraphQL Conf 2023 - Rate Limiting.pdf", @@ -3609,8 +3534,7 @@ "start_time": "14:10:00", "start_time_ts": 1695330600, "end_date": "2023-09-21", - "end_time": "14:40:00", - "event_type_sort": 6 + "end_time": "14:40:00" }, { "event_key": "495993", @@ -3658,7 +3582,6 @@ "start_time_ts": 1695330600, "end_date": "2023-09-21", "end_time": "14:40:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/01/Seddik Benaissa.pdf", @@ -3708,8 +3631,7 @@ "start_time": "14:10:00", "start_time_ts": 1695330600, "end_date": "2023-09-21", - "end_time": "14:40:00", - "event_type_sort": 6 + "end_time": "14:40:00" }, { "event_key": "498924", @@ -3764,7 +3686,6 @@ "start_time_ts": 1695333000, "end_date": "2023-09-21", "end_time": "15:20:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/3f/GraphQL Conf 2023 - Adoption of GraphQL in Ads Manager.pdf", @@ -3818,7 +3739,6 @@ "start_time_ts": 1695333000, "end_date": "2023-09-21", "end_time": "15:20:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/d0/Stephen Spalding - Fixing the Billion Dollar Mistake - Client Controlled Nullability.pdf", @@ -3872,7 +3792,6 @@ "start_time_ts": 1695333000, "end_date": "2023-09-21", "end_time": "15:20:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/aa/Scaling the data access by leveraging GraphQL Federation for S2S.pdf", @@ -3913,7 +3832,6 @@ "start_time_ts": 1695334800, "end_date": "2023-09-21", "end_time": "15:40:00", - "event_type_sort": 1, "description": "" }, { @@ -3960,8 +3878,7 @@ "start_time": "15:40:00", "start_time_ts": 1695336000, "end_date": "2023-09-21", - "end_time": "15:50:00", - "event_type_sort": 4 + "end_time": "15:50:00" }, { "event_key": "494695", @@ -4009,7 +3926,6 @@ "start_time_ts": 1695336000, "end_date": "2023-09-21", "end_time": "16:10:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/ce/Improving User Experiences with a Nullable Schema_ GraphQL Conf 2023.pdf", @@ -4059,8 +3975,7 @@ "start_time": "15:40:00", "start_time_ts": 1695336000, "end_date": "2023-09-21", - "end_time": "16:10:00", - "event_type_sort": 6 + "end_time": "16:10:00" }, { "event_key": "14", @@ -4104,7 +4019,6 @@ "start_time_ts": 1695336900, "end_date": "2023-09-21", "end_time": "16:05:00", - "event_type_sort": 4, "description": "" }, { @@ -4151,8 +4065,7 @@ "start_time": "16:10:00", "start_time_ts": 1695337800, "end_date": "2023-09-21", - "end_time": "16:20:00", - "event_type_sort": 4 + "end_time": "16:20:00" }, { "event_key": "38", @@ -4200,7 +4113,6 @@ "start_time_ts": 1695338400, "end_date": "2023-09-21", "end_time": "16:50:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/70/Migrating Legacy Services to Federated GraphQL.pdf", @@ -4252,8 +4164,7 @@ "start_time": "16:20:00", "start_time_ts": 1695338400, "end_date": "2023-09-21", - "end_time": "16:50:00", - "event_type_sort": 6 + "end_time": "16:50:00" }, { "event_key": "511242", @@ -4299,7 +4210,6 @@ "start_time_ts": 1695340800, "end_date": "2023-09-21", "end_time": "17:30:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/c0/Dataloader_3.0_WunderGraph_Jens_Neuse_slides.pdf", @@ -4355,8 +4265,7 @@ "start_time": "17:00:00", "start_time_ts": 1695340800, "end_date": "2023-09-21", - "end_time": "17:30:00", - "event_type_sort": 6 + "end_time": "17:30:00" }, { "event_key": "37", @@ -4404,7 +4313,6 @@ "start_time_ts": 1695340800, "end_date": "2023-09-21", "end_time": "17:30:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf23/a3/ashpak_graphql_conf.pdf", diff --git a/scripts/sync-sched/schedule-2024.json b/scripts/sync-sched/schedule-2024.json index 0968efd88c..03b16d353c 100644 --- a/scripts/sync-sched/schedule-2024.json +++ b/scripts/sync-sched/schedule-2024.json @@ -32,7 +32,6 @@ "start_time_ts": 1725915600, "end_date": "2024-09-09", "end_time": "17:00:00", - "event_type_sort": 12, "description": "" }, { @@ -68,7 +67,6 @@ "start_time_ts": 1725980400, "end_date": "2024-09-10", "end_time": "19:00:00", - "event_type_sort": 12, "description": "" }, { @@ -114,7 +112,6 @@ "start_time_ts": 1725984000, "end_date": "2024-09-10", "end_time": "09:15:00", - "event_type_sort": 11, "description": "" }, { @@ -161,8 +158,7 @@ "start_time": "09:15:00", "start_time_ts": 1725984900, "end_date": "2024-09-10", - "end_time": "09:25:00", - "event_type_sort": 11 + "end_time": "09:25:00" }, { "event_key": "706606", @@ -207,7 +203,6 @@ "start_time_ts": 1725985800, "end_date": "2024-09-10", "end_time": "09:40:00", - "event_type_sort": 11, "description": "" }, { @@ -254,8 +249,7 @@ "start_time": "09:40:00", "start_time_ts": 1725986400, "end_date": "2024-09-10", - "end_time": "09:55:00", - "event_type_sort": 11 + "end_time": "09:55:00" }, { "event_key": "13", @@ -335,7 +329,6 @@ "start_time_ts": 1725987300, "end_date": "2024-09-10", "end_time": "10:25:00", - "event_type_sort": 11, "description": "" }, { @@ -381,7 +374,6 @@ "start_time_ts": 1725989100, "end_date": "2024-09-10", "end_time": "10:30:00", - "event_type_sort": 11, "description": "" }, { @@ -417,7 +409,6 @@ "start_time_ts": 1725989400, "end_date": "2024-09-10", "end_time": "11:00:00", - "event_type_sort": 3, "description": "" }, { @@ -453,8 +444,7 @@ "start_time": "10:30:00", "start_time_ts": 1725989400, "end_date": "2024-09-10", - "end_time": "19:00:00", - "event_type_sort": 14 + "end_time": "19:00:00" }, { "event_key": "706622", @@ -500,7 +490,6 @@ "start_time_ts": 1725991200, "end_date": "2024-09-10", "end_time": "11:30:00", - "event_type_sort": 1, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/20/GraphQL Conf 2024.pdf", @@ -561,7 +550,6 @@ "start_time_ts": 1725991200, "end_date": "2024-09-10", "end_time": "11:30:00", - "event_type_sort": 2, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/3f/200_Is_Not_OK.pptx.pdf", @@ -615,7 +603,6 @@ "start_time_ts": 1725991200, "end_date": "2024-09-10", "end_time": "11:30:00", - "event_type_sort": 7, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/85/BellisarioGraphQLConf2024.pdf", @@ -676,7 +663,6 @@ "start_time_ts": 1725991200, "end_date": "2024-09-10", "end_time": "11:30:00", - "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/48/Converging EPG architectures with the help of GraphQL - Journey, Challenges and Solutions.pdf", @@ -730,7 +716,6 @@ "start_time_ts": 1725993600, "end_date": "2024-09-10", "end_time": "12:10:00", - "event_type_sort": 2, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/f5/graphql-edge-webassembly-ramnivas-laddad.pdf", @@ -783,8 +768,7 @@ "start_time": "11:40:00", "start_time_ts": 1725993600, "end_date": "2024-09-10", - "end_time": "12:10:00", - "event_type_sort": 6 + "end_time": "12:10:00" }, { "event_key": "696986", @@ -832,7 +816,6 @@ "start_time_ts": 1725993600, "end_date": "2024-09-10", "end_time": "12:10:00", - "event_type_sort": 7, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/7c/GraphQL Talk Mary Briskin.pdf", @@ -886,7 +869,6 @@ "start_time_ts": 1725993600, "end_date": "2024-09-10", "end_time": "12:10:00", - "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/55/Incrementally Adopting GraphQL and Relay at Pinterest - Mauricio Montalvo.pdf", @@ -927,7 +909,6 @@ "start_time_ts": 1725995400, "end_date": "2024-09-10", "end_time": "13:30:00", - "event_type_sort": 3, "description": "" }, { @@ -975,8 +956,7 @@ "start_time": "13:30:00", "start_time_ts": 1726000200, "end_date": "2024-09-10", - "end_time": "14:00:00", - "event_type_sort": 2 + "end_time": "14:00:00" }, { "event_key": "692359", @@ -1025,7 +1005,6 @@ "start_time_ts": 1726000200, "end_date": "2024-09-10", "end_time": "13:40:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/b5/graphql-conf2024-talk.pdf", @@ -1077,7 +1056,6 @@ "start_time_ts": 1726000200, "end_date": "2024-09-10", "end_time": "14:00:00", - "event_type_sort": 7, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/17/GraphQLServerComponentsRoyDerks.pdf", @@ -1138,7 +1116,6 @@ "start_time_ts": 1726000200, "end_date": "2024-09-10", "end_time": "14:00:00", - "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/96/Building a Serverless GraphQL Subscription Gateway.pdf", @@ -1192,7 +1169,6 @@ "start_time_ts": 1726001400, "end_date": "2024-09-10", "end_time": "14:00:00", - "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/be/compiler-techniques-graphqlconf2024.pdf", @@ -1247,7 +1223,6 @@ "start_time_ts": 1726002600, "end_date": "2024-09-10", "end_time": "14:40:00", - "event_type_sort": 2, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/cd/In.Memory.of.Travails.pptx", @@ -1300,8 +1275,7 @@ "start_time": "14:10:00", "start_time_ts": 1726002600, "end_date": "2024-09-10", - "end_time": "14:40:00", - "event_type_sort": 6 + "end_time": "14:40:00" }, { "event_key": "691185", @@ -1349,7 +1323,6 @@ "start_time_ts": 1726002600, "end_date": "2024-09-10", "end_time": "14:40:00", - "event_type_sort": 7, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/58/[GraphQLConf 2024] Championing the GraphQL Client in a Modern Platform.pdf", @@ -1403,7 +1376,6 @@ "start_time_ts": 1726002600, "end_date": "2024-09-10", "end_time": "14:40:00", - "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/70/Declarative Pagination.pdf", @@ -1456,8 +1428,7 @@ "start_time": "14:50:00", "start_time_ts": 1726005000, "end_date": "2024-09-10", - "end_time": "15:20:00", - "event_type_sort": 1 + "end_time": "15:20:00" }, { "event_key": "697562", @@ -1505,7 +1476,6 @@ "start_time_ts": 1726005000, "end_date": "2024-09-10", "end_time": "15:20:00", - "event_type_sort": 5, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/2a/GraphQL is for Client Developers, not Client Apps.pdf", @@ -1566,7 +1536,6 @@ "start_time_ts": 1726005000, "end_date": "2024-09-10", "end_time": "15:20:00", - "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/13/GraphQLConf24-presentation.pdf", @@ -1620,7 +1589,6 @@ "start_time_ts": 1726005000, "end_date": "2024-09-10", "end_time": "15:00:00", - "event_type_sort": 13, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/c7/GraphQL Conference 2024_ Improve Application Performance and User Engagement with Advanced GraphQL features.pdf", @@ -1674,7 +1642,6 @@ "start_time_ts": 1726005900, "end_date": "2024-09-10", "end_time": "15:15:00", - "event_type_sort": 5, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/47/GraphQL and Newcomers - 202240910 0848.pdf", @@ -1715,7 +1682,6 @@ "start_time_ts": 1726006800, "end_date": "2024-09-10", "end_time": "15:40:00", - "event_type_sort": 3, "description": "" }, { @@ -1764,7 +1730,6 @@ "start_time_ts": 1726008000, "end_date": "2024-09-10", "end_time": "16:10:00", - "event_type_sort": 4, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/22/GraphQLConf.pdf", @@ -1816,8 +1781,7 @@ "start_time": "15:40:00", "start_time_ts": 1726008000, "end_date": "2024-09-10", - "end_time": "16:10:00", - "event_type_sort": 4 + "end_time": "16:10:00" }, { "event_key": "699211", @@ -1865,7 +1829,6 @@ "start_time_ts": 1726010400, "end_date": "2024-09-10", "end_time": "16:50:00", - "event_type_sort": 7, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/0c/ConsumingGraphQL.key", @@ -1919,7 +1882,6 @@ "start_time_ts": 1726010400, "end_date": "2024-09-10", "end_time": "16:50:00", - "event_type_sort": 13, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/3c/slides.pdf", @@ -1974,7 +1936,6 @@ "start_time_ts": 1726012800, "end_date": "2024-09-10", "end_time": "17:30:00", - "event_type_sort": 6, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/1b/GraphQL Federation in the Wild.pdf", @@ -2028,7 +1989,6 @@ "start_time_ts": 1726012800, "end_date": "2024-09-10", "end_time": "17:30:00", - "event_type_sort": 7, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/c0/GraphQLConf 2024 - Relay Error Handling and @catch (7).pdf", @@ -2069,7 +2029,6 @@ "start_time_ts": 1726014600, "end_date": "2024-09-10", "end_time": "19:00:00", - "event_type_sort": 3, "description": "" }, { @@ -2105,7 +2064,6 @@ "start_time_ts": 1726066800, "end_date": "2024-09-11", "end_time": "17:00:00", - "event_type_sort": 12, "description": "" }, { @@ -2150,7 +2108,6 @@ "start_time_ts": 1726070400, "end_date": "2024-09-11", "end_time": "09:05:00", - "event_type_sort": 11, "description": "" }, { @@ -2196,8 +2153,7 @@ "start_time": "09:05:00", "start_time_ts": 1726070700, "end_date": "2024-09-11", - "end_time": "09:25:00", - "event_type_sort": 11 + "end_time": "09:25:00" }, { "event_key": "706613", @@ -2243,8 +2199,7 @@ "start_time": "09:25:00", "start_time_ts": 1726071900, "end_date": "2024-09-11", - "end_time": "09:35:00", - "event_type_sort": 11 + "end_time": "09:35:00" }, { "event_key": "693038", @@ -2290,8 +2245,7 @@ "start_time": "09:35:00", "start_time_ts": 1726072500, "end_date": "2024-09-11", - "end_time": "09:55:00", - "event_type_sort": 11 + "end_time": "09:55:00" }, { "event_key": "706619", @@ -2336,8 +2290,7 @@ "start_time": "09:55:00", "start_time_ts": 1726073700, "end_date": "2024-09-11", - "end_time": "10:05:00", - "event_type_sort": 11 + "end_time": "10:05:00" }, { "event_key": "706630", @@ -2382,8 +2335,7 @@ "start_time": "10:05:00", "start_time_ts": 1726074300, "end_date": "2024-09-11", - "end_time": "10:15:00", - "event_type_sort": 11 + "end_time": "10:15:00" }, { "event_key": "14", @@ -2427,7 +2379,6 @@ "start_time_ts": 1726075200, "end_date": "2024-09-11", "end_time": "10:30:00", - "event_type_sort": 11, "description": "" }, { @@ -2463,7 +2414,6 @@ "start_time_ts": 1726075800, "end_date": "2024-09-11", "end_time": "11:00:00", - "event_type_sort": 3, "description": "" }, { @@ -2499,8 +2449,7 @@ "start_time": "10:30:00", "start_time_ts": 1726075800, "end_date": "2024-09-11", - "end_time": "17:00:00", - "event_type_sort": 14 + "end_time": "17:00:00" }, { "event_key": "706597", @@ -2548,7 +2497,6 @@ "start_time_ts": 1726077600, "end_date": "2024-09-11", "end_time": "11:30:00", - "event_type_sort": 2, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/e0/Implementation-First-GraphQL Conf 2024.pdf", @@ -2609,7 +2557,6 @@ "start_time_ts": 1726077600, "end_date": "2024-09-11", "end_time": "11:30:00", - "event_type_sort": 5, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/9b/GraphQLConf_2024_PPT.pptx.pdf", @@ -2664,7 +2611,6 @@ "start_time_ts": 1726077600, "end_date": "2024-09-11", "end_time": "11:30:00", - "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/e1/GraphQLConf-2024-v5-pdf.pdf", @@ -2718,7 +2664,6 @@ "start_time_ts": 1726077600, "end_date": "2024-09-11", "end_time": "11:30:00", - "event_type_sort": 10, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/64/Defer and Stream GraphQL Conf 2024.pdf", @@ -2772,7 +2717,6 @@ "start_time_ts": 1726080000, "end_date": "2024-09-11", "end_time": "12:10:00", - "event_type_sort": 2, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/ce/Emily_Li_GraphQLConf_2024.pdf", @@ -2826,7 +2770,6 @@ "start_time_ts": 1726080000, "end_date": "2024-09-11", "end_time": "12:10:00", - "event_type_sort": 5, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/59/GraphQL Docs Beyond the Schema (1).pdf", @@ -2887,7 +2830,6 @@ "start_time_ts": 1726080000, "end_date": "2024-09-11", "end_time": "12:10:00", - "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/69/presentation.pdf", @@ -2941,7 +2883,6 @@ "start_time_ts": 1726080000, "end_date": "2024-09-11", "end_time": "12:10:00", - "event_type_sort": 9, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/3c/graphql-techniques-to-protect.pdf", @@ -2982,8 +2923,7 @@ "start_time": "12:10:00", "start_time_ts": 1726081800, "end_date": "2024-09-11", - "end_time": "13:40:00", - "event_type_sort": 3 + "end_time": "13:40:00" }, { "event_key": "698984", @@ -3031,7 +2971,6 @@ "start_time_ts": 1726087200, "end_date": "2024-09-11", "end_time": "14:10:00", - "event_type_sort": 1, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/82/Dynamic (but Safe) Operations.pdf", @@ -3092,7 +3031,6 @@ "start_time_ts": 1726087200, "end_date": "2024-09-11", "end_time": "14:10:00", - "event_type_sort": 5, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/1b/Schema Driven UI - Tailor Inc.pdf", @@ -3146,7 +3084,6 @@ "start_time_ts": 1726087200, "end_date": "2024-09-11", "end_time": "14:10:00", - "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/d9/Identity and GraphQL_ More Than You Want to Think About IDs 2024.pdf", @@ -3200,7 +3137,6 @@ "start_time_ts": 1726087200, "end_date": "2024-09-11", "end_time": "14:10:00", - "event_type_sort": 10, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/87/Semantic Non Null GraphQL Conf 2024.pdf", @@ -3253,8 +3189,7 @@ "start_time": "14:20:00", "start_time_ts": 1726089600, "end_date": "2024-09-11", - "end_time": "14:50:00", - "event_type_sort": 1 + "end_time": "14:50:00" }, { "event_key": "698734", @@ -3302,7 +3237,6 @@ "start_time_ts": 1726089600, "end_date": "2024-09-11", "end_time": "14:50:00", - "event_type_sort": 5, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/e6/Schema Scoring.pdf", @@ -3355,8 +3289,7 @@ "start_time": "14:20:00", "start_time_ts": 1726089600, "end_date": "2024-09-11", - "end_time": "14:50:00", - "event_type_sort": 8 + "end_time": "14:50:00" }, { "event_key": "691729", @@ -3431,8 +3364,7 @@ "start_time": "14:20:00", "start_time_ts": 1726089600, "end_date": "2024-09-11", - "end_time": "14:50:00", - "event_type_sort": 10 + "end_time": "14:50:00" }, { "event_key": "699192", @@ -3479,8 +3411,7 @@ "start_time": "15:00:00", "start_time_ts": 1726092000, "end_date": "2024-09-11", - "end_time": "15:30:00", - "event_type_sort": 1 + "end_time": "15:30:00" }, { "event_key": "697133", @@ -3527,8 +3458,7 @@ "start_time": "15:00:00", "start_time_ts": 1726092000, "end_date": "2024-09-11", - "end_time": "15:30:00", - "event_type_sort": 6 + "end_time": "15:30:00" }, { "event_key": "690785", @@ -3576,7 +3506,6 @@ "start_time_ts": 1726092000, "end_date": "2024-09-11", "end_time": "15:10:00", - "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/19/Unset Fields (GraphQL Conf '24).pdf", @@ -3629,8 +3558,7 @@ "start_time": "15:00:00", "start_time_ts": 1726092000, "end_date": "2024-09-11", - "end_time": "15:30:00", - "event_type_sort": 10 + "end_time": "15:30:00" }, { "event_key": "695423", @@ -3676,8 +3604,7 @@ "start_time": "15:10:00", "start_time_ts": 1726092600, "end_date": "2024-09-11", - "end_time": "15:20:00", - "event_type_sort": 8 + "end_time": "15:20:00" }, { "event_key": "692297", @@ -3724,8 +3651,7 @@ "start_time": "15:20:00", "start_time_ts": 1726093200, "end_date": "2024-09-11", - "end_time": "15:30:00", - "event_type_sort": 8 + "end_time": "15:30:00" }, { "event_key": "10", @@ -3760,7 +3686,6 @@ "start_time_ts": 1726093800, "end_date": "2024-09-11", "end_time": "15:50:00", - "event_type_sort": 3, "description": "" }, { @@ -3829,8 +3754,7 @@ "start_time": "15:50:00", "start_time_ts": 1726095000, "end_date": "2024-09-11", - "end_time": "16:20:00", - "event_type_sort": 6 + "end_time": "16:20:00" }, { "event_key": "699597", @@ -3878,7 +3802,6 @@ "start_time_ts": 1726095000, "end_date": "2024-09-11", "end_time": "16:20:00", - "event_type_sort": 8, "files": [ { "path": "https://static.sched.com/hosted_files/graphqlconf2024/af/GraphqlConf 2023.pdf", @@ -3931,8 +3854,7 @@ "start_time": "15:50:00", "start_time_ts": 1726095000, "end_date": "2024-09-11", - "end_time": "16:20:00", - "event_type_sort": 10 + "end_time": "16:20:00" }, { "event_key": "706610", @@ -3978,8 +3900,7 @@ "start_time": "16:30:00", "start_time_ts": 1726097400, "end_date": "2024-09-11", - "end_time": "17:00:00", - "event_type_sort": 2 + "end_time": "17:00:00" }, { "event_key": "697477", @@ -4026,8 +3947,7 @@ "start_time": "16:30:00", "start_time_ts": 1726097400, "end_date": "2024-09-11", - "end_time": "17:00:00", - "event_type_sort": 7 + "end_time": "17:00:00" }, { "event_key": "706598", @@ -4073,8 +3993,7 @@ "start_time": "16:30:00", "start_time_ts": 1726097400, "end_date": "2024-09-11", - "end_time": "17:00:00", - "event_type_sort": 9 + "end_time": "17:00:00" }, { "event_key": "706601", @@ -4109,7 +4028,6 @@ "start_time_ts": 1726153200, "end_date": "2024-09-12", "end_time": "15:00:00", - "event_type_sort": 12, "description": "" }, { @@ -4145,8 +4063,7 @@ "start_time": "08:00:00", "start_time_ts": 1726153200, "end_date": "2024-09-12", - "end_time": "12:30:00", - "event_type_sort": 14 + "end_time": "12:30:00" }, { "event_key": "692330", @@ -4200,8 +4117,7 @@ "start_time": "09:00:00", "start_time_ts": 1726156800, "end_date": "2024-09-12", - "end_time": "10:30:00", - "event_type_sort": 1 + "end_time": "10:30:00" }, { "event_key": "706617", @@ -4238,8 +4154,7 @@ "start_time": "09:00:00", "start_time_ts": 1726156800, "end_date": "2024-09-12", - "end_time": "10:30:00", - "event_type_sort": 4 + "end_time": "10:30:00" }, { "event_key": "706616", @@ -4285,8 +4200,7 @@ "start_time": "09:00:00", "start_time_ts": 1726156800, "end_date": "2024-09-12", - "end_time": "10:30:00", - "event_type_sort": 4 + "end_time": "10:30:00" }, { "event_key": "706614", @@ -4332,8 +4246,7 @@ "start_time": "09:00:00", "start_time_ts": 1726156800, "end_date": "2024-09-12", - "end_time": "10:30:00", - "event_type_sort": 4 + "end_time": "10:30:00" }, { "event_key": "6", @@ -4368,7 +4281,6 @@ "start_time_ts": 1726162200, "end_date": "2024-09-12", "end_time": "11:00:00", - "event_type_sort": 3, "description": "" }, { @@ -4416,8 +4328,7 @@ "start_time": "11:00:00", "start_time_ts": 1726164000, "end_date": "2024-09-12", - "end_time": "12:30:00", - "event_type_sort": 7 + "end_time": "12:30:00" }, { "event_key": "706626", @@ -4452,8 +4363,7 @@ "start_time": "11:00:00", "start_time_ts": 1726164000, "end_date": "2024-09-12", - "end_time": "11:15:00", - "event_type_sort": 15 + "end_time": "11:15:00" }, { "event_key": "706629", @@ -4488,7 +4398,6 @@ "start_time_ts": 1726164900, "end_date": "2024-09-12", "end_time": "12:30:00", - "event_type_sort": 15, "description": "" }, { @@ -4524,8 +4433,7 @@ "start_time": "11:15:00", "start_time_ts": 1726164900, "end_date": "2024-09-12", - "end_time": "12:30:00", - "event_type_sort": 15 + "end_time": "12:30:00" }, { "event_key": "706628", @@ -4560,8 +4468,7 @@ "start_time": "11:15:00", "start_time_ts": 1726164900, "end_date": "2024-09-12", - "end_time": "12:30:00", - "event_type_sort": 15 + "end_time": "12:30:00" }, { "event_key": "7", @@ -4596,8 +4503,7 @@ "start_time": "12:30:00", "start_time_ts": 1726169400, "end_date": "2024-09-12", - "end_time": "14:00:00", - "event_type_sort": 3 + "end_time": "14:00:00" }, { "event_key": "1", @@ -4632,7 +4538,6 @@ "start_time_ts": 1726174800, "end_date": "2024-09-12", "end_time": "15:30:00", - "event_type_sort": 15, "description": "" }, { @@ -4668,7 +4573,6 @@ "start_time_ts": 1726174800, "end_date": "2024-09-12", "end_time": "15:30:00", - "event_type_sort": 15, "description": "" }, { @@ -4704,7 +4608,6 @@ "start_time_ts": 1726174800, "end_date": "2024-09-12", "end_time": "15:30:00", - "event_type_sort": 15, "description": "" }, { @@ -4740,7 +4643,6 @@ "start_time": "14:00:00", "start_time_ts": 1726174800, "end_date": "2024-09-12", - "end_time": "15:30:00", - "event_type_sort": 15 + "end_time": "15:30:00" } ] \ No newline at end of file diff --git a/scripts/sync-sched/speakers.json b/scripts/sync-sched/speakers.json index 5e3f636a90..922be058ce 100644 --- a/scripts/sync-sched/speakers.json +++ b/scripts/sync-sched/speakers.json @@ -26,7 +26,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502251756 }, { "username": "adam.sayah", @@ -213,10 +214,20 @@ "location": "London, United Kingdom", "url": "https://stellate.co/", "avatar": "//avatars.sched.co/9/16/18743801/avatar.jpg.320x320px.jpg?7e0", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/andheiberg" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/andheiberg/" + } + ], "~years": [ 2023 - ] + ], + "~syncedDetailsAt": 1749502266902 }, { "username": "andreas.marek1", @@ -296,10 +307,20 @@ "location": "United States", "url": "https://www.meetup.com", "avatar": "//avatars.sched.co/3/11/2147992/avatar.jpg.320x320px.jpg?b1a", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/brwngrldev" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/annycedavis" + } + ], "~years": [ 2023 - ] + ], + "~syncedDetailsAt": 1749502266902 }, { "username": "anthony_miller1", @@ -325,10 +346,20 @@ "location": "", "url": "", "avatar": "//avatars.sched.co/c/49/18743834/avatar.jpg.320x320px.jpg?7f3", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/iCarossio" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/acarossio/" + } + ], "~years": [ 2023 - ] + ], + "~syncedDetailsAt": 1749502266902 }, { "username": "anushrut.gupta", @@ -359,10 +390,20 @@ "location": "İstanbul, Türkiye", "url": "", "avatar": "//avatars.sched.co/1/10/18982310/avatar.jpg.320x320px.jpg?e18", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/ardatanrikulu" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/ardatan/" + } + ], "~years": [ 2023 - ] + ], + "~syncedDetailsAt": 1749502266902 }, { "username": "arkenflame", @@ -388,10 +429,16 @@ "location": "", "url": "", "avatar": "//avatars.sched.co/0/a8/19084619/avatar.jpg.320x320px.jpg?4ad", - "socialurls": [], + "socialurls": [ + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/ashpak--shaikh/" + } + ], "~years": [ 2023 - ] + ], + "~syncedDetailsAt": 1749502266902 }, { "username": "badurinadenis", @@ -450,10 +497,16 @@ "location": "", "url": "https://codetraveler.io", "avatar": "//avatars.sched.co/2/a4/9493345/avatar.jpg.320x320px.jpg?3ce", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/thecodetraveler" + } + ], "~years": [ 2023 - ] + ], + "~syncedDetailsAt": 1749502266902 }, { "username": "bryan.robinson2", @@ -464,10 +517,20 @@ "location": "", "url": "https://hygraph.com", "avatar": "//avatars.sched.co/5/8e/19076363/avatar.jpg.320x320px.jpg?ad8", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/brob" + }, + { + "service": "LinkedIn", + "url": "https://linkedin.com/in/bryanlrobinson" + } + ], "~years": [ 2023 - ] + ], + "~syncedDetailsAt": 1749502266902 }, { "username": "bsklar", @@ -478,10 +541,16 @@ "location": "", "url": "", "avatar": "//avatars.sched.co/d/92/18743813/avatar.jpg.320x320px.jpg?042", - "socialurls": [], + "socialurls": [ + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/benjamin-sklar/" + } + ], "~years": [ 2023 - ] + ], + "~syncedDetailsAt": 1749502266902 }, { "username": "bsy", @@ -495,7 +564,8 @@ "socialurls": [], "~years": [ 2023 - ] + ], + "~syncedDetailsAt": 1749502266902 }, { "username": "budha1", @@ -526,10 +596,20 @@ "location": "", "url": "", "avatar": "//avatars.sched.co/c/5f/19084532/avatar.jpg.320x320px.jpg?8bd", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/cernst11" + }, + { + "service": "LinkedIn", + "url": "https://nl.linkedin.com/in/christian-ernst11" + } + ], "~years": [ 2023 - ] + ], + "~syncedDetailsAt": 1749502266902 }, { "username": "christian.ernst1", @@ -593,7 +673,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501888881 }, { "username": "david3103", @@ -660,10 +741,16 @@ "location": "", "url": "", "avatar": "//avatars.sched.co/d/91/21066813/avatar.jpg.320x320px.jpg?591", - "socialurls": [], + "socialurls": [ + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/emily-li-el2857/" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501888881 }, { "username": "en3m", @@ -688,10 +775,20 @@ "location": "", "url": "", "avatar": "//avatars.sched.co/6/74/21102110/avatar.jpg.320x320px.jpg?a37", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/erik_wrede" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/erikwrede/" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501888881 }, { "username": "ernie.turner1", @@ -719,7 +816,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501888881 }, { "username": "gerard.klijs", @@ -744,10 +842,16 @@ "location": "Milan, Italy", "url": "https://keadex.dev", "avatar": "//avatars.sched.co/6/8c/21496501/avatar.jpg.320x320px.jpg?5c6", - "socialurls": [], + "socialurls": [ + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/giacomosimmi/" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501888881 }, { "username": "gilgardosh", @@ -824,10 +928,20 @@ "location": "", "url": "https://www.threads.net/@itamarok", "avatar": "//avatars.sched.co/b/e5/80829/avatar.jpg.320x320px.jpg?988", - "socialurls": [], + "socialurls": [ + { + "service": "Facebook", + "url": "https://www.facebook.com/profile.php?id=504330120" + }, + { + "service": "LinkedIn", + "url": "https://linkedin.com/in/itamarkestenbaum" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501888881 }, { "username": "jamie855", @@ -855,7 +969,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501888881 }, { "username": "jared_cheney.7rad60v", @@ -932,10 +1047,20 @@ "location": "", "url": "https://jordaneldredge.com", "avatar": "//avatars.sched.co/7/eb/21066819/avatar.jpg.320x320px.jpg?65e", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/captbaritone" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/jordaneldredge/" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501888881 }, { "username": "kamilkisiela", @@ -1005,7 +1130,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502251756 }, { "username": "kennethstott", @@ -1019,7 +1145,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501888881 }, { "username": "kevin.brown11", @@ -1033,7 +1160,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501888881 }, { "username": "kevin1700", @@ -1072,10 +1200,20 @@ "location": "", "url": "https://the-guild.dev/", "avatar": "//avatars.sched.co/2/a6/18743819/avatar.jpg.320x320px.jpg?ed8", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/n1rual" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/laurin-quast-a47b871b4/" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501892530 }, { "username": "ldebruijn", @@ -1086,10 +1224,16 @@ "location": "", "url": "", "avatar": "//avatars.sched.co/4/57/5922948/avatar.jpg.320x320px.jpg?fa5", - "socialurls": [], + "socialurls": [ + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/lars-de-bruijn/" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501892530 }, { "username": "lee_byron.25jvpjmb", @@ -1104,7 +1248,7 @@ "~years": [ 2025 ], - "~syncedDetailsAt": 1749497416063 + "~syncedDetailsAt": 1749502251756 }, { "username": "lee_byron.25krdom6", @@ -1157,10 +1301,20 @@ "location": "", "url": "", "avatar": "//avatars.sched.co/c/1d/19314398/avatar.jpg.320x320px.jpg?f73", - "socialurls": [], + "socialurls": [ + { + "service": "Facebook", + "url": "https://www.facebook.com/mattjmahoney?mibextid=LQQJ4d" + }, + { + "service": "Twitter", + "url": "https://twitter.com/mahoneymattj" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501892530 }, { "username": "marion84", @@ -1188,7 +1342,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501892530 }, { "username": "marybriskin", @@ -1202,7 +1357,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501892530 }, { "username": "masanori.uehara", @@ -1213,10 +1369,20 @@ "location": "Tokyo, Japan", "url": "https://www.tailor.tech/", "avatar": "//avatars.sched.co/4/fd/21066828/avatar.jpg.320x320px.jpg?b60", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/jackchuka" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/jackchuka/" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501892530 }, { "username": "matt1575", @@ -1230,7 +1396,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501892530 }, { "username": "mauricio.montalvo.guzman", @@ -1244,7 +1411,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501892530 }, { "username": "meenakshi.dhanani1", @@ -1283,10 +1451,20 @@ "location": "Zurich", "url": "http://chillicream.com", "avatar": "//avatars.sched.co/a/85/14900031/avatar.jpg.320x320px.jpg?df4", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/michael_staib" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/michael-staib-31519571/" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501892530 }, { "username": "michael.bleigh", @@ -1297,10 +1475,20 @@ "location": "Bay Area, CA", "url": "https://mbleigh.dev", "avatar": "//avatars.sched.co/d/0b/21066834/avatar.jpg.320x320px.jpg?83f", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/mbleigh" + }, + { + "service": "LinkedIn", + "url": "https://linkedin.com/in/mbleigh" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749501892530 }, { "username": "omribruchim", @@ -1314,7 +1502,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502056388 }, { "username": "pascal.senn", @@ -1328,7 +1517,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502056388 }, { "username": "patrick.arminio", @@ -1384,7 +1574,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502056389 }, { "username": "qkw1221", @@ -1398,7 +1589,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502056389 }, { "username": "rachit_sengupta", @@ -1409,10 +1601,16 @@ "location": "San Diego", "url": "", "avatar": "//avatars.sched.co/7/bc/21066842/avatar.jpg.320x320px.jpg?426", - "socialurls": [], + "socialurls": [ + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/rachit-sengupta-57b45513b/" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502056389 }, { "username": "rama_palaniappan", @@ -1426,7 +1624,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502056389 }, { "username": "ramnivas.laddad", @@ -1437,10 +1636,20 @@ "location": "", "url": "https://exograph.dev", "avatar": "//avatars.sched.co/6/89/21066848/avatar.jpg.320x320px.jpg?5de", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/ramnivas" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/ramnivasladdad/" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502056389 }, { "username": "robert.balicki", @@ -1454,7 +1663,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502056389 }, { "username": "robrichard87", @@ -1468,7 +1678,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502056389 }, { "username": "ruben.cagnie", @@ -1482,7 +1693,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502056389 }, { "username": "sabrina.wasserman", @@ -1496,7 +1708,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502079623 }, { "username": "saihaj", @@ -1522,10 +1735,20 @@ "location": "", "url": "https://saihaj.dev", "avatar": "//avatars.sched.co/d/77/21066858/avatar.jpg.320x320px.jpg?75f", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/singh_saihaj/" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/saihaj/" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502079623 }, { "username": "sasanders26", @@ -1536,10 +1759,16 @@ "location": "San Francisco, CA", "url": "", "avatar": "//avatars.sched.co/4/50/21066861/avatar.jpg.320x320px.jpg?2f0", - "socialurls": [], + "socialurls": [ + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/sarah-sanders-42913121a?utm_source=share&utm_campaign=share_via&utm_content=profile&utm_medi" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502079623 }, { "username": "sasha177", @@ -1550,10 +1779,20 @@ "location": "Portland, OR", "url": "sashatsolomon.com", "avatar": "//avatars.sched.co/e/e5/21336701/avatar.jpg.320x320px.jpg?ae7", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://x.com/sachee" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/sasha-s-3808365a/" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502079623 }, { "username": "satish.chitnis", @@ -1567,7 +1806,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502079623 }, { "username": "sdk.bens", @@ -1595,7 +1835,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502079623 }, { "username": "serhii.korin", @@ -1637,7 +1878,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502079623 }, { "username": "siva27", @@ -1651,7 +1893,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502079623 }, { "username": "spencer211", @@ -1676,10 +1919,16 @@ "location": "", "url": "http://stephenspalding.com", "avatar": "//avatars.sched.co/8/08/18743825/avatar.jpg.320x320px.jpg?599", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/stephenspalding" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502079623 }, { "username": "stefan239", @@ -1693,7 +1942,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502079623 }, { "username": "stephanie.saunders2", @@ -1802,10 +2052,20 @@ "location": "", "url": "https://tailcall.run", "avatar": "//avatars.sched.co/6/97/21066872/avatar.jpg.320x320px.jpg?498", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/tusharmath/" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/tusharmath/" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502251756 }, { "username": "twitter7", @@ -1816,10 +2076,20 @@ "location": "", "url": "https://apollographql.com", "avatar": "//avatars.sched.co/a/c6/18743837/avatar.jpg.320x320px.jpg?847", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/alessbell" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/alessiabellisario/" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502251756 }, { "username": "uri_goldshtein.23xujj9a", @@ -1830,10 +2100,20 @@ "location": "", "url": "http://the-guild.dev", "avatar": "//avatars.sched.co/8/2b/14900013/avatar.jpg.320x320px.jpg?9f1", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/UriGoldshtein" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/urigo" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502251756 }, { "username": "vincent.desmares", @@ -1847,7 +2127,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502251756 }, { "username": "watson17", @@ -1861,7 +2142,8 @@ "socialurls": [], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502251756 }, { "username": "yaacovcr", @@ -1886,10 +2168,20 @@ "location": "Egypt", "url": "https://the-guild.dev", "avatar": "//avatars.sched.co/4/33/18743822/avatar.jpg.320x320px.jpg?230", - "socialurls": [], + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/YassinEldeeb7" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/yassin-eldeeb/" + } + ], "~years": [ 2024 - ] + ], + "~syncedDetailsAt": 1749502251756 }, { "username": "yczhu", diff --git a/src/app/conf/_api/sched-client.tsx b/src/app/conf/_api/sched-client.tsx index 37e760f104..71349c73c1 100644 --- a/src/app/conf/_api/sched-client.tsx +++ b/src/app/conf/_api/sched-client.tsx @@ -113,6 +113,10 @@ export async function getSchedule( const result = sessions.map(session => { const { description } = session + // This field is sometimes sent as a string, sometimes as a number, + // so it creates noise in our diffs, but we don't use it anyway. + delete (session as Record)["event_type_sort"] + return { ...session, description: preprocessDescription(description), From 7844a2dbd905f9be3b9df7cde027b69d0ab7a96d Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Mon, 9 Jun 2025 23:22:17 +0200 Subject: [PATCH 05/13] Merge years properly --- .github/workflows/check.yml | 5 +- scripts/sync-sched/speakers.json | 362 ++++++++++++++--------- scripts/sync-sched/sync.ts | 8 +- src/app/conf/2023/sessions/[id]/page.tsx | 16 +- src/app/conf/2024/schedule/[id]/page.tsx | 2 +- src/app/conf/2024/speakers/[id]/page.tsx | 2 +- src/app/conf/_api/sched-data.tsx | 2 +- src/app/conf/_api/sched-types.ts | 6 +- 8 files changed, 243 insertions(+), 160 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 0983094d3e..6894e33cd7 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -17,8 +17,9 @@ jobs: - name: Install Dependencies run: pnpm i - - name: Run ESLint - run: pnpm lint --quiet + # Commented out until later PR that changes the ESLint config + # - name: Run ESLint + # run: pnpm lint --quiet - name: Run Prettier Check run: pnpm format:check diff --git a/scripts/sync-sched/speakers.json b/scripts/sync-sched/speakers.json index 922be058ce..4f0d021112 100644 --- a/scripts/sync-sched/speakers.json +++ b/scripts/sync-sched/speakers.json @@ -9,7 +9,7 @@ "url": "", "avatar": "//avatars.sched.co/9/c4/18680304/avatar.jpg.320x320px.jpg?949", "socialurls": [], - "~years": [ + "_years": [ 2023 ], "~syncedDetailsAt": 1749497543087 @@ -24,7 +24,7 @@ "url": "", "avatar": "", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502251756 @@ -48,7 +48,7 @@ "url": "https://www.linkedin.com/in/adamsayah/" } ], - "~years": [ + "_years": [ 2023 ], "~syncedDetailsAt": 1749497543087 @@ -63,10 +63,10 @@ "url": "", "avatar": "//avatars.sched.co/7/07/21066788/avatar.jpg.320x320px.jpg?825", "socialurls": [], - "~years": [ + "_years": [ 2024 ], - "~syncedDetailsAt": 1749497429311 + "~syncedDetailsAt": 1749503031962 }, { "username": "ajhingran", @@ -78,7 +78,8 @@ "url": "", "avatar": "//avatars.sched.co/3/48/19225935/avatar.jpg.320x320px.jpg?a5a", "socialurls": [], - "~years": [ + "_years": [ + 2023, 2024 ], "~syncedDetailsAt": 1749497429311 @@ -93,10 +94,10 @@ "url": "", "avatar": "//avatars.sched.co/a/aa/21066789/avatar.jpg.320x320px.jpg?256", "socialurls": [], - "~years": [ + "_years": [ 2024 ], - "~syncedDetailsAt": 1749497429311 + "~syncedDetailsAt": 1749503993038 }, { "username": "alec102", @@ -117,7 +118,7 @@ "url": "https://linkedin.com/alecaivazis" } ], - "~years": [ + "_years": [ 2023 ], "~syncedDetailsAt": 1749497543087 @@ -141,7 +142,7 @@ "url": "https://www.linkedin.com/in/alexander-reilly/" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749497429311 @@ -165,7 +166,7 @@ "url": "https://www.linkedin.com/in/aleksandra-sikora-b54699132/" } ], - "~years": [ + "_years": [ 2023 ], "~syncedDetailsAt": 1749497543087 @@ -180,7 +181,7 @@ "url": "https://redwoodjs.com", "avatar": "//avatars.sched.co/4/80/16832327/avatar.jpg.320x320px.jpg?42e", "socialurls": [], - "~years": [ + "_years": [ 2023 ], "~syncedDetailsAt": 1749497543087 @@ -200,7 +201,7 @@ "url": "https://www.linkedin.com/in/vliegveld5/" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749497429311 @@ -224,7 +225,7 @@ "url": "https://www.linkedin.com/in/andheiberg/" } ], - "~years": [ + "_years": [ 2023 ], "~syncedDetailsAt": 1749502266902 @@ -239,7 +240,7 @@ "url": "", "avatar": "//avatars.sched.co/1/ac/21066795/avatar.jpg.320x320px.jpg?e5e", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501873330 @@ -254,7 +255,7 @@ "url": "", "avatar": "//avatars.sched.co/f/c3/21066797/avatar.jpg.320x320px.jpg?012", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501873330 @@ -269,7 +270,7 @@ "url": "", "avatar": "//avatars.sched.co/e/7d/21066800/avatar.jpg.320x320px.jpg?55c", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501873330 @@ -293,7 +294,7 @@ "url": "https://www.linkedin.com/in/ankita-gupta-89214515/" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501873330 @@ -317,7 +318,7 @@ "url": "https://www.linkedin.com/in/annycedavis" } ], - "~years": [ + "_years": [ 2023 ], "~syncedDetailsAt": 1749502266902 @@ -332,7 +333,7 @@ "url": "", "avatar": "//avatars.sched.co/5/01/21066803/avatar.jpg.320x320px.jpg?46c", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501873330 @@ -356,7 +357,7 @@ "url": "https://www.linkedin.com/in/acarossio/" } ], - "~years": [ + "_years": [ 2023 ], "~syncedDetailsAt": 1749502266902 @@ -376,7 +377,7 @@ "url": "https://www.linkedin.com/in/anushrut-gupta/" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501873331 @@ -400,7 +401,7 @@ "url": "https://www.linkedin.com/in/ardatan/" } ], - "~years": [ + "_years": [ 2023 ], "~syncedDetailsAt": 1749502266902 @@ -415,7 +416,8 @@ "url": "", "avatar": "//avatars.sched.co/1/be/18743867/avatar.jpg.320x320px.jpg?5f6", "socialurls": [], - "~years": [ + "_years": [ + 2023, 2024 ], "~syncedDetailsAt": 1749497439360 @@ -435,7 +437,7 @@ "url": "https://www.linkedin.com/in/ashpak--shaikh/" } ], - "~years": [ + "_years": [ 2023 ], "~syncedDetailsAt": 1749502266902 @@ -459,7 +461,8 @@ "url": "https://www.linkedin.com/in/enisdenjo/" } ], - "~years": [ + "_years": [ + 2023, 2024 ], "~syncedDetailsAt": 1749497439360 @@ -483,10 +486,11 @@ "url": "https://www.linkedin.com/in/benjiegillam/" } ], - "~years": [ - 2025 + "_years": [ + 2023, + 2024 ], - "~syncedDetailsAt": 1749497416063 + "~syncedDetailsAt": 1749503993038 }, { "username": "brandon.r.minnick", @@ -503,7 +507,7 @@ "url": "https://twitter.com/thecodetraveler" } ], - "~years": [ + "_years": [ 2023 ], "~syncedDetailsAt": 1749502266902 @@ -527,7 +531,7 @@ "url": "https://linkedin.com/in/bryanlrobinson" } ], - "~years": [ + "_years": [ 2023 ], "~syncedDetailsAt": 1749502266902 @@ -547,7 +551,7 @@ "url": "https://www.linkedin.com/in/benjamin-sklar/" } ], - "~years": [ + "_years": [ 2023 ], "~syncedDetailsAt": 1749502266902 @@ -562,7 +566,7 @@ "url": "", "avatar": "//avatars.sched.co/7/1c/18743852/avatar.jpg.320x320px.jpg?de3", "socialurls": [], - "~years": [ + "_years": [ 2023 ], "~syncedDetailsAt": 1749502266902 @@ -582,7 +586,7 @@ "url": "https://www.linkedin.com/in/budha-b" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501873331 @@ -606,7 +610,7 @@ "url": "https://nl.linkedin.com/in/christian-ernst11" } ], - "~years": [ + "_years": [ 2023 ], "~syncedDetailsAt": 1749502266902 @@ -621,7 +625,7 @@ "url": "", "avatar": "//avatars.sched.co/9/39/21066804/avatar.jpg.320x320px.jpg?fff", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501873331 @@ -636,7 +640,7 @@ "url": "", "avatar": "//avatars.sched.co/a/5f/21066807/avatar.jpg.320x320px.jpg?a7c", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501873331 @@ -656,7 +660,7 @@ "url": "https://www.linkedin.com/in/dan-adajian-aa8aaa72" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501873331 @@ -671,7 +675,7 @@ "url": "", "avatar": "//avatars.sched.co/b/1a/21066810/avatar.jpg.320x320px.jpg?708", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501888881 @@ -686,9 +690,10 @@ "url": "", "avatar": "//avatars.sched.co/7/71/13551525/avatar.jpg.320x320px.jpg?cc8", "socialurls": [], - "~years": [ + "_years": [ 2023 - ] + ], + "~syncedDetailsAt": 1749503546034 }, { "username": "donnasiqizhou", @@ -699,10 +704,16 @@ "location": "", "url": "", "avatar": "//avatars.sched.co/0/1d/18743879/avatar.jpg.320x320px.jpg?e1f", - "socialurls": [], - "~years": [ + "socialurls": [ + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/donnazhou/" + } + ], + "_years": [ 2023 - ] + ], + "~syncedDetailsAt": 1749503546034 }, { "username": "dotansimha", @@ -713,10 +724,16 @@ "location": "", "url": "https://the-guild.dev/", "avatar": "//avatars.sched.co/1/4d/18743828/avatar.jpg.320x320px.jpg?795", - "socialurls": [], - "~years": [ + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/dotansimha" + } + ], + "_years": [ 2023 - ] + ], + "~syncedDetailsAt": 1749503782817 }, { "username": "eitan15", @@ -728,9 +745,10 @@ "url": "", "avatar": "//avatars.sched.co/5/e5/17700131/avatar.jpg.320x320px.jpg?aaf", "socialurls": [], - "~years": [ + "_years": [ 2023 - ] + ], + "~syncedDetailsAt": 1749503782817 }, { "username": "emily.li2", @@ -747,7 +765,7 @@ "url": "https://www.linkedin.com/in/emily-li-el2857/" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501888881 @@ -761,10 +779,24 @@ "location": "", "url": "https://the-guild.dev", "avatar": "//avatars.sched.co/5/78/18743843/avatar.jpg.320x320px.jpg?664", - "socialurls": [], - "~years": [ + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/B2o5T" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/postolov" + }, + { + "service": "Instagram", + "url": "https://www.instagram.com/dimdawkins" + } + ], + "_years": [ 2023 - ] + ], + "~syncedDetailsAt": 1749503981180 }, { "username": "erikwrede2", @@ -785,7 +817,7 @@ "url": "https://www.linkedin.com/in/erikwrede/" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501888881 @@ -799,10 +831,20 @@ "location": "", "url": "https://coinbase.com", "avatar": "//avatars.sched.co/b/bc/18743873/avatar.jpg.320x320px.jpg?222", - "socialurls": [], - "~years": [ + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/erniewturner" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/ernie-turner-87545395/" + } + ], + "_years": [ 2023 - ] + ], + "~syncedDetailsAt": 1749503981180 }, { "username": "gabrielschulhof", @@ -814,7 +856,7 @@ "url": "https://auction.com/", "avatar": "//avatars.sched.co/0/e6/13020672/avatar.jpg.320x320px.jpg?d7c", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501888881 @@ -828,10 +870,20 @@ "location": "", "url": "https://www.axoniq.io/", "avatar": "//avatars.sched.co/2/4b/18743792/avatar.jpg.320x320px.jpg?b61", - "socialurls": [], - "~years": [ + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/GKlijs" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/mwlite/profile/in/%F0%9F%92%BBgerard-klijs%F0%9F%A6%80-416b3744" + } + ], + "_years": [ 2023 - ] + ], + "~syncedDetailsAt": 1749503986466 }, { "username": "giacomo.simmi", @@ -848,7 +900,7 @@ "url": "https://www.linkedin.com/in/giacomosimmi/" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501888881 @@ -862,10 +914,20 @@ "location": "", "url": "https://the-guild.dev/", "avatar": "//avatars.sched.co/0/33/19070448/avatar.jpg.320x320px.jpg?34a", - "socialurls": [], - "~years": [ + "socialurls": [ + { + "service": "Twitter", + "url": "https://twitter.com/gilgardosh" + }, + { + "service": "LinkedIn", + "url": "https://www.linkedin.com/in/gil-gardosh-9a5088a5/" + } + ], + "_years": [ 2023 - ] + ], + "~syncedDetailsAt": 1749503986466 }, { "username": "gonenj", @@ -877,7 +939,7 @@ "url": "", "avatar": "//avatars.sched.co/3/c5/18743816/avatar.jpg.320x320px.jpg?0f8", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -900,7 +962,8 @@ "url": "https://www.linkedin.com/in/gethackteam" } ], - "~years": [ + "_years": [ + 2023, 2024 ], "~syncedDetailsAt": 1749497439360 @@ -915,7 +978,7 @@ "url": "", "avatar": "//avatars.sched.co/e/82/18769950/avatar.jpg.320x320px.jpg?ca2", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -938,7 +1001,7 @@ "url": "https://linkedin.com/in/itamarkestenbaum" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501888881 @@ -953,7 +1016,7 @@ "url": "https://grafbase.com", "avatar": "//avatars.sched.co/c/f3/18743804/avatar.jpg.320x320px.jpg?2a2", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -967,7 +1030,7 @@ "url": "", "avatar": "//avatars.sched.co/c/c0/21066816/avatar.jpg.320x320px.jpg?aa7", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501888881 @@ -982,7 +1045,7 @@ "url": "intuit.com", "avatar": "//avatars.sched.co/4/e3/18775617/avatar.jpg.320x320px.jpg?01b", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1005,7 +1068,8 @@ "url": "https://www.linkedin.com/in/jeffreyauriemma/" } ], - "~years": [ + "_years": [ + 2023, 2024 ], "~syncedDetailsAt": 1749497439360 @@ -1020,7 +1084,7 @@ "url": "https://wundergraph.com", "avatar": "//avatars.sched.co/3/68/19226202/avatar.jpg.320x320px.jpg?aea", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1034,7 +1098,7 @@ "url": "https://solo.io", "avatar": "//avatars.sched.co/f/74/12615290/avatar.jpg.320x320px.jpg?8cc", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1057,7 +1121,7 @@ "url": "https://www.linkedin.com/in/jordaneldredge/" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501888881 @@ -1085,7 +1149,8 @@ "url": "https://www.instagram.com/kisiel_ogarnij" } ], - "~years": [ + "_years": [ + 2023, 2024 ], "~syncedDetailsAt": 1749497439360 @@ -1100,7 +1165,7 @@ "url": "https://solo.io", "avatar": "//avatars.sched.co/a/6d/14553875/avatar.jpg.320x320px.jpg?9aa", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1114,7 +1179,7 @@ "url": "", "avatar": "//avatars.sched.co/2/05/19071264/avatar.jpg.320x320px.jpg?0c9", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1128,7 +1193,7 @@ "url": "", "avatar": "", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502251756 @@ -1143,7 +1208,7 @@ "url": "", "avatar": "//avatars.sched.co/f/b3/21066821/avatar.jpg.320x320px.jpg?439", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501888881 @@ -1158,7 +1223,7 @@ "url": "", "avatar": "//avatars.sched.co/f/4d/21490044/avatar.jpg.320x320px.jpg?2c5", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501888881 @@ -1173,7 +1238,7 @@ "url": "", "avatar": "//avatars.sched.co/2/d0/19150962/avatar.jpg.320x320px.jpg?e4c", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1187,7 +1252,7 @@ "url": "", "avatar": "//avatars.sched.co/4/7d/18853523/avatar.jpg.320x320px.jpg?fdb", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1210,7 +1275,8 @@ "url": "https://www.linkedin.com/in/laurin-quast-a47b871b4/" } ], - "~years": [ + "_years": [ + 2023, 2024 ], "~syncedDetailsAt": 1749501892530 @@ -1230,7 +1296,7 @@ "url": "https://www.linkedin.com/in/lars-de-bruijn/" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501892530 @@ -1245,7 +1311,8 @@ "url": "", "avatar": "//avatars.sched.co/5/24/18743534/avatar.jpg.320x320px.jpg?480", "socialurls": [], - "~years": [ + "_years": [ + 2024, 2025 ], "~syncedDetailsAt": 1749502251756 @@ -1260,7 +1327,7 @@ "url": "", "avatar": "//avatars.sched.co/8/92/18769956/avatar.jpg.320x320px.jpg?547", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1274,7 +1341,7 @@ "url": "https://miro.com", "avatar": "//avatars.sched.co/f/19/5604312/avatar.jpg.320x320px.jpg?db4", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1288,7 +1355,7 @@ "url": "https://lyonwj.com/", "avatar": "//avatars.sched.co/5/93/19084292/avatar.jpg.320x320px.jpg?348", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1311,7 +1378,7 @@ "url": "https://twitter.com/mahoneymattj" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501892530 @@ -1326,7 +1393,7 @@ "url": "", "avatar": "//avatars.sched.co/b/cf/19150944/avatar.jpg.320x320px.jpg?418", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1340,7 +1407,7 @@ "url": "", "avatar": "//avatars.sched.co/6/33/21066825/avatar.jpg.320x320px.jpg?23a", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501892530 @@ -1355,7 +1422,7 @@ "url": "", "avatar": "//avatars.sched.co/2/3f/21457039/avatar.jpg.320x320px.jpg?7cf", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501892530 @@ -1379,7 +1446,7 @@ "url": "https://www.linkedin.com/in/jackchuka/" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501892530 @@ -1394,7 +1461,7 @@ "url": "", "avatar": "//avatars.sched.co/c/59/7503056/avatar.jpg.320x320px.jpg?f15", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501892530 @@ -1409,7 +1476,7 @@ "url": "", "avatar": "//avatars.sched.co/8/d4/21066831/avatar.jpg.320x320px.jpg?a40", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501892530 @@ -1424,7 +1491,7 @@ "url": "", "avatar": "//avatars.sched.co/4/8c/18777983/avatar.jpg.320x320px.jpg?237", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1438,7 +1505,7 @@ "url": "https://productionreadygraphql.com/", "avatar": "//avatars.sched.co/0/61/9031414/avatar.jpg.320x320px.jpg?b12", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1461,7 +1528,8 @@ "url": "https://www.linkedin.com/in/michael-staib-31519571/" } ], - "~years": [ + "_years": [ + 2023, 2024 ], "~syncedDetailsAt": 1749501892530 @@ -1485,7 +1553,7 @@ "url": "https://linkedin.com/in/mbleigh" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749501892530 @@ -1500,7 +1568,7 @@ "url": "", "avatar": "//avatars.sched.co/8/5c/21066837/avatar.jpg.320x320px.jpg?b62", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502056388 @@ -1515,7 +1583,7 @@ "url": "", "avatar": "//avatars.sched.co/f/4e/21066839/avatar.jpg.320x320px.jpg?7e4", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502056388 @@ -1530,7 +1598,7 @@ "url": "https://patrick.wtf", "avatar": "//avatars.sched.co/1/ab/19178765/avatar.jpg.320x320px.jpg?bd3", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1544,7 +1612,7 @@ "url": "https://www.postman.com", "avatar": "//avatars.sched.co/f/0e/15289322/avatar.jpg.320x320px.jpg?4a4", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1558,7 +1626,7 @@ "url": "", "avatar": "//avatars.sched.co/d/a3/18775745/avatar.jpg.320x320px.jpg?cfc", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1572,7 +1640,7 @@ "url": "", "avatar": "//avatars.sched.co/1/b4/21225462/avatar.jpg.320x320px.jpg?a43", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502056389 @@ -1587,7 +1655,8 @@ "url": "https://investor.fb.com/home/default.aspx", "avatar": "//avatars.sched.co/9/1a/18743864/avatar.jpg.320x320px.jpg?7fa", "socialurls": [], - "~years": [ + "_years": [ + 2023, 2024 ], "~syncedDetailsAt": 1749502056389 @@ -1607,7 +1676,7 @@ "url": "https://www.linkedin.com/in/rachit-sengupta-57b45513b/" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502056389 @@ -1622,7 +1691,7 @@ "url": "", "avatar": "//avatars.sched.co/5/dc/21066845/avatar.jpg.320x320px.jpg?4c4", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502056389 @@ -1646,7 +1715,7 @@ "url": "https://www.linkedin.com/in/ramnivasladdad/" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502056389 @@ -1661,7 +1730,8 @@ "url": "", "avatar": "//avatars.sched.co/5/8b/18743858/avatar.jpg.320x320px.jpg?07e", "socialurls": [], - "~years": [ + "_years": [ + 2023, 2024 ], "~syncedDetailsAt": 1749502056389 @@ -1676,7 +1746,7 @@ "url": "", "avatar": "//avatars.sched.co/b/cb/21066852/avatar.jpg.320x320px.jpg?cd2", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502056389 @@ -1691,7 +1761,7 @@ "url": "", "avatar": "//avatars.sched.co/1/37/21066855/avatar.jpg.320x320px.jpg?9fa", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502056389 @@ -1706,7 +1776,7 @@ "url": "", "avatar": "//avatars.sched.co/d/94/21066857/avatar.jpg.320x320px.jpg?49c", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502079623 @@ -1721,7 +1791,7 @@ "url": "", "avatar": "", "socialurls": [], - "~years": [ + "_years": [ 2025 ], "~syncedDetailsAt": 1749497416063 @@ -1745,7 +1815,7 @@ "url": "https://www.linkedin.com/in/saihaj/" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502079623 @@ -1765,7 +1835,7 @@ "url": "https://www.linkedin.com/in/sarah-sanders-42913121a?utm_source=share&utm_campaign=share_via&utm_content=profile&utm_medi" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502079623 @@ -1789,7 +1859,7 @@ "url": "https://www.linkedin.com/in/sasha-s-3808365a/" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502079623 @@ -1804,7 +1874,7 @@ "url": "", "avatar": "//avatars.sched.co/1/c3/21496512/avatar.jpg.320x320px.jpg?0c2", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502079623 @@ -1819,7 +1889,7 @@ "url": "", "avatar": "//avatars.sched.co/2/52/18743831/avatar.jpg.320x320px.jpg?746", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1833,7 +1903,7 @@ "url": "", "avatar": "//avatars.sched.co/7/bc/21066863/avatar.jpg.320x320px.jpg?c03", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502079623 @@ -1848,7 +1918,7 @@ "url": "", "avatar": "//avatars.sched.co/4/6a/19235292/avatar.jpg.320x320px.jpg?3fe", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1862,7 +1932,7 @@ "url": "https://inigo.io/", "avatar": "//avatars.sched.co/c/b0/17274089/avatar.jpg.320x320px.jpg?cec", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1876,7 +1946,7 @@ "url": "", "avatar": "//avatars.sched.co/3/e1/21458022/avatar.jpg.320x320px.jpg?bde", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502079623 @@ -1891,7 +1961,7 @@ "url": "", "avatar": "//avatars.sched.co/f/23/9778144/avatar.jpg.320x320px.jpg?422", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502079623 @@ -1906,7 +1976,7 @@ "url": "", "avatar": "//avatars.sched.co/e/9c/18743795/avatar.jpg.320x320px.jpg?957", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1925,7 +1995,8 @@ "url": "https://twitter.com/stephenspalding" } ], - "~years": [ + "_years": [ + 2023, 2024 ], "~syncedDetailsAt": 1749502079623 @@ -1940,7 +2011,7 @@ "url": "", "avatar": "//avatars.sched.co/0/e6/21335795/avatar.jpg.320x320px.jpg?985", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502079623 @@ -1955,7 +2026,7 @@ "url": "", "avatar": "//avatars.sched.co/1/65/14992671/avatar.jpg.320x320px.jpg?588", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1969,7 +2040,7 @@ "url": "https://www.intuit.com/", "avatar": "//avatars.sched.co/2/29/18743849/avatar.jpg.320x320px.jpg?d1d", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1983,7 +2054,7 @@ "url": "https://hasura.io", "avatar": "//avatars.sched.co/1/7c/4968006/avatar.jpg.320x320px.jpg?81a", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -1997,7 +2068,7 @@ "url": "t3.gg", "avatar": "//avatars.sched.co/2/a1/19108367/avatar.jpg.320x320px.jpg?09c", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -2011,7 +2082,7 @@ "url": "", "avatar": "//avatars.sched.co/d/37/14989332/avatar.jpg.320x320px.jpg?9f4", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -2025,7 +2096,7 @@ "url": "https://www.postman.com", "avatar": "//avatars.sched.co/a/76/18743807/avatar.jpg.320x320px.jpg?7e7", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -2039,7 +2110,7 @@ "url": "https://escape.tech", "avatar": "//avatars.sched.co/7/08/19011005/avatar.jpg.320x320px.jpg?53c", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -2062,7 +2133,7 @@ "url": "https://www.linkedin.com/in/tusharmath/" } ], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502251756 @@ -2086,7 +2157,8 @@ "url": "https://www.linkedin.com/in/alessiabellisario/" } ], - "~years": [ + "_years": [ + 2023, 2024 ], "~syncedDetailsAt": 1749502251756 @@ -2110,7 +2182,8 @@ "url": "https://www.linkedin.com/in/urigo" } ], - "~years": [ + "_years": [ + 2023, 2024 ], "~syncedDetailsAt": 1749502251756 @@ -2125,7 +2198,7 @@ "url": "https://www.teamstarter.com/en", "avatar": "//avatars.sched.co/d/cc/21066875/avatar.jpg.320x320px.jpg?f80", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502251756 @@ -2140,7 +2213,7 @@ "url": "", "avatar": "//avatars.sched.co/4/84/19024254/avatar.jpg.320x320px.jpg?838", "socialurls": [], - "~years": [ + "_years": [ 2024 ], "~syncedDetailsAt": 1749502251756 @@ -2155,7 +2228,7 @@ "url": "https://github.com/yaacovCR", "avatar": "//avatars.sched.co/4/e4/18743840/avatar.jpg.320x320px.jpg?eb9", "socialurls": [], - "~years": [ + "_years": [ 2023 ] }, @@ -2178,7 +2251,8 @@ "url": "https://www.linkedin.com/in/yassin-eldeeb/" } ], - "~years": [ + "_years": [ + 2023, 2024 ], "~syncedDetailsAt": 1749502251756 @@ -2193,7 +2267,7 @@ "url": "", "avatar": "//avatars.sched.co/4/46/18743882/avatar.jpg.320x320px.jpg?6ba", "socialurls": [], - "~years": [ + "_years": [ 2023 ] } diff --git a/scripts/sync-sched/sync.ts b/scripts/sync-sched/sync.ts index 10c7cf8f88..36d50dc57c 100644 --- a/scripts/sync-sched/sync.ts +++ b/scripts/sync-sched/sync.ts @@ -110,7 +110,7 @@ async function sync(year: number, detailsRequestsQuota: number, token: string) { await thisYearSpeakers.then(speakers => speakers.map(s => ({ ...s, - ["~years"]: [year as ConferenceYear], + _years: [year as ConferenceYear], })), ), "username", @@ -402,10 +402,10 @@ function mergeSpeaker( socialurls: newSpeaker.socialurls?.length ? newSpeaker.socialurls : oldSpeaker.socialurls, - ["~years"]: [ + ["_years"]: [ ...new Set([ - ...(oldSpeaker["~years"] || []), - ...(newSpeaker["~years"] || []), + ...(oldSpeaker["_years"] || []), + ...(newSpeaker["_years"] || []), ]), ].sort(), } diff --git a/src/app/conf/2023/sessions/[id]/page.tsx b/src/app/conf/2023/sessions/[id]/page.tsx index 9cf13d884b..5245e65199 100644 --- a/src/app/conf/2023/sessions/[id]/page.tsx +++ b/src/app/conf/2023/sessions/[id]/page.tsx @@ -63,10 +63,16 @@ export default function SessionPage({ params }: SessionProps) { if (!event) { notFound() } - // @ts-expect-error -- fixme - event.speakers = event.speakers!.map(speaker => - speakers.find(s => s.username === speaker.username), - ) + + event.speakers = (event.speakers || []).map(speaker => { + const s = speakers.find(s => s.username === speaker.username) + if (!s) { + throw new Error( + `Speaker not found: "${speaker.username}" in "${event.name}".`, + ) + } + return s + }) const eventType = event.event_type.endsWith("s") ? event.event_type.slice(0, -1) @@ -86,7 +92,7 @@ export default function SessionPage({ params }: SessionProps) {
    -
    +
    {recordingTitle.rating > 0.5 && ( diff --git a/src/app/conf/2024/schedule/[id]/page.tsx b/src/app/conf/2024/schedule/[id]/page.tsx index cdf9b73443..28fd913f75 100644 --- a/src/app/conf/2024/schedule/[id]/page.tsx +++ b/src/app/conf/2024/schedule/[id]/page.tsx @@ -110,7 +110,7 @@ export default function SessionPage({ params }: SessionProps) {
    -
    +