diff --git a/.env b/.env deleted file mode 100644 index d9879c2..0000000 --- a/.env +++ /dev/null @@ -1,2 +0,0 @@ -CMS_TOKEN=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ2ZXJzaW9uIjoxLCJ0b2tlbklkIjoiN2Y5ZTE0YzYtOTUwZi00M2Q1LWI0NmQtZmVlNDAzNGQ1MGU4In0.-ciA-_yc1XybCAo7E7JNax_CkGxmbekjn7guE2moNro -CMS_ENDPOINT=https://api-euwest.graphcms.com/v1/ck0qr5av4094801d49206aeqn/master diff --git a/.gitignore b/.gitignore index 69ec850..34502ab 100755 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,6 @@ package-lock.json content-log.json dist/ + +.env +.env.local \ No newline at end of file diff --git a/develop/conference-settings.js b/develop/conference-settings.js new file mode 100644 index 0000000..6506097 --- /dev/null +++ b/develop/conference-settings.js @@ -0,0 +1,36 @@ +const fallback = require('./fallback-settings'); + +const confCodes = [ + 'jsn', + 'gqconf', + 'mlconf', + 'qaconf', + 'doconf', + 'nodeconf', + 'rs', +]; + +const getSettings = () => { + const settings = confCodes.reduce( + (acc, code) => ({ ...acc, [code]: fallback }), + {}, + ); + try { + confCodes.forEach(code => { + settings[ + code + ] = require(`../../live-conferences/src/conferences/${code}/conference-settings`); + }); + return settings; + } catch (err) { + if (err.code === 'MODULE_NOT_FOUND') { + console.log( + `\n\nCan't find live-conferences folder. Fallback settings will be used!\n\n`, + ); + return settings; + } + throw err; + } +}; + +module.exports = { getSettings }; diff --git a/tests/jsnation.conference-settings.js b/develop/fallback-settings.js similarity index 66% rename from tests/jsnation.conference-settings.js rename to develop/fallback-settings.js index b70ee1c..2f38e67 100644 --- a/tests/jsnation.conference-settings.js +++ b/develop/fallback-settings.js @@ -1,4 +1,4 @@ -const conferenceTitle = 'React_Summit_Online'; +const conferenceTitle = 'React_Amsterdam'; const eventYear = 'Y2020'; const tagColors = { @@ -34,6 +34,26 @@ const tagColors = { tagBG: '#61DAFB', color: '#030303', }, + 'Summit Track': { + tagBG: '#a4ff00', + color: '#324e00', + }, + 'Base Camp Track': { + tagBG: '#696969', + color: '#e7e7e7', + }, + 'Lightning Talk': { + tagBG: '#2acadd', + color: '#003238', + }, + 'Panel Discussion': { + tagBG: '#ddce2a', + color: '#3f3a00', + }, + Workshop: { + tagBG: '#bd2add', + color: '#f3cbff', + }, default: { tagBG: 'black', color: 'white', @@ -48,8 +68,8 @@ const speakerAvatar = { }; module.exports = { - conferenceTitle, - eventYear, tagColors, speakerAvatar, + conferenceTitle, + eventYear, }; diff --git a/develop/index.js b/develop/index.js new file mode 100644 index 0000000..48fdc13 --- /dev/null +++ b/develop/index.js @@ -0,0 +1,20 @@ +const fs = require('fs'); +const path = require('path'); + +const { getContent } = require('../dist'); +const { getSettings } = require('./conference-settings'); + +const CURRENT_CONF = 'mlconf'; + +const testLaunch = async () => { + const settings = getSettings(); + const content = await getContent(settings[CURRENT_CONF]); + + fs.writeFileSync( + path.resolve(__dirname, '../content-log.json'), + JSON.stringify(content, null, 2), + ); + // console.log('content', content); +}; + +testLaunch(); diff --git a/package.json b/package.json index 4cbdd4f..1045275 100755 --- a/package.json +++ b/package.json @@ -1,17 +1,18 @@ { "name": "@focus-reactive/graphql-content-layer", - "version": "2.3.7", + "version": "3.0.0", "private": false, "main": "dist/index.js", "scripts": { "start": "yarn dev | yarn storybook | yarn tdd", "dev": "nodemon --exec yarn prepare", + "test-run": "node develop", "storybook": "start-storybook -p 6001 --ci", "update-schema": "graphql get-schema", "test": "jest", "test:smoke": "jest tests/smoke.test.js --detectOpenHandles", "tdd": "jest --watch", - "prepare": "package-prepare", + "prepare": "package-prepare && yarn test-run", "prestart": "relative-deps", "-prepare": "yarn relative-deps", "update-dependencies": "yarn upgradeInteractive --latest" @@ -41,6 +42,7 @@ "graphql-cli": "^3.0.14", "jest": "^24.9.0", "nodemon": "^2.0.2", + "object-hash": "^2.0.3", "prettier": "^1.19.1", "relative-deps": "^0.2.0" }, @@ -54,7 +56,7 @@ "@storybook/addons": "^5.2.8", "@storybook/react": "^5.2.8", "@storybook/storybook-deployer": "^2.8.1", - "dayjs": "^1.8.19", + "dayjs": "^1.9.6", "graphql-request": "^1.8.2", "react": "^16.12.0", "react-json-view": "^1.19.1", diff --git a/src/content-type-map.js b/src/content-type-map.js index 2ffecfe..31bed5b 100644 --- a/src/content-type-map.js +++ b/src/content-type-map.js @@ -14,9 +14,19 @@ const contentTypeMap = { PieceOfText: 'c04bfcdd2eed47b880588f5506ed4f5a', Speaker: 'e981e312fd6c48a39230de9193be4db9', Sponsor: 'f188bcf25c8e419d9f8d10b0926dd825', - Talk: 'd5d4bfeb605c41569b30d478a03bbb0e', + // Talk: 'd5d4bfeb605c41569b30d478a03bbb0e', Track: '76d236bfe3344d0990028c5f69c69079', Workshop: '2ce17eb4016e4be5ae72bb0db484f3f0', + + // updated + OrgEvent: 'cda52433c9fd4a6a818f71acd217e91d', + Talk: '03b4712293184731b7d1bf074302f8e0', + QA: '3473d8bc2712475c89e0b47d31b2ee97', + LightningTalk: '09be1744ee4d465ea3f5a82972d2cb28', + GroupLT: '694d3ca13ab44d45810c18fb01580c92', + SpeakersRoom: 'b701d52be9d84599a3d46972acafc42f', + DiscussionRoom: '07f1cfefde1942fbb63704917cbf2398', + }; module.exports = { diff --git a/src/fetch-advisers.js b/src/fetch-advisers.js index 432fa80..cc94ceb 100644 --- a/src/fetch-advisers.js +++ b/src/fetch-advisers.js @@ -1,4 +1,4 @@ -const { prepareSpeakers, trySelectSettings } = require('./utils'); +const { trySelectSettings } = require('./utils'); const { personFragment } = require('./fragments'); const selectSettings = trySelectSettings( @@ -23,21 +23,14 @@ const queryPages = /* GraphQL */ ` ) { conf: conferenceBrand(where: { title: $conferenceTitle }) { id - status - year: conferenceEvents(where: { year: $eventYear }) { + year: conferenceEvents( + where: { year: $eventYear, adviceLounges_some: {} } + ) { id - status - schedule: daySchedules(where: { adviceLounges_some: {} }) { - id - status - additionalEvents - adviceLounges { - status - id - expertise - speaker { - ...person - } + schedule: adviceLounges { + expertise + speaker { + ...person } } } @@ -49,44 +42,38 @@ const queryPages = /* GraphQL */ ` const fetchData = async (client, { tagColors, labelColors, ...vars }) => { const data = await client .request(queryPages, vars) - .then(res => res.conf.year[0].schedule); + .then(res => (res.conf.year[0] ? res.conf.year[0].schedule : [])); - const advisers = data.reduce( - (all, day) => [ - ...all, - ...day.adviceLounges - .map(({ expertise, speaker }) => ({ - expertise, - speaker: speaker || {}, - })) - .map( - ({ - expertise, - speaker: { - name, - company, - bio, - githubUrl, - twitterUrl, - mediumUrl, - ownSite, - avatar, - }, - }) => ({ - expertise, - name, - photo: avatar && avatar.url, - company, - desc: bio, - github: githubUrl, - twitter: twitterUrl, - medium: mediumUrl, - site: ownSite, - }), - ), - ], - [], - ); + const advisers = data + .map(({ expertise, speaker }) => ({ + expertise, + speaker: speaker || {}, + })) + .map( + ({ + expertise, + speaker: { + name, + company, + bio, + githubUrl, + twitterUrl, + mediumUrl, + ownSite, + avatar, + }, + }) => ({ + expertise, + name, + photo: avatar && avatar.url, + company, + desc: bio, + github: githubUrl, + twitter: twitterUrl, + medium: mediumUrl, + site: ownSite, + }), + ); return { speakers: { advisers }, diff --git a/src/fetch-brand.js b/src/fetch-brand.js index 1796051..fe64b94 100644 --- a/src/fetch-brand.js +++ b/src/fetch-brand.js @@ -5,7 +5,6 @@ const queryPages = /* GraphQL */ ` query($conferenceTitle: ConferenceTitle) { conf: conferenceBrand(where: { title: $conferenceTitle }) { id - status city url title diff --git a/src/fetch-committee.js b/src/fetch-committee.js index 2d63341..d69bccf 100644 --- a/src/fetch-committee.js +++ b/src/fetch-committee.js @@ -1,7 +1,6 @@ const { prepareSpeakers, trySelectSettings, - contentTypeMap, } = require('./utils'); const { personFragment } = require('./fragments'); @@ -19,10 +18,8 @@ const queryPages = /* GraphQL */ ` ) { conf: conferenceBrand(where: { title: $conferenceTitle }) { id - status year: conferenceEvents(where: { year: $eventYear }) { id - status committee { ...person } diff --git a/src/fetch-diversity.js b/src/fetch-diversity.js index af1b2a6..703c221 100644 --- a/src/fetch-diversity.js +++ b/src/fetch-diversity.js @@ -5,13 +5,10 @@ const queryPages = /* GraphQL */ ` query($conferenceTitle: ConferenceTitle, $eventYear: EventYear) { conf: conferenceBrand(where: { title: $conferenceTitle }) { id - status year: conferenceEvents(where: { year: $eventYear }) { id - status diversity { id - status title description maxTickets diff --git a/src/fetch-extended.js b/src/fetch-extended.js index d094b4e..0247943 100644 --- a/src/fetch-extended.js +++ b/src/fetch-extended.js @@ -5,10 +5,8 @@ const queryPages = /* GraphQL */ ` query($conferenceTitle: ConferenceTitle, $eventYear: EventYear) { conf: conferenceBrand(where: { title: $conferenceTitle }) { id - status year: conferenceEvents(where: { year: $eventYear }) { id - status extendeds { id key diff --git a/src/fetch-faq.js b/src/fetch-faq.js index a095da9..e95d834 100644 --- a/src/fetch-faq.js +++ b/src/fetch-faq.js @@ -5,10 +5,8 @@ const queryPages = /* GraphQL */ ` query($conferenceTitle: ConferenceTitle, $eventYear: EventYear) { conf: conferenceBrand(where: { title: $conferenceTitle }) { id - status year: conferenceEvents(where: { year: $eventYear }) { id - status faqs { id category diff --git a/src/fetch-jobs.js b/src/fetch-jobs.js index 037b319..0dc8487 100644 --- a/src/fetch-jobs.js +++ b/src/fetch-jobs.js @@ -6,10 +6,8 @@ const queryPages = /* GraphQL */ ` query($conferenceTitle: ConferenceTitle, $eventYear: EventYear) { conf: conferenceBrand(where: { title: $conferenceTitle }) { id - status year: conferenceEvents(where: { year: $eventYear }) { id - status jobAds { id title diff --git a/src/fetch-mc.js b/src/fetch-mc.js index 15bf004..977e256 100644 --- a/src/fetch-mc.js +++ b/src/fetch-mc.js @@ -1,4 +1,4 @@ -const { prepareSpeakers, trySelectSettings, contentTypeMap } = require('./utils'); +const { prepareSpeakers, trySelectSettings } = require('./utils'); const { personFragment } = require('./fragments'); const selectSettings = trySelectSettings(s => s.speakerAvatar.dimensions, { @@ -15,10 +15,8 @@ const queryPages = /* GraphQL */ ` ) { conf: conferenceBrand(where: { title: $conferenceTitle }) { id - status year: conferenceEvents(where: { year: $eventYear }) { id - status mcs { id speaker { diff --git a/src/fetch-pages.js b/src/fetch-pages.js index e61fd63..07be9a8 100644 --- a/src/fetch-pages.js +++ b/src/fetch-pages.js @@ -1,13 +1,56 @@ -const { contentTypeMap } = require('./utils'); +const { + orgEvent, + talkEvent, + discussionRoomEvent, + speakerRoomEvent, + groupLTEvent, + qaEvent, +} = require('./fragments'); +const { markdownToHtml } = require('./markdown'); +const { contentTypeMap, trySelectSettings } = require('./utils'); +const { formatEvent } = require('./formatters'); + +const selectSettings = trySelectSettings( + s => ({ + labelColors: s.labelColors, + }), + {}, +); const queryPages = /* GraphQL */ ` query($conferenceTitle: ConferenceTitle, $eventYear: EventYear) { conf: conferenceBrand(where: { title: $conferenceTitle }) { id - status year: conferenceEvents(where: { year: $eventYear }) { id - status + startDate: isoStartDate + endDate: isoEndDate + tracks { + id + name + isPrimary + events { + __typename + ... on OrgEvent { + ...orgEventFragment + } + ... on Talk { + ...talkEventFragment + } + ... on QA { + ...qaEventFragment + } + ... on GroupLT { + ...groupLTEventFragment + } + ... on SpeakersRoom { + ...speakerRoomEventFragment + } + ... on DiscussionRoom { + ...discussionRoomEventFragment + } + } + } pages { id titleSeo @@ -28,12 +71,48 @@ const queryPages = /* GraphQL */ ` } } } + + ${orgEvent} + ${talkEvent} + ${discussionRoomEvent} + ${speakerRoomEvent} + ${groupLTEvent} + ${qaEvent} `; -const fetchData = async (client, vars) => { - const data = await client +const fetchData = async (client, { labelColors, ...vars }) => { + const { pages: data, tracks, startDate, endDate } = await client .request(queryPages, vars) - .then(res => res.conf.year[0].pages); + .then(res => res.conf.year[0]); + + const secondaryTracks = tracks.filter(t => !t.isPrimary); + const formattedSecondaryTracks = await Promise.all( + secondaryTracks.map(async (track, ind) => { + const listWithMarkdown = await Promise.all( + track.events + // eslint-disable-next-line no-underscore-dangle + .map(async event => { + const result = await formatEvent(event, labelColors, track.name); + return result; + }), + ); + + const clearList = await Promise.all( + listWithMarkdown.map(async el => ({ + ...el, + text: await markdownToHtml(el.text), + })), + ); + + return { + tab: track.name, + title: track.name, + name: `${10 + ind}`, + odd: Boolean(ind % 2), + list: clearList, + }; + }), + ); const pages = data.reduce( (obj, item) => ({ @@ -47,53 +126,40 @@ const fetchData = async (client, vars) => { {}, ); + const videoRooms = formattedSecondaryTracks.reduce((result, currentTrack) => { + return [ + ...result, + ...currentTrack.list.filter( + event => event.eventType === 'DiscussionRoom', + ), + ]; + }, []); + const customContent = { - videoRooms: [], + videoRooms, scheduleExtends: [], - tracks: [], + tracks: formattedSecondaryTracks, eventInfo: {}, }; data.forEach(page => { - if (page.pageSections && page.pageSections.tracks) { - const customTracks = page.pageSections.tracks; - customTracks.forEach(({ list }) => { - if (!list) { - return; - } - list.forEach(customEvent => { - if (customEvent.type === 'videoRoom') { - customContent.videoRooms.push(customEvent); - } - }); - }); - } if (page.pageSections && page.pageSections.scheduleExtends) { customContent.scheduleExtends = [ ...customContent.scheduleExtends, ...page.pageSections.scheduleExtends, ]; } - if (page.pageSections && page.pageSections.tracks) { - customContent.tracks = [ - ...customContent.tracks, - ...page.pageSections.tracks, - ]; - } + if (page.pageSections && page.pageSections.eventInfo) { customContent.eventInfo = { ...customContent.eventInfo, ...page.pageSections.eventInfo, + conferenceStart: startDate, + conferenceFinish: endDate, }; } }); - customContent.videoRooms = customContent.videoRooms.sort((a, b) => { - const orderA = a.orderAsc || Infinity; - const orderB = b.orderAsc || Infinity; - return orderA >= orderB; - }); - return { pages, customContent, @@ -102,6 +168,7 @@ const fetchData = async (client, vars) => { module.exports = { fetchData, + selectSettings, queryPages, getData: data => data.conf.year[0].pages, story: 'pages', diff --git a/src/fetch-performance.js b/src/fetch-performance.js index 0dfe04c..1f39531 100644 --- a/src/fetch-performance.js +++ b/src/fetch-performance.js @@ -1,4 +1,4 @@ -const { prepareSpeakers, trySelectSettings, contentTypeMap } = require('./utils'); +const { prepareSpeakers, trySelectSettings } = require('./utils'); const { personFragment } = require('./fragments'); const selectSettings = trySelectSettings(s => s.speakerAvatar.dimensions, { @@ -15,10 +15,8 @@ const queryPages = /* GraphQL */ ` ) { conf: conferenceBrand(where: { title: $conferenceTitle }) { id - status year: conferenceEvents(where: { year: $eventYear }) { id - status performanceTeam { ...person } diff --git a/src/fetch-speakers.js b/src/fetch-speakers.js index dcc1f21..2b0c33b 100644 --- a/src/fetch-speakers.js +++ b/src/fetch-speakers.js @@ -1,5 +1,6 @@ const { prepareSpeakers, trySelectSettings } = require('./utils'); const { speakerInfoFragment } = require('./fragments'); +const dayjs = require('dayjs'); const selectSettings = trySelectSettings( s => ({ @@ -23,17 +24,34 @@ const queryPages = /* GraphQL */ ` ) { conf: conferenceBrand(where: { title: $conferenceTitle }) { id - status year: conferenceEvents(where: { year: $eventYear }) { id - status openForTalks - speakers: pieceOfSpeakerInfoes(orderBy: order_DESC) { + speakers: pieceOfSpeakerInfoes { ...speakerInfo activities: speaker { + lightningTalks( + where: { + track: { + conferenceEvent: { + year: $eventYear + conferenceBrand: { title: $conferenceTitle } + } + } + } + ) { + id + title + description + timeString: isoDate + track { + name + isPrimary + } + } talks( where: { - daySchedule: { + track: { conferenceEvent: { year: $eventYear conferenceBrand: { title: $conferenceTitle } @@ -43,9 +61,9 @@ const queryPages = /* GraphQL */ ` ) { id title + label description - timeString - isLightning + timeString: isoDate track { name isPrimary @@ -68,7 +86,26 @@ const fetchData = async (client, { tagColors, labelColors, ...vars }) => { const { openForTalks } = data; - const speakers = await prepareSpeakers(data.speakers, tagColors, labelColors); + const convertDateToIso = item => ({ + ...item, + timeString: item.timeString ? dayjs(item.timeString).toISOString() : null, + }); + + const speakersWithPlainActivities = data.speakers.map(speaker => ({ + ...speaker, + activities: { + talks: [ + ...speaker.activities.lightningTalks.map(convertDateToIso), + ...speaker.activities.talks.map(convertDateToIso), + ], + }, + })); + + const speakers = await prepareSpeakers( + speakersWithPlainActivities, + tagColors, + labelColors, + ); const allSpeakers = await Promise.all(speakers); diff --git a/src/fetch-sponsors.js b/src/fetch-sponsors.js index fbb60be..2bdb601 100644 --- a/src/fetch-sponsors.js +++ b/src/fetch-sponsors.js @@ -1,29 +1,24 @@ -const { sponsorLogoFragment } = require('./fragments'); const { contentTypeMap } = require('./utils'); const queryPages = /* GraphQL */ ` query($conferenceTitle: ConferenceTitle, $eventYear: EventYear) { conf: conferenceBrand(where: { title: $conferenceTitle }) { id - status year: conferenceEvents(where: { year: $eventYear }) { id - status sponsors: pieceOfSponsorInfoes { - status id category order avatar { - ...imageUrl + url } sponsor { id - status title site avatar { - ...imageUrl + url } } width @@ -31,8 +26,6 @@ const queryPages = /* GraphQL */ ` } } } - - ${sponsorLogoFragment} `; const sortByOrder = (a, b) => { diff --git a/src/fetch-talks.js b/src/fetch-talks.js index 4f2b0df..eff145b 100644 --- a/src/fetch-talks.js +++ b/src/fetch-talks.js @@ -1,10 +1,16 @@ const { markdownToHtml } = require('./markdown'); + +const { trySelectSettings } = require('./utils'); +const { formatEvent } = require('./formatters'); + const { - createSlug, - labelTag, - trySelectSettings, - contentTypeMap, -} = require('./utils'); + orgEvent, + talkEvent, + discussionRoomEvent, + speakerRoomEvent, + groupLTEvent, + qaEvent, +} = require('./fragments'); const selectSettings = trySelectSettings( s => ({ @@ -13,227 +19,151 @@ const selectSettings = trySelectSettings( {}, ); -const queryPages = /* GraphQL */ ` +const updatedQuery = /* GraphQL */ ` query($conferenceTitle: ConferenceTitle, $eventYear: EventYear) { + lightningEvents: lightningTalks( + where: { + track: { + conferenceEvent: { + year: $eventYear + conferenceBrand: { title: $conferenceTitle } + } + } + } + ) { + label + title + description + duration + youtubeUrl + extension + secondaryLabel + isoDate + speaker { + name + company + country + pieceOfSpeakerInfoes { + label + } + } + groupLT { + track { + name + } + } + } conf: conferenceBrand(where: { title: $conferenceTitle }) { id - status - year: conferenceEvents(where: { year: $eventYear }) { + title + events: conferenceEvents(where: { year: $eventYear }) { id - status - schedule: daySchedules(where: { talks_some: {} }) { + title + tracks { id - status - additionalEvents - date - talks { - id - status - timeString - title - description - isLightning - track { - id - status - name - isPrimary + name + isPrimary + events { + __typename + ... on OrgEvent { + ...orgEventFragment } - speaker { - name - company - country - pieceOfSpeakerInfoes( - where: { conferenceEvent: { year: $eventYear } } - ) { - label - } + ... on Talk { + ...talkEventFragment + } + ... on QA { + ...qaEventFragment + } + ... on GroupLT { + ...groupLTEventFragment + } + ... on SpeakersRoom { + ...speakerRoomEventFragment + } + ... on DiscussionRoom { + ...discussionRoomEventFragment } } } } } } + ${orgEvent} + ${talkEvent} + ${discussionRoomEvent} + ${speakerRoomEvent} + ${groupLTEvent} + ${qaEvent} `; -const byTime = (a, b) => { - const aTime = new Date(`1970/01/01 ${a.time}`); - const bTime = new Date(`1970/01/01 ${b.time}`); - return aTime - bTime; -}; - const fetchData = async (client, { labelColors, ...vars }) => { - const overlay = label => labelTag({ prefix: 'talk', labelColors, label }); - - const rawData = await client - .request(queryPages, vars) - .then(res => res.conf.year[0].schedule); - - const dataTalks = rawData - .map(({ talks, date }) => talks.map(tl => ({ ...tl, isoDate: date }))) - .reduce((flatArray, dayTalks) => [...flatArray, ...dayTalks], []); + const { + conf: { + events: [rawData], + }, + lightningEvents, + } = await client.request(updatedQuery, vars).then(res => res); + + const tracksData = rawData.tracks.filter(track => track.isPrimary); + const tracks = tracksData.map(track => track.name); + + const schedule = await Promise.all( + tracksData.map(async (track, ind) => { + const listWithMarkdown = await Promise.all( + track.events + // eslint-disable-next-line no-underscore-dangle + .filter(event => event.__typename !== 'LightningTalk') + .map(async event => { + const result = await formatEvent(event, labelColors, track.name); + return result; + }), + ); - if (!dataTalks.length) { - throw new Error('Schedule not set for this event yet'); - } + const clearList = await Promise.all( + listWithMarkdown.map(async el => ({ + ...el, + text: await markdownToHtml(el.text), + })), + ); - const additionalEventsOfAllDays = rawData.reduce( - (allEvents, { additionalEvents, date }) => [ - ...allEvents, - ...additionalEvents.map(event => ({ - ...event, - isoDate: date, - contentType: contentTypeMap.DaySchedule, - })), - ], - [], + return { + tab: track.name, + title: track.name, + name: `${10 + ind}`, + list: clearList, + }; + }), ); - const talksRaw = dataTalks - .map(({ title, description, timeString, track, speaker, ...talk }) => ({ - ...talk, - title, - text: description, - description, - time: timeString, - track: track && track.name, - name: speaker && speaker.name, - place: speaker && `${speaker.company}, ${speaker.country}`, - pieceOfSpeakerInfoes: speaker.pieceOfSpeakerInfoes[0] || {}, - slug: createSlug({ title }, 'talk'), - speakerSlug: createSlug(speaker, 'user'), - contentType: contentTypeMap.Talk, - })) - .map(({ pieceOfSpeakerInfoes, ...talk }) => ({ - ...talk, - contentType: contentTypeMap.Talk, - speaker: talk.name, - from: talk.place, - label: pieceOfSpeakerInfoes.label, - tag: overlay(pieceOfSpeakerInfoes.label), - })) - .map(async item => ({ - ...item, - text: await markdownToHtml(item.text), - })); - - const allTalks = await Promise.all(talksRaw); - - const talks = allTalks.filter(({ isLightning }) => !isLightning); - const lightningTalks = allTalks.filter(({ isLightning }) => isLightning); - - const tracks = [...new Set(allTalks.map(({ track }) => track))] - .map(track => - dataTalks.find(talk => talk.track && talk.track.name === track), - ) - .filter(Boolean) - .map(({ track }) => track) - .sort((a, b) => { - return +b.isPrimary - +a.isPrimary; - }) - .map(({ name }) => name); - - const ltTalksScheduleItems = tracks - .map(track => { - const ltTalks = lightningTalks.filter(lt => lt.track === track); - if (!ltTalks.length) return null; - - const timeGroups = new Set(ltTalks.map(({ time }) => time)); - const lightningTalksGroups = [...timeGroups].map(time => - ltTalks.filter(lt => lt.time === time), + const formattedLightningEvents = await Promise.all( + lightningEvents.map(async event => { + const result = await formatEvent( + event, + labelColors, + event.groupLT.track.name, ); - - return lightningTalksGroups.map(ltGroup => ({ - title: 'tbd', - time: ltGroup[0].time, - isoDate: ltGroup[0].isoDate || 'unknown', - isLightning: true, - track, - lightningTalks: ltGroup, - })); - }) - .filter(Boolean); - - const ltTalksScheduleItemsFlatMap = ltTalksScheduleItems.reduce( - (array, subArray) => [...array, ...subArray], - [], + return result; + }), ); - const schedule = tracks.map((track, ind) => ({ - tab: track, - title: track, - name: `${10 + ind}`, - list: [ - ...talks, - ...ltTalksScheduleItemsFlatMap, - ...additionalEventsOfAllDays, - ] - .filter(event => event.track === track) - .reduce((list, talk) => { - const findSameTalk = (ls, tk) => { - const sameTalkInd = ls.findIndex( - ({ title, time, isLightning, overridden, isoDate }) => - (title === tk.title && !isLightning && !isoDate) || - (title === tk.title && !isLightning && isoDate === tk.isoDate) || - (time === tk.time && - isLightning && - tk.isLightning && - !overridden), - ); - const sameTalk = ls[sameTalkInd]; - if (!sameTalk) return {}; - - if (!sameTalk.time) { - return { sameTalk, sameTalkInd }; - } - - return tk.time === sameTalk.time ? { sameTalk, sameTalkInd } : {}; - }; - - const { sameTalk, sameTalkInd } = findSameTalk(list, talk); - - if (sameTalk) { - const newList = [...list]; - newList[sameTalkInd] = { - ...sameTalk, - ...talk, - overridden: true, - }; - return newList; - } - return [...list, talk]; - }, []) - .sort(byTime), - })); - - let scheduleTitle = 'Schedule'; - let noTracks = false; - - /** - * It was a workaround for listing early talks - */ - // if (schedule.length === 1) { - // schedule[0].list = talks.map(talk => ({ ...talk, time: null })); - // scheduleTitle = 'First Talks'; - // noTracks = true; - // } - - schedule[0].active = true; + const talks = schedule.reduce((result, cur) => { + return [...result, [...cur.list].filter(({ isLightning }) => !isLightning)]; + }, []); return { - scheduleTitle, + scheduleTitle: 'Schedule', schedule, tracks, talks, - lightningTalks, - noTracks, + lightningTalks: formattedLightningEvents, + noTracks: false, }; }; module.exports = { fetchData, selectSettings, - queryPages, + queryPages: updatedQuery, getData: data => data.conf.year[0].schedule, story: 'schedule/talks', }; diff --git a/src/fetch-texts.js b/src/fetch-texts.js index 6a573b1..6becff6 100644 --- a/src/fetch-texts.js +++ b/src/fetch-texts.js @@ -10,10 +10,8 @@ const queryPages = /* GraphQL */ ` query($conferenceTitle: ConferenceTitle, $eventYear: EventYear) { conf: conferenceBrand(where: { title: $conferenceTitle }) { id - status year: conferenceEvents(where: { year: $eventYear }) { id - status pieceOfTexts { id key diff --git a/src/fetch-workshops.js b/src/fetch-workshops.js index 5deccf6..4563c7d 100644 --- a/src/fetch-workshops.js +++ b/src/fetch-workshops.js @@ -24,50 +24,53 @@ const queryPages = /* GraphQL */ ` $avatarHeight: Int ) { conf: conferenceBrand(where: { title: $conferenceTitle }) { - id - status - year: conferenceEvents(where: { year: $eventYear }) { - id - status - schedule: daySchedules(where: { workshops_some: {} }) { + events: conferenceEvents(where: { year: $eventYear }) { + isoStartDate + isoEndDate + workshops { id - status - additionalEvents - date - startingTime - workshops { - id - status - title - toc - duration - description - prerequisites - content - additionalInfo - level + title + toc + duration + description + prerequisites + content + additionalInfo + level + location + slogan + code + workshopExtensions( + where: { + conferenceEvent: { + year: $eventYear + conferenceBrand: { title: $conferenceTitle } + } + } + ) { + isoDate location - slogan - code - speaker { - ...person - info: pieceOfSpeakerInfoes( - where: { - conferenceEvent: { - year: $eventYear - conferenceBrand: { title: $conferenceTitle } - } + includedToPackage + extension + } + speaker { + ...person + ...activities + info: pieceOfSpeakerInfoes( + where: { + conferenceEvent: { + year: $eventYear + conferenceBrand: { title: $conferenceTitle } } - ) { - ...speakerInfo } - ...activities - } - trainers { - ...person - ...activities + ) { + ...speakerInfo } } + trainers { + ...person + ...activities + } } } } @@ -94,61 +97,50 @@ const createWorkshopSchedule = (start, duration) => { }; }; -const byDate = (a, b) => { - const orderA = new Date(a.date); - const orderB = new Date(b.date); - return orderA.getTime() - orderB.getTime(); -}; - -const byOrder = (a, b) => { - const orderA = a.order; - const orderB = b.order; - return orderA - orderB; -}; - const fetchData = async (client, vars) => { const data = await client .request(queryPages, vars) - .then(res => res.conf.year[0].schedule); + .then(res => res.conf.events[0]); - let workshops = data - .reduce( - (all, day) => [ - ...all, - ...day.workshops - .map(({ speaker, trainers, ...ws }) => ({ - speaker: speaker || { - info: [], - }, - trainers: - trainers.map(tr => ({ ...tr, slug: createSlug(tr, 'user') })) || - [], - ...ws, - contentType: contentTypeMap.Workshop, - })) - .map(ws => ({ - ...ws, - date: day.date, - dateString: dayjs(day.date) - .format('MMMM D') - .trim(), - startingTime: day.startingTime, - schedule: createWorkshopSchedule(day.startingTime, ws.duration), - trainer: ws.speaker.name, - trainersTitle: createTrainersTitle(ws.trainers, ws.speaker.name), - slug: createSlug(ws, 'workshop'), - ...(day.additionalEvents && - day.additionalEvents.find(({ title }) => title === ws.title)), - })), - ], - [], - ) - .sort(byDate) - .map(({ order, ...ws }, ind) => ({ + const { isoStartDate } = data; + + const confStartDate = dayjs(isoStartDate); + + const workshops = data.workshops + .map(({ speaker, trainers, ...ws }) => ({ + speaker: speaker || { + info: [], + }, + trainers: + trainers.map(tr => ({ ...tr, slug: createSlug(tr, 'user') })) || [], ...ws, - order: order || 1010 + ind * 10, + contentType: contentTypeMap.Workshop, })) - .sort(byOrder); + .map(ws => { + const extensionData = + ws.workshopExtensions && ws.workshopExtensions[0] + ? ws.workshopExtensions[0] + : {}; + + const { extension, ...restExtensionFields } = extensionData; + + return { + ...ws, + date: confStartDate.toISOString(), + dateString: confStartDate.format('MMMM D').trim(), + startingTime: confStartDate.format('HH:mm'), + schedule: createWorkshopSchedule( + confStartDate.format('HH:mm'), + ws.duration, + ), + trainer: ws.speaker.name, + trainersTitle: createTrainersTitle(ws.trainers, ws.speaker.name), + slug: createSlug(ws, 'workshop'), + + ...(restExtensionFields || {}), + ...(extension || {}), + }; + }); const allWorkshops = await Promise.all( workshops.map(async wrp => ({ diff --git a/src/formatters.js b/src/formatters.js new file mode 100644 index 0000000..9db5b03 --- /dev/null +++ b/src/formatters.js @@ -0,0 +1,78 @@ +const dayJS = require('dayjs'); + +const { createSlug, labelTag, contentTypeMap } = require('./utils'); +const { markdownToHtml } = require('./markdown'); + +const formatEvent = async (event, labelColors, trackName) => { + const overlay = label => labelTag({ prefix: 'talk', labelColors, label }); + + const { + extension, + speaker, + isoDate, + __typename, + description, + title, + track, + groupLT, + lightningTalks = [], + ...rest + } = event; + + const contentType = contentTypeMap[`${__typename}`]; + + const pieceOfSpeakerInfoes = + (speaker && speaker.pieceOfSpeakerInfoes[0]) || {}; + const speakerPlace = speaker && `${speaker.company}, ${speaker.country}`; + + const lightningTalksWithMarkup = await Promise.all( + lightningTalks.map(async e => { + const result = await formatEvent(e, labelColors, trackName); + return result; + }), + ); + + const clearLightningTalks = await Promise.all( + lightningTalksWithMarkup.map(async el => ({ + ...el, + text: await markdownToHtml(el.text), + })), + ); + + return { + ...rest, + + eventType: __typename, + title, + text: description, + description, + time: isoDate ? dayJS(isoDate).toISOString() : null, + dayISO: isoDate + ? dayJS(isoDate) + .set('hour', 0) + .set('minute', 0) + .format('YYYY-MM-DDTHH:mm:ss.000[Z]') + : null, + track: trackName, + name: speaker && speaker.name, + place: speakerPlace, + + slug: title ? createSlug({ title }, 'talk') : null, + speakerSlug: speaker ? createSlug(speaker || {}, 'user') : null, + contentType, + isLightning: __typename === 'LightningTalk' || __typename === 'GroupLT', + isoDate: isoDate ? dayJS(isoDate).toISOString() : null, + speaker: speaker && speaker.name, + from: speakerPlace, + label: pieceOfSpeakerInfoes.label, + tag: pieceOfSpeakerInfoes.label + ? overlay(pieceOfSpeakerInfoes.label) + : null, + lightningTalks: clearLightningTalks.length ? clearLightningTalks : null, + ...extension, + }; +}; + +module.exports = { + formatEvent, +}; diff --git a/src/fragments.js b/src/fragments.js index 36f95d6..36f6e45 100644 --- a/src/fragments.js +++ b/src/fragments.js @@ -57,9 +57,9 @@ const personFragment = /* GraphQL */ ` const activitiesFragment = /* GraphQL */ ` fragment activities on Speaker { - talks( + lightningTalks( where: { - daySchedule: { + track: { conferenceEvent: { year: $eventYear conferenceBrand: { title: $conferenceTitle } @@ -67,34 +67,49 @@ const activitiesFragment = /* GraphQL */ ` } } ) { + id title description - timeString - isLightning + timeString: isoDate track { name isPrimary } } - workshops( + talks( where: { - daySchedules_some: { + track: { conferenceEvent: { year: $eventYear conferenceBrand: { title: $conferenceTitle } } } } + ) { + id + title + description + timeString: isoDate + track { + name + isPrimary + } + } + workshops( + where: { + conferenceEvents_some: { + year: $eventYear + conferenceBrand: { title: $conferenceTitle } + } + } ) { title } workshopsActivity: runinigWorkshops( where: { - daySchedules_some: { - conferenceEvent: { - year: $eventYear - conferenceBrand: { title: $conferenceTitle } - } + conferenceEvents_some: { + year: $eventYear + conferenceBrand: { title: $conferenceTitle } } } ) { @@ -105,7 +120,6 @@ const activitiesFragment = /* GraphQL */ ` const speakerInfoFragment = /* GraphQL */ ` fragment speakerInfo on PieceOfSpeakerInfo { - status id idAlt: id label @@ -119,6 +133,96 @@ const speakerInfoFragment = /* GraphQL */ ` ${personFragment} `; +const orgEvent = /* GraphQL */ ` + fragment orgEventFragment on OrgEvent { + title + description + isoDate + duration + extension + } +`; +const talkEvent = /* GraphQL */ ` + fragment talkEventFragment on Talk { + speaker { + name + company + country + pieceOfSpeakerInfoes { + label + } + } + label + title + description + isoDate + duration + secondaryLabel + extension + youtubeUrl + } +`; +const qaEvent = /* GraphQL */ ` + fragment qaEventFragment on QA { + title + description + isoDate + duration + extension + } +`; +const groupLTEvent = /* GraphQL */ ` + fragment groupLTEventFragment on GroupLT { + title + description + isoDate + duration + extension + } +`; +const speakerRoomEvent = /* GraphQL */ ` + fragment speakerRoomEventFragment on SpeakersRoom { + title + speakers { + name + company + country + pieceOfSpeakerInfoes { + label + } + } + description + isoDate + duration + extension + roomLink + subTrackIndex + } +`; +const discussionRoomEvent = /* GraphQL */ ` + fragment discussionRoomEventFragment on DiscussionRoom { + title + speakers { + name + company + country + pieceOfSpeakerInfoes { + label + } + } + description + isoDate + duration + extension + pic { + id + } + roomLink + roomLinkText + subTrackIndex + } +`; + module.exports = { speakerInfoFragment, personAvatarFragment, @@ -126,4 +230,10 @@ module.exports = { sponsorLogoFragment, jobLogoFragment, activitiesFragment, + orgEvent, + talkEvent, + discussionRoomEvent, + speakerRoomEvent, + groupLTEvent, + qaEvent, }; diff --git a/tests/__snapshots__/jsnation.test.js.snap b/tests/__snapshots__/jsnation.test.js.snap index 0dc784b..ea7b85e 100644 --- a/tests/__snapshots__/jsnation.test.js.snap +++ b/tests/__snapshots__/jsnation.test.js.snap @@ -1,1834 +1,5515 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`JsNation should render content 1`] = ` +exports[`JSN should prepare conference 1`] = ` Object { - "conference": Object { - "city": "Amsterdam", - "codeOfConductIntro": " + "city": "Online", + "codeOfConductIntro": "
All attendees, speakers, sponsors and volunteers at JSNation Live Conference are required to follow this Code of Conduct. Organisers will strictly enforce it throughout the events and community gatherings. We expect cooperation from all participants to help ensure a safe environment for everybody.
+In case you have identified a breach of our CoC, please approach our crew (tag @GitNation Team on Discord) immediately or contact our CoC enforcement team – coc@gitnation.org, +44 7376 237 299.
", - "codeOfConductMain": " + "codeOfConductMain": "Our conference is dedicated to providing a harassment-free conference experience for everyone, regardless of gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, ethnicity, religion (or lack thereof), or technology choices. We do not tolerate harassment of conference participants in any form. Sexual language and imagery is not appropriate for any conference venue, including talks, workshops, parties, Twitter and other online media. Conference participants violating these rules may be sanctioned or expelled from the conference without a refund at the discretion of the conference organisers.
+Harassment includes offensive verbal comments related to gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, ethnicity, religion, technology choices, sexual images in public spaces, deliberate intimidation, stalking, following, harassing photography or recording, sustained disruption of talks or other events, inappropriate physical contact, and unwelcome sexual attention.
+Participants asked to stop any harassing behavior are expected to comply immediately.
+Sponsors are also subject to the anti-harassment policy. In particular, sponsors should not use sexualised images, activities, or other material. Booth staff (including volunteers) should not use sexualised clothing/uniforms/costumes, or otherwise create a sexualised environment.
+If a participant engages in harassing behavior, the conference organisers may take any action they deem appropriate, including warning the offender or expulsion from the conference with no refund.
+If you are being harassed, notice that someone else is being harassed, or have any other concerns, please contact a member of conference staff immediately. Conference staff can be identified as they'll be wearing branded clothing and/or badges.
+Conference staff will be happy to help participants contact hotel/venue security or local law enforcement, provide escorts, or otherwise assist those experiencing harassment to feel safe for the duration of the conference. We value your attendance.
+We expect participants to follow these rules at conference and workshop venues and conference-related social events.
+Original source and credit: http://2012.jsconf.us/#/about & The Ada Initiative
+Please help by translating or improving: http://github.com/leftlogic/confcodeofconduct.com
+This work is licensed under a Creative Commons Attribution 3.0 Unported License
", - "facebookUrl": "https://www.facebook.com/thejsnation", - "id": "ck0zi9xnrpi2z0b54q0n7clnr", - "mediumUrl": "https://medium.com/@amsterdamjs", - "slackUrl": "https://jsnation.com/slack", - "status": "PUBLISHED", - "title": "Amsterdam_JSNation", - "twitterUrl": "https://twitter.com/thejsnation", - "url": "https://jsnation.com", - "youtubeUrl": "https://www.youtube.com/JSNation", + "contentType": "2d89f139f3d042ab98d212062527eb82", + "facebookUrl": "https://www.facebook.com/thejsnation", + "id": "ck9ego7g73bpj0b842tr6oh87", + "mediumUrl": "https://medium.com/@amsterdamjs", + "slackUrl": "https://jsnation.com/slack", + "status": "PUBLISHED", + "title": "Live_JSNation", + "twitterUrl": "https://twitter.com/thejsnation", + "url": "https://jsnation.com", + "youtubeUrl": "https://www.youtube.com/JSNation", +} +`; + +exports[`JSN should prepare otherContent 1`] = `"7bb0ea157b2181a4b6d8158cdd5748a36fbb4429"`; + +exports[`JSN should prepare pages 1`] = ` +Array [ + Object { + "content": "6a6b1f4f9fa212869c082b0112fda5552068286e", + "description": null, + "id": "ck9ehfcvfsfmr0b20ypix56jg", + "pageCode": "main", + "seoDescription": "Want to know the future of the JavaScript ecosystem and get connected to the stellar crowd? Attend a 2-day JavaScript conference on all things JavaScript, gathering international software engineers in the cloud. To help you stay up-to-date on the latest JS tech, we're coming back with a new remote gig.", + "titlePage": null, + "titleSeo": "JSNation – The biggest JavaScript conference in the cloud", }, - "conferenceSettings": Object { - "speakerAvatar": Object { - "dimensions": Object { - "avatarHeight": 500, - "avatarWidth": 500, - }, - }, - "tagColors": Object { - "Ecosystem": Object { - "color": "#ae4f01", - "tagBG": "#fff40d", - }, - "GraphQL": Object { - "color": "#400042", - "tagBG": "#f200fa", + Object { + "content": "2db1af5ec6fe1e6b54bb28f9f28be3e99008543d", + "description": null, + "id": "ck9lmn93i3rbx0b205g85rph8", + "pageCode": "faq", + "seoDescription": "Want to know the future of the JavaScript ecosystem and get connected to the stellar crowd? Attend a 2-day JavaScript conference on all things JavaScript, gathering international software engineers in the cloud. To help you stay up-to-date on the latest JS tech, we're coming back with a new remote gig.", + "titlePage": "FAQ", + "titleSeo": "FAQ", + }, + Object { + "content": "7a1431c29fe299ecc9ae39c4c66ecd12cc4a9951", + "description": null, + "id": "ck9urs4fqbfl60b84o2ipl86j", + "pageCode": "coc", + "seoDescription": null, + "titlePage": "Code Of Conduct", + "titleSeo": "Code of Conduct – JSNation Live", + }, + Object { + "content": "8a825cd2f77a2de86e441b00e63af0a399845d64", + "description": null, + "id": "ck9urv5iji3bm0b20ponx66hk", + "pageCode": "workshops", + "seoDescription": null, + "titlePage": "LEARN FROM THE BEST TRAINERS IN THE CLOUD", + "titleSeo": "Remote Workshops at JSNation Live", + }, + Object { + "content": "a5af17b99ab0c4438400d60a7661b6646a9bf194", + "description": null, + "id": "ck9us1jpfi3k80b206k1oiz6m", + "pageCode": "jobs", + "seoDescription": null, + "titlePage": "Top JavaScript Jobs", + "titleSeo": "Top JavaScript Jobs", + }, + Object { + "content": "82fff11ab4cfc378740905709feb775c0fa850e0", + "description": null, + "id": "ckadmqzf7f6470b20dinsm4yv", + "pageCode": "perks", + "seoDescription": null, + "titlePage": "Special Offers from Sponsors", + "titleSeo": "Special Offers from Sponsors", + }, +] +`; + +exports[`JSN should prepare schedule 1`] = ` +Array [ + Object { + "active": true, + "list": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "time": "16:00", + "title": "Conference Opening", + "track": "June 18", }, - "Language": Object { - "color": "#ae4f01", - "tagBG": "#fff40d", + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Many modern web frameworks use components as their building blocks. + +In this talk, I will show component testing using Cypress - and I mean \\"show\\" literally. +You will see the component running inside a real browser, you will interact with the component like a real user, and you can debug the component using the real browser's DevTools. +Finally, I will go through the current open source and commercial options for visually testing the component's styles and rendering.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "gleb-bahmutov", + "time": "16:35", + "title": "Q&A with MC and Gleb Bahmutov", + "track": "June 18", + }, + "from": "Cypress, USA", + "id": "ckacfbqipdb0a0b20ehkoq1vx", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "Testing", + "name": "Gleb Bahmutov", + "overridden": true, + "pic": "PPQ5FHccTEWnbmU6nBX6", + "place": "Cypress, USA", + "slug": "i-see-what-is-going-on-visual-testing-for-your-components", + "speaker": "Gleb Bahmutov", + "speakerSlug": "gleb-bahmutov", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "gleb-bahmutov", + "text": "Many modern web frameworks use components as their building blocks.
+In this talk, I will show component testing using Cypress - and I mean \\"show\\" literally. +You will see the component running inside a real browser, you will interact with the component like a real user, and you can debug the component using the real browser's DevTools. +Finally, I will go through the current open source and commercial options for visually testing the component's styles and rendering.
+", + "time": "16:15", + "title": "I See What is Going on: Visual Testing for Your Components", + "track": "June 18", }, - "NodeJS": Object { - "color": "#fff", - "tagBG": "#7AB464", + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "gleb-bahmutov", + "time": "16:35", + "title": "Q&A with MC and Gleb Bahmutov", + "track": "June 18", }, - "Performance": Object { - "color": "#00410a", - "tagBG": "#00ed24", + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "As front-end tooling and frameworks continue to evolve and improve at a pace that is often hard to keep up with, serverless abstractions continue to move closer and closer to the client, abstracting away back end services and making them more and more consumable by traditionally front end developers. + +In this talk I’ll show how we can use a combination of GraphQL SDL along with a new DSL (GraphQL Transform) created by the Amplify team to build out a full stack cloud application directly from your GraphQL schema. Using this GraphQL DSL, we’ll walk through how to model a Database, authorization rules, relationships, and custom access patterns. We’ll look at how to rapidly prototype an example application, and view some demos including a voting app capable of handling over 100,000 operations per second.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "nader-dabit", + "time": "17:10", + "title": "Q&A with MC and Nader Dabit", + "track": "June 18", + }, + "from": "Amazon AWS, USA", + "id": "cka40cpwb0b660b20s4y84m7y", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "GraphQL", + "name": "Nader Dabit", + "overridden": true, + "pic": "4NF4AeaJS9uxty64CCCX", + "place": "Amazon AWS, USA", + "slug": "transforming-graph-ql-infrastructure-as-code-for-front-end-developers", + "speaker": "Nader Dabit", + "speakerSlug": "nader-dabit", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "nader-dabit", + "text": "As front-end tooling and frameworks continue to evolve and improve at a pace that is often hard to keep up with, serverless abstractions continue to move closer and closer to the client, abstracting away back end services and making them more and more consumable by traditionally front end developers.
+In this talk I’ll show how we can use a combination of GraphQL SDL along with a new DSL (GraphQL Transform) created by the Amplify team to build out a full stack cloud application directly from your GraphQL schema. Using this GraphQL DSL, we’ll walk through how to model a Database, authorization rules, relationships, and custom access patterns. We’ll look at how to rapidly prototype an example application, and view some demos including a voting app capable of handling over 100,000 operations per second.
+", + "time": "16:50", + "title": "Transforming GraphQL – Infrastructure as Code for Front End Developers", + "track": "June 18", }, - "TypeScript": Object { - "color": "#030303", - "tagBG": "#61DAFB", + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "nader-dabit", + "time": "17:10", + "title": "Q&A with MC and Nader Dabit", + "track": "June 18", }, - "VueJS": Object { - "color": "#fff", - "tagBG": "#4EBA87", + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "20", + "isoDate": "2020-06-18T00:00:00.000Z", + "time": "17:25", + "title": "Break / Panel Discussion on Future of Ecosystems", + "track": "June 18", }, - "WebGL": Object { - "color": "#ffffff", - "tagBG": "#ff7302", + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "In my journey through nodeland, I always wonder about the cost of my abstractions. + +I started a journey to write an HTTP framework with extremely low overhead, and Fastify was born. With its ability to reach an astonishing 90k requests/sec, Fastify can halve your cloud server bill. + +In this talk, I will walk you through the basics of the framework: how to route requests, write tests, and use the plugin system.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "matteo-collina", + "time": "18:05", + "title": "Q&A with MC and Matteo Collina", + "track": "June 18", + }, + "from": "NearForm, Italy", + "id": "cka58pk4h7khc0b84gtifenhl", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "NodeJS", + "name": "Matteo Collina", + "overridden": true, + "pic": "4LTWaL5SpOCr2oBbS8rq", + "place": "NearForm, Italy", + "slug": "1-2-3-fastify", + "speaker": "Matteo Collina", + "speakerSlug": "matteo-collina", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "matteo-collina", + "text": "In my journey through nodeland, I always wonder about the cost of my abstractions.
+I started a journey to write an HTTP framework with extremely low overhead, and Fastify was born. With its ability to reach an astonishing 90k requests/sec, Fastify can halve your cloud server bill.
+In this talk, I will walk you through the basics of the framework: how to route requests, write tests, and use the plugin system.
+", + "time": "17:45", + "title": "1, 2, 3... Fastify!", + "track": "June 18", }, - "default": Object { - "color": "white", - "tagBG": "black", + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "matteo-collina", + "time": "18:05", + "title": "Q&A with MC and Matteo Collina", + "track": "June 18", }, - }, - }, - "extendeds": Object { - "community": Array [ Object { - "description": "We’re looking for developers with side projects, who love to check out codepen.io or open-source github repo’s, design systems and style guides. People who understand that shipping fast doesn’t mean you ship bad quality.
-", - "image": Object { - "url": "https://media.graphcms.com/DMLCRZORlCgZG6WpUEO2", + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Microfrontends as Monolith? Shared component library or styleguide? This technique allows to consume modules from separate builds, which can be developed and deployed independently. An introduction, and further ideas.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "tobias-koppers", + "time": "18:40", + "title": "Q&A with MC and Tobias Koppers", + "track": "June 18", }, - "key": "community", - "location": "Sint Annendwarsstraat 6,
-1012 HC Amsterdam
-", - "locationLink": "/", - "registerLink": null, - "slackChannelName": null, - "subtitle": null, - "title": "TonTon Club Centrum 20:00
+ "from": "Webpack, Germany", + "id": "ckacf6molq9810b84xazrb1vz", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "Ecosystem", + "name": "Tobias Koppers", + "overridden": true, + "pic": "3PwPQYRMRDKMjoQX05Bk", + "place": "Webpack, Germany", + "slug": "module-federation-in-webpack-5", + "speaker": "Tobias Koppers", + "speakerSlug": "tobias-koppers", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "tobias-koppers", + "text": "Microfrontends as Monolith? Shared component library or styleguide? This technique allows to consume modules from separate builds, which can be developed and deployed independently. An introduction, and further ideas.
", + "time": "18:20", + "title": "Module Federation in Webpack 5", + "track": "June 18", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "tobias-koppers", + "time": "18:40", + "title": "Q&A with MC and Tobias Koppers", + "track": "June 18", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "time": "18:55", + "title": "Break", + "track": "June 18", }, - ], - "location__slide": Array [ Object { - "description": "JSNation conference will gather 1000+ JS pros at Kromhouthal, a former ship engines factory which now becomes the place for gathering the top JavaScript engines authors and engineers.
+ "bgColor": "#00deff", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "35", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "lightningTalks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Do you ever feel like you’re stuck in your career? Do you constantly feel like you don’t have time to work on your projects? Do you want to learn something new, expand your knowledge, develop yourself and be the best you can be? + +In this session, I am going to share my story on how I started coding, how I make time to work on side projects and how you can grow and advance in your career. After this talk, I hope you 'll be inspired to work smarter, make new habits and continue pushing yourself even when things fall apart. + +I will present some helpful tips about self-motivation, time-management, setting priorities and goals, staying organized, believing in yourself and keeping a balance between your career and personal life. Additionally, in this session, we are going to talk about building the habit of coding and the benefits of it. We are going to explore ways of finding mentors in your job and outside of it and also expanding your social network. + +This talk is not only about getting better at your 9 to 5 job but also about developing yourself.", + "from": "MKI Hellas, Greece", + "id": "ckacfek5fq9vg0b84nn5j7dcf", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "Career", + "name": "Eleftheria Batsou", + "place": "MKI Hellas, Greece", + "slug": "when-you-think-there-is-no-time-for-learning-or-coding", + "speaker": "Eleftheria Batsou", + "speakerSlug": "eleftheria-batsou", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Do you ever feel like you’re stuck in your career? Do you constantly feel like you don’t have time to work on your projects? Do you want to learn something new, expand your knowledge, develop yourself and be the best you can be?
+In this session, I am going to share my story on how I started coding, how I make time to work on side projects and how you can grow and advance in your career. After this talk, I hope you 'll be inspired to work smarter, make new habits and continue pushing yourself even when things fall apart.
+I will present some helpful tips about self-motivation, time-management, setting priorities and goals, staying organized, believing in yourself and keeping a balance between your career and personal life. Additionally, in this session, we are going to talk about building the habit of coding and the benefits of it. We are going to explore ways of finding mentors in your job and outside of it and also expanding your social network.
+This talk is not only about getting better at your 9 to 5 job but also about developing yourself.
", - "image": Object { - "url": "https://media.graphcms.com/ltaBUktcSVOBXFJplkgn", - }, - "key": "location__slide", - "location": "Gedempt Hamerkanaal 231
-1021 KP Amsterdam View on map
+ "time": "19:10", + "title": "When You Think There Is No Time for Learning or Coding", + "track": "June 18", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "With Hasura Remote Joins, you can join your table data with a Stripe API or Github API or any GraphQL API. Without writing a single line of code. Using GraphQL's amazing type system combined with Hasura's declarative configuration, you can create relationships across tables and other services and get a beautiful unified API. In a single call, get all the data necessary for building your apps from anywhere in the world.", + "from": "Hasura, India", + "id": "ckb0j93kqfx0k0915fp10y9l5", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": null, + "name": "Tanmai Gopal", + "place": "Hasura, India", + "slug": "using-remote-joins-to-create-a-unified-graph-ql-api-for-your-company", + "speaker": "Tanmai Gopal", + "speakerSlug": "tanmai-gopal", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "With Hasura Remote Joins, you can join your table data with a Stripe API or Github API or any GraphQL API. Without writing a single line of code. Using GraphQL's amazing type system combined with Hasura's declarative configuration, you can create relationships across tables and other services and get a beautiful unified API. In a single call, get all the data necessary for building your apps from anywhere in the world.
", - "locationLink": "data-center-lat=52.384183 data-center-lng=4.914727", - "registerLink": "data-lat=52.3831943 data-lng=4.9204799", - "slackChannelName": null, - "subtitle": "Kromhouthal
+ "time": "19:10", + "title": "Using Remote Joins to Create a Unified GraphQL API for Your Company", + "track": "June 18", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "In this talk, Pablo Postigo, co-Founder and CEO of Frontity, will give an introduction to the basics of Frontity Framework and talk about the main challenges when developing a React front-end for a headless WordPress site. In addition, he will share his insight on the future of JavaScript in the WordPress ecosystem and the story behind Frontity.", + "from": "CEO & Co-Founder @Frontity, Spain", + "id": "ckb0jfd1krt8v0b27fy7pjk7b", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": null, + "name": "Pablo Postigo", + "place": "CEO & Co-Founder @Frontity, Spain", + "slug": "building-react-frontends-for-word-press", + "speaker": "Pablo Postigo", + "speakerSlug": "pablo-postigo", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "In this talk, Pablo Postigo, co-Founder and CEO of Frontity, will give an introduction to the basics of Frontity Framework and talk about the main challenges when developing a React front-end for a headless WordPress site. In addition, he will share his insight on the future of JavaScript in the WordPress ecosystem and the story behind Frontity.
", - "title": " + "time": "19:10", + "title": "Building React frontends for WordPress", + "track": "June 18", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "I can tell at least that in 3 years, JavaScript will gain more the status of a VM and lose the status of a language. Already today, not many people use raw JavaScript. You usually have some transpilation, at least e.g. Babel. In the future, Web Assembly will enable more innovation in that regards, and existing transpiling languages like Elm, TypeScript, PureScript will continue to improve. + +In this talk, I'd go through the Evolution of JavaScript Tooling and frontend build tools, Javascript itself and the future of them all. + +Also, Babel and other build tools, what they might most likely be in the future. Also, I'd talk about javascript itself as a language, it's present and it's future.", + "from": "Software Developer, Developer Advocate, Technical Writer, Nigeria", + "id": "ckb96mag9u0yd0b14fti1k4n4", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": null, + "name": "Shedrack Akintayo", + "place": "Software Developer, Developer Advocate, Technical Writer, Nigeria", + "slug": "javascript-tooling-the-evolution-and-future-of-js-front-end-build-tools", + "speaker": "Shedrack Akintayo", + "speakerSlug": "shedrack-akintayo", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "I can tell at least that in 3 years, JavaScript will gain more the status of a VM and lose the status of a language. Already today, not many people use raw JavaScript. You usually have some transpilation, at least e.g. Babel. In the future, Web Assembly will enable more innovation in that regards, and existing transpiling languages like Elm, TypeScript, PureScript will continue to improve.
+In this talk, I'd go through the Evolution of JavaScript Tooling and frontend build tools, Javascript itself and the future of them all.
+Also, Babel and other build tools, what they might most likely be in the future. Also, I'd talk about javascript itself as a language, it's present and it's future.
", + "time": "19:10", + "title": "Javascript Tooling - The Evolution and Future of JS & Front-end Build Tools", + "track": "June 18", + }, + ], + "overridden": true, + "time": "19:10", + "title": "Lightning talks", + "track": "June 18", }, Object { - "description": null, - "image": Object { - "url": "https://media.graphcms.com/JHOKIEPQFKEAfK90Q4BN", - }, - "key": "location__slide", - "location": null, - "locationLink": "", - "registerLink": "", - "slackChannelName": null, - "subtitle": "Kromhouthal
-", - "title": " -", + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "30", + "isoDate": "2020-06-18T00:00:00.000Z", + "time": "19:45", + "title": "OS Awards with Max Stoiber & Stefan Fejes", + "track": "June 18", }, Object { - "description": null, - "image": Object { - "url": "https://media.graphcms.com/aTbTAGo5QXermNyOdM6e", + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Do you scroll through TikTok, amazed at the goofy, yet complicated dance moves featuring today's youths? Those kids are popping off while you're sitting around, coding SQL queries. Fortunately, we are technologists, and there's no problem we can't solve, including getting better at TikTok dancing. In this talk, I'll show you how I perfected my moves by building PoseDance, your friendly TikTok trainer. We'll discuss how I leveraged PoseNet, which allows you to pinpoint body motion and draw a 'skeleton' on a video. Combined with a webcam mapping your own dance skeleton, a bit of math to compare the matching points, Azure functions to authenticate a user, and PlayFab as a game-friendly backend to keep scores and create a leaderboard, you've got the perfect quarantine pastime, making a perfect fool of yourself in front of a webcam. Come dance with me!", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "jen-looper", + "time": "20:35", + "title": "Q&A with MC and Jen Looper", + "track": "June 18", }, - "key": "location__slide", - "location": null, - "locationLink": "", - "registerLink": "", - "slackChannelName": null, - "subtitle": "Kromhouthal
-", - "title": " + "from": "Microsoft, USA", + "id": "cka58nqd02j9u0b20vtncx7g8", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "AI/ML", + "name": "Jen Looper", + "overridden": true, + "pic": "TaypgyUASVqlWKaVA61d", + "place": "Microsoft, USA", + "slug": "pose-dance-build-a-tik-tok-trainer", + "speaker": "Jen Looper", + "speakerSlug": "jen-looper", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "jen-looper", + "text": "Do you scroll through TikTok, amazed at the goofy, yet complicated dance moves featuring today's youths? Those kids are popping off while you're sitting around, coding SQL queries. Fortunately, we are technologists, and there's no problem we can't solve, including getting better at TikTok dancing. In this talk, I'll show you how I perfected my moves by building PoseDance, your friendly TikTok trainer. We'll discuss how I leveraged PoseNet, which allows you to pinpoint body motion and draw a 'skeleton' on a video. Combined with a webcam mapping your own dance skeleton, a bit of math to compare the matching points, Azure functions to authenticate a user, and PlayFab as a game-friendly backend to keep scores and create a leaderboard, you've got the perfect quarantine pastime, making a perfect fool of yourself in front of a webcam. Come dance with me!
", + "time": "20:15", + "title": "PoseDance: Build a TikTok Trainer", + "track": "June 18", }, - ], - "preparty": Array [ Object { - "description": "We’re looking for developers with side projects, who love to check out codepen.io or open-source github repo’s, design systems and style guides. People who understand that shipping fast doesn’t mean you ship bad quality.
-", - "image": Object { - "url": "https://media.graphcms.com/DMLCRZORlCgZG6WpUEO2", - }, - "key": "preparty", - "location": "Sint Annendwarsstraat 6,
-1012 HC Amsterdam
-", - "locationLink": "/", - "registerLink": null, - "slackChannelName": null, - "subtitle": null, - "title": "TonTon Club Centrum 20:00
-", + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "jen-looper", + "time": "20:35", + "title": "Q&A with MC and Jen Looper", + "track": "June 18", }, Object { - "description": "Lorem Ipsum
-Dollor dollor
-", - "image": Object { - "url": "https://media.graphcms.com/DMLCRZORlCgZG6WpUEO2", + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "You've built an app an you want it to scale. Do you want CI/CD, custom domains, SSL certificates, APIs, global scale of your static assets, authentication, and authorization? Let's learn how to build a static web app on Azure and go from GitHub repo to global scale in minutes.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "john-papa", + "time": "21:10", + "title": "Q&A with MC and John Papa", + "track": "June 18", }, - "key": "preparty", - "location": null, - "locationLink": "/", - "registerLink": null, - "slackChannelName": null, - "subtitle": "TonTon Club Centrum 20:00
-", - "title": " + "from": "Microsoft, USA", + "id": "cka58qnw32jhw0b20ezgtk0za", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "", + "name": "John Papa", + "overridden": true, + "pic": "a70MfQ3GTCI8cZlWiDuf", + "place": "Microsoft, USA", + "slug": "from-code-to-scale-build-a-static-web-app-in-minutes", + "speaker": "John Papa", + "speakerSlug": "john-papa", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "john-papa", + "text": "You've built an app an you want it to scale. Do you want CI/CD, custom domains, SSL certificates, APIs, global scale of your static assets, authentication, and authorization? Let's learn how to build a static web app on Azure and go from GitHub repo to global scale in minutes.
", + "time": "20:50", + "title": "From Code to Scale! Build a Static Web App in Minutes", + "track": "June 18", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "john-papa", + "time": "21:10", + "title": "Q&A with MC and John Papa", + "track": "June 18", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "10", + "isoDate": "2020-06-18T00:00:00.000Z", + "time": "21:25", + "title": "Conference Closing", + "track": "June 18", }, ], + "name": "10", + "tab": "June 18", + "title": "June 18", }, - "faqs": Array [ - Object { - "items": Array [ - Object { - "answer": "If your ticket states “Early Bird ticket”/”Regular ticket”/”Late Bird ticket”, it only includes a conference day pass. If your ticket states “Combo: Workshop + Conference Day”, it includes both conference day pass and a workshop.
-", - "category": "Tickets, invoices, refunds", - "question": "Does my ticket to the conference include workshops also?
-", - }, - Object { - "answer": "You can easily change the name in the ticket in your Eventbrite account. Just log in and edit the attendee information. Pay attention that only the ticket buyer can re-assign tickets.
-", - "category": "Tickets, invoices, refunds", - "question": "How can I change the name in my ticket?
-", - }, - Object { - "answer": "Yes, you can. Simply log in to your Eventbrite account and re-assign the ticket to this person. Pay attention that only a ticket buyer can re-assign tickets.
-", - "category": "Tickets, invoices, refunds", - "question": "If I can’t visit the conference, can I give the ticket to my friend/colleague?
-", - }, - Object { - "answer": "Go to your Eventbrite account, click “edit”, add the VAT number in the corresponding box, resend the confirmation email.
-", - "category": "Tickets, invoices, refunds", - "question": "How can I add VAT to the Eventbrite invoice?
-", + Object { + "list": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "10", + "isoDate": "2020-06-18T00:00:00.000Z", + "time": "16:00", + "title": "Conference Opening", + "track": "June 19", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Composition API is one of the biggest new features in Vue 3. In this talk, I will explain what is it and how to use Composition API for code abstraction and reuse.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "natalia-tepluhina", + "time": "16:30", + "title": "Q&A with MC and Natalia Tepluhina", + "track": "June 19", }, - Object { - "answer": "Yes, we can make a refund if your visa for travel was not approved. Please send us the declining letter from the embassy or any other confirming documents.
-", - "category": "Tickets, invoices, refunds", - "question": "Do you provide refunds if my visa is not approved?
+ "from": "GitLab, Ukraine", + "id": "ckacf4j6nq9220b849ojeqrqk", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "VueJS", + "name": "Natalia Tepluhina", + "overridden": true, + "pic": "1gYQx8QrTcSXiXu0sUt8", + "place": "GitLab, Ukraine", + "slug": "composition-api-a-quick-over-vue", + "speaker": "Natalia Tepluhina", + "speakerSlug": "natalia-tepluhina", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "natalia-tepluhina", + "text": "Composition API is one of the biggest new features in Vue 3. In this talk, I will explain what is it and how to use Composition API for code abstraction and reuse.
", + "time": "16:10", + "title": "Composition API: a Quick overVue", + "track": "June 19", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "natalia-tepluhina", + "time": "16:30", + "title": "Q&A with MC and Natalia Tepluhina", + "track": "June 19", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "TypeScript is becoming one of the dominant ways in which people write JavaScript. The goal of TypeScript is to augment and not replace JavaScript – so how does the team ensure that the future of JS is always JS.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "orta-therox", + "time": "17:05", + "title": "Q&A with MC and Orta Therox", + "track": "June 19", }, - Object { - "answer": "No, we do not provide refunds in this case due to our policies. The reason of such non-refund policy is that we calculate and pre-pay for event facilities and catering in advance.
-", - "category": "Tickets, invoices, refunds", - "question": "Do you provide refunds if decided not to travel?
+ "from": "Microsoft, USA", + "id": "cka58sj7q7kuh0b84ybcvhe16", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "TypeScript", + "name": "Orta Therox", + "overridden": true, + "pic": "NPpzhbjmTU2x6vl9kySi", + "place": "Microsoft, USA", + "slug": "how-does-the-type-script-team-try-to-avoid-negative-effects-on-the-js-ecosystem", + "speaker": "Orta Therox", + "speakerSlug": "orta-therox", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "orta-therox", + "text": "TypeScript is becoming one of the dominant ways in which people write JavaScript. The goal of TypeScript is to augment and not replace JavaScript – so how does the team ensure that the future of JS is always JS.
", + "time": "16:45", + "title": "How Does the TypeScript Team Try to Avoid Negative Effects on the JS Ecosystem", + "track": "June 19", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "orta-therox", + "time": "17:05", + "title": "Q&A with MC and Orta Therox", + "track": "June 19", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "20", + "isoDate": "2020-06-18T00:00:00.000Z", + "time": "17:20", + "title": "Break / Panel discussion on The Future of Frameworks", + "track": "June 19", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Modern JavaScript is powerful, but big frameworks like Vue or React add an overwhelming amount of complexity to a developers' workflow. That’s why I wrote AlpineJS. It’s less than 10kb, requires no build process, takes almost no time to learn, yet gives you the declarative templating and reactivity you can’t live without. I can’t wait to show it to you.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "caleb-porzio", + "time": "18:00", + "title": "Q&A with MC and Caleb Porzio", + "track": "June 19", }, - Object { - "answer": "Yes, it is possible to pay via invoice. Please, send your company details to hi@jsnation.com and we will issue it for you:
-As soon as we receive the payment, we'll send you a promo-code to activate the tickets.
-", - "category": "Tickets, invoices, refunds", - "question": "Can you issue an invoice for my order?
+ "from": "Creator of AlpineJS & LaravelLivewire , USA", + "id": "ckaw8lqgf8yxe0a69fyvh3eu2", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "AlpineJS", + "name": "Caleb Porzio", + "overridden": true, + "pic": "Wt34hvR5S9yhGTjjjrIA", + "place": "Creator of AlpineJS & LaravelLivewire , USA", + "slug": "say-no-to-complexity-with-alpine-js", + "speaker": "Caleb Porzio", + "speakerSlug": "caleb-porzio", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "caleb-porzio", + "text": "Modern JavaScript is powerful, but big frameworks like Vue or React add an overwhelming amount of complexity to a developers' workflow. That’s why I wrote AlpineJS. It’s less than 10kb, requires no build process, takes almost no time to learn, yet gives you the declarative templating and reactivity you can’t live without. I can’t wait to show it to you.
", + "time": "17:40", + "title": "Say No To Complexity With AlpineJS", + "track": "June 19", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "caleb-porzio", + "time": "18:00", + "title": "Q&A with MC and Caleb Porzio", + "track": "June 19", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "In this presentation, we’ll look at the current state of Angular and its tooling infrastructure. We’ll discuss what features enabled the latest version of our rendering engine Ivy and how you can take advantage of them today. + +Along the way, we’ll look at the work we did to ensure small bundle size and fast execution! In the second part of the talk, we’ll focus on the tooling that Angular provides to help you deliver apps quickly and efficiently.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "minko-gechev", + "time": "18:35", + "title": "Q&A with MC and Minko Gechev", + "track": "June 19", }, - Object { - "answer": "Please, be attentive with the dates!
-The correct date is indicated in the name of the ticket – example: “Advanced React Workshop (June 4)”. -The ticket will also state the main date of the conference – June 5, although you might not have bought a ticket to the conference itself – this is how eventbrite works, and we cannot change it, unfortunately. Pay attention to what the name of the workshop says.
-If you have doubts – consult the website or email us hi@jsnation.com.
-", - "category": "Tickets, invoices, refunds", - "question": "I bought a ticket to workshop, but have another date in my ticket. What is the correct date?
+ "from": "Google, USA", + "id": "ckacf9r39q9i30b842hy1n7pb", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "Angular", + "name": "Minko Gechev", + "overridden": true, + "pic": "lT4nExwRiO1LteO4Kaiw", + "place": "Google, USA", + "slug": "the-state-of-angular", + "speaker": "Minko Gechev", + "speakerSlug": "minko-gechev", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "minko-gechev", + "text": "In this presentation, we’ll look at the current state of Angular and its tooling infrastructure. We’ll discuss what features enabled the latest version of our rendering engine Ivy and how you can take advantage of them today.
+Along the way, we’ll look at the work we did to ensure small bundle size and fast execution! In the second part of the talk, we’ll focus on the tooling that Angular provides to help you deliver apps quickly and efficiently.
", + "time": "18:15", + "title": "The State of Angular", + "track": "June 19", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "minko-gechev", + "time": "18:35", + "title": "Q&A with MC and Minko Gechev", + "track": "June 19", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "time": "18:50", + "title": "Break", + "track": "June 19", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Why does '👩🏿🎤'.length = 7? Is JavaScript UTF-8 or UTF-16? What happens under the hood when you set ? Have you ever wondered how emoji and complex scripting languages are encoded to work correctly across browsers and devices - for billions of people around the world? Or how new emoji are introduced and approved? Have you ever seen one of these: □ � “special” glyph characters before and want more information on why they might appear and how to avoid them in the future? Let’s talk about Unicode encoding in JavaScript and across the world wide web! We’ll go over best practices, common pitfalls, and provide resources to learn more - even where to go if you want to submit a new emoji proposal! :) ", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "naomi-meyer", + "time": "19:25", + "title": "Q&A with MC and Naomi Meyer", + "track": "June 19", }, - ], - "sectionTitle": "Tickets, invoices, refunds", - }, - Object { - "items": Array [ - Object { - "answer": "Yes, we can provide a student discount. Student ticket price is 150 EUR (excluding VAT). Pease, send us a scan or a photo of your relevant students ID and we’ll issue a promocode for you.
-", - "category": "Discounts, diversity scholarship, etc.", - "question": "Do you have any discount for students?
+ "from": "Adobe, USA", + "id": "ckacf89ypq9du0b84mj4gnn04", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "I18N", + "name": "Naomi Meyer", + "overridden": true, + "pic": "oam2zBTKugCINhuUB16w", + "place": "Adobe, USA", + "slug": "emoji-encoding-unicode-internationalization", + "speaker": "Naomi Meyer", + "speakerSlug": "naomi-meyer", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "naomi-meyer", + "text": "Why does '👩🏿🎤'.length = 7? Is JavaScript UTF-8 or UTF-16? What happens under the hood when you set ? Have you ever wondered how emoji and complex scripting languages are encoded to work correctly across browsers and devices - for billions of people around the world? Or how new emoji are introduced and approved? Have you ever seen one of these: □ � “special” glyph characters before and want more information on why they might appear and how to avoid them in the future? Let’s talk about Unicode encoding in JavaScript and across the world wide web! We’ll go over best practices, common pitfalls, and provide resources to learn more - even where to go if you want to submit a new emoji proposal! :)
", + "time": "19:05", + "title": "Emoji Encoding, � Unicode, & Internationalization", + "track": "June 19", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "naomi-meyer", + "time": "19:25", + "title": "Q&A with MC and Naomi Meyer", + "track": "June 19", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "This talk is going to be about react-three-fiber. We'll make a mini game together. We'll see how even beginners can make it through all the heavy boilerplate and math without losing their minds, and then translate it to anything, be it a game or a website with some interesting visuals and effects.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "paul-henschel", + "time": "20:00", + "title": "Q&A with MC and Paul Henschel", + "track": "June 19", }, - Object { - "answer": "Yes, to get a group discount please choose “Team Ticket” on Eventbrite. And some extra discounts are possible when buying more than 10 tickets.
-", - "category": "Discounts, diversity scholarship, etc.", - "question": "Do you provide any group discounts?
+ "from": " oss. founded paranoidandroid, react-spring, react-three-fiber, react-use-gesture, zustand, Switzerland", + "id": "ckay2q9iycw070915ezrm5bj9", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "3D ", + "name": "Paul Henschel", + "overridden": true, + "pic": "LrOO4gtnTEejjFpaXXQy", + "place": " oss. founded paranoidandroid, react-spring, react-three-fiber, react-use-gesture, zustand, Switzerland", + "slug": "making-games-in-react", + "speaker": "Paul Henschel", + "speakerSlug": "paul-henschel", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "paul-henschel", + "text": "This talk is going to be about react-three-fiber. We'll make a mini game together. We'll see how even beginners can make it through all the heavy boilerplate and math without losing their minds, and then translate it to anything, be it a game or a website with some interesting visuals and effects.
", - }, - Object { - "answer": "It includes the conference day (not workshops), food at the conference and afterparty.
+ "time": "19:40", + "title": "Making Games in React", + "track": "June 19", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "paul-henschel", + "time": "20:00", + "title": "Q&A with MC and Paul Henschel", + "track": "June 19", + }, + Object { + "bgColor": "#00deff", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "35", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "lightningTalks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "There are other ways to proxy live video from a browser to an RTMP endpoint, but what if we wanted to interact with that stream first? And not just interact by writing obtuse ffmpeg filters, but just some good ol' HTML and CSS? Let's do that! We'll talk about how you can allow your streamers to go live directly from their browser by using headless Chrome and ffmpeg.", + "from": "Head of Technology & Community @MUX, USA", + "id": "ckb0hardifsz30a69vifkbyal", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": null, + "name": "Matt McClure", + "place": "Head of Technology & Community @MUX, USA", + "slug": "going-live-from-a-browser-with-another-browser", + "speaker": "Matt McClure", + "speakerSlug": "matt-mc-clure", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "There are other ways to proxy live video from a browser to an RTMP endpoint, but what if we wanted to interact with that stream first? And not just interact by writing obtuse ffmpeg filters, but just some good ol' HTML and CSS? Let's do that! We'll talk about how you can allow your streamers to go live directly from their browser by using headless Chrome and ffmpeg.
", - "category": "Discounts, diversity scholarship, etc.", - "question": "I was selected for a Diversity scholarship, what does it include?
+ "time": "20:15", + "title": "Going Live from a Browser...with Another Browser", + "track": "June 19", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Classic frontend vs backend API design conflicts are becoming a headache of the past with serverless and Jamstack architectures and tools; frontend developers are building the full stack. But this poses a new problem: “What database? Who cares about the database?” This talk will help you with the questions you should ask of the database for your next side project...and a place to begin your journey in database internals.", + "from": "VP of Product & Community @Fauna, Netherlands", + "id": "ckb1wt91b2cxi0b14yib6tvl2", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": null, + "name": " Tyler Hannan", + "place": "VP of Product & Community @Fauna, Netherlands", + "slug": "when-worlds-collide-frontend-vs-database", + "speaker": " Tyler Hannan", + "speakerSlug": "tyler-hannan", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Classic frontend vs backend API design conflicts are becoming a headache of the past with serverless and Jamstack architectures and tools; frontend developers are building the full stack. But this poses a new problem: “What database? Who cares about the database?” This talk will help you with the questions you should ask of the database for your next side project...and a place to begin your journey in database internals.
", - }, - Object { - "answer": "We will publish a React Open Source projects application form, where you can submit your project. Make sure you follow us on social media and subscribe to our newsletter.
+ "time": "20:15", + "title": "When Worlds Collide: Frontend vs Database", + "track": "June 19", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "With the yearly ECMAScript releases (ES2015..ES2019) of a lot of things have changed in JavaScript-land, and there's even more to come. This talk takes a look at a few of the newest (ES2020) and some of the upcoming ECMAScript features, which (hopefully) will become part of the ECMAScript Language Specification in the near future.", + "from": "3RDS, Belgium", + "id": "ckb98m9cfkub40b0901h8rt8u", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": null, + "name": "Bramus Van Damme", + "place": "3RDS, Belgium", + "slug": "es-next-proposals-to-look-forward-to", + "speaker": "Bramus Van Damme", + "speakerSlug": "bramus-van-damme", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "With the yearly ECMAScript releases (ES2015..ES2019) of a lot of things have changed in JavaScript-land, and there's even more to come. This talk takes a look at a few of the newest (ES2020) and some of the upcoming ECMAScript features, which (hopefully) will become part of the ECMAScript Language Specification in the near future.
", - "category": "Discounts, diversity scholarship, etc.", - "question": "How can I apply for React Open Source Awards?
+ "time": "20:15", + "title": "ESNext: Proposals To Look Forward To", + "track": "June 19", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "We are very used to generating visual results with code but are still often surprised to hear that we can create music in the same way. Oh, you didn’t know that? You are not alone. Even though the idea of music programming is older than all of us this concept is still pretty unfamiliar among many developers. Not for long! Let's shed some light on music coding in our daily bases web applications using Angular. ", + "from": "Swedbank, Lithuania", + "id": "ckb98nznpkqza0903b466iuk0", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": null, + "name": "Laura Silvanavičiūtė", + "place": "Swedbank, Lithuania", + "slug": "what-does-the-angular-say", + "speaker": "Laura Silvanavičiūtė", + "speakerSlug": "laura-silvanaviciute", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "We are very used to generating visual results with code but are still often surprised to hear that we can create music in the same way. Oh, you didn’t know that? You are not alone. Even though the idea of music programming is older than all of us this concept is still pretty unfamiliar among many developers. Not for long! Let's shed some light on music coding in our daily bases web applications using Angular.
", - }, - Object { - "answer": "Yes, we do run a diversity scholarship program. Free diversity tickets are distributed via community channels and also via application form. Follow our medium blog for details.
+ "time": "20:15", + "title": "What Does The Angular Say? 🦊", + "track": "June 19", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "DeliveryHero is a huge international company. And like in every big company, introduction of a new technical improvement is a hot topic. +Get to know the challenges our team faced while making our platform E2E tested, how our reporting mechanisms improved over time and solutions we developed to test different variations of a feature. ", - "category": "Discounts, diversity scholarship, etc.", - "question": "Do you provide any special tickets or discount for diversity groups?
+ "from": "null, null", + "id": "ckb9cab20uf2y0b14bsz165o0", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": undefined, + "name": "Vadym Kukhtin & Devesh Jadon", + "place": "null, null", + "slug": "adaptation-of-the-e2e-tests-for-a-big-project", + "speaker": "Vadym Kukhtin & Devesh Jadon", + "speakerSlug": "vadym-kukhtin-devesh-jadon", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "DeliveryHero is a huge international company. And like in every big company, introduction of a new technical improvement is a hot topic. +Get to know the challenges our team faced while making our platform E2E tested, how our reporting mechanisms improved over time and solutions we developed to test different variations of a feature.
", - }, - ], - "sectionTitle": "Discounts, diversity scholarship, etc.", + "time": "20:15", + "title": "Adaptation of the E2E Tests for a Big Project", + "track": "June 19", + }, + ], + "overridden": true, + "time": "20:15", + "title": "Lightning talks", + "track": "June 19", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "10", + "isoDate": "2020-06-18T00:00:00.000Z", + "time": "20:50", + "title": "Conference Closing", + "track": "June 19", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "10", + "isoDate": "2020-06-18T00:00:00.000Z", + "time": "21:00", + "title": "Break", + "track": "June 19", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "60", + "isoDate": "2020-06-18T00:00:00.000Z", + "noTimeCheck": true, + "speakerRoomLink": "#zoom-bars", + "time": "21:10", + "title": "Afterparty: Zoom Bars & Quake Tournament", + "track": "June 19", + }, + ], + "name": "11", + "tab": "June 19", + "title": "June 19", + }, +] +`; + +exports[`JSN should prepare speakers 1`] = ` +Object { + "advisers": Array [ + Object { + "company": "Gatsby", + "desc": "Max Stoiber is a Staff Software Engineer at Gatsby, inventing the future of web development. Previously he worked at GitHub, who acquired the startup he co-founded, Spectrum. He is well known for making styled-components, react-boilerplate, and a wide variety of other open source projects in the React ecosystem.", + "expertise": "CSS-in-JS, React ", + "github": "https://github.com/mxstbr", + "medium": null, + "name": "Max Stoiber", + "photo": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/2jqu4t6TSlKDcqRFP6zT", + "site": "https://mxstbr.com/", + "twitter": "https://twitter.com/mxstbr", }, Object { - "items": Array [ - Object { - "answer": "You will get an email with all the information you’ll need at the conference about a week before the event. We will also add a link to a page with all organisational details to the website.
-", - "category": "Organisational questions", - "question": "Where can I find all logistics and organisational information?
-", - }, - Object { - "answer": "Unfortunately, we won't have facilities for kids this time.
-", - "category": "Organisational questions", - "question": "Do you have a kids corner at the event?
-", - }, - Object { - "answer": "There always is a wardrobe/cloakroom, but neither we nor the venue can be held accountable for attendee’s belongings. For big pieces of luggage, we suggest to leave them in a hotel luggage room or special luggage lockers.
-", - "category": "Organisational questions", - "question": "Is there a place to store my luggage during the event?
-", - }, - ], - "sectionTitle": "Organisational questions", + "company": null, + "desc": "I come from an accounting & banking background, and also worked in construction. I then pursued a CS degree, which I finished. Now I work as a Fullstack Developer. ", + "expertise": "Career Building Tips", + "github": null, + "medium": null, + "name": "Catalin Pit", + "photo": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/eKZpzUzmQCrC5n4XZeoE", + "site": "https://catalins.tech/", + "twitter": "https://twitter.com/catalinmpit", }, Object { - "items": Array [ - Object { - "answer": "Yes, we serve hot lunch and coffee/pastries/snacks both at the conference and the workshops.
-", - "category": "Food for conference attendees", - "question": "Do you serve any food at the events?
-", - }, - Object { - "answer": "Yes, we have vegetarian, vegan and gluten-free food for lunch at the conference. As for workshops – please let us know in advance if you have any special meal preferences.
-", - "category": "Food for conference attendees", - "question": "Do you have vegetarian/vegan/gluten free options at the event and workshops?
-", - }, - ], - "sectionTitle": "Food for conference attendees", + "company": "GitLab", + "desc": "Natalia Tepluhina is a Vue.js core team member and a Staff Frontend Engineer at GitLab. + +She is a conference speaker and author of articles on different topics related to Vue.js . Thanks to these activities Natalia has got a title of Google Developer Expert in Web Technologies.", + "expertise": "Vue", + "github": "https://github.com/NataliaTepluhina", + "medium": null, + "name": "Natalia Tepluhina", + "photo": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/1gYQx8QrTcSXiXu0sUt8", + "site": null, + "twitter": "https://twitter.com/N_Tepluhina", }, Object { - "items": Array [ - Object { - "answer": "Yes, you can. Please, send us brief information about yourself: your experience in volunteering (optional) at conferences or any event organizing. Also please be sure that you’re going to be available on the day of the event and the day before it.
-", - "category": "Other questions", - "question": "Can I join the conference as a volunteer?
-", - }, - Object { - "answer": "Laptop and charger.
-", - "category": "Other questions", - "question": "What do I need to bring with me to the workshop?
-", - }, - Object { - "answer": "Yes, of course! We’d be happy if you become our info-partner. Please, drop us a line at hi@jsnation.com and we’ll get back to you with all the information.
-", - "category": "Other questions", - "question": "We are a community/also a tech conference. Could we collaborate with your conference?
-", - }, - ], - "sectionTitle": "Other questions", + "company": "NearForm", + "desc": "Node.js TSC member, PhD, Technical Director @ NearForm, IoT Expert, Consultant, author of Pino and Fastify. Co-author of the book \\"Node.js Cookbook, Third Edition\\" edited by Packt.", + "expertise": "Node.js", + "github": "https://github.com/mcollina", + "medium": "http://matteocollina.com/", + "name": "Matteo Collina", + "photo": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/4LTWaL5SpOCr2oBbS8rq", + "site": "", + "twitter": "https://twitter.com/matteocollina", }, Object { - "items": Array [ - Object { - "answer": "Yes, we can issue an invitation letter to make the process of getting visa easier. Please, send to hi@jsnation.com the following details according to your travel document, as well as your ticket to the conference:
-Can you issue an invitation letter to apply for a visa?
-", - }, - ], - "sectionTitle": "Visa", + "company": " oss. founded paranoidandroid, react-spring, react-three-fiber, react-use-gesture, zustand", + "desc": "Front-end developer. Currently living in St. Gallen, Switzerland. Founder of Luxundlaune, a photography platform in Germany, Paranoidandroid, a custom rom for Android and several open source projects including react-spring, react-three-fiber, react-use-gesture, zustand.", + "expertise": "3D react-three-fiber", + "github": "https://github.com/drcmda", + "medium": null, + "name": "Paul Henschel", + "photo": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/LrOO4gtnTEejjFpaXXQy", + "site": null, + "twitter": "https://twitter.com/0xca0a", }, - ], - "jobs": Array [ Object { - "description": " -", - "id": "ck36gdnkrxin20b66of6jxny4", - "image": "https://media.graphcms.com/knpNY7bTqm4Lh4yQis1Z", - "link": "https://www.formidable.com/", - "slogan": " -", - "subtitle": " -", - "title": "Are You Formidable?", + "company": "Cypress", + "desc": "Cypress.io VP of engineering. + +Gleb Bahmutov is JavaScript ninja, image processing expert and software quality fanatic. During the day Gleb is making the web a better place as VP of Engineering at Cypress.io. At night he is fighting software bugs and blogs about it at glebbahmutov.com/blog.", + "expertise": "Testing", + "github": "https://github.com/bahmutov", + "medium": null, + "name": "Gleb Bahmutov", + "photo": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/2zoMrERjSoil3vrJSL95", + "site": "https://glebbahmutov.com/blog/", + "twitter": "https://twitter.com/bahmutov", }, ], - "mcs": Array [ + "committee": Array [ Object { "activities": Object {}, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/6gQUujMTJatYxdKyBWzq", - "bio": "Bruce Lawson is freelance web standards and accessibility consultant. He was co-editor of the HTML5.3 specification, one of the inventors of the
+ "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/U3D6ETwEQ7GD8wlJUG5G", + "bio": "Joonas Salovaara is a Principal Consultant and team lead at Reaktor Amsterdam. He is an advocate of the meetup scene, where he helps run AmsterdamJS, HelsinkiJS, and React Helsinki.
", - "company": "Freelance web standards & accessibility consultant, UK", - "country": "UK", - "githubUrl": null, - "id": "ck42wk4cplr6v0b320jirdl2f", + "company": "Reaktor, Netherlands", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Netherlands", + "decor": true, + "githubUrl": "https://github.com/sarukuku", + "id": "ck5ci3p89gqqv0b20i49qyt1x", + "idMain": "ck5ci3p89gqqv0b20i49qyt1x", "mediumUrl": null, - "name": "Bruce Lawson", - "ownSite": "https://www.brucelawson.co.uk/", + "name": "Joonas Salovaara", + "ownSite": null, + "slug": "joonas-salovaara", "socials": Array [ Object { - "icon": "tw", - "link": "https://twitter.com/brucel", + "icon": "gh", + "link": "https://github.com/sarukuku", }, Object { - "icon": "site", - "link": "https://www.brucelawson.co.uk/", + "icon": "tw", + "link": "https://twitter.com/JoonasSalovaara", }, ], - "twitterUrl": "https://twitter.com/brucel", + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/JoonasSalovaara", }, Object { "activities": Object {}, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/LJvYR4kGQLOdL6y5CWC9", - "bio": "Floor studied design, worked in advertising, then worked with a bunch of start-ups in product and community roles, learned how to program (Ruby), (co)organized countless tech conferences, meetups and workshops, ran a co-working space and start-up accelerator in Vienna, before moving back to the Netherlands and getting back into developer relations.
+ "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/VttgCnjTkanMOLw0OSJJ", + "bio": "Kanstantsin is a Software Developer Consultant at Xebia. He is passionate about running, racing cars and JavaScript.
", - "company": "Microsoft, Netherlands", + "company": "Xebia, Netherlands", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", "country": "Netherlands", - "githubUrl": "https://github.com/FloorD", - "id": "ck5we9vpqer9u0b66r7n5rq4z", + "decor": true, + "githubUrl": "https://github.com/mrkosima", + "id": "ck5ci9esogqzy0b20s1auip8a", + "idMain": "ck5ci9esogqzy0b20s1auip8a", "mediumUrl": null, - "name": "Floor Drees", + "name": "Kanstantsin Klimashevich", "ownSite": null, + "slug": "kanstantsin-klimashevich", "socials": Array [ Object { "icon": "gh", - "link": "https://github.com/FloorD", + "link": "https://github.com/mrkosima", }, Object { "icon": "tw", - "link": "https://twitter.com/floordrees", + "link": "https://twitter.com/mrkosima", }, ], - "twitterUrl": "https://twitter.com/floordrees", + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/mrkosima", }, Object { "activities": Object {}, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/dVk76RUqrRdTGRSbGgsp", - "bio": "React focused developer, working on a Design System at Albert Heijn (Dutch supermarket). Started out writing ActionScript, did jQuery and thus has all sorts of knowledge on deprecated stuff. Part of a frontend development couple that produced a kid.
+ "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/wpWwhvX5T5SBZjbfFaSK", + "bio": "Aleksandr is a Frontend Developer with 6 years experience. He is a member of JSNation Program Committee and an active member of Saint-Petersburg local meetup scene. He is passionated about games development, visualization and other graphics stuff.
", - "company": "Passionate People, Netherlands", - "country": "Netherlands", - "githubUrl": "https://github.com/mettin", - "id": "ck5weu60bem5y0b20y7hj3pd9", + "company": "Tinkoff.ru, Russia", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Russia", + "decor": true, + "githubUrl": "https://github.com/lekzd", + "id": "ck5dlqk56igxf0b20bz4d7n7y", + "idMain": "ck5dlqk56igxf0b20bz4d7n7y", "mediumUrl": null, - "name": "Mettin Parzinski", + "name": "Aleksandr Korotaev", "ownSite": null, + "slug": "aleksandr-korotaev", "socials": Array [ Object { "icon": "gh", - "link": "https://github.com/mettin", + "link": "https://github.com/lekzd", }, Object { "icon": "tw", - "link": "https://twitter.com/mettinparzinski", + "link": "https://twitter.com/mamu_eval", }, ], - "twitterUrl": "https://twitter.com/mettinparzinski", + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/mamu_eval", }, ], - "pages": Object { - "coc": Object { - "description": null, - "key": "coc", - "keywords": "", - "pageNavigation": null, - "pageSections": null, - "pageSlogan": null, - "pageStatistics": null, - "seoDescription": null, - "themeColor": null, - "titlePage": "Code of conduct", - "titleSeo": null, - }, - "extended": Object { - "description": null, - "key": "extended", - "keywords": "", - "pageNavigation": null, - "pageSections": null, - "pageSlogan": null, - "pageStatistics": null, - "seoDescription": null, - "themeColor": null, - "titlePage": "Extended program", - "titleSeo": null, - }, - "faq": Object { - "description": null, - "key": "faq", - "keywords": "", - "pageNavigation": null, - "pageSections": null, - "pageSlogan": null, - "pageStatistics": null, - "seoDescription": null, - "themeColor": null, - "titlePage": "FAQ", - "titleSeo": null, - }, - "jobs": Object { - "description": null, - "key": "jobs", - "keywords": "", - "pageNavigation": null, - "pageSections": null, - "pageSlogan": null, - "pageStatistics": null, - "seoDescription": null, - "themeColor": null, - "titlePage": "Amsterdam JSNation Conference 2020", - "titleSeo": null, - }, - "main": Object { - "description": null, - "key": "main", - "keywords": "javascript, conference, amsterdamjs, jsnation, vuejs, react, angular, frameworks", - "pageNavigation": Object { - "headerNav": Array [ + "main": Array [ + Object { + "activities": Object { + "talks": Array [ Object { - "href": "#location", - "text": "location", + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "You've built an app an you want it to scale. Do you want CI/CD, custom domains, SSL certificates, APIs, global scale of your static assets, authentication, and authorization? Let's learn how to build a static web app on Azure and go from GitHub repo to global scale in minutes.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "john-papa", + "time": "21:10", + "title": "Q&A with MC and John Papa", + "track": "June 18", + }, + "from": "Microsoft, USA", + "id": "cka58qnw32jhw0b20ezgtk0za", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "", + "name": "John Papa", + "overridden": true, + "pic": "a70MfQ3GTCI8cZlWiDuf", + "place": "Microsoft, USA", + "slug": "from-code-to-scale-build-a-static-web-app-in-minutes", + "speaker": "John Papa", + "speakerSlug": "john-papa", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "john-papa", + "text": "You've built an app an you want it to scale. Do you want CI/CD, custom domains, SSL certificates, APIs, global scale of your static assets, authentication, and authorization? Let's learn how to build a static web app on Azure and go from GitHub repo to global scale in minutes.
+", + "time": "20:50", + "timeString": "20:50", + "title": "From Code to Scale! Build a Static Web App in Minutes", + "track": Object { + "isPrimary": true, + "name": "June 18", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/VZd0usutTbu8Ut3sEh3M", + "bio": "John is a professional Web and Mobile Developer, avid OSS and community advocate, dedicated father and husband. He is currently a Developer Advocate for Microsoft and has formerly worked for Disney on several web and mobile applications that you may have used. +John is the author of various OSS such as Peacock, the Angular Style Guide, and many popular courses. You can listen to him on the popular weekly podcast Real Talk JavaScript.
+", + "color": "white", + "company": "Microsoft, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/johnpapa", + "id": "ck9y5fepjrww10b20575ojpni", + "idAlt": "ck9y5hypvrxor0b20ghqqkc1r", + "idMain": "ck9y5fepjrww10b20575ojpni", + "isNightSpeaker": null, + "label": "", + "mediumUrl": null, + "name": "John Papa", + "order": 110, + "ownSite": null, + "slug": "john-papa", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/johnpapa", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/John_Papa", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": "https://twitter.com/John_Papa", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Composition API is one of the biggest new features in Vue 3. In this talk, I will explain what is it and how to use Composition API for code abstraction and reuse.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "natalia-tepluhina", + "time": "16:30", + "title": "Q&A with MC and Natalia Tepluhina", + "track": "June 19", + }, + "from": "GitLab, Ukraine", + "id": "ckacf4j6nq9220b849ojeqrqk", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "VueJS", + "name": "Natalia Tepluhina", + "overridden": true, + "pic": "1gYQx8QrTcSXiXu0sUt8", + "place": "GitLab, Ukraine", + "slug": "composition-api-a-quick-over-vue", + "speaker": "Natalia Tepluhina", + "speakerSlug": "natalia-tepluhina", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "natalia-tepluhina", + "text": "Composition API is one of the biggest new features in Vue 3. In this talk, I will explain what is it and how to use Composition API for code abstraction and reuse.
+", + "time": "16:10", + "timeString": "16:10", + "title": "Composition API: a Quick overVue", + "track": Object { + "isPrimary": null, + "name": "June 19", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/1gYQx8QrTcSXiXu0sUt8", + "bio": "Natalia Tepluhina is a Vue.js core team member and a Staff Frontend Engineer at GitLab.
+She is a conference speaker and author of articles on different topics related to Vue.js . Thanks to these activities Natalia has got a title of Google Developer Expert in Web Technologies.
+", + "color": "#fff", + "company": "GitLab, Ukraine", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Ukraine", + "githubUrl": "https://github.com/NataliaTepluhina", + "id": "ck9tpfsc7g3zm0b203pxdysen", + "idAlt": "ck9tpi67688ge0b84mfbe3ola", + "idMain": "ck9tpfsc7g3zm0b203pxdysen", + "isNightSpeaker": null, + "label": "VueJS", + "mediumUrl": null, + "name": "Natalia Tepluhina", + "order": 100, + "ownSite": null, + "slug": "natalia-tepluhina", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/NataliaTepluhina", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/N_Tepluhina", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#4EBA87", + "twitterUrl": "https://twitter.com/N_Tepluhina", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Modern JavaScript is powerful, but big frameworks like Vue or React add an overwhelming amount of complexity to a developers' workflow. That’s why I wrote AlpineJS. It’s less than 10kb, requires no build process, takes almost no time to learn, yet gives you the declarative templating and reactivity you can’t live without. I can’t wait to show it to you.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "caleb-porzio", + "time": "18:00", + "title": "Q&A with MC and Caleb Porzio", + "track": "June 19", + }, + "from": "Creator of AlpineJS & LaravelLivewire , USA", + "id": "ckaw8lqgf8yxe0a69fyvh3eu2", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "AlpineJS", + "name": "Caleb Porzio", + "overridden": true, + "pic": "Wt34hvR5S9yhGTjjjrIA", + "place": "Creator of AlpineJS & LaravelLivewire , USA", + "slug": "say-no-to-complexity-with-alpine-js", + "speaker": "Caleb Porzio", + "speakerSlug": "caleb-porzio", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "caleb-porzio", + "text": "Modern JavaScript is powerful, but big frameworks like Vue or React add an overwhelming amount of complexity to a developers' workflow. That’s why I wrote AlpineJS. It’s less than 10kb, requires no build process, takes almost no time to learn, yet gives you the declarative templating and reactivity you can’t live without. I can’t wait to show it to you.
+", + "time": "17:40", + "timeString": "17:40", + "title": "Say No To Complexity With AlpineJS", + "track": Object { + "isPrimary": null, + "name": "June 19", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/Wt34hvR5S9yhGTjjjrIA", + "bio": "Co-Host of @noplanstomerge podcast | Creator of LaravelLivewire & AlpineJS
+", + "color": "white", + "company": "Creator of AlpineJS & LaravelLivewire , USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/calebporzio", + "id": "ckagogr66m99y0b20psyjq3xs", + "idAlt": "ckagohr8im9db0b20ajkk1ygs", + "idMain": "ckagogr66m99y0b20psyjq3xs", + "isNightSpeaker": null, + "label": "AlpineJS", + "mediumUrl": null, + "name": "Caleb Porzio", + "order": 90, + "ownSite": null, + "slug": "caleb-porzio", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/calebporzio", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/calebporzio", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": "https://twitter.com/calebporzio", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/FQtqvdGOQsSrpZD1rU4X", + "bio": "Tejas enjoys people, code, and talking about code to people. Having begun coding at age 8, today Tejas travels around the world, encouraging, educating and empowering developers in the web development community.
+", + "color": "white", + "company": "Contiamo, Germany", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Germany", + "githubUrl": "https://github.com/TejasQ", + "id": "ck10tb7315akt0b71rbhubpkk", + "idAlt": "ckb6b1cp5dgh20b098gzij6ko", + "idMain": "ck10tb7315akt0b71rbhubpkk", + "isNightSpeaker": false, + "label": "", + "mediumUrl": null, + "name": "Tejas Kumar", + "order": 85, + "ownSite": null, + "slug": "tejas-kumar", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/TejasQ", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/tejaskumar_", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": "https://twitter.com/tejaskumar_", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Microfrontends as Monolith? Shared component library or styleguide? This technique allows to consume modules from separate builds, which can be developed and deployed independently. An introduction, and further ideas.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "tobias-koppers", + "time": "18:40", + "title": "Q&A with MC and Tobias Koppers", + "track": "June 18", + }, + "from": "Webpack, Germany", + "id": "ckacf6molq9810b84xazrb1vz", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "Ecosystem", + "name": "Tobias Koppers", + "overridden": true, + "pic": "3PwPQYRMRDKMjoQX05Bk", + "place": "Webpack, Germany", + "slug": "module-federation-in-webpack-5", + "speaker": "Tobias Koppers", + "speakerSlug": "tobias-koppers", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "tobias-koppers", + "text": "Microfrontends as Monolith? Shared component library or styleguide? This technique allows to consume modules from separate builds, which can be developed and deployed independently. An introduction, and further ideas.
+", + "time": "18:20", + "timeString": "18:20", + "title": "Module Federation in Webpack 5", + "track": Object { + "isPrimary": true, + "name": "June 18", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/3PwPQYRMRDKMjoQX05Bk", + "bio": "Creator of webpack. Working full time on Open Source. Father of two children. Likes to play board games.
+", + "color": "#ae4f01", + "company": "Webpack, Germany", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Germany", + "githubUrl": "https://github.com/sokra", + "id": "ck38sfr8oqk5q0b73dqsncj1v", + "idAlt": "cka2badnmz9iq0b842esxsu1c", + "idMain": "ck38sfr8oqk5q0b73dqsncj1v", + "isNightSpeaker": null, + "label": "Ecosystem", + "mediumUrl": "https://medium.com/@sokra", + "name": "Tobias Koppers", + "order": 80, + "ownSite": null, + "slug": "tobias-koppers", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/sokra", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/wSokra", + }, + Object { + "icon": "med", + "link": "https://medium.com/@sokra", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#fff40d", + "twitterUrl": "https://twitter.com/wSokra", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "In this presentation, we’ll look at the current state of Angular and its tooling infrastructure. We’ll discuss what features enabled the latest version of our rendering engine Ivy and how you can take advantage of them today. + +Along the way, we’ll look at the work we did to ensure small bundle size and fast execution! In the second part of the talk, we’ll focus on the tooling that Angular provides to help you deliver apps quickly and efficiently.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "minko-gechev", + "time": "18:35", + "title": "Q&A with MC and Minko Gechev", + "track": "June 19", + }, + "from": "Google, USA", + "id": "ckacf9r39q9i30b842hy1n7pb", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "Angular", + "name": "Minko Gechev", + "overridden": true, + "pic": "lT4nExwRiO1LteO4Kaiw", + "place": "Google, USA", + "slug": "the-state-of-angular", + "speaker": "Minko Gechev", + "speakerSlug": "minko-gechev", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "minko-gechev", + "text": "In this presentation, we’ll look at the current state of Angular and its tooling infrastructure. We’ll discuss what features enabled the latest version of our rendering engine Ivy and how you can take advantage of them today.
+Along the way, we’ll look at the work we did to ensure small bundle size and fast execution! In the second part of the talk, we’ll focus on the tooling that Angular provides to help you deliver apps quickly and efficiently.
+", + "time": "18:15", + "timeString": "18:15", + "title": "The State of Angular", + "track": Object { + "isPrimary": null, + "name": "June 19", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/lT4nExwRiO1LteO4Kaiw", + "bio": "Minko Gechev is a senior engineer at Google, where he develops tools for the Angular framework. Before joining Google, he was a technical co-founder and the CTO of Rhyme.com, which in 2019 got acquired by Coursera.
+The President of the Republic of Bulgaria awarded Minko for his software projects with a high social impact and with a diploma for contributions to the areas of computer science and software engineering.
+In 2019 Forbes Bulgaria included Minko Gechev in their selection \\"30 under 30\\" in category Science and Technology.
+", + "color": "white", + "company": "Google, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "github.com/mgechev", + "id": "cka3pruzszox60b20cjv3sfbo", + "idAlt": "cka3pt9yd30cl0b84ofpnczob", + "idMain": "cka3pruzszox60b20cjv3sfbo", + "isNightSpeaker": null, + "label": "Angular", + "mediumUrl": null, + "name": "Minko Gechev", + "order": 75, + "ownSite": null, + "slug": "minko-gechev", + "socials": Array [ + Object { + "icon": "gh", + "link": "github.com/mgechev", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/mgechev", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": "https://twitter.com/mgechev", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Why does '👩🏿🎤'.length = 7? Is JavaScript UTF-8 or UTF-16? What happens under the hood when you set ? Have you ever wondered how emoji and complex scripting languages are encoded to work correctly across browsers and devices - for billions of people around the world? Or how new emoji are introduced and approved? Have you ever seen one of these: □ � “special” glyph characters before and want more information on why they might appear and how to avoid them in the future? Let’s talk about Unicode encoding in JavaScript and across the world wide web! We’ll go over best practices, common pitfalls, and provide resources to learn more - even where to go if you want to submit a new emoji proposal! :) ", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "naomi-meyer", + "time": "19:25", + "title": "Q&A with MC and Naomi Meyer", + "track": "June 19", + }, + "from": "Adobe, USA", + "id": "ckacf89ypq9du0b84mj4gnn04", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "I18N", + "name": "Naomi Meyer", + "overridden": true, + "pic": "oam2zBTKugCINhuUB16w", + "place": "Adobe, USA", + "slug": "emoji-encoding-unicode-internationalization", + "speaker": "Naomi Meyer", + "speakerSlug": "naomi-meyer", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "naomi-meyer", + "text": "Why does '👩🏿🎤'.length = 7? Is JavaScript UTF-8 or UTF-16? What happens under the hood when you set ? Have you ever wondered how emoji and complex scripting languages are encoded to work correctly across browsers and devices - for billions of people around the world? Or how new emoji are introduced and approved? Have you ever seen one of these: □ � “special” glyph characters before and want more information on why they might appear and how to avoid them in the future? Let’s talk about Unicode encoding in JavaScript and across the world wide web! We’ll go over best practices, common pitfalls, and provide resources to learn more - even where to go if you want to submit a new emoji proposal! :)
+", + "time": "19:05", + "timeString": "19:05", + "title": "Emoji Encoding, � Unicode, & Internationalization", + "track": Object { + "isPrimary": null, + "name": "June 19", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/oam2zBTKugCINhuUB16w", + "bio": "Naomi is a Software Development Engineer at Adobe on the Globalization, Core Services team where she works on the internationalization and localization of Creative Cloud and Document Cloud products. Before writing JavaScript full time, Naomi worked as a teacher across Asia and West Africa. She enjoys weekends outside - hiking, camping, and riding bikes.
+", + "color": "white", + "company": "Adobe, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/naeohmi", + "id": "ck1hkj8woq09x0b712ohb7uts", + "idAlt": "cka2bt700xjd70b20a8y7ze5o", + "idMain": "ck1hkj8woq09x0b712ohb7uts", + "isNightSpeaker": null, + "label": "I18N", + "mediumUrl": null, + "name": "Naomi Meyer", + "order": 70, + "ownSite": "https://naeohmi.github.io/me/", + "slug": "naomi-meyer", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/naeohmi", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/nae_ohmi", + }, + Object { + "icon": "site", + "link": "https://naeohmi.github.io/me/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": "https://twitter.com/nae_ohmi", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "As front-end tooling and frameworks continue to evolve and improve at a pace that is often hard to keep up with, serverless abstractions continue to move closer and closer to the client, abstracting away back end services and making them more and more consumable by traditionally front end developers. + +In this talk I’ll show how we can use a combination of GraphQL SDL along with a new DSL (GraphQL Transform) created by the Amplify team to build out a full stack cloud application directly from your GraphQL schema. Using this GraphQL DSL, we’ll walk through how to model a Database, authorization rules, relationships, and custom access patterns. We’ll look at how to rapidly prototype an example application, and view some demos including a voting app capable of handling over 100,000 operations per second.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "nader-dabit", + "time": "17:10", + "title": "Q&A with MC and Nader Dabit", + "track": "June 18", + }, + "from": "Amazon AWS, USA", + "id": "cka40cpwb0b660b20s4y84m7y", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "GraphQL", + "name": "Nader Dabit", + "overridden": true, + "pic": "4NF4AeaJS9uxty64CCCX", + "place": "Amazon AWS, USA", + "slug": "transforming-graph-ql-infrastructure-as-code-for-front-end-developers", + "speaker": "Nader Dabit", + "speakerSlug": "nader-dabit", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "nader-dabit", + "text": "As front-end tooling and frameworks continue to evolve and improve at a pace that is often hard to keep up with, serverless abstractions continue to move closer and closer to the client, abstracting away back end services and making them more and more consumable by traditionally front end developers.
+In this talk I’ll show how we can use a combination of GraphQL SDL along with a new DSL (GraphQL Transform) created by the Amplify team to build out a full stack cloud application directly from your GraphQL schema. Using this GraphQL DSL, we’ll walk through how to model a Database, authorization rules, relationships, and custom access patterns. We’ll look at how to rapidly prototype an example application, and view some demos including a voting app capable of handling over 100,000 operations per second.
+", + "time": "16:50", + "timeString": "16:50", + "title": "Transforming GraphQL – Infrastructure as Code for Front End Developers", + "track": Object { + "isPrimary": true, + "name": "June 18", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/glrjtl9T5awAzyT0DZVd", + "bio": "Nader has been developing with React Native for over 2.5 years. He has worked with and trained developers from fortune 500 companies like Amazon, Visa, American Express, and Microsoft, helping them to get up to speed with React Native as quickly as possible.
+", + "color": "#400042", + "company": "Amazon AWS, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/dabit3", + "id": "ck60gduudqlr30b75qyumd2is", + "idAlt": "ck9y6atjrs2kr0b207hfoprfj", + "idMain": "ck60gduudqlr30b75qyumd2is", + "isNightSpeaker": false, + "label": "GraphQL", + "mediumUrl": null, + "name": "Nader Dabit", + "order": 60, + "ownSite": null, + "slug": "nader-dabit", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/dabit3", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/dabit3", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#f200fa", + "twitterUrl": "https://twitter.com/dabit3", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "TypeScript is becoming one of the dominant ways in which people write JavaScript. The goal of TypeScript is to augment and not replace JavaScript – so how does the team ensure that the future of JS is always JS.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "orta-therox", + "time": "17:05", + "title": "Q&A with MC and Orta Therox", + "track": "June 19", + }, + "from": "Microsoft, USA", + "id": "cka58sj7q7kuh0b84ybcvhe16", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "TypeScript", + "name": "Orta Therox", + "overridden": true, + "pic": "NPpzhbjmTU2x6vl9kySi", + "place": "Microsoft, USA", + "slug": "how-does-the-type-script-team-try-to-avoid-negative-effects-on-the-js-ecosystem", + "speaker": "Orta Therox", + "speakerSlug": "orta-therox", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "orta-therox", + "text": "TypeScript is becoming one of the dominant ways in which people write JavaScript. The goal of TypeScript is to augment and not replace JavaScript – so how does the team ensure that the future of JS is always JS.
+", + "time": "16:45", + "timeString": "16:45", + "title": "How Does the TypeScript Team Try to Avoid Negative Effects on the JS Ecosystem", + "track": Object { + "isPrimary": null, + "name": "June 19", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/NPpzhbjmTU2x6vl9kySi", + "bio": "TypeScript compiler team at Microsoft. For the last decade has worked on large-scale open source projects across the native and JavaScript ecosystem.
+", + "color": "#030303", + "company": "Microsoft, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/orta", + "id": "ck5miacugx31f0b201nqjj073", + "idAlt": "cka3xxnyg3q460b84x5l8w23f", + "idMain": "ck5miacugx31f0b201nqjj073", + "isNightSpeaker": null, + "label": "TypeScript", + "mediumUrl": null, + "name": "Orta Therox", + "order": 55, + "ownSite": null, + "slug": "orta-therox", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/orta", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/orta", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#61DAFB", + "twitterUrl": "https://twitter.com/orta", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/2jqu4t6TSlKDcqRFP6zT", + "bio": "Max Stoiber is a Staff Software Engineer at Gatsby, inventing the future of web development. Previously he worked at GitHub, who acquired the startup he co-founded, Spectrum. He is well known for making styled-components, react-boilerplate, and a wide variety of other open source projects in the React ecosystem.
+", + "color": "white", + "company": "Gatsby, Austria", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Austria", + "githubUrl": "https://github.com/mxstbr", + "id": "ck0zj6ytry8s20b71lgpuqves", + "idAlt": "ck9fxszhpuc2j0b20z63eehjk", + "idMain": "ck0zj6ytry8s20b71lgpuqves", + "isNightSpeaker": false, + "label": "React", + "mediumUrl": null, + "name": "Max Stoiber", + "order": 50, + "ownSite": "https://mxstbr.com/", + "slug": "max-stoiber", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/mxstbr", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/mxstbr", + }, + Object { + "icon": "site", + "link": "https://mxstbr.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": "https://twitter.com/mxstbr", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "In my journey through nodeland, I always wonder about the cost of my abstractions. + +I started a journey to write an HTTP framework with extremely low overhead, and Fastify was born. With its ability to reach an astonishing 90k requests/sec, Fastify can halve your cloud server bill. + +In this talk, I will walk you through the basics of the framework: how to route requests, write tests, and use the plugin system.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "matteo-collina", + "time": "18:05", + "title": "Q&A with MC and Matteo Collina", + "track": "June 18", + }, + "from": "NearForm, Italy", + "id": "cka58pk4h7khc0b84gtifenhl", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "NodeJS", + "name": "Matteo Collina", + "overridden": true, + "pic": "4LTWaL5SpOCr2oBbS8rq", + "place": "NearForm, Italy", + "slug": "1-2-3-fastify", + "speaker": "Matteo Collina", + "speakerSlug": "matteo-collina", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "matteo-collina", + "text": "In my journey through nodeland, I always wonder about the cost of my abstractions.
+I started a journey to write an HTTP framework with extremely low overhead, and Fastify was born. With its ability to reach an astonishing 90k requests/sec, Fastify can halve your cloud server bill.
+In this talk, I will walk you through the basics of the framework: how to route requests, write tests, and use the plugin system.
+", + "time": "17:45", + "timeString": "17:45", + "title": "1, 2, 3... Fastify!", + "track": Object { + "isPrimary": true, + "name": "June 18", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/4LTWaL5SpOCr2oBbS8rq", + "bio": "Node.js TSC member, PhD, Technical Director @ NearForm, IoT Expert, Consultant, author of Pino and Fastify. Co-author of the book \\"Node.js Cookbook, Third Edition\\" edited by Packt.
+", + "color": "#fff", + "company": "NearForm, Italy", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Italy", + "githubUrl": "https://github.com/mcollina", + "id": "ck38s6qxa28h90b66plt7e737", + "idAlt": "ck38s81rz28ki0b66keep3ghk", + "idMain": "ck38s6qxa28h90b66plt7e737", + "isNightSpeaker": false, + "label": "NodeJS", + "mediumUrl": "http://matteocollina.com/", + "name": "Matteo Collina", + "order": 47, + "ownSite": "", + "slug": "matteo-collina", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/mcollina", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/matteocollina", + }, + Object { + "icon": "med", + "link": "http://matteocollina.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#7AB464", + "twitterUrl": "https://twitter.com/matteocollina", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Do you scroll through TikTok, amazed at the goofy, yet complicated dance moves featuring today's youths? Those kids are popping off while you're sitting around, coding SQL queries. Fortunately, we are technologists, and there's no problem we can't solve, including getting better at TikTok dancing. In this talk, I'll show you how I perfected my moves by building PoseDance, your friendly TikTok trainer. We'll discuss how I leveraged PoseNet, which allows you to pinpoint body motion and draw a 'skeleton' on a video. Combined with a webcam mapping your own dance skeleton, a bit of math to compare the matching points, Azure functions to authenticate a user, and PlayFab as a game-friendly backend to keep scores and create a leaderboard, you've got the perfect quarantine pastime, making a perfect fool of yourself in front of a webcam. Come dance with me!", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "jen-looper", + "time": "20:35", + "title": "Q&A with MC and Jen Looper", + "track": "June 18", + }, + "from": "Microsoft, USA", + "id": "cka58nqd02j9u0b20vtncx7g8", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "AI/ML", + "name": "Jen Looper", + "overridden": true, + "pic": "TaypgyUASVqlWKaVA61d", + "place": "Microsoft, USA", + "slug": "pose-dance-build-a-tik-tok-trainer", + "speaker": "Jen Looper", + "speakerSlug": "jen-looper", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "jen-looper", + "text": "Do you scroll through TikTok, amazed at the goofy, yet complicated dance moves featuring today's youths? Those kids are popping off while you're sitting around, coding SQL queries. Fortunately, we are technologists, and there's no problem we can't solve, including getting better at TikTok dancing. In this talk, I'll show you how I perfected my moves by building PoseDance, your friendly TikTok trainer. We'll discuss how I leveraged PoseNet, which allows you to pinpoint body motion and draw a 'skeleton' on a video. Combined with a webcam mapping your own dance skeleton, a bit of math to compare the matching points, Azure functions to authenticate a user, and PlayFab as a game-friendly backend to keep scores and create a leaderboard, you've got the perfect quarantine pastime, making a perfect fool of yourself in front of a webcam. Come dance with me!
+", + "time": "20:15", + "timeString": "20:15", + "title": "PoseDance: Build a TikTok Trainer", + "track": Object { + "isPrimary": true, + "name": "June 18", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/TaypgyUASVqlWKaVA61d", + "bio": "Jen is a Google Developer Expert and a Cloud Developer Advocate Lead at Microsoft with over 20 years' experience as a web and mobile developer, specializing in creating cross-platform mobile apps. Jen is a multilingual multiculturalist with a passion for hardware hacking, mobile apps, Vue.js, machine learning and discovering new things every day. I'm also the founder and CEO of Front-End Foxes, an international initiative and a 501(c)(3) nonprofit created to help women learn front-end technologies.
+", + "color": "white", + "company": "Microsoft, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/jlooper", + "id": "ck9tpo96qg4dr0b206lb5q0sb", + "idAlt": "ck9tpprr488zs0b84lv98oeg4", + "idMain": "ck9tpo96qg4dr0b206lb5q0sb", + "isNightSpeaker": null, + "label": "AI/ML", + "mediumUrl": null, + "name": "Jen Looper", + "order": 45, + "ownSite": null, + "slug": "jen-looper", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/jlooper", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/jenlooper", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": "https://twitter.com/jenlooper", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Many modern web frameworks use components as their building blocks. + +In this talk, I will show component testing using Cypress - and I mean \\"show\\" literally. +You will see the component running inside a real browser, you will interact with the component like a real user, and you can debug the component using the real browser's DevTools. +Finally, I will go through the current open source and commercial options for visually testing the component's styles and rendering.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "gleb-bahmutov", + "time": "16:35", + "title": "Q&A with MC and Gleb Bahmutov", + "track": "June 18", + }, + "from": "Cypress, USA", + "id": "ckacfbqipdb0a0b20ehkoq1vx", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "Testing", + "name": "Gleb Bahmutov", + "overridden": true, + "pic": "PPQ5FHccTEWnbmU6nBX6", + "place": "Cypress, USA", + "slug": "i-see-what-is-going-on-visual-testing-for-your-components", + "speaker": "Gleb Bahmutov", + "speakerSlug": "gleb-bahmutov", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "gleb-bahmutov", + "text": "Many modern web frameworks use components as their building blocks.
+In this talk, I will show component testing using Cypress - and I mean \\"show\\" literally. +You will see the component running inside a real browser, you will interact with the component like a real user, and you can debug the component using the real browser's DevTools. +Finally, I will go through the current open source and commercial options for visually testing the component's styles and rendering.
+", + "time": "16:15", + "timeString": "16:15", + "title": "I See What is Going on: Visual Testing for Your Components", + "track": Object { + "isPrimary": true, + "name": "June 18", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/2zoMrERjSoil3vrJSL95", + "bio": "Cypress.io VP of engineering.
+Gleb Bahmutov is JavaScript ninja, image processing expert and software quality fanatic. During the day Gleb is making the web a better place as VP of Engineering at Cypress.io. At night he is fighting software bugs and blogs about it at glebbahmutov.com/blog.
+", + "color": "white", + "company": "Cypress, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/bahmutov", + "id": "cka6mxpiw4tz70b208zqfqmr1", + "idAlt": "cka6mykk94u150b20kmqxqeb8", + "idMain": "cka6mxpiw4tz70b208zqfqmr1", + "isNightSpeaker": null, + "label": "Testing", + "mediumUrl": null, + "name": "Gleb Bahmutov", + "order": 42, + "ownSite": "https://glebbahmutov.com/blog/", + "slug": "gleb-bahmutov", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/bahmutov", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/bahmutov", + }, + Object { + "icon": "site", + "link": "https://glebbahmutov.com/blog/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": "https://twitter.com/bahmutov", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Do you ever feel like you’re stuck in your career? Do you constantly feel like you don’t have time to work on your projects? Do you want to learn something new, expand your knowledge, develop yourself and be the best you can be? + +In this session, I am going to share my story on how I started coding, how I make time to work on side projects and how you can grow and advance in your career. After this talk, I hope you 'll be inspired to work smarter, make new habits and continue pushing yourself even when things fall apart. + +I will present some helpful tips about self-motivation, time-management, setting priorities and goals, staying organized, believing in yourself and keeping a balance between your career and personal life. Additionally, in this session, we are going to talk about building the habit of coding and the benefits of it. We are going to explore ways of finding mentors in your job and outside of it and also expanding your social network. + +This talk is not only about getting better at your 9 to 5 job but also about developing yourself.", + "from": "MKI Hellas, Greece", + "id": "ckacfek5fq9vg0b84nn5j7dcf", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "Career", + "name": "Eleftheria Batsou", + "place": "MKI Hellas, Greece", + "slug": "when-you-think-there-is-no-time-for-learning-or-coding", + "speaker": "Eleftheria Batsou", + "speakerSlug": "eleftheria-batsou", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Do you ever feel like you’re stuck in your career? Do you constantly feel like you don’t have time to work on your projects? Do you want to learn something new, expand your knowledge, develop yourself and be the best you can be?
+In this session, I am going to share my story on how I started coding, how I make time to work on side projects and how you can grow and advance in your career. After this talk, I hope you 'll be inspired to work smarter, make new habits and continue pushing yourself even when things fall apart.
+I will present some helpful tips about self-motivation, time-management, setting priorities and goals, staying organized, believing in yourself and keeping a balance between your career and personal life. Additionally, in this session, we are going to talk about building the habit of coding and the benefits of it. We are going to explore ways of finding mentors in your job and outside of it and also expanding your social network.
+This talk is not only about getting better at your 9 to 5 job but also about developing yourself.
+", + "time": "19:10", + "timeString": "19:10", + "title": "When You Think There Is No Time for Learning or Coding", + "track": Object { + "isPrimary": true, + "name": "June 18", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/RTogTJTVSoWIwEuDdTWX", + "bio": "App Developer | UX/UI Designer | Public Speaker | Content Creator.
+Eleftheria loves using technology-based solutions to help solve real world challenges. She likes learning and sharing her knowledge about web development/design and visual arts.
+", + "color": "white", + "company": "MKI Hellas, Greece", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Greece", + "githubUrl": "https://github.com/EleftheriaBatsou", + "id": "ck9y5s7e0rzy50b20ph1skoyz", + "idAlt": "ck9y5uo3qs08a0b204v2938pe", + "idMain": "ck9y5s7e0rzy50b20ph1skoyz", + "isNightSpeaker": null, + "label": "Career", + "mediumUrl": null, + "name": "Eleftheria Batsou", + "order": 39, + "ownSite": null, + "slug": "eleftheria-batsou", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/EleftheriaBatsou", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/batsouelef", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": "https://twitter.com/batsouelef", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "This talk is going to be about react-three-fiber. We'll make a mini game together. We'll see how even beginners can make it through all the heavy boilerplate and math without losing their minds, and then translate it to anything, be it a game or a website with some interesting visuals and effects.", + "duration": "20", + "extension": Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-06-18T00:00:00.000Z", + "qaLink": "https://discord.gg/KENY7b5", + "talkKey": "paul-henschel", + "time": "20:00", + "title": "Q&A with MC and Paul Henschel", + "track": "June 19", + }, + "from": " oss. founded paranoidandroid, react-spring, react-three-fiber, react-use-gesture, zustand, Switzerland", + "id": "ckay2q9iycw070915ezrm5bj9", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "3D ", + "name": "Paul Henschel", + "overridden": true, + "pic": "LrOO4gtnTEejjFpaXXQy", + "place": " oss. founded paranoidandroid, react-spring, react-three-fiber, react-use-gesture, zustand, Switzerland", + "slug": "making-games-in-react", + "speaker": "Paul Henschel", + "speakerSlug": "paul-henschel", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "paul-henschel", + "text": "This talk is going to be about react-three-fiber. We'll make a mini game together. We'll see how even beginners can make it through all the heavy boilerplate and math without losing their minds, and then translate it to anything, be it a game or a website with some interesting visuals and effects.
+", + "time": "19:40", + "timeString": "19:40", + "title": "Making Games in React", + "track": Object { + "isPrimary": null, + "name": "June 19", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/LrOO4gtnTEejjFpaXXQy", + "bio": "Front-end developer. Currently living in St. Gallen, Switzerland. Founder of Luxundlaune, a photography platform in Germany, Paranoidandroid, a custom rom for Android and several open source projects including react-spring, react-three-fiber, react-use-gesture, zustand.
+", + "color": "white", + "company": " oss. founded paranoidandroid, react-spring, react-three-fiber, react-use-gesture, zustand, Switzerland", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Switzerland", + "githubUrl": "https://github.com/drcmda", + "id": "ckapda6va7oig0b20d46a90q6", + "idAlt": "ckapdbpqo7om80b20l4fh0vhf", + "idMain": "ckapda6va7oig0b20d46a90q6", + "isNightSpeaker": null, + "label": "3D ", + "mediumUrl": null, + "name": "Paul Henschel", + "order": 36, + "ownSite": null, + "slug": "paul-henschel", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/drcmda", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/0xca0a", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": "https://twitter.com/0xca0a", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "I can tell at least that in 3 years, JavaScript will gain more the status of a VM and lose the status of a language. Already today, not many people use raw JavaScript. You usually have some transpilation, at least e.g. Babel. In the future, Web Assembly will enable more innovation in that regards, and existing transpiling languages like Elm, TypeScript, PureScript will continue to improve. + +In this talk, I'd go through the Evolution of JavaScript Tooling and frontend build tools, Javascript itself and the future of them all. + +Also, Babel and other build tools, what they might most likely be in the future. Also, I'd talk about javascript itself as a language, it's present and it's future.", + "from": "Software Developer, Developer Advocate, Technical Writer, Nigeria", + "id": "ckb96mag9u0yd0b14fti1k4n4", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": null, + "name": "Shedrack Akintayo", + "place": "Software Developer, Developer Advocate, Technical Writer, Nigeria", + "slug": "javascript-tooling-the-evolution-and-future-of-js-front-end-build-tools", + "speaker": "Shedrack Akintayo", + "speakerSlug": "shedrack-akintayo", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "I can tell at least that in 3 years, JavaScript will gain more the status of a VM and lose the status of a language. Already today, not many people use raw JavaScript. You usually have some transpilation, at least e.g. Babel. In the future, Web Assembly will enable more innovation in that regards, and existing transpiling languages like Elm, TypeScript, PureScript will continue to improve.
+In this talk, I'd go through the Evolution of JavaScript Tooling and frontend build tools, Javascript itself and the future of them all.
+Also, Babel and other build tools, what they might most likely be in the future. Also, I'd talk about javascript itself as a language, it's present and it's future.
+", + "time": "19:10", + "timeString": "19:10", + "title": "Javascript Tooling - The Evolution and Future of JS & Front-end Build Tools", + "track": Object { + "isPrimary": true, + "name": "June 18", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/RuBGFXOJRQq6cPq0Wtac", + "bio": "Shedrack is a Developer Advocate and Technical Writer from Lagos, Nigeria. He loves community building, open source, and a has knack for improving developer experience of developer focused products.
+", + "color": "white", + "company": "Software Developer, Developer Advocate, Technical Writer, Nigeria", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Nigeria", + "githubUrl": "https://github.com/hacktivist123", + "id": "ckb6atbhzdg4x0b09tba7zk3i", + "idAlt": "ckb6av3yjjl5a0b14hsvy59sr", + "idMain": "ckb6atbhzdg4x0b09tba7zk3i", + "isNightSpeaker": false, + "label": null, + "mediumUrl": null, + "name": "Shedrack Akintayo", + "order": 33, + "ownSite": null, + "slug": "shedrack-akintayo", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/hacktivist123", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/coder_blvck", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": "https://twitter.com/coder_blvck", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "We are very used to generating visual results with code but are still often surprised to hear that we can create music in the same way. Oh, you didn’t know that? You are not alone. Even though the idea of music programming is older than all of us this concept is still pretty unfamiliar among many developers. Not for long! Let's shed some light on music coding in our daily bases web applications using Angular. ", + "from": "Swedbank, Lithuania", + "id": "ckb98nznpkqza0903b466iuk0", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": null, + "name": "Laura Silvanavičiūtė", + "place": "Swedbank, Lithuania", + "slug": "what-does-the-angular-say", + "speaker": "Laura Silvanavičiūtė", + "speakerSlug": "laura-silvanaviciute", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "We are very used to generating visual results with code but are still often surprised to hear that we can create music in the same way. Oh, you didn’t know that? You are not alone. Even though the idea of music programming is older than all of us this concept is still pretty unfamiliar among many developers. Not for long! Let's shed some light on music coding in our daily bases web applications using Angular.
+", + "time": "20:15", + "timeString": "20:15", + "title": "What Does The Angular Say? 🦊", + "track": Object { + "isPrimary": null, + "name": "June 19", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/mXrTixlRWuKGJFsJqfAo", + "bio": "Laura is a software engineer obsessed with front-end development. She is also teaching teenagers about Web Technologies. 2 years ago Laura was on the Dark side - developing with COBOL programming language on Mainframe supercomputers! Due to slow evolvement and limitations of used technologies, she decided to shift them pretty drastically. +Laura believes we shouldn't stick to any specific technology in this rapidly evolving IT World, but try and use various different ones instead. Every new experience increases our creativity, knowledge, curiosity and expands mindset. Her latest discovery was music programming, and she wants to share it with us!
+", + "color": "white", + "company": "Swedbank, Lithuania", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Lithuania", + "githubUrl": null, + "id": "ckb6ckx4kdiz40b09gfa46z2g", + "idAlt": "ckb6cm8zodj2v0b09i2gyh9m2", + "idMain": "ckb6ckx4kdiz40b09gfa46z2g", + "isNightSpeaker": null, + "label": null, + "mediumUrl": null, + "name": "Laura Silvanavičiūtė", + "order": 30, + "ownSite": null, + "slug": "laura-silvanaviciute", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/laurasilvanavi", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": "https://twitter.com/laurasilvanavi", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "There are other ways to proxy live video from a browser to an RTMP endpoint, but what if we wanted to interact with that stream first? And not just interact by writing obtuse ffmpeg filters, but just some good ol' HTML and CSS? Let's do that! We'll talk about how you can allow your streamers to go live directly from their browser by using headless Chrome and ffmpeg.", + "from": "Head of Technology & Community @MUX, USA", + "id": "ckb0hardifsz30a69vifkbyal", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": null, + "name": "Matt McClure", + "place": "Head of Technology & Community @MUX, USA", + "slug": "going-live-from-a-browser-with-another-browser", + "speaker": "Matt McClure", + "speakerSlug": "matt-mc-clure", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "There are other ways to proxy live video from a browser to an RTMP endpoint, but what if we wanted to interact with that stream first? And not just interact by writing obtuse ffmpeg filters, but just some good ol' HTML and CSS? Let's do that! We'll talk about how you can allow your streamers to go live directly from their browser by using headless Chrome and ffmpeg.
+", + "time": "20:15", + "timeString": "20:15", + "title": "Going Live from a Browser...with Another Browser", + "track": Object { + "isPrimary": null, + "name": "June 19", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/NlOEAI4LTBGVtxTJ37rX", + "bio": "Matthew is an internet video nerd. He's the co-founder and Head of Technology & Community at Mux, a startup building online video infrastructure for developers, a core-contributor to Video.js, the biggest HTML5 video framework, and the organizer of Demuxed, the largest video-focused dev conference/community in the world.
+", + "color": "white", + "company": "Head of Technology & Community @MUX, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/mmcc", + "id": "ck8sh3835oqe20b208b2wkdzn", + "idAlt": "ckb0h8652fsv60a69k5od0b5c", + "idMain": "ck8sh3835oqe20b208b2wkdzn", + "isNightSpeaker": null, + "label": null, + "mediumUrl": null, + "name": "Matt McClure", + "order": null, + "ownSite": "", + "slug": "matt-mc-clure", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/mmcc", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/matt_mcclure", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": "https://twitter.com/matt_mcclure", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "With Hasura Remote Joins, you can join your table data with a Stripe API or Github API or any GraphQL API. Without writing a single line of code. Using GraphQL's amazing type system combined with Hasura's declarative configuration, you can create relationships across tables and other services and get a beautiful unified API. In a single call, get all the data necessary for building your apps from anywhere in the world.", + "from": "Hasura, India", + "id": "ckb0j93kqfx0k0915fp10y9l5", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": null, + "name": "Tanmai Gopal", + "place": "Hasura, India", + "slug": "using-remote-joins-to-create-a-unified-graph-ql-api-for-your-company", + "speaker": "Tanmai Gopal", + "speakerSlug": "tanmai-gopal", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "With Hasura Remote Joins, you can join your table data with a Stripe API or Github API or any GraphQL API. Without writing a single line of code. Using GraphQL's amazing type system combined with Hasura's declarative configuration, you can create relationships across tables and other services and get a beautiful unified API. In a single call, get all the data necessary for building your apps from anywhere in the world.
+", + "time": "19:10", + "timeString": "19:10", + "title": "Using Remote Joins to Create a Unified GraphQL API for Your Company", + "track": Object { + "isPrimary": true, + "name": "June 18", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/5a7nU9FSY6FFFcNhdg1P", + "bio": "Tanmai Gopal is the CEO, co-founder of Hasura. He is a StackOverflow powered fullstack developer whose areas of interest and work span React, GraphQL, Nodejs, Haskell, Docker, Postgres & Kubernetes. He is passionate about making it easy to build complex things and is the instructor of India's largest MOOC imad.tech with over 250,000 students.
+", + "color": "white", + "company": "Hasura, India", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "India", + "githubUrl": "https://github.com/coco98", + "id": "ck8ivtpgcd0pn0b84len66wz3", + "idAlt": "ckb0j7lu4fvsr0a693l4m4g14", + "idMain": "ck8ivtpgcd0pn0b84len66wz3", + "isNightSpeaker": null, + "label": "", + "mediumUrl": null, + "name": "Tanmai Gopal", + "order": null, + "ownSite": null, + "slug": "tanmai-gopal", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/coco98", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/tanmaigo", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": "https://twitter.com/tanmaigo", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "In this talk, Pablo Postigo, co-Founder and CEO of Frontity, will give an introduction to the basics of Frontity Framework and talk about the main challenges when developing a React front-end for a headless WordPress site. In addition, he will share his insight on the future of JavaScript in the WordPress ecosystem and the story behind Frontity.", + "from": "CEO & Co-Founder @Frontity, Spain", + "id": "ckb0jfd1krt8v0b27fy7pjk7b", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": null, + "name": "Pablo Postigo", + "place": "CEO & Co-Founder @Frontity, Spain", + "slug": "building-react-frontends-for-word-press", + "speaker": "Pablo Postigo", + "speakerSlug": "pablo-postigo", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "In this talk, Pablo Postigo, co-Founder and CEO of Frontity, will give an introduction to the basics of Frontity Framework and talk about the main challenges when developing a React front-end for a headless WordPress site. In addition, he will share his insight on the future of JavaScript in the WordPress ecosystem and the story behind Frontity.
+", + "time": "19:10", + "timeString": "19:10", + "title": "Building React frontends for WordPress", + "track": Object { + "isPrimary": true, + "name": "June 18", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/0z819kVgTNGZQG9cfGBS", + "bio": "Software Engineer, entrepreneur and foodie. Born and raised in Madrid, Spain. Pablo and his team are on a mission to make building delightful user experiences universally accessible. He founded Frontity in 2015, has raised 1.5M€ in funding and since June 2019, Frontity became a 100% open-source project after releasing their framework for building lighting sites using React and WordPress.
+", + "color": "white", + "company": "CEO & Co-Founder @Frontity, Spain", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Spain", + "githubUrl": null, + "id": "ckb0jdci3fw1u0a693dbdq5nu", + "idAlt": "ckb0jdsybrt400b27xf6p8djt", + "idMain": "ckb0jdci3fw1u0a693dbdq5nu", + "isNightSpeaker": null, + "label": null, + "mediumUrl": null, + "name": "Pablo Postigo", + "order": null, + "ownSite": null, + "slug": "pablo-postigo", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/iamposti", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": "https://twitter.com/iamposti", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Classic frontend vs backend API design conflicts are becoming a headache of the past with serverless and Jamstack architectures and tools; frontend developers are building the full stack. But this poses a new problem: “What database? Who cares about the database?” This talk will help you with the questions you should ask of the database for your next side project...and a place to begin your journey in database internals.", + "from": "VP of Product & Community @Fauna, Netherlands", + "id": "ckb1wt91b2cxi0b14yib6tvl2", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": null, + "name": " Tyler Hannan", + "place": "VP of Product & Community @Fauna, Netherlands", + "slug": "when-worlds-collide-frontend-vs-database", + "speaker": " Tyler Hannan", + "speakerSlug": "tyler-hannan", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Classic frontend vs backend API design conflicts are becoming a headache of the past with serverless and Jamstack architectures and tools; frontend developers are building the full stack. But this poses a new problem: “What database? Who cares about the database?” This talk will help you with the questions you should ask of the database for your next side project...and a place to begin your journey in database internals.
+", + "time": "20:15", + "timeString": "20:15", + "title": "When Worlds Collide: Frontend vs Database", + "track": Object { + "isPrimary": null, + "name": "June 19", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/4fzrsJWvSOi8a2IwfKCE", + "bio": "Tyler is the former Director of Community at Elastic and Director of Marketing at Basho. He looks after product management and community and brings two decades of experience in databases, distributed systems, and developer advocacy.
+", + "color": "white", + "company": "VP of Product & Community @Fauna, Netherlands", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Netherlands", + "githubUrl": null, + "id": "ckb1wpk2i16rr0903cuj5b50d", + "idAlt": "ckb1wq5il16tf0903h54ac2ob", + "idMain": "ckb1wpk2i16rr0903cuj5b50d", + "isNightSpeaker": null, + "label": null, + "mediumUrl": null, + "name": " Tyler Hannan", + "order": null, + "ownSite": null, + "slug": "tyler-hannan", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/tylerhannan", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": "https://twitter.com/tylerhannan", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "With the yearly ECMAScript releases (ES2015..ES2019) of a lot of things have changed in JavaScript-land, and there's even more to come. This talk takes a look at a few of the newest (ES2020) and some of the upcoming ECMAScript features, which (hopefully) will become part of the ECMAScript Language Specification in the near future.", + "from": "3RDS, Belgium", + "id": "ckb98m9cfkub40b0901h8rt8u", + "isLightning": true, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": null, + "name": "Bramus Van Damme", + "place": "3RDS, Belgium", + "slug": "es-next-proposals-to-look-forward-to", + "speaker": "Bramus Van Damme", + "speakerSlug": "bramus-van-damme", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "With the yearly ECMAScript releases (ES2015..ES2019) of a lot of things have changed in JavaScript-land, and there's even more to come. This talk takes a look at a few of the newest (ES2020) and some of the upcoming ECMAScript features, which (hopefully) will become part of the ECMAScript Language Specification in the near future.
+", + "time": "20:15", + "timeString": "20:15", + "title": "ESNext: Proposals To Look Forward To", + "track": Object { + "isPrimary": null, + "name": "June 19", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/xJ8YkUh6StmPW9nDJaiB", + "bio": "Bramus Van Damme is a developer from Belgium. From the moment he discovered view-source at the age of 14 (way back in 1997), he fell in love with the web and has been tinkering with it ever since.
+With his company 3RDS he works as a freelance developer, tackling both the frontend (HTML, CSS, JS) and the backend (PHP, MySQL). His current focus is on JavaScript, React and React Native. Not limiting himself to only part of the stack, he also knows his way around supporting technologies (HTTPS, DNS, Docker, Serverless, …)
+Before launching 3RDS, Bramus worked at several web agencies in various frontend en backend roles. For seven years he also was a Lecturer Web & Mobile within the study programme Professional Bachelor ICT.
+In his spare time Bramus likes to go Scuba Diving.
+", + "color": "white", + "company": "3RDS, Belgium", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Belgium", + "githubUrl": "https://www.github.com/bramus", + "id": "ckb6cyroydk1t0903hn74s60v", + "idAlt": "ckb6czhbpdjxm0b093787sxwa", + "idMain": "ckb6cyroydk1t0903hn74s60v", + "isNightSpeaker": null, + "label": null, + "mediumUrl": null, + "name": "Bramus Van Damme", + "order": null, + "ownSite": "https://www.bram.us/", + "slug": "bramus-van-damme", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://www.github.com/bramus", + }, + Object { + "icon": "tw", + "link": "https://www.twitter.com/bramus", + }, + Object { + "icon": "site", + "link": "https://www.bram.us/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": "https://www.twitter.com/bramus", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/TWhp8QASKanr9YHM2V3f", + "bio": "Passionate about improving testing practices and supporting projects to improve its quality.
+", + "color": "white", + "company": "Senior Frontend Developer @Delivery Hero, Germany", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Germany", + "githubUrl": "https://github.com/vadym-kukhtin", + "id": "ckb9bzovhkvb709034bohyuox", + "idAlt": "ckb9c0a6akz3j0b09odadsxmv", + "idMain": "ckb9bzovhkvb709034bohyuox", + "isNightSpeaker": null, + "label": null, + "mediumUrl": null, + "name": "Vadym Kukhtin", + "order": null, + "ownSite": null, + "slug": "vadym-kukhtin", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/vadym-kukhtin", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": null, + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/vzS0tFQdRLmNP4nZBHPK", + "bio": "Passionate about simplifying complex solutions.
+", + "color": "white", + "company": "Frontend Engineer @Delivery Hero, Germany", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Germany", + "githubUrl": "https://github.com/deveshjadon98", + "id": "ckb9c4oi2kzf40b098g88m8nn", + "idAlt": "ckb9c5emlkvrd0903px28cddj", + "idMain": "ckb9c4oi2kzf40b098g88m8nn", + "isNightSpeaker": null, + "label": null, + "mediumUrl": null, + "name": "Devesh Jadon", + "order": null, + "ownSite": null, + "slug": "devesh-jadon", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/deveshjadon98", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/deveshjadon", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "black", + "twitterUrl": "https://twitter.com/deveshjadon", + }, + ], + "performanceTeam": Array [], + "workshops": Array [ + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/4LTWaL5SpOCr2oBbS8rq", + "bio": "Node.js TSC member, PhD, Technical Director @ NearForm, IoT Expert, Consultant, author of Pino and Fastify. Co-author of the book \\"Node.js Cookbook, Third Edition\\" edited by Packt.
+", + "company": "NearForm, Italy", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Italy", + "githubUrl": "https://github.com/mcollina", + "id": "ck38s6qxa28h90b66plt7e737", + "idAlt": "ck38s81rz28ki0b66keep3ghk", + "idMain": "ck38s6qxa28h90b66plt7e737", + "isNightSpeaker": false, + "label": "NodeJS", + "mediumUrl": "http://matteocollina.com/", + "name": "Matteo Collina", + "order": 47, + "ownSite": "", + "slug": "matteo-collina", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/mcollina", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/matteocollina", + }, + Object { + "icon": "med", + "link": "http://matteocollina.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/matteocollina", + }, + Object { + "activities": Object { + "workshops": Array [ + Object { + "slug": "from-zero-to-real-world-graph-ql-ap-is", + "title": "From Zero to Real-world GraphQL APIs", + }, + Object { + "slug": "modern-java-script-architectures-for-business-optimisation", + "title": "Modern JavaScript Architectures for Business Optimisation", }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/jx66c2DKQ3KhZSOiLxXS", + "bio": "Founder at React GraphQL Academy and LeanJS. Developer and Coach passionate about JavaScript, React and GraphQL. Organizer of the JavaScript London Meetup and other popular meetups in the EU.
+", + "company": "React GraphQL Academy, UK", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "UK", + "githubUrl": "https://github.com/alexlbr", + "id": "ck10teywmv6940b541heiz22b", + "idMain": "ck10teywmv6940b541heiz22b", + "info": Array [], + "mediumUrl": null, + "name": "Alex Lobera", + "ownSite": null, + "slug": "alex-lobera", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/alexlbr", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/alex_lobera", + }, + ], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": "https://twitter.com/alex_lobera", + "workshops": Array [ + Object { + "slug": "from-zero-to-real-world-graph-ql-ap-is", + "title": "From Zero to Real-world GraphQL APIs", + }, + Object { + "slug": "modern-java-script-architectures-for-business-optimisation", + "title": "Modern JavaScript Architectures for Business Optimisation", + }, + ], + "workshopsActivity": Array [], + }, + Object { + "activities": Object { + "workshops": Array [ Object { - "href": "#awards", - "text": "OS Awards", + "slug": "build-a-react-based-theme-for-word-press-with-frontity", + "title": "Build a React-based Theme for WordPress with Frontity", }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/kjIq9OGYQmWC9jGPLKDc", + "bio": "Michael has recently joined the Developer Relations team at Frontity. Prior to that he worked for many years as a freelance web developer gaining experience in WordPress, WooCommerce, PHP, and JavaScript. He is also a very active participant in the WordPress community and organised the first WordCamp (WordPress conference) in Bristol, UK and was on the organising teams for WordCamp Europe 2018, 2019, and 2020. He also organised the first do_action Day (WordPress based hackathon) to happen in Europe.
+", + "company": "Developer Relations @Frontity, UK", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "UK", + "githubUrl": "https://github.com/mburridge", + "id": "ckawn19lm9ong0915105ts6h3", + "idMain": "ckawn19lm9ong0915105ts6h3", + "info": Array [], + "mediumUrl": null, + "name": "Michael Burridge", + "ownSite": null, + "slug": "michael-burridge", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/mburridge", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/michaelburridge", + }, + ], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": "https://twitter.com/michaelburridge", + "workshops": Array [ + Object { + "slug": "build-a-react-based-theme-for-word-press-with-frontity", + "title": "Build a React-based Theme for WordPress with Frontity", + }, + ], + "workshopsActivity": Array [], + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/2jqu4t6TSlKDcqRFP6zT", + "bio": "Max Stoiber is a Staff Software Engineer at Gatsby, inventing the future of web development. Previously he worked at GitHub, who acquired the startup he co-founded, Spectrum. He is well known for making styled-components, react-boilerplate, and a wide variety of other open source projects in the React ecosystem.
+", + "company": "Gatsby, Austria", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Austria", + "githubUrl": "https://github.com/mxstbr", + "id": "ck0zj6ytry8s20b71lgpuqves", + "idAlt": "ck9fxszhpuc2j0b20z63eehjk", + "idMain": "ck0zj6ytry8s20b71lgpuqves", + "isNightSpeaker": false, + "label": "React", + "mediumUrl": null, + "name": "Max Stoiber", + "order": 50, + "ownSite": "https://mxstbr.com/", + "slug": "max-stoiber", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/mxstbr", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/mxstbr", + }, + Object { + "icon": "site", + "link": "https://mxstbr.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/mxstbr", + }, + Object { + "activities": Object { + "workshops": Array [ Object { - "href": "#diversity", - "text": "diversity", + "slug": "build-full-featured-frontend-app-with-svelte", + "title": "Build Full Featured Frontend App with Svelte", }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/t9XoPJGQUmaXcSvoNSl4", + "bio": "Mikhail is a developer with 10 years of expertise building web +applications. He used a variety of frameworks, throughout his career +starting with jQuery , AngularJS and Polymer; then he discovered VueJS and used it for several projects. Since 2019 he became a happy user of Svelte v3. +Besides fullstack development for enterprise companies Mikhail is doing open source projects and speaks on meetups and conferences about various topics in modern web development. +Mikhail runs a local Svelte meetup group in Amsterdam.
+", + "company": "ING, Netherlands", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Netherlands", + "githubUrl": "https://github.com/shershen08", + "id": "ck5y2i5nshr4s0b6635ypswup", + "idMain": "ck5y2i5nshr4s0b6635ypswup", + "info": Array [], + "mediumUrl": null, + "name": "Mikhail Kuznetcov", + "ownSite": null, + "slug": "mikhail-kuznetcov", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/shershen08", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/legkoletat", + }, + ], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": "https://twitter.com/legkoletat", + "workshops": Array [ + Object { + "slug": "build-full-featured-frontend-app-with-svelte", + "title": "Build Full Featured Frontend App with Svelte", + }, + ], + "workshopsActivity": Array [], + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/FQtqvdGOQsSrpZD1rU4X", + "bio": "Tejas enjoys people, code, and talking about code to people. Having begun coding at age 8, today Tejas travels around the world, encouraging, educating and empowering developers in the web development community.
+", + "company": "Contiamo, Germany", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Germany", + "githubUrl": "https://github.com/TejasQ", + "id": "ck10tb7315akt0b71rbhubpkk", + "idAlt": "ckb6b1cp5dgh20b098gzij6ko", + "idMain": "ck10tb7315akt0b71rbhubpkk", + "isNightSpeaker": false, + "label": "", + "mediumUrl": null, + "name": "Tejas Kumar", + "order": 85, + "ownSite": null, + "slug": "tejas-kumar", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/TejasQ", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/tejaskumar_", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/tejaskumar_", + }, + Object { + "activities": Object { + "workshops": Array [ Object { - "href": "#sponsors", - "text": "sponsors", + "slug": "databases-made-easy-with-graph-ql-and-fauna-db", + "title": "Databases Made Easy with GraphQL and FaunaDB", }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/hae8ztJTRa0Zn5kzEBcg", + "bio": "Brecht De Rooms is a senior developer advocate at Fauna. He is a programmer who has worked extensively in IT as a full-stack developer and researcher in both the startup and IT consultancy worlds. It is his mission to shed light on emerging and powerful technologies that make it easier for developers to build apps and services that will captivate users.
+", + "company": "Developer Advocate @Fauna, Belgium", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Belgium", + "githubUrl": "https://github.com/fauna-brecht", + "id": "ckawidvvpgyhh0b270k3wgtis", + "idMain": "ckawidvvpgyhh0b270k3wgtis", + "info": Array [], + "mediumUrl": null, + "name": "Brecht De Rooms", + "ownSite": null, + "slug": "brecht-de-rooms", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/fauna-brecht", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/databrecht", + }, + ], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": "https://twitter.com/databrecht", + "workshops": Array [ + Object { + "slug": "databases-made-easy-with-graph-ql-and-fauna-db", + "title": "Databases Made Easy with GraphQL and FaunaDB", + }, + ], + "workshopsActivity": Array [], + }, + Object { + "activities": Object { + "workshops": Array [ Object { - "href": "/faq", - "text": "FAQ", + "slug": "build-your-own-live-streaming-platform", + "title": "Build Your Own Live Streaming Platform", }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/kg6v1HvgSys35j7IzWRL", + "bio": "Phil is a seasoned online video specialist, with experience building video products which power some of the biggest SVOD, AVOD and public service supported streaming platforms in the world. With 10 years experience, Phil has designed, built, and scaled software for the BBC, Brightcove, and most recently the San Francisco startup, Mux.
+", + "company": "Streaming Architect @Mux, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/GeneticGenesis", + "id": "ck8uajht7dvq20b84oq8tm8jr", + "idMain": "ck8uajht7dvq20b84oq8tm8jr", + "mediumUrl": null, + "name": "Phil Cluff", + "ownSite": null, + "slug": "phil-cluff", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/GeneticGenesis", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/GeneticGenesis", + }, + ], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": "https://twitter.com/GeneticGenesis", + "workshops": Array [], + "workshopsActivity": Array [ + Object { + "slug": "build-your-own-live-streaming-platform", + "title": "Build Your Own Live Streaming Platform", + }, + ], + }, + Object { + "activities": Object { + "workshops": Array [ Object { - "href": "#contact", - "text": "contact us", + "slug": "build-your-own-live-streaming-platform", + "title": "Build Your Own Live Streaming Platform", }, ], }, - "pageSections": Object { - "committee": Object { - "title": "Programme Committee", + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/OqWk4KpJTdqaF0eEULnW", + "bio": "Dylan is a Senior Software Engineer at Mux, a startup building online video infrastructure for developers. Dylan works on the DevEx team to help developers deliver smooth video to their users. Previously he co-founded Crowdcast, a live video streaming platform.
+", + "company": "Software Engineer @Mux, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/dylanjha", + "id": "ck90bnyfltadk0b84kz6z8msa", + "idMain": "ck90bnyfltadk0b84kz6z8msa", + "mediumUrl": null, + "name": "Dylan Jhaveri", + "ownSite": null, + "slug": "dylan-jhaveri", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/dylanjha", }, - "locationSection": Object { - "showArrows": false, - "title": "Summertime JS festival", + Object { + "icon": "tw", + "link": "https://twitter.com/dylanjha", }, - "mcSection": Object { - "showArrows": false, - "title": "Your hosts", + ], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": "https://twitter.com/dylanjha", + "workshops": Array [], + "workshopsActivity": Array [ + Object { + "slug": "build-your-own-live-streaming-platform", + "title": "Build Your Own Live Streaming Platform", }, - "performance": Object { - "title": "Last year's JS performances", + ], + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/glrjtl9T5awAzyT0DZVd", + "bio": "Nader has been developing with React Native for over 2.5 years. He has worked with and trained developers from fortune 500 companies like Amazon, Visa, American Express, and Microsoft, helping them to get up to speed with React Native as quickly as possible.
+", + "company": "Amazon AWS, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/dabit3", + "id": "ck60gduudqlr30b75qyumd2is", + "idAlt": "ck9y6atjrs2kr0b207hfoprfj", + "idMain": "ck60gduudqlr30b75qyumd2is", + "isNightSpeaker": false, + "label": "GraphQL", + "mediumUrl": null, + "name": "Nader Dabit", + "order": 60, + "ownSite": null, + "slug": "nader-dabit", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/dabit3", }, - "speakers": Object { - "title": "First speakers", + Object { + "icon": "tw", + "link": "https://twitter.com/dabit3", }, - "sponsorsSection": Object { - "descr": "Looking for a company that cares about developer communities and invests into personal development?Amsterdam JSNation is going to be the main happening of the JS scene in 2020. The conference unites library authors and core teams with fresh ideas, great people, and a summer Amsterdam in the background. We recognize JavaScript development as an art of engineering, and that's why the conference offers both a JS-driven art exhibition and audiovisual performances during the afterparty. After the event, we'll explore the well-known Amsterdam museums together, and later on, we'll gather for a JS hangout in the Vondelpark.
-", - "faq__descr": "Our team is always striving to provide the best support to help you with any questions related to conference attendance and to make information more transparent and instantly accessible, we've started gathering most frequently asked questions on the page below.
-If you can't find an answer to your question below - contact us via hi@jsnation.com.
-", - "performance__descr": "In 2019, we initiated a Call for JavaScript Artists which allowed us to deliver a state-of-the-art afterparty program with audiovisual acts powered by NodeJS, WebGL, WebAudioAPI. Want to know the programme for 2020? Follow us
-", + ], + "mod": "logos_xs sponsors-block_xs", + "title": "Media Partners", }, - "schedule": Array [ - Object { - "active": true, - "list": Array [ - Object { - "from": "Webpack, Germany", - "label": "Ecosystem", - "name": "TOBIAS KOPPERS", - "place": "Webpack, Germany", - "speaker": "TOBIAS KOPPERS", - "text": "Lorem Ipsum description about Webpack and so on and so on. Lorem dallsr ipsum suom.", - "time": null, - "title": "Fake Title Webpack is awesome!", - "track": "General", - }, - Object { - "from": "NestJS | Trilon.io, Poland", - "label": "NestJS", - "name": "Kamil Mysliwiec", - "place": "NestJS | Trilon.io, Poland", - "speaker": "Kamil Mysliwiec", - "text": "Lorem riba Lorem riba. Dollor doorlrl. Ipsum.", - "time": null, - "title": "Fake Title it just a template", - "track": "General", - }, - Object { - "from": "NearForm, Italy", - "label": "NodeJS", - "name": "Matteo Collina", - "place": "NearForm, Italy", - "speaker": "Matteo Collina", - "text": "lightning talk about something interesting", - "time": null, - "title": "Fake Title it just a template", - "track": null, - }, - Object { - "from": "Three.js, Spain", - "label": "WebGL", - "name": "MR.DOOB", - "place": "Three.js, Spain", - "speaker": "MR.DOOB", - "text": null, - "time": null, - "title": "Fake Title it just a template", - "track": "General", - }, - Object { - "from": "Microsoft, USA", - "label": "TypeScript", - "name": "Orta Therox", - "place": "Microsoft, USA", - "speaker": "Orta Therox", - "text": "There are stats coming out that in 2020 about 50% of all JavaScript projects using npm will be using TypeScript, how did this come to be and what systems are in place to keep the TypeScript team in Microsoft from trying to extinguish JavaScript?", - "time": null, - "title": "How TypeScript Embraces and Extends JavaScript", - "track": null, - }, - ], - "name": "10", - "tab": "General", - "title": "General", - }, - ], - "scheduleTitle": "Talks", - "speakers": Object { - "committee": Array [ - Object { - "activities": Object {}, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/U3D6ETwEQ7GD8wlJUG5G", - "bio": "Joonas Salovaara is a Principal Consultant and team lead at Reaktor Amsterdam. He is an advocate of the meetup scene, where he helps run AmsterdamJS, HelsinkiJS, and React Helsinki.
-", - "company": "Reaktor, Netherlands", - "country": "Netherlands", - "decor": true, - "githubUrl": "https://github.com/sarukuku", - "id": "ck5ci3p89gqqv0b20i49qyt1x", - "mediumUrl": null, - "name": "Joonas Salovaara", - "ownSite": null, - "socials": Array [ - Object { - "icon": "gh", - "link": "https://github.com/sarukuku", - }, - Object { - "icon": "tw", - "link": "https://twitter.com/JoonasSalovaara", + Object { + "category": "Partner", + "list": Array [ + Object { + "alt": "The Amsterdam Node Meetup Group", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck5qm4d385q380b669ngrq6gi", + "idAlt": "ck9v750fqiqad0b20z992ffg9", + "img": "https://media.graphcms.com/0L3yoJJtQmqObSqXbQbw", + "link": "https://www.meetup.com/amsnode/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/0L3yoJJtQmqObSqXbQbw", }, - ], - "twitterUrl": "https://twitter.com/JoonasSalovaara", + "id": "ck5qm4d385q380b669ngrq6gi", + "site": "https://www.meetup.com/amsnode/", + "status": "PUBLISHED", + "title": "The Amsterdam Node Meetup Group", + }, + "status": "PUBLISHED", + "width": 100, }, Object { - "activities": Object {}, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/VttgCnjTkanMOLw0OSJJ", - "bio": "Kanstantsin is a Software Developer Consultant in Xebia. He is passionate about running, racing cars and JavaScript.
-", - "company": "Xebia, Netherlands", - "country": "Netherlands", - "decor": true, - "githubUrl": "https://github.com/mrkosima?tab=stars", - "id": "ck5ci9esogqzy0b20s1auip8a", - "mediumUrl": null, - "name": "Kanstantsin Klimashevich", - "ownSite": null, - "socials": Array [ - Object { - "icon": "gh", - "link": "https://github.com/mrkosima?tab=stars", + "alt": "Amsterdam-SvelteJS", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck6qi0f9i908p0b206m4cnru1", + "idAlt": "ckaw7mv8q8vv809157zs172px", + "img": "https://media.graphcms.com/uqJfNU0USLWBTqk69VBT", + "link": "https://www.meetup.com/Amsterdam-SvelteJS/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/5cLDuKRmCoDavVTNanng", }, - ], - "twitterUrl": null, + "id": "ck6qi0f9i908p0b206m4cnru1", + "site": "https://www.meetup.com/Amsterdam-SvelteJS/", + "status": "PUBLISHED", + "title": "Amsterdam-SvelteJS", + }, + "status": "PUBLISHED", + "width": 250, }, Object { - "activities": Object {}, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/wpWwhvX5T5SBZjbfFaSK", - "bio": "Aleksandr is a Frontend Developer with 6 years experience. He is a member of JSNation Program Committee and an active member of Saint-Petersburg local meetup scene. He is passionated about games development, visualization and other graphics stuff.
-", - "company": "Tinkoff.ru, Russia", - "country": "Russia", - "decor": true, - "githubUrl": "https://github.com/lekzd", - "id": "ck5dlqk56igxf0b20bz4d7n7y", - "mediumUrl": null, - "name": "Aleksandr Korotaev", - "ownSite": null, - "socials": Array [ - Object { - "icon": "gh", - "link": "https://github.com/lekzd", - }, - Object { - "icon": "tw", - "link": "https://twitter.com/mamu_eval", + "alt": "FrontEndgineersLondon", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck3h7xvozdb660b32wj5omifz", + "idAlt": "ck9v83oz8cn910b84iehx5a51", + "img": "https://media.graphcms.com/wM833hCvTBKj0ko1pTem", + "link": "https://www.meetup.com/Front-Endgineers-London/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/wM833hCvTBKj0ko1pTem", }, - ], - "twitterUrl": "https://twitter.com/mamu_eval", + "id": "ck3h7xvozdb660b32wj5omifz", + "site": "https://www.meetup.com/Front-Endgineers-London/", + "status": "PUBLISHED", + "title": "FrontEndgineersLondon", + }, + "status": "PUBLISHED", + "width": 100, }, - ], - "main": Array [ - Object { - "activities": Object {}, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/0EkXq8vRTK7ZQ4HQFXUQ", - "bio": "Charlie is a front-end developer at Netlify, a Mozilla Tech Speaker and Google Developer Expert in Web Technologies. She is passionate about creative coding and building interactive prototypes mixing science, art and technology. She also spends time giving back to the community by mentoring new developers, contributing to open-source projects, and speaking at conferences.
-", - "color": "white", - "company": "Netlify, Netherlands", - "country": "Netherlands", - "githubUrl": "https://github.com/charliegerard", - "id": "ck444j0qbo0ou0b32nya7r457", - "isNightSpeaker": null, - "label": null, - "mediumUrl": null, - "name": "Charlie Gerard", - "order": 10, - "ownSite": "https://charliegerard.github.io/", - "socials": Array [ - Object { - "icon": "gh", - "link": "https://github.com/charliegerard", - }, - Object { - "icon": "tw", - "link": "https://twitter.com/devdevcharlie", - }, - Object { - "icon": "site", - "link": "https://charliegerard.github.io/", + Object { + "alt": "react-sofia", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck447bh24cgci0b73gobh47na", + "idAlt": "ck9v8rsx2it2w0b20k8ypbkea", + "img": "https://media.graphcms.com/WB25K24IQHSJida7w4z8", + "link": "http://react-not-a-conf.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/WB25K24IQHSJida7w4z8", }, - ], + "id": "ck447bh24cgci0b73gobh47na", + "site": "http://react-not-a-conf.com/", + "status": "PUBLISHED", + "title": "react-sofia", + }, "status": "PUBLISHED", - "tagBG": "black", - "twitterUrl": "https://twitter.com/devdevcharlie", - }, - Object { - "activities": Object { - "talks": Array [ - Object { - "description": "lightning talk about something interesting", - "isLightning": true, - "timeString": "14:45", - "title": "Fake Title it just a template", - "track": null, - }, - ], + "width": 90, + }, + Object { + "alt": "leedsjs", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck30lt7mxhvlh0b326q0l35yf", + "idAlt": "ck9v8t8csit8m0b20b0hs3w5u", + "img": "https://media.graphcms.com/s96i5NRXKpieSKr3f9nw", + "link": "https://leedsjs.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/s96i5NRXKpieSKr3f9nw", + }, + "id": "ck30lt7mxhvlh0b326q0l35yf", + "site": "https://leedsjs.com/", + "status": "PUBLISHED", + "title": "leedsjs", }, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/4LTWaL5SpOCr2oBbS8rq", - "bio": "Node.js TSC member, PhD, Technical Director @ NearForm, IoT Expert, Consultant, author of Pino and Fastify. Co-author of the book \\"Node.js Cookbook, Third Edition\\" edited by Packt.
-", - "color": "#fff", - "company": "NearForm, Italy", - "country": "Italy", - "githubUrl": "https://github.com/mcollina", - "id": "ck38s81rz28ki0b66keep3ghk", - "isNightSpeaker": null, - "label": "NodeJS", - "mediumUrl": "http://matteocollina.com/", - "name": "Matteo Collina", - "order": 9, - "ownSite": "", - "socials": Array [ - Object { - "icon": "gh", - "link": "https://github.com/mcollina", + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "milanojs", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck447k3m8o74p0b20sh25wv1i", + "idAlt": "ck9v8ucr9itby0b203cectp4z", + "img": "https://media.graphcms.com/ay3eG9mETASoVTr57UUu", + "link": "https://milanojs.com", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/ay3eG9mETASoVTr57UUu", }, - Object { - "icon": "tw", - "link": "https://twitter.com/matteocollina", + "id": "ck447k3m8o74p0b20sh25wv1i", + "site": "https://milanojs.com", + "status": "PUBLISHED", + "title": "milanojs", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "VueJS-Oslo", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck447mmx8okml0b665vr3rg0c", + "idAlt": "ck9v8veukitfl0b204n0e05hj", + "img": "https://media.graphcms.com/aMnMNwrRDWve2sjtdeiI", + "link": "https://www.meetup.com/VueJS-Oslo/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/aMnMNwrRDWve2sjtdeiI", }, - Object { - "icon": "med", - "link": "http://matteocollina.com/", + "id": "ck447mmx8okml0b665vr3rg0c", + "site": "https://www.meetup.com/VueJS-Oslo/", + "status": "PUBLISHED", + "title": "VueJS-Oslo", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "MobileOslo", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck447qoghoktc0b661t5foey2", + "idAlt": "ck9v8wce8itin0b20gr1vni70", + "img": "https://media.graphcms.com/twr9AMM9SGSIB3LGGUhA", + "link": "https://www.meetup.com/Mobile-Meetup-Oslo/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/twr9AMM9SGSIB3LGGUhA", }, - ], + "id": "ck447qoghoktc0b661t5foey2", + "site": "https://www.meetup.com/Mobile-Meetup-Oslo/", + "status": "PUBLISHED", + "title": "MobileOslo", + }, "status": "PUBLISHED", - "tagBG": "#7AB464", - "twitterUrl": "https://twitter.com/matteocollina", + "width": 100, }, Object { - "activities": Object { - "talks": Array [ - Object { - "description": "Lorem Ipsum description about Webpack and so on and so on. Lorem dallsr ipsum suom.", - "isLightning": null, - "timeString": "11:00", - "title": "Fake Title Webpack is awesome!", - "track": Object { - "isPrimary": true, - "name": "General", - }, - }, - ], - }, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/3PwPQYRMRDKMjoQX05Bk", - "bio": "Creator of webpack. Working full time on Open Source. Father of two children. Likes to play board games.
-", - "color": "#ae4f01", - "company": "Webpack, Germany", - "country": "Germany", - "githubUrl": "https://github.com/sokra", - "id": "ck38sgfs929210b6654p3jpg0", - "isNightSpeaker": null, - "label": "Ecosystem", - "mediumUrl": "https://medium.com/@sokra", - "name": "TOBIAS KOPPERS", - "order": 8, - "ownSite": null, - "socials": Array [ - Object { - "icon": "gh", - "link": "https://github.com/sokra", - }, - Object { - "icon": "tw", - "link": "https://twitter.com/wSokrav", - }, - Object { - "icon": "med", - "link": "https://medium.com/@sokra", + "alt": "Oslo-Flutter-Dart-Meetup", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck447t13oci0w0b7305kk10as", + "idAlt": "ck9v8x9z5cpzi0b84k9vcl1ly", + "img": "https://media.graphcms.com/dwfDUbf4RLGYQJHcOfQC", + "link": "https://www.meetup.com/Oslo-Flutter-Dart-Meetup/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/dwfDUbf4RLGYQJHcOfQC", }, - ], + "id": "ck447t13oci0w0b7305kk10as", + "site": "https://www.meetup.com/Oslo-Flutter-Dart-Meetup/", + "status": "PUBLISHED", + "title": "Oslo-Flutter-Dart-Meetup", + }, "status": "PUBLISHED", - "tagBG": "#fff40d", - "twitterUrl": "https://twitter.com/wSokrav", - }, - Object { - "activities": Object { - "talks": Array [ - Object { - "description": null, - "isLightning": false, - "timeString": "14:45", - "title": "Fake Title it just a template", - "track": Object { - "isPrimary": true, - "name": "General", - }, - }, - ], - }, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/h7xLULGR2uFiZUbcWyKe", - "bio": "Author of Three.js.
-", - "color": "#ffffff", - "company": "Three.js, Spain", - "country": "Spain", - "githubUrl": "https://github.com/mrdoob", - "id": "ck38sj3w7qkgv0b73xvr4zraj", - "isNightSpeaker": null, - "label": "WebGL", - "mediumUrl": "", - "name": "MR.DOOB", - "order": 7, - "ownSite": "https://mrdoob.com/", - "socials": Array [ - Object { - "icon": "gh", - "link": "https://github.com/mrdoob", - }, - Object { - "icon": "tw", - "link": "https://twitter.com/mrdoob", - }, - Object { - "icon": "site", - "link": "https://mrdoob.com/", + "width": 100, + }, + Object { + "alt": "Framsia", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11ub3q5z70l0b85omyxwohd", + "idAlt": "ck9v9a5ayiug40b20b6kpem4w", + "img": "https://media.graphcms.com/B0avSOhLTimtCCx4ZrQ1", + "link": "https://www.meetup.com/framsia/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/B0avSOhLTimtCCx4ZrQ1", }, - ], + "id": "ck11ub3q5z70l0b85omyxwohd", + "site": "https://www.meetup.com/framsia/", + "status": "PUBLISHED", + "title": "Framsia", + }, "status": "PUBLISHED", - "tagBG": "#ff7302", - "twitterUrl": "https://twitter.com/mrdoob", + "width": 100, }, Object { - "activities": Object {}, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/zXDRIVADSmqdqh9PIRWU", - "bio": "Сreator of request and NodeConf. He was a leader in the io.js project and lead the Node.js Foundation through the merger of io.js and Node.js. He now works at Protocol Labs leading the IPLD project.
-", - "color": "#fff", - "company": "Protocol Labs, USA", - "country": "USA", - "githubUrl": "https://github.com/mikeal", - "id": "ck38smgd51zks0b32z5nmzg3y", - "isNightSpeaker": null, - "label": "NodeJS", - "mediumUrl": "https://medium.com/@mikeal", - "name": "MIKEAL ROGERS", - "order": 6, - "ownSite": null, - "socials": Array [ - Object { - "icon": "gh", - "link": "https://github.com/mikeal", + "alt": "AngularJS-Oslo", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck447wms3ol710b66wvihkuun", + "idAlt": "ck9v9b8eeiujd0b201xupjvv1", + "img": "https://media.graphcms.com/KKxpZi5zQeeoI3649vKk", + "link": "https://www.meetup.com/AngularJS-Oslo/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/KKxpZi5zQeeoI3649vKk", }, - Object { - "icon": "tw", - "link": "https://twitter.com/mikeal", + "id": "ck447wms3ol710b66wvihkuun", + "site": "https://www.meetup.com/AngularJS-Oslo/", + "status": "PUBLISHED", + "title": "AngularJS-Oslo", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "SkopjeFrontEnd", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck447zf4po8hg0b32lgdnp0ji", + "idAlt": "ck9v9cp82crep0b84inzji9jr", + "img": "https://media.graphcms.com/NakR6RFRSymJjvpvjcUt", + "link": "https://www.meetup.com/Skopje-Front-End-Meetup/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/NakR6RFRSymJjvpvjcUt", }, - Object { - "icon": "med", - "link": "https://medium.com/@mikeal", + "id": "ck447zf4po8hg0b32lgdnp0ji", + "site": "https://www.meetup.com/Skopje-Front-End-Meetup/", + "status": "PUBLISHED", + "title": "SkopjeFrontEnd", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "wwcode-vancouver", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck4481xo2olyk0b66fxeu38pc", + "idAlt": "ck9v9dkwuiuou0b20r19ip99a", + "img": "https://media.graphcms.com/ZqdXyujWTbW87j3pNrPx", + "link": "https://www.womenwhocode.com/vancouver", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/ZqdXyujWTbW87j3pNrPx", }, - ], + "id": "ck4481xo2olyk0b66fxeu38pc", + "site": "https://www.womenwhocode.com/vancouver", + "status": "PUBLISHED", + "title": "wwcode-vancouver", + }, "status": "PUBLISHED", - "tagBG": "#7AB464", - "twitterUrl": "https://twitter.com/mikeal", + "width": 100, }, Object { - "activities": Object {}, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/S46QV4WvTlefyYEg3I0I", - "bio": "Head of Developer Experience at Netlify, Vue core team member, and Staff Writer at CSS-Tricks. Sarah is formerly Principal Lead of Emerging Markets, Cloud Advocates at Microsoft and Manager of UX & Engineering at Trulia/Zillow Group. She’s the author of SVG Animations from O’Reilly and has given Frontend Masters workshops. Sarah is a co-organizer of ConcatenateConf, a free conference for Nigerian and Kenyan developers.
-", - "color": "#ae4f01", - "company": "Netlify, USA", - "country": "USA", - "githubUrl": "https://github.com/sdras", - "id": "ck2wz494viqmx0b73yobzoe5w", - "isNightSpeaker": null, - "label": "Ecosystem", - "mediumUrl": "", - "name": "SARAH DRASNER", - "order": 5, - "ownSite": "https://sarah.dev/", - "socials": Array [ - Object { - "icon": "gh", - "link": "https://github.com/sdras", + "alt": "rsconf", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck4483xclcjg40b7318rc4xrd", + "idAlt": "ck9v9emb1crl10b849q5s5ojn", + "img": "https://media.graphcms.com/cQWzZoDsQqOuujSQHQ7b", + "link": "https://rsconf.by/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/cQWzZoDsQqOuujSQHQ7b", }, - Object { - "icon": "tw", - "link": "https://twitter.com/sarah_edo", + "id": "ck4483xclcjg40b7318rc4xrd", + "site": "https://rsconf.by/", + "status": "PUBLISHED", + "title": "rsconf", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "Piter JS", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11uutl9ak0z0b71hf6ahud8", + "idAlt": "ck9v7gev6clof0b84ez0ao2rf", + "img": "https://media.graphcms.com/csIAGp4IQuGiKEeoVK3p", + "link": "https://piterjs.org/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/csIAGp4IQuGiKEeoVK3p", }, - Object { - "icon": "site", - "link": "https://sarah.dev/", + "id": "ck11uutl9ak0z0b71hf6ahud8", + "site": "https://piterjs.org/", + "status": "PUBLISHED", + "title": "Piter JS", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "kcwomenintech", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck448a0x3o9k10b32dn3itzf0", + "idAlt": "ck9v9kud2iv820b200n7tm05x", + "img": "https://media.graphcms.com/tPDy3EA8TDuO0nnM5FEx", + "link": "https://kcwomenintech.org/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/tPDy3EA8TDuO0nnM5FEx", }, - ], + "id": "ck448a0x3o9k10b32dn3itzf0", + "site": "https://kcwomenintech.org/", + "status": "PUBLISHED", + "title": "kcwomenintech", + }, "status": "PUBLISHED", - "tagBG": "#fff40d", - "twitterUrl": "https://twitter.com/sarah_edo", - }, - Object { - "activities": Object { - "talks": Array [ - Object { - "description": "There are stats coming out that in 2020 about 50% of all JavaScript projects using npm will be using TypeScript, how did this come to be and what systems are in place to keep the TypeScript team in Microsoft from trying to extinguish JavaScript?", - "isLightning": null, - "timeString": null, - "title": "How TypeScript Embraces and Extends JavaScript", - "track": null, - }, - ], + "width": 100, + }, + Object { + "alt": "Dublin Node.js", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck4ihce2kbzre0b207p9g0usy", + "idAlt": "ck9v9lqcbivc50b204kf7bawe", + "img": "https://media.graphcms.com/Ed7nv4qRaaXBV2Oouutg", + "link": "https://www.meetup.com/Dublin-Node-js-Meetup/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/Ed7nv4qRaaXBV2Oouutg", + }, + "id": "ck4ihce2kbzre0b207p9g0usy", + "site": "https://www.meetup.com/Dublin-Node-js-Meetup/", + "status": "PUBLISHED", + "title": "Dublin Node.js", }, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/NPpzhbjmTU2x6vl9kySi", - "bio": "TypeScript compiler team at Microsoft. For the last decade has worked on large-scale open source projects across the native and JavaScript ecosystem.
-", - "color": "#030303", - "company": "Microsoft, USA", - "country": "USA", - "githubUrl": "https://github.com/orta", - "id": "ck5miip5wmdqz0b7535julaeu", - "isNightSpeaker": null, - "label": "TypeScript", - "mediumUrl": null, - "name": "Orta Therox", - "order": 4, - "ownSite": null, - "socials": Array [ - Object { - "icon": "gh", - "link": "https://github.com/orta", + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "React GraphQL Academy", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11yq7xcb60w0b71x189h2gk", + "idAlt": "ck9v9mn9zcsi70b8401et9zlo", + "img": "https://media.graphcms.com/9dC4KF0QXiklgK8u5aaf", + "link": "https://reactgraphql.academy/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/9dC4KF0QXiklgK8u5aaf", }, - Object { - "icon": "tw", - "link": "https://twitter.com/orta", + "id": "ck11yq7xcb60w0b71x189h2gk", + "site": "https://reactgraphql.academy/", + "status": "PUBLISHED", + "title": "React GraphQL Academy", + }, + "status": "PUBLISHED", + "width": 120, + }, + Object { + "alt": "Nodetlv", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck5qlqlp9zi610b7526jjkw6a", + "idAlt": "ck9v9nqtbivjm0b20ia017jiq", + "img": "https://media.graphcms.com/4s9W6dOITVWZ9hjlR4P4", + "link": "https://www.nodetlv.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/4s9W6dOITVWZ9hjlR4P4", }, - ], + "id": "ck5qlqlp9zi610b7526jjkw6a", + "site": "https://www.nodetlv.com/", + "status": "PUBLISHED", + "title": "Nodetlv", + }, "status": "PUBLISHED", - "tagBG": "#61DAFB", - "twitterUrl": "https://twitter.com/orta", - }, - Object { - "activities": Object { - "talks": Array [ - Object { - "description": "Lorem riba Lorem riba. Dollor doorlrl. Ipsum.", - "isLightning": null, - "timeString": "14:45", - "title": "Fake Title it just a template", - "track": Object { - "isPrimary": true, - "name": "General", - }, - }, - ], - }, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/9SEIZ7SueIgj7GiUs9Zg", - "bio": "Creator of NestJS, Co-Founder of Trilon.io, Google Developer Expert in Web Technologies and Angular, international speaker, trainer, consultant, and open source contributor.
-", - "color": "white", - "company": "NestJS | Trilon.io, Poland", - "country": "Poland", - "githubUrl": "https://github.com/kamilmysliwiec", - "id": "ck42w9tfl8hfx0b73mk2myam3", - "isNightSpeaker": null, - "label": "NestJS", - "mediumUrl": null, - "name": "Kamil Mysliwiec", - "order": 3, - "ownSite": null, - "socials": Array [ - Object { - "icon": "gh", - "link": "https://github.com/kamilmysliwiec", + "width": 120, + }, + Object { + "alt": "ReactNext", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck5qlu9nmzih70b75golven6b", + "idAlt": "ck9v9tsxeivz40b20l9ufuvfd", + "img": "https://media.graphcms.com/pV29a4DROuUNDTMJzu1Q", + "link": "http://react-next.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/pV29a4DROuUNDTMJzu1Q", }, - Object { - "icon": "tw", - "link": "https://twitter.com/kammysliwiec", + "id": "ck5qlu9nmzih70b75golven6b", + "site": "http://react-next.com/", + "status": "PUBLISHED", + "title": "ReactNext", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "ReactWeek", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck5qlwzmi5owf0b66c74731xi", + "idAlt": "ck9v9uy2viw2b0b20vw9uivdd", + "img": "https://media.graphcms.com/DYhwRSsHR1W1FEwdsF6a", + "link": "http://reactweek.nyc/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/DYhwRSsHR1W1FEwdsF6a", }, - ], + "id": "ck5qlwzmi5owf0b66c74731xi", + "site": "http://reactweek.nyc/", + "status": "PUBLISHED", + "title": "ReactWeek", + }, "status": "PUBLISHED", - "tagBG": "black", - "twitterUrl": "https://twitter.com/kammysliwiec", + "width": 110, }, Object { - "activities": Object {}, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/izWu7SWFQwSdP8wBthcK", - "bio": "Programmer and artist who works frequently with open-source software, cartography, live coding, and experimental interfaces. She is the developer of Hydra, a platform for live-coding visuals inspired by analog video synthesis. She works with the performance laboratory ATI-erra, creating interactive visuals for dance and theater. She has also created software and interactive installations for CultureHub Art & Technology Center, el Museo de Bogotá, and Oakland Museum of California. Originally from San Francisco, she currently lives and works in Bogotá, Colombia.
-", - "color": "#ffffff", - "company": "Hydra, Colombia", - "country": "Colombia", - "githubUrl": "https://github.com/ojack", - "id": "ck38st939qlbr0b7389hxibkh", - "isNightSpeaker": null, - "label": "WebGL", - "mediumUrl": null, - "name": "OILVIA JACK", - "order": 2, - "ownSite": "https://ojack.github.io/", - "socials": Array [ - Object { - "icon": "gh", - "link": "https://github.com/ojack", + "alt": "InfinumJSTalks", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck5qlz8na5jux0b208yme50n7", + "idAlt": "ck9v9yo3wiwbg0b2024zyqcjz", + "img": "https://media.graphcms.com/Z55PEVXQS8CyZafNpi1F", + "link": "https://www.meetup.com/Infinum-JS-Talks/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/Z55PEVXQS8CyZafNpi1F", }, - Object { - "icon": "tw", - "link": "https://twitter.com/_ojack_", + "id": "ck5qlz8na5jux0b208yme50n7", + "site": "https://www.meetup.com/Infinum-JS-Talks/", + "status": "PUBLISHED", + "title": "InfinumJSTalks", + }, + "status": "PUBLISHED", + "width": 110, + }, + Object { + "alt": "FullstackCluj", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck5qm1jwkzjm60b75vndosxcu", + "idAlt": "ck9v9zrurctwc0b84zk78i2lp", + "img": "https://media.graphcms.com/uT5HJdE3Tn2FMoM1ODKY", + "link": "https://www.meetup.com/fullstack-cluj/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/uT5HJdE3Tn2FMoM1ODKY", }, - Object { - "icon": "site", - "link": "https://ojack.github.io/", + "id": "ck5qm1jwkzjm60b75vndosxcu", + "site": "https://www.meetup.com/fullstack-cluj/", + "status": "PUBLISHED", + "title": "FullstackCluj", + }, + "status": "PUBLISHED", + "width": 150, + }, + Object { + "alt": "HackersAndFounders", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck7a5xlqmkxx20b20y7r86r87", + "idAlt": "ck9va0kractzz0b84pzahlc09", + "img": "https://media.graphcms.com/Y773RE8OQ6KBl2rbIsiM", + "link": "https://hackersandfounders.nl/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/Y773RE8OQ6KBl2rbIsiM", }, - ], + "id": "ck7a5xlqmkxx20b20y7r86r87", + "site": "https://hackersandfounders.nl/", + "status": "PUBLISHED", + "title": "HackersAndFounders", + }, "status": "PUBLISHED", - "tagBG": "#ff7302", - "twitterUrl": "https://twitter.com/_ojack_", + "width": 100, }, Object { - "activities": Object {}, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/jyad5bupSCe8c8Qj1uYX", - "bio": "Member and Chairperson of the Node.js Community Committee, and a contributor to multiple Node.js working groups and initiatives focusing on the continued growth and success of the Node.js community. He is a Regular Member of the OpenJS Foundation Cross-Project Council, and a TC39 delegate. He has been contributing to open-source since he was 16.
-", - "color": "#fff", - "company": "Microsoft, USA", - "country": "USA", - "githubUrl": "https://github.com/bnb", - "id": "ck38szh6b23ar0b20tqzvzm0f", - "isNightSpeaker": null, - "label": "NodeJS", - "mediumUrl": "https://medium.com/@bitandbang", - "name": "TIERNEY CYREN", - "order": 1, - "ownSite": null, - "socials": Array [ - Object { - "icon": "gh", - "link": "https://github.com/bnb", + "alt": "seattlejs", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck38f33wmp9460b73w1py4q0m", + "idAlt": "ck9va1isfcu410b840hy3h2r1", + "img": "https://media.graphcms.com/AJGaUGQ8Q6e2AoMm0XDB", + "link": "http://seattlejs.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/AJGaUGQ8Q6e2AoMm0XDB", }, - Object { - "icon": "tw", - "link": "https://twitter.com/bitandbang", + "id": "ck38f33wmp9460b73w1py4q0m", + "site": "http://seattlejs.com/", + "status": "PUBLISHED", + "title": "seattlejs", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "BigDataAmsterdam", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck7a5u7prcwuv0b841wwcclk8", + "idAlt": "ck9va2t2fiwq00b20uvefpn7y", + "img": "https://media.graphcms.com/K7KduGcR7ipgcAi3ErG1", + "link": "https://www.meetup.com/Big-Data-Amsterdam/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/K7KduGcR7ipgcAi3ErG1", }, - Object { - "icon": "med", - "link": "https://medium.com/@bitandbang", + "id": "ck7a5u7prcwuv0b841wwcclk8", + "site": "https://www.meetup.com/Big-Data-Amsterdam/", + "status": "PUBLISHED", + "title": "BigDataAmsterdam", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "Webstandards", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11x3nqxzil70b851zb19zgc", + "idAlt": "ck9va3sl6iwtc0b209376lfon", + "img": "https://media.graphcms.com/n5XbzuQGbGlem0q6Q5wW", + "link": "https://twitter.com/webstandards_ru", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/n5XbzuQGbGlem0q6Q5wW", }, - ], + "id": "ck11x3nqxzil70b851zb19zgc", + "site": "https://twitter.com/webstandards_ru", + "status": "PUBLISHED", + "title": "Webstandards", + }, "status": "PUBLISHED", - "tagBG": "#7AB464", - "twitterUrl": "https://twitter.com/bitandbang", + "width": 100, }, Object { - "activities": Object {}, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/rBzXz8MRwmFwvCWJjkPD", - "bio": "Core member of Svelte since 2017. These days Alan is mostly a JavaScript programmer, the rest of the time he also enjoys hiking, skiing, and listening to music.
-", - "color": "white", - "company": "Core member of Svelte, US", - "country": "US", - "githubUrl": "https://github.com/Conduitry", - "id": "ck5wcjhfif16l0b753eqy3w9r", - "isNightSpeaker": null, - "label": "Svelte", - "mediumUrl": null, - "name": " Alan Faubert", + "alt": "Gamedevjs", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckap75uzn07e80b84bw7gl8jk", + "idAlt": "ckap76k1m07hd0b84yejoji2n", + "img": "https://media.graphcms.com/dyeCTPmYRjOA3e6hSyHg", + "link": "https://gamedevjs.com/", "order": null, - "ownSite": null, - "socials": Array [ - Object { - "icon": "gh", - "link": "https://github.com/Conduitry", + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/dyeCTPmYRjOA3e6hSyHg", }, - ], + "id": "ckap75uzn07e80b84bw7gl8jk", + "site": "https://gamedevjs.com/", + "status": "PUBLISHED", + "title": "Gamedevjs", + }, "status": "PUBLISHED", - "tagBG": "black", - "twitterUrl": null, + "width": 100, }, Object { - "activities": Object {}, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/mbETdJvNTd2SHOKv6T76", - "bio": " + "alt": "UtrechtJUG", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck38f190lp8ym0b73h8v34l17", + "idAlt": "ck9v9hz44iv120b203oeu0jgg", + "img": "https://media.graphcms.com/dyJ3m0rcRgWNXNYUnqdY", + "link": "https://www.meetup.com/Utrecht-Java-User-Group/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/dyJ3m0rcRgWNXNYUnqdY", + }, + "id": "ck38f190lp8ym0b73h8v34l17", + "site": "https://www.meetup.com/Utrecht-Java-User-Group/", + "status": "PUBLISHED", + "title": "UtrechtJUG", + }, + "status": "PUBLISHED", + "width": 100, + }, + ], + "mod": "logos_xs sponsors-block_xs", + "title": "Partners", + }, +] +`; + +exports[`JSN should prepare talks 1`] = ` +Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "As front-end tooling and frameworks continue to evolve and improve at a pace that is often hard to keep up with, serverless abstractions continue to move closer and closer to the client, abstracting away back end services and making them more and more consumable by traditionally front end developers. + +In this talk I’ll show how we can use a combination of GraphQL SDL along with a new DSL (GraphQL Transform) created by the Amplify team to build out a full stack cloud application directly from your GraphQL schema. Using this GraphQL DSL, we’ll walk through how to model a Database, authorization rules, relationships, and custom access patterns. We’ll look at how to rapidly prototype an example application, and view some demos including a voting app capable of handling over 100,000 operations per second.", + "from": "Amazon AWS, USA", + "id": "cka40cpwb0b660b20s4y84m7y", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "GraphQL", + "name": "Nader Dabit", + "place": "Amazon AWS, USA", + "slug": "transforming-graph-ql-infrastructure-as-code-for-front-end-developers", + "speaker": "Nader Dabit", + "speakerSlug": "nader-dabit", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "As front-end tooling and frameworks continue to evolve and improve at a pace that is often hard to keep up with, serverless abstractions continue to move closer and closer to the client, abstracting away back end services and making them more and more consumable by traditionally front end developers.
+In this talk I’ll show how we can use a combination of GraphQL SDL along with a new DSL (GraphQL Transform) created by the Amplify team to build out a full stack cloud application directly from your GraphQL schema. Using this GraphQL DSL, we’ll walk through how to model a Database, authorization rules, relationships, and custom access patterns. We’ll look at how to rapidly prototype an example application, and view some demos including a voting app capable of handling over 100,000 operations per second.
+", + "time": "16:50", + "title": "Transforming GraphQL – Infrastructure as Code for Front End Developers", + "track": "June 18", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Do you scroll through TikTok, amazed at the goofy, yet complicated dance moves featuring today's youths? Those kids are popping off while you're sitting around, coding SQL queries. Fortunately, we are technologists, and there's no problem we can't solve, including getting better at TikTok dancing. In this talk, I'll show you how I perfected my moves by building PoseDance, your friendly TikTok trainer. We'll discuss how I leveraged PoseNet, which allows you to pinpoint body motion and draw a 'skeleton' on a video. Combined with a webcam mapping your own dance skeleton, a bit of math to compare the matching points, Azure functions to authenticate a user, and PlayFab as a game-friendly backend to keep scores and create a leaderboard, you've got the perfect quarantine pastime, making a perfect fool of yourself in front of a webcam. Come dance with me!", + "from": "Microsoft, USA", + "id": "cka58nqd02j9u0b20vtncx7g8", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "AI/ML", + "name": "Jen Looper", + "place": "Microsoft, USA", + "slug": "pose-dance-build-a-tik-tok-trainer", + "speaker": "Jen Looper", + "speakerSlug": "jen-looper", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Do you scroll through TikTok, amazed at the goofy, yet complicated dance moves featuring today's youths? Those kids are popping off while you're sitting around, coding SQL queries. Fortunately, we are technologists, and there's no problem we can't solve, including getting better at TikTok dancing. In this talk, I'll show you how I perfected my moves by building PoseDance, your friendly TikTok trainer. We'll discuss how I leveraged PoseNet, which allows you to pinpoint body motion and draw a 'skeleton' on a video. Combined with a webcam mapping your own dance skeleton, a bit of math to compare the matching points, Azure functions to authenticate a user, and PlayFab as a game-friendly backend to keep scores and create a leaderboard, you've got the perfect quarantine pastime, making a perfect fool of yourself in front of a webcam. Come dance with me!
+", + "time": "20:15", + "title": "PoseDance: Build a TikTok Trainer", + "track": "June 18", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "In my journey through nodeland, I always wonder about the cost of my abstractions. + +I started a journey to write an HTTP framework with extremely low overhead, and Fastify was born. With its ability to reach an astonishing 90k requests/sec, Fastify can halve your cloud server bill. + +In this talk, I will walk you through the basics of the framework: how to route requests, write tests, and use the plugin system.", + "from": "NearForm, Italy", + "id": "cka58pk4h7khc0b84gtifenhl", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "NodeJS", + "name": "Matteo Collina", + "place": "NearForm, Italy", + "slug": "1-2-3-fastify", + "speaker": "Matteo Collina", + "speakerSlug": "matteo-collina", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "In my journey through nodeland, I always wonder about the cost of my abstractions.
+I started a journey to write an HTTP framework with extremely low overhead, and Fastify was born. With its ability to reach an astonishing 90k requests/sec, Fastify can halve your cloud server bill.
+In this talk, I will walk you through the basics of the framework: how to route requests, write tests, and use the plugin system.
+", + "time": "17:45", + "title": "1, 2, 3... Fastify!", + "track": "June 18", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "You've built an app an you want it to scale. Do you want CI/CD, custom domains, SSL certificates, APIs, global scale of your static assets, authentication, and authorization? Let's learn how to build a static web app on Azure and go from GitHub repo to global scale in minutes.", + "from": "Microsoft, USA", + "id": "cka58qnw32jhw0b20ezgtk0za", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "", + "name": "John Papa", + "place": "Microsoft, USA", + "slug": "from-code-to-scale-build-a-static-web-app-in-minutes", + "speaker": "John Papa", + "speakerSlug": "john-papa", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "You've built an app an you want it to scale. Do you want CI/CD, custom domains, SSL certificates, APIs, global scale of your static assets, authentication, and authorization? Let's learn how to build a static web app on Azure and go from GitHub repo to global scale in minutes.
+", + "time": "20:50", + "title": "From Code to Scale! Build a Static Web App in Minutes", + "track": "June 18", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "TypeScript is becoming one of the dominant ways in which people write JavaScript. The goal of TypeScript is to augment and not replace JavaScript – so how does the team ensure that the future of JS is always JS.", + "from": "Microsoft, USA", + "id": "cka58sj7q7kuh0b84ybcvhe16", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "TypeScript", + "name": "Orta Therox", + "place": "Microsoft, USA", + "slug": "how-does-the-type-script-team-try-to-avoid-negative-effects-on-the-js-ecosystem", + "speaker": "Orta Therox", + "speakerSlug": "orta-therox", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "TypeScript is becoming one of the dominant ways in which people write JavaScript. The goal of TypeScript is to augment and not replace JavaScript – so how does the team ensure that the future of JS is always JS.
+", + "time": "16:45", + "title": "How Does the TypeScript Team Try to Avoid Negative Effects on the JS Ecosystem", + "track": "June 19", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Composition API is one of the biggest new features in Vue 3. In this talk, I will explain what is it and how to use Composition API for code abstraction and reuse.", + "from": "GitLab, Ukraine", + "id": "ckacf4j6nq9220b849ojeqrqk", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "VueJS", + "name": "Natalia Tepluhina", + "place": "GitLab, Ukraine", + "slug": "composition-api-a-quick-over-vue", + "speaker": "Natalia Tepluhina", + "speakerSlug": "natalia-tepluhina", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Composition API is one of the biggest new features in Vue 3. In this talk, I will explain what is it and how to use Composition API for code abstraction and reuse.
+", + "time": "16:10", + "title": "Composition API: a Quick overVue", + "track": "June 19", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Microfrontends as Monolith? Shared component library or styleguide? This technique allows to consume modules from separate builds, which can be developed and deployed independently. An introduction, and further ideas.", + "from": "Webpack, Germany", + "id": "ckacf6molq9810b84xazrb1vz", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "Ecosystem", + "name": "Tobias Koppers", + "place": "Webpack, Germany", + "slug": "module-federation-in-webpack-5", + "speaker": "Tobias Koppers", + "speakerSlug": "tobias-koppers", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Microfrontends as Monolith? Shared component library or styleguide? This technique allows to consume modules from separate builds, which can be developed and deployed independently. An introduction, and further ideas.
+", + "time": "18:20", + "title": "Module Federation in Webpack 5", + "track": "June 18", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Why does '👩🏿🎤'.length = 7? Is JavaScript UTF-8 or UTF-16? What happens under the hood when you set ? Have you ever wondered how emoji and complex scripting languages are encoded to work correctly across browsers and devices - for billions of people around the world? Or how new emoji are introduced and approved? Have you ever seen one of these: □ � “special” glyph characters before and want more information on why they might appear and how to avoid them in the future? Let’s talk about Unicode encoding in JavaScript and across the world wide web! We’ll go over best practices, common pitfalls, and provide resources to learn more - even where to go if you want to submit a new emoji proposal! :) ", + "from": "Adobe, USA", + "id": "ckacf89ypq9du0b84mj4gnn04", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "I18N", + "name": "Naomi Meyer", + "place": "Adobe, USA", + "slug": "emoji-encoding-unicode-internationalization", + "speaker": "Naomi Meyer", + "speakerSlug": "naomi-meyer", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Why does '👩🏿🎤'.length = 7? Is JavaScript UTF-8 or UTF-16? What happens under the hood when you set ? Have you ever wondered how emoji and complex scripting languages are encoded to work correctly across browsers and devices - for billions of people around the world? Or how new emoji are introduced and approved? Have you ever seen one of these: □ � “special” glyph characters before and want more information on why they might appear and how to avoid them in the future? Let’s talk about Unicode encoding in JavaScript and across the world wide web! We’ll go over best practices, common pitfalls, and provide resources to learn more - even where to go if you want to submit a new emoji proposal! :)
+", + "time": "19:05", + "title": "Emoji Encoding, � Unicode, & Internationalization", + "track": "June 19", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "In this presentation, we’ll look at the current state of Angular and its tooling infrastructure. We’ll discuss what features enabled the latest version of our rendering engine Ivy and how you can take advantage of them today. + +Along the way, we’ll look at the work we did to ensure small bundle size and fast execution! In the second part of the talk, we’ll focus on the tooling that Angular provides to help you deliver apps quickly and efficiently.", + "from": "Google, USA", + "id": "ckacf9r39q9i30b842hy1n7pb", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "Angular", + "name": "Minko Gechev", + "place": "Google, USA", + "slug": "the-state-of-angular", + "speaker": "Minko Gechev", + "speakerSlug": "minko-gechev", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "In this presentation, we’ll look at the current state of Angular and its tooling infrastructure. We’ll discuss what features enabled the latest version of our rendering engine Ivy and how you can take advantage of them today.
+Along the way, we’ll look at the work we did to ensure small bundle size and fast execution! In the second part of the talk, we’ll focus on the tooling that Angular provides to help you deliver apps quickly and efficiently.
+", + "time": "18:15", + "title": "The State of Angular", + "track": "June 19", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Many modern web frameworks use components as their building blocks. + +In this talk, I will show component testing using Cypress - and I mean \\"show\\" literally. +You will see the component running inside a real browser, you will interact with the component like a real user, and you can debug the component using the real browser's DevTools. +Finally, I will go through the current open source and commercial options for visually testing the component's styles and rendering.", + "from": "Cypress, USA", + "id": "ckacfbqipdb0a0b20ehkoq1vx", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "Testing", + "name": "Gleb Bahmutov", + "place": "Cypress, USA", + "slug": "i-see-what-is-going-on-visual-testing-for-your-components", + "speaker": "Gleb Bahmutov", + "speakerSlug": "gleb-bahmutov", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Many modern web frameworks use components as their building blocks.
+In this talk, I will show component testing using Cypress - and I mean \\"show\\" literally. +You will see the component running inside a real browser, you will interact with the component like a real user, and you can debug the component using the real browser's DevTools. +Finally, I will go through the current open source and commercial options for visually testing the component's styles and rendering.
+", + "time": "16:15", + "title": "I See What is Going on: Visual Testing for Your Components", + "track": "June 18", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Modern JavaScript is powerful, but big frameworks like Vue or React add an overwhelming amount of complexity to a developers' workflow. That’s why I wrote AlpineJS. It’s less than 10kb, requires no build process, takes almost no time to learn, yet gives you the declarative templating and reactivity you can’t live without. I can’t wait to show it to you.", + "from": "Creator of AlpineJS & LaravelLivewire , USA", + "id": "ckaw8lqgf8yxe0a69fyvh3eu2", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "AlpineJS", + "name": "Caleb Porzio", + "place": "Creator of AlpineJS & LaravelLivewire , USA", + "slug": "say-no-to-complexity-with-alpine-js", + "speaker": "Caleb Porzio", + "speakerSlug": "caleb-porzio", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Modern JavaScript is powerful, but big frameworks like Vue or React add an overwhelming amount of complexity to a developers' workflow. That’s why I wrote AlpineJS. It’s less than 10kb, requires no build process, takes almost no time to learn, yet gives you the declarative templating and reactivity you can’t live without. I can’t wait to show it to you.
+", + "time": "17:40", + "title": "Say No To Complexity With AlpineJS", + "track": "June 19", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "This talk is going to be about react-three-fiber. We'll make a mini game together. We'll see how even beginners can make it through all the heavy boilerplate and math without losing their minds, and then translate it to anything, be it a game or a website with some interesting visuals and effects.", + "from": " oss. founded paranoidandroid, react-spring, react-three-fiber, react-use-gesture, zustand, Switzerland", + "id": "ckay2q9iycw070915ezrm5bj9", + "isLightning": null, + "isoDate": "2020-06-18T00:00:00.000Z", + "label": "3D ", + "name": "Paul Henschel", + "place": " oss. founded paranoidandroid, react-spring, react-three-fiber, react-use-gesture, zustand, Switzerland", + "slug": "making-games-in-react", + "speaker": "Paul Henschel", + "speakerSlug": "paul-henschel", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "This talk is going to be about react-three-fiber. We'll make a mini game together. We'll see how even beginners can make it through all the heavy boilerplate and math without losing their minds, and then translate it to anything, be it a game or a website with some interesting visuals and effects.
+", + "time": "19:40", + "title": "Making Games in React", + "track": "June 19", + }, +] +`; + +exports[`JSN should prepare tracks 1`] = ` +Array [ + "June 18", + "June 19", +] +`; + +exports[`JSN should prepare workshops 1`] = ` +Array [ + Object { + "additionalInfo": null, + "code": "collina_wsh", + "content": Array [ + "How Promises and async/await \\"work\\"", + "How the Node.js event loop interact with Promises", + "How to use Promises correctly", + "The most common pitfalls when using Promises and async/await", + "How to use Promises efficiently", + ], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-06-11T00:00:00.000Z", + "dateString": "June 11-12", + "description": "In our experience, if you are using promises, you are likely using them wrong (and nearly everybody else is too). This is most often due to misunderstandings about how Promises work, choices that were made by TC39 when designing the promises API, inconsistencies in how Promises are used, or failure to account for the cost of using Promises in an application, and ultimately how the event loop works. In this workshop, we aim to help developers do the right thing with Promises. Through a series of hands on exercises and puzzles, developers will learn the ins and outs of developing with Promises in Node.js, learning everything they should do, and most importantly what they shouldn't do, in order to maximize the effectiveness of their code and avoid common performance pitfalls.
+", + "duration": null, + "finishingTime": "", + "id": "ckac5wwnqcrkw0b205cg7g5z3", + "level": null, + "location": "June 11-12, 4:00pm till 8:00pm CEST.
+", + "order": 109, + "prerequisites": null, + "schedule": null, + "slogan": null, + "slug": "broken-promises", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/4LTWaL5SpOCr2oBbS8rq", + }, + "bio": "Node.js TSC member, PhD, Technical Director @ NearForm, IoT Expert, Consultant, author of Pino and Fastify. Co-author of the book \\"Node.js Cookbook, Third Edition\\" edited by Packt.", + "company": "NearForm", + "country": "Italy", + "githubUrl": "https://github.com/mcollina", + "id": "ck38s6qxa28h90b66plt7e737", + "idMain": "ck38s6qxa28h90b66plt7e737", + "info": Array [ + Object { + "id": "ck38s81rz28ki0b66keep3ghk", + "idAlt": "ck38s81rz28ki0b66keep3ghk", + "isNightSpeaker": false, + "label": "NodeJS", + "order": 47, + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/4LTWaL5SpOCr2oBbS8rq", + }, + "bio": "Node.js TSC member, PhD, Technical Director @ NearForm, IoT Expert, Consultant, author of Pino and Fastify. Co-author of the book \\"Node.js Cookbook, Third Edition\\" edited by Packt.", + "company": "NearForm", + "country": "Italy", + "githubUrl": "https://github.com/mcollina", + "id": "ck38s6qxa28h90b66plt7e737", + "idMain": "ck38s6qxa28h90b66plt7e737", + "mediumUrl": "http://matteocollina.com/", + "name": "Matteo Collina", + "ownSite": "", + "twitterUrl": "https://twitter.com/matteocollina", + }, + "status": "PUBLISHED", + }, + ], + "mediumUrl": "http://matteocollina.com/", + "name": "Matteo Collina", + "ownSite": "", + "talks": Array [ + Object { + "description": "In my journey through nodeland, I always wonder about the cost of my abstractions. + +I started a journey to write an HTTP framework with extremely low overhead, and Fastify was born. With its ability to reach an astonishing 90k requests/sec, Fastify can halve your cloud server bill. + +In this talk, I will walk you through the basics of the framework: how to route requests, write tests, and use the plugin system.", + "isLightning": null, + "timeString": "17:45", + "title": "1, 2, 3... Fastify!", + "track": Object { + "isPrimary": true, + "name": "June 18", + }, + }, + ], + "twitterUrl": "https://twitter.com/matteocollina", + "workshops": Array [ + Object { + "title": "Broken Promises", + }, + ], + "workshopsActivity": Array [ + Object { + "title": "Broken Promises", + }, + ], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Broken Promises", + "toc": "An electronic music and audiovisual group from London, established by producer Jack Driscoll and visual artist Alex Kempton in 2016. The visuals in their show have been created entirely in Javascript using WebGL. Polyop have developed a spectacular audiovisual show set in an alternate universe. The show follows a mysterious demi-god across the polyhedral-plane, inhabited by strange planets, entities and nomad aliens, to the sound of 90’s techno breakbeat and acid performed live on hardware synthesisers and drum machines.
-", - "company": "WebGL, React, Web Audio API, and Web MIDI API, UK", - "country": "UK", - "decor": true, - "githubUrl": null, - "id": "ck409iejwh7280b66z4zwmecf", - "mediumUrl": null, - "name": "Polyop", - "ownSite": null, - "socials": Array [ + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/4LTWaL5SpOCr2oBbS8rq", + }, + "bio": "Node.js TSC member, PhD, Technical Director @ NearForm, IoT Expert, Consultant, author of Pino and Fastify. Co-author of the book \\"Node.js Cookbook, Third Edition\\" edited by Packt.", + "company": "NearForm", + "country": "Italy", + "githubUrl": "https://github.com/mcollina", + "id": "ck38s6qxa28h90b66plt7e737", + "idMain": "ck38s6qxa28h90b66plt7e737", + "mediumUrl": "http://matteocollina.com/", + "name": "Matteo Collina", + "ownSite": "", + "slug": "matteo-collina", + "talks": Array [ Object { - "icon": "tw", - "link": "https://twitter.com/polyopuk", + "description": "In my journey through nodeland, I always wonder about the cost of my abstractions. + +I started a journey to write an HTTP framework with extremely low overhead, and Fastify was born. With its ability to reach an astonishing 90k requests/sec, Fastify can halve your cloud server bill. + +In this talk, I will walk you through the basics of the framework: how to route requests, write tests, and use the plugin system.", + "isLightning": null, + "timeString": "17:45", + "title": "1, 2, 3... Fastify!", + "track": Object { + "isPrimary": true, + "name": "June 18", + }, }, ], - "twitterUrl": "https://twitter.com/polyopuk", - }, - Object { - "activities": Object {}, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/WzjuPUZSvaWQ9TQlPiHw", - "bio": "AliceEffekt is formed by Devine Lu Linvega, a true digital nomad and a polymath working on a series of experimental tools and applications. Devine has created a set of live coding tools for rapid iteration and creation of rythms based on Node.js. His latest creation: ORCA is a full blown text based sequencer with impressive cappabilities and distinct aesthetic that engulfs the user in a textual fashion rarely seen in live performance.
-", - "company": "Node.js, Japan", - "country": "Japan", - "decor": true, - "githubUrl": null, - "id": "ck409n5zch7cx0b66swo5bswb", - "mediumUrl": null, - "name": "AliceEffekt — ORCA", - "ownSite": "https://aliceffekt.bandcamp.com/", - "socials": Array [ + "twitterUrl": "https://twitter.com/matteocollina", + "workshops": Array [ Object { - "icon": "tw", - "link": "https://twitter.com/neauoire", + "title": "Broken Promises", }, + ], + "workshopsActivity": Array [ Object { - "icon": "site", - "link": "https://aliceffekt.bandcamp.com/", + "title": "Broken Promises", }, ], - "twitterUrl": "https://twitter.com/neauoire", }, ], - "workshops": Array [ - Object { - "activities": Object {}, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/mbETdJvNTd2SHOKv6T76", - "bio": " -", - "company": "Hydra, Zakovia", - "country": "Zakovia", - "githubUrl": null, - "id": "ck5y2joqjhrd70b66yuznh3mq", - "isNightSpeaker": null, - "label": null, - "mediumUrl": null, - "name": "Vasilisa Pupkina", - "order": null, - "ownSite": null, - "socials": Array [], - "status": "DRAFT", - "twitterUrl": null, - }, - Object { - "activities": Object {}, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/mbETdJvNTd2SHOKv6T76", - "bio": " + "trainersTitle": "Matteo Collina", + }, + Object { + "additionalInfo": null, + "code": "wsh_lobera", + "content": Array [ + "Understand the main functionalities and responsibilities of a GraphQL server", + "Learn how to connect your GraphQL API to different data sources such as a REST API or a database", + "Design standard GraphQL schemas compliant with different GraphQL specifications ", + "Start identifying potential problems when running real-world GraphQL APIs", + ], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-06-15T00:00:00.000Z", + "dateString": "June 15", + "description": "GraphQL is an excellent technology to model the data of a system and expose it in a very flexible way. It enables product engineers to build faster at scale by composing data requirements on the client and efficiently querying APIs. However, this new paradigm also brings new concerns and potential issues on the server-side. In this workshop, you will learn how to effectively create GraphQL APIs leveraging GraphQL advantages and avoiding common pitfalls.
", - "company": "Hydra, Zakovia", - "country": "Zakovia", - "githubUrl": null, - "id": "ck5y2joqjhrd70b66yuznh3mq", - "isNightSpeaker": null, - "label": null, - "mediumUrl": null, - "name": "Vasilisa Pupkina", - "order": null, - "ownSite": null, - "socials": Array [], - "status": "DRAFT", - "twitterUrl": null, + "duration": null, + "finishingTime": "", + "id": "ck9yblj52shaz0b2069kd5jmg", + "level": "JavaScript developers with a basic understanding of REST APIs. No experience with GraphQL is required to attend this workshop.", + "location": "June 15, 3:00pm till 10:00pm CEST.
+", + "order": 110, + "prerequisites": null, + "schedule": null, + "slogan": null, + "slug": "from-zero-to-real-world-graph-ql-ap-is", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/jx66c2DKQ3KhZSOiLxXS", }, - ], - }, - "speakersBtn": "CALL FOR SPEAKERS", - "sponsors": Array [ - Object { - "list": Array [ + "bio": "Founder at React GraphQL Academy and LeanJS. Developer and Coach passionate about JavaScript, React and GraphQL. Organizer of the JavaScript London Meetup and other popular meetups in the EU.", + "company": "React GraphQL Academy", + "country": "UK", + "githubUrl": "https://github.com/alexlbr", + "id": "ck10teywmv6940b541heiz22b", + "idMain": "ck10teywmv6940b541heiz22b", + "info": Array [], + "mediumUrl": null, + "name": "Alex Lobera", + "ownSite": null, + "talks": Array [], + "twitterUrl": "https://twitter.com/alex_lobera", + "workshops": Array [ Object { - "alt": "FocusReactive", - "category": "Gold", - "img": "https://media.graphcms.com/4nC2yx5Tem996iOkkVFg", - "link": "https://focusreactive.com", - "width": null, + "slug": "from-zero-to-real-world-graph-ql-ap-is", + "title": "From Zero to Real-world GraphQL APIs", }, Object { - "alt": "Reaktor", - "category": "Gold", - "img": "https://media.graphcms.com/vCP0HfPuQYKBLKXH0f3Z", - "link": "https://www.reaktor.com/", - "width": null, + "slug": "modern-java-script-architectures-for-business-optimisation", + "title": "Modern JavaScript Architectures for Business Optimisation", }, ], - "mod": "logos_md", - "title": "Gold", + "workshopsActivity": Array [], }, - Object { - "list": Array [ - Object { - "alt": "wwcode-vancouver", - "category": "Partner", - "img": "https://media.graphcms.com/ZqdXyujWTbW87j3pNrPx", - "link": "https://www.womenwhocode.com/vancouver", - "width": 150, - }, - Object { - "alt": "Piter JS", - "category": "Partner", - "img": "https://media.graphcms.com/csIAGp4IQuGiKEeoVK3p", - "link": "https://piterjs.dev", - "width": 100, - }, - Object { - "alt": "seattlejs", - "category": "Partner", - "img": "https://media.graphcms.com/AJGaUGQ8Q6e2AoMm0XDB", - "link": "http://seattlejs.com/", - "width": 100, - }, - Object { - "alt": "FrontEndgineersLondon", - "category": "Partner", - "img": "https://media.graphcms.com/wM833hCvTBKj0ko1pTem", - "link": "https://www.meetup.com/Front-Endgineers-London/", - "width": 100, - }, - Object { - "alt": "react-sofia", - "category": "Partner", - "img": "https://media.graphcms.com/WB25K24IQHSJida7w4z8", - "link": "http://react-not-a-conf.com/", - "width": 100, - }, - Object { - "alt": "leedsjs", - "category": "Partner", - "img": "https://media.graphcms.com/s96i5NRXKpieSKr3f9nw", - "link": "https://leedsjs.com/", - "width": 100, - }, - Object { - "alt": "milanojs", - "category": "Partner", - "img": "https://media.graphcms.com/ay3eG9mETASoVTr57UUu", - "link": "https://milanojs.com", - "width": 100, - }, - Object { - "alt": "VueJS-Oslo", - "category": "Partner", - "img": "https://media.graphcms.com/aMnMNwrRDWve2sjtdeiI", - "link": "https://www.meetup.com/VueJS-Oslo/", - "width": 100, - }, - Object { - "alt": "MobileOslo", - "category": "Partner", - "img": "https://media.graphcms.com/twr9AMM9SGSIB3LGGUhA", - "link": "https://www.meetup.com/Mobile-Meetup-Oslo/", - "width": 100, - }, - Object { - "alt": "Oslo-Flutter-Dart-Meetup", - "category": "Partner", - "img": "https://media.graphcms.com/dwfDUbf4RLGYQJHcOfQC", - "link": "https://www.meetup.com/Oslo-Flutter-Dart-Meetup/", - "width": 100, - }, - Object { - "alt": "Framsia", - "category": "Partner", - "img": "https://media.graphcms.com/B0avSOhLTimtCCx4ZrQ1", - "link": "https://www.meetup.com/framsia/", - "width": 70, - }, - Object { - "alt": "AngularJS-Oslo", - "category": "Partner", - "img": "https://media.graphcms.com/KKxpZi5zQeeoI3649vKk", - "link": "https://www.meetup.com/AngularJS-Oslo/", - "width": 100, - }, - Object { - "alt": "SkopjeFrontEnd", - "category": "Partner", - "img": "https://media.graphcms.com/NakR6RFRSymJjvpvjcUt", - "link": "https://www.meetup.com/Skopje-Front-End-Meetup/", - "width": 100, - }, - Object { - "alt": "UtrechtJUG", - "category": "Partner", - "img": "https://media.graphcms.com/dyJ3m0rcRgWNXNYUnqdY", - "link": "https://www.meetup.com/Utrecht-Java-User-Group/", - "width": 100, - }, - Object { - "alt": "rsconf", - "category": "Partner", - "img": "https://media.graphcms.com/cQWzZoDsQqOuujSQHQ7b", - "link": "https://rsconf.by", - "width": 100, - }, - Object { - "alt": "Webstandards", - "category": "Partner", - "img": "https://media.graphcms.com/n5XbzuQGbGlem0q6Q5wW", - "link": "https://twitter.com/webstandards_ru", - "width": 100, - }, - Object { - "alt": "kcwomenintech", - "category": "Partner", - "img": "https://media.graphcms.com/tPDy3EA8TDuO0nnM5FEx", - "link": "https://kcwomenintech.org/", - "width": 40, - }, - Object { - "alt": "Dublin Node.js", - "category": "Partner", - "img": "https://media.graphcms.com/Ed7nv4qRaaXBV2Oouutg", - "link": "https://www.meetup.com/Dublin-Node-js-Meetup/", - "width": 40, - }, - Object { - "alt": "React GraphQL Academy", - "category": "Partner", - "img": "https://media.graphcms.com/9dC4KF0QXiklgK8u5aaf", - "link": "https://reactgraphql.academy/", - "width": 70, - }, - Object { - "alt": "Nodetlv", - "category": "Partner", - "img": "https://media.graphcms.com/4s9W6dOITVWZ9hjlR4P4", - "link": "https://www.nodetlv.com/", - "width": 120, - }, + "startingTime": null, + "status": "PUBLISHED", + "title": "From Zero to Real-world GraphQL APIs", + "toc": null, + "trainer": "Alex Lobera", + "trainers": Array [], + "trainersTitle": "Alex Lobera", + }, + Object { + "additionalInfo": null, + "code": "frontity-online-wsh", + "content": Array [], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-06-15T00:00:00.000Z", + "dateString": "June 15, for full-access tickets holders only", + "description": "In this practical hands-on workshop you will learn how to create a React-based theme for a WordPress site from scratch using Frontity.
+Why would you create a WordPress theme with React and what are the advantages of doing so? If you don't usually work with WordPress, or you're curious to see how you can use it within a React environment then join us for this workshop. Frontity and its unique approach will bring you a world of new possibilities to work with the most popular CMS.
+Frontity is an open-source framework built on React that makes it super-easy to connect to a WordPress site, consume it's data, and build attractive and performant front-end themes. You will learn everything that you need to know in order to find your way around and work confidently with Frontity. The goal is that you will leave this workshop with a new, fully-functional and fast React theme for a WordPress site that you can go on to build upon.
+", + "duration": null, + "finishingTime": "", + "id": "ckawn1cxm9ozv0a69p60dnw5b", + "includedToPackage": true, + "level": null, + "location": "June 15, 6:00pm till 7:30pm CEST.
+", + "order": 111, + "prerequisites": "To participate in this workshop you should have node.js installed locally and a WordPress site to work with (this can be hosted locally, on a hosting service, or a wordpress.com site).
+", + "schedule": null, + "slogan": null, + "slug": "build-a-react-based-theme-for-word-press-with-frontity", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/kjIq9OGYQmWC9jGPLKDc", + }, + "bio": "Michael has recently joined the Developer Relations team at Frontity. Prior to that he worked for many years as a freelance web developer gaining experience in WordPress, WooCommerce, PHP, and JavaScript. He is also a very active participant in the WordPress community and organised the first WordCamp (WordPress conference) in Bristol, UK and was on the organising teams for WordCamp Europe 2018, 2019, and 2020. He also organised the first do_action Day (WordPress based hackathon) to happen in Europe.", + "company": "Developer Relations @Frontity", + "country": "UK", + "githubUrl": "https://github.com/mburridge", + "id": "ckawn19lm9ong0915105ts6h3", + "idMain": "ckawn19lm9ong0915105ts6h3", + "info": Array [], + "mediumUrl": null, + "name": "Michael Burridge", + "ownSite": null, + "talks": Array [], + "twitterUrl": "https://twitter.com/michaelburridge", + "workshops": Array [ Object { - "alt": "ReactNext", - "category": "Partner", - "img": "https://media.graphcms.com/pV29a4DROuUNDTMJzu1Q", - "link": "http://react-next.com/", - "width": 100, + "slug": "build-a-react-based-theme-for-word-press-with-frontity", + "title": "Build a React-based Theme for WordPress with Frontity", }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Build a React-based Theme for WordPress with Frontity", + "toc": null, + "trainer": "Michael Burridge", + "trainers": Array [], + "trainersTitle": "Michael Burridge", + }, + Object { + "additionalInfo": "Learn more about the trainer, author of Styled Components on his website.
+", + "code": "modern-react", + "content": Array [ + "Quick intro to React Hooks", + "Using Suspense in production right now with React.lazy", + "Getting started with Concurrent React (previously “Async React”)", + ], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-06-16T00:00:00.000Z", + "dateString": "June 16-17", + "description": "After some years of silence, React team had recently landed a number of new additions to its library enabling application developers to optimize their code both for better performance and maintainability.
+Max will guide you through emerging patterns and show you by example how you can start applying the new best practices in your production apps.
+", + "duration": null, + "finishingTime": "", + "id": "ck122i0650avl0b54yfa8wb1a", + "level": "Intermediate/advanced JavaScript/React developers.", + "location": "June 16-17, 4:00pm till 8:00pm CEST.
+", + "order": 113, + "prerequisites": "To attend this workshop you need to be familiar with the basics of React, as well as most of the new features in ES2015.
+", + "schedule": null, + "slogan": "Bring + +your + +laptop!", + "slug": "modern-react", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/2jqu4t6TSlKDcqRFP6zT", + }, + "bio": "Max Stoiber is a Staff Software Engineer at Gatsby, inventing the future of web development. Previously he worked at GitHub, who acquired the startup he co-founded, Spectrum. He is well known for making styled-components, react-boilerplate, and a wide variety of other open source projects in the React ecosystem.", + "company": "Gatsby", + "country": "Austria", + "githubUrl": "https://github.com/mxstbr", + "id": "ck0zj6ytry8s20b71lgpuqves", + "idMain": "ck0zj6ytry8s20b71lgpuqves", + "info": Array [ Object { - "alt": "ReactWeek", - "category": "Partner", - "img": "https://media.graphcms.com/DYhwRSsHR1W1FEwdsF6a", - "link": "http://reactweek.nyc/", - "width": 70, + "id": "ck9fxszhpuc2j0b20z63eehjk", + "idAlt": "ck9fxszhpuc2j0b20z63eehjk", + "isNightSpeaker": false, + "label": "React", + "order": 50, + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/2jqu4t6TSlKDcqRFP6zT", + }, + "bio": "Max Stoiber is a Staff Software Engineer at Gatsby, inventing the future of web development. Previously he worked at GitHub, who acquired the startup he co-founded, Spectrum. He is well known for making styled-components, react-boilerplate, and a wide variety of other open source projects in the React ecosystem.", + "company": "Gatsby", + "country": "Austria", + "githubUrl": "https://github.com/mxstbr", + "id": "ck0zj6ytry8s20b71lgpuqves", + "idMain": "ck0zj6ytry8s20b71lgpuqves", + "mediumUrl": null, + "name": "Max Stoiber", + "ownSite": "https://mxstbr.com/", + "twitterUrl": "https://twitter.com/mxstbr", + }, + "status": "PUBLISHED", }, + ], + "mediumUrl": null, + "name": "Max Stoiber", + "ownSite": "https://mxstbr.com/", + "talks": Array [], + "twitterUrl": "https://twitter.com/mxstbr", + "workshops": Array [ Object { - "alt": "InfinumJSTalks", - "category": "Partner", - "img": "https://media.graphcms.com/Z55PEVXQS8CyZafNpi1F", - "link": "https://www.meetup.com/Infinum-JS-Talks/", - "width": 80, + "title": "Modern React", }, + ], + "workshopsActivity": Array [], + }, + "startingTime": "", + "status": "PUBLISHED", + "title": "Modern React", + "toc": null, + "trainer": "Max Stoiber", + "trainers": Array [], + "trainersTitle": "Max Stoiber", + }, + Object { + "additionalInfo": null, + "code": "ws-live-svelte", + "content": Array [ + "Introduction", + "Why Svelte?", + "Setup the app", + "Create first Components", + "Make App Modular with Routing", + "Connect to Real Data", + "Introduce State Management", + "Add Tests", + ], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-06-16T00:00:00.000Z", + "dateString": "June 16, for full-access tickets holders only", + "description": "Svelte is a new prominent JS framework exposing “write less do more” philosophy. During this workshop you will get proficiency as a Svelte developer. We will be building a real-time chat UI - participants will be able to follow along and exchange messages. Will start developing from simple front end components, later we'll connect it to a real backend and then test it and optimise for production. Attending a workshop is the fastest way to acquire a body of knowledge about building web apps with Svelte.
+", + "duration": null, + "finishingTime": "", + "id": "ckai0tws6pj6u0b20qjrg9bpv", + "includedToPackage": true, + "level": "Junior/medior level of frontend knowledge.", + "location": "June 16, 3:00pm till 6:00pm CEST. The workshop will be recorded.
+", + "order": 115, + "prerequisites": "Installed software – NPM, git, VSCode (or other IDE of choice).
+", + "schedule": null, + "slogan": null, + "slug": "build-full-featured-frontend-app-with-svelte", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/t9XoPJGQUmaXcSvoNSl4", + }, + "bio": "Mikhail is a developer with 10 years of expertise building web +applications. He used a variety of frameworks, throughout his career +starting with jQuery , AngularJS and Polymer; then he discovered VueJS and used it for several projects. Since 2019 he became a happy user of Svelte v3. +Besides fullstack development for enterprise companies Mikhail is doing open source projects and [speaks on meetups and conferences](https://github.com/shershen08/conf-talks) about various topics in modern web development. +Mikhail runs a local [Svelte meetup group in Amsterdam](https://www.meetup.com/Amsterdam-SvelteJS/).", + "company": "ING", + "country": "Netherlands", + "githubUrl": "https://github.com/shershen08", + "id": "ck5y2i5nshr4s0b6635ypswup", + "idMain": "ck5y2i5nshr4s0b6635ypswup", + "info": Array [], + "mediumUrl": null, + "name": "Mikhail Kuznetcov", + "ownSite": null, + "talks": Array [], + "twitterUrl": "https://twitter.com/legkoletat", + "workshops": Array [ Object { - "alt": "FullstackCluj", - "category": "Partner", - "img": "https://media.graphcms.com/uT5HJdE3Tn2FMoM1ODKY", - "link": "https://www.meetup.com/fullstack-cluj/", - "width": 120, + "slug": "build-full-featured-frontend-app-with-svelte", + "title": "Build Full Featured Frontend App with Svelte", }, + ], + "workshopsActivity": Array [], + }, + "startingTime": "", + "status": "PUBLISHED", + "title": "Build Full Featured Frontend App with Svelte", + "toc": "TypeScript is taking the web platform by storm, mainly because it is so syntactically similar to JavaScript, but comes with powerful scalability features that create more robust products. In this workshop, we will examine an existing JavaScript codebase, port it over to TypeScript, and refactor parts of it to see the value TypeScript can provide.
+", + "duration": "8", + "finishingTime": "", + "id": "ck124l3mdc7350b71bi23i5bu", + "level": null, + "location": "June 22-23, 4:00pm till 8:00pm CEST.
+", + "order": 115, + "prerequisites": "Familiarity with React, JavaScript and modern syntax features (ES2015).
+", + "schedule": null, + "slogan": "The + +next + +JavaScript", + "slug": "type-script", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/FQtqvdGOQsSrpZD1rU4X", + }, + "bio": "Tejas enjoys people, code, and talking about code to people. Having begun coding at age 8, today Tejas travels around the world, encouraging, educating and empowering developers in the web development community.", + "company": "Contiamo", + "country": "Germany", + "githubUrl": "https://github.com/TejasQ", + "id": "ck10tb7315akt0b71rbhubpkk", + "idMain": "ck10tb7315akt0b71rbhubpkk", + "info": Array [ Object { - "alt": "AmsNode", - "category": "Partner", - "img": "https://media.graphcms.com/0L3yoJJtQmqObSqXbQbw", - "link": "https://www.meetup.com/amsnode/", - "width": 100, + "id": "ckb6b1cp5dgh20b098gzij6ko", + "idAlt": "ckb6b1cp5dgh20b098gzij6ko", + "isNightSpeaker": false, + "label": "", + "order": 85, + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/FQtqvdGOQsSrpZD1rU4X", + }, + "bio": "Tejas enjoys people, code, and talking about code to people. Having begun coding at age 8, today Tejas travels around the world, encouraging, educating and empowering developers in the web development community.", + "company": "Contiamo", + "country": "Germany", + "githubUrl": "https://github.com/TejasQ", + "id": "ck10tb7315akt0b71rbhubpkk", + "idMain": "ck10tb7315akt0b71rbhubpkk", + "mediumUrl": null, + "name": "Tejas Kumar", + "ownSite": null, + "twitterUrl": "https://twitter.com/tejaskumar_", + }, + "status": "PUBLISHED", }, + ], + "mediumUrl": null, + "name": "Tejas Kumar", + "ownSite": null, + "talks": Array [], + "twitterUrl": "https://twitter.com/tejaskumar_", + "workshops": Array [ Object { - "alt": "Tproger", - "category": "Partner", - "img": "https://media.graphcms.com/4NezSgfrQdO2NTbE1SWu", - "link": "https://tproger.ru/", - "width": 100, + "title": "TypeScript", }, ], - "mod": "logos_xs", - "title": "Partner", - }, - ], - "talks": Array [ - Object { - "from": "Webpack, Germany", - "label": "Ecosystem", - "name": "TOBIAS KOPPERS", - "place": "Webpack, Germany", - "speaker": "TOBIAS KOPPERS", - "text": "Lorem Ipsum description about Webpack and so on and so on. Lorem dallsr ipsum suom.", - "time": "11:00", - "title": "Fake Title Webpack is awesome!", - "track": "General", - }, - Object { - "from": "NestJS | Trilon.io, Poland", - "label": "NestJS", - "name": "Kamil Mysliwiec", - "place": "NestJS | Trilon.io, Poland", - "speaker": "Kamil Mysliwiec", - "text": "Lorem riba Lorem riba. Dollor doorlrl. Ipsum.", - "time": "14:45", - "title": "Fake Title it just a template", - "track": "General", - }, - Object { - "from": "NearForm, Italy", - "label": "NodeJS", - "name": "Matteo Collina", - "place": "NearForm, Italy", - "speaker": "Matteo Collina", - "text": "lightning talk about something interesting", - "time": "14:45", - "title": "Fake Title it just a template", - "track": null, - }, - Object { - "from": "Three.js, Spain", - "label": "WebGL", - "name": "MR.DOOB", - "place": "Three.js, Spain", - "speaker": "MR.DOOB", - "text": null, - "time": "14:45", - "title": "Fake Title it just a template", - "track": "General", - }, - Object { - "from": "Microsoft, USA", - "label": "TypeScript", - "name": "Orta Therox", - "place": "Microsoft, USA", - "speaker": "Orta Therox", - "text": "There are stats coming out that in 2020 about 50% of all JavaScript projects using npm will be using TypeScript, how did this come to be and what systems are in place to keep the TypeScript team in Microsoft from trying to extinguish JavaScript?", - "time": null, - "title": "How TypeScript Embraces and Extends JavaScript", - "track": null, + "workshopsActivity": Array [], }, - ], - "tracks": Array [ - "General", - ], - "trainers": Array [ - Object { - "activities": Object {}, - "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/mbETdJvNTd2SHOKv6T76", - "bio": " + "startingTime": null, + "status": "PUBLISHED", + "title": "TypeScript", + "toc": "There are several things to consider when setting up a GraphQL endpoint:
+GraphQL has moved the many requests problem from the HTTP layer to the database layer. Instead of many REST calls, we only need to execute one GraphQL request. However, one GraphQL request often results in many database calls, which basically moves the performance problem to the database layer.
+FaunaDB is a distributed database that comes out-of-the-box with GraphQL and a flexible security layer. Import your schema, let FaunaDB generate the collections and indexes to support your schema, and you can benefit from a scalable, distributed GraphQL endpoint in 30 seconds. Due to the composable nature and graph-like querying features of the Fauna Query Language (FQL), FaunaDB can offer a GraphQL endpoint that compiles GraphQL queries to FQL one-on-one. No more n+1 problem, no cache needed, and since each GraphQL query translates to one query, you can also take advantage of FaunaDB's strong consistency and flexible security model.
", - "company": "Hydra, Zakovia", - "country": "Zakovia", - "githubUrl": null, - "id": "ck5y2joqjhrd70b66yuznh3mq", - "isNightSpeaker": null, - "label": null, + "duration": null, + "finishingTime": "", + "id": "ckawig7qz9i8e0a69y1r0s96a", + "includedToPackage": true, + "level": null, + "location": "June 16, 6:00pm till 9:00pm CEST. The workshop will be recorded.
+", + "order": 116, + "prerequisites": null, + "schedule": null, + "slogan": null, + "slug": "databases-made-easy-with-graph-ql-and-fauna-db", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/hae8ztJTRa0Zn5kzEBcg", + }, + "bio": "Brecht De Rooms is a senior developer advocate at Fauna. He is a programmer who has worked extensively in IT as a full-stack developer and researcher in both the startup and IT consultancy worlds. It is his mission to shed light on emerging and powerful technologies that make it easier for developers to build apps and services that will captivate users.", + "company": "Developer Advocate @Fauna", + "country": "Belgium", + "githubUrl": "https://github.com/fauna-brecht", + "id": "ckawidvvpgyhh0b270k3wgtis", + "idMain": "ckawidvvpgyhh0b270k3wgtis", + "info": Array [], "mediumUrl": null, - "name": "Vasilisa Pupkina", - "order": null, + "name": "Brecht De Rooms", "ownSite": null, - "socials": Array [], - "status": "DRAFT", - "twitterUrl": null, - }, - ], - "workshops": Array [ - Object { - "additionalInfo": null, - "code": "ws-svelte", - "content": Array [ - "Introduction & local setup", - "Why Svelte", + "talks": Array [], + "twitterUrl": "https://twitter.com/databrecht", + "workshops": Array [ + Object { + "slug": "databases-made-easy-with-graph-ql-and-fauna-db", + "title": "Databases Made Easy with GraphQL and FaunaDB", + }, ], - "date": "2020-06-04T00:00:00.000Z", - "dateString": "Thu Jun 04 2020", - "description": "Svelte is a new prominent JS framework exposing “write less do more” philosophy. During this workshop you will get proficiency as a Svelte developer. -We will be building an app that mimics the famous Q&A website stackoverflow.com. Will start developing from simple front end components, later we'll connect it to a real running backend and then test it and optimise for production. -Attending a workshop is the fastest way to acquire a body of knowledge about building web apps with Svelte. -content:
-In this workshop by Phil and Dylan you will learn how to build your own live streaming platform (think of products like: Twitch, Youtube Live, Facebook Live). No video experience is required, we'll use React for the frontend (intermediate or higher React experience is recommended) and Mux.com for the live streaming APIs. You will also learn the basics of video streaming technologies like HLS and RTMP.
+", + "duration": null, + "finishingTime": "", + "id": "ckb0iz1ivfwkj0915650u0ckp", + "includedToPackage": true, + "level": "Intermediate or higher React experience is recommended.", + "location": "June 17, 6:00pm till 9:00pm CEST. The workshop will be recorded.
+", + "order": 117, + "prerequisites": "Download OBS.
", - "duration": null, - "finishingTime": "", - "id": "ck5y1nxsshol10b66j4uo5g5a", - "level": "Intermediate", - "location": null, - "prerequisites": "Some Prerequisites should be there ", - "slogan": null, - "speaker": Object { - "info": Array [ + "schedule": null, + "slogan": null, + "slug": "build-your-own-live-streaming-platform", + "speaker": Object { + "info": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Build Your Own Live Streaming Platform", + "toc": null, + "trainer": "Dylan Jhaveri & Phil Cluff", + "trainers": Array [ + Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/kg6v1HvgSys35j7IzWRL", + }, + "bio": "Phil is a seasoned online video specialist, with experience building video products which power some of the biggest SVOD, AVOD and public service supported streaming platforms in the world. With 10 years experience, Phil has designed, built, and scaled software for the BBC, Brightcove, and most recently the San Francisco startup, Mux.", + "company": "Streaming Architect @Mux", + "country": "USA", + "githubUrl": "https://github.com/GeneticGenesis", + "id": "ck8uajht7dvq20b84oq8tm8jr", + "idMain": "ck8uajht7dvq20b84oq8tm8jr", + "mediumUrl": null, + "name": "Phil Cluff", + "ownSite": null, + "slug": "phil-cluff", + "talks": Array [], + "twitterUrl": "https://twitter.com/GeneticGenesis", + "workshops": Array [], + "workshopsActivity": Array [ Object { - "id": "ck5y2joqjhrd70b66yuznh3mq", - "isNightSpeaker": null, - "label": null, - "order": null, - "speaker": Object { - "avatar": Object { - "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/mbETdJvNTd2SHOKv6T76", - }, - "bio": null, - "company": "Hydra", - "country": "Zakovia", - "githubUrl": null, - "id": "ck60gduudqlr30b75qyumd2is", - "mediumUrl": null, - "name": "Vasilisa Pupkina", - "ownSite": null, - "twitterUrl": null, - }, - "status": "DRAFT", + "slug": "build-your-own-live-streaming-platform", + "title": "Build Your Own Live Streaming Platform", }, ], - "name": "Vasilisa Pupkina", - }, - "startingTime": null, - "status": "DRAFT", - "title": "TEST Build full featured frontend app with Svelte", - "toc": null, - "trainer": "Vasilisa Pupkina", - "trainers": Array [], - "trainersTitle": "Vasilisa Pupkina", - }, - Object { - "additionalInfo": null, - "code": "ws-test", - "content": Array [ - "Introduction & local setup", - "Why Svelte", - ], - "date": "2020-06-04T00:00:00.000Z", - "dateString": "Thu Jun 04 2020", - "description": "GraphQL in React applications is more popular than ever but modern clients are often seen as complex and confusing. In this full-day workshop we will be demystifying GraphQL clients and will start writing a basic one from scratch. After this workshop you will not only know how modern GraphQL clients work, but how and why they work the way they do – from sending GraphQL queries to caching their responses. Over the course of the day we will design and build a client whilst integrating it into an existing UI.
-This course is brought to you by the team behind urql, the lightweight and extensible GraphQL client.
-", - "duration": "6", - "finishingTime": "", - "id": "ck5zpbea0kfyw0b20qg0nh6qc", - "level": "Intermediate Javascript and React developer", - "location": " -", - "prerequisites": "Familiarity with GraphQL syntax and experience using a GraphQL client, eg, Apollo, Relay modern.", - "slogan": null, - "speaker": Object { - "info": Array [ + }, + Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/OqWk4KpJTdqaF0eEULnW", + }, + "bio": "Dylan is a Senior Software Engineer at Mux, a startup building online video infrastructure for developers. Dylan works on the DevEx team to help developers deliver smooth video to their users. Previously he co-founded Crowdcast, a live video streaming platform.", + "company": "Software Engineer @Mux", + "country": "USA", + "githubUrl": "https://github.com/dylanjha", + "id": "ck90bnyfltadk0b84kz6z8msa", + "idMain": "ck90bnyfltadk0b84kz6z8msa", + "mediumUrl": null, + "name": "Dylan Jhaveri", + "ownSite": null, + "slug": "dylan-jhaveri", + "talks": Array [], + "twitterUrl": "https://twitter.com/dylanjha", + "workshops": Array [], + "workshopsActivity": Array [ Object { - "id": "ck5y2joqjhrd70b66yuznh3mq", - "isNightSpeaker": null, - "label": null, - "order": null, - "speaker": Object { - "avatar": Object { - "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/mbETdJvNTd2SHOKv6T76", - }, - "bio": null, - "company": "Hydra", - "country": "Zakovia", - "githubUrl": null, - "id": "ck60gduudqlr30b75qyumd2is", - "mediumUrl": null, - "name": "Vasilisa Pupkina", - "ownSite": null, - "twitterUrl": null, - }, - "status": "DRAFT", + "slug": "build-your-own-live-streaming-platform", + "title": "Build Your Own Live Streaming Platform", }, ], - "name": "Vasilisa Pupkina", - }, - "startingTime": "9:00", - "status": "DRAFT", - "title": "Advanced GraphQL: Build Your Own GraphQL Client (Example Workshop description)", - "toc": "In this workshop you’ll build Postagram, a photo sharing application built with React and AWS Amplify. By the end of the workshop, you’ll understand how to build real-world and scalable full stack cloud applications with features like routing and deep linking, authentication, image storage, GraphQL APIs, and hosting.
", - "trainer": "Vasilisa Pupkina", - "trainers": Array [ + "duration": null, + "finishingTime": "", + "id": "ckac66ouqcryd0b203haomday", + "includedToPackage": true, + "level": null, + "location": "June 17, 6:00pm till 8:00pm CEST. The workshop will be recorded.
+", + "order": 118, + "prerequisites": "Installed Node.js version 10.x or later, valid and confirmed AWS account.
+", + "schedule": null, + "slogan": null, + "slug": "full-stack-cloud-development-for-front-end-developers", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/glrjtl9T5awAzyT0DZVd", + }, + "bio": "Nader has been developing with React Native for over 2.5 years. He has worked with and trained developers from fortune 500 companies like Amazon, Visa, American Express, and Microsoft, helping them to get up to speed with React Native as quickly as possible.", + "company": "Amazon AWS", + "country": "USA", + "githubUrl": "https://github.com/dabit3", + "id": "ck60gduudqlr30b75qyumd2is", + "idMain": "ck60gduudqlr30b75qyumd2is", + "info": Array [ Object { - "avatar": Object { - "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/G1EemJwgREea4f6ltNsi", + "id": "ck9y6atjrs2kr0b207hfoprfj", + "idAlt": "ck9y6atjrs2kr0b207hfoprfj", + "isNightSpeaker": false, + "label": "GraphQL", + "order": 60, + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/glrjtl9T5awAzyT0DZVd", + }, + "bio": "Nader has been developing with React Native for over 2.5 years. He has worked with and trained developers from fortune 500 companies like Amazon, Visa, American Express, and Microsoft, helping them to get up to speed with React Native as quickly as possible.", + "company": "Amazon AWS", + "country": "USA", + "githubUrl": "https://github.com/dabit3", + "id": "ck60gduudqlr30b75qyumd2is", + "idMain": "ck60gduudqlr30b75qyumd2is", + "mediumUrl": null, + "name": "Nader Dabit", + "ownSite": null, + "twitterUrl": "https://twitter.com/dabit3", }, - "bio": "Mikhail is a developer with 10 years of expertise building web -applications. He used a variety of frameworks, throughout his career -starting with jQuery , AngularJS and Polymer; then he discovered VueJS and used it for several projects. Since 2019 he became a happy user of Svelte v3. -Besides fullstack development for enterprise companies Mikhail is doing open source projects and speaks on meetups and conferences about various topics in modern web development. -Mikhail runs a local Svelte meetup group in Amsterdam.", - "company": null, - "country": "Netherlands", - "githubUrl": null, - "id": "ck5y2i5nshr4s0b6635ypswup", - "mediumUrl": null, - "name": "Mikhail Kuznetcov", - "ownSite": null, - "twitterUrl": null, + "status": "PUBLISHED", }, + ], + "mediumUrl": null, + "name": "Nader Dabit", + "ownSite": null, + "talks": Array [ Object { - "avatar": Object { - "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/mbETdJvNTd2SHOKv6T76", - }, - "bio": null, - "company": "Hydra", - "country": "Zakovia", - "githubUrl": null, - "id": "ck60gduudqlr30b75qyumd2is", - "mediumUrl": null, - "name": "Vasilisa Pupkina", - "ownSite": null, - "twitterUrl": null, + "description": "As front-end tooling and frameworks continue to evolve and improve at a pace that is often hard to keep up with, serverless abstractions continue to move closer and closer to the client, abstracting away back end services and making them more and more consumable by traditionally front end developers. + +In this talk I’ll show how we can use a combination of GraphQL SDL along with a new DSL (GraphQL Transform) created by the Amplify team to build out a full stack cloud application directly from your GraphQL schema. Using this GraphQL DSL, we’ll walk through how to model a Database, authorization rules, relationships, and custom access patterns. We’ll look at how to rapidly prototype an example application, and view some demos including a voting app capable of handling over 100,000 operations per second.", + "isLightning": null, + "timeString": "16:50", + "title": "Transforming GraphQL – Infrastructure as Code for Front End Developers", + "track": Object { + "isPrimary": true, + "name": "June 18", + }, + }, + ], + "twitterUrl": "https://twitter.com/dabit3", + "workshops": Array [ + Object { + "title": "Full Stack Cloud Development for Front End Developers", }, ], - "trainersTitle": "Mikhail Kuznetcov, Vasilisa Pupkina", + "workshopsActivity": Array [], }, - ], -} + "startingTime": null, + "status": "PUBLISHED", + "title": "Full Stack Cloud Development for Front End Developers", + "toc": null, + "trainer": "Nader Dabit", + "trainers": Array [], + "trainersTitle": "Nader Dabit", + }, + Object { + "additionalInfo": null, + "code": "wsh-live-lobera", + "content": Array [], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-06-18T00:00:00.000Z", + "dateString": "June 18, for full-access tickets holders only", + "description": "Many of the products and tools that support a business heavily rely on JavaScript. We live in uncertain times. Product teams are meant to build and/or customize products, company websites, CMSes, marketing tools, APIs, etc in a global environment that demands more speed and agility, with sometimes fewer resources. In this webinar, we'll be discussing different software, architectures, and processes to optimize the JavaScript of the organizations we work for.
+Topics:
+June 18, 11:00am till 1:00pm CEST.
+", + "order": 119, + "prerequisites": null, + "schedule": null, + "slogan": null, + "slug": "modern-java-script-architectures-for-business-optimisation", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/jx66c2DKQ3KhZSOiLxXS", + }, + "bio": "Founder at React GraphQL Academy and LeanJS. Developer and Coach passionate about JavaScript, React and GraphQL. Organizer of the JavaScript London Meetup and other popular meetups in the EU.", + "company": "React GraphQL Academy", + "country": "UK", + "githubUrl": "https://github.com/alexlbr", + "id": "ck10teywmv6940b541heiz22b", + "idMain": "ck10teywmv6940b541heiz22b", + "info": Array [], + "mediumUrl": null, + "name": "Alex Lobera", + "ownSite": null, + "talks": Array [], + "twitterUrl": "https://twitter.com/alex_lobera", + "workshops": Array [ + Object { + "title": "From Zero to Real-world GraphQL APIs", + }, + Object { + "title": "Modern JavaScript Architectures for Business Optimisation", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": "11:00", + "status": "PUBLISHED", + "title": "Modern JavaScript Architectures for Business Optimisation", + "toc": null, + "trainer": "Alex Lobera", + "trainers": Array [], + "trainersTitle": "Alex Lobera", + }, +] `; diff --git a/tests/__snapshots__/rs.test.js.snap b/tests/__snapshots__/rs.test.js.snap new file mode 100644 index 0000000..4902b11 --- /dev/null +++ b/tests/__snapshots__/rs.test.js.snap @@ -0,0 +1,8863 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`RS should prepare conference 1`] = ` +Object { + "city": "Online, 2 days", + "codeOfConductIntro": "All attendees, speakers, sponsors and volunteers at React Summit Conference and React Amsterdam Meetups are required to follow this Code of Conduct. Organisers will strictly enforce it throughout the events and community gatherings. We expect cooperation from all participants to help ensure a safe environment for everybody.
+In case you have identified a breach of our CoC, please approach our crew (organizers and volunteers in branded t-shirts) immediately or contact our CoC enforcement team - coc@gitnation.org, +44 7376 237 299.
+", + "codeOfConductMain": "Our conference is dedicated to providing a harassment-free conference experience for everyone, regardless of gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, ethnicity, religion (or lack thereof), or technology choices. We do not tolerate harassment of conference participants in any form. Sexual language and imagery is not appropriate for any conference venue, including talks, workshops, parties, Twitter and other online media. Conference participants violating these rules may be sanctioned or expelled from the conference without a refund at the discretion of the conference organisers.
+Harassment includes offensive verbal comments related to gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, ethnicity, religion, technology choices, sexual images in public spaces, deliberate intimidation, stalking, following, harassing photography or recording, sustained disruption of talks or other events, inappropriate physical contact, and unwelcome sexual attention.
+Participants asked to stop any harassing behavior are expected to comply immediately.
+Sponsors are also subject to the anti-harassment policy. In particular, sponsors should not use sexualised images, activities, or other material. Booth staff (including volunteers) should not use sexualised clothing/uniforms/costumes, or otherwise create a sexualised environment.
+If a participant engages in harassing behavior, the conference organisers may take any action they deem appropriate, including warning the offender or expulsion from the conference with no refund.
+If you are being harassed, notice that someone else is being harassed, or have any other concerns, please contact a member of conference staff immediately. Conference staff can be identified as they'll be wearing branded clothing and/or badges.
+Conference staff will be happy to help participants contact hotel/venue security or local law enforcement, provide escorts, or otherwise assist those experiencing harassment to feel safe for the duration of the conference. We value your attendance.
+We expect participants to follow these rules at conference and workshop venues and conference-related social events.
+Original source and credit: http://2012.jsconf.us/#/about & The Ada Initiative
+Please help by translating or improving: http://github.com/leftlogic/confcodeofconduct.com
+This work is licensed under a Creative Commons Attribution 3.0 Unported License
+", + "contentType": "2d89f139f3d042ab98d212062527eb82", + "facebookUrl": "https://www.facebook.com/reactamsterdam", + "id": "ck0zi93n8phx10b853erl9psf", + "mediumUrl": "https://medium.com/@ReactAmsterdam", + "slackUrl": "https://reactsummit.com/slack", + "status": "PUBLISHED", + "title": "React_Amsterdam", + "twitterUrl": "https://twitter.com/reactsummit", + "url": "https://reactsummit.com", + "youtubeUrl": "https://youtube.com/c/ReactConferences", +} +`; + +exports[`RS should prepare otherContent 1`] = `"cb0ee8da8b4ac2fa5689dde02eae50c2cbae8514"`; + +exports[`RS should prepare pages 1`] = ` +Array [ + Object { + "content": "d94c53bd40d0306cbb9d374211e738e1fe2061a3", + "description": "October 15-16, 2020", + "id": "ck13wjjma8piw0b49xozji0jy", + "pageCode": "main", + "seoDescription": "React Summit is two-day two-track conference of all things React, gathering Front-end developers across the globe in the cloud.", + "titlePage": "THE BIGGEST REACT CONFERENCE WORLDWIDE", + "titleSeo": "React Summit – The Biggest React Conference Worldwide", + }, + Object { + "content": "a56cb0520d2a056b63604d9796a63513ab631743", + "description": "October 15-16, 2020", + "id": "ck1821481qob90b49rwasqgcn", + "pageCode": "coc", + "seoDescription": "React Summit is a 2-day conference of all things React, gathering Front-end developers across the globe.", + "titlePage": "Code of Conduct", + "titleSeo": "Code of Conduct at React Summit", + }, + Object { + "content": "5a4d4507fde29c6beb02df703cd1f85751378c42", + "description": "You are a React developer and would love to work for a company supporting React community and getting technology stack serious?", + "id": "ck182onb491lg0b71gwe31knv", + "pageCode": "jobs", + "seoDescription": "React Summit is a full day two-track conference of all things React, gathering Front End developers across the globe in the tech heart of Europe.", + "titlePage": "Top React Jobs", + "titleSeo": "React Jobs from Most Notable React Community Supporters", + }, + Object { + "content": "5e567b65df275f6219684711fa969bf630d0c9a6", + "description": "React Summit is not just a big conference. It is a social and cultural environment designed to fit React crowd in the way engineers like with an extra addition to you regular conference experience.", + "id": "ck183tplbqvzb0b85upjvy1fe", + "pageCode": "workshops", + "seoDescription": "React Summit is a full day two-track conference of all things React, gathering Front-end developers across the globe in the tech heart of Europe.", + "titlePage": "LEARN FROM THE BEST TRAINERS IN THE CLOUD", + "titleSeo": "Workshops at React Summit ", + }, + Object { + "content": "16807dfe9f26906aba2c460c930ab6f6b1671a0e", + "description": "October 15-16, 2020", + "id": "ck3okkfzitf3q0b662wyy68k9", + "pageCode": "FAQ", + "seoDescription": "React Summit is a full day two-track conference of all things React, gathering Front-end developers across the globe in the tech heart of Europe.", + "titlePage": "FAQ", + "titleSeo": "FAQ", + }, + Object { + "content": "9bfddce65d0c8cc586e56a29f85aa59ec0af6436", + "description": "React Summit is not just a big conference. It is a social and cultural environment designed to fit React crowd in the way engineers like with an extra addition to you regular conference experience.", + "id": "cke0tievc0tfh0a85yn4bbhav", + "pageCode": "workshops_alt", + "seoDescription": "React Summit is a full day two-track conference of all things React, gathering Front-end developers across the globe in the tech heart of Europe.", + "titlePage": "LEARN FROM THE BEST TRAINERS IN THE CLOUD", + "titleSeo": "Workshops at React Summit ", + }, + Object { + "content": "8b11774031e188f5518b716163018bbd67156137", + "description": null, + "id": "ckf5mcb0sbctl0b77sent6ar5", + "pageCode": "perks", + "seoDescription": null, + "titlePage": "Special Offers from Sponsors", + "titleSeo": "Special Offers from Sponsors", + }, +] +`; + +exports[`RS should prepare schedule 1`] = ` +Array [ + Object { + "active": true, + "list": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-16T00:00:00.000Z", + "time": "16:00", + "title": "2nd day opening", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-15T00:00:00.000Z", + "time": "16:00", + "title": "Conference Opening", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "How do you level up? How do you jumpstart your learning when getting into something new? Nobody has more than 24 hours a day, so how do you maximize the impact of your limited time? + +In this keynote, I'm going to tell you a bit of my own story, and some tips and tricks that I've learned so you can be as productive as you can be at learning new things and solidifying that knowledge so it's there when you need it.", + "duration": "20", + "from": "Trainer, USA", + "id": "ck309px35ghpb0b32nj6cwpvn", + "isLightning": false, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": null, + "name": "Kent C. Dodds", + "overridden": true, + "pic": "8HarhhMS6OPV6qWV9VIY", + "place": "Trainer, USA", + "slug": "consume-build-teach", + "speaker": "Kent C. Dodds", + "speakerSlug": "kent-c-dodds", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "kent-c-dodds", + "text": "How do you level up? How do you jumpstart your learning when getting into something new? Nobody has more than 24 hours a day, so how do you maximize the impact of your limited time?
+In this keynote, I'm going to tell you a bit of my own story, and some tips and tricks that I've learned so you can be as productive as you can be at learning new things and solidifying that knowledge so it's there when you need it.
+", + "time": "16:15", + "title": "Consume ➡️ Build ➡️ Teach", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Blitz is a hyper productive framework for building fullstack React apps. You'll learn why I created Blitz, it's advantages and disadvantages, how it makes you so productive, and for what cases you should consider using Blitz.", + "duration": "20", + "from": "Blitz.js Creator, USA", + "id": "ckeo7rgd7vqox0a85z52mpvaq", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Summit Track", + "name": "Brandon Bayer ", + "overridden": true, + "pic": "cm8oOXYjTMymhx7O4nLD", + "place": "Blitz.js Creator, USA", + "slug": "blitz-js-the-fullstack-react-framework", + "speaker": "Brandon Bayer", + "speakerSlug": "brandon-bayer", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "brandon-bayer", + "text": "Blitz is a hyper productive framework for building fullstack React apps. You'll learn why I created Blitz, it's advantages and disadvantages, how it makes you so productive, and for what cases you should consider using Blitz.
+", + "time": "16:15", + "title": "Blitz.js - The Fullstack React Framework", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-16T00:00:00.000Z", + "qaLink": "", + "talkKey": "brandon-bayer", + "time": "16:35", + "title": "Q&A with MC and Brandon Bayer", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-15T00:00:00.000Z", + "qaLink": "", + "talkKey": "kent-c-dodds", + "time": "16:35", + "title": "Q&A with MC and Kent C. Dodds", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Service workers can give users a huge boost in performance and user experience. If you read the API docs about how to create one, it all sounds relatively straightforward. You register a file, do some work in the worker, you're done! In the real world though, there's a bit more to it. + +At Airbnb, we created a service worker system in React that lets us deliver service workers safely and efficiently, measuring the right things, and allowing experimentation and scope-sharing between different types of devices and parts of our site. + +Ranging from app shells to precaching to prefetching, I will share with you some of the lessons we have learned from running service worker A/B tests on the most visited page at Airbnb, and what we learned from it! + +No matter what size or stage of service worker adoption you are at, I will share ideas and lessons that will help you create a similar system for your project – one that ensures delivering service workers is fast, measurable, painless, and better for your users.", + "duration": "20", + "from": "Airbnb, USA", + "id": "ck6gaipzjm0qf0b205dpmtal5", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Summit Track", + "name": "Joshua Nelson", + "overridden": true, + "pic": "LGt48uPlSB6wuuRa8fIl", + "place": "Airbnb, USA", + "slug": "a-react-service-worker-framework", + "speaker": "Joshua Nelson", + "speakerSlug": "joshua-nelson", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "joshua-nelson", + "text": "Service workers can give users a huge boost in performance and user experience. If you read the API docs about how to create one, it all sounds relatively straightforward. You register a file, do some work in the worker, you're done! In the real world though, there's a bit more to it.
+At Airbnb, we created a service worker system in React that lets us deliver service workers safely and efficiently, measuring the right things, and allowing experimentation and scope-sharing between different types of devices and parts of our site.
+Ranging from app shells to precaching to prefetching, I will share with you some of the lessons we have learned from running service worker A/B tests on the most visited page at Airbnb, and what we learned from it!
+No matter what size or stage of service worker adoption you are at, I will share ideas and lessons that will help you create a similar system for your project – one that ensures delivering service workers is fast, measurable, painless, and better for your users.
+", + "time": "16:50", + "title": "A React Service Worker Framework", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "There are many ways to measure web performance, but the most important thing is to measure what actually matters to users. This talk is about how to measure, analyze and fix slow running JavaScript code using browser APIs.", + "duration": "20", + "from": "DAZN, UK", + "id": "ckfgrr1wfqv5s0b773s7kuwel", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Summit Track", + "name": "Richie McColl ", + "overridden": true, + "pic": "ZC6U2kRPWlKhXkwUFOgt", + "place": "DAZN, UK", + "slug": "visualising-front-end-performance-bottlenecks", + "speaker": "Richie McColl", + "speakerSlug": "richie-mc-coll", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "richie-mccoll", + "text": "There are many ways to measure web performance, but the most important thing is to measure what actually matters to users. This talk is about how to measure, analyze and fix slow running JavaScript code using browser APIs.
+", + "time": "16:50", + "title": "Visualising Front-End Performance Bottlenecks", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-16T00:00:00.000Z", + "qaLink": "", + "talkKey": "richie-mccoll", + "time": "17:10", + "title": "Q&A with MC and Richie McColl", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-15T00:00:00.000Z", + "qaLink": "", + "talkKey": "joshua-nelson", + "time": "17:10", + "title": "Q&A with MC and Joshua Nelson", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "20", + "isoDate": "2020-10-16T00:00:00.000Z", + "time": "17:25", + "title": "Panel Discussion on Testing: Tomasz Łakomy, Iris Schaffer, Kent C. Dodds, Sophie Au", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "25", + "isoDate": "2020-10-15T00:00:00.000Z", + "time": "17:25", + "title": "Panel discussion hosted by the Apollo team on GraphQL + React", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Are you a React Native developer? Have you always been longing for the rich ecosystem of developer tooling that exists for the web in e.g. Chrome and Firefox? +Flipper is Facebooks internal, extensible mobile devtool platform, used by the mobile devs that work on the Facebook, WhatsApp, Instagram and many more apps. + +Recently the React Native and Flipper team have been working hard to add first class support for React Native as well. This means that monitoring network traffic and performance, using the React Devtools, inspecting device and application logs or even debugging JavaScript can now can now be conveniently done using one coherent tool. + +And best of all: Flipper is extensible, so let's build our own plugin while at it!", + "duration": "20", + "from": "Facebook, UK", + "id": "ckdhbrlvndhu20916cyuaegrc", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Summit Track", + "name": "Michel Weststrate", + "overridden": true, + "pic": "QlY3D49T5iDadzDF7ZXw", + "place": "Facebook, UK", + "slug": "flipper-the-extensible-dev-tool-platform-for-react-native", + "speaker": "Michel Weststrate", + "speakerSlug": "michel-weststrate", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "michel-weststrate", + "text": "Are you a React Native developer? Have you always been longing for the rich ecosystem of developer tooling that exists for the web in e.g. Chrome and Firefox? +Flipper is Facebooks internal, extensible mobile devtool platform, used by the mobile devs that work on the Facebook, WhatsApp, Instagram and many more apps.
+Recently the React Native and Flipper team have been working hard to add first class support for React Native as well. This means that monitoring network traffic and performance, using the React Devtools, inspecting device and application logs or even debugging JavaScript can now can now be conveniently done using one coherent tool.
+And best of all: Flipper is extensible, so let's build our own plugin while at it!
+", + "time": "17:45", + "title": "Flipper: The Extensible DevTool Platform for React Native", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "The benefits of SVG are vast: style-able, accessible, animatable. And when it comes to SVG, the Path element is the building block of building blocks. During this presentation, we’ll take a deep dive into the language of the SVG path. Not only will we learn to read path data, but we'll also gain the ability to manipulate paths on the fly with the help of React - no Adobe Illustrator or help from a time-strapped designer necessary!", + "duration": "20", + "from": "Netguru, Poland", + "id": "ckfc8a3m4bggo0911uz7nfyml", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Summit Track", + "name": "Monica Wojciechowska", + "overridden": true, + "pic": "414z3IgTRNKvLZr9k0Pd", + "place": "Netguru, Poland", + "slug": "the-language-of-shapes-understanding-the-svg-path", + "speaker": "Monica Wojciechowska", + "speakerSlug": "monica-wojciechowska", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "monica-wojciechowska", + "text": "The benefits of SVG are vast: style-able, accessible, animatable. And when it comes to SVG, the Path element is the building block of building blocks. During this presentation, we’ll take a deep dive into the language of the SVG path. Not only will we learn to read path data, but we'll also gain the ability to manipulate paths on the fly with the help of React - no Adobe Illustrator or help from a time-strapped designer necessary!
+", + "time": "17:50", + "title": "The Language of Shapes: Understanding the SVG Path", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-16T00:00:00.000Z", + "qaLink": "", + "talkKey": "michel-weststrate", + "time": "18:05", + "title": "Q&A with MC and Michel Weststrate", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-15T00:00:00.000Z", + "qaLink": "", + "talkKey": "monica-wojciechowska", + "time": "18:10", + "title": "Q&A with MC and Monica Wojciechowska", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Accessibility in React has been a hot topic in the last few years, but in this talk, we'll be going beyond the basics. We'll discuss what disability means beyond what you've heard before, and then use code examples to learn why semantic HTML is helpful, and when it's just not enough. We'll then look into tooling, and talk about how you can introduce accessibility testing into your teams and existing code. You'll leave with the tools and knowledge to make a difference starting today.", + "duration": "20", + "from": "Gremlin, USA", + "id": "ck6i0aw6wsu4s0b20lvj6g32l", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Summit Track", + "name": "Jen Luker ", + "overridden": true, + "pic": "XUqQlycTXS46JG02Q2Fl", + "place": "Gremlin, USA", + "slug": "react-accessibility-beyond-the-basics", + "speaker": "Jen Luker", + "speakerSlug": "jen-luker", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "jen-luker", + "text": "Accessibility in React has been a hot topic in the last few years, but in this talk, we'll be going beyond the basics. We'll discuss what disability means beyond what you've heard before, and then use code examples to learn why semantic HTML is helpful, and when it's just not enough. We'll then look into tooling, and talk about how you can introduce accessibility testing into your teams and existing code. You'll leave with the tools and knowledge to make a difference starting today.
+", + "time": "18:20", + "title": "React Accessibility: Beyond the Basics", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "The main thread, on the web, has a lot of responsibilities. At the same time, web apps are getting more sophisticated every day. Therefore, the main thread gets too busy that will disappoint our user by showing janky frames! The off-main-thread architecture ensures apps run smoothly on every device for everyone. + +In this talk, we will go through the possibilities in browsers such as WebWorker, Worklet, and WebAssembly by introducing practical tools that allow us to boost our user experiences.", + "duration": "20", + "from": "Softiware AS, Norway", + "id": "ckesk381s4y4c0908vya8pj7h", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Summit Track", + "name": "Majid Hajian", + "overridden": true, + "pic": "0GjpUjR7TEKCCKh4mUEA", + "place": "Softiware AS, Norway", + "slug": "let-the-main-thread-breathe", + "speaker": "Majid Hajian", + "speakerSlug": "majid-hajian", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "majid-hajian", + "text": "The main thread, on the web, has a lot of responsibilities. At the same time, web apps are getting more sophisticated every day. Therefore, the main thread gets too busy that will disappoint our user by showing janky frames! The off-main-thread architecture ensures apps run smoothly on every device for everyone.
+In this talk, we will go through the possibilities in browsers such as WebWorker, Worklet, and WebAssembly by introducing practical tools that allow us to boost our user experiences.
+", + "time": "18:25", + "title": "Let the Main Thread Breathe!", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-16T00:00:00.000Z", + "qaLink": "", + "talkKey": "jen-luker", + "time": "18:40", + "title": "Q&A with MC and Jen Luker", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-15T00:00:00.000Z", + "qaLink": "", + "talkKey": "majid-hajian", + "time": "18:45", + "title": "Q&A with MC and Majid Hajian", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-16T00:00:00.000Z", + "time": "18:55", + "title": "Break", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-15T00:00:00.000Z", + "time": "19:00", + "title": "Break", + "track": "Summit Track", + }, + Object { + "bgColor": "#00deff", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "30", + "isLightning": true, + "isoDate": "2020-10-16T00:00:00.000Z", + "lightningTalks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "There are many CSS-in-JS libraries for us to choose from. Imagine being able to take your favorite parts of those libraries and using them in one. Learn about the power of Theme UI.", + "from": "G2i, USA", + "id": "ck62260ijuys10b7534e5lqik", + "isLightning": true, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Lightning Talk", + "name": "Pariss Athena", + "place": "G2i, USA", + "slug": "theming-gatsby-apps-with-theme-ui", + "speaker": "Pariss Athena", + "speakerSlug": "pariss-athena", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "There are many CSS-in-JS libraries for us to choose from. Imagine being able to take your favorite parts of those libraries and using them in one. Learn about the power of Theme UI.
+", + "time": "19:10", + "title": "Theming Gatsby Apps with Theme UI", + "track": "Summit Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "A comparative analysis between four methods of styling React components from inline styling to Styled-Components. This talk is best suited to beginner developers.", + "from": "Telesoftas, Nigeria/Lithuania", + "id": "ckeo7wbxqvqvg0a856kxs3007", + "isLightning": true, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Lightning Talk", + "name": "Jemima Abu", + "place": "Telesoftas, Nigeria/Lithuania", + "slug": "react-components-and-how-to-style-them", + "speaker": "Jemima Abu", + "speakerSlug": "jemima-abu", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "A comparative analysis between four methods of styling React components from inline styling to Styled-Components. This talk is best suited to beginner developers.
+", + "time": "19:10", + "title": "React Components and How To Style Them ", + "track": "Summit Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Markdown is great for content-driven sites. MDX is even better, letting you embed interactive components directly from your markup. It's usually used for the same linear layouts you often see on many blogs, readmes, and documentation sites. But it doesn't need to be like this. + +In this talk, we'll see how to reshape MDX so we can use it for very different layouts, things like scrollytelling, slide decks, and more.", + "from": "Making open source dev tools, Argentina", + "id": "ckeyby030iq9e0908pmj2k5ie", + "isLightning": true, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Lightning Talk", + "name": "Rodrigo Pombo", + "place": "Making open source dev tools, Argentina", + "slug": "the-x-in-mdx", + "speaker": "Rodrigo Pombo", + "speakerSlug": "rodrigo-pombo", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Markdown is great for content-driven sites. MDX is even better, letting you embed interactive components directly from your markup. It's usually used for the same linear layouts you often see on many blogs, readmes, and documentation sites. But it doesn't need to be like this.
+In this talk, we'll see how to reshape MDX so we can use it for very different layouts, things like scrollytelling, slide decks, and more.
+", + "time": "19:10", + "title": "The X in MDX", + "track": "Summit Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "In this talk I’m going to convince you that paid UI components will solve all your problems, and that you should immediately give me all of your money. Maybe. Or perhaps I’ll draw on my experience working both on free and open source tools (jQuery, jQuery UI, NativeScript), as well as paid tools (Kendo UI, KendoReact), and discuss which type of tool makes sense depending on your team and needs. In any case the talk will go fast because lightning is in the title.", + "from": "Progress, US", + "id": "ckf3q32lgdaci097014lc3b0g", + "isLightning": true, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Lightning Talk", + "name": "TJ VanToll", + "place": "Progress, US", + "slug": "why-paid-ui-components-aren-t-evil", + "speaker": "TJ VanToll", + "speakerSlug": "tj-van-toll", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "In this talk I’m going to convince you that paid UI components will solve all your problems, and that you should immediately give me all of your money. Maybe. Or perhaps I’ll draw on my experience working both on free and open source tools (jQuery, jQuery UI, NativeScript), as well as paid tools (Kendo UI, KendoReact), and discuss which type of tool makes sense depending on your team and needs. In any case the talk will go fast because lightning is in the title.
+", + "time": "19:10", + "title": "Why Paid UI Components Aren’t Evil", + "track": "Summit Track", + }, + ], + "overridden": true, + "time": "19:10", + "title": "Lightning talks", + "track": "Summit Track", + }, + Object { + "bgColor": "#00deff", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "30", + "isLightning": true, + "isoDate": "2020-10-15T00:00:00.000Z", + "lightningTalks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Google announced that they will fully switch over to crawling and indexing sites using mobile-first indexing by March 2021. Now for some companies their mobile site is dynamically rendered which has a high risk of decreased ranking on google once mobile-first indexing is fully implemented. + +This presentation will share how to assess what changes needs to be made, best practices to increase SEO for Mobile First Indexing, how to increase performance, and how to turn parts of your site from dynamic rendering to mobile responsive in less than two months. ", + "from": "Teachers Pay Teachers, USA", + "id": "ckeo7u0jnvmch09165jlbhu22", + "isLightning": true, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Lightning Talk", + "name": "Ruth Mesfun", + "place": "Teachers Pay Teachers, USA", + "slug": "improve-your-seo", + "speaker": "Ruth Mesfun", + "speakerSlug": "ruth-mesfun", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Google announced that they will fully switch over to crawling and indexing sites using mobile-first indexing by March 2021. Now for some companies their mobile site is dynamically rendered which has a high risk of decreased ranking on google once mobile-first indexing is fully implemented.
+This presentation will share how to assess what changes needs to be made, best practices to increase SEO for Mobile First Indexing, how to increase performance, and how to turn parts of your site from dynamic rendering to mobile responsive in less than two months.
+", + "time": "19:15", + "title": "Improve Your SEO ", + "track": "Summit Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Nx is a next generation suite of build tools. +Next.js is state-of-the-art framework for building web applications. +Together they bring order to the chaos of building multiple web applications across many teams. + +This talk is a quick rundown of how Nx can help you maintain multiple Next.js apps, with multiple teams, while sharing components and libraries for consistent user experience.", + "from": "NRWL, Canada", + "id": "ckf3q9ckr8nxe0b770nj4cd6y", + "isLightning": true, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Lightning Talk", + "name": "Adam L Barrett", + "place": "NRWL, Canada", + "slug": "nx-next-js", + "speaker": "Adam L Barrett", + "speakerSlug": "adam-l-barrett", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Nx is a next generation suite of build tools. +Next.js is state-of-the-art framework for building web applications. +Together they bring order to the chaos of building multiple web applications across many teams.
+This talk is a quick rundown of how Nx can help you maintain multiple Next.js apps, with multiple teams, while sharing components and libraries for consistent user experience.
+", + "time": "19:15", + "title": "Nx + Next.js = ❤", + "track": "Summit Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "As a full-stack engineer with a bias towards the database...and a career spent working with and evangelizing database and distributed systems...why GraphQL? In this talk, I will share some of my personal journey with React, GraphQL, their respective communities, and my point-of-view on the future.", + "from": "Hasura, USA", + "id": "ckfwf4q7ik19w0b774j7iztn3", + "isLightning": true, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Lightning Talk", + "name": "Adron Hall", + "place": "Hasura, USA", + "slug": "graph-ql-and-react-two-great-tastes-that-taste-great-together", + "speaker": "Adron Hall", + "speakerSlug": "adron-hall", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "As a full-stack engineer with a bias towards the database...and a career spent working with and evangelizing database and distributed systems...why GraphQL? In this talk, I will share some of my personal journey with React, GraphQL, their respective communities, and my point-of-view on the future.
+", + "time": "19:15", + "title": "GraphQL and React - Two Great Tastes that Taste Great Together", + "track": "Summit Track", + }, + ], + "overridden": true, + "time": "19:15", + "title": "Lightning talks", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-16T00:00:00.000Z", + "time": "19:40", + "title": "Q&A with LT speakers", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-15T00:00:00.000Z", + "qaLink": "", + "time": "19:45", + "title": "Q&A with LT speakers", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "So you built a component library. Congrats! I am sure it is awesome but did you put the same effort into its documentation? Component libraries tend to have giant APIs, dozens of components, hundreds of props and thousands of permutations. That is a lot of information to unpack. + +We could make the documentation very long or... super interactive. We combined component previews, API documentation, props editing and code editing into a single seamless experience. You can quickly explore various settings of each component while watching the code write itself. + +This talk will show you how to leverage common tools and concepts such as Prettier, babel and AST transformations to build the documentation that can literally work for you.", + "duration": "20", + "from": "Uber, USA", + "id": "ck6gac6ihm0bz0b20nzkb6rny", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Summit Track", + "name": "Vojtech Miksu", + "overridden": true, + "pic": "swKO8AorR8LCFDc4kbgW", + "place": "Uber, USA", + "slug": "introducing-react-view-a-set-of-tools-that-closes-the-gap-between-users-developers-and-designers-of-component-libraries", + "speaker": "Vojtech Miksu", + "speakerSlug": "vojtech-miksu", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "vojtech-miksuu", + "text": "So you built a component library. Congrats! I am sure it is awesome but did you put the same effort into its documentation? Component libraries tend to have giant APIs, dozens of components, hundreds of props and thousands of permutations. That is a lot of information to unpack.
+We could make the documentation very long or... super interactive. We combined component previews, API documentation, props editing and code editing into a single seamless experience. You can quickly explore various settings of each component while watching the code write itself.
+This talk will show you how to leverage common tools and concepts such as Prettier, babel and AST transformations to build the documentation that can literally work for you.
+", + "time": "19:55", + "title": "Introducing React View: A Set of Tools that Closes the Gap between Users, Developers and Designers of Component Libraries", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "30", + "isoDate": "2020-10-15T00:00:00.000Z", + "time": "20:00", + "title": "OS Awards with Max Stoiber & Stefan Fejes", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-16T00:00:00.000Z", + "qaLink": "", + "talkKey": "vojtech-miksu", + "time": "20:15", + "title": "Q&A with MC and Vojtech Miksu", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Every bug is different: Some are lurking around for months, others appear suddenly after the upgrade of a dependency. Some are introduced by us, others by other teams or systems. Some are painfully obvious and affect all users, others only occur in edge (cases). And the ways of finding, and eventually, preventing them, are just as diverse: be it snapshot, unit, integration, end to end tests or automated visual tests, every kind comes with its challenges and opportunities. Testing UIs is hard, but in the end, only test automation can give us the confidence we need to move fast and refactor our code relentlessly. In this talk we are going to look at what kinds of bugs there are, which tests are most effective for catching which, and how we can implement them using modern front end technologies.", + "duration": "20", + "from": "Spotify, Sweden", + "id": "ckfgrakw38agk09705x3exfe9", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Summit Track", + "name": "Iris Schaffer", + "overridden": true, + "pic": "nvoAnC1fQYqRqOuVk9i0", + "place": "Spotify, Sweden", + "slug": "fantastic-bugs-and-where-to-find-them", + "speaker": "Iris Schaffer", + "speakerSlug": "iris-schaffer", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "iris-schaffer", + "text": "Every bug is different: Some are lurking around for months, others appear suddenly after the upgrade of a dependency. Some are introduced by us, others by other teams or systems. Some are painfully obvious and affect all users, others only occur in edge (cases). And the ways of finding, and eventually, preventing them, are just as diverse: be it snapshot, unit, integration, end to end tests or automated visual tests, every kind comes with its challenges and opportunities. Testing UIs is hard, but in the end, only test automation can give us the confidence we need to move fast and refactor our code relentlessly. In this talk we are going to look at what kinds of bugs there are, which tests are most effective for catching which, and how we can implement them using modern front end technologies.
+", + "time": "20:30", + "title": "Fantastic Bugs and Where to Find Them", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "TypeScript is a JavaScript superset that compiles down to vanilla JavaScript and has become increasingly popular. TypeScript proponents proclaim that it eliminates entire classes of bugs that affect our applications. But what exactly are those bugs? Which ones are particular to building React components and applications? Is TypeScript worth the learning curve? + +In this session geared towards devs with prior experience building React applications, let’s answer those questions. We’ll walk through the common bugs that infect our apps and learn how the use of strong types with TypeScript can help prevent them. After the session, you’ll be itching to try it out in your next project!", + "duration": "20", + "from": "Stitch Fix, USA", + "id": "ckeska2ew0gcg0a85rds6g1i2", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Summit Track", + "name": "Ben Ilegbodu", + "overridden": true, + "pic": "vy4IpVYBSnijF65EiDkB", + "place": "Stitch Fix, USA", + "slug": "type-script-react", + "speaker": "Ben Ilegbodu", + "speakerSlug": "ben-ilegbodu", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "ben-ilegbodu", + "text": "TypeScript is a JavaScript superset that compiles down to vanilla JavaScript and has become increasingly popular. TypeScript proponents proclaim that it eliminates entire classes of bugs that affect our applications. But what exactly are those bugs? Which ones are particular to building React components and applications? Is TypeScript worth the learning curve?
+In this session geared towards devs with prior experience building React applications, let’s answer those questions. We’ll walk through the common bugs that infect our apps and learn how the use of strong types with TypeScript can help prevent them. After the session, you’ll be itching to try it out in your next project!
+", + "time": "20:30", + "title": "TypeScript + React = ❤️", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-15T00:00:00.000Z", + "qaLink": "", + "talkKey": "ben-ilegbodu", + "time": "20:50", + "title": "Q&A with MC and Ben Ilegbodu", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-16T00:00:00.000Z", + "qaLink": "", + "talkKey": "iris-schaffer", + "time": "20:50", + "title": "Q&A with MC and Iris Schaffer", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "10", + "isoDate": "2020-10-15T00:00:00.000Z", + "time": "21:05", + "title": "1st day closing", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "10", + "isoDate": "2020-10-16T00:00:00.000Z", + "time": "21:05", + "title": "Conference Closing", + "track": "Summit Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "90", + "isoDate": "2020-10-15T00:00:00.000Z", + "noTimeCheck": true, + "speakerRoomLink": "#zoom-bars", + "time": "21:15", + "title": "Afterparty", + "track": "Summit Track", + }, + ], + "name": "10", + "tab": "Summit Track", + "title": "Summit Track", + }, + Object { + "list": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-16T00:00:00.000Z", + "time": "16:00", + "title": "2nd day opening", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-15T00:00:00.000Z", + "time": "16:00", + "title": "Conference Opening", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "20", + "isoDate": "2020-10-16T00:00:00.000Z", + "pic": "cm8oOXYjTMymhx7O4nLD", + "speaker": "Brandon Bayer", + "talkKey": "brandon-bayer", + "time": "16:15", + "title": "Blitz.js - The Fullstack React Framework", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "20", + "isoDate": "2020-10-15T00:00:00.000Z", + "pic": "8HarhhMS6OPV6qWV9VIY", + "speaker": "Kent C. Dodds", + "talkKey": "kent-c-dodds", + "time": "16:15", + "title": "Consume ➡️ Build ➡️ Teach", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-16T00:00:00.000Z", + "qaLink": "", + "time": "16:35", + "title": "Q&A with MC and Brandon Bayer", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-15T00:00:00.000Z", + "qaLink": "", + "talkKey": "kent-c-dodds", + "time": "16:35", + "title": "Q&A with MC and Kent C. Dodds", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Virtual Reality gives us an ability to experience virtual worlds from the comfort of our homes. But it doesn't have to be experienced alone. In this talk we will see how we can use React, WebVR and GraphQL to create social VR experience in the browser.", + "duration": "20", + "from": "EventLoop, Israel", + "id": "ckdh98rr2degx0916bgg3gjma", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": null, + "name": "Vladimir Novick", + "overridden": true, + "pic": "4QZV07aFSq6KDPQOeOpm", + "place": "EventLoop, Israel", + "slug": "create-collaborative-vr-environment-in-the-browser-with-react-and-graph-ql", + "speaker": "Vladimir Novick", + "speakerSlug": "vladimir-novick", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "vladimir-novick", + "text": "Virtual Reality gives us an ability to experience virtual worlds from the comfort of our homes. But it doesn't have to be experienced alone. In this talk we will see how we can use React, WebVR and GraphQL to create social VR experience in the browser.
+", + "time": "16:50", + "title": "Create Collaborative VR Environment in the Browser with React and GraphQL", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "We have been using hooks for a while and with that we have also been using \`useEffect\` in particular and in this today I wanna take a look at the trickier parts of \`useEffect\` and why they work that way so you can leave with a super understanding of how this magic all works", + "duration": "20", + "from": "CodeSandbox, Germany", + "id": "ck5fqg94cmo280b20hq25ybin", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Sara Vieira", + "overridden": true, + "pic": "RcjDp3FuRHujJyQFbi2w", + "place": "CodeSandbox, Germany", + "slug": "the-psycological-effects-of-use-effect", + "speaker": "Sara Vieira", + "speakerSlug": "sara-vieira", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "sara-vieira", + "text": "We have been using hooks for a while and with that we have also been using useEffect
in particular and in this today I wanna take a look at the trickier parts of useEffect
and why they work that way so you can leave with a super understanding of how this magic all works
All too often A11Y is only an afterthought and will be added to a project \\"when we have time\\" i.e. never. But there are a many reasons why you should develop with a11y in mind from the start including some that will convince The Higher-Ups. We'll explore tools we can use to help us develop more accessibly and talk about some of the quirks and limitations that React Native has.
+", + "time": "17:45", + "title": "Accessibility as a First Class Citizen", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "CDK (Cloud development kit) enables developers to build cloud infrastructure using popular programming languages like Python, Typescript, or JavaScript. CDK is a next-level abstraction in infrastructure as code, allowing developers who were traditionally unfamiliar with cloud computing to build scalable APIs and web services using their existing skillset, and do so in only a few lines of code. + +In this talk, you’ll learn how to use the TypeScript flavor of CDK to build a hyper-scalable real-time API with GraphQL, Lambda, DynamoDB, and AWS AppSync . At the end of the talk, I’ll live code an API from scratch in just a couple of minutes and then test out queries, mutations, and subscriptions. + +By the end of the talk, you should have a good understanding of GraphQL, AppSync, and CDK and be ready to build an API in your next project using TypeScript and CDK.", + "duration": "20", + "from": "Amazon AWS, USA", + "id": "ckfqsy5590p9a0970r3erohrh", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "GraphQL", + "name": "Nader Dabit", + "overridden": true, + "pic": "4NF4AeaJS9uxty64CCCX", + "place": "Amazon AWS, USA", + "slug": "building-real-time-serverless-graph-ql-ap-is-on-aws-with-type-script-and-cdk", + "speaker": "Nader Dabit", + "speakerSlug": "nader-dabit", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "nader-dabit", + "text": "CDK (Cloud development kit) enables developers to build cloud infrastructure using popular programming languages like Python, Typescript, or JavaScript. CDK is a next-level abstraction in infrastructure as code, allowing developers who were traditionally unfamiliar with cloud computing to build scalable APIs and web services using their existing skillset, and do so in only a few lines of code.
+In this talk, you’ll learn how to use the TypeScript flavor of CDK to build a hyper-scalable real-time API with GraphQL, Lambda, DynamoDB, and AWS AppSync . At the end of the talk, I’ll live code an API from scratch in just a couple of minutes and then test out queries, mutations, and subscriptions.
+By the end of the talk, you should have a good understanding of GraphQL, AppSync, and CDK and be ready to build an API in your next project using TypeScript and CDK.
+", + "time": "17:50", + "title": "Building Real-time Serverless GraphQL APIs on AWS with TypeScript and CDK", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-16T00:00:00.000Z", + "qaLink": "", + "talkKey": "sophie-au", + "time": "18:05", + "title": "Q&A with MC and Sophie Au", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-15T00:00:00.000Z", + "qaLink": "", + "talkKey": "nader-dabit", + "time": "18:10", + "title": "Q&A with MC and Nader Dabit", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Is your complex documentation setup a maintenance nightmare and chasing away potential contributors? In this talk, you will learn how to make your React component library documentation more user and contributor-friendly with Gatsby and MDX. Pair this with accessibility best practices, and your documentation will be inclusively smooth. + +", + "duration": "20", + "from": "Design Tokens, USA", + "id": "ckfi8kpiqm3h60911592a6a6e", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Kathleen McMahon", + "overridden": true, + "pic": "rAUtJLvHT9iH6W1MTX5I", + "place": "Design Tokens, USA", + "qaLink": "", + "slug": "smoothly-inclusive-component-library-documentation", + "speaker": "Kathleen McMahon", + "speakerSlug": "kathleen-mc-mahon", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "kathleen-mcmahon", + "text": "Is your complex documentation setup a maintenance nightmare and chasing away potential contributors? In this talk, you will learn how to make your React component library documentation more user and contributor-friendly with Gatsby and MDX. Pair this with accessibility best practices, and your documentation will be inclusively smooth.
+", + "time": "18:20", + "title": "Smoothly Inclusive Component Library Documentation", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "As you add more components to your React application, you'll start to notice performance issues. Maybe data isn't loading as fast or you notice that things are happening out of order. There are tools and techniques you can use to handle these kind of issue at a large scale. In this talk, attendees will learn how to analyze their React apps for solvable issues and learn some state management and async handling techniques.", + "duration": "20", + "from": "Conducto, USA", + "id": "ckfmjhmjinntt0970n9vb4fx9", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Milecia McGregor", + "overridden": true, + "pic": "zKO9aPmeRNJnjg2Gs9aw", + "place": "Conducto, USA", + "slug": "making-your-react-apps-perform-at-scale", + "speaker": "Milecia McGregor", + "speakerSlug": "milecia-mc-gregor", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "milecia-mcgregor", + "text": "As you add more components to your React application, you'll start to notice performance issues. Maybe data isn't loading as fast or you notice that things are happening out of order. There are tools and techniques you can use to handle these kind of issue at a large scale. In this talk, attendees will learn how to analyze their React apps for solvable issues and learn some state management and async handling techniques.
+", + "time": "18:25", + "title": "Making Your React Apps Perform At Scale", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-16T00:00:00.000Z", + "qaLink": "", + "talkKey": "kathleen-mcmahon", + "time": "18:40", + "title": "Q&A with MC and Kathleen McMahon", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-15T00:00:00.000Z", + "qaLink": "", + "talkKey": "milecia-mcgregor", + "time": "18:45", + "title": "Q&A with MC and Milecia McGregor", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-16T00:00:00.000Z", + "time": "18:55", + "title": "Break", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-15T00:00:00.000Z", + "time": "19:00", + "title": "Break", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#00deff", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "30", + "isoDate": "2020-10-16T00:00:00.000Z", + "lightningTalks": Array [ + Object { + "name": "Pariss Athena", + "text": "There are many CSS-in-JS libraries for us to choose from. Imagine being able to take your favorite parts of those libraries and using them in one. Learn about the power of Theme UI.
", + "title": "Theming Gatsby Apps with Theme UI", + }, + Object { + "name": "TJ VanToll", + "text": "In this talk I’m going to convince you that paid UI components will solve all your problems, and that you should immediately give me all of your money. Maybe. Or perhaps I’ll draw on my experience working both on free and open source tools (jQuery, jQuery UI, NativeScript), as well as paid tools (Kendo UI, KendoReact), and discuss which type of tool makes sense depending on your team and needs. In any case the talk will go fast because lightning is in the title.
", + "title": "Why Paid UI Components Aren’t Evil", + }, + Object { + "name": "Rodrigo Pombo", + "text": "Markdown is great for content driven sites. MDX is even better, letting you embed interactive components directly from your markup. It's usually used for the same linear layouts you often see on many blogs, readmes, and documentation sites. But it doesn't need to be like this. In this talk, we'll see how to reshape MDX so we can use it for very different layouts, things like scrollytelling, slide decks, and more.
", + "title": "The X in MDX", + }, + Object { + "name": "Jemima Abu", + "text": "A comparative analysis between four methods of styling React components from inline styling to Styled-Components. This talk is best suited to beginner developers.
", + "title": "React Components and How To Style Them", + }, + ], + "time": "19:10", + "title": "Lightning talks", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#00deff", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "30", + "isoDate": "2020-10-15T00:00:00.000Z", + "lightningTalks": Array [ + Object { + "name": "Ruth Mesfun", + "text": "Google announced that they will fully switch over to crawling and indexing sites using mobile-first indexing by March 2021. Now for some companies their mobile site is dynamically rendered which has a high risk of decreased ranking on google once mobile-first indexing is fully implemented. This presentation will share how to assess what changes needs to be made, best practices to increase SEO for Mobile First Indexing, how to increase performance, and how to turn parts of your site from dynamic rendering to mobile responsive in less than two months.
", + "title": "Improve Your SEO", + }, + Object { + "name": "Adam L Barrett", + "text": "Nx is a next generation suite of build tools. Next.js is state-of-the-art framework for building web applications. Together they bring order to the chaos of building multiple web applications across many teams.This talk is a quick rundown of how Nx can help you maintain multiple Next.js apps, with multiple teams, while sharing components and libraries for consistent user experience.
", + "title": "Nx + Next.js = ❤", + }, + Object { + "name": "Adron Hall", + "text": "
As a full-stack engineer with a bias towards the database...and a career spent working with and evangelizing database and distributed systems...why GraphQL? In this talk, I will share some of my personal journey with React, GraphQL, their respective communities, and my point-of-view on the future.
", + "title": "GraphQL and React - Two Great Tastes that Taste Great Together", + }, + ], + "time": "19:15", + "title": "Lightning talks", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-16T00:00:00.000Z", + "qaLink": "", + "time": "19:40", + "title": "Q&A with MC & LT speakers", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-15T00:00:00.000Z", + "qaLink": "", + "time": "19:45", + "title": "Q&A with LT speakers", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Do you know that the first novel ever written dates back in 1021. Its author is the Japan noblewoman Murasaki Shikibu. Till then countless of writers put their thoughts on paper and countless of readers experience their stories. People write for decades and we, as software developers, kind of ignore their craft. We write too. Not novels but software. Isn't it this still writing? Believe it or not there is a lot in common between creating fiction and writing code. In this presentation we will see how close we are to giants like Hemingway and Stephen King. Can we get some of their wisdom and apply it to our daily job as engineers. Come to this talk and will get a few practical advices. I hope my presentation will make you a slightly better React developer.", + "duration": "20", + "from": "Antidote.me, Bulgaria", + "id": "ckfgrwhfb8cvu0970vva4pub0", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Krasimir Tsonev", + "overridden": true, + "pic": "wDjA3SUISiivxT7f6Du7", + "place": "Antidote.me, Bulgaria", + "qaLink": "", + "slug": "we-are-all-hemingway", + "speaker": "Krasimir Tsonev", + "speakerSlug": "krasimir-tsonev", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "krasimir-tsonev", + "text": "
Do you know that the first novel ever written dates back in 1021. Its author is the Japan noblewoman Murasaki Shikibu. Till then countless of writers put their thoughts on paper and countless of readers experience their stories. People write for decades and we, as software developers, kind of ignore their craft. We write too. Not novels but software. Isn't it this still writing? Believe it or not there is a lot in common between creating fiction and writing code. In this presentation we will see how close we are to giants like Hemingway and Stephen King. Can we get some of their wisdom and apply it to our daily job as engineers. Come to this talk and will get a few practical advices. I hope my presentation will make you a slightly better React developer.
+", + "time": "19:55", + "title": "We Are All Hemingway", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "30", + "isoDate": "2020-10-15T00:00:00.000Z", + "time": "20:00", + "title": "OS Awards with Max Stoiber & Stefan Fejes", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-16T00:00:00.000Z", + "qaLink": "", + "talkKey": "krasimir-tsonev", + "time": "20:15", + "title": "Q&A with MC and Krasimir Tsonev", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "In this lightning talk we will be pushing the boundaries of HTMl5 Canvas browser APIs. Join us while we do some experiments with video in the browser to see what’s truly possible. DISCLAIMER: No promises of cross-browser compatibility. Not for the faint of heart. Must be this tall to ride. Attending this lightning talk may result in serious injury or death. All participants must bring a life jacket.", + "duration": "20", + "from": "Software Engineer @Mux, USA", + "id": "ckf3qd8ze0ys60911k6t023mj", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Dylan Jhaveri", + "overridden": true, + "pic": "OqWk4KpJTdqaF0eEULnW", + "place": "Software Engineer @Mux, USA", + "slug": "getting-weird-with-video-manipulation-and-html5-canvas", + "speaker": "Dylan Jhaveri", + "speakerSlug": "dylan-jhaveri", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "dylan-jhaveri", + "text": "In this lightning talk we will be pushing the boundaries of HTMl5 Canvas browser APIs. Join us while we do some experiments with video in the browser to see what’s truly possible. DISCLAIMER: No promises of cross-browser compatibility. Not for the faint of heart. Must be this tall to ride. Attending this lightning talk may result in serious injury or death. All participants must bring a life jacket.
+", + "time": "20:30", + "title": "Getting Weird with Video Manipulation and HTML5 Canvas", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "JS awsomeness beyond webpages. First we'll write a cool 2D game (in Javascript) - and then - write AI code (in Javascript!) that will be able to win this game for us. Oh, what a time to be alive!", + "duration": "20", + "from": "Duda, Israel", + "id": "ckfgrkgu98bke0970jt14ogbn", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Liad Yosef", + "overridden": true, + "pic": "krQDfk7MTPGLORiihzDD", + "place": "Duda, Israel", + "qaLink": "", + "slug": "games-are-smarter-than-us", + "speaker": "Liad Yosef", + "speakerSlug": "liad-yosef", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "liad-yosef", + "text": "JS awsomeness beyond webpages. First we'll write a cool 2D game (in Javascript) - and then - write AI code (in Javascript!) that will be able to win this game for us. Oh, what a time to be alive!
+", + "time": "20:30", + "title": "Games Are Smarter Than Us", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-15T00:00:00.000Z", + "qaLink": "", + "talkKey": "dylan-jhaveri", + "time": "20:50", + "title": "Q&A with MC and Dylan Jhaveri", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-10-16T00:00:00.000Z", + "qaLink": "", + "talkKey": "liad-yosef", + "time": "20:50", + "title": "Q&A with MC and Liad Yosef", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "10", + "isoDate": "2020-10-15T00:00:00.000Z", + "time": "21:05", + "title": "1st day closing", + "track": "Base Camp Track", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "10", + "isoDate": "2020-10-16T00:00:00.000Z", + "time": "21:05", + "title": "Conference Closing", + "track": "Base Camp Track", + }, + ], + "name": "11", + "tab": "Base Camp Track", + "title": "Base Camp Track", + }, +] +`; + +exports[`RS should prepare speakers 1`] = ` +Object { + "advisers": Array [ + Object { + "company": "Telesoftas", + "desc": "Jemima Abu is a self-taught Front End Developer and school-taught Systems Engineer from Lagos, Nigeria. + +She currently works at Telesoftas, a software company based in Lithuania. +She is an avid advocate for diversity and intersectionality in technology and accessibility in web development. + +She's also a huge nerd, slightly obsessed with cats and can usually be found on her laptop, coding or watching slice-of-life anime.", + "expertise": "Styling methods in React, styled-components (or other CSS-in-JS libraries) and Tailwind", + "github": "https://www.github.com/jemimaabu", + "medium": null, + "name": "Jemima Abu", + "photo": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/2sqOhllbSlmhwRYX98pq", + "site": "https://www.jemimaabu.com/", + "twitter": "https://twitter.com/jemimaabu", + }, + Object { + "company": "Amazon AWS", + "desc": "Nader has been developing with React Native for over 2.5 years. He has worked with and trained developers from fortune 500 companies like Amazon, Visa, American Express, and Microsoft, helping them to get up to speed with React Native as quickly as possible.", + "expertise": "Full Stack Cloud, GraphQL, React, JAMstack", + "github": "https://github.com/dabit3", + "medium": null, + "name": "Nader Dabit", + "photo": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/glrjtl9T5awAzyT0DZVd", + "site": null, + "twitter": "https://twitter.com/dabit3", + }, + Object { + "company": "Gatsby", + "desc": "Max Stoiber is a Staff Software Engineer at Gatsby, inventing the future of web development. Previously he worked at GitHub, who acquired the startup he co-founded, Spectrum. He is well known for making styled-components, react-boilerplate, and a wide variety of other open source projects in the React ecosystem.", + "expertise": "React, Styled Components, CSS-in-JS", + "github": "https://github.com/mxstbr", + "medium": null, + "name": "Max Stoiber", + "photo": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/2jqu4t6TSlKDcqRFP6zT", + "site": "https://mxstbr.com/", + "twitter": "https://twitter.com/mxstbr", + }, + Object { + "company": "EventLoop", + "desc": "CTO & Co-Founder of EventLoop, engineer and trainer, Google Developer Expert, worldwide speaker and published author. Vladimir works mostly in Web and Mobile fields advocating usage of React, React Native, GraphQL as well serverless architectures and functional languages such as ReasonML. ", + "expertise": "React Native, ML, GraphQL", + "github": "https://github.com/vnovick", + "medium": null, + "name": "Vladimir Novick", + "photo": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/4QZV07aFSq6KDPQOeOpm", + "site": "http://vnovick.com/", + "twitter": "https://twitter.com/VladimirNovick", + }, + Object { + "company": "Design Tokens", + "desc": "Kathleen is a fullstack engineer with a design background. In other words, she really enjoys the front of the frontend, digging into new technologies, and talking about accessibility, React component libraries, design systems, and inclusive documentation. She's also a Color Module Specification Editor for the W3C Design Tokens Community Group. + +When not coding, designing, or speaking about things, Kathleen is the best Lanterne Rouge cyclocrosser you’ll ever meet.", + "expertise": "Accessible Components", + "github": "https://github.com/resource11", + "medium": null, + "name": "Kathleen McMahon", + "photo": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/rAUtJLvHT9iH6W1MTX5I", + "site": "https://noti.st/resource11", + "twitter": "https://twitter.com/resource11", + }, + Object { + "company": "Netguru", + "desc": "Frontend developer, data visualisation engineer, writer, and fan of simplicity (in code as in life). Her mind belongs to deep conversations and translation. Her heart belongs to snow and surf.", + "expertise": "D3, SVG, React", + "github": "https://github.com/monicawoj", + "medium": null, + "name": "Monica Wojciechowska", + "photo": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/414z3IgTRNKvLZr9k0Pd", + "site": null, + "twitter": "https://twitter.com/monica_woj", + }, + Object { + "company": "Teachers Pay Teachers", + "desc": "Ruth Mesfun is a Software Engineer at Teachers Pay Teachers. Her team was tasked to de-risk important pages that were dynamically rendered on mobile which they completed in two months. + +While learning all about SEO and mobile-first indexing she also is taking a class in beginner Japanese and finished a Financial Coach program. +", + "expertise": "SEO, React, React Hooks", + "github": "https://github.com/ruthmesfun", + "medium": null, + "name": "Ruth Mesfun", + "photo": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/6NiPVRHDQmCH4NLHY4Q8", + "site": null, + "twitter": "https://twitter.com/ruthmesfun?lang=en", + }, + Object { + "company": "Blitz.js Creator", + "desc": "Brandon Bayer is the creator of Blitz.js. He is currently a full-time maintainer of Blitz and supports himself with part-time consulting on the side. Outside of Blitz, his other passion is flying real airplanes and RC helicopters.", + "expertise": "Blitz.js", + "github": "https://github.com/flybayer", + "medium": null, + "name": "Brandon Bayer ", + "photo": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/cm8oOXYjTMymhx7O4nLD", + "site": null, + "twitter": "https://twitter.com/flybayer", + }, + Object { + "company": "Softiware AS", + "desc": "Majid Hajian is a passionate software developer with years of developing and architecting complex web and mobile applications. His passions are Flutter, PWA, and performance. He loves sharing his knowledge with the community by writing and speaking, contributing to open source, and organizing meetups and events. Majid is the award-winning author of the \\"Progressive web app with Angular\\" book by Apress and the \\"Progressive Web Apps\\" video course by PacktPub and Udemy. +He is (co)organizer a few Nordic conferences and meetups including GDG Oslo, FlutterVikings, Mobile Era, and ngVikings.", + "expertise": "Flutter, PWA, performance", + "github": "https://github.com/mhadaily", + "medium": null, + "name": "Majid Hajian", + "photo": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/0GjpUjR7TEKCCKh4mUEA", + "site": "https://www.majidhajian.com", + "twitter": "https://twitter.com/mhadaily", + }, + ], + "committee": Array [ + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/oam2zBTKugCINhuUB16w", + "bio": "Naomi is a Software Development Engineer at Adobe on the Globalization, Core Services team where she works on the internationalization and localization of Creative Cloud and Document Cloud products. Before writing JavaScript full time, Naomi worked as a teacher across Asia and West Africa. She enjoys weekends outside - hiking, camping, and riding bikes.
+", + "company": "Adobe, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "decor": true, + "githubUrl": "https://github.com/naeohmi", + "id": "ck1hkj8woq09x0b712ohb7uts", + "idMain": "ck1hkj8woq09x0b712ohb7uts", + "mediumUrl": null, + "name": "Naomi Meyer", + "ownSite": "https://naeohmi.github.io/me/", + "slug": "naomi-meyer", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/naeohmi", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/nae_ohmi", + }, + Object { + "icon": "site", + "link": "https://naeohmi.github.io/me/", + }, + ], + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/nae_ohmi", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/dVk76RUqrRdTGRSbGgsp", + "bio": "A frontend developer that started out writing ActionScript, did jQuery and thus has all sorts of knowledge on deprecated stuff. Currently consulting at med-tech startup Aidence to help them detect early-stage lung cancer, using React and ML. Part of a frontend development couple that produced a kid.
+", + "company": "Passionate People, Netherlands", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Netherlands", + "decor": true, + "githubUrl": "https://github.com/mettin", + "id": "ck5wesgy8f6dv0b756k2gg126", + "idMain": "ck5wesgy8f6dv0b756k2gg126", + "mediumUrl": null, + "name": "Mettin Parzinski", + "ownSite": null, + "slug": "mettin-parzinski", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/mettin", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/mettinparzinski", + }, + ], + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/mettinparzinski", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/1qb6SCsRDqd99oTWSkNY", + "bio": "Software engineer, focused in the Javascript ecosystem. Curious about new technologies and open-source.
+", + "company": "DAZN, UK", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "UK", + "decor": true, + "githubUrl": "https://github.com/leimonio", + "id": "ck8ije8piab5x0b8413v5hjuf", + "idMain": "ck8ije8piab5x0b8413v5hjuf", + "mediumUrl": null, + "name": "Konstantinos Leimonis", + "ownSite": null, + "slug": "konstantinos-leimonis", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/leimonio", + }, + ], + "tag": "speaker--undefined", + "twitterUrl": null, + }, + ], + "main": Array [ + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "How do you level up? How do you jumpstart your learning when getting into something new? Nobody has more than 24 hours a day, so how do you maximize the impact of your limited time? + +In this keynote, I'm going to tell you a bit of my own story, and some tips and tricks that I've learned so you can be as productive as you can be at learning new things and solidifying that knowledge so it's there when you need it.", + "duration": "20", + "from": "Trainer, USA", + "id": "ck309px35ghpb0b32nj6cwpvn", + "isLightning": false, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": null, + "name": "Kent C. Dodds", + "overridden": true, + "pic": "8HarhhMS6OPV6qWV9VIY", + "place": "Trainer, USA", + "slug": "consume-build-teach", + "speaker": "Kent C. Dodds", + "speakerSlug": "kent-c-dodds", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "kent-c-dodds", + "text": "How do you level up? How do you jumpstart your learning when getting into something new? Nobody has more than 24 hours a day, so how do you maximize the impact of your limited time?
+In this keynote, I'm going to tell you a bit of my own story, and some tips and tricks that I've learned so you can be as productive as you can be at learning new things and solidifying that knowledge so it's there when you need it.
+", + "time": "16:15", + "timeString": "16:15", + "title": "Consume ➡️ Build ➡️ Teach", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/8HarhhMS6OPV6qWV9VIY", + "bio": "Kent C. Dodds is a world renowned speaker, teacher, and trainer and he's actively involved in the open source community as a maintainer and contributor of hundreds of popular npm packages. Kent is the creator of TestingJavaScript.com and he's an instructor on egghead.io and Frontend Masters. He's also a Google Developer Expert. Kent is happily married and the father of four kids. He likes his family, code, JavaScript, and React.
+", + "color": "#324e00", + "company": "Trainer, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/kentcdodds/", + "id": "ck1qix0arx7ve0b71dtvp0d32", + "idAlt": "ckceptfut77m60b97gr0h0zme", + "idMain": "ck1qix0arx7ve0b71dtvp0d32", + "isNightSpeaker": null, + "label": "Summit Track", + "mediumUrl": null, + "name": "Kent C. Dodds", + "order": 120, + "ownSite": "https://kentcdodds.com/", + "slug": "kent-c-dodds", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/kentcdodds/", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/kentcdodds/", + }, + Object { + "icon": "site", + "link": "https://kentcdodds.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#a4ff00", + "twitterUrl": "https://twitter.com/kentcdodds/", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "We have been using hooks for a while and with that we have also been using \`useEffect\` in particular and in this today I wanna take a look at the trickier parts of \`useEffect\` and why they work that way so you can leave with a super understanding of how this magic all works", + "duration": "20", + "from": "CodeSandbox, Germany", + "id": "ck5fqg94cmo280b20hq25ybin", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Sara Vieira", + "overridden": true, + "pic": "RcjDp3FuRHujJyQFbi2w", + "place": "CodeSandbox, Germany", + "slug": "the-psycological-effects-of-use-effect", + "speaker": "Sara Vieira", + "speakerSlug": "sara-vieira", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "sara-vieira", + "text": "We have been using hooks for a while and with that we have also been using useEffect
in particular and in this today I wanna take a look at the trickier parts of useEffect
and why they work that way so you can leave with a super understanding of how this magic all works
Sara is a developer at CodeSandbox. GraphQL and Open Source enthusiast. Conference Speaker and Airport expert. She's also a fan of horror movies, has talents such as banging sticks into a drum kit and saying the wrong thing at the wrong time.
+", + "color": "#e7e7e7", + "company": "CodeSandbox, Germany", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Germany", + "githubUrl": "https://github.com/SaraVieira", + "id": "ck1qj09zeu7e20b496p4spw9p", + "idAlt": "ckck8ary6blpg0903x325w4b3", + "idMain": "ck1qj09zeu7e20b496p4spw9p", + "isNightSpeaker": null, + "label": "Base Camp Track", + "mediumUrl": null, + "name": "Sara Vieira", + "order": 90, + "ownSite": null, + "slug": "sara-vieira", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/SaraVieira", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/NikkitaFTW", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#696969", + "twitterUrl": "https://twitter.com/NikkitaFTW", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/2jqu4t6TSlKDcqRFP6zT", + "bio": "Max Stoiber is a Staff Software Engineer at Gatsby, inventing the future of web development. Previously he worked at GitHub, who acquired the startup he co-founded, Spectrum. He is well known for making styled-components, react-boilerplate, and a wide variety of other open source projects in the React ecosystem.
+", + "color": "#3f3a00", + "company": "Gatsby, Austria", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Austria", + "githubUrl": "https://github.com/mxstbr", + "id": "ck0zj6ytry8s20b71lgpuqves", + "idAlt": "ck341dbmbqob60b20hrylkplw", + "idMain": "ck0zj6ytry8s20b71lgpuqves", + "isNightSpeaker": null, + "label": "Panel Discussion", + "mediumUrl": null, + "name": "Max Stoiber", + "order": 70, + "ownSite": "https://mxstbr.com/", + "slug": "max-stoiber", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/mxstbr", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/mxstbr", + }, + Object { + "icon": "site", + "link": "https://mxstbr.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#ddce2a", + "twitterUrl": "https://twitter.com/mxstbr", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Accessibility in React has been a hot topic in the last few years, but in this talk, we'll be going beyond the basics. We'll discuss what disability means beyond what you've heard before, and then use code examples to learn why semantic HTML is helpful, and when it's just not enough. We'll then look into tooling, and talk about how you can introduce accessibility testing into your teams and existing code. You'll leave with the tools and knowledge to make a difference starting today.", + "duration": "20", + "from": "Gremlin, USA", + "id": "ck6i0aw6wsu4s0b20lvj6g32l", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Summit Track", + "name": "Jen Luker ", + "overridden": true, + "pic": "XUqQlycTXS46JG02Q2Fl", + "place": "Gremlin, USA", + "slug": "react-accessibility-beyond-the-basics", + "speaker": "Jen Luker", + "speakerSlug": "jen-luker", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "jen-luker", + "text": "Accessibility in React has been a hot topic in the last few years, but in this talk, we'll be going beyond the basics. We'll discuss what disability means beyond what you've heard before, and then use code examples to learn why semantic HTML is helpful, and when it's just not enough. We'll then look into tooling, and talk about how you can introduce accessibility testing into your teams and existing code. You'll leave with the tools and knowledge to make a difference starting today.
+", + "time": "18:20", + "timeString": "18:20", + "title": "React Accessibility: Beyond the Basics", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/XUqQlycTXS46JG02Q2Fl", + "bio": "Jen Luker is a Sr. Frontend Engineer, conference speaker, and BookBytes podcast co-host. She has spent the majority of her career as a full-stack developer using PHP, Javascript, and CSS, but has a particular fondness for frontend technologies. She is an advocate for both accessibility, and processes that make doing the right thing easy and the wrong thing hard. When she's not exploring solutions, learning new technologies, or reading, Jen's spare time is spent spinning yarn from raw wool and knitting; she's even been known to 3D print her own tools for the job. +She is also fascinated by all things space, antique cars, and IoT.
+", + "color": "#324e00", + "company": "Gremlin, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/knitcodemonkey", + "id": "ck2mzoz9knqy80b71jhvragfy", + "idAlt": "ck2mzq82znrv10b71shrex74s", + "idMain": "ck2mzoz9knqy80b71jhvragfy", + "isNightSpeaker": null, + "label": "Summit Track", + "mediumUrl": null, + "name": "Jen Luker ", + "order": 39, + "ownSite": "https://www.jenluker.com/#/", + "slug": "jen-luker", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/knitcodemonkey", + }, + Object { + "icon": "tw", + "link": " https://twitter.com/knitcodemonkey", + }, + Object { + "icon": "site", + "link": "https://www.jenluker.com/#/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#a4ff00", + "twitterUrl": " https://twitter.com/knitcodemonkey", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/41nhsVJQSp2WDf5qE0Gp", + "bio": "Guillermo Rauch is the CEO or Vercel, co-creator Next.js, former CTO and co-founder of LearnBoost and Cloudup, acquired by Wordpress.com in 2013. His background and expertise are in the realtime web. He's the creator of socket.io, one of the most popular JavaScript projects on GitHub, with implementations in many different programming languages and frameworks (currently running the realtime backend of high profile apps like Microsoft Office online). He created the first MongoDB ORM for Node.JS, MongooseJS. Before that he was a core developer of the MooTools JavaScript framework. He's the author of \\"Smashing Node.JS\\" published by Wiley in 2012, best-selling book about Node.JS on Amazon in multiple programming categories.
+", + "color": "#003238", + "company": "Vercel, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/rauchg/", + "id": "ck74tt9jrbgue0b20vn7z1l7p", + "idAlt": "ckeo6ytztvpgr0a857t116ntt", + "idMain": "ck74tt9jrbgue0b20vn7z1l7p", + "isNightSpeaker": null, + "label": "Lightning Talk", + "mediumUrl": null, + "name": "Guillermo Rauch", + "order": 38, + "ownSite": "https://rauchg.com/", + "slug": "guillermo-rauch", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/rauchg/", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/rauchg", + }, + Object { + "icon": "site", + "link": "https://rauchg.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#2acadd", + "twitterUrl": "https://twitter.com/rauchg", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "There are many CSS-in-JS libraries for us to choose from. Imagine being able to take your favorite parts of those libraries and using them in one. Learn about the power of Theme UI.", + "from": "G2i, USA", + "id": "ck62260ijuys10b7534e5lqik", + "isLightning": true, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Lightning Talk", + "name": "Pariss Athena", + "place": "G2i, USA", + "slug": "theming-gatsby-apps-with-theme-ui", + "speaker": "Pariss Athena", + "speakerSlug": "pariss-athena", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "There are many CSS-in-JS libraries for us to choose from. Imagine being able to take your favorite parts of those libraries and using them in one. Learn about the power of Theme UI.
+", + "time": "19:10", + "timeString": "19:10", + "title": "Theming Gatsby Apps with Theme UI", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/xKLOnyetTjJm7IJx9l2a", + "bio": "Pariss is a front-end developer who works for G2i as a Hiring Team Member, vetting React and React Native engineers for remote contract roles. She is also creator of #BlackTechTwitter and Founder of Black Tech Pipeline.
+", + "color": "#003238", + "company": "G2i, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": null, + "id": "ck34b5khqr9rs0b32hi4y3kdw", + "idAlt": "ckdyc12ajsydf0b97jgdvyeut", + "idMain": "ck34b5khqr9rs0b32hi4y3kdw", + "isNightSpeaker": null, + "label": "Lightning Talk", + "mediumUrl": null, + "name": "Pariss Athena", + "order": 32, + "ownSite": null, + "slug": "pariss-athena", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/ParissAthena", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#2acadd", + "twitterUrl": "https://twitter.com/ParissAthena", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Service workers can give users a huge boost in performance and user experience. If you read the API docs about how to create one, it all sounds relatively straightforward. You register a file, do some work in the worker, you're done! In the real world though, there's a bit more to it. + +At Airbnb, we created a service worker system in React that lets us deliver service workers safely and efficiently, measuring the right things, and allowing experimentation and scope-sharing between different types of devices and parts of our site. + +Ranging from app shells to precaching to prefetching, I will share with you some of the lessons we have learned from running service worker A/B tests on the most visited page at Airbnb, and what we learned from it! + +No matter what size or stage of service worker adoption you are at, I will share ideas and lessons that will help you create a similar system for your project – one that ensures delivering service workers is fast, measurable, painless, and better for your users.", + "duration": "20", + "from": "Airbnb, USA", + "id": "ck6gaipzjm0qf0b205dpmtal5", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Summit Track", + "name": "Joshua Nelson", + "overridden": true, + "pic": "LGt48uPlSB6wuuRa8fIl", + "place": "Airbnb, USA", + "slug": "a-react-service-worker-framework", + "speaker": "Joshua Nelson", + "speakerSlug": "joshua-nelson", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "joshua-nelson", + "text": "Service workers can give users a huge boost in performance and user experience. If you read the API docs about how to create one, it all sounds relatively straightforward. You register a file, do some work in the worker, you're done! In the real world though, there's a bit more to it.
+At Airbnb, we created a service worker system in React that lets us deliver service workers safely and efficiently, measuring the right things, and allowing experimentation and scope-sharing between different types of devices and parts of our site.
+Ranging from app shells to precaching to prefetching, I will share with you some of the lessons we have learned from running service worker A/B tests on the most visited page at Airbnb, and what we learned from it!
+No matter what size or stage of service worker adoption you are at, I will share ideas and lessons that will help you create a similar system for your project – one that ensures delivering service workers is fast, measurable, painless, and better for your users.
+", + "time": "16:50", + "timeString": "16:50", + "title": "A React Service Worker Framework", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/LGt48uPlSB6wuuRa8fIl", + "bio": "Joshua is a developer at Airbnb, working on improving the front end performance of the most visited pages on the site! Joshua cares deeply about ensuring fast experiences for everyone, and has worked on performance optimization and instrumentation to achieve this.
+With experience building both UI platforms, design systems, and product UI, Joshua has learnt what really works when it comes to performance (and what doesn't!) and is looking forward to sharing these lessons with you.
+", + "color": "#324e00", + "company": "Airbnb, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/jpnelson", + "id": "ck6gahpi193410b75bpitdjac", + "idAlt": "ckcq1vhg1jftr0b09ohmavwd3", + "idMain": "ck6gahpi193410b75bpitdjac", + "isNightSpeaker": null, + "label": "Summit Track", + "mediumUrl": null, + "name": "Joshua Nelson", + "order": 30, + "ownSite": "https://joshnelson.io/", + "slug": "joshua-nelson", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/jpnelson", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/nelsonjoshpaul ", + }, + Object { + "icon": "site", + "link": "https://joshnelson.io/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#a4ff00", + "twitterUrl": "https://twitter.com/nelsonjoshpaul ", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Is your complex documentation setup a maintenance nightmare and chasing away potential contributors? In this talk, you will learn how to make your React component library documentation more user and contributor-friendly with Gatsby and MDX. Pair this with accessibility best practices, and your documentation will be inclusively smooth. + +", + "duration": "20", + "from": "Design Tokens, USA", + "id": "ckfi8kpiqm3h60911592a6a6e", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Kathleen McMahon", + "overridden": true, + "pic": "rAUtJLvHT9iH6W1MTX5I", + "place": "Design Tokens, USA", + "qaLink": "", + "slug": "smoothly-inclusive-component-library-documentation", + "speaker": "Kathleen McMahon", + "speakerSlug": "kathleen-mc-mahon", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "kathleen-mcmahon", + "text": "Is your complex documentation setup a maintenance nightmare and chasing away potential contributors? In this talk, you will learn how to make your React component library documentation more user and contributor-friendly with Gatsby and MDX. Pair this with accessibility best practices, and your documentation will be inclusively smooth.
+", + "time": "18:20", + "timeString": "18:20", + "title": "Smoothly Inclusive Component Library Documentation", + "track": Object { + "isPrimary": null, + "name": "Base Camp Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/rAUtJLvHT9iH6W1MTX5I", + "bio": "Kathleen is a fullstack engineer with a design background. In other words, she really enjoys the front of the frontend, digging into new technologies, and talking about accessibility, React component libraries, design systems, and inclusive documentation. She's also a Color Module Specification Editor for the W3C Design Tokens Community Group.
+When not coding, designing, or speaking about things, Kathleen is the best Lanterne Rouge cyclocrosser you’ll ever meet.
+", + "color": "#e7e7e7", + "company": "Design Tokens, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/resource11", + "id": "ckeo78qfnvlj50916mdrw13v4", + "idAlt": "ckeo7a18mvyau09089sj0beyu", + "idMain": "ckeo78qfnvlj50916mdrw13v4", + "isNightSpeaker": null, + "label": "Base Camp Track", + "mediumUrl": null, + "name": "Kathleen McMahon", + "order": 25, + "ownSite": "https://noti.st/resource11", + "slug": "kathleen-mc-mahon", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/resource11", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/resource11", + }, + Object { + "icon": "site", + "link": "https://noti.st/resource11", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#696969", + "twitterUrl": "https://twitter.com/resource11", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "TypeScript is a JavaScript superset that compiles down to vanilla JavaScript and has become increasingly popular. TypeScript proponents proclaim that it eliminates entire classes of bugs that affect our applications. But what exactly are those bugs? Which ones are particular to building React components and applications? Is TypeScript worth the learning curve? + +In this session geared towards devs with prior experience building React applications, let’s answer those questions. We’ll walk through the common bugs that infect our apps and learn how the use of strong types with TypeScript can help prevent them. After the session, you’ll be itching to try it out in your next project!", + "duration": "20", + "from": "Stitch Fix, USA", + "id": "ckeska2ew0gcg0a85rds6g1i2", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Summit Track", + "name": "Ben Ilegbodu", + "overridden": true, + "pic": "vy4IpVYBSnijF65EiDkB", + "place": "Stitch Fix, USA", + "slug": "type-script-react", + "speaker": "Ben Ilegbodu", + "speakerSlug": "ben-ilegbodu", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "ben-ilegbodu", + "text": "TypeScript is a JavaScript superset that compiles down to vanilla JavaScript and has become increasingly popular. TypeScript proponents proclaim that it eliminates entire classes of bugs that affect our applications. But what exactly are those bugs? Which ones are particular to building React components and applications? Is TypeScript worth the learning curve?
+In this session geared towards devs with prior experience building React applications, let’s answer those questions. We’ll walk through the common bugs that infect our apps and learn how the use of strong types with TypeScript can help prevent them. After the session, you’ll be itching to try it out in your next project!
+", + "time": "20:30", + "timeString": "20:30", + "title": "TypeScript + React = ❤️", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/vy4IpVYBSnijF65EiDkB", + "bio": "Ben is a Christian, husband, and father of 3, with 15 years of professional experience developing user interfaces for the Web. He currently is a Principal Frontend Engineer at Stitch Fix on their Frontend Platform team, helping architect their Design System. Ben also is a Google Developer Expert, Microsoft MVP, and enjoys playing basketball, DIY, watching movies, and tweeting (@benmvp) / blogging (benmvp.com) about his experiences with new web technologies.
+", + "color": "#324e00", + "company": "Stitch Fix, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/benmvp", + "id": "ckel7x1y0rfgs0a85b69oxfif", + "idAlt": "ckesjzm320blv09160hct2yne", + "idMain": "ckel7x1y0rfgs0a85b69oxfif", + "isNightSpeaker": null, + "label": "Summit Track", + "mediumUrl": null, + "name": "Ben Ilegbodu", + "order": 22, + "ownSite": "https://www.benmvp.com/", + "slug": "ben-ilegbodu", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/benmvp", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/benmvp", + }, + Object { + "icon": "site", + "link": "https://www.benmvp.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#a4ff00", + "twitterUrl": "https://twitter.com/benmvp", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "So you built a component library. Congrats! I am sure it is awesome but did you put the same effort into its documentation? Component libraries tend to have giant APIs, dozens of components, hundreds of props and thousands of permutations. That is a lot of information to unpack. + +We could make the documentation very long or... super interactive. We combined component previews, API documentation, props editing and code editing into a single seamless experience. You can quickly explore various settings of each component while watching the code write itself. + +This talk will show you how to leverage common tools and concepts such as Prettier, babel and AST transformations to build the documentation that can literally work for you.", + "duration": "20", + "from": "Uber, USA", + "id": "ck6gac6ihm0bz0b20nzkb6rny", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Summit Track", + "name": "Vojtech Miksu", + "overridden": true, + "pic": "swKO8AorR8LCFDc4kbgW", + "place": "Uber, USA", + "slug": "introducing-react-view-a-set-of-tools-that-closes-the-gap-between-users-developers-and-designers-of-component-libraries", + "speaker": "Vojtech Miksu", + "speakerSlug": "vojtech-miksu", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "vojtech-miksuu", + "text": "So you built a component library. Congrats! I am sure it is awesome but did you put the same effort into its documentation? Component libraries tend to have giant APIs, dozens of components, hundreds of props and thousands of permutations. That is a lot of information to unpack.
+We could make the documentation very long or... super interactive. We combined component previews, API documentation, props editing and code editing into a single seamless experience. You can quickly explore various settings of each component while watching the code write itself.
+This talk will show you how to leverage common tools and concepts such as Prettier, babel and AST transformations to build the documentation that can literally work for you.
+", + "time": "19:55", + "timeString": "19:55", + "title": "Introducing React View: A Set of Tools that Closes the Gap between Users, Developers and Designers of Component Libraries", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/KwHIa3buQmOfWcY9zTNB", + "bio": "Currently on the UI Platform team at Uber. Focused on design systems (baseweb.design), open source (multiple popular react libraries as react-movable or react-portal), CSS in JS and great user/developer experiences. Previously building product at Cloudflare.
+", + "color": "#324e00", + "company": "Uber, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/tajo", + "id": "ck6ga8brt921a0b759vas4b5z", + "idAlt": "ckckh4ubxjvyt0b97zzk726jo", + "idMain": "ck6ga8brt921a0b759vas4b5z", + "isNightSpeaker": false, + "label": "Summit Track", + "mediumUrl": null, + "name": "Vojtech Miksu", + "order": 20, + "ownSite": "https://miksu.cz/", + "slug": "vojtech-miksu", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/tajo", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/vmiksu", + }, + Object { + "icon": "site", + "link": "https://miksu.cz/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#a4ff00", + "twitterUrl": "https://twitter.com/vmiksu", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Are you a React Native developer? Have you always been longing for the rich ecosystem of developer tooling that exists for the web in e.g. Chrome and Firefox? +Flipper is Facebooks internal, extensible mobile devtool platform, used by the mobile devs that work on the Facebook, WhatsApp, Instagram and many more apps. + +Recently the React Native and Flipper team have been working hard to add first class support for React Native as well. This means that monitoring network traffic and performance, using the React Devtools, inspecting device and application logs or even debugging JavaScript can now can now be conveniently done using one coherent tool. + +And best of all: Flipper is extensible, so let's build our own plugin while at it!", + "duration": "20", + "from": "Facebook, UK", + "id": "ckdhbrlvndhu20916cyuaegrc", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Summit Track", + "name": "Michel Weststrate", + "overridden": true, + "pic": "QlY3D49T5iDadzDF7ZXw", + "place": "Facebook, UK", + "slug": "flipper-the-extensible-dev-tool-platform-for-react-native", + "speaker": "Michel Weststrate", + "speakerSlug": "michel-weststrate", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "michel-weststrate", + "text": "Are you a React Native developer? Have you always been longing for the rich ecosystem of developer tooling that exists for the web in e.g. Chrome and Firefox? +Flipper is Facebooks internal, extensible mobile devtool platform, used by the mobile devs that work on the Facebook, WhatsApp, Instagram and many more apps.
+Recently the React Native and Flipper team have been working hard to add first class support for React Native as well. This means that monitoring network traffic and performance, using the React Devtools, inspecting device and application logs or even debugging JavaScript can now can now be conveniently done using one coherent tool.
+And best of all: Flipper is extensible, so let's build our own plugin while at it!
+", + "time": "17:45", + "timeString": "17:45", + "title": "Flipper: The Extensible DevTool Platform for React Native", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/QlY3D49T5iDadzDF7ZXw", + "bio": "Open source fanatic, speaker and trainer. Author of MobX, MobX-State-Tree, Immer and a plethora of smaller packages. On a continuous quest to make programming as natural as possible. React, JavaScript and TypeScript fan. Working at Facebook on dev tooling for mobile developers.
+", + "color": "#324e00", + "company": "Facebook, UK", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "UK", + "githubUrl": "https://github.com/mweststrate", + "id": "ck30crtskgtbl0b3239sszqt4", + "idAlt": "ckdh5769ol4q50b97vulywvb5", + "idMain": "ck30crtskgtbl0b3239sszqt4", + "isNightSpeaker": null, + "label": "Summit Track", + "mediumUrl": null, + "name": "Michel Weststrate", + "order": 19, + "ownSite": null, + "slug": "michel-weststrate", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/mweststrate", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/mweststrate", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#a4ff00", + "twitterUrl": "https://twitter.com/mweststrate", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/8MXjxdpqTciCx72sJIo7", + "bio": "Tomasz is a Senior Frontend Developer at OLX Group. Tech speaker, egghead.io instructor, AWS Certified. His interests include React, AWS, testing, VR and making cheesiest jokes known to mankind.
+", + "color": "#3f3a00", + "company": "OLX Group, Poland", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Poland", + "githubUrl": "https://github.com/tlakomy", + "id": "ckd8si4y842j50a85kp6z81k9", + "idAlt": "ckd8skiuc42px0a854pf237m7", + "idMain": "ckd8si4y842j50a85kp6z81k9", + "isNightSpeaker": null, + "label": "Panel Discussion", + "mediumUrl": null, + "name": "Tomasz Łakomy", + "order": 17, + "ownSite": null, + "slug": "tomasz-lakomy", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/tlakomy", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/tlakomy", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#ddce2a", + "twitterUrl": "https://twitter.com/tlakomy", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "All too often A11Y is only an afterthought and will be added to a project \\"when we have time\\" i.e. never. But there are a many reasons why you should develop with a11y in mind from the start including some that will convince The Higher-Ups. We'll explore tools we can use to help us develop more accessibly and talk about some of the quirks and limitations that React Native has.", + "duration": "20", + "from": "Donut, Germany", + "id": "ck7vxltct6m4g0b84t1w7adoc", + "isLightning": false, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Sophie Au", + "overridden": true, + "pic": "CRDVHfwQoCJjt9VyqBgY", + "place": "Donut, Germany", + "slug": "accessibility-as-a-first-class-citizen", + "speaker": "Sophie Au", + "speakerSlug": "sophie-au", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "sophie-au", + "text": "All too often A11Y is only an afterthought and will be added to a project \\"when we have time\\" i.e. never. But there are a many reasons why you should develop with a11y in mind from the start including some that will convince The Higher-Ups. We'll explore tools we can use to help us develop more accessibly and talk about some of the quirks and limitations that React Native has.
+", + "time": "17:45", + "timeString": "17:45", + "title": "Accessibility as a First Class Citizen", + "track": Object { + "isPrimary": null, + "name": "Base Camp Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/CRDVHfwQoCJjt9VyqBgY", + "bio": "Sophie is a software developer at Donut where she champions testing and accessibility. And ensures there's a steady supply of office donuts.
+", + "color": "#e7e7e7", + "company": "Donut, Germany", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Germany", + "githubUrl": "https://github.com/SophieAu", + "id": "ck7vxjqtx6lxu0b84gtu7h3ao", + "idAlt": "ck7vxk2f8ptey0b2015a3f9v5", + "idMain": "ck7vxjqtx6lxu0b84gtu7h3ao", + "isNightSpeaker": null, + "label": "Base Camp Track", + "mediumUrl": null, + "name": "Sophie Au", + "order": 15, + "ownSite": "https://sophieau.com/", + "slug": "sophie-au", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/SophieAu", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/SolviAu", + }, + Object { + "icon": "site", + "link": "https://sophieau.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#696969", + "twitterUrl": "https://twitter.com/SolviAu", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Google announced that they will fully switch over to crawling and indexing sites using mobile-first indexing by March 2021. Now for some companies their mobile site is dynamically rendered which has a high risk of decreased ranking on google once mobile-first indexing is fully implemented. + +This presentation will share how to assess what changes needs to be made, best practices to increase SEO for Mobile First Indexing, how to increase performance, and how to turn parts of your site from dynamic rendering to mobile responsive in less than two months. ", + "from": "Teachers Pay Teachers, USA", + "id": "ckeo7u0jnvmch09165jlbhu22", + "isLightning": true, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Lightning Talk", + "name": "Ruth Mesfun", + "place": "Teachers Pay Teachers, USA", + "slug": "improve-your-seo", + "speaker": "Ruth Mesfun", + "speakerSlug": "ruth-mesfun", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Google announced that they will fully switch over to crawling and indexing sites using mobile-first indexing by March 2021. Now for some companies their mobile site is dynamically rendered which has a high risk of decreased ranking on google once mobile-first indexing is fully implemented.
+This presentation will share how to assess what changes needs to be made, best practices to increase SEO for Mobile First Indexing, how to increase performance, and how to turn parts of your site from dynamic rendering to mobile responsive in less than two months.
+", + "time": "19:15", + "timeString": "19:15", + "title": "Improve Your SEO ", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/6NiPVRHDQmCH4NLHY4Q8", + "bio": "Ruth Mesfun is a Software Engineer at Teachers Pay Teachers. Her team was tasked to de-risk important pages that were dynamically rendered on mobile which they completed in two months.
+While learning all about SEO and mobile-first indexing she also is taking a class in beginner Japanese and finished a Financial Coach program.
+", + "color": "#003238", + "company": "Teachers Pay Teachers, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/ruthmesfun", + "id": "ckeo7e7igvykr0908ypid4fc7", + "idAlt": "ckeo7exzbvlrw0916poutd2iy", + "idMain": "ckeo7e7igvykr0908ypid4fc7", + "isNightSpeaker": null, + "label": "Lightning Talk", + "mediumUrl": null, + "name": "Ruth Mesfun", + "order": 13, + "ownSite": null, + "slug": "ruth-mesfun", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/ruthmesfun", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/ruthmesfun?lang=en", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#2acadd", + "twitterUrl": "https://twitter.com/ruthmesfun?lang=en", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Blitz is a hyper productive framework for building fullstack React apps. You'll learn why I created Blitz, it's advantages and disadvantages, how it makes you so productive, and for what cases you should consider using Blitz.", + "duration": "20", + "from": "Blitz.js Creator, USA", + "id": "ckeo7rgd7vqox0a85z52mpvaq", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Summit Track", + "name": "Brandon Bayer ", + "overridden": true, + "pic": "cm8oOXYjTMymhx7O4nLD", + "place": "Blitz.js Creator, USA", + "slug": "blitz-js-the-fullstack-react-framework", + "speaker": "Brandon Bayer", + "speakerSlug": "brandon-bayer", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "brandon-bayer", + "text": "Blitz is a hyper productive framework for building fullstack React apps. You'll learn why I created Blitz, it's advantages and disadvantages, how it makes you so productive, and for what cases you should consider using Blitz.
+", + "time": "16:15", + "timeString": "16:15", + "title": "Blitz.js - The Fullstack React Framework", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/cm8oOXYjTMymhx7O4nLD", + "bio": "Brandon Bayer is the creator of Blitz.js. He is currently a full-time maintainer of Blitz and supports himself with part-time consulting on the side. Outside of Blitz, his other passion is flying real airplanes and RC helicopters.
+", + "color": "#324e00", + "company": "Blitz.js Creator, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/flybayer", + "id": "ckeo6mjw9vvum0908zj3pvdkr", + "idAlt": "ckeo6t5oyvk3g0916repfc6fz", + "idMain": "ckeo6mjw9vvum0908zj3pvdkr", + "isNightSpeaker": null, + "label": "Summit Track", + "mediumUrl": null, + "name": "Brandon Bayer ", + "order": 11, + "ownSite": null, + "slug": "brandon-bayer", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/flybayer", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/flybayer", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#a4ff00", + "twitterUrl": "https://twitter.com/flybayer", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "The benefits of SVG are vast: style-able, accessible, animatable. And when it comes to SVG, the Path element is the building block of building blocks. During this presentation, we’ll take a deep dive into the language of the SVG path. Not only will we learn to read path data, but we'll also gain the ability to manipulate paths on the fly with the help of React - no Adobe Illustrator or help from a time-strapped designer necessary!", + "duration": "20", + "from": "Netguru, Poland", + "id": "ckfc8a3m4bggo0911uz7nfyml", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Summit Track", + "name": "Monica Wojciechowska", + "overridden": true, + "pic": "414z3IgTRNKvLZr9k0Pd", + "place": "Netguru, Poland", + "slug": "the-language-of-shapes-understanding-the-svg-path", + "speaker": "Monica Wojciechowska", + "speakerSlug": "monica-wojciechowska", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "monica-wojciechowska", + "text": "The benefits of SVG are vast: style-able, accessible, animatable. And when it comes to SVG, the Path element is the building block of building blocks. During this presentation, we’ll take a deep dive into the language of the SVG path. Not only will we learn to read path data, but we'll also gain the ability to manipulate paths on the fly with the help of React - no Adobe Illustrator or help from a time-strapped designer necessary!
+", + "time": "17:50", + "timeString": "17:50", + "title": "The Language of Shapes: Understanding the SVG Path", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/414z3IgTRNKvLZr9k0Pd", + "bio": "Frontend developer, data visualisation engineer, writer, and fan of simplicity (in code as in life). Her mind belongs to deep conversations and translation. Her heart belongs to snow and surf.
+", + "color": "#324e00", + "company": "Netguru, Poland", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Poland", + "githubUrl": "https://github.com/monicawoj", + "id": "ckf8d0x9znynk0970c9nemjh0", + "idAlt": "ckfc8easzbgos0911l01m918e", + "idMain": "ckf8d0x9znynk0970c9nemjh0", + "isNightSpeaker": null, + "label": "Summit Track", + "mediumUrl": null, + "name": "Monica Wojciechowska", + "order": 10, + "ownSite": null, + "slug": "monica-wojciechowska", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/monicawoj", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/monica_woj", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#a4ff00", + "twitterUrl": "https://twitter.com/monica_woj", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/wMXZaraBQ2yZbNjZec9N", + "bio": "Sid builds tools for developers. In the past, he worked on Design Systems at Auth0 and as the frontend architect at Practo. He loves talking about design, performance and open source.
+", + "color": "#f3cbff", + "company": "CodeSandbox, Netherlands", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Netherlands", + "githubUrl": "https://github.com/siddharthkp", + "id": "ck30bhsz8gvw80b669dzgs7sk", + "idAlt": "ckcepj1vw5st60903w7lr3ker", + "idMain": "ck30bhsz8gvw80b669dzgs7sk", + "isNightSpeaker": null, + "label": "Workshop", + "mediumUrl": null, + "name": "Siddharth Kshetrapal", + "order": 9, + "ownSite": null, + "slug": "siddharth-kshetrapal", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/siddharthkp", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/siddharthkp", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#bd2add", + "twitterUrl": "https://twitter.com/siddharthkp", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "A comparative analysis between four methods of styling React components from inline styling to Styled-Components. This talk is best suited to beginner developers.", + "from": "Telesoftas, Nigeria/Lithuania", + "id": "ckeo7wbxqvqvg0a856kxs3007", + "isLightning": true, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Lightning Talk", + "name": "Jemima Abu", + "place": "Telesoftas, Nigeria/Lithuania", + "slug": "react-components-and-how-to-style-them", + "speaker": "Jemima Abu", + "speakerSlug": "jemima-abu", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "A comparative analysis between four methods of styling React components from inline styling to Styled-Components. This talk is best suited to beginner developers.
+", + "time": "19:10", + "timeString": "19:10", + "title": "React Components and How To Style Them ", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/2sqOhllbSlmhwRYX98pq", + "bio": "Jemima Abu is a self-taught Front End Developer and school-taught Systems Engineer from Lagos, Nigeria.
+She currently works at Telesoftas, a software company based in Lithuania. +She is an avid advocate for diversity and intersectionality in technology and accessibility in web development.
+She's also a huge nerd, slightly obsessed with cats and can usually be found on her laptop, coding or watching slice-of-life anime.
+", + "color": "#003238", + "company": "Telesoftas, Nigeria/Lithuania", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Nigeria/Lithuania", + "githubUrl": "https://www.github.com/jemimaabu", + "id": "ckeo7jz1hvyyt0908ejb99ikx", + "idAlt": "ckeo7kt93vqg00a853b5aooy3", + "idMain": "ckeo7jz1hvyyt0908ejb99ikx", + "isNightSpeaker": null, + "label": "Lightning Talk", + "mediumUrl": null, + "name": "Jemima Abu", + "order": 8, + "ownSite": "https://www.jemimaabu.com/", + "slug": "jemima-abu", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://www.github.com/jemimaabu", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/jemimaabu", + }, + Object { + "icon": "site", + "link": "https://www.jemimaabu.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#2acadd", + "twitterUrl": "https://twitter.com/jemimaabu", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/jx66c2DKQ3KhZSOiLxXS", + "bio": "Founder at React GraphQL Academy and LeanJS. Developer and Coach passionate about JavaScript, React and GraphQL. Organizer of the JavaScript London Meetup and other popular meetups in the EU.
+", + "color": "#f3cbff", + "company": "React GraphQL Academy, UK", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "UK", + "githubUrl": "https://github.com/alexlbr", + "id": "ck10teywmv6940b541heiz22b", + "idAlt": "ckcepk8705sxm0903ficz56se", + "idMain": "ck10teywmv6940b541heiz22b", + "isNightSpeaker": null, + "label": "Workshop", + "mediumUrl": null, + "name": "Alex Lobera", + "order": 7, + "ownSite": null, + "slug": "alex-lobera", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/alexlbr", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/alex_lobera", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#bd2add", + "twitterUrl": "https://twitter.com/alex_lobera", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Virtual Reality gives us an ability to experience virtual worlds from the comfort of our homes. But it doesn't have to be experienced alone. In this talk we will see how we can use React, WebVR and GraphQL to create social VR experience in the browser.", + "duration": "20", + "from": "EventLoop, Israel", + "id": "ckdh98rr2degx0916bgg3gjma", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": null, + "name": "Vladimir Novick", + "overridden": true, + "pic": "4QZV07aFSq6KDPQOeOpm", + "place": "EventLoop, Israel", + "slug": "create-collaborative-vr-environment-in-the-browser-with-react-and-graph-ql", + "speaker": "Vladimir Novick", + "speakerSlug": "vladimir-novick", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "vladimir-novick", + "text": "Virtual Reality gives us an ability to experience virtual worlds from the comfort of our homes. But it doesn't have to be experienced alone. In this talk we will see how we can use React, WebVR and GraphQL to create social VR experience in the browser.
+", + "time": "16:50", + "timeString": "16:50", + "title": "Create Collaborative VR Environment in the Browser with React and GraphQL", + "track": Object { + "isPrimary": null, + "name": "Base Camp Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/4QZV07aFSq6KDPQOeOpm", + "bio": "CTO & Co-Founder of EventLoop, engineer and trainer, Google Developer Expert, worldwide speaker and published author. Vladimir works mostly in Web and Mobile fields advocating usage of React, React Native, GraphQL as well serverless architectures and functional languages such as ReasonML.
+", + "color": "#e7e7e7", + "company": "EventLoop, Israel", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Israel", + "githubUrl": "https://github.com/vnovick", + "id": "ck1256gqycb970b71ar9x1qwa", + "idAlt": "ckdh5sze9l6q40b97fwj04myv", + "idMain": "ck1256gqycb970b71ar9x1qwa", + "isNightSpeaker": null, + "label": "Base Camp Track", + "mediumUrl": null, + "name": "Vladimir Novick", + "order": 6, + "ownSite": "http://vnovick.com/", + "slug": "vladimir-novick", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/vnovick", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/VladimirNovick", + }, + Object { + "icon": "site", + "link": "http://vnovick.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#696969", + "twitterUrl": "https://twitter.com/VladimirNovick", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "The main thread, on the web, has a lot of responsibilities. At the same time, web apps are getting more sophisticated every day. Therefore, the main thread gets too busy that will disappoint our user by showing janky frames! The off-main-thread architecture ensures apps run smoothly on every device for everyone. + +In this talk, we will go through the possibilities in browsers such as WebWorker, Worklet, and WebAssembly by introducing practical tools that allow us to boost our user experiences.", + "duration": "20", + "from": "Softiware AS, Norway", + "id": "ckesk381s4y4c0908vya8pj7h", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Summit Track", + "name": "Majid Hajian", + "overridden": true, + "pic": "0GjpUjR7TEKCCKh4mUEA", + "place": "Softiware AS, Norway", + "slug": "let-the-main-thread-breathe", + "speaker": "Majid Hajian", + "speakerSlug": "majid-hajian", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "majid-hajian", + "text": "The main thread, on the web, has a lot of responsibilities. At the same time, web apps are getting more sophisticated every day. Therefore, the main thread gets too busy that will disappoint our user by showing janky frames! The off-main-thread architecture ensures apps run smoothly on every device for everyone.
+In this talk, we will go through the possibilities in browsers such as WebWorker, Worklet, and WebAssembly by introducing practical tools that allow us to boost our user experiences.
+", + "time": "18:25", + "timeString": "18:25", + "title": "Let the Main Thread Breathe!", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/0GjpUjR7TEKCCKh4mUEA", + "bio": "Majid Hajian is a passionate software developer with years of developing and architecting complex web and mobile applications. His passions are Flutter, PWA, and performance. He loves sharing his knowledge with the community by writing and speaking, contributing to open source, and organizing meetups and events. Majid is the award-winning author of the \\"Progressive web app with Angular\\" book by Apress and the \\"Progressive Web Apps\\" video course by PacktPub and Udemy. +He is (co)organizer a few Nordic conferences and meetups including GDG Oslo, FlutterVikings, Mobile Era, and ngVikings.
+", + "color": "#324e00", + "company": "Softiware AS, Norway", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Norway", + "githubUrl": "https://github.com/mhadaily", + "id": "ck1ajmq8j1jvg0b54zw5vpulr", + "idAlt": "ckesk7q9e0g8r0a855i51gyu8", + "idMain": "ck1ajmq8j1jvg0b54zw5vpulr", + "isNightSpeaker": null, + "label": "Summit Track", + "mediumUrl": null, + "name": "Majid Hajian", + "order": 5, + "ownSite": "https://www.majidhajian.com", + "slug": "majid-hajian", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/mhadaily", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/mhadaily", + }, + Object { + "icon": "site", + "link": "https://www.majidhajian.com", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#a4ff00", + "twitterUrl": "https://twitter.com/mhadaily", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "CDK (Cloud development kit) enables developers to build cloud infrastructure using popular programming languages like Python, Typescript, or JavaScript. CDK is a next-level abstraction in infrastructure as code, allowing developers who were traditionally unfamiliar with cloud computing to build scalable APIs and web services using their existing skillset, and do so in only a few lines of code. + +In this talk, you’ll learn how to use the TypeScript flavor of CDK to build a hyper-scalable real-time API with GraphQL, Lambda, DynamoDB, and AWS AppSync . At the end of the talk, I’ll live code an API from scratch in just a couple of minutes and then test out queries, mutations, and subscriptions. + +By the end of the talk, you should have a good understanding of GraphQL, AppSync, and CDK and be ready to build an API in your next project using TypeScript and CDK.", + "duration": "20", + "from": "Amazon AWS, USA", + "id": "ckfqsy5590p9a0970r3erohrh", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "GraphQL", + "name": "Nader Dabit", + "overridden": true, + "pic": "4NF4AeaJS9uxty64CCCX", + "place": "Amazon AWS, USA", + "slug": "building-real-time-serverless-graph-ql-ap-is-on-aws-with-type-script-and-cdk", + "speaker": "Nader Dabit", + "speakerSlug": "nader-dabit", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "nader-dabit", + "text": "CDK (Cloud development kit) enables developers to build cloud infrastructure using popular programming languages like Python, Typescript, or JavaScript. CDK is a next-level abstraction in infrastructure as code, allowing developers who were traditionally unfamiliar with cloud computing to build scalable APIs and web services using their existing skillset, and do so in only a few lines of code.
+In this talk, you’ll learn how to use the TypeScript flavor of CDK to build a hyper-scalable real-time API with GraphQL, Lambda, DynamoDB, and AWS AppSync . At the end of the talk, I’ll live code an API from scratch in just a couple of minutes and then test out queries, mutations, and subscriptions.
+By the end of the talk, you should have a good understanding of GraphQL, AppSync, and CDK and be ready to build an API in your next project using TypeScript and CDK.
+", + "time": "17:50", + "timeString": "17:50", + "title": "Building Real-time Serverless GraphQL APIs on AWS with TypeScript and CDK", + "track": Object { + "isPrimary": null, + "name": "Base Camp Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/glrjtl9T5awAzyT0DZVd", + "bio": "Nader has been developing with React Native for over 2.5 years. He has worked with and trained developers from fortune 500 companies like Amazon, Visa, American Express, and Microsoft, helping them to get up to speed with React Native as quickly as possible.
+", + "color": "#e7e7e7", + "company": "Amazon AWS, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/dabit3", + "id": "ck60gduudqlr30b75qyumd2is", + "idAlt": "ckewl4xnaeecs0908jiz3y3z6", + "idMain": "ck60gduudqlr30b75qyumd2is", + "isNightSpeaker": null, + "label": "Base Camp Track", + "mediumUrl": null, + "name": "Nader Dabit", + "order": 4, + "ownSite": null, + "slug": "nader-dabit", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/dabit3", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/dabit3", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#696969", + "twitterUrl": "https://twitter.com/dabit3", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Every bug is different: Some are lurking around for months, others appear suddenly after the upgrade of a dependency. Some are introduced by us, others by other teams or systems. Some are painfully obvious and affect all users, others only occur in edge (cases). And the ways of finding, and eventually, preventing them, are just as diverse: be it snapshot, unit, integration, end to end tests or automated visual tests, every kind comes with its challenges and opportunities. Testing UIs is hard, but in the end, only test automation can give us the confidence we need to move fast and refactor our code relentlessly. In this talk we are going to look at what kinds of bugs there are, which tests are most effective for catching which, and how we can implement them using modern front end technologies.", + "duration": "20", + "from": "Spotify, Sweden", + "id": "ckfgrakw38agk09705x3exfe9", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Summit Track", + "name": "Iris Schaffer", + "overridden": true, + "pic": "nvoAnC1fQYqRqOuVk9i0", + "place": "Spotify, Sweden", + "slug": "fantastic-bugs-and-where-to-find-them", + "speaker": "Iris Schaffer", + "speakerSlug": "iris-schaffer", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "iris-schaffer", + "text": "Every bug is different: Some are lurking around for months, others appear suddenly after the upgrade of a dependency. Some are introduced by us, others by other teams or systems. Some are painfully obvious and affect all users, others only occur in edge (cases). And the ways of finding, and eventually, preventing them, are just as diverse: be it snapshot, unit, integration, end to end tests or automated visual tests, every kind comes with its challenges and opportunities. Testing UIs is hard, but in the end, only test automation can give us the confidence we need to move fast and refactor our code relentlessly. In this talk we are going to look at what kinds of bugs there are, which tests are most effective for catching which, and how we can implement them using modern front end technologies.
+", + "time": "20:30", + "timeString": "20:30", + "title": "Fantastic Bugs and Where to Find Them", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/nvoAnC1fQYqRqOuVk9i0", + "bio": "Iris is a front end developer with a passion for user experience and design, currently building products at Spotify. She’s also engaged in the Swedish meetup scene where she co-organises a ReasonML meetup.
+", + "color": "#324e00", + "company": "Spotify, Sweden", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Sweden", + "githubUrl": "https://github.com/irisSchaffer", + "id": "ckfgr8nw0j8yp0911rghbhsh8", + "idAlt": "ckfgrg42wqu910b77e7xahaqh", + "idMain": "ckfgr8nw0j8yp0911rghbhsh8", + "isNightSpeaker": null, + "label": "Summit Track", + "mediumUrl": null, + "name": "Iris Schaffer", + "order": 3, + "ownSite": null, + "slug": "iris-schaffer", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/irisSchaffer", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/iris_schaffer", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#a4ff00", + "twitterUrl": "https://twitter.com/iris_schaffer", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "JS awsomeness beyond webpages. First we'll write a cool 2D game (in Javascript) - and then - write AI code (in Javascript!) that will be able to win this game for us. Oh, what a time to be alive!", + "duration": "20", + "from": "Duda, Israel", + "id": "ckfgrkgu98bke0970jt14ogbn", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Liad Yosef", + "overridden": true, + "pic": "krQDfk7MTPGLORiihzDD", + "place": "Duda, Israel", + "qaLink": "", + "slug": "games-are-smarter-than-us", + "speaker": "Liad Yosef", + "speakerSlug": "liad-yosef", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "liad-yosef", + "text": "JS awsomeness beyond webpages. First we'll write a cool 2D game (in Javascript) - and then - write AI code (in Javascript!) that will be able to win this game for us. Oh, what a time to be alive!
+", + "time": "20:30", + "timeString": "20:30", + "title": "Games Are Smarter Than Us", + "track": Object { + "isPrimary": null, + "name": "Base Camp Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/VIX7BTeLQ9eusM5Q9z5j", + "bio": "Liad is the Frontend Architect and Tech Lead in Duda, in charge of its client-side infrastructure, technologies, and performance. +He is a web dev enthusiast for over a decade, juggling React, Webpack and Buzzwords@latest in order to always build the best user experience.
+", + "color": "#e7e7e7", + "company": "Duda, Israel", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Israel", + "githubUrl": "https://github.com/liady/", + "id": "ckfgriy2mquil0b77laq11irz", + "idAlt": "ckfgrlfnwja3u0911ksjtp3a0", + "idMain": "ckfgriy2mquil0b77laq11irz", + "isNightSpeaker": null, + "label": "Base Camp Track", + "mediumUrl": null, + "name": "Liad Yosef", + "order": 2, + "ownSite": null, + "slug": "liad-yosef", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/liady/", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/liadyosef", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#696969", + "twitterUrl": "https://twitter.com/liadyosef", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "In this lightning talk we will be pushing the boundaries of HTMl5 Canvas browser APIs. Join us while we do some experiments with video in the browser to see what’s truly possible. DISCLAIMER: No promises of cross-browser compatibility. Not for the faint of heart. Must be this tall to ride. Attending this lightning talk may result in serious injury or death. All participants must bring a life jacket.", + "duration": "20", + "from": "Software Engineer @Mux, USA", + "id": "ckf3qd8ze0ys60911k6t023mj", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Dylan Jhaveri", + "overridden": true, + "pic": "OqWk4KpJTdqaF0eEULnW", + "place": "Software Engineer @Mux, USA", + "slug": "getting-weird-with-video-manipulation-and-html5-canvas", + "speaker": "Dylan Jhaveri", + "speakerSlug": "dylan-jhaveri", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "dylan-jhaveri", + "text": "In this lightning talk we will be pushing the boundaries of HTMl5 Canvas browser APIs. Join us while we do some experiments with video in the browser to see what’s truly possible. DISCLAIMER: No promises of cross-browser compatibility. Not for the faint of heart. Must be this tall to ride. Attending this lightning talk may result in serious injury or death. All participants must bring a life jacket.
+", + "time": "20:30", + "timeString": null, + "title": "Getting Weird with Video Manipulation and HTML5 Canvas", + "track": Object { + "isPrimary": null, + "name": "Base Camp Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/OqWk4KpJTdqaF0eEULnW", + "bio": "Dylan is a Senior Software Engineer at Mux, a startup building online video infrastructure for developers. Dylan works on the DevEx team to help developers deliver smooth video to their users. Previously he co-founded Crowdcast, a live video streaming platform.
+", + "color": "#e7e7e7", + "company": "Software Engineer @Mux, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/dylanjha", + "id": "ck90bnyfltadk0b84kz6z8msa", + "idAlt": "ckexyxkzb7u7y0a85xblgm8ro", + "idMain": "ck90bnyfltadk0b84kz6z8msa", + "isNightSpeaker": null, + "label": "Base Camp Track", + "mediumUrl": null, + "name": "Dylan Jhaveri", + "order": null, + "ownSite": null, + "slug": "dylan-jhaveri", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/dylanjha", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/dylanjha", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#696969", + "twitterUrl": "https://twitter.com/dylanjha", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Markdown is great for content-driven sites. MDX is even better, letting you embed interactive components directly from your markup. It's usually used for the same linear layouts you often see on many blogs, readmes, and documentation sites. But it doesn't need to be like this. + +In this talk, we'll see how to reshape MDX so we can use it for very different layouts, things like scrollytelling, slide decks, and more.", + "from": "Making open source dev tools, Argentina", + "id": "ckeyby030iq9e0908pmj2k5ie", + "isLightning": true, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Lightning Talk", + "name": "Rodrigo Pombo", + "place": "Making open source dev tools, Argentina", + "slug": "the-x-in-mdx", + "speaker": "Rodrigo Pombo", + "speakerSlug": "rodrigo-pombo", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Markdown is great for content-driven sites. MDX is even better, letting you embed interactive components directly from your markup. It's usually used for the same linear layouts you often see on many blogs, readmes, and documentation sites. But it doesn't need to be like this.
+In this talk, we'll see how to reshape MDX so we can use it for very different layouts, things like scrollytelling, slide decks, and more.
+", + "time": "19:10", + "timeString": "19:10", + "title": "The X in MDX", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/9hgleoJZRbiHuJU3Lzbc", + "bio": "Making open source dev tools and stuff. +Currently building @codehike_
+", + "color": "#003238", + "company": "Making open source dev tools, Argentina", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Argentina", + "githubUrl": "https://github.com/pomber", + "id": "ckeyby3ke8jlh09163wwb7vcd", + "idAlt": "ckeyc0s83iqhi0908va5vv56w", + "idMain": "ckeyby3ke8jlh09163wwb7vcd", + "isNightSpeaker": null, + "label": "Lightning Talk", + "mediumUrl": null, + "name": "Rodrigo Pombo", + "order": null, + "ownSite": "http://pomb.us ", + "slug": "rodrigo-pombo", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/pomber", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/pomber", + }, + Object { + "icon": "site", + "link": "http://pomb.us ", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#2acadd", + "twitterUrl": "https://twitter.com/pomber", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Nx is a next generation suite of build tools. +Next.js is state-of-the-art framework for building web applications. +Together they bring order to the chaos of building multiple web applications across many teams. + +This talk is a quick rundown of how Nx can help you maintain multiple Next.js apps, with multiple teams, while sharing components and libraries for consistent user experience.", + "from": "NRWL, Canada", + "id": "ckf3q9ckr8nxe0b770nj4cd6y", + "isLightning": true, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Lightning Talk", + "name": "Adam L Barrett", + "place": "NRWL, Canada", + "slug": "nx-next-js", + "speaker": "Adam L Barrett", + "speakerSlug": "adam-l-barrett", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Nx is a next generation suite of build tools. +Next.js is state-of-the-art framework for building web applications. +Together they bring order to the chaos of building multiple web applications across many teams.
+This talk is a quick rundown of how Nx can help you maintain multiple Next.js apps, with multiple teams, while sharing components and libraries for consistent user experience.
+", + "time": "19:15", + "timeString": "19:15", + "title": "Nx + Next.js = ❤", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/y6mhUueQGOJT5ksw4wUV", + "bio": "Adam L Barrett is a JavaScript and Front-End consultant, a contributor to open source, and avid bike-shedder. Adam believes, when writing conference bios, he should probably mention his two children, his love of movies and probably his hobbies, like hosting a board game podcast, to help the reader connect with him as a person, but ...well, that sounds sort of manipulative so Adam has chosen not to. Adam is above that.
+", + "color": "#003238", + "company": "NRWL, Canada", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Canada", + "githubUrl": "https://github.com/BigAB", + "id": "ckf286ji653fm0b77mi2egljt", + "idAlt": "ckf287ath50ov0976s6bu6puy", + "idMain": "ckf286ji653fm0b77mi2egljt", + "isNightSpeaker": null, + "label": "Lightning Talk", + "mediumUrl": null, + "name": "Adam L Barrett", + "order": null, + "ownSite": null, + "slug": "adam-l-barrett", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/BigAB", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/adamlbarrett", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#2acadd", + "twitterUrl": "https://twitter.com/adamlbarrett", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "In this talk I’m going to convince you that paid UI components will solve all your problems, and that you should immediately give me all of your money. Maybe. Or perhaps I’ll draw on my experience working both on free and open source tools (jQuery, jQuery UI, NativeScript), as well as paid tools (Kendo UI, KendoReact), and discuss which type of tool makes sense depending on your team and needs. In any case the talk will go fast because lightning is in the title.", + "from": "Progress, US", + "id": "ckf3q32lgdaci097014lc3b0g", + "isLightning": true, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Lightning Talk", + "name": "TJ VanToll", + "place": "Progress, US", + "slug": "why-paid-ui-components-aren-t-evil", + "speaker": "TJ VanToll", + "speakerSlug": "tj-van-toll", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "In this talk I’m going to convince you that paid UI components will solve all your problems, and that you should immediately give me all of your money. Maybe. Or perhaps I’ll draw on my experience working both on free and open source tools (jQuery, jQuery UI, NativeScript), as well as paid tools (Kendo UI, KendoReact), and discuss which type of tool makes sense depending on your team and needs. In any case the talk will go fast because lightning is in the title.
+", + "time": "19:10", + "timeString": "19:10", + "title": "Why Paid UI Components Aren’t Evil", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/Wjtwq1ULTpOOYaDG2cKL", + "bio": "TJ VanToll is a front-end developer, tech author, speaker, and a Principal Developer Advocate. He has over a decade of web development experience, including a few years working on the jQuery and NativeScript teams. Nowadays TJ spends his time helping web developers build awesome UIs with KendoReact.
+", + "color": "#003238", + "company": "Progress, US", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "US", + "githubUrl": "https://github.com/tjvantoll", + "id": "ckf3q364wdada0970kc1dd6j9", + "idAlt": "ckf3q3qsv8mth0b774rkio8fk", + "idMain": "ckf3q364wdada0970kc1dd6j9", + "isNightSpeaker": null, + "label": "Lightning Talk", + "mediumUrl": null, + "name": "TJ VanToll", + "order": null, + "ownSite": null, + "slug": "tj-van-toll", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/tjvantoll", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/tjvantoll", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#2acadd", + "twitterUrl": "https://twitter.com/tjvantoll", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "There are many ways to measure web performance, but the most important thing is to measure what actually matters to users. This talk is about how to measure, analyze and fix slow running JavaScript code using browser APIs.", + "duration": "20", + "from": "DAZN, UK", + "id": "ckfgrr1wfqv5s0b773s7kuwel", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Summit Track", + "name": "Richie McColl ", + "overridden": true, + "pic": "ZC6U2kRPWlKhXkwUFOgt", + "place": "DAZN, UK", + "slug": "visualising-front-end-performance-bottlenecks", + "speaker": "Richie McColl", + "speakerSlug": "richie-mc-coll", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "richie-mccoll", + "text": "There are many ways to measure web performance, but the most important thing is to measure what actually matters to users. This talk is about how to measure, analyze and fix slow running JavaScript code using browser APIs.
+", + "time": "16:50", + "timeString": "16:50", + "title": "Visualising Front-End Performance Bottlenecks", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/ZC6U2kRPWlKhXkwUFOgt", + "bio": "Software engineer. Passionate about web performance.
+", + "color": "#324e00", + "company": "DAZN, UK", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "UK", + "githubUrl": "https://github.com/richiemccoll", + "id": "ckfgrpswvqv2s0b777vkm9p6j", + "idAlt": "ckfgrrwsljamc0911hbx9p8st", + "idMain": "ckfgrpswvqv2s0b777vkm9p6j", + "isNightSpeaker": null, + "label": "Summit Track", + "mediumUrl": null, + "name": "Richie McColl ", + "order": null, + "ownSite": null, + "slug": "richie-mc-coll", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/richiemccoll", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/richiemccoll", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#a4ff00", + "twitterUrl": "https://twitter.com/richiemccoll", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Do you know that the first novel ever written dates back in 1021. Its author is the Japan noblewoman Murasaki Shikibu. Till then countless of writers put their thoughts on paper and countless of readers experience their stories. People write for decades and we, as software developers, kind of ignore their craft. We write too. Not novels but software. Isn't it this still writing? Believe it or not there is a lot in common between creating fiction and writing code. In this presentation we will see how close we are to giants like Hemingway and Stephen King. Can we get some of their wisdom and apply it to our daily job as engineers. Come to this talk and will get a few practical advices. I hope my presentation will make you a slightly better React developer.", + "duration": "20", + "from": "Antidote.me, Bulgaria", + "id": "ckfgrwhfb8cvu0970vva4pub0", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Krasimir Tsonev", + "overridden": true, + "pic": "wDjA3SUISiivxT7f6Du7", + "place": "Antidote.me, Bulgaria", + "qaLink": "", + "slug": "we-are-all-hemingway", + "speaker": "Krasimir Tsonev", + "speakerSlug": "krasimir-tsonev", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "krasimir-tsonev", + "text": "Do you know that the first novel ever written dates back in 1021. Its author is the Japan noblewoman Murasaki Shikibu. Till then countless of writers put their thoughts on paper and countless of readers experience their stories. People write for decades and we, as software developers, kind of ignore their craft. We write too. Not novels but software. Isn't it this still writing? Believe it or not there is a lot in common between creating fiction and writing code. In this presentation we will see how close we are to giants like Hemingway and Stephen King. Can we get some of their wisdom and apply it to our daily job as engineers. Come to this talk and will get a few practical advices. I hope my presentation will make you a slightly better React developer.
+", + "time": "19:55", + "timeString": "19:55", + "title": "We Are All Hemingway", + "track": Object { + "isPrimary": null, + "name": "Base Camp Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/wDjA3SUISiivxT7f6Du7", + "bio": "Krasimir has been writing for more then 10 years. Mostly code but also articles and books. You'll find him speaking on web related topics. Last couple of yeas he's been using React and its ecosystem extensively at Antidote.me. Where he and his team mates are trying to help patients reaching clinical trials.
+", + "color": "#e7e7e7", + "company": "Antidote.me, Bulgaria", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Bulgaria", + "githubUrl": "https://github.com/krasimir", + "id": "ckfgrv03sjavp09118gozahwf", + "idAlt": "ckfgso9zbjcu60911g5brsvzq", + "idMain": "ckfgrv03sjavp09118gozahwf", + "isNightSpeaker": null, + "label": "Base Camp Track", + "mediumUrl": null, + "name": "Krasimir Tsonev", + "order": null, + "ownSite": null, + "slug": "krasimir-tsonev", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/krasimir", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/KrasimirTsonev", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#696969", + "twitterUrl": "https://twitter.com/KrasimirTsonev", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "As you add more components to your React application, you'll start to notice performance issues. Maybe data isn't loading as fast or you notice that things are happening out of order. There are tools and techniques you can use to handle these kind of issue at a large scale. In this talk, attendees will learn how to analyze their React apps for solvable issues and learn some state management and async handling techniques.", + "duration": "20", + "from": "Conducto, USA", + "id": "ckfmjhmjinntt0970n9vb4fx9", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Milecia McGregor", + "overridden": true, + "pic": "zKO9aPmeRNJnjg2Gs9aw", + "place": "Conducto, USA", + "slug": "making-your-react-apps-perform-at-scale", + "speaker": "Milecia McGregor", + "speakerSlug": "milecia-mc-gregor", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "milecia-mcgregor", + "text": "As you add more components to your React application, you'll start to notice performance issues. Maybe data isn't loading as fast or you notice that things are happening out of order. There are tools and techniques you can use to handle these kind of issue at a large scale. In this talk, attendees will learn how to analyze their React apps for solvable issues and learn some state management and async handling techniques.
+", + "time": "18:25", + "timeString": "18:25", + "title": "Making Your React Apps Perform At Scale", + "track": Object { + "isPrimary": null, + "name": "Base Camp Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/zKO9aPmeRNJnjg2Gs9aw", + "bio": "Milecia is a senior software engineer that's worked with JavaScript, Angular, React, Node, PHP, Python, .NET, SQL, AWS, Heroku, Azure, and many other tools to build web apps. She also has a master's degree in mechanical and aerospace engineering and has published research in machine learning and robotics. She started Flipped Coding in 2017 to help people learn web development with real-world projects and she publishes articles covering all aspects of software on several publications, including freeCodeCamp. In her free time, she spends time with her husband and dogs while learning to play the harmonica and trying to create her own mad scientist lab.
+", + "color": "#e7e7e7", + "company": "Conducto, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/flippedcoder", + "id": "ckfmjflcjnnld0970kd9vy8zk", + "idAlt": "ckfmjjfsp0kp50b77z01oulz2", + "idMain": "ckfmjflcjnnld0970kd9vy8zk", + "isNightSpeaker": null, + "label": "Base Camp Track", + "mediumUrl": null, + "name": "Milecia McGregor", + "order": null, + "ownSite": null, + "slug": "milecia-mc-gregor", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/flippedcoder", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/FlippedCoding", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#696969", + "twitterUrl": "https://twitter.com/FlippedCoding", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "As a full-stack engineer with a bias towards the database...and a career spent working with and evangelizing database and distributed systems...why GraphQL? In this talk, I will share some of my personal journey with React, GraphQL, their respective communities, and my point-of-view on the future.", + "from": "Hasura, USA", + "id": "ckfwf4q7ik19w0b774j7iztn3", + "isLightning": true, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Lightning Talk", + "name": "Adron Hall", + "place": "Hasura, USA", + "slug": "graph-ql-and-react-two-great-tastes-that-taste-great-together", + "speaker": "Adron Hall", + "speakerSlug": "adron-hall", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "As a full-stack engineer with a bias towards the database...and a career spent working with and evangelizing database and distributed systems...why GraphQL? In this talk, I will share some of my personal journey with React, GraphQL, their respective communities, and my point-of-view on the future.
+", + "time": "19:15", + "timeString": "19:15", + "title": "GraphQL and React - Two Great Tastes that Taste Great Together", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/Btg7U3P8Qyiv2tE2oL3o", + "bio": "Adron has a wide range of companies, programming, and database experience. This includes companies ranging from small startups to 200k plus person enterprises and the respective challenges of design and architecture for these companies. In programming, Adron is fluent in C#, JavaScript, and Go, with experience in F#, Java, C++, Erlang, COBOL, and others, for a truly polyglot perspective of language approaches and their technology stacks. But, I get super frustrated writing in the third person for various reasons. So I like to think of me as jovial, proactive, test & code, code & test, get things done well, software architect, engineer, code monkey, coder, and distributed systems advocate. I go by the title of “Coder, Messenger, Recon” as it seems to encompass what I do.
+", + "color": "#003238", + "company": "Hasura, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": null, + "id": "ckfwf0s5kcfwk0911ddh8zyn6", + "idAlt": "ckfwf9cs9k1m20b77doyo8t5c", + "idMain": "ckfwf0s5kcfwk0911ddh8zyn6", + "isNightSpeaker": null, + "label": "Lightning Talk", + "mediumUrl": null, + "name": "Adron Hall", + "order": null, + "ownSite": " https://youtube.com/c/ThrashingCode", + "slug": "adron-hall", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/adron", + }, + Object { + "icon": "site", + "link": " https://youtube.com/c/ThrashingCode", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#2acadd", + "twitterUrl": "https://twitter.com/adron", + }, + ], + "performanceTeam": Array [], + "workshops": Array [ + Object { + "activities": Object { + "workshops": Array [ + Object { + "slug": "react-type-script-tdd-in-web-storm", + "title": "React+TypeScript+TDD in WebStorm", + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/wCW2J28GQTSX6fYvzOjd", + "bio": "Paul is a PyCharm and WebStorm Developer Advocate at JetBrains. Before that, Paul was a co-founder of Zope Corporation, taking the first open source application server through $14M of funding. Paul has bootstrapped both the Python Software Foundation and the Plone Foundation. Prior to that, Paul was an officer in the US Navy, starting navy.mil in 1993.
+", + "company": "JetBrains, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/pauleveritt", + "id": "ckemwzf3xsx900908nrw4z1xo", + "idMain": "ckemwzf3xsx900908nrw4z1xo", + "info": Array [], + "mediumUrl": null, + "name": "Paul Everitt", + "ownSite": null, + "slug": "paul-everitt", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/pauleveritt", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/paulweveritt", + }, + ], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": "https://twitter.com/paulweveritt", + "workshops": Array [ + Object { + "slug": "react-type-script-tdd-in-web-storm", + "title": "React+TypeScript+TDD in WebStorm", + }, + ], + "workshopsActivity": Array [], + }, + Object { + "activities": Object { + "workshops": Array [ + Object { + "slug": "rethinking-server-state-with-react-query", + "title": "Rethinking Server State with React Query", + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/VKDpOnSTiG01nIxrnAUw", + "bio": "Tanner Linsley is an entrepreneur and open source creator who loves React and JavaScript. He has built and still maintain several well-known open source libraries like React Query, React Table, React Virtual, React Form, React Charts, React Static, and even Chart.js He co-founded Nozzle.io 6 years ago and is currently helping it grow as VP of UI and UX.
+When not programming, Tanner spends his free time traveling, recording music, film-making, and vacationing with his wife and children.
+", + "company": "Nozzle.io, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": null, + "id": "ck8ac11fpjxe00b84q5ep78dy", + "idMain": "ck8ac11fpjxe00b84q5ep78dy", + "info": Array [], + "mediumUrl": null, + "name": "Tanner Linsley", + "ownSite": "https://tanstack.com/", + "slug": "tanner-linsley", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/tannerlinsley", + }, + Object { + "icon": "site", + "link": "https://tanstack.com/", + }, + ], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": "https://twitter.com/tannerlinsley", + "workshops": Array [ + Object { + "slug": "rethinking-server-state-with-react-query", + "title": "Rethinking Server State with React Query", + }, + ], + "workshopsActivity": Array [], + }, + Object { + "activities": Object { + "workshops": Array [ + Object { + "slug": "zero-to-production-with-fullstack-graph-ql-and-react", + "title": "Zero to Production with Fullstack GraphQL and React", + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/Fnsbp6mDTtufDfhS9KKA", + "bio": "Allison is a solutions engineer at Hasura.
+", + "company": "Hasura, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": null, + "id": "ckg6z6kif4z4e0b773vjxuh20", + "idMain": "ckg6z6kif4z4e0b773vjxuh20", + "info": Array [], + "mediumUrl": null, + "name": "Allison Kunz", + "ownSite": "https://www.linkedin.com/in/tafka-labs/", + "slug": "allison-kunz", + "socials": Array [ + Object { + "icon": "site", + "link": "https://www.linkedin.com/in/tafka-labs/", + }, + ], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": null, + "workshops": Array [ + Object { + "slug": "zero-to-production-with-fullstack-graph-ql-and-react", + "title": "Zero to Production with Fullstack GraphQL and React", + }, + ], + "workshopsActivity": Array [], + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/vy4IpVYBSnijF65EiDkB", + "bio": "Ben is a Christian, husband, and father of 3, with 15 years of professional experience developing user interfaces for the Web. He currently is a Principal Frontend Engineer at Stitch Fix on their Frontend Platform team, helping architect their Design System. Ben also is a Google Developer Expert, Microsoft MVP, and enjoys playing basketball, DIY, watching movies, and tweeting (@benmvp) / blogging (benmvp.com) about his experiences with new web technologies.
+", + "company": "Stitch Fix, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/benmvp", + "id": "ckel7x1y0rfgs0a85b69oxfif", + "idAlt": "ckesjzm320blv09160hct2yne", + "idMain": "ckel7x1y0rfgs0a85b69oxfif", + "isNightSpeaker": null, + "label": "Summit Track", + "mediumUrl": null, + "name": "Ben Ilegbodu", + "order": 22, + "ownSite": "https://www.benmvp.com/", + "slug": "ben-ilegbodu", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/benmvp", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/benmvp", + }, + Object { + "icon": "site", + "link": "https://www.benmvp.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/benmvp", + }, + Object { + "activities": Object { + "workshops": Array [ + Object { + "slug": "build-full-featured-frontend-app-with-svelte", + "title": "Build Full Featured Frontend App with Svelte", + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/t9XoPJGQUmaXcSvoNSl4", + "bio": "Mikhail is a developer with 10 years of expertise building web +applications. He used a variety of frameworks, throughout his career +starting with jQuery , AngularJS and Polymer; then he discovered VueJS and used it for several projects. Since 2019 he became a happy user of Svelte v3. +Besides fullstack development for enterprise companies Mikhail is doing open source projects and speaks on meetups and conferences about various topics in modern web development. +Mikhail runs a local Svelte meetup group in Amsterdam.
+", + "company": "ING, Netherlands", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Netherlands", + "githubUrl": "https://github.com/shershen08", + "id": "ck5y2i5nshr4s0b6635ypswup", + "idMain": "ck5y2i5nshr4s0b6635ypswup", + "info": Array [], + "mediumUrl": null, + "name": "Mikhail Kuznetcov", + "ownSite": null, + "slug": "mikhail-kuznetcov", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/shershen08", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/legkoletat", + }, + ], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": "https://twitter.com/legkoletat", + "workshops": Array [ + Object { + "slug": "build-full-featured-frontend-app-with-svelte", + "title": "Build Full Featured Frontend App with Svelte", + }, + ], + "workshopsActivity": Array [], + }, + Object { + "activities": Object { + "workshops": Array [ + Object { + "slug": "getting-started-with-suspense-and-concurrent-rendering-in-react", + "title": "Getting Started with Suspense and Concurrent Rendering in React", + }, + Object { + "slug": "getting-started-with-suspense-and-concurrent-rendering-in-react-group-2", + "title": "Getting Started with Suspense and Concurrent Rendering in React (Group 2)", + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/CgqbTtCjTxyCgI04TDNA", + "bio": "Maurice de Beijer is an independent software consultant and trainer. He specializes in JavaScript, React, and ASP.NET Core. His work includes a large, global, safety application for the oil and gas industry. Maurice is also active in the open source community. He teaches ECMAScript, TypeScript, React, RxJS and ASP.NET courses. Since 2005, he has received Microsoft’s Yearly Most Valuable Professional Award. Maurice is also active in the Dutch dotNed user group and helps organize its meetings.
+", + "company": "Independent Software Consultant and Trainer, Netherlands", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Netherlands", + "githubUrl": null, + "id": "ck69gn2zbk5t30b75bqs18o5e", + "idMain": "ck69gn2zbk5t30b75bqs18o5e", + "info": Array [], + "mediumUrl": null, + "name": " Maurice de Beijer", + "ownSite": null, + "slug": "maurice-de-beijer", + "socials": Array [], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": null, + "workshops": Array [ + Object { + "slug": "getting-started-with-suspense-and-concurrent-rendering-in-react", + "title": "Getting Started with Suspense and Concurrent Rendering in React", + }, + Object { + "slug": "getting-started-with-suspense-and-concurrent-rendering-in-react-group-2", + "title": "Getting Started with Suspense and Concurrent Rendering in React (Group 2)", + }, + ], + "workshopsActivity": Array [], + }, + Object { + "activities": Object { + "workshops": Array [ + Object { + "slug": "automated-tagging-system-with-tensorflow-js", + "title": "Automated Tagging System with TensorflowJS", + }, + Object { + "slug": "automated-tagging-system-with-tensorflow-js", + "title": "Automated Tagging System with TensorflowJS", + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/GgNnymRS5GJKBjkB0euA", + "bio": "Rick has a master's degree in Physics at TU Delft. +Rick gives courses and workshops at school of data science in the fields of data science, machine learning and deep learning to companies and consumers. +Additionally, Rick co-founded a company Mech Punk in which they make VR controlled robots that can be controlled from any place of the world.
+", + "company": "School of Data Science, Netherlands", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Netherlands", + "githubUrl": "https://github.com/IRiViI", + "id": "ck7emkdqivm4p0b20b1fw17th", + "idMain": "ck7emkdqivm4p0b20b1fw17th", + "info": Array [], + "mediumUrl": null, + "name": "Rick Vink", + "ownSite": null, + "slug": "rick-vink", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/IRiViI", + }, + ], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": null, + "workshops": Array [ + Object { + "slug": "automated-tagging-system-with-tensorflow-js", + "title": "Automated Tagging System with TensorflowJS", + }, + ], + "workshopsActivity": Array [ + Object { + "slug": "automated-tagging-system-with-tensorflow-js", + "title": "Automated Tagging System with TensorflowJS", + }, + ], + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/2jqu4t6TSlKDcqRFP6zT", + "bio": "Max Stoiber is a Staff Software Engineer at Gatsby, inventing the future of web development. Previously he worked at GitHub, who acquired the startup he co-founded, Spectrum. He is well known for making styled-components, react-boilerplate, and a wide variety of other open source projects in the React ecosystem.
+", + "company": "Gatsby, Austria", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Austria", + "githubUrl": "https://github.com/mxstbr", + "id": "ck0zj6ytry8s20b71lgpuqves", + "idAlt": "ck341dbmbqob60b20hrylkplw", + "idMain": "ck0zj6ytry8s20b71lgpuqves", + "isNightSpeaker": null, + "label": "Panel Discussion", + "mediumUrl": null, + "name": "Max Stoiber", + "order": 70, + "ownSite": "https://mxstbr.com/", + "slug": "max-stoiber", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/mxstbr", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/mxstbr", + }, + Object { + "icon": "site", + "link": "https://mxstbr.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/mxstbr", + }, + Object { + "activities": Object { + "workshops": Array [ + Object { + "slug": "broken-promises", + "title": "Broken Promises", + }, + Object { + "slug": "broken-promises", + "title": "Broken Promises", + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/4LTWaL5SpOCr2oBbS8rq", + "bio": "Node.js TSC member, PhD, Technical Director @ NearForm, IoT Expert, Consultant, author of Pino and Fastify. Co-author of the book \\"Node.js Cookbook, Third Edition\\" edited by Packt.
+", + "company": "NearForm, Italy", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Italy", + "githubUrl": "https://github.com/mcollina", + "id": "ck38s6qxa28h90b66plt7e737", + "idMain": "ck38s6qxa28h90b66plt7e737", + "info": Array [], + "mediumUrl": "http://matteocollina.com/", + "name": "Matteo Collina", + "ownSite": "", + "slug": "matteo-collina", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/mcollina", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/matteocollina", + }, + Object { + "icon": "med", + "link": "http://matteocollina.com/", + }, + ], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": "https://twitter.com/matteocollina", + "workshops": Array [ + Object { + "slug": "broken-promises", + "title": "Broken Promises", + }, + ], + "workshopsActivity": Array [ + Object { + "slug": "broken-promises", + "title": "Broken Promises", + }, + ], + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/wMXZaraBQ2yZbNjZec9N", + "bio": "Sid builds tools for developers. In the past, he worked on Design Systems at Auth0 and as the frontend architect at Practo. He loves talking about design, performance and open source.
+", + "company": "CodeSandbox, Netherlands", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Netherlands", + "githubUrl": "https://github.com/siddharthkp", + "id": "ck30bhsz8gvw80b669dzgs7sk", + "idAlt": "ckcepj1vw5st60903w7lr3ker", + "idMain": "ck30bhsz8gvw80b669dzgs7sk", + "isNightSpeaker": null, + "label": "Workshop", + "mediumUrl": null, + "name": "Siddharth Kshetrapal", + "order": 9, + "ownSite": null, + "slug": "siddharth-kshetrapal", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/siddharthkp", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/siddharthkp", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/siddharthkp", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/4QZV07aFSq6KDPQOeOpm", + "bio": "CTO & Co-Founder of EventLoop, engineer and trainer, Google Developer Expert, worldwide speaker and published author. Vladimir works mostly in Web and Mobile fields advocating usage of React, React Native, GraphQL as well serverless architectures and functional languages such as ReasonML.
+", + "company": "EventLoop, Israel", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Israel", + "githubUrl": "https://github.com/vnovick", + "id": "ck1256gqycb970b71ar9x1qwa", + "idAlt": "ckdh5sze9l6q40b97fwj04myv", + "idMain": "ck1256gqycb970b71ar9x1qwa", + "isNightSpeaker": null, + "label": "Base Camp Track", + "mediumUrl": null, + "name": "Vladimir Novick", + "order": 6, + "ownSite": "http://vnovick.com/", + "slug": "vladimir-novick", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/vnovick", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/VladimirNovick", + }, + Object { + "icon": "site", + "link": "http://vnovick.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/VladimirNovick", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/glrjtl9T5awAzyT0DZVd", + "bio": "Nader has been developing with React Native for over 2.5 years. He has worked with and trained developers from fortune 500 companies like Amazon, Visa, American Express, and Microsoft, helping them to get up to speed with React Native as quickly as possible.
+", + "company": "Amazon AWS, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/dabit3", + "id": "ck60gduudqlr30b75qyumd2is", + "idAlt": "ckewl4xnaeecs0908jiz3y3z6", + "idMain": "ck60gduudqlr30b75qyumd2is", + "isNightSpeaker": null, + "label": "Base Camp Track", + "mediumUrl": null, + "name": "Nader Dabit", + "order": 4, + "ownSite": null, + "slug": "nader-dabit", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/dabit3", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/dabit3", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/dabit3", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/QlY3D49T5iDadzDF7ZXw", + "bio": "Open source fanatic, speaker and trainer. Author of MobX, MobX-State-Tree, Immer and a plethora of smaller packages. On a continuous quest to make programming as natural as possible. React, JavaScript and TypeScript fan. Working at Facebook on dev tooling for mobile developers.
+", + "company": "Facebook, UK", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "UK", + "githubUrl": "https://github.com/mweststrate", + "id": "ck30crtskgtbl0b3239sszqt4", + "idAlt": "ckdh5769ol4q50b97vulywvb5", + "idMain": "ck30crtskgtbl0b3239sszqt4", + "isNightSpeaker": null, + "label": "Summit Track", + "mediumUrl": null, + "name": "Michel Weststrate", + "order": 19, + "ownSite": null, + "slug": "michel-weststrate", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/mweststrate", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/mweststrate", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/mweststrate", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/jx66c2DKQ3KhZSOiLxXS", + "bio": "Founder at React GraphQL Academy and LeanJS. Developer and Coach passionate about JavaScript, React and GraphQL. Organizer of the JavaScript London Meetup and other popular meetups in the EU.
+", + "company": "React GraphQL Academy, UK", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "UK", + "githubUrl": "https://github.com/alexlbr", + "id": "ck10teywmv6940b541heiz22b", + "idAlt": "ckcepk8705sxm0903ficz56se", + "idMain": "ck10teywmv6940b541heiz22b", + "isNightSpeaker": null, + "label": "Workshop", + "mediumUrl": null, + "name": "Alex Lobera", + "order": 7, + "ownSite": null, + "slug": "alex-lobera", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/alexlbr", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/alex_lobera", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/alex_lobera", + }, + Object { + "activities": Object { + "workshops": Array [ + Object { + "slug": "graph-ql-workshop", + "title": "GraphQL Workshop", + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/sDbtalRTKQ7lQXzPARHp", + "bio": "Kitze founded React Academy to teach React and GraphQL around the world. He's the maker of Sizzy - the browser for designers and developers. He's documenting his journey on YouTube. He made products like JSUI, Twizzy, Lucky Retweet, OK Google, etc.
+", + "company": "React Academy, Poland", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Poland", + "githubUrl": "https://github.com/kitze", + "id": "ck10t71go59pg0b71iw2zrad5", + "idMain": "ck10t71go59pg0b71iw2zrad5", + "info": Array [], + "mediumUrl": null, + "name": "Kitze", + "ownSite": null, + "slug": "kitze", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/kitze", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/thekitze", + }, + ], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": "https://twitter.com/thekitze", + "workshops": Array [ + Object { + "slug": "graph-ql-workshop", + "title": "GraphQL Workshop", + }, + ], + "workshopsActivity": Array [], + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/8HarhhMS6OPV6qWV9VIY", + "bio": "Kent C. Dodds is a world renowned speaker, teacher, and trainer and he's actively involved in the open source community as a maintainer and contributor of hundreds of popular npm packages. Kent is the creator of TestingJavaScript.com and he's an instructor on egghead.io and Frontend Masters. He's also a Google Developer Expert. Kent is happily married and the father of four kids. He likes his family, code, JavaScript, and React.
+", + "company": "Trainer, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/kentcdodds/", + "id": "ck1qix0arx7ve0b71dtvp0d32", + "idAlt": "ckceptfut77m60b97gr0h0zme", + "idMain": "ck1qix0arx7ve0b71dtvp0d32", + "isNightSpeaker": null, + "label": "Summit Track", + "mediumUrl": null, + "name": "Kent C. Dodds", + "order": 120, + "ownSite": "https://kentcdodds.com/", + "slug": "kent-c-dodds", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/kentcdodds/", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/kentcdodds/", + }, + Object { + "icon": "site", + "link": "https://kentcdodds.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/kentcdodds/", + }, + ], +} +`; + +exports[`RS should prepare sponsors 1`] = ` +Array [ + Object { + "category": "Platinum", + "list": Array [ + Object { + "alt": "NRWL", + "category": "Platinum", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck2yo98gjc70b0b20x2wx75px", + "idAlt": "ck2yoa8jcc73y0b20x0etmy91", + "img": "https://media.graphcms.com/jlH7YpPGQAWkqpdMRUgw", + "link": "https://nx.dev/React?utm_source=ReactSummitOct20&utm_medium=twitter&utm_campaign=ReactSummitOct20", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/jlH7YpPGQAWkqpdMRUgw", + }, + "id": "ck2yo98gjc70b0b20x2wx75px", + "site": "https://nx.dev/React?utm_source=ReactSummitOct20&utm_medium=twitter&utm_campaign=ReactSummitOct20", + "status": "PUBLISHED", + "title": "NRWL", + }, + "status": "PUBLISHED", + "width": 300, + }, + Object { + "alt": "AWS Amplify", + "category": "Platinum", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck195k24ve93u0b71qbykb9i6", + "idAlt": "ck6jdhesgvtvu0b202vkro3ax", + "img": "https://media.graphcms.com/E3oDvNI0TqCzhnDlFQLA", + "link": "https://docs.amplify.aws/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/I9ltQ0oGTGaZTLS80b1h", + }, + "id": "ck195k24ve93u0b71qbykb9i6", + "site": "https://docs.amplify.aws/", + "status": "PUBLISHED", + "title": "AWS Amplify", + }, + "status": "PUBLISHED", + "width": 210, + }, + ], + "mod": "sponsors-block_xl", + "title": "Platinum", + }, + Object { + "category": "Gold", + "list": Array [ + Object { + "alt": "Vercel", + "category": "Gold", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck6tmilx3gdr60b20nsgdzbs8", + "idAlt": "ck6tmj727gdut0b207rpzqz50", + "img": "https://media.graphcms.com/cByyPFSURQiCrtpBqffh", + "link": "https://vercel.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/cByyPFSURQiCrtpBqffh", + }, + "id": "ck6tmilx3gdr60b20nsgdzbs8", + "site": "https://vercel.com/", + "status": "PUBLISHED", + "title": "Vercel", + }, + "status": "PUBLISHED", + "width": 210, + }, + Object { + "alt": "Apollo", + "category": "Gold", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck74hl2lf9hii0b20pcymg98h", + "idAlt": "ck74hlie44hzl0b98e4m25o5b", + "img": "https://media.graphcms.com/Un13J1qjTT2Af1CSPsQS", + "link": "https://bit.ly/35QDkfn", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/Un13J1qjTT2Af1CSPsQS", + }, + "id": "ck74hl2lf9hii0b20pcymg98h", + "site": "https://bit.ly/35QDkfn", + "status": "PUBLISHED", + "title": "Apollo", + }, + "status": "PUBLISHED", + "width": 230, + }, + Object { + "alt": "MUX", + "category": "Gold", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck8jvu4868tgx0b20llkwc0l0", + "idAlt": "ckewwo9dv6hx10a85p947vkap", + "img": "https://media.graphcms.com/fYDZapKTMozYMGEAnzWg", + "link": "https://get.mux.com/3hhhcMV", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/1mzHE2TNS5uoBxP4eTdP", + }, + "id": "ck8jvu4868tgx0b20llkwc0l0", + "site": "https://get.mux.com/3hhhcMV", + "status": "PUBLISHED", + "title": "MUX", + }, + "status": "PUBLISHED", + "width": 200, + }, + Object { + "alt": "Progress (kendo-ui)", + "category": "Gold", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckf3px2b78lhy0b77b2yk49o6", + "idAlt": "ckf3pxlfad9eq0970zbqvsndj", + "img": "https://media.graphcms.com/MZzx439cT9Why6B7AWcB", + "link": "https://www.telerik.com/kendo-react-ui/?utm_medium=event&utm_source=reactsummit&utm_campaign=kendo-ui-react-awareness-react-summit-2020-event", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/a8B5Lmo4To23NlNWzPuF", + }, + "id": "ckf3px2b78lhy0b77b2yk49o6", + "site": "https://www.telerik.com/kendo-react-ui/?utm_medium=event&utm_source=reactsummit&utm_campaign=kendo-ui-react-awareness-react-summit-2020-event", + "status": "PUBLISHED", + "title": "Progress (kendo-ui)", + }, + "status": "PUBLISHED", + "width": 200, + }, + Object { + "alt": "Miro", + "category": "Gold", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckf7xy7wcdy400b77l7q96o61", + "idAlt": "ckf7xyxundy7m0b7749dli4tt", + "img": "https://media.graphcms.com/7LsnlHCPQmW5sG5QliRY", + "link": "https://miro.com/careers/?utm_source=reactsummit&utm_medium=referral&utm_campaign=hr_referrals", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/7NOP0PglRCiwmSfCeIXB", + }, + "id": "ckf7xy7wcdy400b77l7q96o61", + "site": "https://miro.com/careers/?utm_source=reactsummit&utm_medium=referral&utm_campaign=hr_referrals", + "status": "PUBLISHED", + "title": "Miro", + }, + "status": "PUBLISHED", + "width": 85, + }, + Object { + "alt": "Hasura", + "category": "Gold", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck8g0aklxylxo0b84s9yli4xq", + "idAlt": "ckfw8k80kg8480970db2fpug2", + "img": "https://media.graphcms.com/Gcax4M2kRX2k5p7bJoIR", + "link": "https://hasura.io/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/HnYf2aWgQYeHQdK22vhU", + }, + "id": "ck8g0aklxylxo0b84s9yli4xq", + "site": "https://hasura.io/", + "status": "PUBLISHED", + "title": "Hasura", + }, + "status": "PUBLISHED", + "width": 100, + }, + ], + "mod": "logos_md sponsors-block_lg", + "title": "Gold", + }, + Object { + "category": "Silver", + "list": Array [ + Object { + "alt": "JetBrains", + "category": "Silver", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck5im750as5k20b201kkm1k37", + "idAlt": "ck5im7ybssnit0b66r0po5pwe", + "img": "https://media.graphcms.com/AQuaXIwRJuACty3wtfkT", + "link": "https://www.jetbrains.com/?utm_source=website&utm_medium=referral&utm_campaign=webstorm&utm_content=link-react-summit-website", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/AQuaXIwRJuACty3wtfkT", + }, + "id": "ck5im750as5k20b201kkm1k37", + "site": "https://www.jetbrains.com/?utm_source=website&utm_medium=referral&utm_campaign=webstorm&utm_content=link-react-summit-website", + "status": "PUBLISHED", + "title": "JetBrains", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "Chromatic", + "category": "Silver", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck61td6sdnebm0b20tlgaszq8", + "idAlt": "ck61tl32iu4uf0b75hh1sbifk", + "img": "https://media.graphcms.com/KlzcAD3pQsqQfKJu74Qo", + "link": "https://chromatic.com/?utm_source=event&utm_medium=website&utm_campaign=react_summit", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/KlzcAD3pQsqQfKJu74Qo", + }, + "id": "ck61td6sdnebm0b20tlgaszq8", + "site": "https://chromatic.com/?utm_source=event&utm_medium=website&utm_campaign=react_summit", + "status": "PUBLISHED", + "title": "Chromatic", + }, + "status": "PUBLISHED", + "width": 250, + }, + Object { + "alt": "Yoast", + "category": "Silver", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck6l1xppx095d0b20p4nuhpnn", + "idAlt": "ck6l1ywbs098w0b20vk0oj6tx", + "img": "https://media.graphcms.com/daIDqyFRVcKpkGYq8YhA", + "link": "https://yoast.com/#utm_Campaign=sponsoring&utm_content=reactsummit", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/daIDqyFRVcKpkGYq8YhA", + }, + "id": "ck6l1xppx095d0b20p4nuhpnn", + "site": "https://yoast.com/#utm_Campaign=sponsoring&utm_content=reactsummit", + "status": "PUBLISHED", + "title": "Yoast", + }, + "status": "PUBLISHED", + "width": 100, + }, + ], + "mod": "logos_sm sponsors-block_lg", + "title": "Silver", + }, + Object { + "category": "ProductionPartner", + "list": Array [ + Object { + "alt": "Focus Reactive", + "category": "ProductionPartner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck0zk3adkpuu60b49tpdsxjlg", + "idAlt": "ck195en73urjx0b49lb7st5ye", + "img": "https://media.graphcms.com/lMZM5sWESue8zaIS6Nkh", + "link": "https://focusreactive.com", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/4nC2yx5Tem996iOkkVFg", + }, + "id": "ck0zk3adkpuu60b49tpdsxjlg", + "site": "https://focusreactive.com", + "status": "PUBLISHED", + "title": "Focus Reactive", + }, + "status": "PUBLISHED", + "width": 180, + }, + ], + "mod": "logos_sm sponsors-block_lg", + "title": "Production Partners", + }, + Object { + "category": "MediaPartner", + "list": Array [ + Object { + "alt": "digital-agency-network", + "category": "MediaPartner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck52hvs8d1bbh0b201ohvgrbb", + "idAlt": "ck52hwfkzsd680b73wa22i91q", + "img": "https://media.graphcms.com/nJ62aquaRdqGxSLY1wIu", + "link": "https://digitalagencynetwork.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/nJ62aquaRdqGxSLY1wIu", + }, + "id": "ck52hvs8d1bbh0b201ohvgrbb", + "site": "https://digitalagencynetwork.com/", + "status": "PUBLISHED", + "title": "digital-agency-network", + }, + "status": "PUBLISHED", + "width": 200, + }, + Object { + "alt": "t3n", + "category": "MediaPartner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck5qnzs805ybj0b66ncc599pv", + "idAlt": "ck5qo0fix5ydd0b66oj66tywn", + "img": "https://media.graphcms.com/A5a4V3ISAaLL4OxlU8lw", + "link": "http://t3n.de/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/A5a4V3ISAaLL4OxlU8lw", + }, + "id": "ck5qnzs805ybj0b66ncc599pv", + "site": "http://t3n.de/", + "status": "PUBLISHED", + "title": "t3n", + }, + "status": "PUBLISHED", + "width": 85, + }, + Object { + "alt": "Hackernoon", + "category": "MediaPartner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck9wfpaw8hipm0b84d8pdasjm", + "idAlt": "ckejzm01mpa9p0916oauo337g", + "img": "https://media.graphcms.com/gT9lNZkRzmxMgVw5A1Cg", + "link": "https://hackernoon.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/gT9lNZkRzmxMgVw5A1Cg", + }, + "id": "ck9wfpaw8hipm0b84d8pdasjm", + "site": "https://hackernoon.com/", + "status": "PUBLISHED", + "title": "Hackernoon", + }, + "status": "PUBLISHED", + "width": 200, + }, + Object { + "alt": "Gamedevjsweekly", + "category": "MediaPartner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckai49dvbpxyh0b204gv81h0x", + "idAlt": "ckffdmtfbglb70911ll3shpzg", + "img": "https://media.graphcms.com/6EPCFcjvTdiMTm8tm0zA", + "link": "https://gamedevjsweekly.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/6EPCFcjvTdiMTm8tm0zA", + }, + "id": "ckai49dvbpxyh0b204gv81h0x", + "site": "https://gamedevjsweekly.com/", + "status": "PUBLISHED", + "title": "Gamedevjsweekly", + }, + "status": "PUBLISHED", + "width": 200, + }, + Object { + "alt": "JS Party", + "category": "MediaPartner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckffg879o4kn50970je09bode", + "idAlt": "ckffg92vgof200b77seehq3u5", + "img": "https://media.graphcms.com/pPyc2RfWStuQBckh0viI", + "link": "https://changelog.com/podcast", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/pPyc2RfWStuQBckh0viI", + }, + "id": "ckffg879o4kn50970je09bode", + "site": "https://changelog.com/podcast", + "status": "PUBLISHED", + "title": "JS Party", + }, + "status": "PUBLISHED", + "width": 90, + }, + Object { + "alt": "Frontendweekly", + "category": "MediaPartner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckap72tbn79ax0b20s1lbodks", + "idAlt": "ckffgfet1guwc09110hztam0g", + "img": "https://media.graphcms.com/ye44k3SKQCGcygJAbTGB", + "link": "https://frontendweekly.co/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/ye44k3SKQCGcygJAbTGB", + }, + "id": "ckap72tbn79ax0b20s1lbodks", + "site": "https://frontendweekly.co/", + "status": "PUBLISHED", + "title": "Frontendweekly", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "reactpodcast", + "category": "MediaPartner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckfwuuckxidk90970ni9n5o84", + "idAlt": "ckfwuuvdrl1zn0b77h2hpwnwu", + "img": "https://media.graphcms.com/0q9dFYCbQiiWdcINOwME", + "link": "https://spec.fm/podcasts/reactpodcast", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/0q9dFYCbQiiWdcINOwME", + }, + "id": "ckfwuuckxidk90970ni9n5o84", + "site": "https://spec.fm/podcasts/reactpodcast", + "status": "PUBLISHED", + "title": "reactpodcast", + }, + "status": "PUBLISHED", + "width": 100, + }, + ], + "mod": "logos_xs sponsors-block_xs", + "title": "Media Partners", + }, + Object { + "category": "Partner", + "list": Array [ + Object { + "alt": "StickerMule", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck2otp04x7asa0b66drt7djkx", + "idAlt": "ck6hjxn2nf1ya0b75fx9kqfwy", + "img": "https://media.graphcms.com/RSwlizc6SMmgCAadvUsV", + "link": "http://stickermule.com/supports/gitnation20-sponsorship", + "order": -90, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/RSwlizc6SMmgCAadvUsV", + }, + "id": "ck2otp04x7asa0b66drt7djkx", + "site": "http://stickermule.com/supports/gitnation20-sponsorship", + "status": "PUBLISHED", + "title": "StickerMule", + }, + "status": "PUBLISHED", + "width": 80, + }, + Object { + "alt": "BostonReactNative", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck30kcrbnhrst0b32ohoirnmg", + "idAlt": "ck30kdvdchrw50b3243vxanxn", + "img": "https://media.graphcms.com/UhEEpj4iTQaUbKwvoTsf", + "link": "https://www.meetup.com/Boston-React-Native/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/UhEEpj4iTQaUbKwvoTsf", + }, + "id": "ck30kcrbnhrst0b32ohoirnmg", + "site": "https://www.meetup.com/Boston-React-Native/", + "status": "PUBLISHED", + "title": "BostonReactNative", + }, + "status": "PUBLISHED", + "width": 80, + }, + Object { + "alt": undefined, + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "error: no sponsor object", + "idAlt": "ck30ku235hsw20b207ozau65m", + "img": "https://media.graphcms.com/cA3rjQMlQzqh6251FlEV", + "link": undefined, + "order": null, + "sponsor": null, + "status": "DRAFT", + "width": 150, + }, + Object { + "alt": "reactnorway", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck30kx2gkht4r0b20kd2kxy29", + "idAlt": "ck30kxwmhx0ru0b73zqgcovd4", + "img": "https://media.graphcms.com/Jj4k5ZF7RQeHz8RWBu7Z", + "link": "https://reactnorway.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/Jj4k5ZF7RQeHz8RWBu7Z", + }, + "id": "ck30kx2gkht4r0b20kd2kxy29", + "site": "https://reactnorway.com/", + "status": "PUBLISHED", + "title": "reactnorway", + }, + "status": "PUBLISHED", + "width": 150, + }, + Object { + "alt": "reactnewyork", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck30kz1pji16m0b66b4oo6f4d", + "idAlt": "ck30kzvishtf00b32e9a61rxi", + "img": "https://media.graphcms.com/x7B0MLrqRkOqfFsUlXbv", + "link": "https://reactnewyork.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/x7B0MLrqRkOqfFsUlXbv", + }, + "id": "ck30kz1pji16m0b66b4oo6f4d", + "site": "https://reactnewyork.com/", + "status": "PUBLISHED", + "title": "reactnewyork", + }, + "status": "PUBLISHED", + "width": 250, + }, + Object { + "alt": "Framsia", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11ub3q5z70l0b85omyxwohd", + "idAlt": "ck30l0xn8i1c50b66q78q7xmp", + "img": "https://media.graphcms.com/B0avSOhLTimtCCx4ZrQ1", + "link": "https://www.meetup.com/framsia/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/B0avSOhLTimtCCx4ZrQ1", + }, + "id": "ck11ub3q5z70l0b85omyxwohd", + "site": "https://www.meetup.com/framsia/", + "status": "PUBLISHED", + "title": "Framsia", + }, + "status": "PUBLISHED", + "width": 70, + }, + Object { + "alt": "OsloPWA", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck30l23zyx18n0b73nay27gqu", + "idAlt": "ck30l2o2jx1b40b738whu0kef", + "img": "https://media.graphcms.com/5m34cFbsQfKrs1MvZoQT", + "link": "https://www.meetup.com/Oslo-Progressive-Web-Apps/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/5m34cFbsQfKrs1MvZoQT", + }, + "id": "ck30l23zyx18n0b73nay27gqu", + "site": "https://www.meetup.com/Oslo-Progressive-Web-Apps/", + "status": "PUBLISHED", + "title": "OsloPWA", + }, + "status": "PUBLISHED", + "width": 70, + }, + Object { + "alt": "mobileera", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck30l45t3htrg0b32c1hdk2ft", + "idAlt": "ck30l4wc2httm0b3280sgi7ov", + "img": "https://media.graphcms.com/Y3IDTyPSDGqWzYXkf4Kh", + "link": "https://mobileera.rocks", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/Y3IDTyPSDGqWzYXkf4Kh", + }, + "id": "ck30l45t3htrg0b32c1hdk2ft", + "site": "https://mobileera.rocks", + "status": "DRAFT", + "title": "mobileera", + }, + "status": "DRAFT", + "width": 200, + }, + Object { + "alt": "LondonPWA", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck30l6g7chttl0b202mo6zdue", + "idAlt": "ck30l6zlsx1q40b73xtnj6dso", + "img": "https://media.graphcms.com/9LkzgvhTxeFV7v5fImi5", + "link": "https://www.meetup.com/london-progressive-web-apps/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/9LkzgvhTxeFV7v5fImi5", + }, + "id": "ck30l6g7chttl0b202mo6zdue", + "site": "https://www.meetup.com/london-progressive-web-apps/", + "status": "PUBLISHED", + "title": "LondonPWA", + }, + "status": "PUBLISHED", + "width": 70, + }, + Object { + "alt": "Hackages", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11uivghz88k0b548fdp2qnj", + "idAlt": "ck30l8pfgx1wr0b731zzopz6r", + "img": "https://media.graphcms.com/j69Oy8hQwmm49chRazLp", + "link": "https://hackages.io/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/j69Oy8hQwmm49chRazLp", + }, + "id": "ck11uivghz88k0b548fdp2qnj", + "site": "https://hackages.io/", + "status": "PUBLISHED", + "title": "Hackages", + }, + "status": "PUBLISHED", + "width": 120, + }, + Object { + "alt": undefined, + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "error: no sponsor object", + "idAlt": "ck30l9vsrx20r0b73z6v3gbzu", + "img": "https://media.graphcms.com/oNXMsdDVSdWJQTy6pIgw", + "link": undefined, + "order": null, + "sponsor": null, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "leicesterjs", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck30lb7j6hu940b32icdq2nry", + "idAlt": "ck30lbrtlx2800b7382s7v3mm", + "img": "https://media.graphcms.com/qn5yHCYuTrGGHrP1tJyO", + "link": "https://leicesterjs.org/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/qn5yHCYuTrGGHrP1tJyO", + }, + "id": "ck30lb7j6hu940b32icdq2nry", + "site": "https://leicesterjs.org/", + "status": "PUBLISHED", + "title": "leicesterjs", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "Piter JS", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11uutl9ak0z0b71hf6ahud8", + "idAlt": "ck30lpp8hx3p40b73w9p4xhp8", + "img": "https://media.graphcms.com/csIAGp4IQuGiKEeoVK3p", + "link": "https://piterjs.org/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/csIAGp4IQuGiKEeoVK3p", + }, + "id": "ck11uutl9ak0z0b71hf6ahud8", + "site": "https://piterjs.org/", + "status": "PUBLISHED", + "title": "Piter JS", + }, + "status": "DRAFT", + "width": 100, + }, + Object { + "alt": "React Finland", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11ugwzgz8240b54zy0vo0it", + "idAlt": "ck30lrei5hvc50b20724bqnxy", + "img": "https://media.graphcms.com/ytl42Q0NQGOtGR3yrlEn", + "link": "https://react-finland.fi/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/ytl42Q0NQGOtGR3yrlEn", + }, + "id": "ck11ugwzgz8240b54zy0vo0it", + "site": "https://react-finland.fi/", + "status": "PUBLISHED", + "title": "React Finland", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "leedsjs", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck30lt7mxhvlh0b326q0l35yf", + "idAlt": "ck30luh5sx4720b73djg29lbx", + "img": "https://media.graphcms.com/s96i5NRXKpieSKr3f9nw", + "link": "https://leedsjs.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/s96i5NRXKpieSKr3f9nw", + }, + "id": "ck30lt7mxhvlh0b326q0l35yf", + "site": "https://leedsjs.com/", + "status": "PUBLISHED", + "title": "leedsjs", + }, + "status": "PUBLISHED", + "width": 70, + }, + Object { + "alt": "jsbelgrade", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck30lw7nkhvpn0b20i9sstf25", + "idAlt": "ck30lwwwghvrv0b20h8bzze1q", + "img": "https://media.graphcms.com/JioPZAJLQSze5aXlale7", + "link": "http://jsbelgrade.org/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/JioPZAJLQSze5aXlale7", + }, + "id": "ck30lw7nkhvpn0b20i9sstf25", + "site": "http://jsbelgrade.org/", + "status": "PUBLISHED", + "title": "jsbelgrade", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "milanofrontend", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck30ly9k7hvzk0b32rflg84fb", + "idAlt": "ck30lyvm9hw1d0b32jhlh0kgs", + "img": "https://media.graphcms.com/DyaAVE8PSwy1Q3OBHUlV", + "link": "https://www.meetup.com/milano-front-end/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/DyaAVE8PSwy1Q3OBHUlV", + }, + "id": "ck30ly9k7hvzk0b32rflg84fb", + "site": "https://www.meetup.com/milano-front-end/", + "status": "PUBLISHED", + "title": "milanofrontend", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "lereacteur", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck30lzyi6x4sq0b731tshdnkm", + "idAlt": "ck30m0p4hx4vx0b73zq8vwdn8", + "img": "https://media.graphcms.com/gDl4yhfTfGy7cN1t57mE", + "link": "https://www.lereacteur.io/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/gDl4yhfTfGy7cN1t57mE", + }, + "id": "ck30lzyi6x4sq0b731tshdnkm", + "site": "https://www.lereacteur.io/", + "status": "PUBLISHED", + "title": "lereacteur", + }, + "status": "PUBLISHED", + "width": 150, + }, + Object { + "alt": "nodeschool", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck30m218zi42c0b66v0swwdtn", + "idAlt": "ck30m2phri44l0b66bdaxecpp", + "img": "https://media.graphcms.com/6vVn4q5TsP8VDXRqaNgg", + "link": "https://www.meetup.com/NodeSchool-Paris/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/6vVn4q5TsP8VDXRqaNgg", + }, + "id": "ck30m218zi42c0b66v0swwdtn", + "site": "https://www.meetup.com/NodeSchool-Paris/", + "status": "PUBLISHED", + "title": "nodeschool", + }, + "status": "PUBLISHED", + "width": 90, + }, + Object { + "alt": "viennajs", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck30m3si7i47o0b66wss7bymw", + "idAlt": "ck30m4drvi49u0b666ncowwfy", + "img": "https://media.graphcms.com/4P4F5rcgRRmGFaCTnypv", + "link": "https://viennajs.org/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/4P4F5rcgRRmGFaCTnypv", + }, + "id": "ck30m3si7i47o0b66wss7bymw", + "site": "https://viennajs.org/", + "status": "PUBLISHED", + "title": "viennajs", + }, + "status": "PUBLISHED", + "width": 110, + }, + Object { + "alt": "ReactVienna", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck30m5nmpi4da0b66asetv0df", + "idAlt": "ck30m66wwhwlw0b3235v91ilz", + "img": "https://media.graphcms.com/nMIRNPJJQWeJ145F8kpE", + "link": "https://www.meetup.com/ReactVienna/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/nMIRNPJJQWeJ145F8kpE", + }, + "id": "ck30m5nmpi4da0b66asetv0df", + "site": "https://www.meetup.com/ReactVienna/", + "status": "PUBLISHED", + "title": "ReactVienna", + }, + "status": "PUBLISHED", + "width": 180, + }, + Object { + "alt": "NottsJS", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck3eo5i999ti20b66ftq8mip0", + "idAlt": "ck3eo69k44pfb0b73tkhl24jp", + "img": "https://media.graphcms.com/J0iLWuFFQwiKX323Luyb", + "link": "https://www.meetup.com/NottsJS/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/J0iLWuFFQwiKX323Luyb", + }, + "id": "ck3eo5i999ti20b66ftq8mip0", + "site": "https://www.meetup.com/NottsJS/", + "status": "PUBLISHED", + "title": "NottsJS", + }, + "status": "PUBLISHED", + "width": 70, + }, + Object { + "alt": "AdaJS", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck3eo8ehs9lub0b205wqlvow2", + "idAlt": "ck3eo9g809hht0b325uqn0m1s", + "img": "https://media.graphcms.com/kFXVG8ktSKDRtpDtJFWf", + "link": "https://www.meetup.com/AdaBcnJS/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/kFXVG8ktSKDRtpDtJFWf", + }, + "id": "ck3eo8ehs9lub0b205wqlvow2", + "site": "https://www.meetup.com/AdaBcnJS/", + "status": "PUBLISHED", + "title": "AdaJS", + }, + "status": "PUBLISHED", + "width": 110, + }, + Object { + "alt": "GlasgowJS", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck3eocj0a9m530b20urdvfea4", + "idAlt": "ck3eodf0d9m6x0b201paubxvj", + "img": "https://media.graphcms.com/wotbcNGuTneStzw3fh3v", + "link": "https://www.meetup.com/Glasgow-JavaScript/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/wotbcNGuTneStzw3fh3v", + }, + "id": "ck3eocj0a9m530b20urdvfea4", + "site": "https://www.meetup.com/Glasgow-JavaScript/", + "status": "PUBLISHED", + "title": "GlasgowJS", + }, + "status": "PUBLISHED", + "width": 70, + }, + Object { + "alt": "rollingscopes", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck3eohm5n9u8s0b66eceyxm8v", + "idAlt": "ck3eoig0a9ub00b663kmyvmh1", + "img": "https://media.graphcms.com/bCGQIOp7TTarTChhTEX6", + "link": "https://rollingscopes.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/bCGQIOp7TTarTChhTEX6", + }, + "id": "ck3eohm5n9u8s0b66eceyxm8v", + "site": "https://rollingscopes.com/", + "status": "PUBLISHED", + "title": "rollingscopes", + }, + "status": "PUBLISHED", + "width": 120, + }, + Object { + "alt": "G2i", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck41l3vk2jdcq0b32k5qjehqo", + "idAlt": "ck41l4ipujpzk0b66yt3s4q2l", + "img": "https://media.graphcms.com/ioWj9kBRFiFwWlYhtKmw", + "link": "https://www.g2i.co/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/ioWj9kBRFiFwWlYhtKmw", + }, + "id": "ck41l3vk2jdcq0b32k5qjehqo", + "site": "https://www.g2i.co/", + "status": "PUBLISHED", + "title": "G2i", + }, + "status": "PUBLISHED", + "width": 80, + }, + Object { + "alt": "ReactJSVancouver", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck445fm5ao2jv0b32odv1kl6q", + "idAlt": "ck445gn2wo28g0b20zstjs0t8", + "img": "https://media.graphcms.com/MJKH8ZwGQgKjq8GfxWou", + "link": "https://www.meetup.com/ReactJS-Vancouver-Meetup/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/MJKH8ZwGQgKjq8GfxWou", + }, + "id": "ck445fm5ao2jv0b32odv1kl6q", + "site": "https://www.meetup.com/ReactJS-Vancouver-Meetup/", + "status": "PUBLISHED", + "title": "ReactJSVancouver", + }, + "status": "PUBLISHED", + "width": 250, + }, + Object { + "alt": "seattle-node", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck445mcbuo2wl0b323ugcbz3a", + "idAlt": "ck445n90uca2r0b73zpt7lgef", + "img": "https://media.graphcms.com/3CN44zW4Qye5rgbnvkFu", + "link": "https://www.meetup.com/Seattle-Node-js/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/3CN44zW4Qye5rgbnvkFu", + }, + "id": "ck445mcbuo2wl0b323ugcbz3a", + "site": "https://www.meetup.com/Seattle-Node-js/", + "status": "PUBLISHED", + "title": "seattle-node", + }, + "status": "PUBLISHED", + "width": 80, + }, + Object { + "alt": "madridjs", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck445p6wwca8w0b734agaxego", + "idAlt": "ck445q3peog340b66hvmmddpl", + "img": "https://media.graphcms.com/95sI0yk9SSwIJhUy1vuS", + "link": "https://www.meetup.com/madridjs/members/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/95sI0yk9SSwIJhUy1vuS", + }, + "id": "ck445p6wwca8w0b734agaxego", + "site": "https://www.meetup.com/madridjs/members/", + "status": "PUBLISHED", + "title": "madridjs", + }, + "status": "PUBLISHED", + "width": 120, + }, + Object { + "alt": "lvivjs", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck445v2p7o3cf0b206700t5uq", + "idAlt": "ck445wqvgcbie0b73j39gxwd0", + "img": "https://media.graphcms.com/llHevWEXSweR6TvRYK1Y", + "link": "http://www.lvivjs.org.ua/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/llHevWEXSweR6TvRYK1Y", + }, + "id": "ck445v2p7o3cf0b206700t5uq", + "site": "http://www.lvivjs.org.ua/", + "status": "PUBLISHED", + "title": "lvivjs", + }, + "status": "PUBLISHED", + "width": 70, + }, + Object { + "alt": "kiprosh", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck445z60yo3r60b20sn2qfk6k", + "idAlt": "ck445zsjfoh500b6659z9e82g", + "img": "https://media.graphcms.com/oUf36c2yS5WrI7fM46hS", + "link": "https://kiprosh.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/oUf36c2yS5WrI7fM46hS", + }, + "id": "ck445z60yo3r60b20sn2qfk6k", + "site": "https://kiprosh.com/", + "status": "PUBLISHED", + "title": "kiprosh", + }, + "status": "PUBLISHED", + "width": 70, + }, + Object { + "alt": "jskitchen", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck4463ftucc5u0b73sm2ssh4l", + "idAlt": "ck44647t3o3zo0b207v9cfhlq", + "img": "https://media.graphcms.com/oFcJIuCETriVBVj9Fr1t", + "link": "https://javascript-kitchen.js.org/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/oFcJIuCETriVBVj9Fr1t", + }, + "id": "ck4463ftucc5u0b73sm2ssh4l", + "site": "https://javascript-kitchen.js.org/", + "status": "PUBLISHED", + "title": "jskitchen", + }, + "status": "PUBLISHED", + "width": 70, + }, + Object { + "alt": "lombiq", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck44667xjohfn0b66wmxdbn93", + "idAlt": "ck4466tx6ohgw0b6689krc2sh", + "img": "https://media.graphcms.com/JvxfOaKMQUeHfb4RuoI8", + "link": "https://lombiq.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/JvxfOaKMQUeHfb4RuoI8", + }, + "id": "ck44667xjohfn0b66wmxdbn93", + "site": "https://lombiq.com/", + "status": "PUBLISHED", + "title": "lombiq", + }, + "status": "PUBLISHED", + "width": 120, + }, + Object { + "alt": "ottawareact", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck30kfktdhrwj0b203xessfu5", + "idAlt": "ck30kg72bhzv60b66d1uxxip5", + "img": "https://media.graphcms.com/tTmiAdDVS1aafUwYBjxN", + "link": "https://www.meetup.com/Ottawa-ReactJS-Meetup/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/tTmiAdDVS1aafUwYBjxN", + }, + "id": "ck30kfktdhrwj0b203xessfu5", + "site": "https://www.meetup.com/Ottawa-ReactJS-Meetup/", + "status": "PUBLISHED", + "title": "ottawareact", + }, + "status": "PUBLISHED", + "width": 90, + }, + Object { + "alt": "Workshop Summit", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11ukep0zc130b49ilupffy5", + "idAlt": "ck446hlrqo55q0b32sz842kqs", + "img": "https://media.graphcms.com/oNXMsdDVSdWJQTy6pIgw", + "link": "https://workshop-summit.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/oNXMsdDVSdWJQTy6pIgw", + }, + "id": "ck11ukep0zc130b49ilupffy5", + "site": "https://workshop-summit.com/", + "status": "PUBLISHED", + "title": "Workshop Summit", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "Krakow JS", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11upm6szcn90b49r40nveq1", + "idAlt": "ck4ifoeflbwvs0b20avi58o6m", + "img": "https://media.graphcms.com/qnwuCichSKKeM6Z37IkO", + "link": "https://www.meetup.com/KrakowJS/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/qnwuCichSKKeM6Z37IkO", + }, + "id": "ck11upm6szcn90b49r40nveq1", + "site": "https://www.meetup.com/KrakowJS/", + "status": "PUBLISHED", + "title": "Krakow JS", + }, + "status": "PUBLISHED", + "width": 70, + }, + Object { + "alt": "react-sofia", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck447bh24cgci0b73gobh47na", + "idAlt": "ck4ifq2nugcxr0b73l156adrz", + "img": "https://media.graphcms.com/WB25K24IQHSJida7w4z8", + "link": "http://react-not-a-conf.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/WB25K24IQHSJida7w4z8", + }, + "id": "ck447bh24cgci0b73gobh47na", + "site": "http://react-not-a-conf.com/", + "status": "PUBLISHED", + "title": "react-sofia", + }, + "status": "PUBLISHED", + "width": 90, + }, + Object { + "alt": "TimJS", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11vccmlzfk80b49mwo8ix4l", + "idAlt": "ck4ifrmx0bx170b20k7vkpbmi", + "img": "https://media.graphcms.com/MrqkTXtbR2a7nJ2mp7wp", + "link": "https://timjs.ro/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/MrqkTXtbR2a7nJ2mp7wp", + }, + "id": "ck11vccmlzfk80b49mwo8ix4l", + "site": "https://timjs.ro/", + "status": "PUBLISHED", + "title": "TimJS", + }, + "status": "PUBLISHED", + "width": 120, + }, + Object { + "alt": "Warsaw TypeScript", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11vai4qzb8n0b854txtk287", + "idAlt": "ck4igc0ecby5z0b20ejtrp286", + "img": "https://media.graphcms.com/4cTE7yTRBCECAf4fHdqO", + "link": "https://www.meetup.com/Warsaw-TypeScript/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/4cTE7yTRBCECAf4fHdqO", + }, + "id": "ck11vai4qzb8n0b854txtk287", + "site": "https://www.meetup.com/Warsaw-TypeScript/", + "status": "PUBLISHED", + "title": "Warsaw TypeScript", + }, + "status": "PUBLISHED", + "width": 70, + }, + Object { + "alt": "erni-frontend-barcelona", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck4igec7icgeg0b66dj1vyo1o", + "idAlt": "ck4igezbpgf2n0b73i9rhkkbi", + "img": "https://media.graphcms.com/Ndr0sL58TPi6cbQe2nrh", + "link": "https://www.meetup.com/frontend-barcelona/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/Ndr0sL58TPi6cbQe2nrh", + }, + "id": "ck4igec7icgeg0b66dj1vyo1o", + "site": "https://www.meetup.com/frontend-barcelona/", + "status": "PUBLISHED", + "title": "erni-frontend-barcelona", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "Unicorns In Tech", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11xsam4zmh60b548v0vutee", + "idAlt": "ck4igkn4lcgqk0b66v0mwtrhf", + "img": "https://media.graphcms.com/5e95NP9wT6OPsZfViHA8", + "link": "https://www.unicornsintech.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/MBDocqywQJyiCu71NROe", + }, + "id": "ck11xsam4zmh60b548v0vutee", + "site": "https://www.unicornsintech.com/", + "status": "PUBLISHED", + "title": "Unicorns In Tech", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "codebar", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck4igpd7gbysc0b20gkcfcz7s", + "idAlt": "ck4igq51hcgzl0b66nsgm0n3c", + "img": "https://media.graphcms.com/H5Wj9d61Q76Klnnltrhj", + "link": "https://codebar.io/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/H5Wj9d61Q76Klnnltrhj", + }, + "id": "ck4igpd7gbysc0b20gkcfcz7s", + "site": "https://codebar.io/", + "status": "PUBLISHED", + "title": "codebar", + }, + "status": "PUBLISHED", + "width": 110, + }, + Object { + "alt": "Beerjs Minsk", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11xcoz2znrv0b49c5u5esoa", + "idAlt": "ck4igyxyoched0b66xf4rt188", + "img": "https://media.graphcms.com/U2CphZdUQrGUJYwaATo8", + "link": "https://www.facebook.com/beerjsminsk/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/U2CphZdUQrGUJYwaATo8", + }, + "id": "ck11xcoz2znrv0b49c5u5esoa", + "site": "https://www.facebook.com/beerjsminsk/", + "status": "PUBLISHED", + "title": "Beerjs Minsk", + }, + "status": "PUBLISHED", + "width": 70, + }, + Object { + "alt": "Web Not Bombs", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11xgsm7zl7h0b54f1wr0u4l", + "idAlt": "ck4ih2q5kggy40b73ew6xsjmk", + "img": "https://media.graphcms.com/tC8DmauQ1Kyz6KiCTVPK", + "link": "https://www.facebook.com/groups/webnotbombs/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/C1zbwpaARimk5G3BgPJQ", + }, + "id": "ck11xgsm7zl7h0b54f1wr0u4l", + "site": "https://www.facebook.com/groups/webnotbombs/", + "status": "PUBLISHED", + "title": "Web Not Bombs", + }, + "status": "PUBLISHED", + "width": 70, + }, + Object { + "alt": "FrontSpot", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11xeosmzkde0b85ainpvoi7", + "idAlt": "ck4ih510qchr00b66w7m8e60a", + "img": "https://media.graphcms.com/Ls1b8VxIRUOPWtoqQ8tx", + "link": "https://www.youtube.com/channel/UCucNbfGSH2RN2SD_VhDi2Uw", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/Ls1b8VxIRUOPWtoqQ8tx", + }, + "id": "ck11xeosmzkde0b85ainpvoi7", + "site": "https://www.youtube.com/channel/UCucNbfGSH2RN2SD_VhDi2Uw", + "status": "PUBLISHED", + "title": "FrontSpot", + }, + "status": "PUBLISHED", + "width": 80, + }, + Object { + "alt": "Free-Code-Camp-Vienna", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck4xtjq6fvcr00b66o004nnln", + "idAlt": "ck4xtqdj2vcx50b66diuap3pb", + "img": "https://media.graphcms.com/YC1Ib2bsQAWuD7NBE9IM", + "link": "https://www.meetup.com/Free-Code-Camp-Vienna/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/YC1Ib2bsQAWuD7NBE9IM", + }, + "id": "ck4xtjq6fvcr00b66o004nnln", + "site": "https://www.meetup.com/Free-Code-Camp-Vienna/", + "status": "PUBLISHED", + "title": "Free-Code-Camp-Vienna", + }, + "status": "PUBLISHED", + "width": 80, + }, + Object { + "alt": "React-Warsaw", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck4xubxsrgiz30b73j4pyagxl", + "idAlt": "ck4xugihruq8q0b20cr86ouod", + "img": "https://media.graphcms.com/kQz3tf7eSLTRVdGYnoBs", + "link": "https://www.meetup.com/React-Warsaw/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/kQz3tf7eSLTRVdGYnoBs", + }, + "id": "ck4xubxsrgiz30b73j4pyagxl", + "site": "https://www.meetup.com/React-Warsaw/", + "status": "PUBLISHED", + "title": "React-Warsaw", + }, + "status": "PUBLISHED", + "width": 250, + }, + Object { + "alt": "DevdaySalerno", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck5qnthv4ztqt0b75mtivkwbk", + "idAlt": "ck5qntzyy5xmg0b6645sj8z6z", + "img": "https://media.graphcms.com/XDgqQcntSwWnI3B56gRu", + "link": "https://www.meetup.com/devday-salerno/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/XDgqQcntSwWnI3B56gRu", + }, + "id": "ck5qnthv4ztqt0b75mtivkwbk", + "site": "https://www.meetup.com/devday-salerno/", + "status": "PUBLISHED", + "title": "DevdaySalerno", + }, + "status": "PUBLISHED", + "width": 70, + }, + Object { + "alt": "ReactNSK", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11xp45vzljl0b85p5jgb3i5", + "idAlt": "ck5qo2p3tzuta0b75rsas7npq", + "img": "https://media.graphcms.com/PruwmZdQEuCziZeCXZki", + "link": "https://www.meetup.com/reactnsk/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/PruwmZdQEuCziZeCXZki", + }, + "id": "ck11xp45vzljl0b85p5jgb3i5", + "site": "https://www.meetup.com/reactnsk/", + "status": "PUBLISHED", + "title": "ReactNSK", + }, + "status": "PUBLISHED", + "width": 70, + }, + Object { + "alt": "Coding Berlin", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11ut4vkajsc0b719zw3yt72", + "idAlt": "ck5qo7awqzv7l0b75fzo0tzuh", + "img": "https://media.graphcms.com/ub1VeKK4RQGFuG26LRSw", + "link": "https://www.meetup.com/CODING-BERLIN/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/ub1VeKK4RQGFuG26LRSw", + }, + "id": "ck11ut4vkajsc0b719zw3yt72", + "site": "https://www.meetup.com/CODING-BERLIN/", + "status": "PUBLISHED", + "title": "Coding Berlin", + }, + "status": "PUBLISHED", + "width": 70, + }, + Object { + "alt": "RheinNeckarJS", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11x8k44zj5z0b851aajjpdv", + "idAlt": "ck5qo90uvzvc20b75ga65u0zp", + "img": "https://media.graphcms.com/J3EsCO7OSfCGFVhCe8K0", + "link": "https://www.meetup.com/RheinNeckarJS/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/J3EsCO7OSfCGFVhCe8K0", + }, + "id": "ck11x8k44zj5z0b851aajjpdv", + "site": "https://www.meetup.com/RheinNeckarJS/", + "status": "PUBLISHED", + "title": "RheinNeckarJS", + }, + "status": "PUBLISHED", + "width": 80, + }, + Object { + "alt": "meet.js", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11vfy8vanch0b7164erbr4o", + "idAlt": "ck5qoazge5sim0b208jqpez9b", + "img": "https://media.graphcms.com/3UYFXNaGR26jBfvMyR9Z", + "link": "http://summit.meetjs.pl/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/zIf5ZXpLSLifkYt6f1OL", + }, + "id": "ck11vfy8vanch0b7164erbr4o", + "site": "http://summit.meetjs.pl/", + "status": "PUBLISHED", + "title": "meet.js", + }, + "status": "PUBLISHED", + "width": 80, + }, + Object { + "alt": "React JS Milano", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11x5nr9zmxt0b49st2fjycp", + "idAlt": "ck5qocjd75yx90b66sbr2g3sy", + "img": "https://media.graphcms.com/DWPAMvcRyKjQeASUnVF0", + "link": "https://www.meetup.com/React-JS-Milano/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/DWPAMvcRyKjQeASUnVF0", + }, + "id": "ck11x5nr9zmxt0b49st2fjycp", + "site": "https://www.meetup.com/React-JS-Milano/", + "status": "PUBLISHED", + "title": "React JS Milano", + }, + "status": "PUBLISHED", + "width": 120, + }, + Object { + "alt": "redi-school", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck5qoenatzvqc0b75mdjyj7i2", + "idAlt": "ck5qof8fz5z1e0b66roffdajq", + "img": "https://media.graphcms.com/M5DgVlJRgu5h475HCzZ6", + "link": "https://www.redi-school.org/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/M5DgVlJRgu5h475HCzZ6", + }, + "id": "ck5qoenatzvqc0b75mdjyj7i2", + "site": "https://www.redi-school.org/", + "status": "PUBLISHED", + "title": "redi-school", + }, + "status": "PUBLISHED", + "width": 120, + }, + Object { + "alt": "technologieplauscherl", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck5qoh1j15z3p0b66kmlhswij", + "idAlt": "ck5qohlqzzvxy0b75v6tu1arz", + "img": "https://media.graphcms.com/JUDY1t5bQEyL5ut6UsQw", + "link": "https://technologieplauscherl.at/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/JUDY1t5bQEyL5ut6UsQw", + }, + "id": "ck5qoh1j15z3p0b66kmlhswij", + "site": "https://technologieplauscherl.at/", + "status": "PUBLISHED", + "title": "technologieplauscherl", + }, + "status": "PUBLISHED", + "width": 70, + }, + Object { + "alt": undefined, + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "error: no sponsor object", + "idAlt": "ck5xvzw1ljcce0b756zbcgcj6", + "img": "https://media.graphcms.com/SVNa55YSTWGRBFs7sFYV", + "link": undefined, + "order": null, + "sponsor": null, + "status": "PUBLISHED", + "width": 80, + }, + Object { + "alt": "hiretechladies", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckfpktzuw682x0b77xvl9400m", + "idAlt": "ckfpkup2cyovv0911ejpb28c1", + "img": "https://media.graphcms.com/zF2LgS8ERE22KyxfADWS", + "link": "https://www.hiretechladies.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/zF2LgS8ERE22KyxfADWS", + }, + "id": "ckfpktzuw682x0b77xvl9400m", + "site": "https://www.hiretechladies.com/", + "status": "PUBLISHED", + "title": "hiretechladies", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "FRONTEND RHEINMAIN", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11xisi6zkx20b85yjoukbdb", + "idAlt": "ck7a626uuky6i0b20pfpq99xg", + "img": "https://media.graphcms.com/YfXqz7JmTLGQrl9sc4nh", + "link": "https://frontend-rheinmain.de", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/dSy6yx7FSYWhs4XDG7hZ", + }, + "id": "ck11xisi6zkx20b85yjoukbdb", + "site": "https://frontend-rheinmain.de", + "status": "PUBLISHED", + "title": "FRONTEND RHEINMAIN", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "ReactBolivia", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck7a698w3cy5a0b84jhc9kopu", + "idAlt": "ck7a69my7kykw0b20qlrzelec", + "img": "https://media.graphcms.com/unCyzbzQNywgfvYTcveQ", + "link": "https://www.meetup.com/ReactBolivia/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/unCyzbzQNywgfvYTcveQ", + }, + "id": "ck7a698w3cy5a0b84jhc9kopu", + "site": "https://www.meetup.com/ReactBolivia/", + "status": "PUBLISHED", + "title": "ReactBolivia", + }, + "status": "PUBLISHED", + "width": 80, + }, + Object { + "alt": "GraphQLHongKong", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck7a8vpfvdagp0b84uckterqn", + "idAlt": "ck7a8w3z6daig0b84hugt5dnu", + "img": "https://media.graphcms.com/ZCtyoIoqREeuTjKyiOM7", + "link": "https://www.meetup.com/GraphQLHongKong/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/ZCtyoIoqREeuTjKyiOM7", + }, + "id": "ck7a8vpfvdagp0b84uckterqn", + "site": "https://www.meetup.com/GraphQLHongKong/", + "status": "PUBLISHED", + "title": "GraphQLHongKong", + }, + "status": "PUBLISHED", + "width": 170, + }, + Object { + "alt": "GraphQLCHD", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck7a8xvgyl7v70b2010siz6cs", + "idAlt": "ck7a8y907darf0b84nrg8nzw3", + "img": "https://media.graphcms.com/1nJoMwrWQTGle1Ddu0aS", + "link": "https://twitter.com/GraphQLCHD", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/1nJoMwrWQTGle1Ddu0aS", + }, + "id": "ck7a8xvgyl7v70b2010siz6cs", + "site": "https://twitter.com/GraphQLCHD", + "status": "PUBLISHED", + "title": "GraphQLCHD", + }, + "status": "PUBLISHED", + "width": 130, + }, + Object { + "alt": "phpday", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckejzoifapf1f0a85vz3ze6o3", + "idAlt": "ckejzp5s8pale0916bj2ir8z9", + "img": "https://media.graphcms.com/1Ry2Nj3TTgOt74Xkaaus", + "link": "http://www.phpday.it", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/1Ry2Nj3TTgOt74Xkaaus", + }, + "id": "ckejzoifapf1f0a85vz3ze6o3", + "site": "http://www.phpday.it", + "status": "PUBLISHED", + "title": "phpday", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "vueday", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckejzrc70pash0916gu4gpk46", + "idAlt": "ckejzryd1paul0916pr79587y", + "img": "https://media.graphcms.com/nFRZdCk1QWWcdYp1QYqM", + "link": "https://2020.vueday.it", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/nFRZdCk1QWWcdYp1QYqM", + }, + "id": "ckejzrc70pash0916gu4gpk46", + "site": "https://2020.vueday.it", + "status": "PUBLISHED", + "title": "vueday", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "jsday", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckejztnbflh7n0908vu7c74et", + "idAlt": "ckejzuc14pfot0a85za8u4glv", + "img": "https://media.graphcms.com/UPRpwEptSMClyITuJcsj", + "link": "https://2020.jsday.it", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/UPRpwEptSMClyITuJcsj", + }, + "id": "ckejztnbflh7n0908vu7c74et", + "site": "https://2020.jsday.it", + "status": "PUBLISHED", + "title": "jsday", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "codersinhoods", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckeny9ffiv35s09165k47t3d9", + "idAlt": "ckeny9ydtv7jz0a85v4l4b53j", + "img": "https://media.graphcms.com/ghrtCcWcSteSg6p2a0bg", + "link": "http://www.codersinhoods.dev", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/ghrtCcWcSteSg6p2a0bg", + }, + "id": "ckeny9ffiv35s09165k47t3d9", + "site": "http://www.codersinhoods.dev", + "status": "PUBLISHED", + "title": "codersinhoods", + }, + "status": "PUBLISHED", + "width": 130, + }, + Object { + "alt": "React Barcamp", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck11xmuxczlbv0b85xh951ht8", + "idAlt": "ck446fbhhoi2e0b665ns9kwj6", + "img": "https://media.graphcms.com/6v9GBqGQf6NTsrrQ8Mqw", + "link": "https://react-barcamp.de/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/6v9GBqGQf6NTsrrQ8Mqw", + }, + "id": "ck11xmuxczlbv0b85xh951ht8", + "site": "https://react-barcamp.de/", + "status": "PUBLISHED", + "title": "React Barcamp", + }, + "status": "PUBLISHED", + "width": 80, + }, + ], + "mod": "logos_xs sponsors-block_xs", + "title": "Partners", + }, +] +`; + +exports[`RS should prepare talks 1`] = ` +Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "How do you level up? How do you jumpstart your learning when getting into something new? Nobody has more than 24 hours a day, so how do you maximize the impact of your limited time? + +In this keynote, I'm going to tell you a bit of my own story, and some tips and tricks that I've learned so you can be as productive as you can be at learning new things and solidifying that knowledge so it's there when you need it.", + "from": "Trainer, USA", + "id": "ck309px35ghpb0b32nj6cwpvn", + "isLightning": false, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": null, + "name": "Kent C. Dodds", + "place": "Trainer, USA", + "slug": "consume-build-teach", + "speaker": "Kent C. Dodds", + "speakerSlug": "kent-c-dodds", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "How do you level up? How do you jumpstart your learning when getting into something new? Nobody has more than 24 hours a day, so how do you maximize the impact of your limited time?
+In this keynote, I'm going to tell you a bit of my own story, and some tips and tricks that I've learned so you can be as productive as you can be at learning new things and solidifying that knowledge so it's there when you need it.
+", + "time": "16:15", + "title": "Consume ➡️ Build ➡️ Teach", + "track": "Summit Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "We have been using hooks for a while and with that we have also been using \`useEffect\` in particular and in this today I wanna take a look at the trickier parts of \`useEffect\` and why they work that way so you can leave with a super understanding of how this magic all works", + "from": "CodeSandbox, Germany", + "id": "ck5fqg94cmo280b20hq25ybin", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Sara Vieira", + "place": "CodeSandbox, Germany", + "slug": "the-psycological-effects-of-use-effect", + "speaker": "Sara Vieira", + "speakerSlug": "sara-vieira", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "We have been using hooks for a while and with that we have also been using useEffect
in particular and in this today I wanna take a look at the trickier parts of useEffect
and why they work that way so you can leave with a super understanding of how this magic all works
Service workers can give users a huge boost in performance and user experience. If you read the API docs about how to create one, it all sounds relatively straightforward. You register a file, do some work in the worker, you're done! In the real world though, there's a bit more to it.
+At Airbnb, we created a service worker system in React that lets us deliver service workers safely and efficiently, measuring the right things, and allowing experimentation and scope-sharing between different types of devices and parts of our site.
+Ranging from app shells to precaching to prefetching, I will share with you some of the lessons we have learned from running service worker A/B tests on the most visited page at Airbnb, and what we learned from it!
+No matter what size or stage of service worker adoption you are at, I will share ideas and lessons that will help you create a similar system for your project – one that ensures delivering service workers is fast, measurable, painless, and better for your users.
+", + "time": "16:50", + "title": "A React Service Worker Framework", + "track": "Summit Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "The main thread, on the web, has a lot of responsibilities. At the same time, web apps are getting more sophisticated every day. Therefore, the main thread gets too busy that will disappoint our user by showing janky frames! The off-main-thread architecture ensures apps run smoothly on every device for everyone. + +In this talk, we will go through the possibilities in browsers such as WebWorker, Worklet, and WebAssembly by introducing practical tools that allow us to boost our user experiences.", + "from": "Softiware AS, Norway", + "id": "ckesk381s4y4c0908vya8pj7h", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Summit Track", + "name": "Majid Hajian", + "place": "Softiware AS, Norway", + "slug": "let-the-main-thread-breathe", + "speaker": "Majid Hajian", + "speakerSlug": "majid-hajian", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "The main thread, on the web, has a lot of responsibilities. At the same time, web apps are getting more sophisticated every day. Therefore, the main thread gets too busy that will disappoint our user by showing janky frames! The off-main-thread architecture ensures apps run smoothly on every device for everyone.
+In this talk, we will go through the possibilities in browsers such as WebWorker, Worklet, and WebAssembly by introducing practical tools that allow us to boost our user experiences.
+", + "time": "18:25", + "title": "Let the Main Thread Breathe!", + "track": "Summit Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "TypeScript is a JavaScript superset that compiles down to vanilla JavaScript and has become increasingly popular. TypeScript proponents proclaim that it eliminates entire classes of bugs that affect our applications. But what exactly are those bugs? Which ones are particular to building React components and applications? Is TypeScript worth the learning curve? + +In this session geared towards devs with prior experience building React applications, let’s answer those questions. We’ll walk through the common bugs that infect our apps and learn how the use of strong types with TypeScript can help prevent them. After the session, you’ll be itching to try it out in your next project!", + "from": "Stitch Fix, USA", + "id": "ckeska2ew0gcg0a85rds6g1i2", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Summit Track", + "name": "Ben Ilegbodu", + "place": "Stitch Fix, USA", + "slug": "type-script-react", + "speaker": "Ben Ilegbodu", + "speakerSlug": "ben-ilegbodu", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "TypeScript is a JavaScript superset that compiles down to vanilla JavaScript and has become increasingly popular. TypeScript proponents proclaim that it eliminates entire classes of bugs that affect our applications. But what exactly are those bugs? Which ones are particular to building React components and applications? Is TypeScript worth the learning curve?
+In this session geared towards devs with prior experience building React applications, let’s answer those questions. We’ll walk through the common bugs that infect our apps and learn how the use of strong types with TypeScript can help prevent them. After the session, you’ll be itching to try it out in your next project!
+", + "time": "20:30", + "title": "TypeScript + React = ❤️", + "track": "Summit Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "In this lightning talk we will be pushing the boundaries of HTMl5 Canvas browser APIs. Join us while we do some experiments with video in the browser to see what’s truly possible. DISCLAIMER: No promises of cross-browser compatibility. Not for the faint of heart. Must be this tall to ride. Attending this lightning talk may result in serious injury or death. All participants must bring a life jacket.", + "from": "Software Engineer @Mux, USA", + "id": "ckf3qd8ze0ys60911k6t023mj", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Dylan Jhaveri", + "place": "Software Engineer @Mux, USA", + "slug": "getting-weird-with-video-manipulation-and-html5-canvas", + "speaker": "Dylan Jhaveri", + "speakerSlug": "dylan-jhaveri", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "In this lightning talk we will be pushing the boundaries of HTMl5 Canvas browser APIs. Join us while we do some experiments with video in the browser to see what’s truly possible. DISCLAIMER: No promises of cross-browser compatibility. Not for the faint of heart. Must be this tall to ride. Attending this lightning talk may result in serious injury or death. All participants must bring a life jacket.
+", + "time": null, + "title": "Getting Weird with Video Manipulation and HTML5 Canvas", + "track": "Base Camp Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "The benefits of SVG are vast: style-able, accessible, animatable. And when it comes to SVG, the Path element is the building block of building blocks. During this presentation, we’ll take a deep dive into the language of the SVG path. Not only will we learn to read path data, but we'll also gain the ability to manipulate paths on the fly with the help of React - no Adobe Illustrator or help from a time-strapped designer necessary!", + "from": "Netguru, Poland", + "id": "ckfc8a3m4bggo0911uz7nfyml", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Summit Track", + "name": "Monica Wojciechowska", + "place": "Netguru, Poland", + "slug": "the-language-of-shapes-understanding-the-svg-path", + "speaker": "Monica Wojciechowska", + "speakerSlug": "monica-wojciechowska", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "The benefits of SVG are vast: style-able, accessible, animatable. And when it comes to SVG, the Path element is the building block of building blocks. During this presentation, we’ll take a deep dive into the language of the SVG path. Not only will we learn to read path data, but we'll also gain the ability to manipulate paths on the fly with the help of React - no Adobe Illustrator or help from a time-strapped designer necessary!
+", + "time": "17:50", + "title": "The Language of Shapes: Understanding the SVG Path", + "track": "Summit Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "As you add more components to your React application, you'll start to notice performance issues. Maybe data isn't loading as fast or you notice that things are happening out of order. There are tools and techniques you can use to handle these kind of issue at a large scale. In this talk, attendees will learn how to analyze their React apps for solvable issues and learn some state management and async handling techniques.", + "from": "Conducto, USA", + "id": "ckfmjhmjinntt0970n9vb4fx9", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Milecia McGregor", + "place": "Conducto, USA", + "slug": "making-your-react-apps-perform-at-scale", + "speaker": "Milecia McGregor", + "speakerSlug": "milecia-mc-gregor", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "As you add more components to your React application, you'll start to notice performance issues. Maybe data isn't loading as fast or you notice that things are happening out of order. There are tools and techniques you can use to handle these kind of issue at a large scale. In this talk, attendees will learn how to analyze their React apps for solvable issues and learn some state management and async handling techniques.
+", + "time": "18:25", + "title": "Making Your React Apps Perform At Scale", + "track": "Base Camp Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "CDK (Cloud development kit) enables developers to build cloud infrastructure using popular programming languages like Python, Typescript, or JavaScript. CDK is a next-level abstraction in infrastructure as code, allowing developers who were traditionally unfamiliar with cloud computing to build scalable APIs and web services using their existing skillset, and do so in only a few lines of code. + +In this talk, you’ll learn how to use the TypeScript flavor of CDK to build a hyper-scalable real-time API with GraphQL, Lambda, DynamoDB, and AWS AppSync . At the end of the talk, I’ll live code an API from scratch in just a couple of minutes and then test out queries, mutations, and subscriptions. + +By the end of the talk, you should have a good understanding of GraphQL, AppSync, and CDK and be ready to build an API in your next project using TypeScript and CDK.", + "from": "Amazon AWS, USA", + "id": "ckfqsy5590p9a0970r3erohrh", + "isLightning": null, + "isoDate": "2020-10-15T00:00:00.000Z", + "label": "GraphQL", + "name": "Nader Dabit", + "place": "Amazon AWS, USA", + "slug": "building-real-time-serverless-graph-ql-ap-is-on-aws-with-type-script-and-cdk", + "speaker": "Nader Dabit", + "speakerSlug": "nader-dabit", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "CDK (Cloud development kit) enables developers to build cloud infrastructure using popular programming languages like Python, Typescript, or JavaScript. CDK is a next-level abstraction in infrastructure as code, allowing developers who were traditionally unfamiliar with cloud computing to build scalable APIs and web services using their existing skillset, and do so in only a few lines of code.
+In this talk, you’ll learn how to use the TypeScript flavor of CDK to build a hyper-scalable real-time API with GraphQL, Lambda, DynamoDB, and AWS AppSync . At the end of the talk, I’ll live code an API from scratch in just a couple of minutes and then test out queries, mutations, and subscriptions.
+By the end of the talk, you should have a good understanding of GraphQL, AppSync, and CDK and be ready to build an API in your next project using TypeScript and CDK.
+", + "time": "17:50", + "title": "Building Real-time Serverless GraphQL APIs on AWS with TypeScript and CDK", + "track": "Base Camp Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "So you built a component library. Congrats! I am sure it is awesome but did you put the same effort into its documentation? Component libraries tend to have giant APIs, dozens of components, hundreds of props and thousands of permutations. That is a lot of information to unpack. + +We could make the documentation very long or... super interactive. We combined component previews, API documentation, props editing and code editing into a single seamless experience. You can quickly explore various settings of each component while watching the code write itself. + +This talk will show you how to leverage common tools and concepts such as Prettier, babel and AST transformations to build the documentation that can literally work for you.", + "from": "Uber, USA", + "id": "ck6gac6ihm0bz0b20nzkb6rny", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Summit Track", + "name": "Vojtech Miksu", + "place": "Uber, USA", + "slug": "introducing-react-view-a-set-of-tools-that-closes-the-gap-between-users-developers-and-designers-of-component-libraries", + "speaker": "Vojtech Miksu", + "speakerSlug": "vojtech-miksu", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "So you built a component library. Congrats! I am sure it is awesome but did you put the same effort into its documentation? Component libraries tend to have giant APIs, dozens of components, hundreds of props and thousands of permutations. That is a lot of information to unpack.
+We could make the documentation very long or... super interactive. We combined component previews, API documentation, props editing and code editing into a single seamless experience. You can quickly explore various settings of each component while watching the code write itself.
+This talk will show you how to leverage common tools and concepts such as Prettier, babel and AST transformations to build the documentation that can literally work for you.
+", + "time": "19:55", + "title": "Introducing React View: A Set of Tools that Closes the Gap between Users, Developers and Designers of Component Libraries", + "track": "Summit Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Accessibility in React has been a hot topic in the last few years, but in this talk, we'll be going beyond the basics. We'll discuss what disability means beyond what you've heard before, and then use code examples to learn why semantic HTML is helpful, and when it's just not enough. We'll then look into tooling, and talk about how you can introduce accessibility testing into your teams and existing code. You'll leave with the tools and knowledge to make a difference starting today.", + "from": "Gremlin, USA", + "id": "ck6i0aw6wsu4s0b20lvj6g32l", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Summit Track", + "name": "Jen Luker ", + "place": "Gremlin, USA", + "slug": "react-accessibility-beyond-the-basics", + "speaker": "Jen Luker ", + "speakerSlug": "jen-luker", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Accessibility in React has been a hot topic in the last few years, but in this talk, we'll be going beyond the basics. We'll discuss what disability means beyond what you've heard before, and then use code examples to learn why semantic HTML is helpful, and when it's just not enough. We'll then look into tooling, and talk about how you can introduce accessibility testing into your teams and existing code. You'll leave with the tools and knowledge to make a difference starting today.
+", + "time": "18:20", + "title": "React Accessibility: Beyond the Basics", + "track": "Summit Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "All too often A11Y is only an afterthought and will be added to a project \\"when we have time\\" i.e. never. But there are a many reasons why you should develop with a11y in mind from the start including some that will convince The Higher-Ups. We'll explore tools we can use to help us develop more accessibly and talk about some of the quirks and limitations that React Native has.", + "from": "Donut, Germany", + "id": "ck7vxltct6m4g0b84t1w7adoc", + "isLightning": false, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Sophie Au", + "place": "Donut, Germany", + "slug": "accessibility-as-a-first-class-citizen", + "speaker": "Sophie Au", + "speakerSlug": "sophie-au", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "All too often A11Y is only an afterthought and will be added to a project \\"when we have time\\" i.e. never. But there are a many reasons why you should develop with a11y in mind from the start including some that will convince The Higher-Ups. We'll explore tools we can use to help us develop more accessibly and talk about some of the quirks and limitations that React Native has.
+", + "time": "17:45", + "title": "Accessibility as a First Class Citizen", + "track": "Base Camp Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Virtual Reality gives us an ability to experience virtual worlds from the comfort of our homes. But it doesn't have to be experienced alone. In this talk we will see how we can use React, WebVR and GraphQL to create social VR experience in the browser.", + "from": "EventLoop, Israel", + "id": "ckdh98rr2degx0916bgg3gjma", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": null, + "name": "Vladimir Novick", + "place": "EventLoop, Israel", + "slug": "create-collaborative-vr-environment-in-the-browser-with-react-and-graph-ql", + "speaker": "Vladimir Novick", + "speakerSlug": "vladimir-novick", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Virtual Reality gives us an ability to experience virtual worlds from the comfort of our homes. But it doesn't have to be experienced alone. In this talk we will see how we can use React, WebVR and GraphQL to create social VR experience in the browser.
+", + "time": "16:50", + "title": "Create Collaborative VR Environment in the Browser with React and GraphQL", + "track": "Base Camp Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Are you a React Native developer? Have you always been longing for the rich ecosystem of developer tooling that exists for the web in e.g. Chrome and Firefox? +Flipper is Facebooks internal, extensible mobile devtool platform, used by the mobile devs that work on the Facebook, WhatsApp, Instagram and many more apps. + +Recently the React Native and Flipper team have been working hard to add first class support for React Native as well. This means that monitoring network traffic and performance, using the React Devtools, inspecting device and application logs or even debugging JavaScript can now can now be conveniently done using one coherent tool. + +And best of all: Flipper is extensible, so let's build our own plugin while at it!", + "from": "Facebook, UK", + "id": "ckdhbrlvndhu20916cyuaegrc", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Summit Track", + "name": "Michel Weststrate", + "place": "Facebook, UK", + "slug": "flipper-the-extensible-dev-tool-platform-for-react-native", + "speaker": "Michel Weststrate", + "speakerSlug": "michel-weststrate", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Are you a React Native developer? Have you always been longing for the rich ecosystem of developer tooling that exists for the web in e.g. Chrome and Firefox? +Flipper is Facebooks internal, extensible mobile devtool platform, used by the mobile devs that work on the Facebook, WhatsApp, Instagram and many more apps.
+Recently the React Native and Flipper team have been working hard to add first class support for React Native as well. This means that monitoring network traffic and performance, using the React Devtools, inspecting device and application logs or even debugging JavaScript can now can now be conveniently done using one coherent tool.
+And best of all: Flipper is extensible, so let's build our own plugin while at it!
+", + "time": "17:45", + "title": "Flipper: The Extensible DevTool Platform for React Native", + "track": "Summit Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Blitz is a hyper productive framework for building fullstack React apps. You'll learn why I created Blitz, it's advantages and disadvantages, how it makes you so productive, and for what cases you should consider using Blitz.", + "from": "Blitz.js Creator, USA", + "id": "ckeo7rgd7vqox0a85z52mpvaq", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Summit Track", + "name": "Brandon Bayer ", + "place": "Blitz.js Creator, USA", + "slug": "blitz-js-the-fullstack-react-framework", + "speaker": "Brandon Bayer ", + "speakerSlug": "brandon-bayer", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Blitz is a hyper productive framework for building fullstack React apps. You'll learn why I created Blitz, it's advantages and disadvantages, how it makes you so productive, and for what cases you should consider using Blitz.
+", + "time": "16:15", + "title": "Blitz.js - The Fullstack React Framework", + "track": "Summit Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Every bug is different: Some are lurking around for months, others appear suddenly after the upgrade of a dependency. Some are introduced by us, others by other teams or systems. Some are painfully obvious and affect all users, others only occur in edge (cases). And the ways of finding, and eventually, preventing them, are just as diverse: be it snapshot, unit, integration, end to end tests or automated visual tests, every kind comes with its challenges and opportunities. Testing UIs is hard, but in the end, only test automation can give us the confidence we need to move fast and refactor our code relentlessly. In this talk we are going to look at what kinds of bugs there are, which tests are most effective for catching which, and how we can implement them using modern front end technologies.", + "from": "Spotify, Sweden", + "id": "ckfgrakw38agk09705x3exfe9", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Summit Track", + "name": "Iris Schaffer", + "place": "Spotify, Sweden", + "slug": "fantastic-bugs-and-where-to-find-them", + "speaker": "Iris Schaffer", + "speakerSlug": "iris-schaffer", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Every bug is different: Some are lurking around for months, others appear suddenly after the upgrade of a dependency. Some are introduced by us, others by other teams or systems. Some are painfully obvious and affect all users, others only occur in edge (cases). And the ways of finding, and eventually, preventing them, are just as diverse: be it snapshot, unit, integration, end to end tests or automated visual tests, every kind comes with its challenges and opportunities. Testing UIs is hard, but in the end, only test automation can give us the confidence we need to move fast and refactor our code relentlessly. In this talk we are going to look at what kinds of bugs there are, which tests are most effective for catching which, and how we can implement them using modern front end technologies.
+", + "time": "20:30", + "title": "Fantastic Bugs and Where to Find Them", + "track": "Summit Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "JS awsomeness beyond webpages. First we'll write a cool 2D game (in Javascript) - and then - write AI code (in Javascript!) that will be able to win this game for us. Oh, what a time to be alive!", + "from": "Duda, Israel", + "id": "ckfgrkgu98bke0970jt14ogbn", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Liad Yosef", + "place": "Duda, Israel", + "slug": "games-are-smarter-than-us", + "speaker": "Liad Yosef", + "speakerSlug": "liad-yosef", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "JS awsomeness beyond webpages. First we'll write a cool 2D game (in Javascript) - and then - write AI code (in Javascript!) that will be able to win this game for us. Oh, what a time to be alive!
+", + "time": "20:30", + "title": "Games Are Smarter Than Us", + "track": "Base Camp Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "There are many ways to measure web performance, but the most important thing is to measure what actually matters to users. This talk is about how to measure, analyze and fix slow running JavaScript code using browser APIs.", + "from": "DAZN, UK", + "id": "ckfgrr1wfqv5s0b773s7kuwel", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Summit Track", + "name": "Richie McColl ", + "place": "DAZN, UK", + "slug": "visualising-front-end-performance-bottlenecks", + "speaker": "Richie McColl ", + "speakerSlug": "richie-mc-coll", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "There are many ways to measure web performance, but the most important thing is to measure what actually matters to users. This talk is about how to measure, analyze and fix slow running JavaScript code using browser APIs.
+", + "time": "16:50", + "title": "Visualising Front-End Performance Bottlenecks", + "track": "Summit Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Do you know that the first novel ever written dates back in 1021. Its author is the Japan noblewoman Murasaki Shikibu. Till then countless of writers put their thoughts on paper and countless of readers experience their stories. People write for decades and we, as software developers, kind of ignore their craft. We write too. Not novels but software. Isn't it this still writing? Believe it or not there is a lot in common between creating fiction and writing code. In this presentation we will see how close we are to giants like Hemingway and Stephen King. Can we get some of their wisdom and apply it to our daily job as engineers. Come to this talk and will get a few practical advices. I hope my presentation will make you a slightly better React developer.", + "from": "Antidote.me, Bulgaria", + "id": "ckfgrwhfb8cvu0970vva4pub0", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Krasimir Tsonev", + "place": "Antidote.me, Bulgaria", + "slug": "we-are-all-hemingway", + "speaker": "Krasimir Tsonev", + "speakerSlug": "krasimir-tsonev", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Do you know that the first novel ever written dates back in 1021. Its author is the Japan noblewoman Murasaki Shikibu. Till then countless of writers put their thoughts on paper and countless of readers experience their stories. People write for decades and we, as software developers, kind of ignore their craft. We write too. Not novels but software. Isn't it this still writing? Believe it or not there is a lot in common between creating fiction and writing code. In this presentation we will see how close we are to giants like Hemingway and Stephen King. Can we get some of their wisdom and apply it to our daily job as engineers. Come to this talk and will get a few practical advices. I hope my presentation will make you a slightly better React developer.
+", + "time": "19:55", + "title": "We Are All Hemingway", + "track": "Base Camp Track", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Is your complex documentation setup a maintenance nightmare and chasing away potential contributors? In this talk, you will learn how to make your React component library documentation more user and contributor-friendly with Gatsby and MDX. Pair this with accessibility best practices, and your documentation will be inclusively smooth. + +", + "from": "Design Tokens, USA", + "id": "ckfi8kpiqm3h60911592a6a6e", + "isLightning": null, + "isoDate": "2020-10-16T00:00:00.000Z", + "label": "Base Camp Track", + "name": "Kathleen McMahon", + "place": "Design Tokens, USA", + "slug": "smoothly-inclusive-component-library-documentation", + "speaker": "Kathleen McMahon", + "speakerSlug": "kathleen-mc-mahon", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Is your complex documentation setup a maintenance nightmare and chasing away potential contributors? In this talk, you will learn how to make your React component library documentation more user and contributor-friendly with Gatsby and MDX. Pair this with accessibility best practices, and your documentation will be inclusively smooth.
+", + "time": "18:20", + "title": "Smoothly Inclusive Component Library Documentation", + "track": "Base Camp Track", + }, +] +`; + +exports[`RS should prepare tracks 1`] = ` +Array [ + "Summit Track", + "Base Camp Track", +] +`; + +exports[`RS should prepare workshops 1`] = ` +Array [ + Object { + "additionalInfo": null, + "code": "wsh-jetbrains", + "content": Array [ + "Project Setup", + "Project Cleanup", + "Testing", + "Debugging During Testing with NodeJS", + "Debugging During Testing with Chrome", + "TSX and ES6", + "Functional React Components in TypeScript", + "Functional React Components in TypeScript", + "Sharing Props Using Type Information", + "Class Components With Props", + "Model Class State With TypeScript Interfaces", + "Rich Events and Testing", + "Presentation and Container Components", + ], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-10-04T00:00:00.000Z", + "dateString": "For full-access tickets holders only", + "description": "React is wildly popular and thus wildly supported. TypeScript is increasingly popular, and thus increasingly supported. The two together? Not as much. Combine them with test-driven development (TDD)? Harder still.
+In this webinar we show a little about a lot. Meaning, the key steps to getting productive, in WebStorm, for React projects using TypeScript. Along the way we’ll show test-driven development and emphasize tips-and-tricks in the IDE to help you stay in the TDD flow.
+", + "duration": null, + "finishingTime": "", + "id": "ckemuap9gtpgy09167w3m3fj2", + "includedToPackage": true, + "level": "Intermediate.", + "location": "October 12, 17:00-20:00 CEST. The workshop will be recorded.
+", + "order": 80, + "prerequisites": "Some experience with React.
+If you don’t have an active WebStorm license, we’ll provide you with it.
+", + "schedule": null, + "slogan": null, + "slug": "react-type-script-tdd-in-web-storm", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/wCW2J28GQTSX6fYvzOjd", + }, + "bio": "Paul is a PyCharm and WebStorm Developer Advocate at JetBrains. Before that, Paul was a co-founder of Zope Corporation, taking the first open source application server through $14M of funding. Paul has bootstrapped both the Python Software Foundation and the Plone Foundation. Prior to that, Paul was an officer in the US Navy, starting [navy.mil](https://www.navy.mil/) in 1993.", + "company": "JetBrains", + "country": "USA", + "githubUrl": "https://github.com/pauleveritt", + "id": "ckemwzf3xsx900908nrw4z1xo", + "idMain": "ckemwzf3xsx900908nrw4z1xo", + "info": Array [], + "mediumUrl": null, + "name": "Paul Everitt", + "ownSite": null, + "talks": Array [], + "twitterUrl": "https://twitter.com/paulweveritt", + "workshops": Array [ + Object { + "slug": "react-type-script-tdd-in-web-storm", + "title": "React+TypeScript+TDD in WebStorm", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "React+TypeScript+TDD in WebStorm", + "toc": null, + "trainer": "Paul Everitt", + "trainers": Array [], + "trainersTitle": "Paul Everitt", + }, + Object { + "additionalInfo": null, + "code": "wsh-React-Query", + "content": Array [], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-10-04T00:00:00.000Z", + "dateString": "For full-access tickets holders only", + "description": "The distinction between server state and client state in our applications might be a new concept for some, but it is very important to understand when delivering a top-notch user experience. Server state comes with unique problems that often sneak into our applications by surprise like:
+Traditional “Global State” managers pretend these challenges don’t exist and this ultimately results in developers building their own on-the-fly attempts to mitigate them.
+In this workshop, we will build an application that exposes these issues, allows us to understand them better, and finally turn them from challenges into features by using a library designed for managing server-state called React Query.
+By the end of the workshop, you will have a better understanding of server state, client state, syncing asynchronous data (mouthful, I know), and React Query.
+", + "duration": null, + "finishingTime": "", + "id": "ckemgag7ssw8q0916y8tzaep5", + "includedToPackage": true, + "level": null, + "location": "October 12, 19:00-20:30 CEST. The workshop will be recorded.
+", + "order": 90, + "prerequisites": "To get the most out of this workshop, it’s recommended that you understand the basics of the following concepts:
+Hasura is a free and open-source GraphQL Engine that can help supercharge your GraphQL adoption, whether it is for a new application or for an existing one. The workshop will cover:
+October 13, 18:00-21:00 CEST. The workshop will be recorded.
+", + "order": 95, + "prerequisites": null, + "schedule": null, + "slogan": null, + "slug": "zero-to-production-with-fullstack-graph-ql-and-react", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/Fnsbp6mDTtufDfhS9KKA", + }, + "bio": "Allison is a solutions engineer at Hasura.", + "company": "Hasura", + "country": "USA", + "githubUrl": null, + "id": "ckg6z6kif4z4e0b773vjxuh20", + "idMain": "ckg6z6kif4z4e0b773vjxuh20", + "info": Array [], + "mediumUrl": null, + "name": "Allison Kunz", + "ownSite": "https://www.linkedin.com/in/tafka-labs/", + "talks": Array [], + "twitterUrl": null, + "workshops": Array [ + Object { + "slug": "zero-to-production-with-fullstack-graph-ql-and-react", + "title": "Zero to Production with Fullstack GraphQL and React", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Zero to Production with Fullstack GraphQL and React", + "toc": null, + "trainer": "Allison Kunz", + "trainers": Array [], + "trainersTitle": "Allison Kunz", + }, + Object { + "additionalInfo": null, + "code": "React-Hooks", + "content": Array [], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-10-04T00:00:00.000Z", + "dateString": "For full-access tickets holders only", + "description": "React is continually improving and evolving. React Hooks are a leap forward in how we develop components and manage state in our React applications. Now you can use state and other React features without having to write a class!
+Many React developers have switched from classes to React Hooks and are realizing the benefits of understanding their apps better because:
+Related logic is now located together;
+Less code is needed compared to the equivalent class;
+Function components better align with React’s mental model;
+Hooks are just awesome! 🎉
+Do you have a codebase filled with class components? You could leave it that way, but it will become increasingly more “legacy” as time continues to pass by. Why not change now?
+Is your team still not developing with React hooks? The longer you stick with the “old way,” the harder it will be to change when you need to. Why not change now?
+In this workshop, not only will you learn the ins and outs of React Hooks, but also how to switch to React Hooks from class lifecycle methods, bringing your codebase and your team into the modern React era.
+Get ready to… +
+Switch from setState to the useState hook;
+Make API calls with the useEffect hook instead of the componentDidMount, componentDidUpdate & componentWillUnmount lifecycle class methods;
+Create custom hooks to reuse and compose logic;
+Use function closures instead of this & .bind for callbacks and event handlers;
+…and many other features to help you write modern React code.
+October 13, 18:00-21:30 CEST. The workshop will not be recorded.
+", + "order": 100, + "prerequisites": "You’ll need to have… +
+Prior experience building React applications, specifically using classes;
+Experience with modern JavaScript syntax and asynchronous patterns like Promise & async/await.
+This minishop may not be for you if you…
+Are still new to React;
+Already have dabbled with React Hooks.
+Svelte is a new prominent JS framework exposing “write less do more” philosophy. During this workshop you will get proficiency as a Svelte developer. We will be building a real-time chat UI - participants will be able to follow along and exchange messages. Will start developing from simple front end components, later we'll connect it to a real backend and then test it and optimise for production. Attending a workshop is the fastest way to acquire a body of knowledge about building web apps with Svelte.
+", + "duration": null, + "finishingTime": "", + "id": "ckai0tws6pj6u0b20qjrg9bpv", + "includedToPackage": true, + "level": "Junior/medior level of frontend knowledge.", + "location": "October 14, 15:00-18:00 CEST. The workshop will be recorded.
+", + "order": 110, + "prerequisites": "Installed software – NPM, git, VSCode (or other IDE of choice).
+", + "schedule": null, + "slogan": null, + "slug": "build-full-featured-frontend-app-with-svelte", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/t9XoPJGQUmaXcSvoNSl4", + }, + "bio": "Mikhail is a developer with 10 years of expertise building web +applications. He used a variety of frameworks, throughout his career +starting with jQuery , AngularJS and Polymer; then he discovered VueJS and used it for several projects. Since 2019 he became a happy user of Svelte v3. +Besides fullstack development for enterprise companies Mikhail is doing open source projects and [speaks on meetups and conferences](https://github.com/shershen08/conf-talks) about various topics in modern web development. +Mikhail runs a local [Svelte meetup group in Amsterdam](https://www.meetup.com/Amsterdam-SvelteJS/).", + "company": "ING", + "country": "Netherlands", + "githubUrl": "https://github.com/shershen08", + "id": "ck5y2i5nshr4s0b6635ypswup", + "idMain": "ck5y2i5nshr4s0b6635ypswup", + "info": Array [], + "mediumUrl": null, + "name": "Mikhail Kuznetcov", + "ownSite": null, + "talks": Array [], + "twitterUrl": "https://twitter.com/legkoletat", + "workshops": Array [ + Object { + "slug": "build-full-featured-frontend-app-with-svelte", + "title": "Build Full Featured Frontend App with Svelte", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Build Full Featured Frontend App with Svelte", + "toc": "React keeps on evolving and making hard things easier for the average developer.
+One case, where React was not particularly hard but very repetitive, is working with AJAX request. There is always the trinity of loading, success and possible error states that had to be handled each time. But no more as the <Suspense />
component makes life much easier.
Another case is performance of larger and complex applications. Usually React is fast enough but with a large application rendering components can conflict with user interactions. Concurrent rendering will, mostly automatically, take care of this.
+You will learn all about using useTransition()
hook and the
October 14, 18:00-21:00 CEST. The workshop will be recorded.
+", + "order": 120, + "prerequisites": null, + "schedule": null, + "slogan": null, + "slug": "getting-started-with-suspense-and-concurrent-rendering-in-react", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/CgqbTtCjTxyCgI04TDNA", + }, + "bio": "Maurice de Beijer is an independent software consultant and trainer. He specializes in JavaScript, React, and [ASP.NET Core](http://asp.net/). His work includes a large, global, safety application for the oil and gas industry. Maurice is also active in the open source community. He teaches ECMAScript, TypeScript, React, RxJS and [ASP.NET](http://asp.net/) courses. Since 2005, he has received Microsoft’s Yearly Most Valuable Professional Award. Maurice is also active in the Dutch dotNed user group and helps organize its meetings.", + "company": "Independent Software Consultant and Trainer", + "country": "Netherlands", + "githubUrl": null, + "id": "ck69gn2zbk5t30b75bqs18o5e", + "idMain": "ck69gn2zbk5t30b75bqs18o5e", + "info": Array [], + "mediumUrl": null, + "name": " Maurice de Beijer", + "ownSite": null, + "talks": Array [], + "twitterUrl": null, + "workshops": Array [ + Object { + "slug": "getting-started-with-suspense-and-concurrent-rendering-in-react", + "title": "Getting Started with Suspense and Concurrent Rendering in React", + }, + Object { + "slug": "getting-started-with-suspense-and-concurrent-rendering-in-react-group-2", + "title": "Getting Started with Suspense and Concurrent Rendering in React (Group 2)", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Getting Started with Suspense and Concurrent Rendering in React", + "toc": null, + "trainer": " Maurice de Beijer", + "trainers": Array [], + "trainersTitle": " Maurice de Beijer", + }, + Object { + "additionalInfo": null, + "code": "ws-TensorflowJS", + "content": Array [], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-10-04T00:00:00.000Z", + "dateString": "For full-access tickets holders only", + "description": "Natural languages play an important role on the web in the form of content and comments. Texts hold information that can be quite hard to extract but can enable you to further automate your website. In this workshop we will use Machine Learning to create an automated text tagging system. With this tool we can suggest tags for the comments/blogs of your visitors on your website.
+", + "duration": null, + "finishingTime": "", + "id": "ck7em36lrvkaj0b20x4bsbcvz", + "includedToPackage": true, + "level": "Intermediate/Advanced.", + "location": "October 14, 18:00-21:00 CEST. The workshop will be recorded.
+", + "order": 130, + "prerequisites": "Experience with JavaScript and NodeJS. NodeJS installed on your laptop. You do not need experience with Machine Learning.
+", + "schedule": null, + "slogan": null, + "slug": "automated-tagging-system-with-tensorflow-js", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/GgNnymRS5GJKBjkB0euA", + }, + "bio": "Rick has a master's degree in Physics at TU Delft. +Rick gives courses and workshops at [school](https://schoolofdatascience.nl/ ) of data science in the fields of data science, machine learning and deep learning to companies and consumers. +Additionally, Rick co-founded a company Mech Punk in which they make VR controlled robots that can be controlled from any place of the world. ", + "company": "School of Data Science", + "country": "Netherlands", + "githubUrl": "https://github.com/IRiViI", + "id": "ck7emkdqivm4p0b20b1fw17th", + "idMain": "ck7emkdqivm4p0b20b1fw17th", + "info": Array [], + "mediumUrl": null, + "name": "Rick Vink", + "ownSite": null, + "talks": Array [], + "twitterUrl": null, + "workshops": Array [ + Object { + "slug": "automated-tagging-system-with-tensorflow-js", + "title": "Automated Tagging System with TensorflowJS", + }, + ], + "workshopsActivity": Array [ + Object { + "slug": "automated-tagging-system-with-tensorflow-js", + "title": "Automated Tagging System with TensorflowJS", + }, + ], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Automated Tagging System with TensorflowJS", + "toc": "React keeps on evolving and making hard things easier for the average developer.
+One case, where React was not particularly hard but very repetitive, is working with AJAX request. There is always the trinity of loading, success and possible error states that had to be handled each time. But no more as the <Suspense />
component makes life much easier.
Another case is performance of larger and complex applications. Usually React is fast enough but with a large application rendering components can conflict with user interactions. Concurrent rendering will, mostly automatically, take care of this.
+You will learn all about using useTransition()
hook and the
October 19, 18:00-21:00 CEST. The workshop will be recorded.
+", + "order": 140, + "prerequisites": null, + "schedule": null, + "slogan": null, + "slug": "getting-started-with-suspense-and-concurrent-rendering-in-react-group-2", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/CgqbTtCjTxyCgI04TDNA", + }, + "bio": "Maurice de Beijer is an independent software consultant and trainer. He specializes in JavaScript, React, and [ASP.NET Core](http://asp.net/). His work includes a large, global, safety application for the oil and gas industry. Maurice is also active in the open source community. He teaches ECMAScript, TypeScript, React, RxJS and [ASP.NET](http://asp.net/) courses. Since 2005, he has received Microsoft’s Yearly Most Valuable Professional Award. Maurice is also active in the Dutch dotNed user group and helps organize its meetings.", + "company": "Independent Software Consultant and Trainer", + "country": "Netherlands", + "githubUrl": null, + "id": "ck69gn2zbk5t30b75bqs18o5e", + "idMain": "ck69gn2zbk5t30b75bqs18o5e", + "info": Array [], + "mediumUrl": null, + "name": " Maurice de Beijer", + "ownSite": null, + "talks": Array [], + "twitterUrl": null, + "workshops": Array [ + Object { + "title": "Getting Started with Suspense and Concurrent Rendering in React", + }, + Object { + "title": "Getting Started with Suspense and Concurrent Rendering in React (Group 2)", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Getting Started with Suspense and Concurrent Rendering in React (Group 2)", + "toc": null, + "trainer": " Maurice de Beijer", + "trainers": Array [], + "trainersTitle": " Maurice de Beijer", + }, + Object { + "additionalInfo": "Learn more about the trainer, author of Styled Components on his website.
+", + "code": "modern-react", + "content": Array [ + "Quick intro to React Hooks", + "Using Suspense in production right now with React.lazy", + "Getting started with Concurrent React (previously “Async React”)", + ], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-10-05T00:00:00.000Z", + "dateString": "October 5", + "description": "After some years of silence, React team had recently landed a number of new additions to its library enabling application developers to optimize their code both for better performance and maintainability.
+Max will guide you through emerging patterns and show you by example how you can start applying the new best practices in your production apps.
+", + "duration": null, + "finishingTime": "", + "id": "ck122i0650avl0b54yfa8wb1a", + "level": "Intermediate/advanced JavaScript/React developers.", + "location": "October 5-6, 16:00-20:00 CET. Remote.
+", + "order": 1090, + "prerequisites": "To attend this workshop you need to be familiar with the basics of React, as well as most of the new features in ES2015.
+", + "schedule": null, + "slogan": "Bring + +your + +laptop!", + "slug": "modern-react", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/2jqu4t6TSlKDcqRFP6zT", + }, + "bio": "Max Stoiber is a Staff Software Engineer at Gatsby, inventing the future of web development. Previously he worked at GitHub, who acquired the startup he co-founded, Spectrum. He is well known for making styled-components, react-boilerplate, and a wide variety of other open source projects in the React ecosystem.", + "company": "Gatsby", + "country": "Austria", + "githubUrl": "https://github.com/mxstbr", + "id": "ck0zj6ytry8s20b71lgpuqves", + "idMain": "ck0zj6ytry8s20b71lgpuqves", + "info": Array [ + Object { + "id": "ck341dbmbqob60b20hrylkplw", + "idAlt": "ck341dbmbqob60b20hrylkplw", + "isNightSpeaker": null, + "label": "Panel Discussion", + "order": 70, + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/2jqu4t6TSlKDcqRFP6zT", + }, + "bio": "Max Stoiber is a Staff Software Engineer at Gatsby, inventing the future of web development. Previously he worked at GitHub, who acquired the startup he co-founded, Spectrum. He is well known for making styled-components, react-boilerplate, and a wide variety of other open source projects in the React ecosystem.", + "company": "Gatsby", + "country": "Austria", + "githubUrl": "https://github.com/mxstbr", + "id": "ck0zj6ytry8s20b71lgpuqves", + "idMain": "ck0zj6ytry8s20b71lgpuqves", + "mediumUrl": null, + "name": "Max Stoiber", + "ownSite": "https://mxstbr.com/", + "twitterUrl": "https://twitter.com/mxstbr", + }, + "status": "PUBLISHED", + }, + ], + "mediumUrl": null, + "name": "Max Stoiber", + "ownSite": "https://mxstbr.com/", + "talks": Array [], + "twitterUrl": "https://twitter.com/mxstbr", + "workshops": Array [ + Object { + "title": "Modern React", + }, + Object { + "title": "Deep Dive Into Styled-Components With Its Co-Creator", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Modern React", + "toc": null, + "trainer": "Max Stoiber", + "trainers": Array [], + "trainersTitle": "Max Stoiber", + }, + Object { + "additionalInfo": null, + "code": "collina_wsh", + "content": Array [ + "How Promises and async/await \\"work\\"", + "How the Node.js event loop interact with Promises", + "How to use Promises correctly", + "The most common pitfalls when using Promises and async/await", + "How to use Promises efficiently", + ], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-10-05T00:00:00.000Z", + "dateString": "October 5", + "description": "In our experience, if you are using promises, you are likely using them wrong (and nearly everybody else is too). This is most often due to misunderstandings about how Promises work, choices that were made by TC39 when designing the promises API, inconsistencies in how Promises are used, or failure to account for the cost of using Promises in an application, and ultimately how the event loop works. In this workshop, we aim to help developers do the right thing with Promises. Through a series of hands on exercises and puzzles, developers will learn the ins and outs of developing with Promises in Node.js, learning everything they should do, and most importantly what they shouldn't do, in order to maximize the effectiveness of their code and avoid common performance pitfalls.
+", + "duration": null, + "finishingTime": "", + "id": "ckac5wwnqcrkw0b205cg7g5z3", + "level": null, + "location": "October 5-6, 14:00-18:00 CET. Remote.
+", + "order": 1100, + "prerequisites": null, + "schedule": null, + "slogan": null, + "slug": "broken-promises", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/4LTWaL5SpOCr2oBbS8rq", + }, + "bio": "Node.js TSC member, PhD, Technical Director @ NearForm, IoT Expert, Consultant, author of Pino and Fastify. Co-author of the book \\"Node.js Cookbook, Third Edition\\" edited by Packt.", + "company": "NearForm", + "country": "Italy", + "githubUrl": "https://github.com/mcollina", + "id": "ck38s6qxa28h90b66plt7e737", + "idMain": "ck38s6qxa28h90b66plt7e737", + "info": Array [], + "mediumUrl": "http://matteocollina.com/", + "name": "Matteo Collina", + "ownSite": "", + "talks": Array [], + "twitterUrl": "https://twitter.com/matteocollina", + "workshops": Array [ + Object { + "slug": "broken-promises", + "title": "Broken Promises", + }, + ], + "workshopsActivity": Array [ + Object { + "slug": "broken-promises", + "title": "Broken Promises", + }, + ], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Broken Promises", + "toc": "This is a hands-on workshop for React developers in which you will learn how to define a common language for collaboration and iterate on products faster.
+We will start with the important questions of Why and When. While design systems encompass tools and processes for everyone in the company, we will focus on the code side of it - Platform agnostic design tokens and a component library in React that can be used in products and can evolve as teams use it.
+", + "duration": null, + "finishingTime": "", + "id": "ck30bp7ypgowc0b32ahqhfpnn", + "level": "Intermediate/Advanced JavaScript/React developers.", + "location": "October 7-8, 15:00-19:00 CET. Remote.
+", + "order": 1110, + "prerequisites": "Working knowledge of React would go a long way.
+", + "schedule": null, + "slogan": null, + "slug": "design-systems-in-react", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/wMXZaraBQ2yZbNjZec9N", + }, + "bio": "Sid builds tools for developers. In the past, he worked on Design Systems at Auth0 and as the frontend architect at Practo. He loves talking about design, performance and open source.", + "company": "CodeSandbox", + "country": "Netherlands", + "githubUrl": "https://github.com/siddharthkp", + "id": "ck30bhsz8gvw80b669dzgs7sk", + "idMain": "ck30bhsz8gvw80b669dzgs7sk", + "info": Array [ + Object { + "id": "ckcepj1vw5st60903w7lr3ker", + "idAlt": "ckcepj1vw5st60903w7lr3ker", + "isNightSpeaker": null, + "label": "Workshop", + "order": 9, + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/wMXZaraBQ2yZbNjZec9N", + }, + "bio": "Sid builds tools for developers. In the past, he worked on Design Systems at Auth0 and as the frontend architect at Practo. He loves talking about design, performance and open source.", + "company": "CodeSandbox", + "country": "Netherlands", + "githubUrl": "https://github.com/siddharthkp", + "id": "ck30bhsz8gvw80b669dzgs7sk", + "idMain": "ck30bhsz8gvw80b669dzgs7sk", + "mediumUrl": null, + "name": "Siddharth Kshetrapal", + "ownSite": null, + "twitterUrl": "https://twitter.com/siddharthkp", + }, + "status": "PUBLISHED", + }, + ], + "mediumUrl": null, + "name": "Siddharth Kshetrapal", + "ownSite": null, + "talks": Array [], + "twitterUrl": "https://twitter.com/siddharthkp", + "workshops": Array [ + Object { + "title": "Design Systems in React", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Design Systems in React", + "toc": null, + "trainer": "Siddharth Kshetrapal", + "trainers": Array [], + "trainersTitle": "Siddharth Kshetrapal", + }, + Object { + "additionalInfo": null, + "code": "whatsapp", + "content": Array [], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-10-07T00:00:00.000Z", + "dateString": "October 7", + "description": "In this full day workshop we will go through the process of creating Whatsapp app in React Native from scratch. We will talk about how to get started, structure our app and create proper navigation workflow, style our screens and create compelling animations. But we will not stop there. Not only React Native is changing mobile ecosystem nowadays, GraphQL is also an important part of how we connect to our backend.
+We will go through GraphQL basics and use it in our Whatsapp app to connect to GraphQL endpoint which we will also define and create during workshop by using free and open source Hasura GraphQL engine. Workshop will give you the ultimate experience of creating React Native app from scratch with GraphQL API.
+", + "duration": null, + "finishingTime": "", + "id": "ck124uokd0n5w0b85i1f9qufj", + "level": "Intermediate JavaScript/React developers, beginner React Native.", + "location": "October 7-8, 16:00-20:00 CET. Remote.
+", + "order": 1120, + "prerequisites": "Configured and running React Native Hello World application.
+", + "schedule": null, + "slogan": null, + "slug": "building-whats-app-in-a-day-with-react-native", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/4QZV07aFSq6KDPQOeOpm", + }, + "bio": "CTO & Co-Founder of EventLoop, engineer and trainer, Google Developer Expert, worldwide speaker and published author. Vladimir works mostly in Web and Mobile fields advocating usage of React, React Native, GraphQL as well serverless architectures and functional languages such as ReasonML. ", + "company": "EventLoop", + "country": "Israel", + "githubUrl": "https://github.com/vnovick", + "id": "ck1256gqycb970b71ar9x1qwa", + "idMain": "ck1256gqycb970b71ar9x1qwa", + "info": Array [ + Object { + "id": "ckdh5sze9l6q40b97fwj04myv", + "idAlt": "ckdh5sze9l6q40b97fwj04myv", + "isNightSpeaker": null, + "label": "Base Camp Track", + "order": 6, + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/4QZV07aFSq6KDPQOeOpm", + }, + "bio": "CTO & Co-Founder of EventLoop, engineer and trainer, Google Developer Expert, worldwide speaker and published author. Vladimir works mostly in Web and Mobile fields advocating usage of React, React Native, GraphQL as well serverless architectures and functional languages such as ReasonML. ", + "company": "EventLoop", + "country": "Israel", + "githubUrl": "https://github.com/vnovick", + "id": "ck1256gqycb970b71ar9x1qwa", + "idMain": "ck1256gqycb970b71ar9x1qwa", + "mediumUrl": null, + "name": "Vladimir Novick", + "ownSite": "http://vnovick.com/", + "twitterUrl": "https://twitter.com/VladimirNovick", + }, + "status": "PUBLISHED", + }, + ], + "mediumUrl": null, + "name": "Vladimir Novick", + "ownSite": "http://vnovick.com/", + "talks": Array [ + Object { + "description": "Virtual Reality gives us an ability to experience virtual worlds from the comfort of our homes. But it doesn't have to be experienced alone. In this talk we will see how we can use React, WebVR and GraphQL to create social VR experience in the browser.", + "isLightning": null, + "timeString": "16:50", + "title": "Create Collaborative VR Environment in the Browser with React and GraphQL", + "track": Object { + "isPrimary": null, + "name": "Base Camp Track", + }, + }, + ], + "twitterUrl": "https://twitter.com/VladimirNovick", + "workshops": Array [ + Object { + "title": "Building WhatsApp in a Day with React Native", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Building WhatsApp in a Day with React Native", + "toc": null, + "trainer": "Vladimir Novick", + "trainers": Array [], + "trainersTitle": "Vladimir Novick", + }, + Object { + "additionalInfo": null, + "code": "ws-aws", + "content": Array [ + "Authentication", + "GraphQL API with AWS AppSync", + "REST API with a Lambda Function", + "Adding Storage with Amazon S3", + "Hosting", + "Analytics", + "Removing / Deleting Services", + ], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-10-07T00:00:00.000Z", + "dateString": "October 7", + "description": "In this workshop, you’ll learn how to use AWS Amplify and React to build a full-stack cloud application using serverless technologies. The app will incorporate features like routing, authentication, authorization, a GraphQL database, and image storage. You’ll learn how to then deploy the app to a global CDN using Amplify hosting. By the end of the workshop, you should have a good understanding of how to build full-stack serverless applications leveraging your existing skillset as a front-end developer.
+", + "duration": "8", + "finishingTime": "", + "id": "ck5zpbea0kfyw0b20qg0nh6qc", + "level": "", + "location": "October 7-8, 16:00-20:00 CET. Remote.
+", + "order": 1130, + "prerequisites": null, + "schedule": null, + "slogan": null, + "slug": "building-full-stack-cloud-applications-with-react-graph-ql-aws-amplify", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/glrjtl9T5awAzyT0DZVd", + }, + "bio": "Nader has been developing with React Native for over 2.5 years. He has worked with and trained developers from fortune 500 companies like Amazon, Visa, American Express, and Microsoft, helping them to get up to speed with React Native as quickly as possible.", + "company": "Amazon AWS", + "country": "USA", + "githubUrl": "https://github.com/dabit3", + "id": "ck60gduudqlr30b75qyumd2is", + "idMain": "ck60gduudqlr30b75qyumd2is", + "info": Array [ + Object { + "id": "ckewl4xnaeecs0908jiz3y3z6", + "idAlt": "ckewl4xnaeecs0908jiz3y3z6", + "isNightSpeaker": null, + "label": "Base Camp Track", + "order": 4, + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/glrjtl9T5awAzyT0DZVd", + }, + "bio": "Nader has been developing with React Native for over 2.5 years. He has worked with and trained developers from fortune 500 companies like Amazon, Visa, American Express, and Microsoft, helping them to get up to speed with React Native as quickly as possible.", + "company": "Amazon AWS", + "country": "USA", + "githubUrl": "https://github.com/dabit3", + "id": "ck60gduudqlr30b75qyumd2is", + "idMain": "ck60gduudqlr30b75qyumd2is", + "mediumUrl": null, + "name": "Nader Dabit", + "ownSite": null, + "twitterUrl": "https://twitter.com/dabit3", + }, + "status": "PUBLISHED", + }, + ], + "mediumUrl": null, + "name": "Nader Dabit", + "ownSite": null, + "talks": Array [ + Object { + "description": "CDK (Cloud development kit) enables developers to build cloud infrastructure using popular programming languages like Python, Typescript, or JavaScript. CDK is a next-level abstraction in infrastructure as code, allowing developers who were traditionally unfamiliar with cloud computing to build scalable APIs and web services using their existing skillset, and do so in only a few lines of code. + +In this talk, you’ll learn how to use the TypeScript flavor of CDK to build a hyper-scalable real-time API with GraphQL, Lambda, DynamoDB, and AWS AppSync . At the end of the talk, I’ll live code an API from scratch in just a couple of minutes and then test out queries, mutations, and subscriptions. + +By the end of the talk, you should have a good understanding of GraphQL, AppSync, and CDK and be ready to build an API in your next project using TypeScript and CDK.", + "isLightning": null, + "timeString": "17:50", + "title": "Building Real-time Serverless GraphQL APIs on AWS with TypeScript and CDK", + "track": Object { + "isPrimary": null, + "name": "Base Camp Track", + }, + }, + ], + "twitterUrl": "https://twitter.com/dabit3", + "workshops": Array [ + Object { + "title": "Building Full Stack Cloud Applications with React, GraphQL, & AWS Amplify", + }, + ], + "workshopsActivity": Array [ + Object { + "title": "Building Full Stack Cloud Applications with React, GraphQL, & AWS Amplify", + }, + ], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Building Full Stack Cloud Applications with React, GraphQL, & AWS Amplify", + "toc": null, + "trainer": "Nader Dabit", + "trainers": Array [ + Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/glrjtl9T5awAzyT0DZVd", + }, + "bio": "Nader has been developing with React Native for over 2.5 years. He has worked with and trained developers from fortune 500 companies like Amazon, Visa, American Express, and Microsoft, helping them to get up to speed with React Native as quickly as possible.", + "company": "Amazon AWS", + "country": "USA", + "githubUrl": "https://github.com/dabit3", + "id": "ck60gduudqlr30b75qyumd2is", + "idMain": "ck60gduudqlr30b75qyumd2is", + "mediumUrl": null, + "name": "Nader Dabit", + "ownSite": null, + "slug": "nader-dabit", + "talks": Array [ + Object { + "description": "CDK (Cloud development kit) enables developers to build cloud infrastructure using popular programming languages like Python, Typescript, or JavaScript. CDK is a next-level abstraction in infrastructure as code, allowing developers who were traditionally unfamiliar with cloud computing to build scalable APIs and web services using their existing skillset, and do so in only a few lines of code. + +In this talk, you’ll learn how to use the TypeScript flavor of CDK to build a hyper-scalable real-time API with GraphQL, Lambda, DynamoDB, and AWS AppSync . At the end of the talk, I’ll live code an API from scratch in just a couple of minutes and then test out queries, mutations, and subscriptions. + +By the end of the talk, you should have a good understanding of GraphQL, AppSync, and CDK and be ready to build an API in your next project using TypeScript and CDK.", + "isLightning": null, + "timeString": "17:50", + "title": "Building Real-time Serverless GraphQL APIs on AWS with TypeScript and CDK", + "track": Object { + "isPrimary": null, + "name": "Base Camp Track", + }, + }, + ], + "twitterUrl": "https://twitter.com/dabit3", + "workshops": Array [ + Object { + "title": "Building Full Stack Cloud Applications with React, GraphQL, & AWS Amplify", + }, + ], + "workshopsActivity": Array [ + Object { + "title": "Building Full Stack Cloud Applications with React, GraphQL, & AWS Amplify", + }, + ], + }, + ], + "trainersTitle": "Nader Dabit", + }, + Object { + "additionalInfo": null, + "code": "TypeScript-Advanced", + "content": Array [], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-10-12T00:00:00.000Z", + "dateString": "October 12", + "description": "More and more projects are using TypeScript. This workshop will provide a deep dive into the language, and basic TypeScript knowledge is assumed. +We will briefly discuss the design philosophy of TypeScript, and then cover all the lesser-known or harder features. +That is: do all the cool and weird meta programming stuff (TS is turing complete!) and learn the tricks you won't find in the handbook.
+So join if you feel like you're writing too much type annotations to make TypeScript happy! We'll dive deep into how type inference and control flows works, and how you can make the compiler work for you. We'll discuss all the fancier language constructs like:
+October 12, 15:00-19:00 CET. Remote.
+", + "order": 1140, + "prerequisites": null, + "schedule": null, + "slogan": null, + "slug": "advanced-fancy-type-script", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/QlY3D49T5iDadzDF7ZXw", + }, + "bio": "Open source fanatic, speaker and trainer. Author of MobX, MobX-State-Tree, Immer and a plethora of smaller packages. On a continuous quest to make programming as natural as possible. React, JavaScript and TypeScript fan. Working at Facebook on dev tooling for mobile developers.", + "company": "Facebook", + "country": "UK", + "githubUrl": "https://github.com/mweststrate", + "id": "ck30crtskgtbl0b3239sszqt4", + "idMain": "ck30crtskgtbl0b3239sszqt4", + "info": Array [ + Object { + "id": "ckdh5769ol4q50b97vulywvb5", + "idAlt": "ckdh5769ol4q50b97vulywvb5", + "isNightSpeaker": null, + "label": "Summit Track", + "order": 19, + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/QlY3D49T5iDadzDF7ZXw", + }, + "bio": "Open source fanatic, speaker and trainer. Author of MobX, MobX-State-Tree, Immer and a plethora of smaller packages. On a continuous quest to make programming as natural as possible. React, JavaScript and TypeScript fan. Working at Facebook on dev tooling for mobile developers.", + "company": "Facebook", + "country": "UK", + "githubUrl": "https://github.com/mweststrate", + "id": "ck30crtskgtbl0b3239sszqt4", + "idMain": "ck30crtskgtbl0b3239sszqt4", + "mediumUrl": null, + "name": "Michel Weststrate", + "ownSite": null, + "twitterUrl": "https://twitter.com/mweststrate", + }, + "status": "PUBLISHED", + }, + ], + "mediumUrl": null, + "name": "Michel Weststrate", + "ownSite": null, + "talks": Array [ + Object { + "description": "Are you a React Native developer? Have you always been longing for the rich ecosystem of developer tooling that exists for the web in e.g. Chrome and Firefox? +Flipper is Facebooks internal, extensible mobile devtool platform, used by the mobile devs that work on the Facebook, WhatsApp, Instagram and many more apps. + +Recently the React Native and Flipper team have been working hard to add first class support for React Native as well. This means that monitoring network traffic and performance, using the React Devtools, inspecting device and application logs or even debugging JavaScript can now can now be conveniently done using one coherent tool. + +And best of all: Flipper is extensible, so let's build our own plugin while at it!", + "isLightning": null, + "timeString": "17:45", + "title": "Flipper: The Extensible DevTool Platform for React Native", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + "twitterUrl": "https://twitter.com/mweststrate", + "workshops": Array [ + Object { + "title": "Advanced, Fancy TypeScript", + }, + Object { + "title": "Introduction to MobX for React", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Advanced, Fancy TypeScript", + "toc": null, + "trainer": "Michel Weststrate", + "trainers": Array [], + "trainersTitle": "Michel Weststrate", + }, + Object { + "additionalInfo": null, + "code": "Advanced-React", + "content": Array [ + "Functional Programming (FP) for React developers:", + "Closure", + "Memoization", + "Composition", + "React Hooks for advanced use cases:", + "Hooks Composition Model (custom Hooks)", + "useContext", + "useReducer", + "useMemo", + "Use cases: You will build a GraphQL client with cache for React (you don't need to know GraphQL) using all the Hooks and FP concepts from the workshop syllabus", + "and more...", + ], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-10-12T00:00:00.000Z", + "dateString": "October 12", + "description": "React keeps innovating and bringing new and better features. Despite this constant change, the principles of React remain the same: composition, immutability, purity... in other words, functional programming principles. In this advanced workshop, you will learn how to implement advanced features in React applying functional programming in JavaScript without using any other libraries.
+", + "duration": null, + "finishingTime": "", + "id": "ck30cpib6h0j60b66bguzzy4t", + "level": "Intermediate JavaScript/React developers.", + "location": "October 12-13, 16:00-20:00 CET. Remote.
+", + "order": 1150, + "prerequisites": "To attend this workshop you need to be familiar with the basics of React and basic Hooks like useState and useEffect, as well as most of the new features in ES2015
+Want to know more about the trainer? Check reactgraphql.academy.
+", + "schedule": null, + "slogan": null, + "slug": "advanced-react-workshop", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/jx66c2DKQ3KhZSOiLxXS", + }, + "bio": "Founder at React GraphQL Academy and LeanJS. Developer and Coach passionate about JavaScript, React and GraphQL. Organizer of the JavaScript London Meetup and other popular meetups in the EU.", + "company": "React GraphQL Academy", + "country": "UK", + "githubUrl": "https://github.com/alexlbr", + "id": "ck10teywmv6940b541heiz22b", + "idMain": "ck10teywmv6940b541heiz22b", + "info": Array [ + Object { + "id": "ckcepk8705sxm0903ficz56se", + "idAlt": "ckcepk8705sxm0903ficz56se", + "isNightSpeaker": null, + "label": "Workshop", + "order": 7, + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/jx66c2DKQ3KhZSOiLxXS", + }, + "bio": "Founder at React GraphQL Academy and LeanJS. Developer and Coach passionate about JavaScript, React and GraphQL. Organizer of the JavaScript London Meetup and other popular meetups in the EU.", + "company": "React GraphQL Academy", + "country": "UK", + "githubUrl": "https://github.com/alexlbr", + "id": "ck10teywmv6940b541heiz22b", + "idMain": "ck10teywmv6940b541heiz22b", + "mediumUrl": null, + "name": "Alex Lobera", + "ownSite": null, + "twitterUrl": "https://twitter.com/alex_lobera", + }, + "status": "PUBLISHED", + }, + ], + "mediumUrl": null, + "name": "Alex Lobera", + "ownSite": null, + "talks": Array [], + "twitterUrl": "https://twitter.com/alex_lobera", + "workshops": Array [ + Object { + "title": "Advanced React Workshop", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Advanced React Workshop", + "toc": null, + "trainer": "Alex Lobera", + "trainers": Array [], + "trainersTitle": "Alex Lobera", + }, + Object { + "additionalInfo": null, + "code": "MobX-for-React", + "content": Array [], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-10-14T00:00:00.000Z", + "dateString": "October 14", + "description": "MobX is now five years old and still one of the most popular state management solutions in React (used by for example Microsoft Outlook, the Battlefield games, Amazon and Netflix). With the (almost) recently released version 6 MobX has been modernized and is more accessible than ever.
+In this brand new workshop we will discuss the philosophy of MobX, and cover all the basics of building a MobX managed application, using observables, Context and hooks. We will also discuss how MobX works behind the scenes and why MobX applications typically don't need any further manual optimizations. Basic JavaScript and React knowledge is required for this workshop.
+", + "duration": null, + "finishingTime": "", + "id": "ckdh7qs3bdb8e09163vvjeqjl", + "level": null, + "location": "October 14, 16:00-20:00 CET. Remote.
+", + "order": 1160, + "prerequisites": null, + "schedule": null, + "slogan": null, + "slug": "introduction-to-mob-x-for-react", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/QlY3D49T5iDadzDF7ZXw", + }, + "bio": "Open source fanatic, speaker and trainer. Author of MobX, MobX-State-Tree, Immer and a plethora of smaller packages. On a continuous quest to make programming as natural as possible. React, JavaScript and TypeScript fan. Working at Facebook on dev tooling for mobile developers.", + "company": "Facebook", + "country": "UK", + "githubUrl": "https://github.com/mweststrate", + "id": "ck30crtskgtbl0b3239sszqt4", + "idMain": "ck30crtskgtbl0b3239sszqt4", + "info": Array [ + Object { + "id": "ckdh5769ol4q50b97vulywvb5", + "idAlt": "ckdh5769ol4q50b97vulywvb5", + "isNightSpeaker": null, + "label": "Summit Track", + "order": 19, + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/QlY3D49T5iDadzDF7ZXw", + }, + "bio": "Open source fanatic, speaker and trainer. Author of MobX, MobX-State-Tree, Immer and a plethora of smaller packages. On a continuous quest to make programming as natural as possible. React, JavaScript and TypeScript fan. Working at Facebook on dev tooling for mobile developers.", + "company": "Facebook", + "country": "UK", + "githubUrl": "https://github.com/mweststrate", + "id": "ck30crtskgtbl0b3239sszqt4", + "idMain": "ck30crtskgtbl0b3239sszqt4", + "mediumUrl": null, + "name": "Michel Weststrate", + "ownSite": null, + "twitterUrl": "https://twitter.com/mweststrate", + }, + "status": "PUBLISHED", + }, + ], + "mediumUrl": null, + "name": "Michel Weststrate", + "ownSite": null, + "talks": Array [ + Object { + "description": "Are you a React Native developer? Have you always been longing for the rich ecosystem of developer tooling that exists for the web in e.g. Chrome and Firefox? +Flipper is Facebooks internal, extensible mobile devtool platform, used by the mobile devs that work on the Facebook, WhatsApp, Instagram and many more apps. + +Recently the React Native and Flipper team have been working hard to add first class support for React Native as well. This means that monitoring network traffic and performance, using the React Devtools, inspecting device and application logs or even debugging JavaScript can now can now be conveniently done using one coherent tool. + +And best of all: Flipper is extensible, so let's build our own plugin while at it!", + "isLightning": null, + "timeString": "17:45", + "title": "Flipper: The Extensible DevTool Platform for React Native", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + "twitterUrl": "https://twitter.com/mweststrate", + "workshops": Array [ + Object { + "title": "Advanced, Fancy TypeScript", + }, + Object { + "title": "Introduction to MobX for React", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Introduction to MobX for React", + "toc": null, + "trainer": "Michel Weststrate", + "trainers": Array [], + "trainersTitle": "Michel Weststrate", + }, + Object { + "additionalInfo": "Want to know more about the trainer? Check React Academy website.
+", + "code": "graph-ql", + "content": Array [ + "Basics of GraphQL", + "Set up a GraphQL backend", + "Setup authentication and permissions layers to secure your GraphQL APIs", + "Using GraphiQL to explore and test your GraphQL API", + "Setting up a GraphQL client with Apollo", + "Fetching and rendering data in your react app with GraphQL queries (using HOCs, render props, hooks)", + "Inserting data with GraphQL mutations", + "Updating and deleting data with GraphQL mutations", + "Updating the store after a mutation", + "Optimistic updates", + ], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-10-19T00:00:00.000Z", + "dateString": "October 19", + "description": "This one-day workshop will teach you everything you need to know to incorporate GraphQL into your application. During the first half of the workshop, we'll explain the basics of a GraphQL and we’re gonna build a GraphQL server, covering best practices for architecting your schema, error handling, authentication, and permission layers. +In the second half of the workshop, we’ll connect our GraphQL server to a React application with Apollo Client. We’ll break down the modular architecture of the client and teach you how to set everything up and use queries and mutations. We’ll show a few different approaches for working with Apollo: Higher Order Components, Render Props, and hooks. Throughout the course of the workshop, you’ll learn practical tips for using GraphQL in production.
+", + "duration": null, + "finishingTime": "", + "id": "ck124dmyfc5l20b71jxrnhmim", + "level": null, + "location": "October 19-20, 16:00-20:00 CET. Remote.
+", + "order": 1170, + "prerequisites": "To attend this workshop you need to be familiar with the basics of React, as well as most of the new features in ES2015.
+", + "schedule": null, + "slogan": "Forget + +the + +REST", + "slug": "graph-ql-workshop", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/sDbtalRTKQ7lQXzPARHp", + }, + "bio": "Kitze founded [React Academy](https://reactacademy.io/) to teach React and GraphQL around the world. He's the maker of [Sizzy](https://sizzy.co/) - the browser for designers and developers. He's documenting his journey [on YouTube](https://youtube.com/kitze). He made products like [JSUI](https://github.com/kitze/JSUI), [Twizzy](https://twizzy.app/), [Lucky Retweet](https://luckyretweet.co/), [OK Google](https://ok-google.io/), etc.", + "company": "React Academy", + "country": "Poland", + "githubUrl": "https://github.com/kitze", + "id": "ck10t71go59pg0b71iw2zrad5", + "idMain": "ck10t71go59pg0b71iw2zrad5", + "info": Array [], + "mediumUrl": null, + "name": "Kitze", + "ownSite": null, + "talks": Array [], + "twitterUrl": "https://twitter.com/thekitze", + "workshops": Array [ + Object { + "slug": "graph-ql-workshop", + "title": "GraphQL Workshop", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": "", + "status": "PUBLISHED", + "title": "GraphQL Workshop", + "toc": null, + "trainer": "Kitze", + "trainers": Array [], + "trainersTitle": "Kitze", + }, + Object { + "additionalInfo": null, + "code": "react-performance", + "content": Array [ + "profile React components with the React DevTools profiler", + "profile JavaScript with the Chrome DevTools profiler", + "utilize built-in React features (like React.memo, useMemo, anduseCallback) to optimize React components", + "know how to apply better patterns for application state management to optimize components by default", + ], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-10-21T00:00:00.000Z", + "dateString": "October 21", + "description": "React is fast, until it isn't
+In this workshop, you'll learn everything you need to diagnose, profile, and fix performance problems in your React application using the Browser Performance Profiler, React DevTools Profiler, and proven React optimization techniques.
+The tools we have for profiling React Applications are extremely powerful, but they can often be really difficult to grok. Sure, starting a profiling session is simple enough, but how do you go from all the information in the flamegraph to actionable steps to improve your application's performance? And once you know what parts of your app are causing performance issues, what then? How do you optimize your React components without making the whole application a complex mess?
+Oh, and don't forget that you should profile your app in production mode to make sure you get accurate measurements. Do you know how to do that?
+Hi, I'm Kent C. Dodds and in my latest workshop I'll teach you the ins and outs of optimizing React applications. I will take you on a deep dive browser profiling tools, and show you what you need to know to start using them to make your applications fast right away.
+", + "duration": null, + "finishingTime": "", + "id": "ck306bdz2g6nq0b20tdq8injf", + "level": "Advanced JavaScript/React Developers.", + "location": "October 21-22, 17:00-21:00 CET. Remote.
+", + "order": 1180, + "prerequisites": "Attend my Advanced React Hooks Workshop or have the equivalent experience with advanced React concepts.
+", + "schedule": null, + "slogan": null, + "slug": "react-performance", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/8HarhhMS6OPV6qWV9VIY", + }, + "bio": "Kent C. Dodds is a world renowned speaker, teacher, and trainer and he's actively involved in the open source community as a maintainer and contributor of hundreds of popular npm packages. Kent is the creator of TestingJavaScript.com and he's an instructor on egghead.io and Frontend Masters. He's also a Google Developer Expert. Kent is happily married and the father of four kids. He likes his family, code, JavaScript, and React.", + "company": "Trainer", + "country": "USA", + "githubUrl": "https://github.com/kentcdodds/", + "id": "ck1qix0arx7ve0b71dtvp0d32", + "idMain": "ck1qix0arx7ve0b71dtvp0d32", + "info": Array [ + Object { + "id": "ckceptfut77m60b97gr0h0zme", + "idAlt": "ckceptfut77m60b97gr0h0zme", + "isNightSpeaker": null, + "label": "Summit Track", + "order": 120, + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/8HarhhMS6OPV6qWV9VIY", + }, + "bio": "Kent C. Dodds is a world renowned speaker, teacher, and trainer and he's actively involved in the open source community as a maintainer and contributor of hundreds of popular npm packages. Kent is the creator of TestingJavaScript.com and he's an instructor on egghead.io and Frontend Masters. He's also a Google Developer Expert. Kent is happily married and the father of four kids. He likes his family, code, JavaScript, and React.", + "company": "Trainer", + "country": "USA", + "githubUrl": "https://github.com/kentcdodds/", + "id": "ck1qix0arx7ve0b71dtvp0d32", + "idMain": "ck1qix0arx7ve0b71dtvp0d32", + "mediumUrl": null, + "name": "Kent C. Dodds", + "ownSite": "https://kentcdodds.com/", + "twitterUrl": "https://twitter.com/kentcdodds/", + }, + "status": "PUBLISHED", + }, + ], + "mediumUrl": null, + "name": "Kent C. Dodds", + "ownSite": "https://kentcdodds.com/", + "talks": Array [ + Object { + "description": "How do you level up? How do you jumpstart your learning when getting into something new? Nobody has more than 24 hours a day, so how do you maximize the impact of your limited time? + +In this keynote, I'm going to tell you a bit of my own story, and some tips and tricks that I've learned so you can be as productive as you can be at learning new things and solidifying that knowledge so it's there when you need it.", + "isLightning": false, + "timeString": "16:15", + "title": "Consume ➡️ Build ➡️ Teach", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + "twitterUrl": "https://twitter.com/kentcdodds/", + "workshops": Array [ + Object { + "title": "Testing React Applications", + }, + Object { + "title": "React Performance", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "React Performance", + "toc": null, + "trainer": "Kent C. Dodds", + "trainers": Array [], + "trainersTitle": "Kent C. Dodds", + }, + Object { + "additionalInfo": null, + "code": "Design-System", + "content": Array [ + "I ", + "What are the moving pieces of a design system", + "How to define a design system for your company", + "Doing an inventory of your existing products or on-going design concept", + "II", + "Systemize brand attributes and design decisions into tokens", + "Creating a technology agnostic library of reusable tokens", + "Starting a component library with primitives that serve as building blocks", + "Combining primitives to build advanced compound components", + "III", + "Defining a consistent, easy to use API across your components", + "Formalise the definition and usage guidelines - strict vs flexible", + "Testing your component library - visual and behavior", + "Distributing your system with versioning and backward compatibility", + "IV", + "Creating a implementation strategy and publishing a long-term roadmap", + "Getting buy-in and driving adoption in your company", + "Common roadblocks that you might hit", + ], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-10-21T00:00:00.000Z", + "dateString": "October 21", + "description": "This is a hands-on workshop for React developers in which you will learn how to define a common language for collaboration and iterate on products faster.
+We will start with the important questions of Why and When. While design systems encompass tools and processes for everyone in the company, we will focus on the code side of it - Platform agnostic design tokens and a component library in React that can be used in products and can evolve as teams use it.
+", + "duration": null, + "finishingTime": "", + "id": "ck30bp7ypgowc0b32ahqhfpnn", + "level": "Intermediate/Advanced JavaScript/React developers.", + "location": "October 21-22, 16:00-20:00 CET. Remote.
+", + "order": 1190, + "prerequisites": "Working knowledge of React would go a long way.
+", + "schedule": null, + "slogan": null, + "slug": "design-systems-in-react", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/wMXZaraBQ2yZbNjZec9N", + }, + "bio": "Sid builds tools for developers. In the past, he worked on Design Systems at Auth0 and as the frontend architect at Practo. He loves talking about design, performance and open source.", + "company": "CodeSandbox", + "country": "Netherlands", + "githubUrl": "https://github.com/siddharthkp", + "id": "ck30bhsz8gvw80b669dzgs7sk", + "idMain": "ck30bhsz8gvw80b669dzgs7sk", + "info": Array [ + Object { + "id": "ckcepj1vw5st60903w7lr3ker", + "idAlt": "ckcepj1vw5st60903w7lr3ker", + "isNightSpeaker": null, + "label": "Workshop", + "order": 9, + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/wMXZaraBQ2yZbNjZec9N", + }, + "bio": "Sid builds tools for developers. In the past, he worked on Design Systems at Auth0 and as the frontend architect at Practo. He loves talking about design, performance and open source.", + "company": "CodeSandbox", + "country": "Netherlands", + "githubUrl": "https://github.com/siddharthkp", + "id": "ck30bhsz8gvw80b669dzgs7sk", + "idMain": "ck30bhsz8gvw80b669dzgs7sk", + "mediumUrl": null, + "name": "Siddharth Kshetrapal", + "ownSite": null, + "twitterUrl": "https://twitter.com/siddharthkp", + }, + "status": "PUBLISHED", + }, + ], + "mediumUrl": null, + "name": "Siddharth Kshetrapal", + "ownSite": null, + "talks": Array [], + "twitterUrl": "https://twitter.com/siddharthkp", + "workshops": Array [ + Object { + "title": "Design Systems in React", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Design Systems in React", + "toc": null, + "trainer": "Siddharth Kshetrapal", + "trainers": Array [], + "trainersTitle": "Siddharth Kshetrapal", + }, + Object { + "additionalInfo": null, + "code": "TypeScript-Advanced", + "content": Array [], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-10-22T00:00:00.000Z", + "dateString": "October 22", + "description": "More and more projects are using TypeScript. This workshop will provide a deep dive into the language, and basic TypeScript knowledge is assumed. +We will briefly discuss the design philosophy of TypeScript, and then cover all the lesser-known or harder features. +That is: do all the cool and weird meta programming stuff (TS is turing complete!) and learn the tricks you won't find in the handbook.
+So join if you feel like you're writing too much type annotations to make TypeScript happy! We'll dive deep into how type inference and control flows works, and how you can make the compiler work for you. We'll discuss all the fancier language constructs like:
+October 22, 16:00-20:00 CET. Remote.
+", + "order": 1200, + "prerequisites": null, + "schedule": null, + "slogan": null, + "slug": "advanced-fancy-type-script", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/QlY3D49T5iDadzDF7ZXw", + }, + "bio": "Open source fanatic, speaker and trainer. Author of MobX, MobX-State-Tree, Immer and a plethora of smaller packages. On a continuous quest to make programming as natural as possible. React, JavaScript and TypeScript fan. Working at Facebook on dev tooling for mobile developers.", + "company": "Facebook", + "country": "UK", + "githubUrl": "https://github.com/mweststrate", + "id": "ck30crtskgtbl0b3239sszqt4", + "idMain": "ck30crtskgtbl0b3239sszqt4", + "info": Array [ + Object { + "id": "ckdh5769ol4q50b97vulywvb5", + "idAlt": "ckdh5769ol4q50b97vulywvb5", + "isNightSpeaker": null, + "label": "Summit Track", + "order": 19, + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/QlY3D49T5iDadzDF7ZXw", + }, + "bio": "Open source fanatic, speaker and trainer. Author of MobX, MobX-State-Tree, Immer and a plethora of smaller packages. On a continuous quest to make programming as natural as possible. React, JavaScript and TypeScript fan. Working at Facebook on dev tooling for mobile developers.", + "company": "Facebook", + "country": "UK", + "githubUrl": "https://github.com/mweststrate", + "id": "ck30crtskgtbl0b3239sszqt4", + "idMain": "ck30crtskgtbl0b3239sszqt4", + "mediumUrl": null, + "name": "Michel Weststrate", + "ownSite": null, + "twitterUrl": "https://twitter.com/mweststrate", + }, + "status": "PUBLISHED", + }, + ], + "mediumUrl": null, + "name": "Michel Weststrate", + "ownSite": null, + "talks": Array [ + Object { + "description": "Are you a React Native developer? Have you always been longing for the rich ecosystem of developer tooling that exists for the web in e.g. Chrome and Firefox? +Flipper is Facebooks internal, extensible mobile devtool platform, used by the mobile devs that work on the Facebook, WhatsApp, Instagram and many more apps. + +Recently the React Native and Flipper team have been working hard to add first class support for React Native as well. This means that monitoring network traffic and performance, using the React Devtools, inspecting device and application logs or even debugging JavaScript can now can now be conveniently done using one coherent tool. + +And best of all: Flipper is extensible, so let's build our own plugin while at it!", + "isLightning": null, + "timeString": "17:45", + "title": "Flipper: The Extensible DevTool Platform for React Native", + "track": Object { + "isPrimary": true, + "name": "Summit Track", + }, + }, + ], + "twitterUrl": "https://twitter.com/mweststrate", + "workshops": Array [ + Object { + "title": "Advanced, Fancy TypeScript", + }, + Object { + "title": "Introduction to MobX for React", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": "", + "status": "PUBLISHED", + "title": "Advanced, Fancy TypeScript", + "toc": null, + "trainer": "Michel Weststrate", + "trainers": Array [], + "trainersTitle": "Michel Weststrate", + }, + Object { + "additionalInfo": null, + "code": "test-react-applications", + "content": Array [ + "Install jest-dom and React Testing Library and configure them to work well with Jest", + "Test a simple component", + "Test function logic with jest-in-case", + "Test components that make HTTP requests", + "Test a form", + "Test driven development", + "Write a custom render function for testing components that rely on context providers (like @reach/router and redux)", + ], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-10-26T00:00:00.000Z", + "dateString": "October 26", + "description": "Use jest, jest-dom, and React Testing Library to write unit and integration tests for React Components +Writing React applications is pretty easy, but shipping those applications with confidence is an entirely different story. How do you know that your changes work? How do you know those changes aren’t going to break other parts of your application? Do you have to manually walk through your whole application to make certain everything’s still working? No thank you! The more your tests resemble the way your software is used, the more confidence they can give you. Let’s learn how to write tests that make us confident.
+In this hands-on workshop we’ll work on adding tests to existing components as well as use our tests to speed up our workflow building new components. We’ll work with everything from simple components and JavaScript functions to complex components with asynchronous logic.
+", + "duration": null, + "finishingTime": "", + "id": "ck30607syge270b66aldpeoa5", + "level": "Intermediate JavaScript/React developers.", + "location": "October 26-27, 17:00-21:00 CET. Remote.
+", + "order": 1210, + "prerequisites": "styled-components has taken over the React world. Some of the biggest websites on the planet like wish.com, spotify.com, imdb.com, patreon.com and many more are styled using it. +By the end of this workshop, you’ll have built your own simple version of styled-components. You’ll master CSS-in-JS and how it works, understand the tradeoffs of design decisions behind all major CSS-in-JS libraries and maybe even grasp how to make API decisions for your own open source projects (whether about CSS or not).
+", + "duration": null, + "finishingTime": "", + "id": "ckck9bo8bbns009030zcnneuc", + "level": null, + "location": "October 28-29, 16:00-20:00 CET. Remote.
+", + "order": 1220, + "prerequisites": "Intermediate JavaScript, React and CSS knowledge.
+", + "schedule": null, + "slogan": null, + "slug": "deep-dive-into-styled-components-with-its-co-creator", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/2jqu4t6TSlKDcqRFP6zT", + }, + "bio": "Max Stoiber is a Staff Software Engineer at Gatsby, inventing the future of web development. Previously he worked at GitHub, who acquired the startup he co-founded, Spectrum. He is well known for making styled-components, react-boilerplate, and a wide variety of other open source projects in the React ecosystem.", + "company": "Gatsby", + "country": "Austria", + "githubUrl": "https://github.com/mxstbr", + "id": "ck0zj6ytry8s20b71lgpuqves", + "idMain": "ck0zj6ytry8s20b71lgpuqves", + "info": Array [ + Object { + "id": "ck341dbmbqob60b20hrylkplw", + "idAlt": "ck341dbmbqob60b20hrylkplw", + "isNightSpeaker": null, + "label": "Panel Discussion", + "order": 70, + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/2jqu4t6TSlKDcqRFP6zT", + }, + "bio": "Max Stoiber is a Staff Software Engineer at Gatsby, inventing the future of web development. Previously he worked at GitHub, who acquired the startup he co-founded, Spectrum. He is well known for making styled-components, react-boilerplate, and a wide variety of other open source projects in the React ecosystem.", + "company": "Gatsby", + "country": "Austria", + "githubUrl": "https://github.com/mxstbr", + "id": "ck0zj6ytry8s20b71lgpuqves", + "idMain": "ck0zj6ytry8s20b71lgpuqves", + "mediumUrl": null, + "name": "Max Stoiber", + "ownSite": "https://mxstbr.com/", + "twitterUrl": "https://twitter.com/mxstbr", + }, + "status": "PUBLISHED", + }, + ], + "mediumUrl": null, + "name": "Max Stoiber", + "ownSite": "https://mxstbr.com/", + "talks": Array [], + "twitterUrl": "https://twitter.com/mxstbr", + "workshops": Array [ + Object { + "title": "Modern React", + }, + Object { + "title": "Deep Dive Into Styled-Components With Its Co-Creator", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Deep Dive Into Styled-Components With Its Co-Creator", + "toc": null, + "trainer": "Max Stoiber", + "trainers": Array [], + "trainersTitle": "Max Stoiber", + }, +] +`; diff --git a/tests/jsnation.test.js b/tests/jsnation.test.js index b6c54be..f0fbc70 100644 --- a/tests/jsnation.test.js +++ b/tests/jsnation.test.js @@ -1,10 +1,23 @@ +import { getSettings } from '../develop/conference-settings'; import { getContent } from '../src'; -import settings from './jsnation.conference-settings' +import { createReport } from '../utils/content-report'; -describe('JsNation', () => { - it('should render content', async () => { - const content = await getContent(settings); +describe('JSN', () => { + const settings = getSettings(); - expect(content).toMatchSnapshot(); + it.each([ + 'pages', + 'conference', + 'speakers', + 'sponsors', + 'schedule', + 'tracks', + 'talks', + 'workshops', + 'otherContent', + ])('should prepare %s', async contentSection => { + const content = await getContent(settings.jsn); + const report = createReport(content); + expect(report[contentSection]).toMatchSnapshot(); }); }); diff --git a/tests/mlconf/__snapshots__/conference.test.js.snap b/tests/mlconf/__snapshots__/conference.test.js.snap new file mode 100644 index 0000000..79f2809 --- /dev/null +++ b/tests/mlconf/__snapshots__/conference.test.js.snap @@ -0,0 +1,34 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`RS should be correct conference data 1`] = ` +Object { + "city": "Online", + "codeOfConductIntro": "All attendees, speakers, sponsors and volunteers at ML Conference are required to follow this Code of Conduct. Organisers will strictly enforce it throughout the events and community gatherings. We expect cooperation from all participants to help ensure a safe environment for everybody.
+In case you have identified a breach of our CoC, please approach our crew (organizers and volunteers in branded t-shirts) immediately or contact our CoC enforcement team – coc@gitnation.org, +44 7376 237 299.
+", + "codeOfConductMain": "Our conference is dedicated to providing a harassment-free conference experience for everyone, regardless of gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, ethnicity, religion (or lack thereof), or technology choices. We do not tolerate harassment of conference participants in any form. Sexual language and imagery is not appropriate for any conference venue, including talks, workshops, parties, Twitter and other online media. Conference participants violating these rules may be sanctioned or expelled from the conference without a refund at the discretion of the conference organisers.
+Harassment includes offensive verbal comments related to gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, ethnicity, religion, technology choices, sexual images in public spaces, deliberate intimidation, stalking, following, harassing photography or recording, sustained disruption of talks or other events, inappropriate physical contact, and unwelcome sexual attention.
+Participants asked to stop any harassing behavior are expected to comply immediately.
+Sponsors are also subject to the anti-harassment policy. In particular, sponsors should not use sexualised images, activities, or other material. Booth staff (including volunteers) should not use sexualised clothing/uniforms/costumes, or otherwise create a sexualised environment.
+If a participant engages in harassing behavior, the conference organisers may take any action they deem appropriate, including warning the offender or expulsion from the conference with no refund.
+If you are being harassed, notice that someone else is being harassed, or have any other concerns, please contact a member of conference staff immediately. Conference staff can be identified as they'll be wearing branded clothing and/or badges.
+Conference staff will be happy to help participants contact hotel/venue security or local law enforcement, provide escorts, or otherwise assist those experiencing harassment to feel safe for the duration of the conference. We value your attendance.
+We expect participants to follow these rules at conference and workshop venues and conference-related social events.
+Original source and credit: http://2012.jsconf.us/#/about & The Ada Initiative
+Please help by translating or improving: http://github.com/leftlogic/confcodeofconduct.com
+This work is licensed under a Creative Commons Attribution 3.0 Unported License
+", + "contentType": "2d89f139f3d042ab98d212062527eb82", + "facebookUrl": "https://www.facebook.com/MLConfEU/", + "id": "ckbf89fefszdq0903e20t1g30", + "mediumUrl": null, + "slackUrl": null, + "status": "PUBLISHED", + "title": "Machine_Learning_EU", + "twitterUrl": "https://twitter.com/@MLconfEU", + "url": "http://mlconf.eu/", + "youtubeUrl": "https://www.youtube.com/channel/UCXlbjIafLZO9bcJDYjin92w/featured", +} +`; diff --git a/tests/mlconf/__snapshots__/otherContent.test.js.snap b/tests/mlconf/__snapshots__/otherContent.test.js.snap new file mode 100644 index 0000000..54a36e5 --- /dev/null +++ b/tests/mlconf/__snapshots__/otherContent.test.js.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`RS should be correct otherContent data 1`] = `"e32dc011cc3c4d78c21425ee25e40b4f44b56963"`; diff --git a/tests/mlconf/__snapshots__/pages.test.js.snap b/tests/mlconf/__snapshots__/pages.test.js.snap new file mode 100644 index 0000000..917ccd5 --- /dev/null +++ b/tests/mlconf/__snapshots__/pages.test.js.snap @@ -0,0 +1,69 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`RS should be correct pages data 1`] = ` +Array [ + Object { + "content": "c94d81c650316f48d0e99dd3a474353f6e4698e2", + "description": "November 5-6, 2020", + "id": "ckbf894t594ph0b14eta7aitw", + "pageCode": "main", + "seoDescription": "ML conf EU is a place to learn all about the practical application of machine learning for engineers. On November 5-6, 2020 get a clearer idea of ML, and practice it for your own projects", + "titlePage": null, + "titleSeo": "ML Conf EU – The machine learning conference for engineers", + }, + Object { + "content": "b413ac4e16ab131b5478250834fca31aca7b12f4", + "description": null, + "id": "ckbf9jxjft5070b094631w0dy", + "pageCode": "coc", + "seoDescription": "ML conf EU is a place to learn all about the practical application of machine learning for engineers. On November 5-6, 2020 get a clearer idea of ML, and practice it for your own projects", + "titlePage": "Code Of Conduct", + "titleSeo": "Code of Conduct – Machine Learning EU", + }, + Object { + "content": "10802bc6212e5f5cca12a64b68ced35c3eb1faa4", + "description": null, + "id": "ckbf9lsn7t52j0b09837yezdo", + "pageCode": "faq", + "seoDescription": null, + "titlePage": "FAQ", + "titleSeo": "FAQ - Machine Learning EU", + }, + Object { + "content": "5e646979a057549e48f97426e961703a4db5b464", + "description": null, + "id": "ckbf9myg3t53y0b09kvkwuzvi", + "pageCode": "workshops", + "seoDescription": null, + "titlePage": "LEARN FROM THE BEST TRAINERS IN THE CLOUD", + "titleSeo": "Remote Workshops at ML Conf EU", + }, + Object { + "content": "2a0678d58e45c4037372197c53ba6c9a1e5f3274", + "description": null, + "id": "ckbf9nqcyt0n70903190hzy9e", + "pageCode": "jobs", + "seoDescription": null, + "titlePage": "Top Jobs", + "titleSeo": "Top Jobs", + }, + Object { + "content": "254bee077c3749065a0352036fa2ce4093c6d84f", + "description": null, + "id": "ckbf9oejz97l50b14o7kk6tri", + "pageCode": "perks", + "seoDescription": null, + "titlePage": "Special Offers from Sponsors", + "titleSeo": "Special Offers from Sponsors", + }, + Object { + "content": "52e36bedfc346e15504c576723b5a8ef2e095efd", + "description": "November 5-6, 2020", + "id": "ckf5o0kav3t0v0911ld5q508b", + "pageCode": "workshops_alt", + "seoDescription": "ML conf EU is a place to learn all about the practical application of machine learning for engineers. On November 5-6, 2020 get a clearer idea of ML, and practice it for your own projects", + "titlePage": "LEARN FROM THE BEST TRAINERS IN THE CLOUD", + "titleSeo": "Workshops at ML Conf EU", + }, +] +`; diff --git a/tests/mlconf/__snapshots__/schedule.test.js.snap b/tests/mlconf/__snapshots__/schedule.test.js.snap new file mode 100644 index 0000000..bd440b8 --- /dev/null +++ b/tests/mlconf/__snapshots__/schedule.test.js.snap @@ -0,0 +1,713 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`RS should be correct schedule data 1`] = ` +Array [ + Object { + "active": true, + "list": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-11-05T00:00:00.000Z", + "time": "16:00", + "title": "Conference Opening", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-11-06T00:00:00.000Z", + "time": "16:00", + "title": "2nd day opening", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "In this talk I'll start by introducing the recent breakthroughs in NLP that resulted from the combination of Transfer Learning schemes and Transformer architectures. The second part of the talk will be dedicated to an introduction of the open-source tools released by HuggingFace, in particular our Transformers, Tokenizers and Datasets libraries and our models.", + "duration": "20", + "from": "HuggingFace, Netherlands", + "id": "ckf2f47y05p9o0976kps2eki1", + "isLightning": null, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Thomas Wolf", + "overridden": true, + "pic": "MUm0rCnR4qsuZSQ83KcF", + "place": "HuggingFace, Netherlands", + "slug": "an-introduction-to-transfer-learning-in-nlp-and-hugging-face", + "speaker": "Thomas Wolf", + "speakerSlug": "thomas-wolf", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "thomas-wolf", + "text": "In this talk I'll start by introducing the recent breakthroughs in NLP that resulted from the combination of Transfer Learning schemes and Transformer architectures. The second part of the talk will be dedicated to an introduction of the open-source tools released by HuggingFace, in particular our Transformers, Tokenizers and Datasets libraries and our models.
+", + "time": "16:15", + "title": "An Introduction to Transfer Learning in NLP and HuggingFace", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "TensorFlow has built a solid foundation for various machine learning applications, on top of which the Keras ecosystem can really boost the productivity of the developers in building machine learning solutions. Keras has a simple and arbitrarily flexible API for building and training models. However, we still need a lot of manual work to tune the hyperparameters. Fortunately, with Keras Tuner, we can automate the hyperparameter tuning process with minor modifications to the code for building and training the models. To further boost the productivity, we introduce AutoKeras, which fully automates the model building, training, and hyperparameter tuning process. It dramatically reduces the amount of prior knowledge needed of using machine learning for some common tasks. All you need is to define the task and to provide the training data.", + "duration": "20", + "from": "Keras Team at Google, USA", + "id": "ckfc805csw0od0970shkkjn5p", + "isLightning": null, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Haifeng Jin", + "overridden": true, + "pic": "hoSsKvqQIunWkqL7iOPZ", + "place": "Keras Team at Google, USA", + "slug": "boost-productivity-with-keras-ecosystem", + "speaker": "Haifeng Jin", + "speakerSlug": "haifeng-jin", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "haifeng-jin", + "text": "TensorFlow has built a solid foundation for various machine learning applications, on top of which the Keras ecosystem can really boost the productivity of the developers in building machine learning solutions. Keras has a simple and arbitrarily flexible API for building and training models. However, we still need a lot of manual work to tune the hyperparameters. Fortunately, with Keras Tuner, we can automate the hyperparameter tuning process with minor modifications to the code for building and training the models. To further boost the productivity, we introduce AutoKeras, which fully automates the model building, training, and hyperparameter tuning process. It dramatically reduces the amount of prior knowledge needed of using machine learning for some common tasks. All you need is to define the task and to provide the training data.
+", + "time": "16:15", + "title": "Boost Productivity with Keras Ecosystem", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-11-05T00:00:00.000Z", + "qaLink": "", + "talkKey": "thomas-wolf", + "time": "16:35", + "title": "Q&A with MC and Thomas Wolf", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-11-06T00:00:00.000Z", + "qaLink": "", + "talkKey": "haifeng-jin", + "time": "16:35", + "title": "Q&A with MC and Haifeng Jin", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "As an AI scientist and a developer, I have been engaged with AI-applications for many years especially focusing on object detection and recognition purposes. I love thinking that we can get creative in designing neural networks. We can train them supervised, unsupervised, semi or self-supervised, and this gives possibilities to mimic the human brain in a narrow domain. However, in vision applications, there are still things where AI is lacking and will be lacking without computer vision knowledge. Computer vision has been solving detection and recognition problems for many years. However, in the last decade, it seems like AI is seen as a replacement of computer vision. AI can find the optimal model for a specific type of data set and it might achieve generalization better. AI can be designed in a way that it can learn life-long which also brings possibilities of creating models which serve better when they are used longer. However, an AI vision system will be lacking capabilities without computer vision knowledge. First of all, it will require a very big data set to train the model what can be expensive or even not possible. On the other hand, computer vision systems can be modeled only by using a hand-drawn template image. Training AI models also requires GPUs. Nevertheless, I do not want to encourage everyone to train AI models for solving any simple problem which could be solved easily by computer vision. Last but not least, knowing computer vision, machine learning and especially feature engineering methods helps to design hybrid models that might be more robust to adversarial attacks or changing conditions. + +In this lecture, I will briefly introduce how computer vision (especially using the OpenCV library) and machine learning can be used for creating detection and recognition models. Some experience with python, jupyter notebook and some machine learning background would be useful to get more benefits from this lecture. ", + "duration": "20", + "from": "Jonkoping University & the Owner of Create4D, Netherlands", + "id": "ckfpbwio7vfxj09700mq7yoai", + "isLightning": null, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Beril Sirmacek", + "overridden": true, + "pic": "G6WMggyuQYO76lJkhuF4", + "place": "Jonkoping University & the Owner of Create4D, Netherlands", + "slug": "computer-vision-using-open-cv", + "speaker": "Beril Sirmacek", + "speakerSlug": "beril-sirmacek", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "beril-sirmacek", + "text": "As an AI scientist and a developer, I have been engaged with AI-applications for many years especially focusing on object detection and recognition purposes. I love thinking that we can get creative in designing neural networks. We can train them supervised, unsupervised, semi or self-supervised, and this gives possibilities to mimic the human brain in a narrow domain. However, in vision applications, there are still things where AI is lacking and will be lacking without computer vision knowledge. Computer vision has been solving detection and recognition problems for many years. However, in the last decade, it seems like AI is seen as a replacement of computer vision. AI can find the optimal model for a specific type of data set and it might achieve generalization better. AI can be designed in a way that it can learn life-long which also brings possibilities of creating models which serve better when they are used longer. However, an AI vision system will be lacking capabilities without computer vision knowledge. First of all, it will require a very big data set to train the model what can be expensive or even not possible. On the other hand, computer vision systems can be modeled only by using a hand-drawn template image. Training AI models also requires GPUs. Nevertheless, I do not want to encourage everyone to train AI models for solving any simple problem which could be solved easily by computer vision. Last but not least, knowing computer vision, machine learning and especially feature engineering methods helps to design hybrid models that might be more robust to adversarial attacks or changing conditions.
+In this lecture, I will briefly introduce how computer vision (especially using the OpenCV library) and machine learning can be used for creating detection and recognition models. Some experience with python, jupyter notebook and some machine learning background would be useful to get more benefits from this lecture.
+", + "time": "16:50", + "title": "Computer Vision Using OpenCV", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "DeepPavlov Agent is a framework designed to facilitate the development of scalable and production-ready multi-skill virtual assistants, complex dialogue systems, and chatbots. Key features of DeepPavlov Agent include (1) scalability and reliability in the high load environment due to micro-service architecture; (2) ease of adding and orchestrating conversational skills; (3) shared dialogue state memory and NLP annotations accessible to all skills. + +DeepPavlov DREAM is a socialbot platform with a modular design with the main components such as annotators, skills and selectors run as independent services. These components are configured and deployed using Docker containers. It allows developers to focus on application development instead of focusing on the intrinsic details of the manual low-level infrastructure configuration.", + "duration": "20", + "from": "DeepPavlov.ai, Russia", + "id": "ckf2fb1qa99cu0970jx8silfv", + "isLightning": null, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Mikhail Burtsev", + "overridden": true, + "pic": "bKRipg63QmCJZ5TbE17t", + "place": "DeepPavlov.ai, Russia", + "slug": "deep-pavlov-agent-open-source-framework-for-multiskill-conversational-ai", + "speaker": "Mikhail Burtsev", + "speakerSlug": "mikhail-burtsev", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "mikhail-burtsev", + "text": "DeepPavlov Agent is a framework designed to facilitate the development of scalable and production-ready multi-skill virtual assistants, complex dialogue systems, and chatbots. Key features of DeepPavlov Agent include (1) scalability and reliability in the high load environment due to micro-service architecture; (2) ease of adding and orchestrating conversational skills; (3) shared dialogue state memory and NLP annotations accessible to all skills.
+DeepPavlov DREAM is a socialbot platform with a modular design with the main components such as annotators, skills and selectors run as independent services. These components are configured and deployed using Docker containers. It allows developers to focus on application development instead of focusing on the intrinsic details of the manual low-level infrastructure configuration.
+", + "time": "16:50", + "title": "DeepPavlov Agent: Open-source Framework for Multiskill Conversational AI", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-11-05T00:00:00.000Z", + "qaLink": "", + "talkKey": "beril-sirmacek", + "time": "17:10", + "title": "Q&A with MC and Beril Sirmacek", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-11-06T00:00:00.000Z", + "qaLink": "", + "talkKey": "mikhail-burtsev", + "time": "17:10", + "title": "Q&A with MC and Mikhail Burtsev", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "10", + "isoDate": "2020-11-05T00:00:00.000Z", + "time": "17:25", + "title": "Break", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "10", + "isoDate": "2020-11-06T00:00:00.000Z", + "time": "17:25", + "title": "Break", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Elegant and graceful mathematics make a cool textbook cover, but the inside of those same books are usually dry cold engineering. It's important to mix the theory of innovation with the excitement of practicality, and through the composition of these elements we find innovation. In this talk, I'll show you from an engineering perspective how to explore, balance, and ultimately bottle machined success.", + "duration": "20", + "from": "iFit, USA", + "id": "ckfxqoqrdkmjw09708dz0596j", + "isLightning": null, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Robert Plummer", + "overridden": true, + "pic": "veQKxVNyShihmL05rjQV", + "place": "iFit, USA", + "slug": "the-evolution-revolution", + "speaker": "Robert Plummer", + "speakerSlug": "robert-plummer", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "robert-plummer", + "text": "Elegant and graceful mathematics make a cool textbook cover, but the inside of those same books are usually dry cold engineering. It's important to mix the theory of innovation with the excitement of practicality, and through the composition of these elements we find innovation. In this talk, I'll show you from an engineering perspective how to explore, balance, and ultimately bottle machined success.
+", + "time": "17:35", + "title": "The Evolution Revolution", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#00deff", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "25", + "isLightning": true, + "isoDate": "2020-11-06T00:00:00.000Z", + "lightningTalks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "What if you could perform machine learning on the edge, i.e on your mobile device? This would mean that you no longer would need the roundtrip to the server, no data will leave the device and you don't even need an internet connection . In this session you will get an introduction to TensorFlow Lite so that you can use it in your own projects.", + "from": "Miles AS, Norway", + "id": "ckfzj3wqrqlho0b77mfbn9osu", + "isLightning": true, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Håkan Silfvernagel", + "place": "Miles AS, Norway", + "slug": "machine-learning-on-the-edge-using-tensor-flow-lite", + "speaker": "Håkan Silfvernagel", + "speakerSlug": "hakan-silfvernagel", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "What if you could perform machine learning on the edge, i.e on your mobile device? This would mean that you no longer would need the roundtrip to the server, no data will leave the device and you don't even need an internet connection . In this session you will get an introduction to TensorFlow Lite so that you can use it in your own projects.
+", + "time": "17:35", + "title": "Machine Learning on the Edge Using TensorFlow Lite", + "track": "Talks & Q&A", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "This talk will show how a fraud detection model has been developed based on the data from the browsing sessions of the different users. Tools such as PySpark and Spark ML have been used in this initiative due to a large amount of data. + +The model created was able to identify a grouping of characteristics that covered 10% of the total sessions in which 88% were deemed fraudulent. This allows analysts to spend more of their time on higher-risk cases. ", + "from": "Bluetab Solutions, Spain", + "id": "ckg205di1y5cg0970ci1ebp9x", + "isLightning": true, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Javier Alcaide Pérez", + "place": "Bluetab Solutions, Spain", + "slug": "browser-session-analytics-the-key-to-fraud-detection", + "speaker": "Javier Alcaide Pérez", + "speakerSlug": "javier-alcaide-perez", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "This talk will show how a fraud detection model has been developed based on the data from the browsing sessions of the different users. Tools such as PySpark and Spark ML have been used in this initiative due to a large amount of data.
+The model created was able to identify a grouping of characteristics that covered 10% of the total sessions in which 88% were deemed fraudulent. This allows analysts to spend more of their time on higher-risk cases.
+", + "time": "17:35", + "title": "Browser Session Analytics: The Key to Fraud Detection", + "track": "Talks & Q&A", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "After this talk, you will know how to write the perfect song for your favourite singer! This is not a songwriting retreat but a talk about some of the lyrical, structural, harmonic, and melodic features song analysis includes. We will discuss the extraction of song structures using NLP tools and repetition analysis, musical features, and how to use all of those features to predict which songs fit which artist the best. Attend this talk to discover what is the future that the music industry can achieve with machine learning. ", + "from": "MyPart, Israel", + "id": "ckg219umro80s0911fz28ujaf", + "isLightning": true, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Yama Anin Aminof", + "place": "MyPart, Israel", + "slug": "can-you-sing-with-all-the-voices-of-the-features", + "speaker": "Yama Anin Aminof", + "speakerSlug": "yama-anin-aminof", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "After this talk, you will know how to write the perfect song for your favourite singer! This is not a songwriting retreat but a talk about some of the lyrical, structural, harmonic, and melodic features song analysis includes. We will discuss the extraction of song structures using NLP tools and repetition analysis, musical features, and how to use all of those features to predict which songs fit which artist the best. Attend this talk to discover what is the future that the music industry can achieve with machine learning.
+", + "time": "17:35", + "title": "Can You Sing with All the Voices of the Features?", + "track": "Talks & Q&A", + }, + ], + "overridden": true, + "time": "17:35", + "title": "Lightning talks", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-11-05T00:00:00.000Z", + "qaLink": "", + "talkKey": "robert-plummer", + "time": "17:55", + "title": "Q&A with MC and Robert Plummer", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-11-06T00:00:00.000Z", + "qaLink": "", + "time": "18:00", + "title": "Q&A with LT speakers", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "This talk will be a walkthrough of utilizing machine learning to replace a rule based system for consumers. We will discuss when is it okay to use ML, how to build these models with intelligent data, evaluate these offline and finally how to validate this evaluation to land these models in production systems. Furthermore, we will illustrate various self-learning/interactive-learning strategies that can be used for production systems to automate how models teach themselves to become better.", + "duration": "20", + "from": "Facebook, USA", + "id": "ckggsm0ozab2b0911y7r5r27e", + "isLightning": null, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Shivani Poddar", + "overridden": true, + "pic": "RhB6bQkSqecJxoFauNjt", + "place": "Facebook, USA", + "slug": "how-to-machine-learn-ify-any-product", + "speaker": "Shivani Poddar", + "speakerSlug": "shivani-poddar", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "shivani-poddar", + "text": "This talk will be a walkthrough of utilizing machine learning to replace a rule based system for consumers. We will discuss when is it okay to use ML, how to build these models with intelligent data, evaluate these offline and finally how to validate this evaluation to land these models in production systems. Furthermore, we will illustrate various self-learning/interactive-learning strategies that can be used for production systems to automate how models teach themselves to become better.
+", + "time": "18:10", + "title": "How to Machine Learn-ify any Product", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "The domain of Natural Language Processing have seen a tremendous amount of research and innovation in the past couple of years to tackle the problem of implementing high quality machine learning and AI solutions using natural text. Text Classification is one such area that is extremely important in all sectors like finance, media, product development, etc. Building up a text classification system from scratch for every use case can be challenging in terms of cost as well as resources, considering there is a good amount of dataset to begin training with. + +Here comes the concept of transfer learning. Using some of the models that has been pre-trained on terabytes of data and fine-tuning it based on the problem at hand is the new way to efficiently implement machine learning solutions without spending months on data cleaning pipeline. + +This talk with highlight ways of implementing the newly launched BERT and fine tuning the base model to build an efficient text classifying model. Basic understanding of python is desirable.", + "duration": "20", + "from": "Indellient US Inc., USA", + "id": "ckfwamppzgh7y0970xkxr22bx", + "isLightning": null, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Jayeeta Putatunda", + "overridden": true, + "pic": "IQStPELSQq0MRoym40Vw", + "place": "Indellient US Inc., USA", + "slug": "power-of-transfer-learning-in-nlp-build-a-text-classification-model-using-bert", + "speaker": "Jayeeta Putatunda", + "speakerSlug": "jayeeta-putatunda", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "jayeeta-putatunda", + "text": "The domain of Natural Language Processing have seen a tremendous amount of research and innovation in the past couple of years to tackle the problem of implementing high quality machine learning and AI solutions using natural text. Text Classification is one such area that is extremely important in all sectors like finance, media, product development, etc. Building up a text classification system from scratch for every use case can be challenging in terms of cost as well as resources, considering there is a good amount of dataset to begin training with.
+Here comes the concept of transfer learning. Using some of the models that has been pre-trained on terabytes of data and fine-tuning it based on the problem at hand is the new way to efficiently implement machine learning solutions without spending months on data cleaning pipeline.
+This talk with highlight ways of implementing the newly launched BERT and fine tuning the base model to build an efficient text classifying model. Basic understanding of python is desirable.
+", + "time": "18:15", + "title": "Power of Transfer Learning in NLP: Build a Text Classification Model Using BERT", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-11-05T00:00:00.000Z", + "qaLink": "", + "talkKey": "shivani-poddar", + "time": "18:30", + "title": "Q&A with MC and Shivani Poddar", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-11-06T00:00:00.000Z", + "qaLink": "", + "talkKey": "jayeeta-putatunda", + "time": "18:35", + "title": "Q&A with MC and Jayeeta Putatunda", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "10", + "isoDate": "2020-11-05T00:00:00.000Z", + "time": "18:45", + "title": "Break", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "10", + "isoDate": "2020-11-06T00:00:00.000Z", + "time": "18:50", + "title": "Break", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Often it's thought that to be able to succeed with Machine Learning and Deep Learning, as an onramp to Artificial Intelligence, that you need a deep background in mathematics and calculus, as well as some form of PhD. But you don't. With modern APIs like TensorFlow, much of the complexity is abstracted away in pre-built libraries, so you can focus on learning. In this session, Laurence Moroney, from Google, will explain how he has used this to create courses with hundreds of thousands of students, and from there, how a certificate program was created. ", + "duration": "20", + "from": "Google, USA", + "id": "ckf6n6akj4y0m09112764j2o3", + "isLightning": null, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Laurence Moroney", + "overridden": true, + "pic": "6looIR37SgiZ819IedfL", + "place": "Google, USA", + "slug": "teaching-ml-and-ai-to-coders", + "speaker": "Laurence Moroney", + "speakerSlug": "laurence-moroney", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "laurence-moroney", + "text": "Often it's thought that to be able to succeed with Machine Learning and Deep Learning, as an onramp to Artificial Intelligence, that you need a deep background in mathematics and calculus, as well as some form of PhD. But you don't. With modern APIs like TensorFlow, much of the complexity is abstracted away in pre-built libraries, so you can focus on learning. In this session, Laurence Moroney, from Google, will explain how he has used this to create courses with hundreds of thousands of students, and from there, how a certificate program was created.
+", + "time": "18:55", + "title": "Teaching ML and AI to Coders", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Data visualisation is a fundamental part of Data Science. The talk will start with a practical demonstration (using pandas, scikit-learn, and matplotlib) of how relying on summary statistics and predictions alone can leave you blind to the true nature of your datasets. I will make the point that visualisations are crucial in every step of the Data Science process and therefore that Jupyter Notebooks definitely do belong in Data Science. We will then look at how maintainability is a real challenge for Jupyter Notebooks, especially when trying to keep them under version control with git. Although there exists a plethora of code quality tools for Python scripts (flake8, black, mypy, etc.), most of them don't work on Jupyter Notebooks. To this end I will present nbQA, which allows any standard Python code quality tool to be run on a Jupyter Notebook. Finally, I will demonstrate how to use it within a workflow which lets practitioners keep the interactivity of their Jupyter Notebooks without having to sacrifice their maintainability.", + "duration": "20", + "from": "Samsung R&D Institute UK, UK", + "id": "ckfc7qzixbf9z09111iv2m4w1", + "isLightning": null, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Marco Gorelli", + "overridden": true, + "pic": "wzW1X8lDR0OfV2VocL9l", + "place": "Samsung R&D Institute UK, UK", + "slug": "never-have-an-unmaintainable-jupyter-notebook-again", + "speaker": "Marco Gorelli", + "speakerSlug": "marco-gorelli", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "marco-gorelli", + "text": "Data visualisation is a fundamental part of Data Science. The talk will start with a practical demonstration (using pandas, scikit-learn, and matplotlib) of how relying on summary statistics and predictions alone can leave you blind to the true nature of your datasets. I will make the point that visualisations are crucial in every step of the Data Science process and therefore that Jupyter Notebooks definitely do belong in Data Science. We will then look at how maintainability is a real challenge for Jupyter Notebooks, especially when trying to keep them under version control with git. Although there exists a plethora of code quality tools for Python scripts (flake8, black, mypy, etc.), most of them don't work on Jupyter Notebooks. To this end I will present nbQA, which allows any standard Python code quality tool to be run on a Jupyter Notebook. Finally, I will demonstrate how to use it within a workflow which lets practitioners keep the interactivity of their Jupyter Notebooks without having to sacrifice their maintainability.
+", + "time": "19:00", + "title": "Never Have an Unmaintainable Jupyter Notebook Again!", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-11-05T00:00:00.000Z", + "qaLink": "", + "talkKey": "laurence-moroney", + "time": "19:15", + "title": "Q&A with MC and Laurence Moroney", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-11-06T00:00:00.000Z", + "qaLink": "", + "talkKey": "marco-gorelli", + "time": "19:20", + "title": "Q&A with MC and Marco Gorelli", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#00deff", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "25", + "isLightning": true, + "isoDate": "2020-11-05T00:00:00.000Z", + "lightningTalks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Chip and equipment manufacturing and tracking is a tough task given the strict adherence to quality standards and processes like six-sigma control checks. In this session, we will be looking at key real-world problems from Semiconductor & Manufacturing, and possible methodologies where we leveraged a combination of traditional computer vision techniques and coupled it with the power of deep transfer learning and machine \\\\ deep learning. We will be covering two main use-cases from the Industry: + +1. Automatic Defect detection at Nanoscale +2. Defect Clustering at Nanoscale", + "from": "null, null", + "id": "ckg1zjis0vor00b772oyxjrer", + "isLightning": true, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": undefined, + "name": "Dipanjan Sarkar & Sachin Dangayach", + "place": "null, null", + "slug": "deep-transfer-learning-for-computer-vision-real-world-applications-in-semiconductors-manufacturing", + "speaker": "Dipanjan Sarkar & Sachin Dangayach", + "speakerSlug": "dipanjan-sarkar-sachin-dangayach", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Chip and equipment manufacturing and tracking is a tough task given the strict adherence to quality standards and processes like six-sigma control checks. In this session, we will be looking at key real-world problems from Semiconductor & Manufacturing, and possible methodologies where we leveraged a combination of traditional computer vision techniques and coupled it with the power of deep transfer learning and machine \\\\ deep learning. We will be covering two main use-cases from the Industry:
+Most people would agree that R is a popular language for data analysis. Perhaps less well known is that R has good support for parallel execution on a single CPU through packages like future. In this presentation we will talk about our experience scaling up R processes even further running R in parallel in docker containers using Kubernetes. Robots generate massive amounts of sensor and other data; extracting the right information and insights from this requires significant more processing than can be tackled on a single execution environment. Faced with a preprocessing job of several hundred GB of data of compressed json line files, we used Pachyderm to write data pipelines to run the data prep in parallel, using multicore containers on a kubernetes cluster.
+By the end of the talk we will have dispelled the myth that R cannot be used in production at scale. Even if you do not use R, you will have seen a use case to scale up analysis regardless of your language of choice.
+", + "time": "19:30", + "title": "Processing Robot Data at Scale with R and Kubernetes", + "track": "Talks & Q&A", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Adoption of AI has been slowed by the challenges involved in obtaining performant models, which require significant expertise and effort, and the limited number of practitioners with machine learning expertise. Automated machine learning (AutoML) eliminates the routine steps in the machine learning workflow, thus empowering domain experts without machine learning background to build good initial models, and allowing experienced practitioners to focus additional manual model optimization. This talk describes the extent of automation available for the various steps and demonstrates AutoML with a classifier for human activities based on accelerometer sensor data.", + "from": "MathWorks, USA", + "id": "ckg29yj18z6vr0970u381ie5g", + "isLightning": true, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Bernhard Suhm", + "place": "MathWorks, USA", + "slug": "broadening-ai-adoption-with-auto-ml", + "speaker": "Bernhard Suhm", + "speakerSlug": "bernhard-suhm", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Adoption of AI has been slowed by the challenges involved in obtaining performant models, which require significant expertise and effort, and the limited number of practitioners with machine learning expertise. Automated machine learning (AutoML) eliminates the routine steps in the machine learning workflow, thus empowering domain experts without machine learning background to build good initial models, and allowing experienced practitioners to focus additional manual model optimization. This talk describes the extent of automation available for the various steps and demonstrates AutoML with a classifier for human activities based on accelerometer sensor data.
+", + "time": "19:30", + "title": "Broadening AI Adoption with AutoML", + "track": "Talks & Q&A", + }, + ], + "overridden": true, + "time": "19:30", + "title": "Lightning talks", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "In many real-world applications, data quality and curation and domain knowledge play a much larger role in building successful models than coming up with complex processing techniques and tweaking hyper-parameters. +Therefore, a machine learning toolbox should enable users to understand both data and model, and not burden the practitioner with picking preprocessing steps and hyperparameters. +The dabl library is a first step in this direction. It provides automatic visualization routines and model inspection capabilities while automating away model selection. + +dabl contains plot types not available in standard python libraries so far, as well as novel algorithms for picking interesting visualizations. +Heuristics are used to select appropriate preprocessing for machine learning, while state-of-the-art portfolio selection algorithms are used for efficient model and hyperparameter search. + +dabl also provides easy access to model evaluation and model inspection tools provided by scikit-learn.", + "duration": "20", + "from": "Microsoft, USA", + "id": "ckfp74z6auxpj0970lkzyyk22", + "isLightning": null, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Andreas Müller", + "overridden": true, + "pic": "rWWeS4gWRGKiEgFZRHhC", + "place": "Microsoft, USA", + "slug": "dabl-automatic-machine-learning-with-a-human-in-the-loop", + "speaker": "Andreas Müller", + "speakerSlug": "andreas-muller", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "andreas-müller", + "text": "In many real-world applications, data quality and curation and domain knowledge play a much larger role in building successful models than coming up with complex processing techniques and tweaking hyper-parameters. +Therefore, a machine learning toolbox should enable users to understand both data and model, and not burden the practitioner with picking preprocessing steps and hyperparameters. +The dabl library is a first step in this direction. It provides automatic visualization routines and model inspection capabilities while automating away model selection.
+dabl contains plot types not available in standard python libraries so far, as well as novel algorithms for picking interesting visualizations. +Heuristics are used to select appropriate preprocessing for machine learning, while state-of-the-art portfolio selection algorithms are used for efficient model and hyperparameter search.
+dabl also provides easy access to model evaluation and model inspection tools provided by scikit-learn.
+", + "time": "19:35", + "title": "Dabl: Automatic Machine Learning with a Human in the Loop", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-11-05T00:00:00.000Z", + "qaLink": "", + "time": "19:55", + "title": "Q&A with LT speakers", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-11-06T00:00:00.000Z", + "qaLink": "", + "talkKey": "andreas-müller", + "time": "19:55", + "title": "Q&A with MC and Andreas Müller", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Discover how to embrace machine learning in JavaScript using TensorFlow.js in the browser and beyond in this speedy talk. Get inspired through a whole bunch of creative prototypes that push the boundaries of what is possible in the modern web browser (things have come a long way) and then take your own first steps with machine learning in minutes. By the end of the talk everyone will understand how to recognize an object of their choice which could then be used in any creative way you can imagine. Familiarity with JavaScript is assumed, but no background in machine learning is required. Come take your first steps with TensorFlow.js!", + "duration": "30", + "from": "Google, USA", + "id": "ckf2f7tc598xt0970jkc9plin", + "isLightning": null, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Jason Mayes", + "overridden": true, + "pic": "YeF9oCpNSz6mvX7LUXtU", + "place": "Google, USA", + "slug": "tensor-flow-js-101-ml-in-the-browser-and-beyond", + "speaker": "Jason Mayes", + "speakerSlug": "jason-mayes", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "jason-mayes", + "text": "Discover how to embrace machine learning in JavaScript using TensorFlow.js in the browser and beyond in this speedy talk. Get inspired through a whole bunch of creative prototypes that push the boundaries of what is possible in the modern web browser (things have come a long way) and then take your own first steps with machine learning in minutes. By the end of the talk everyone will understand how to recognize an object of their choice which could then be used in any creative way you can imagine. Familiarity with JavaScript is assumed, but no background in machine learning is required. Come take your first steps with TensorFlow.js!
+", + "time": "20:10", + "title": "TensorFlow.js 101: ML in the Browser and Beyond", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-11-06T00:00:00.000Z", + "time": "20:10", + "title": "Conference closing", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "15", + "isoDate": "2020-11-05T00:00:00.000Z", + "qaLink": "", + "talkKey": "jason-mayes", + "time": "20:40", + "title": "Q&A with MC and Jason Mayes", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "10", + "isoDate": "2020-11-05T00:00:00.000Z", + "time": "20:55", + "title": "1st day closing", + "track": "Talks & Q&A", + }, + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "duration": "60", + "isoDate": "2020-11-05T00:00:00.000Z", + "noTimeCheck": true, + "speakerRoomLink": "#zoom-bars", + "time": "21:05", + "title": "Afterparty", + "track": "Talks & Q&A", + }, + ], + "name": "10", + "tab": "Talks & Q&A", + "title": "Talks & Q&A", + }, +] +`; diff --git a/tests/mlconf/__snapshots__/speakers.test.js.snap b/tests/mlconf/__snapshots__/speakers.test.js.snap new file mode 100644 index 0000000..2cb0a5b --- /dev/null +++ b/tests/mlconf/__snapshots__/speakers.test.js.snap @@ -0,0 +1,1962 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`RS should be correct speakers data 1`] = ` +Object { + "advisers": Array [], + "committee": Array [ + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/EXrksdF6QfG18GI8NEQO", + "bio": "Gant Laborde is an owner of Infinite Red, mentor, adjunct professor, published author, and award-winning speaker. For 20 years, he has been involved in software development and continues strong today. He is an “open sourcerer”, team leader, and aspires to one day become a mad scientist. He blogs, videos, and maintains popular repositories for the community. Follow Gant’s adventures at gantlaborde.com.
+", + "company": "Infinite Red, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "decor": true, + "githubUrl": "https://github.com/gantman", + "id": "ck8onrrtegm6x0b2083c9kdmb", + "idMain": "ck8onrrtegm6x0b2083c9kdmb", + "mediumUrl": "https://medium.com/@gantlaborde", + "name": "Gant Laborde", + "ownSite": null, + "slug": "gant-laborde", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/gantman", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/GantLaborde", + }, + Object { + "icon": "med", + "link": "https://medium.com/@gantlaborde", + }, + ], + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/GantLaborde", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/bMYCiKCWRaSY8Uod2oz9", + "bio": "Sayak loves understanding how things work and explaining them well.
+", + "company": "Deep Learning Associate @ PyImageSearch, India", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "India", + "decor": true, + "githubUrl": null, + "id": "ckckgzi9hjvlt0b97rpt6k8ia", + "idMain": "ckckgzi9hjvlt0b97rpt6k8ia", + "mediumUrl": null, + "name": "Sayak Paul", + "ownSite": "https://sayak.dev/", + "slug": "sayak-paul", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/RisingSayak", + }, + Object { + "icon": "site", + "link": "https://sayak.dev/", + }, + ], + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/RisingSayak", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/pnKYOEaiTu23p56sfwHT", + "bio": "Dmitry is a Microsoft veteran, working for more than 13 years. He started as a Technical Evangelist, and in this role presented on numerous conferences, including twice being on stage with Steve Ballmer. He then worked for 2 years as Senior Software Engineer, helping big European companies to start pilot digital transformation projects based on AI and ML. As Cloud Developer Advocate, Dmitry focuses on creating educational content and working with academic and research institutions. He is also an Associate Professor at MIPT, HSE and MAI in Moscow, a big fan of functional programming and F#, and a maintainer/primary developer of mPyPl library. In his spare time, Dmitry explores Science Art and Technological Magic, as well as performs Chinese tea ceremonies. He can be reached at soshnikov.com.
+", + "company": "Cloud Developer Advocate @ Microsoft, Russia", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Russia", + "decor": true, + "githubUrl": null, + "id": "ckcq6n36xxgat0b97lxet1gxq", + "idMain": "ckcq6n36xxgat0b97lxet1gxq", + "mediumUrl": null, + "name": "Dmitry Soshnikov", + "ownSite": "https://soshnikov.com/", + "slug": "dmitry-soshnikov", + "socials": Array [ + Object { + "icon": "site", + "link": "https://soshnikov.com/", + }, + ], + "tag": "speaker--undefined", + "twitterUrl": null, + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/8hE8v55nS2Gpi3owpJC9", + "bio": "Microsoft AI MVP. Software Developer and Data Scientist.
+Eva is absolutely obsessed with data and passionate about AI. Her main interest is to save lives and support humanity with the help of AI and data. Working in full time at Laerdal.
+In her free time she writes articles, speaks at conferences about data and AI. Her aim is to make people understand how intelligent applications affect our lives, how to use and control them.
+", + "company": "Data Scientist, AI MVP @ Laerdal, Denmark", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Denmark", + "decor": true, + "githubUrl": "https://github.com/ExOblivione", + "id": "ckd5oj714v6h60b97p0di0fnz", + "idMain": "ckd5oj714v6h60b97p0di0fnz", + "mediumUrl": null, + "name": "Eve Pardi", + "ownSite": null, + "slug": "eve-pardi", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/ExOblivione", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/EvePardi", + }, + ], + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/EvePardi", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/7b7kJOvRN2PgXEg4vagR", + "bio": "Yuriy Guts is a Principal Machine Learning Engineer at DataRobot with over 10 years of industry experience in data science and software architecture. His primary interests are productionalizing data science, automated machine learning, time series forecasting, and processing spoken and written language. He teaches AI and ML at UCU, competes on Kaggle, and has led multiple international data science and engineering teams.
+", + "company": "Principal Machine Learning Engineer @ DataRobot, Ukraine", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Ukraine", + "decor": true, + "githubUrl": "https://github.com/YuriyGuts", + "id": "ckeckmmq14aob09085vemh1d3", + "idMain": "ckeckmmq14aob09085vemh1d3", + "mediumUrl": null, + "name": "Yuriy Guts", + "ownSite": "https://yuriyguts.com/", + "slug": "yuriy-guts", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/YuriyGuts", + }, + Object { + "icon": "site", + "link": "https://yuriyguts.com/", + }, + ], + "tag": "speaker--undefined", + "twitterUrl": null, + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/tv0TQUZERIS1hy2CNvt6", + "bio": "Sergii enjoys building products with help of Data and Machine Learning.
+Sergii founded Machine Learning meetup in Munich - Hacking Machine Learning. Currently, meetup has 2000+ members and hosted 29+ events with speakers from a variety of local, as well as top-tier companies like Google, Twitter, Facebook, etc.
+From time to time, Sergii invests time by contributing to Open Source projects like TensorFlow or PySyft.
+", + "company": "VP Product Engineering @ Stylight, Germany", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Germany", + "decor": true, + "githubUrl": "https://github.com/lc0", + "id": "ckgj8lxv7ehs709112c1y2h62", + "idMain": "ckgj8lxv7ehs709112c1y2h62", + "mediumUrl": null, + "name": "Sergii Khomenko", + "ownSite": "https://sergii.ml/", + "slug": "sergii-khomenko", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/lc0", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/lc0d3r", + }, + Object { + "icon": "site", + "link": "https://sergii.ml/", + }, + ], + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/lc0d3r", + }, + ], + "main": Array [ + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "In many real-world applications, data quality and curation and domain knowledge play a much larger role in building successful models than coming up with complex processing techniques and tweaking hyper-parameters. +Therefore, a machine learning toolbox should enable users to understand both data and model, and not burden the practitioner with picking preprocessing steps and hyperparameters. +The dabl library is a first step in this direction. It provides automatic visualization routines and model inspection capabilities while automating away model selection. + +dabl contains plot types not available in standard python libraries so far, as well as novel algorithms for picking interesting visualizations. +Heuristics are used to select appropriate preprocessing for machine learning, while state-of-the-art portfolio selection algorithms are used for efficient model and hyperparameter search. + +dabl also provides easy access to model evaluation and model inspection tools provided by scikit-learn.", + "duration": "20", + "from": "Microsoft, USA", + "id": "ckfp74z6auxpj0970lkzyyk22", + "isLightning": null, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Andreas Müller", + "overridden": true, + "pic": "rWWeS4gWRGKiEgFZRHhC", + "place": "Microsoft, USA", + "slug": "dabl-automatic-machine-learning-with-a-human-in-the-loop", + "speaker": "Andreas Müller", + "speakerSlug": "andreas-muller", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "andreas-müller", + "text": "In many real-world applications, data quality and curation and domain knowledge play a much larger role in building successful models than coming up with complex processing techniques and tweaking hyper-parameters. +Therefore, a machine learning toolbox should enable users to understand both data and model, and not burden the practitioner with picking preprocessing steps and hyperparameters. +The dabl library is a first step in this direction. It provides automatic visualization routines and model inspection capabilities while automating away model selection.
+dabl contains plot types not available in standard python libraries so far, as well as novel algorithms for picking interesting visualizations. +Heuristics are used to select appropriate preprocessing for machine learning, while state-of-the-art portfolio selection algorithms are used for efficient model and hyperparameter search.
+dabl also provides easy access to model evaluation and model inspection tools provided by scikit-learn.
+", + "time": "19:35", + "timeString": "19:35", + "title": "Dabl: Automatic Machine Learning with a Human in the Loop", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/rWWeS4gWRGKiEgFZRHhC", + "bio": "Andreas Müller is a Principal Research SDE at Microsoft, where he works on the interface of the Data Science ecosystem and cloud infrastructure.
+He previously held positions as Associate Research Scientist at the Columbia Data Science Institute and as a Research Engineer at the NYU Center for Data Science.
+He is one of the core developers of the scikit-learn machine learning library, a member of the scikit-learn technical committee, and the author of the book \\"Introduction to machine learning with Python\\".
+His work focuses on practical aspects of machine learning and the development of user-centric machine learning software.
+", + "color": "#000", + "company": "Microsoft, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/amueller", + "id": "cke2ga93k35ty0916ep1gv17c", + "idAlt": "cke2gatwa35v70916l8ps7v0j", + "idMain": "cke2ga93k35ty0916ep1gv17c", + "isNightSpeaker": null, + "label": "November 6", + "mediumUrl": null, + "name": "Andreas Müller", + "order": 100, + "ownSite": "http://amueller.github.io/", + "slug": "andreas-muller", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/amueller", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/amuellerml", + }, + Object { + "icon": "site", + "link": "http://amueller.github.io/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#fcd725", + "twitterUrl": "https://twitter.com/amuellerml", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "In this talk I'll start by introducing the recent breakthroughs in NLP that resulted from the combination of Transfer Learning schemes and Transformer architectures. The second part of the talk will be dedicated to an introduction of the open-source tools released by HuggingFace, in particular our Transformers, Tokenizers and Datasets libraries and our models.", + "duration": "20", + "from": "HuggingFace, Netherlands", + "id": "ckf2f47y05p9o0976kps2eki1", + "isLightning": null, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Thomas Wolf", + "overridden": true, + "pic": "MUm0rCnR4qsuZSQ83KcF", + "place": "HuggingFace, Netherlands", + "slug": "an-introduction-to-transfer-learning-in-nlp-and-hugging-face", + "speaker": "Thomas Wolf", + "speakerSlug": "thomas-wolf", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "thomas-wolf", + "text": "In this talk I'll start by introducing the recent breakthroughs in NLP that resulted from the combination of Transfer Learning schemes and Transformer architectures. The second part of the talk will be dedicated to an introduction of the open-source tools released by HuggingFace, in particular our Transformers, Tokenizers and Datasets libraries and our models.
+", + "time": "16:15", + "timeString": "16:15", + "title": "An Introduction to Transfer Learning in NLP and HuggingFace", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/MUm0rCnR4qsuZSQ83KcF", + "bio": "Thomas Wolf is co-founder and Chief Science Officer of HuggingFace. His team is on a mission to catalyze and democratize NLP research. Prior to HuggingFace, Thomas gained a Ph.D. in physics, and later a law degree. He worked as a physics researcher and a European Patent Attorney.
+", + "color": "#fff", + "company": "HuggingFace, Netherlands", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Netherlands", + "githubUrl": "", + "id": "ckdylgtwttjor0b97ypqupe8h", + "idAlt": "ckdylhh7pyb2d0a85l68qwdn7", + "idMain": "ckdylgtwttjor0b97ypqupe8h", + "isNightSpeaker": null, + "label": "November 5", + "mediumUrl": null, + "name": "Thomas Wolf", + "order": 90, + "ownSite": "https://thomwolf.io/", + "slug": "thomas-wolf", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/Thom_wolf", + }, + Object { + "icon": "site", + "link": "https://thomwolf.io/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#4064ff", + "twitterUrl": "https://twitter.com/Thom_wolf", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "As an AI scientist and a developer, I have been engaged with AI-applications for many years especially focusing on object detection and recognition purposes. I love thinking that we can get creative in designing neural networks. We can train them supervised, unsupervised, semi or self-supervised, and this gives possibilities to mimic the human brain in a narrow domain. However, in vision applications, there are still things where AI is lacking and will be lacking without computer vision knowledge. Computer vision has been solving detection and recognition problems for many years. However, in the last decade, it seems like AI is seen as a replacement of computer vision. AI can find the optimal model for a specific type of data set and it might achieve generalization better. AI can be designed in a way that it can learn life-long which also brings possibilities of creating models which serve better when they are used longer. However, an AI vision system will be lacking capabilities without computer vision knowledge. First of all, it will require a very big data set to train the model what can be expensive or even not possible. On the other hand, computer vision systems can be modeled only by using a hand-drawn template image. Training AI models also requires GPUs. Nevertheless, I do not want to encourage everyone to train AI models for solving any simple problem which could be solved easily by computer vision. Last but not least, knowing computer vision, machine learning and especially feature engineering methods helps to design hybrid models that might be more robust to adversarial attacks or changing conditions. + +In this lecture, I will briefly introduce how computer vision (especially using the OpenCV library) and machine learning can be used for creating detection and recognition models. Some experience with python, jupyter notebook and some machine learning background would be useful to get more benefits from this lecture. ", + "duration": "20", + "from": "Jonkoping University & the Owner of Create4D, Netherlands", + "id": "ckfpbwio7vfxj09700mq7yoai", + "isLightning": null, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Beril Sirmacek", + "overridden": true, + "pic": "G6WMggyuQYO76lJkhuF4", + "place": "Jonkoping University & the Owner of Create4D, Netherlands", + "slug": "computer-vision-using-open-cv", + "speaker": "Beril Sirmacek", + "speakerSlug": "beril-sirmacek", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "beril-sirmacek", + "text": "As an AI scientist and a developer, I have been engaged with AI-applications for many years especially focusing on object detection and recognition purposes. I love thinking that we can get creative in designing neural networks. We can train them supervised, unsupervised, semi or self-supervised, and this gives possibilities to mimic the human brain in a narrow domain. However, in vision applications, there are still things where AI is lacking and will be lacking without computer vision knowledge. Computer vision has been solving detection and recognition problems for many years. However, in the last decade, it seems like AI is seen as a replacement of computer vision. AI can find the optimal model for a specific type of data set and it might achieve generalization better. AI can be designed in a way that it can learn life-long which also brings possibilities of creating models which serve better when they are used longer. However, an AI vision system will be lacking capabilities without computer vision knowledge. First of all, it will require a very big data set to train the model what can be expensive or even not possible. On the other hand, computer vision systems can be modeled only by using a hand-drawn template image. Training AI models also requires GPUs. Nevertheless, I do not want to encourage everyone to train AI models for solving any simple problem which could be solved easily by computer vision. Last but not least, knowing computer vision, machine learning and especially feature engineering methods helps to design hybrid models that might be more robust to adversarial attacks or changing conditions.
+In this lecture, I will briefly introduce how computer vision (especially using the OpenCV library) and machine learning can be used for creating detection and recognition models. Some experience with python, jupyter notebook and some machine learning background would be useful to get more benefits from this lecture.
+", + "time": "16:50", + "timeString": "16:50", + "title": "Computer Vision Using OpenCV", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/G6WMggyuQYO76lJkhuF4", + "bio": "Beril Sirmacek is a Dutch AI researcher. +She received her PhD degree in Electrical and Electronics Engineering in 2009. Later she has worked with German Aerospace Center and pursued a habilitation degree with University of Osnabrueck.
+She is an assistant professor at Jonkoping AI Lab and also leading her company create4D. Beril is passionate to use computer vision and AI algorithms for creating useful healthcare and earth care solutions.
+Beril has taught a MSc course at the University of Augsburg in 2010, only on OpenCV. As a computer vision scientist and developer, she has been using it regularly for many years.
+", + "color": "#fff", + "company": "Jonkoping University & the Owner of Create4D, Netherlands", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Netherlands", + "githubUrl": "https://github.com/bsirmacek", + "id": "cke2h8c6p37bs0916pw6bqecy", + "idAlt": "cke2h931037d00916wa4qnhdp", + "idMain": "cke2h8c6p37bs0916pw6bqecy", + "isNightSpeaker": null, + "label": "November 5", + "mediumUrl": null, + "name": "Beril Sirmacek", + "order": 80, + "ownSite": "http://www.berilsirmacek.com/", + "slug": "beril-sirmacek", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/bsirmacek", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/berilsirmacek", + }, + Object { + "icon": "site", + "link": "http://www.berilsirmacek.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#4064ff", + "twitterUrl": "https://twitter.com/berilsirmacek", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Often it's thought that to be able to succeed with Machine Learning and Deep Learning, as an onramp to Artificial Intelligence, that you need a deep background in mathematics and calculus, as well as some form of PhD. But you don't. With modern APIs like TensorFlow, much of the complexity is abstracted away in pre-built libraries, so you can focus on learning. In this session, Laurence Moroney, from Google, will explain how he has used this to create courses with hundreds of thousands of students, and from there, how a certificate program was created. ", + "duration": "20", + "from": "Google, USA", + "id": "ckf6n6akj4y0m09112764j2o3", + "isLightning": null, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Laurence Moroney", + "overridden": true, + "pic": "6looIR37SgiZ819IedfL", + "place": "Google, USA", + "slug": "teaching-ml-and-ai-to-coders", + "speaker": "Laurence Moroney", + "speakerSlug": "laurence-moroney", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "laurence-moroney", + "text": "Often it's thought that to be able to succeed with Machine Learning and Deep Learning, as an onramp to Artificial Intelligence, that you need a deep background in mathematics and calculus, as well as some form of PhD. But you don't. With modern APIs like TensorFlow, much of the complexity is abstracted away in pre-built libraries, so you can focus on learning. In this session, Laurence Moroney, from Google, will explain how he has used this to create courses with hundreds of thousands of students, and from there, how a certificate program was created.
+", + "time": "18:55", + "timeString": "18:55", + "title": "Teaching ML and AI to Coders", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/6looIR37SgiZ819IedfL", + "bio": "Laurence Moroney leads AI Advocacy at Google, working as part of the Google Research into Machine Intelligence (RMI) team. He's the author of more programming books than he can count, including 'AI and Machine Learning for Coders' with OReilly, to be published in October 2020. He's also the instructor and creator of the TensorFlow In Practice, and TensorFlow Data and Deployment specializations on Coursera. He also runs the YouTube channel for tensorflow at Youtube.com/tensorflow, and the TensorFlow certificate program for developers at tensorflow.org/certificate. When not working on AI, he's a published Sci-Fi author, comic book creator and IMDB-listed screenwriter.
+", + "color": "#fff", + "company": "Google, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": null, + "id": "ckdr8zmv6pb190a8544lultsh", + "idAlt": "ckdr9076bpb2i0a85ypwciz8e", + "idMain": "ckdr8zmv6pb190a8544lultsh", + "isNightSpeaker": null, + "label": "November 5", + "mediumUrl": null, + "name": "Laurence Moroney", + "order": 70, + "ownSite": "http://www.laurencemoroney.com/", + "slug": "laurence-moroney", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/lmoroney", + }, + Object { + "icon": "site", + "link": "http://www.laurencemoroney.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#4064ff", + "twitterUrl": "https://twitter.com/lmoroney", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "TensorFlow has built a solid foundation for various machine learning applications, on top of which the Keras ecosystem can really boost the productivity of the developers in building machine learning solutions. Keras has a simple and arbitrarily flexible API for building and training models. However, we still need a lot of manual work to tune the hyperparameters. Fortunately, with Keras Tuner, we can automate the hyperparameter tuning process with minor modifications to the code for building and training the models. To further boost the productivity, we introduce AutoKeras, which fully automates the model building, training, and hyperparameter tuning process. It dramatically reduces the amount of prior knowledge needed of using machine learning for some common tasks. All you need is to define the task and to provide the training data.", + "duration": "20", + "from": "Keras Team at Google, USA", + "id": "ckfc805csw0od0970shkkjn5p", + "isLightning": null, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Haifeng Jin", + "overridden": true, + "pic": "hoSsKvqQIunWkqL7iOPZ", + "place": "Keras Team at Google, USA", + "slug": "boost-productivity-with-keras-ecosystem", + "speaker": "Haifeng Jin", + "speakerSlug": "haifeng-jin", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "haifeng-jin", + "text": "TensorFlow has built a solid foundation for various machine learning applications, on top of which the Keras ecosystem can really boost the productivity of the developers in building machine learning solutions. Keras has a simple and arbitrarily flexible API for building and training models. However, we still need a lot of manual work to tune the hyperparameters. Fortunately, with Keras Tuner, we can automate the hyperparameter tuning process with minor modifications to the code for building and training the models. To further boost the productivity, we introduce AutoKeras, which fully automates the model building, training, and hyperparameter tuning process. It dramatically reduces the amount of prior knowledge needed of using machine learning for some common tasks. All you need is to define the task and to provide the training data.
+", + "time": "16:15", + "timeString": "16:15", + "title": "Boost Productivity with Keras Ecosystem", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/hoSsKvqQIunWkqL7iOPZ", + "bio": "Haifeng is a member of Keras team at Google and a PhD candidate in DATA Lab at Texas A&M University. His research interests are AutoML and deep learning. He is the creator and project lead of AutoKeras, which aims to make deep learning more accessible with AutoML techniques.
+", + "color": "#000", + "company": "Keras Team at Google, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/haifeng-jin", + "id": "ckfc7yqomj01e0b77msbkbt35", + "idAlt": "ckfc7zcbaw0ma0970sd7vbyqa", + "idMain": "ckfc7yqomj01e0b77msbkbt35", + "isNightSpeaker": null, + "label": "November 6", + "mediumUrl": null, + "name": "Haifeng Jin", + "order": 60, + "ownSite": "https://haifengjin.com/", + "slug": "haifeng-jin", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/haifeng-jin", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/haifeng_jin", + }, + Object { + "icon": "site", + "link": "https://haifengjin.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#fcd725", + "twitterUrl": "https://twitter.com/haifeng_jin", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "This talk will be a walkthrough of utilizing machine learning to replace a rule based system for consumers. We will discuss when is it okay to use ML, how to build these models with intelligent data, evaluate these offline and finally how to validate this evaluation to land these models in production systems. Furthermore, we will illustrate various self-learning/interactive-learning strategies that can be used for production systems to automate how models teach themselves to become better.", + "duration": "20", + "from": "Facebook, USA", + "id": "ckggsm0ozab2b0911y7r5r27e", + "isLightning": null, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Shivani Poddar", + "overridden": true, + "pic": "RhB6bQkSqecJxoFauNjt", + "place": "Facebook, USA", + "slug": "how-to-machine-learn-ify-any-product", + "speaker": "Shivani Poddar", + "speakerSlug": "shivani-poddar", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "shivani-poddar", + "text": "This talk will be a walkthrough of utilizing machine learning to replace a rule based system for consumers. We will discuss when is it okay to use ML, how to build these models with intelligent data, evaluate these offline and finally how to validate this evaluation to land these models in production systems. Furthermore, we will illustrate various self-learning/interactive-learning strategies that can be used for production systems to automate how models teach themselves to become better.
+", + "time": "18:10", + "timeString": "18:10", + "title": "How to Machine Learn-ify any Product", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/RhB6bQkSqecJxoFauNjt", + "bio": "Shivani Poddar is a Machine Learning Tech Lead for the Meeting Assistant team at Workplace, Facebook, leading the development of meeting assistants for making remote collaboration easier for work. Previously, Shivani built and launched the foundational machine learning and AI stack for Facebook Portal, spearheading product and engineering development across social graph technology for ML, deep personalization for a smarter calling experience.
+She was also the first ever student at Carnegie Mellon to be funded by the Amazon Alexa Prize, where she and her team built a social chatbot, eventually deployed to tens of thousands of users through Alexa. During her time at CMU she also pursued research in the field of Natural Language Generation, Reinforcement Learning for chatbots and multimodal machine learning.
+Outside of Work, Shivani has emerged as one of the leaders in talking about Artificial Intelligence and Machine Learning for Consumers as well as Enterprises. She has been a speaker at numerous conferences over the last 2 years covering topics such as – Diversity and Bias in AI, Future of Work, Immersive Multimodal Assistants. She is also a mentor for young aspirants looking to become the next innovators in the field, and regularly volunteers in resume building workshops, panels for hiring and Q&As on LinkedIn.
+", + "color": "#fff", + "company": "Facebook, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": null, + "id": "ckfxostm6kh8h09709xsjep4o", + "idAlt": "ckfxoteoomcb90b771lzqctod", + "idMain": "ckfxostm6kh8h09709xsjep4o", + "isNightSpeaker": null, + "label": "November 5", + "mediumUrl": null, + "name": "Shivani Poddar", + "order": 58, + "ownSite": "https://www.linkedin.com/in/shivani-poddar/", + "slug": "shivani-poddar", + "socials": Array [ + Object { + "icon": "site", + "link": "https://www.linkedin.com/in/shivani-poddar/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#4064ff", + "twitterUrl": null, + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Discover how to embrace machine learning in JavaScript using TensorFlow.js in the browser and beyond in this speedy talk. Get inspired through a whole bunch of creative prototypes that push the boundaries of what is possible in the modern web browser (things have come a long way) and then take your own first steps with machine learning in minutes. By the end of the talk everyone will understand how to recognize an object of their choice which could then be used in any creative way you can imagine. Familiarity with JavaScript is assumed, but no background in machine learning is required. Come take your first steps with TensorFlow.js!", + "duration": "30", + "from": "Google, USA", + "id": "ckf2f7tc598xt0970jkc9plin", + "isLightning": null, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Jason Mayes", + "overridden": true, + "pic": "YeF9oCpNSz6mvX7LUXtU", + "place": "Google, USA", + "slug": "tensor-flow-js-101-ml-in-the-browser-and-beyond", + "speaker": "Jason Mayes", + "speakerSlug": "jason-mayes", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "jason-mayes", + "text": "Discover how to embrace machine learning in JavaScript using TensorFlow.js in the browser and beyond in this speedy talk. Get inspired through a whole bunch of creative prototypes that push the boundaries of what is possible in the modern web browser (things have come a long way) and then take your own first steps with machine learning in minutes. By the end of the talk everyone will understand how to recognize an object of their choice which could then be used in any creative way you can imagine. Familiarity with JavaScript is assumed, but no background in machine learning is required. Come take your first steps with TensorFlow.js!
+", + "time": "20:10", + "timeString": "20:10", + "title": "TensorFlow.js 101: ML in the Browser and Beyond", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/YeF9oCpNSz6mvX7LUXtU", + "bio": "Jason is a Senior Developer Advocate for TensorFlow.js at Google.
+Jason combines his knowledge of the technical and creative worlds to solve complex, strategic / technical challenges for Google's largest customers and internal teams. Developing innovative world firsts utilizing the latest technologies and hardware is a key component of his role to rapidly prototype new ideas and consult on project solutions globally.
+With a background in Computer Science at the University of Bristol, England, where he specialized in reality mining and invisible computing, Jason has been a \\"hybrid engineer\\" for over 15 years. Combining his passion for several areas including both front and back end web programming, but also design and user experience, he has worked in many sizes of companies from startups (including founding his own) to Google.
+", + "color": "#fff", + "company": "Google, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": null, + "id": "ckenytg4xv9ky0908tyf29riv", + "idAlt": "ckenyu1y8v9mp0908c63db5oz", + "idMain": "ckenytg4xv9ky0908tyf29riv", + "isNightSpeaker": null, + "label": "November 5", + "mediumUrl": null, + "name": "Jason Mayes", + "order": 55, + "ownSite": "http://jasonmayes.com/", + "slug": "jason-mayes", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/jason_mayes", + }, + Object { + "icon": "site", + "link": "http://jasonmayes.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#4064ff", + "twitterUrl": "https://twitter.com/jason_mayes", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Data visualisation is a fundamental part of Data Science. The talk will start with a practical demonstration (using pandas, scikit-learn, and matplotlib) of how relying on summary statistics and predictions alone can leave you blind to the true nature of your datasets. I will make the point that visualisations are crucial in every step of the Data Science process and therefore that Jupyter Notebooks definitely do belong in Data Science. We will then look at how maintainability is a real challenge for Jupyter Notebooks, especially when trying to keep them under version control with git. Although there exists a plethora of code quality tools for Python scripts (flake8, black, mypy, etc.), most of them don't work on Jupyter Notebooks. To this end I will present nbQA, which allows any standard Python code quality tool to be run on a Jupyter Notebook. Finally, I will demonstrate how to use it within a workflow which lets practitioners keep the interactivity of their Jupyter Notebooks without having to sacrifice their maintainability.", + "duration": "20", + "from": "Samsung R&D Institute UK, UK", + "id": "ckfc7qzixbf9z09111iv2m4w1", + "isLightning": null, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Marco Gorelli", + "overridden": true, + "pic": "wzW1X8lDR0OfV2VocL9l", + "place": "Samsung R&D Institute UK, UK", + "slug": "never-have-an-unmaintainable-jupyter-notebook-again", + "speaker": "Marco Gorelli", + "speakerSlug": "marco-gorelli", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "marco-gorelli", + "text": "Data visualisation is a fundamental part of Data Science. The talk will start with a practical demonstration (using pandas, scikit-learn, and matplotlib) of how relying on summary statistics and predictions alone can leave you blind to the true nature of your datasets. I will make the point that visualisations are crucial in every step of the Data Science process and therefore that Jupyter Notebooks definitely do belong in Data Science. We will then look at how maintainability is a real challenge for Jupyter Notebooks, especially when trying to keep them under version control with git. Although there exists a plethora of code quality tools for Python scripts (flake8, black, mypy, etc.), most of them don't work on Jupyter Notebooks. To this end I will present nbQA, which allows any standard Python code quality tool to be run on a Jupyter Notebook. Finally, I will demonstrate how to use it within a workflow which lets practitioners keep the interactivity of their Jupyter Notebooks without having to sacrifice their maintainability.
+", + "time": "19:00", + "timeString": "19:00", + "title": "Never Have an Unmaintainable Jupyter Notebook Again!", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/wzW1X8lDR0OfV2VocL9l", + "bio": "Marco is a Data Scientist at the Samsung R&D Institute UK. Outside of work, he is a maintainer of pandas (data wrangling platform for Python widely adopted in the scientific computing community) and author of nbQA (code quality tool for Jupyter Notebooks). He holds an MSc in Mathematics and Foundations of Computer Science from the University of Oxford.
+", + "color": "#000", + "company": "Samsung R&D Institute UK, UK", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "UK", + "githubUrl": "https://github.com/MarcoGorelli", + "id": "ckfc7l2znvzpb0970jn9s977c", + "idAlt": "ckfc7lqievzqx0970lok1f9c0", + "idMain": "ckfc7l2znvzpb0970jn9s977c", + "isNightSpeaker": null, + "label": "November 6", + "mediumUrl": null, + "name": "Marco Gorelli", + "order": 50, + "ownSite": null, + "slug": "marco-gorelli", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/MarcoGorelli", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#fcd725", + "twitterUrl": null, + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "The domain of Natural Language Processing have seen a tremendous amount of research and innovation in the past couple of years to tackle the problem of implementing high quality machine learning and AI solutions using natural text. Text Classification is one such area that is extremely important in all sectors like finance, media, product development, etc. Building up a text classification system from scratch for every use case can be challenging in terms of cost as well as resources, considering there is a good amount of dataset to begin training with. + +Here comes the concept of transfer learning. Using some of the models that has been pre-trained on terabytes of data and fine-tuning it based on the problem at hand is the new way to efficiently implement machine learning solutions without spending months on data cleaning pipeline. + +This talk with highlight ways of implementing the newly launched BERT and fine tuning the base model to build an efficient text classifying model. Basic understanding of python is desirable.", + "duration": "20", + "from": "Indellient US Inc., USA", + "id": "ckfwamppzgh7y0970xkxr22bx", + "isLightning": null, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Jayeeta Putatunda", + "overridden": true, + "pic": "IQStPELSQq0MRoym40Vw", + "place": "Indellient US Inc., USA", + "slug": "power-of-transfer-learning-in-nlp-build-a-text-classification-model-using-bert", + "speaker": "Jayeeta Putatunda", + "speakerSlug": "jayeeta-putatunda", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "jayeeta-putatunda", + "text": "The domain of Natural Language Processing have seen a tremendous amount of research and innovation in the past couple of years to tackle the problem of implementing high quality machine learning and AI solutions using natural text. Text Classification is one such area that is extremely important in all sectors like finance, media, product development, etc. Building up a text classification system from scratch for every use case can be challenging in terms of cost as well as resources, considering there is a good amount of dataset to begin training with.
+Here comes the concept of transfer learning. Using some of the models that has been pre-trained on terabytes of data and fine-tuning it based on the problem at hand is the new way to efficiently implement machine learning solutions without spending months on data cleaning pipeline.
+This talk with highlight ways of implementing the newly launched BERT and fine tuning the base model to build an efficient text classifying model. Basic understanding of python is desirable.
+", + "time": "18:15", + "timeString": "18:15", + "title": "Power of Transfer Learning in NLP: Build a Text Classification Model Using BERT", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/IQStPELSQq0MRoym40Vw", + "bio": "Jayeeta is a Senior Data Scientist with 4+ years of industry experience. Currently, she is working on machine learning and NLP projects and explores a lot of state-of-the-art models to build cool products at Indellient US Inc., a leading software development and IT professional services company working with Fortune 100 companies. Prior to that, she worked at Deloitte. Jayeeta is also engaged with some amazing organizations like Women Who Code and Women Tech Network to promote and inspire more women to take up STEM and often leads technical webinars and talks. She received her Master of Science in Quantitative Methods and Modeling from City University of New York, NY and Bachelor of Science in Economics and Statistics from West Bengal State University, India.
+", + "color": "#000", + "company": "Indellient US Inc., USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/JayeetaP", + "id": "ckfwakcukjoth0b77jayqbtyp", + "idAlt": "ckfwakx1ajovd0b77p7len4w9", + "idMain": "ckfwakcukjoth0b77jayqbtyp", + "isNightSpeaker": null, + "label": "November 6", + "mediumUrl": null, + "name": "Jayeeta Putatunda", + "order": 47, + "ownSite": null, + "slug": "jayeeta-putatunda", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/JayeetaP", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/JayeetaPJ", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#fcd725", + "twitterUrl": "https://twitter.com/JayeetaPJ", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "DeepPavlov Agent is a framework designed to facilitate the development of scalable and production-ready multi-skill virtual assistants, complex dialogue systems, and chatbots. Key features of DeepPavlov Agent include (1) scalability and reliability in the high load environment due to micro-service architecture; (2) ease of adding and orchestrating conversational skills; (3) shared dialogue state memory and NLP annotations accessible to all skills. + +DeepPavlov DREAM is a socialbot platform with a modular design with the main components such as annotators, skills and selectors run as independent services. These components are configured and deployed using Docker containers. It allows developers to focus on application development instead of focusing on the intrinsic details of the manual low-level infrastructure configuration.", + "duration": "20", + "from": "DeepPavlov.ai, Russia", + "id": "ckf2fb1qa99cu0970jx8silfv", + "isLightning": null, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Mikhail Burtsev", + "overridden": true, + "pic": "bKRipg63QmCJZ5TbE17t", + "place": "DeepPavlov.ai, Russia", + "slug": "deep-pavlov-agent-open-source-framework-for-multiskill-conversational-ai", + "speaker": "Mikhail Burtsev", + "speakerSlug": "mikhail-burtsev", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "mikhail-burtsev", + "text": "DeepPavlov Agent is a framework designed to facilitate the development of scalable and production-ready multi-skill virtual assistants, complex dialogue systems, and chatbots. Key features of DeepPavlov Agent include (1) scalability and reliability in the high load environment due to micro-service architecture; (2) ease of adding and orchestrating conversational skills; (3) shared dialogue state memory and NLP annotations accessible to all skills.
+DeepPavlov DREAM is a socialbot platform with a modular design with the main components such as annotators, skills and selectors run as independent services. These components are configured and deployed using Docker containers. It allows developers to focus on application development instead of focusing on the intrinsic details of the manual low-level infrastructure configuration.
+", + "time": "16:50", + "timeString": "16:50", + "title": "DeepPavlov Agent: Open-source Framework for Multiskill Conversational AI", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/bKRipg63QmCJZ5TbE17t", + "bio": "Mikhail Burtsev is a head of Neural Networks and Deep Learning Laboratory at Moscow Institute of Physics and Technology. He is also a founder and leader of open-source conversational AI framework DeepPavlov. Mikhail had proposed and co-organize a series of academic Conversational AI Challenges (including NIPS 2017, NeurIPS 2018, EMNLP 2020).
+His research interests are in the fields of Natural Language Processing, Machine Learning, Artificial Intelligence and Complex Systems. Mikhail Burtsev has published more than 20 technical papers including – Nature, Artificial Life, Lecture Notes in Computer Science series, and other peer-reviewed venues.
+", + "color": "#000", + "company": "DeepPavlov.ai, Russia", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Russia", + "githubUrl": null, + "id": "ckejts5zpox7v0a854aku8ol5", + "idAlt": "ckejtsyxbox930a856pur09jb", + "idMain": "ckejts5zpox7v0a854aku8ol5", + "isNightSpeaker": null, + "label": "November 6", + "mediumUrl": null, + "name": "Mikhail Burtsev", + "order": 45, + "ownSite": null, + "slug": "mikhail-burtsev", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/mikhailburtsev", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#fcd725", + "twitterUrl": "https://twitter.com/mikhailburtsev", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/N12aiHZ7Ra6jSR2WClfJ", + "bio": "Dipanjan (DJ) Sarkar is a Data Science Lead at Applied Materials, leading advanced analytics efforts around computer vision, natural language processing and deep learning. He is also a Google Developer Expert in Machine Learning. He has also been recently recognized as one of the Top Ten Data Scientists in India, 2020 by Analytics India Magazine & TechGig. +Dipanjan has advised and worked with several startups as well as Fortune 500 companies like Intel and Open Source organizations like Red Hat (now IBM). He primarily works on leveraging data science, machine learning and deep learning to build large- scale intelligent systems and evangelizing data science to the community.
+Dipanjan is also a published author, having authored several books on R, Python, Machine Learning, Natural Language Processing, and Deep Learning.
+", + "color": "#fff", + "company": "Applied Materials, India", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "India", + "githubUrl": "https://github.com/dipanjanS", + "id": "ckg1zgqj4y1st0970gs0q4r6b", + "idAlt": "ckg1zhmvdy21j0970wjop5c4v", + "idMain": "ckg1zgqj4y1st0970gs0q4r6b", + "isNightSpeaker": null, + "label": "November 5", + "mediumUrl": null, + "name": "Dipanjan Sarkar", + "order": 40, + "ownSite": "https://www.linkedin.com/in/dipanzan/", + "slug": "dipanjan-sarkar", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/dipanjanS", + }, + Object { + "icon": "site", + "link": "https://www.linkedin.com/in/dipanzan/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#4064ff", + "twitterUrl": null, + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "What if you could perform machine learning on the edge, i.e on your mobile device? This would mean that you no longer would need the roundtrip to the server, no data will leave the device and you don't even need an internet connection . In this session you will get an introduction to TensorFlow Lite so that you can use it in your own projects.", + "from": "Miles AS, Norway", + "id": "ckfzj3wqrqlho0b77mfbn9osu", + "isLightning": true, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Håkan Silfvernagel", + "place": "Miles AS, Norway", + "slug": "machine-learning-on-the-edge-using-tensor-flow-lite", + "speaker": "Håkan Silfvernagel", + "speakerSlug": "hakan-silfvernagel", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "What if you could perform machine learning on the edge, i.e on your mobile device? This would mean that you no longer would need the roundtrip to the server, no data will leave the device and you don't even need an internet connection . In this session you will get an introduction to TensorFlow Lite so that you can use it in your own projects.
+", + "time": "17:35", + "timeString": "17:35", + "title": "Machine Learning on the Edge Using TensorFlow Lite", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/Z7wRsVQbRriMshRaJwp3", + "bio": "Håkan holds a Master of Science degree in Electrical Engineering and in addition, he holds a Master’s degree in Leadership and Organizational behavior. He has also taken courses on university level in psychology, interaction design and human-computer interaction. He has 20 years’ experience of software development in various positions such as developer, tester, architect, project manager, scrum master, practice manager and team lead.
+Håkan is Chairman of the local chapter of the Norwegian .NET User Group Oslo (NNUG) and is active as an Ambassador for Oslo.AI the local chapter for the global City.AI community.
+Håkan is a Microsoft Most Valuable Professional (MVP) in AI.
+Currently, Håkan is working as Manager AI and Big Data at Miles AS, a Norwegian consultancy company.
+", + "color": "#000", + "company": "Miles AS, Norway", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Norway", + "githubUrl": null, + "id": "ckfzj1vexixwq09118hvpudkc", + "idAlt": "ckfzj2icmqlck0b77rv5en92u", + "idMain": "ckfzj1vexixwq09118hvpudkc", + "isNightSpeaker": null, + "label": "November 6", + "mediumUrl": null, + "name": "Håkan Silfvernagel", + "order": 35, + "ownSite": "https://sessionize.com/hakan-silfvernagel/", + "slug": "hakan-silfvernagel", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/agrevlis", + }, + Object { + "icon": "site", + "link": "https://sessionize.com/hakan-silfvernagel/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#fcd725", + "twitterUrl": "https://twitter.com/agrevlis", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "bgColor": "#ccff00", + "contentType": "2e92d35e0ac0421baf779aef56eec40d", + "description": "Elegant and graceful mathematics make a cool textbook cover, but the inside of those same books are usually dry cold engineering. It's important to mix the theory of innovation with the excitement of practicality, and through the composition of these elements we find innovation. In this talk, I'll show you from an engineering perspective how to explore, balance, and ultimately bottle machined success.", + "duration": "20", + "from": "iFit, USA", + "id": "ckfxqoqrdkmjw09708dz0596j", + "isLightning": null, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Robert Plummer", + "overridden": true, + "pic": "veQKxVNyShihmL05rjQV", + "place": "iFit, USA", + "slug": "the-evolution-revolution", + "speaker": "Robert Plummer", + "speakerSlug": "robert-plummer", + "status": "PUBLISHED", + "tag": "talk--undefined", + "talkKey": "robert-plummer", + "text": "Elegant and graceful mathematics make a cool textbook cover, but the inside of those same books are usually dry cold engineering. It's important to mix the theory of innovation with the excitement of practicality, and through the composition of these elements we find innovation. In this talk, I'll show you from an engineering perspective how to explore, balance, and ultimately bottle machined success.
+", + "time": "17:35", + "timeString": "17:35", + "title": "The Evolution Revolution", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/veQKxVNyShihmL05rjQV", + "bio": "Robert is a full stack engineer with 15 years of developer experience, helping lead a node based machine learning team at iFit. From an early age, he strove to understand how things worked by taking them apart, and putting them back together. He became interested in machine learning in 2015, saw a larger need in the node community, and eventually became a maintainer of Brain.js and GPU.js. His desire to convey the simplicity of neural networks was manifest in his machine learning course on scrimba: Neural networks in JavaScript.
+", + "color": "#fff", + "company": "iFit, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": "https://github.com/robertleeplummerjr", + "id": "ckfxqmtvkeuf109116j0clji3", + "idAlt": "ckfxqn7ypeug00911vpnw1ltq", + "idMain": "ckfxqmtvkeuf109116j0clji3", + "isNightSpeaker": null, + "label": "November 5", + "mediumUrl": null, + "name": "Robert Plummer", + "order": 30, + "ownSite": null, + "slug": "robert-plummer", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/robertleeplummerjr", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/robertlplummer", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#4064ff", + "twitterUrl": "https://twitter.com/robertlplummer", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Most people would agree that R is a popular language for data analysis. Perhaps less well known is that R has good support for parallel execution on a single CPU through packages like future. In this presentation we will talk about our experience scaling up R processes even further running R in parallel in docker containers using Kubernetes. Robots generate massive amounts of sensor and other data; extracting the right information and insights from this requires significant more processing than can be tackled on a single execution environment. Faced with a preprocessing job of several hundred GB of data of compressed json line files, we used Pachyderm to write data pipelines to run the data prep in parallel, using multicore containers on a kubernetes cluster. + +By the end of the talk we will have dispelled the myth that R cannot be used in production at scale. Even if you do not use R, you will have seen a use case to scale up analysis regardless of your language of choice.", + "from": "ixpantia, Costa Rica", + "id": "ckg20rm4go65o0911rp4g13qk", + "isLightning": true, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Frans van Dunné", + "place": "ixpantia, Costa Rica", + "slug": "processing-robot-data-at-scale-with-r-and-kubernetes", + "speaker": "Frans van Dunné", + "speakerSlug": "frans-van-dunne", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Most people would agree that R is a popular language for data analysis. Perhaps less well known is that R has good support for parallel execution on a single CPU through packages like future. In this presentation we will talk about our experience scaling up R processes even further running R in parallel in docker containers using Kubernetes. Robots generate massive amounts of sensor and other data; extracting the right information and insights from this requires significant more processing than can be tackled on a single execution environment. Faced with a preprocessing job of several hundred GB of data of compressed json line files, we used Pachyderm to write data pipelines to run the data prep in parallel, using multicore containers on a kubernetes cluster.
+By the end of the talk we will have dispelled the myth that R cannot be used in production at scale. Even if you do not use R, you will have seen a use case to scale up analysis regardless of your language of choice.
+", + "time": "19:30", + "timeString": "19:30", + "title": "Processing Robot Data at Scale with R and Kubernetes", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/unywU5FNT8yPNxdoKNyX", + "bio": "Frans is Chief Data Officer at ixpantia. He combines a diverse skill-set, that includes business analysis, data analysis and enterprise architecture, with more than 15 years of experience to help organizations respond to their data driven innovation needs quickly and effectively. Frans has a PhD in biology from the University of Amsterdam and has taught at universities in Europe and Latin America. As a consultant he has facilitated in-company training on diverse topics, including data driven innovation, applied statistics, statistical programming and machine learning.
+", + "color": "#fff", + "company": "ixpantia, Costa Rica", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Costa Rica", + "githubUrl": "https://github.com/FvD", + "id": "ckg20pe6mvts90b77utmtafqu", + "idAlt": "ckg20pycko5xp0911g69b166d", + "idMain": "ckg20pe6mvts90b77utmtafqu", + "isNightSpeaker": null, + "label": "November 5", + "mediumUrl": null, + "name": "Frans van Dunné", + "order": 25, + "ownSite": null, + "slug": "frans-van-dunne", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/FvD", + }, + Object { + "icon": "tw", + "link": "https://twitter.com/fransvandunne", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#4064ff", + "twitterUrl": "https://twitter.com/fransvandunne", + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "After this talk, you will know how to write the perfect song for your favourite singer! This is not a songwriting retreat but a talk about some of the lyrical, structural, harmonic, and melodic features song analysis includes. We will discuss the extraction of song structures using NLP tools and repetition analysis, musical features, and how to use all of those features to predict which songs fit which artist the best. Attend this talk to discover what is the future that the music industry can achieve with machine learning. ", + "from": "MyPart, Israel", + "id": "ckg219umro80s0911fz28ujaf", + "isLightning": true, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Yama Anin Aminof", + "place": "MyPart, Israel", + "slug": "can-you-sing-with-all-the-voices-of-the-features", + "speaker": "Yama Anin Aminof", + "speakerSlug": "yama-anin-aminof", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "After this talk, you will know how to write the perfect song for your favourite singer! This is not a songwriting retreat but a talk about some of the lyrical, structural, harmonic, and melodic features song analysis includes. We will discuss the extraction of song structures using NLP tools and repetition analysis, musical features, and how to use all of those features to predict which songs fit which artist the best. Attend this talk to discover what is the future that the music industry can achieve with machine learning.
+", + "time": "17:35", + "timeString": "17:35", + "title": "Can You Sing with All the Voices of the Features?", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/uhsbQ8VQmx8zl2khFJQM", + "bio": "Yama is a data scientist at MyPart, an Israeli startup in the music industry, developing algorithms and researching lyrical and musical song features. In her spare time, she gives tech talks at conferences and meetups (Geektime Code, PyData Tel Aviv, IsraelClouds); and mentors a group of developers through their first steps in the data science world as a part of Baot - Israel’s largest community of senior female engineers and computer scientists. Yama has a B.Sc in mathematics and physics from Tel Aviv University where she also expresses her passion for music by playing the saxophone in the TAU Wind Band.
+", + "color": "#000", + "company": "MyPart, Israel", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Israel", + "githubUrl": null, + "id": "ckg21793ryad70970a1dnp470", + "idAlt": "ckg217zwnvvmi0b771dwbulbq", + "idMain": "ckg21793ryad70970a1dnp470", + "isNightSpeaker": false, + "label": "November 6", + "mediumUrl": null, + "name": "Yama Anin Aminof", + "order": 20, + "ownSite": null, + "slug": "yama-anin-aminof", + "socials": Array [], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#fcd725", + "twitterUrl": null, + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "This talk will show how a fraud detection model has been developed based on the data from the browsing sessions of the different users. Tools such as PySpark and Spark ML have been used in this initiative due to a large amount of data. + +The model created was able to identify a grouping of characteristics that covered 10% of the total sessions in which 88% were deemed fraudulent. This allows analysts to spend more of their time on higher-risk cases. ", + "from": "Bluetab Solutions, Spain", + "id": "ckg205di1y5cg0970ci1ebp9x", + "isLightning": true, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Javier Alcaide Pérez", + "place": "Bluetab Solutions, Spain", + "slug": "browser-session-analytics-the-key-to-fraud-detection", + "speaker": "Javier Alcaide Pérez", + "speakerSlug": "javier-alcaide-perez", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "This talk will show how a fraud detection model has been developed based on the data from the browsing sessions of the different users. Tools such as PySpark and Spark ML have been used in this initiative due to a large amount of data.
+The model created was able to identify a grouping of characteristics that covered 10% of the total sessions in which 88% were deemed fraudulent. This allows analysts to spend more of their time on higher-risk cases.
+", + "time": "17:35", + "timeString": "17:35", + "title": "Browser Session Analytics: The Key to Fraud Detection", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/9vM5RvaFREKEVH1gc5VJ", + "bio": "Javier Alcaide is a mathematician and software developer focused on data science and machine learning. His professional career is based on the use of advanced analytics and big data techniques within the financial sector. His current role is the design and construction of AI models and the analysis of data using ETL processing with Big Data technologies.
+", + "color": "#000", + "company": "Bluetab Solutions, Spain", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Spain", + "githubUrl": null, + "id": "ckg201z8ty4vn0970nzm3sacl", + "idAlt": "ckg203qwbvr1q0b77hlguntuu", + "idMain": "ckg201z8ty4vn0970nzm3sacl", + "isNightSpeaker": null, + "label": "November 6", + "mediumUrl": null, + "name": "Javier Alcaide Pérez", + "order": 15, + "ownSite": "https://www.linkedin.com/in/javier-alcaide-pérez-127b92115/", + "slug": "javier-alcaide-perez", + "socials": Array [ + Object { + "icon": "site", + "link": "https://www.linkedin.com/in/javier-alcaide-pérez-127b92115/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#fcd725", + "twitterUrl": null, + }, + Object { + "activities": Object { + "talks": Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Adoption of AI has been slowed by the challenges involved in obtaining performant models, which require significant expertise and effort, and the limited number of practitioners with machine learning expertise. Automated machine learning (AutoML) eliminates the routine steps in the machine learning workflow, thus empowering domain experts without machine learning background to build good initial models, and allowing experienced practitioners to focus additional manual model optimization. This talk describes the extent of automation available for the various steps and demonstrates AutoML with a classifier for human activities based on accelerometer sensor data.", + "from": "MathWorks, USA", + "id": "ckg29yj18z6vr0970u381ie5g", + "isLightning": true, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Bernhard Suhm", + "place": "MathWorks, USA", + "slug": "broadening-ai-adoption-with-auto-ml", + "speaker": "Bernhard Suhm", + "speakerSlug": "bernhard-suhm", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Adoption of AI has been slowed by the challenges involved in obtaining performant models, which require significant expertise and effort, and the limited number of practitioners with machine learning expertise. Automated machine learning (AutoML) eliminates the routine steps in the machine learning workflow, thus empowering domain experts without machine learning background to build good initial models, and allowing experienced practitioners to focus additional manual model optimization. This talk describes the extent of automation available for the various steps and demonstrates AutoML with a classifier for human activities based on accelerometer sensor data.
+", + "time": "19:30", + "timeString": "19:30", + "title": "Broadening AI Adoption with AutoML", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/7rZ4ptJ5QdmZ7jiilMHi", + "bio": "Bernhard Suhm is the product manager for Machine Learning at MathWorks. He works closely with customer facing and development teams to address customer needs and market trends in our machine learning related products, primarily the Statistics and Machine Learning toolbox. Prior to joining MathWorks Bernhard led analyst teams and developed methods applying analytics to optimizing the delivery of customer service in call centers. He also held positions at a usability consulting company and Carnegie Mellon University. He received a PhD in Computer Science specializing in speech user interfaces from Karlsruhe University in Germany.
+", + "color": "#fff", + "company": "MathWorks, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": null, + "id": "ckg29vd0aouka09115rd0kiv6", + "idAlt": "ckg29x8p7wi4i0b77ydgo33ex", + "idMain": "ckg29vd0aouka09115rd0kiv6", + "isNightSpeaker": false, + "label": "November 5", + "mediumUrl": null, + "name": "Bernhard Suhm", + "order": 14, + "ownSite": null, + "slug": "bernhard-suhm", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/BernhardSuhm", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#4064ff", + "twitterUrl": "https://twitter.com/BernhardSuhm", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/9k2y3WBFRIKDHHdphIF5", + "bio": "Louvere Walker-Hannon is a MathWorks Senior Application Engineer, who provides direction and recommendations on technical workflows for various applications. Specifically, she assists with providing guidance on the following topics image processing, computer vision, machine learning, deep learning, geospatial analysis, and data analytics when discussing technical workflows. She has a bachelor’s degree in Biomedical Engineering and a master’s degree in Geographic Information Technology with a specialization in Remote Sensing. Louvere has worked in three different engineering roles throughout her 20 year career while at MathWorks and is a STEM advocate.
+", + "color": "#fff", + "company": "MathWorks, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": null, + "id": "ckglyfhmgcxlu0970wsg35chb", + "idAlt": "ckglyga9qcxoh0970fc7nskfp", + "idMain": "ckglyfhmgcxlu0970wsg35chb", + "isNightSpeaker": null, + "label": "Workshop", + "mediumUrl": null, + "name": "Louvere Walker-Hannon", + "order": 13, + "ownSite": null, + "slug": "louvere-walker-hannon", + "socials": Array [], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#000", + "twitterUrl": null, + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/8huGy3Q1TzKaFEb1fxcg", + "bio": "Sachin is a Deputy Director at Applied Materials leading efforts in Data Science and Advanced Analytics with a team of data scientists, working to provide innovative solutions with a focus on AI enablement in various products and systems for the semiconductor equipment manufacturing industry.
+He has over 15 years of diverse experience in the Industry around Software, Data Science and Artificial Intelligence.
+", + "color": "#fff", + "company": "Applied Materials, India", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "India", + "githubUrl": null, + "id": "ckg2lwijapss30911ds4o9ize", + "idAlt": "ckg2lx5glxfur0b77na4mxbzh", + "idMain": "ckg2lwijapss30911ds4o9ize", + "isNightSpeaker": null, + "label": "November 5", + "mediumUrl": null, + "name": "Sachin Dangayach", + "order": 12, + "ownSite": "https://www.linkedin.com/in/sachin-dangayach-6a7a685", + "slug": "sachin-dangayach", + "socials": Array [ + Object { + "icon": "site", + "link": "https://www.linkedin.com/in/sachin-dangayach-6a7a685", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#4064ff", + "twitterUrl": null, + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/vDjVGpY8SxCVmfgCSCZx", + "bio": "I encourage others to see different perspectives and constructively break the rules. Observe - Optimize - Learn - Repeat is my work and life motto. Next to it, I found my joy in building and optimizing end-to-end Machine Learning Systems.
+Jaroslaw Rzepecki is a Senior Research Engineer at Microsoft Research Lab in Cambridge, UK. He has a MSc in theoretical physics from Nicolaus Copernicus University and a PhD in astrophysics from Heidelberg University. After completion of his PhD he joined video games industry where he worked on two published titles (DiRT 2, Grid). Jaroslaw has also worked as a research engineer in computer graphics, investigating solutions to the global illumination problem in video games. Currently he is working in the Game Intelligence group at MSR where he combines his passion for engineering, video games and machine learning to make video games more fun for everybody.
+", + "color": "white", + "company": "Microsoft Research Lab, UK", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "UK", + "githubUrl": null, + "id": "ckgrtcxcnsdj60911jcf9usox", + "idAlt": "ckgrtdqcbsdlq09118f0kto7g", + "idMain": "ckgrtcxcnsdj60911jcf9usox", + "isNightSpeaker": null, + "label": "Discussion Room", + "mediumUrl": null, + "name": "Jaroslaw Rzepecki", + "order": null, + "ownSite": null, + "slug": "jaroslaw-rzepecki", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/JarekRzepecki", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#7d7d7d", + "twitterUrl": "https://twitter.com/JarekRzepecki", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/JOdGEw5WQLe2jEUSeHZ6", + "bio": "Argyris is the SVP of Data at Orfium.com, and a PhD candidate in Cyprus University of Technology. His research interests are NLP and Machine learning. He is the founder and lead researcher at summarly.com, and co-organizer of PyData Cyprus.
+", + "color": "#fff", + "company": "Orfium.com, Cyprus", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Cyprus", + "githubUrl": null, + "id": "ckgt7phe5uv5l0911epmps679", + "idAlt": "ckgt7qkwouv8w0911wuyc615i", + "idMain": "ckgt7phe5uv5l0911epmps679", + "isNightSpeaker": false, + "label": "Workshop", + "mediumUrl": null, + "name": "Argyris Argyrou", + "order": null, + "ownSite": null, + "slug": "argyris-argyrou", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/argyrisargyrou", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#000", + "twitterUrl": "https://twitter.com/argyrisargyrou", + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/iePFXzNoTTikAM0J7Uli", + "bio": "Theodoros is the Lead ML Data Scientist in Audio Recognition at Orfium.com. His research and work focuses both on deep learning and algorithmic methods to solve audio-related problems such as exact audio recognition, cover song recognition, denoising and audio classification. The process includes everything from feature design and extraction to model training and evaluation.
+", + "color": "#fff", + "company": "Orfium.com, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": null, + "id": "ckgt7s0cc2lba0b77l3u1gw5m", + "idAlt": "ckgt7slmzvwqs0970cj2rst5n", + "idMain": "ckgt7s0cc2lba0b77l3u1gw5m", + "isNightSpeaker": null, + "label": "Workshop", + "mediumUrl": null, + "name": "Theodoros Palamas", + "order": null, + "ownSite": null, + "slug": "theodoros-palamas", + "socials": Array [], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "tagBG": "#000", + "twitterUrl": null, + }, + ], + "performanceTeam": Array [], + "workshops": Array [ + Object { + "activities": Object { + "workshops": Array [ + Object { + "slug": "introduction-to-machine-learning-on-the-cloud", + "title": "Introduction to Machine Learning on the Cloud", + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/pnKYOEaiTu23p56sfwHT", + "bio": "Dmitry is a Microsoft veteran, working for more than 13 years. He started as a Technical Evangelist, and in this role presented on numerous conferences, including twice being on stage with Steve Ballmer. He then worked for 2 years as Senior Software Engineer, helping big European companies to start pilot digital transformation projects based on AI and ML. As Cloud Developer Advocate, Dmitry focuses on creating educational content and working with academic and research institutions. He is also an Associate Professor at MIPT, HSE and MAI in Moscow, a big fan of functional programming and F#, and a maintainer/primary developer of mPyPl library. In his spare time, Dmitry explores Science Art and Technological Magic, as well as performs Chinese tea ceremonies. He can be reached at soshnikov.com.
+", + "company": "Cloud Developer Advocate @ Microsoft, Russia", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Russia", + "githubUrl": null, + "id": "ckcq6n36xxgat0b97lxet1gxq", + "idMain": "ckcq6n36xxgat0b97lxet1gxq", + "info": Array [], + "mediumUrl": null, + "name": "Dmitry Soshnikov", + "ownSite": "https://soshnikov.com/", + "slug": "dmitry-soshnikov", + "socials": Array [ + Object { + "icon": "site", + "link": "https://soshnikov.com/", + }, + ], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": null, + "workshops": Array [ + Object { + "slug": "introduction-to-machine-learning-on-the-cloud", + "title": "Introduction to Machine Learning on the Cloud", + }, + ], + "workshopsActivity": Array [], + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/bKRipg63QmCJZ5TbE17t", + "bio": "Mikhail Burtsev is a head of Neural Networks and Deep Learning Laboratory at Moscow Institute of Physics and Technology. He is also a founder and leader of open-source conversational AI framework DeepPavlov. Mikhail had proposed and co-organize a series of academic Conversational AI Challenges (including NIPS 2017, NeurIPS 2018, EMNLP 2020).
+His research interests are in the fields of Natural Language Processing, Machine Learning, Artificial Intelligence and Complex Systems. Mikhail Burtsev has published more than 20 technical papers including – Nature, Artificial Life, Lecture Notes in Computer Science series, and other peer-reviewed venues.
+", + "company": "DeepPavlov.ai, Russia", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Russia", + "githubUrl": null, + "id": "ckejts5zpox7v0a854aku8ol5", + "idAlt": "ckejtsyxbox930a856pur09jb", + "idMain": "ckejts5zpox7v0a854aku8ol5", + "isNightSpeaker": null, + "label": "November 6", + "mediumUrl": null, + "name": "Mikhail Burtsev", + "order": 45, + "ownSite": null, + "slug": "mikhail-burtsev", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/mikhailburtsev", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/mikhailburtsev", + }, + Object { + "activities": Object { + "workshops": Array [ + Object { + "slug": "from-shazam-to-today-s-audio-fingerprinting-algorithms-the-theory-best-practices-and-open-source-libraries-to-experiment-with", + "title": "From Shazam to Today's Audio Fingerprinting Algorithms, the Theory, Best Practices, and Open Source Libraries to Experiment with", + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/JOdGEw5WQLe2jEUSeHZ6", + "bio": "Argyris is the SVP of Data at Orfium.com, and a PhD candidate in Cyprus University of Technology. His research interests are NLP and Machine learning. He is the founder and lead researcher at summarly.com, and co-organizer of PyData Cyprus.
+", + "company": "Orfium.com, Cyprus", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Cyprus", + "githubUrl": null, + "id": "ckgt7phe5uv5l0911epmps679", + "idMain": "ckgt7phe5uv5l0911epmps679", + "mediumUrl": null, + "name": "Argyris Argyrou", + "ownSite": null, + "slug": "argyris-argyrou", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/argyrisargyrou", + }, + ], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": "https://twitter.com/argyrisargyrou", + "workshops": Array [], + "workshopsActivity": Array [ + Object { + "slug": "from-shazam-to-today-s-audio-fingerprinting-algorithms-the-theory-best-practices-and-open-source-libraries-to-experiment-with", + "title": "From Shazam to Today's Audio Fingerprinting Algorithms, the Theory, Best Practices, and Open Source Libraries to Experiment with", + }, + ], + }, + Object { + "activities": Object { + "workshops": Array [ + Object { + "slug": "from-shazam-to-today-s-audio-fingerprinting-algorithms-the-theory-best-practices-and-open-source-libraries-to-experiment-with", + "title": "From Shazam to Today's Audio Fingerprinting Algorithms, the Theory, Best Practices, and Open Source Libraries to Experiment with", + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/iePFXzNoTTikAM0J7Uli", + "bio": "Theodoros is the Lead ML Data Scientist in Audio Recognition at Orfium.com. His research and work focuses both on deep learning and algorithmic methods to solve audio-related problems such as exact audio recognition, cover song recognition, denoising and audio classification. The process includes everything from feature design and extraction to model training and evaluation.
+", + "company": "Orfium.com, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": null, + "id": "ckgt7s0cc2lba0b77l3u1gw5m", + "idMain": "ckgt7s0cc2lba0b77l3u1gw5m", + "mediumUrl": null, + "name": "Theodoros Palamas", + "ownSite": null, + "slug": "theodoros-palamas", + "socials": Array [], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": null, + "workshops": Array [], + "workshopsActivity": Array [ + Object { + "slug": "from-shazam-to-today-s-audio-fingerprinting-algorithms-the-theory-best-practices-and-open-source-libraries-to-experiment-with", + "title": "From Shazam to Today's Audio Fingerprinting Algorithms, the Theory, Best Practices, and Open Source Libraries to Experiment with", + }, + ], + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/YeF9oCpNSz6mvX7LUXtU", + "bio": "Jason is a Senior Developer Advocate for TensorFlow.js at Google.
+Jason combines his knowledge of the technical and creative worlds to solve complex, strategic / technical challenges for Google's largest customers and internal teams. Developing innovative world firsts utilizing the latest technologies and hardware is a key component of his role to rapidly prototype new ideas and consult on project solutions globally.
+With a background in Computer Science at the University of Bristol, England, where he specialized in reality mining and invisible computing, Jason has been a \\"hybrid engineer\\" for over 15 years. Combining his passion for several areas including both front and back end web programming, but also design and user experience, he has worked in many sizes of companies from startups (including founding his own) to Google.
+", + "company": "Google, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": null, + "id": "ckenytg4xv9ky0908tyf29riv", + "idAlt": "ckenyu1y8v9mp0908c63db5oz", + "idMain": "ckenytg4xv9ky0908tyf29riv", + "isNightSpeaker": null, + "label": "November 5", + "mediumUrl": null, + "name": "Jason Mayes", + "order": 55, + "ownSite": "http://jasonmayes.com/", + "slug": "jason-mayes", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/jason_mayes", + }, + Object { + "icon": "site", + "link": "http://jasonmayes.com/", + }, + ], + "status": "PUBLISHED", + "tag": "speaker--undefined", + "twitterUrl": "https://twitter.com/jason_mayes", + }, + Object { + "activities": Object { + "workshops": Array [ + Object { + "slug": "applied-ai-with-auto-ml-and-interpretability-in-matlab", + "title": "Applied AI with AutoML and Interpretability in MATLAB", + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/7rZ4ptJ5QdmZ7jiilMHi", + "bio": "Bernhard Suhm is the product manager for Machine Learning at MathWorks. He works closely with customer facing and development teams to address customer needs and market trends in our machine learning related products, primarily the Statistics and Machine Learning toolbox. Prior to joining MathWorks Bernhard led analyst teams and developed methods applying analytics to optimizing the delivery of customer service in call centers. He also held positions at a usability consulting company and Carnegie Mellon University. He received a PhD in Computer Science specializing in speech user interfaces from Karlsruhe University in Germany.
+", + "company": "MathWorks, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": null, + "id": "ckg29vd0aouka09115rd0kiv6", + "idMain": "ckg29vd0aouka09115rd0kiv6", + "mediumUrl": null, + "name": "Bernhard Suhm", + "ownSite": null, + "slug": "bernhard-suhm", + "socials": Array [ + Object { + "icon": "tw", + "link": "https://twitter.com/BernhardSuhm", + }, + ], + "tag": "speaker--undefined", + "talks": Array [ + Object { + "description": "Adoption of AI has been slowed by the challenges involved in obtaining performant models, which require significant expertise and effort, and the limited number of practitioners with machine learning expertise. Automated machine learning (AutoML) eliminates the routine steps in the machine learning workflow, thus empowering domain experts without machine learning background to build good initial models, and allowing experienced practitioners to focus additional manual model optimization. This talk describes the extent of automation available for the various steps and demonstrates AutoML with a classifier for human activities based on accelerometer sensor data.", + "isLightning": true, + "timeString": "19:30", + "title": "Broadening AI Adoption with AutoML", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + "twitterUrl": "https://twitter.com/BernhardSuhm", + "workshops": Array [], + "workshopsActivity": Array [ + Object { + "slug": "applied-ai-with-auto-ml-and-interpretability-in-matlab", + "title": "Applied AI with AutoML and Interpretability in MATLAB", + }, + ], + }, + Object { + "activities": Object { + "workshops": Array [ + Object { + "slug": "applied-ai-with-auto-ml-and-interpretability-in-matlab", + "title": "Applied AI with AutoML and Interpretability in MATLAB", + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/9k2y3WBFRIKDHHdphIF5", + "bio": "Louvere Walker-Hannon is a MathWorks Senior Application Engineer, who provides direction and recommendations on technical workflows for various applications. Specifically, she assists with providing guidance on the following topics image processing, computer vision, machine learning, deep learning, geospatial analysis, and data analytics when discussing technical workflows. She has a bachelor’s degree in Biomedical Engineering and a master’s degree in Geographic Information Technology with a specialization in Remote Sensing. Louvere has worked in three different engineering roles throughout her 20 year career while at MathWorks and is a STEM advocate.
+", + "company": "MathWorks, USA", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "USA", + "githubUrl": null, + "id": "ckglyfhmgcxlu0970wsg35chb", + "idMain": "ckglyfhmgcxlu0970wsg35chb", + "mediumUrl": null, + "name": "Louvere Walker-Hannon", + "ownSite": null, + "slug": "louvere-walker-hannon", + "socials": Array [], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": null, + "workshops": Array [], + "workshopsActivity": Array [ + Object { + "slug": "applied-ai-with-auto-ml-and-interpretability-in-matlab", + "title": "Applied AI with AutoML and Interpretability in MATLAB", + }, + ], + }, + Object { + "activities": Object {}, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/vDjVGpY8SxCVmfgCSCZx", + "bio": "I encourage others to see different perspectives and constructively break the rules. Observe - Optimize - Learn - Repeat is my work and life motto. Next to it, I found my joy in building and optimizing end-to-end Machine Learning Systems.
+Olga is a head of Toloka crowdsourcing platform. She's been responsible for providing human-labeled data for all AI projects at Yandex and implementing crowd-based human-in-the-loop solutions in such areas as software testing, customer support, product localization, generation of content, etc. Olga helped Yandex to grow the number of crowd performers involved in data labeling from several dozens in 2009 up to 6.5M in 2020 and is now developing Toloka as a global infrostructure for data labelling available for all ML specialists. +She graduated from the Saint Petersburg State University as a specialist in Mathematical Methods and Modeling in Economics. Also, she was a co-author of research papers and tutorials on efficient crowdsourcing and quality control at SIGIR, CVPR, KDD, WSDM, and SIGMOD.
+", + "company": "Yandex.Toloka, Russia", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Russia", + "githubUrl": null, + "id": "ckh093snyccm30b778er0hfd4", + "idMain": "ckh093snyccm30b778er0hfd4", + "mediumUrl": null, + "name": "Olga Megorskaya", + "ownSite": "https://www.linkedin.com/in/omegorskaya/", + "slug": "olga-megorskaya", + "socials": Array [ + Object { + "icon": "site", + "link": "https://www.linkedin.com/in/omegorskaya/", + }, + ], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": null, + "workshops": Array [], + "workshopsActivity": Array [ + Object { + "slug": "crowdsourcing-practice-for-efficient-data-labeling", + "title": "Crowdsourcing Practice for Efficient Data Labeling", + }, + ], + }, + Object { + "activities": Object { + "workshops": Array [ + Object { + "slug": "crowdsourcing-practice-for-efficient-data-labeling", + "title": "Crowdsourcing Practice for Efficient Data Labeling", + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/HiCzvN4SFi2tbA8J8zSW", + "bio": "Alexey is responsible for data-driven decisions and the crowd platform ecosystem. His research interests are focused on Machine Learning, Data Analysis, Auction Theory; his research is published at ICML, NeurIPS, WSDM, WWW, KDD, SIGIR, CIKM, and TWEB. Alexey was a co-author of three tutorials on practical A/B testing (at KDD2018, WWW2018, andSIGIR 2019) and four hands-on tutorials on efficient crowdsourcing (at KDD 2019, WSDM 2020, SIGMOD 2020, and CVPR2020). He served as a senior PC member at WWW2019 and as a PC member at several NeurIPS, ICML, KDD, WSDM, CIKM, and WWW conferences; he was also a session chair at WWW2017. He graduated from Lomonosov Moscow State University (Faculty of Mechanics and Mathematics) in 2008 and received his PhD in Computational Mathematics from the same university in 2011.
+", + "company": "Yandex.Toloka, Russia", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Russia", + "githubUrl": null, + "id": "ckh0a48qrconq0970sgunic5d", + "idMain": "ckh0a48qrconq0970sgunic5d", + "mediumUrl": null, + "name": "Alexey Drutsa", + "ownSite": null, + "slug": "alexey-drutsa", + "socials": Array [], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": null, + "workshops": Array [], + "workshopsActivity": Array [ + Object { + "slug": "crowdsourcing-practice-for-efficient-data-labeling", + "title": "Crowdsourcing Practice for Efficient Data Labeling", + }, + ], + }, + Object { + "activities": Object { + "workshops": Array [ + Object { + "slug": "crowdsourcing-practice-for-efficient-data-labeling", + "title": "Crowdsourcing Practice for Efficient Data Labeling", + }, + ], + }, + "avatar": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/ZOvduo5TcCK6Yo5KGZsP", + "bio": "Dr. Dmitry Ustalov is responsible for crowd activity analysis, investigation of suspected fraud, and product metrics at Yandex.Toloka. His research interests are focused on Crowdsourcing and Natural Language Processing. His studies are published at such premier venues as COLI, ACL, EACL, and EMNLP; he serves as a reviewer for COLI, SWJ, ACL, EMNLP, COLING, ISWC, *SEM, EKAW, and other publications. Dmitry has organized the Crowd Science workshop at NeurIPS 2020 as well as the hands-on crowdsourcing tutorials at SIGMOD/PODS '20 and WSDM '20. Before joining Yandex, he received his Kandidat Nauk (PhD) degree in 2018 from the South Ural State University (Russia) and was a post-doctoral research fellow at the University of Mannheim (Germany).
+", + "company": "Yandex.Toloka, Russia", + "contentType": "e981e312fd6c48a39230de9193be4db9", + "contentTypeAlt": "d31070ab4611456a83fa837a6ccea527", + "country": "Russia", + "githubUrl": "https://github.com/dustalov", + "id": "ckh0a6esy4n9u09111fgkj8js", + "idMain": "ckh0a6esy4n9u09111fgkj8js", + "mediumUrl": null, + "name": "Dmitry Ustalov", + "ownSite": null, + "slug": "dmitry-ustalov", + "socials": Array [ + Object { + "icon": "gh", + "link": "https://github.com/dustalov", + }, + ], + "tag": "speaker--undefined", + "talks": Array [], + "twitterUrl": null, + "workshops": Array [], + "workshopsActivity": Array [ + Object { + "slug": "crowdsourcing-practice-for-efficient-data-labeling", + "title": "Crowdsourcing Practice for Efficient Data Labeling", + }, + ], + }, + ], +} +`; diff --git a/tests/mlconf/__snapshots__/sponsors.test.js.snap b/tests/mlconf/__snapshots__/sponsors.test.js.snap new file mode 100644 index 0000000..495a2fc --- /dev/null +++ b/tests/mlconf/__snapshots__/sponsors.test.js.snap @@ -0,0 +1,714 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`RS should be correct sponsors data 1`] = ` +Array [ + Object { + "category": "Gold", + "list": Array [ + Object { + "alt": "Microsoft", + "category": "Gold", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckgghivfty5ba09704edb3tgk", + "idAlt": "ckgghjhvthbwe0b772bvrs6ti", + "img": "https://media.graphcms.com/jePfmrdRRy8qvceLp8yB", + "link": "https://aka.ms/mlconf", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/E4uIsugQ5qi2UTl1FvHQ", + }, + "id": "ckgghivfty5ba09704edb3tgk", + "site": "https://aka.ms/mlconf", + "status": "PUBLISHED", + "title": "Microsoft", + }, + "status": "PUBLISHED", + "width": 550, + }, + Object { + "alt": "Yandex.Toloka", + "category": "Gold", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckh0ebs5w4vzl0911wczej9ev", + "idAlt": "ckh0eckwsd28i0970xcd8jswd", + "img": "https://media.graphcms.com/41gIRr5qQ06XLN9oDp7M", + "link": "https://toloka.ai/?utm_source=conference&utm_medium=sponsor&utm_compaign=mlconf2020eu", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/41gIRr5qQ06XLN9oDp7M", + }, + "id": "ckh0ebs5w4vzl0911wczej9ev", + "site": "https://toloka.ai/?utm_source=conference&utm_medium=sponsor&utm_compaign=mlconf2020eu", + "status": "PUBLISHED", + "title": "Yandex.Toloka", + }, + "status": "PUBLISHED", + "width": 150, + }, + ], + "mod": "logos_md sponsors-block_lg", + "title": "Gold", + }, + Object { + "category": "Silver", + "list": Array [ + Object { + "alt": "MathWorks", + "category": "Silver", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckggi9cyihdwj0b77kr6mb8va", + "idAlt": "ckggi9vuyhdx60b77378veh3p", + "img": "https://media.graphcms.com/KkYY8ZOQKSf28DiC7h4u", + "link": "https://www.mathworks.com/?s_eid=PEP_24253", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/KkYY8ZOQKSf28DiC7h4u", + }, + "id": "ckggi9cyihdwj0b77kr6mb8va", + "site": "https://www.mathworks.com/?s_eid=PEP_24253", + "status": "PUBLISHED", + "title": "MathWorks", + }, + "status": "PUBLISHED", + "width": 300, + }, + Object { + "alt": "academy.infinite.red", + "category": "Silver", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckgm4r0n6rafo0b77yd21ln97", + "idAlt": "ckgm4rnfwjmhi0911493rrueo", + "img": "https://media.graphcms.com/SEHTckeT7iOVTbrmxhIA", + "link": "https://academy.infinite.red/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/SEHTckeT7iOVTbrmxhIA", + }, + "id": "ckgm4r0n6rafo0b77yd21ln97", + "site": "https://academy.infinite.red/", + "status": "PUBLISHED", + "title": "academy.infinite.red", + }, + "status": "PUBLISHED", + "width": 300, + }, + ], + "mod": "logos_sm sponsors-block_lg", + "title": "Silver", + }, + Object { + "category": "ProductionPartner", + "list": Array [ + Object { + "alt": "Google", + "category": "ProductionPartner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckebfhrq9e2n5091610xk7h7q", + "idAlt": "ckfc86kq2j0dl0b77qzajqdfh", + "img": "https://media.graphcms.com/q5DolMSCS7SKmbBYcN5i", + "link": "https://about.google/intl/en/", + "order": 1, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/q5DolMSCS7SKmbBYcN5i", + }, + "id": "ckebfhrq9e2n5091610xk7h7q", + "site": "https://about.google/intl/en/", + "status": "PUBLISHED", + "title": "Google", + }, + "status": "PUBLISHED", + "width": 250, + }, + Object { + "alt": "Focus Reactive", + "category": "ProductionPartner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ck0zk3adkpuu60b49tpdsxjlg", + "idAlt": "ckc62iejhuv340903lo42kaaf", + "img": "https://media.graphcms.com/4nC2yx5Tem996iOkkVFg", + "link": "https://focusreactive.com", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/4nC2yx5Tem996iOkkVFg", + }, + "id": "ck0zk3adkpuu60b49tpdsxjlg", + "site": "https://focusreactive.com", + "status": "PUBLISHED", + "title": "Focus Reactive", + }, + "status": "PUBLISHED", + "width": 100, + }, + ], + "mod": "logos_sm sponsors-block_lg", + "title": "Production Partners", + }, + Object { + "category": "Partner", + "list": Array [ + Object { + "alt": "schoolofdatascience", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckfp6prqu54n70b77hfoj1tiq", + "idAlt": "ckfp6ql8kxkam09110pf6grrk", + "img": "https://media.graphcms.com/0c7gQ1M3TxqtAwfgIB1Q", + "link": "https://schoolofdatascience.nl/", + "order": 1, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/0c7gQ1M3TxqtAwfgIB1Q", + }, + "id": "ckfp6prqu54n70b77hfoj1tiq", + "site": "https://schoolofdatascience.nl/", + "status": "PUBLISHED", + "title": "schoolofdatascience", + }, + "status": "PUBLISHED", + "width": 90, + }, + Object { + "alt": "toelt.ai", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckes8vtpi00oc0a8578r7weop", + "idAlt": "ckes8wjhhzvzc0916jvk4i95j", + "img": "https://media.graphcms.com/hQ2EBy9USICk7WCosg8F", + "link": "http://toelt.ai/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/hQ2EBy9USICk7WCosg8F", + }, + "id": "ckes8vtpi00oc0a8578r7weop", + "site": "http://toelt.ai/", + "status": "PUBLISHED", + "title": "toelt.ai", + }, + "status": "PUBLISHED", + "width": 130, + }, + Object { + "alt": "Women Who Code Toronto", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckes8yaiuzw260916gjjun4dc", + "idAlt": "ckes8yu1300ta0a8506rxcoia", + "img": "https://media.graphcms.com/9UlXg2XqQBOMn5H4sTPT", + "link": "https://www.meetup.com/Women-Who-Code-Toronto/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/9UlXg2XqQBOMn5H4sTPT", + }, + "id": "ckes8yaiuzw260916gjjun4dc", + "site": "https://www.meetup.com/Women-Who-Code-Toronto/", + "status": "PUBLISHED", + "title": "Women Who Code Toronto", + }, + "status": "PUBLISHED", + "width": 70, + }, + Object { + "alt": "Crow intelligence", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckes90nj147yg0908g00hfc45", + "idAlt": "ckes91b5300y30a85f3lbus7t", + "img": "https://media.graphcms.com/LfRUnp5tT5CrapkSwpYW", + "link": "https://crowintelligence.org/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/LfRUnp5tT5CrapkSwpYW", + }, + "id": "ckes90nj147yg0908g00hfc45", + "site": "https://crowintelligence.org/", + "status": "PUBLISHED", + "title": "Crow intelligence", + }, + "status": "PUBLISHED", + "width": 50, + }, + Object { + "alt": "AIgents", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckes93hwa010u0a85mnxcyi8g", + "idAlt": "ckes94cpa013a0a85mn1r9e02", + "img": "https://media.graphcms.com/k8lCDlXaSgi76x8YumUW", + "link": "https://aigents.co/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/k8lCDlXaSgi76x8YumUW", + }, + "id": "ckes93hwa010u0a85mnxcyi8g", + "site": "https://aigents.co/", + "status": "PUBLISHED", + "title": "AIgents", + }, + "status": "PUBLISHED", + "width": 80, + }, + Object { + "alt": "LA Big Data Science, Deep Learning & AI", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "cketokwuj1py00a857v338b21", + "idAlt": "cketoll851pzc0a85ka9d07sw", + "img": "https://media.graphcms.com/nCPmKiQARluV9ZjBAIUF", + "link": "https://www.meetup.com/Los-Angeles-Deep-Learning-Big-Data-Science-AI/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/nCPmKiQARluV9ZjBAIUF", + }, + "id": "cketokwuj1py00a857v338b21", + "site": "https://www.meetup.com/Los-Angeles-Deep-Learning-Big-Data-Science-AI/", + "status": "PUBLISHED", + "title": "LA Big Data Science, Deep Learning & AI", + }, + "status": "PUBLISHED", + "width": 110, + }, + Object { + "alt": "NY-NLP", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "cketonbrn1m7l09166t8g0n1r", + "idAlt": "cketonyl91q3e0a857d6ftnjk", + "img": "https://media.graphcms.com/7Ajj7ZEFSReuAQefj4qg", + "link": "https://www.meetup.com/NY-NLP/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/7Ajj7ZEFSReuAQefj4qg", + }, + "id": "cketonbrn1m7l09166t8g0n1r", + "site": "https://www.meetup.com/NY-NLP/", + "status": "PUBLISHED", + "title": "NY-NLP", + }, + "status": "PUBLISHED", + "width": 80, + }, + Object { + "alt": "Machine Learning Torino", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "cketoutno1mgo0916442pe408", + "idAlt": "cketovteo1mii0916ab53mha3", + "img": "https://media.graphcms.com/gD4AsHyPTh2GSsujhDTI", + "link": "https://www.meetup.com/Machine-Learning-TO/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/gD4AsHyPTh2GSsujhDTI", + }, + "id": "cketoutno1mgo0916442pe408", + "site": "https://www.meetup.com/Machine-Learning-TO/", + "status": "PUBLISHED", + "title": "Machine Learning Torino", + }, + "status": "PUBLISHED", + "width": 75, + }, + Object { + "alt": "Vienna Deep Learning", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckev8m2w83vhg0916iodrjr2e", + "idAlt": "ckev8mrk73vnv091699lq5moy", + "img": "https://media.graphcms.com/kXtojWNYTeMFaA08LDcC", + "link": "https://www.meetup.com/Vienna-Deep-Learning-Meetup/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/kXtojWNYTeMFaA08LDcC", + }, + "id": "ckev8m2w83vhg0916iodrjr2e", + "site": "https://www.meetup.com/Vienna-Deep-Learning-Meetup/", + "status": "PUBLISHED", + "title": "Vienna Deep Learning", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "Stockholm Machine Learning Club", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckev8o6nm3w3v0a85wx3ghng7", + "idAlt": "ckev8ovg53w5l0a8531l8ifa7", + "img": "https://media.graphcms.com/KJd0M31TyW6ulCPGlJDw", + "link": "https://www.meetup.com/meetup-group-GwcrPppu/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/KJd0M31TyW6ulCPGlJDw", + }, + "id": "ckev8o6nm3w3v0a85wx3ghng7", + "site": "https://www.meetup.com/meetup-group-GwcrPppu/", + "status": "PUBLISHED", + "title": "Stockholm Machine Learning Club", + }, + "status": "PUBLISHED", + "width": 110, + }, + Object { + "alt": "Natural Language Processing Copenhagen", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckev8rbsub38k0908fqj1hrrb", + "idAlt": "ckev92qos3whm0916otaeehej", + "img": "https://media.graphcms.com/HaRWK4DrSMefQJFSLNAh", + "link": "https://www.meetup.com/Natural-Language-Processing-Copenhagen-Meetup/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/HaRWK4DrSMefQJFSLNAh", + }, + "id": "ckev8rbsub38k0908fqj1hrrb", + "site": "https://www.meetup.com/Natural-Language-Processing-Copenhagen-Meetup/", + "status": "PUBLISHED", + "title": "Natural Language Processing Copenhagen", + }, + "status": "PUBLISHED", + "width": 60, + }, + Object { + "alt": "ai-fyi", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckevi25a0buv209082b9xxm15", + "idAlt": "ckevi2t5j4gbf0916d0v40vu3", + "img": "https://media.graphcms.com/0LvCmZ33R7KfbkPP6cFO", + "link": "http://ai-fyi.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/0LvCmZ33R7KfbkPP6cFO", + }, + "id": "ckevi25a0buv209082b9xxm15", + "site": "http://ai-fyi.com/", + "status": "PUBLISHED", + "title": "ai-fyi", + }, + "status": "PUBLISHED", + "width": 80, + }, + Object { + "alt": "BCN", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckf27llhl523j0b77cqt83pbp", + "idAlt": "ckf27mab44z3q0976m1v6clpq", + "img": "https://media.graphcms.com/kL4aNGQKS9CxFhVeqxwh", + "link": "https://www.meetup.com/Bcn-ai/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/kL4aNGQKS9CxFhVeqxwh", + }, + "id": "ckf27llhl523j0b77cqt83pbp", + "site": "https://www.meetup.com/Bcn-ai/", + "status": "PUBLISHED", + "title": "BCN", + }, + "status": "PUBLISHED", + "width": 90, + }, + Object { + "alt": "tribeofai", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckf3rr1rpdist0970d8wfeww5", + "idAlt": "ckf3rrmv3diww09700jxxcsbk", + "img": "https://media.graphcms.com/mzB2eHcnQQOWf40cVRxZ", + "link": "https://www.tribeofai.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/mzB2eHcnQQOWf40cVRxZ", + }, + "id": "ckf3rr1rpdist0970d8wfeww5", + "site": "https://www.tribeofai.com/", + "status": "PUBLISHED", + "title": "tribeofai", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "lithuania", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckf3rtvd113fd09119ov75bqu", + "idAlt": "ckf3ruf8z8tqa0b77gu86gztn", + "img": "https://media.graphcms.com/YqSbXITRVCsiXXONvaw1", + "link": "https://lithuania.ai/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/YqSbXITRVCsiXXONvaw1", + }, + "id": "ckf3rtvd113fd09119ov75bqu", + "site": "https://lithuania.ai/", + "status": "PUBLISHED", + "title": "lithuania", + }, + "status": "PUBLISHED", + "width": 150, + }, + Object { + "alt": "Riga AI, Machine Learning and Bots", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckf3rvz0g13nu0911bj9xcy57", + "idAlt": "ckf3rwj4xdjjk0970g5lorsby", + "img": "https://media.graphcms.com/XoHWAuJUS7CdL1J8YcSw", + "link": "https://www.meetup.com/Riga-AI-Machine-Learning-and-Bots/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/XoHWAuJUS7CdL1J8YcSw", + }, + "id": "ckf3rvz0g13nu0911bj9xcy57", + "site": "https://www.meetup.com/Riga-AI-Machine-Learning-and-Bots/", + "status": "PUBLISHED", + "title": "Riga AI, Machine Learning and Bots", + }, + "status": "PUBLISHED", + "width": 80, + }, + Object { + "alt": "Data Science Portugal", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckf7yoowz6fse0911gghz4dt7", + "idAlt": "ckf7yphjimuep0970g5f73lwv", + "img": "https://media.graphcms.com/IFRYSOhNRPX0HnAgQaQC", + "link": "https://www.meetup.com/datascienceportugal/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/IFRYSOhNRPX0HnAgQaQC", + }, + "id": "ckf7yoowz6fse0911gghz4dt7", + "site": "https://www.meetup.com/datascienceportugal/", + "status": "PUBLISHED", + "title": "Data Science Portugal", + }, + "status": "PUBLISHED", + "width": 80, + }, + Object { + "alt": "PyData Cyprus", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckfpjlp76w9bm0970uf3wm4la", + "idAlt": "ckfpjmt6d64ch0b773ndioxff", + "img": "https://media.graphcms.com/C9C7gDmvSxiCUr5ygp1G", + "link": "https://www.meetup.com/PyData-Cyprus/", + "order": null, + "sponsor": Object { + "avatar": null, + "id": "ckfpjlp76w9bm0970uf3wm4la", + "site": "https://www.meetup.com/PyData-Cyprus/", + "status": "PUBLISHED", + "title": "PyData Cyprus", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "bigdatarepublic", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckfsn3viu6pg70970lmgxvcb7", + "idAlt": "ckfsn4h0kdj530b77cey4s04z", + "img": "https://media.graphcms.com/p1oWGvIjRIKkAIksSGAf", + "link": "https://www.bigdatarepublic.nl/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/p1oWGvIjRIKkAIksSGAf", + }, + "id": "ckfsn3viu6pg70970lmgxvcb7", + "site": "https://www.bigdatarepublic.nl/", + "status": "PUBLISHED", + "title": "bigdatarepublic", + }, + "status": "PUBLISHED", + "width": 90, + }, + Object { + "alt": "nextgrid.ai", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckfwv303uie710970lap9mb86", + "idAlt": "ckfwv4bq7dgzw0911gh9ltnao", + "img": "https://media.graphcms.com/ORZPzEkzQV2kOyvLMpes", + "link": "https://nextgrid.ai/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/ORZPzEkzQV2kOyvLMpes", + }, + "id": "ckfwv303uie710970lap9mb86", + "site": "https://nextgrid.ai/", + "status": "PUBLISHED", + "title": "nextgrid.ai", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "Spain AI", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckg7t5vdcygur09115npt140l", + "idAlt": "ckg7t6hwdygvr09113cqny1hg", + "img": "https://media.graphcms.com/8OxSQhSyqzDRMsBdZw1F", + "link": "https://www.spain-ai.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/8OxSQhSyqzDRMsBdZw1F", + }, + "id": "ckg7t5vdcygur09115npt140l", + "site": "https://www.spain-ai.com/", + "status": "PUBLISHED", + "title": "Spain AI", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "viennadatasciencegroup", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckgi0y24yk27w0b77ovl40vzv", + "idAlt": "ckgi0yk3lk28v0b77rszutisr", + "img": "https://media.graphcms.com/ac3TqceZT5y1pmBgfwui", + "link": "https://viennadatasciencegroup.at/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/ac3TqceZT5y1pmBgfwui", + }, + "id": "ckgi0y24yk27w0b77ovl40vzv", + "site": "https://viennadatasciencegroup.at/", + "status": "PUBLISHED", + "title": "viennadatasciencegroup", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "PyLadies Amsterdam", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckgi10npqk2e40b776crchapd", + "idAlt": "ckgi11b8scg390911wml63mfc", + "img": "https://media.graphcms.com/grv1f138QIKPZ5RT7oXx", + "link": "https://amsterdam.pyladies.com/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/grv1f138QIKPZ5RT7oXx", + }, + "id": "ckgi10npqk2e40b776crchapd", + "site": "https://amsterdam.pyladies.com/", + "status": "PUBLISHED", + "title": "PyLadies Amsterdam", + }, + "status": "PUBLISHED", + "width": 100, + }, + Object { + "alt": "Python Madrid", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckgky7227ae2q0970e2g84oq0", + "idAlt": "ckgky7q3oae5g09700sfsdfjy", + "img": "https://media.graphcms.com/1n1dYpLT2FLrmciriJqA", + "link": "https://www.meetup.com/python-madrid/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/1n1dYpLT2FLrmciriJqA", + }, + "id": "ckgky7227ae2q0970e2g84oq0", + "site": "https://www.meetup.com/python-madrid/", + "status": "PUBLISHED", + "title": "Python Madrid", + }, + "status": "PUBLISHED", + "width": 150, + }, + Object { + "alt": "prg.ai", + "category": "Partner", + "contentType": "f188bcf25c8e419d9f8d10b0926dd825", + "contentTypeAlt": "c52cf3fb6f1c41588ea7fc77a092f419", + "id": "ckh0byhqo4rqr0911bvmx4q23", + "idAlt": "ckh0bz62vcin80b77utksp11p", + "img": "https://media.graphcms.com/nTwyV06CTFibF4nBQk4c", + "link": "https://prg.ai/en/", + "order": null, + "sponsor": Object { + "avatar": Object { + "url": "https://media.graphcms.com/nTwyV06CTFibF4nBQk4c", + }, + "id": "ckh0byhqo4rqr0911bvmx4q23", + "site": "https://prg.ai/en/", + "status": "PUBLISHED", + "title": "prg.ai", + }, + "status": "PUBLISHED", + "width": 130, + }, + ], + "mod": "logos_xs sponsors-block_xs", + "title": "Partners", + }, +] +`; diff --git a/tests/mlconf/__snapshots__/talks.test.js.snap b/tests/mlconf/__snapshots__/talks.test.js.snap new file mode 100644 index 0000000..698d7c0 --- /dev/null +++ b/tests/mlconf/__snapshots__/talks.test.js.snap @@ -0,0 +1,261 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`RS should be correct talks data 1`] = ` +Array [ + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "In this talk I'll start by introducing the recent breakthroughs in NLP that resulted from the combination of Transfer Learning schemes and Transformer architectures. The second part of the talk will be dedicated to an introduction of the open-source tools released by HuggingFace, in particular our Transformers, Tokenizers and Datasets libraries and our models.", + "from": "HuggingFace, Netherlands", + "id": "ckf2f47y05p9o0976kps2eki1", + "isLightning": null, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Thomas Wolf", + "place": "HuggingFace, Netherlands", + "slug": "an-introduction-to-transfer-learning-in-nlp-and-hugging-face", + "speaker": "Thomas Wolf", + "speakerSlug": "thomas-wolf", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "In this talk I'll start by introducing the recent breakthroughs in NLP that resulted from the combination of Transfer Learning schemes and Transformer architectures. The second part of the talk will be dedicated to an introduction of the open-source tools released by HuggingFace, in particular our Transformers, Tokenizers and Datasets libraries and our models.
+", + "time": "16:15", + "title": "An Introduction to Transfer Learning in NLP and HuggingFace", + "track": "Talks & Q&A", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Discover how to embrace machine learning in JavaScript using TensorFlow.js in the browser and beyond in this speedy talk. Get inspired through a whole bunch of creative prototypes that push the boundaries of what is possible in the modern web browser (things have come a long way) and then take your own first steps with machine learning in minutes. By the end of the talk everyone will understand how to recognize an object of their choice which could then be used in any creative way you can imagine. Familiarity with JavaScript is assumed, but no background in machine learning is required. Come take your first steps with TensorFlow.js!", + "from": "Google, USA", + "id": "ckf2f7tc598xt0970jkc9plin", + "isLightning": null, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Jason Mayes", + "place": "Google, USA", + "slug": "tensor-flow-js-101-ml-in-the-browser-and-beyond", + "speaker": "Jason Mayes", + "speakerSlug": "jason-mayes", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Discover how to embrace machine learning in JavaScript using TensorFlow.js in the browser and beyond in this speedy talk. Get inspired through a whole bunch of creative prototypes that push the boundaries of what is possible in the modern web browser (things have come a long way) and then take your own first steps with machine learning in minutes. By the end of the talk everyone will understand how to recognize an object of their choice which could then be used in any creative way you can imagine. Familiarity with JavaScript is assumed, but no background in machine learning is required. Come take your first steps with TensorFlow.js!
+", + "time": "20:10", + "title": "TensorFlow.js 101: ML in the Browser and Beyond", + "track": "Talks & Q&A", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Often it's thought that to be able to succeed with Machine Learning and Deep Learning, as an onramp to Artificial Intelligence, that you need a deep background in mathematics and calculus, as well as some form of PhD. But you don't. With modern APIs like TensorFlow, much of the complexity is abstracted away in pre-built libraries, so you can focus on learning. In this session, Laurence Moroney, from Google, will explain how he has used this to create courses with hundreds of thousands of students, and from there, how a certificate program was created. ", + "from": "Google, USA", + "id": "ckf6n6akj4y0m09112764j2o3", + "isLightning": null, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Laurence Moroney", + "place": "Google, USA", + "slug": "teaching-ml-and-ai-to-coders", + "speaker": "Laurence Moroney", + "speakerSlug": "laurence-moroney", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Often it's thought that to be able to succeed with Machine Learning and Deep Learning, as an onramp to Artificial Intelligence, that you need a deep background in mathematics and calculus, as well as some form of PhD. But you don't. With modern APIs like TensorFlow, much of the complexity is abstracted away in pre-built libraries, so you can focus on learning. In this session, Laurence Moroney, from Google, will explain how he has used this to create courses with hundreds of thousands of students, and from there, how a certificate program was created.
+", + "time": "18:55", + "title": "Teaching ML and AI to Coders", + "track": "Talks & Q&A", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "As an AI scientist and a developer, I have been engaged with AI-applications for many years especially focusing on object detection and recognition purposes. I love thinking that we can get creative in designing neural networks. We can train them supervised, unsupervised, semi or self-supervised, and this gives possibilities to mimic the human brain in a narrow domain. However, in vision applications, there are still things where AI is lacking and will be lacking without computer vision knowledge. Computer vision has been solving detection and recognition problems for many years. However, in the last decade, it seems like AI is seen as a replacement of computer vision. AI can find the optimal model for a specific type of data set and it might achieve generalization better. AI can be designed in a way that it can learn life-long which also brings possibilities of creating models which serve better when they are used longer. However, an AI vision system will be lacking capabilities without computer vision knowledge. First of all, it will require a very big data set to train the model what can be expensive or even not possible. On the other hand, computer vision systems can be modeled only by using a hand-drawn template image. Training AI models also requires GPUs. Nevertheless, I do not want to encourage everyone to train AI models for solving any simple problem which could be solved easily by computer vision. Last but not least, knowing computer vision, machine learning and especially feature engineering methods helps to design hybrid models that might be more robust to adversarial attacks or changing conditions. + +In this lecture, I will briefly introduce how computer vision (especially using the OpenCV library) and machine learning can be used for creating detection and recognition models. Some experience with python, jupyter notebook and some machine learning background would be useful to get more benefits from this lecture. ", + "from": "Jonkoping University & the Owner of Create4D, Netherlands", + "id": "ckfpbwio7vfxj09700mq7yoai", + "isLightning": null, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Beril Sirmacek", + "place": "Jonkoping University & the Owner of Create4D, Netherlands", + "slug": "computer-vision-using-open-cv", + "speaker": "Beril Sirmacek", + "speakerSlug": "beril-sirmacek", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "As an AI scientist and a developer, I have been engaged with AI-applications for many years especially focusing on object detection and recognition purposes. I love thinking that we can get creative in designing neural networks. We can train them supervised, unsupervised, semi or self-supervised, and this gives possibilities to mimic the human brain in a narrow domain. However, in vision applications, there are still things where AI is lacking and will be lacking without computer vision knowledge. Computer vision has been solving detection and recognition problems for many years. However, in the last decade, it seems like AI is seen as a replacement of computer vision. AI can find the optimal model for a specific type of data set and it might achieve generalization better. AI can be designed in a way that it can learn life-long which also brings possibilities of creating models which serve better when they are used longer. However, an AI vision system will be lacking capabilities without computer vision knowledge. First of all, it will require a very big data set to train the model what can be expensive or even not possible. On the other hand, computer vision systems can be modeled only by using a hand-drawn template image. Training AI models also requires GPUs. Nevertheless, I do not want to encourage everyone to train AI models for solving any simple problem which could be solved easily by computer vision. Last but not least, knowing computer vision, machine learning and especially feature engineering methods helps to design hybrid models that might be more robust to adversarial attacks or changing conditions.
+In this lecture, I will briefly introduce how computer vision (especially using the OpenCV library) and machine learning can be used for creating detection and recognition models. Some experience with python, jupyter notebook and some machine learning background would be useful to get more benefits from this lecture.
+", + "time": "16:50", + "title": "Computer Vision Using OpenCV", + "track": "Talks & Q&A", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Elegant and graceful mathematics make a cool textbook cover, but the inside of those same books are usually dry cold engineering. It's important to mix the theory of innovation with the excitement of practicality, and through the composition of these elements we find innovation. In this talk, I'll show you from an engineering perspective how to explore, balance, and ultimately bottle machined success.", + "from": "iFit, USA", + "id": "ckfxqoqrdkmjw09708dz0596j", + "isLightning": null, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Robert Plummer", + "place": "iFit, USA", + "slug": "the-evolution-revolution", + "speaker": "Robert Plummer", + "speakerSlug": "robert-plummer", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Elegant and graceful mathematics make a cool textbook cover, but the inside of those same books are usually dry cold engineering. It's important to mix the theory of innovation with the excitement of practicality, and through the composition of these elements we find innovation. In this talk, I'll show you from an engineering perspective how to explore, balance, and ultimately bottle machined success.
+", + "time": "17:35", + "title": "The Evolution Revolution", + "track": "Talks & Q&A", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "This talk will be a walkthrough of utilizing machine learning to replace a rule based system for consumers. We will discuss when is it okay to use ML, how to build these models with intelligent data, evaluate these offline and finally how to validate this evaluation to land these models in production systems. Furthermore, we will illustrate various self-learning/interactive-learning strategies that can be used for production systems to automate how models teach themselves to become better.", + "from": "Facebook, USA", + "id": "ckggsm0ozab2b0911y7r5r27e", + "isLightning": null, + "isoDate": "2020-11-05T00:00:00.000Z", + "label": "November 5", + "name": "Shivani Poddar", + "place": "Facebook, USA", + "slug": "how-to-machine-learn-ify-any-product", + "speaker": "Shivani Poddar", + "speakerSlug": "shivani-poddar", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "This talk will be a walkthrough of utilizing machine learning to replace a rule based system for consumers. We will discuss when is it okay to use ML, how to build these models with intelligent data, evaluate these offline and finally how to validate this evaluation to land these models in production systems. Furthermore, we will illustrate various self-learning/interactive-learning strategies that can be used for production systems to automate how models teach themselves to become better.
+", + "time": "18:10", + "title": "How to Machine Learn-ify any Product", + "track": "Talks & Q&A", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "DeepPavlov Agent is a framework designed to facilitate the development of scalable and production-ready multi-skill virtual assistants, complex dialogue systems, and chatbots. Key features of DeepPavlov Agent include (1) scalability and reliability in the high load environment due to micro-service architecture; (2) ease of adding and orchestrating conversational skills; (3) shared dialogue state memory and NLP annotations accessible to all skills. + +DeepPavlov DREAM is a socialbot platform with a modular design with the main components such as annotators, skills and selectors run as independent services. These components are configured and deployed using Docker containers. It allows developers to focus on application development instead of focusing on the intrinsic details of the manual low-level infrastructure configuration.", + "from": "DeepPavlov.ai, Russia", + "id": "ckf2fb1qa99cu0970jx8silfv", + "isLightning": null, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Mikhail Burtsev", + "place": "DeepPavlov.ai, Russia", + "slug": "deep-pavlov-agent-open-source-framework-for-multiskill-conversational-ai", + "speaker": "Mikhail Burtsev", + "speakerSlug": "mikhail-burtsev", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "DeepPavlov Agent is a framework designed to facilitate the development of scalable and production-ready multi-skill virtual assistants, complex dialogue systems, and chatbots. Key features of DeepPavlov Agent include (1) scalability and reliability in the high load environment due to micro-service architecture; (2) ease of adding and orchestrating conversational skills; (3) shared dialogue state memory and NLP annotations accessible to all skills.
+DeepPavlov DREAM is a socialbot platform with a modular design with the main components such as annotators, skills and selectors run as independent services. These components are configured and deployed using Docker containers. It allows developers to focus on application development instead of focusing on the intrinsic details of the manual low-level infrastructure configuration.
+", + "time": "16:50", + "title": "DeepPavlov Agent: Open-source Framework for Multiskill Conversational AI", + "track": "Talks & Q&A", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "Data visualisation is a fundamental part of Data Science. The talk will start with a practical demonstration (using pandas, scikit-learn, and matplotlib) of how relying on summary statistics and predictions alone can leave you blind to the true nature of your datasets. I will make the point that visualisations are crucial in every step of the Data Science process and therefore that Jupyter Notebooks definitely do belong in Data Science. We will then look at how maintainability is a real challenge for Jupyter Notebooks, especially when trying to keep them under version control with git. Although there exists a plethora of code quality tools for Python scripts (flake8, black, mypy, etc.), most of them don't work on Jupyter Notebooks. To this end I will present nbQA, which allows any standard Python code quality tool to be run on a Jupyter Notebook. Finally, I will demonstrate how to use it within a workflow which lets practitioners keep the interactivity of their Jupyter Notebooks without having to sacrifice their maintainability.", + "from": "Samsung R&D Institute UK, UK", + "id": "ckfc7qzixbf9z09111iv2m4w1", + "isLightning": null, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Marco Gorelli", + "place": "Samsung R&D Institute UK, UK", + "slug": "never-have-an-unmaintainable-jupyter-notebook-again", + "speaker": "Marco Gorelli", + "speakerSlug": "marco-gorelli", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "Data visualisation is a fundamental part of Data Science. The talk will start with a practical demonstration (using pandas, scikit-learn, and matplotlib) of how relying on summary statistics and predictions alone can leave you blind to the true nature of your datasets. I will make the point that visualisations are crucial in every step of the Data Science process and therefore that Jupyter Notebooks definitely do belong in Data Science. We will then look at how maintainability is a real challenge for Jupyter Notebooks, especially when trying to keep them under version control with git. Although there exists a plethora of code quality tools for Python scripts (flake8, black, mypy, etc.), most of them don't work on Jupyter Notebooks. To this end I will present nbQA, which allows any standard Python code quality tool to be run on a Jupyter Notebook. Finally, I will demonstrate how to use it within a workflow which lets practitioners keep the interactivity of their Jupyter Notebooks without having to sacrifice their maintainability.
+", + "time": "19:00", + "title": "Never Have an Unmaintainable Jupyter Notebook Again!", + "track": "Talks & Q&A", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "TensorFlow has built a solid foundation for various machine learning applications, on top of which the Keras ecosystem can really boost the productivity of the developers in building machine learning solutions. Keras has a simple and arbitrarily flexible API for building and training models. However, we still need a lot of manual work to tune the hyperparameters. Fortunately, with Keras Tuner, we can automate the hyperparameter tuning process with minor modifications to the code for building and training the models. To further boost the productivity, we introduce AutoKeras, which fully automates the model building, training, and hyperparameter tuning process. It dramatically reduces the amount of prior knowledge needed of using machine learning for some common tasks. All you need is to define the task and to provide the training data.", + "from": "Keras Team at Google, USA", + "id": "ckfc805csw0od0970shkkjn5p", + "isLightning": null, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Haifeng Jin", + "place": "Keras Team at Google, USA", + "slug": "boost-productivity-with-keras-ecosystem", + "speaker": "Haifeng Jin", + "speakerSlug": "haifeng-jin", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "TensorFlow has built a solid foundation for various machine learning applications, on top of which the Keras ecosystem can really boost the productivity of the developers in building machine learning solutions. Keras has a simple and arbitrarily flexible API for building and training models. However, we still need a lot of manual work to tune the hyperparameters. Fortunately, with Keras Tuner, we can automate the hyperparameter tuning process with minor modifications to the code for building and training the models. To further boost the productivity, we introduce AutoKeras, which fully automates the model building, training, and hyperparameter tuning process. It dramatically reduces the amount of prior knowledge needed of using machine learning for some common tasks. All you need is to define the task and to provide the training data.
+", + "time": "16:15", + "title": "Boost Productivity with Keras Ecosystem", + "track": "Talks & Q&A", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "In many real-world applications, data quality and curation and domain knowledge play a much larger role in building successful models than coming up with complex processing techniques and tweaking hyper-parameters. +Therefore, a machine learning toolbox should enable users to understand both data and model, and not burden the practitioner with picking preprocessing steps and hyperparameters. +The dabl library is a first step in this direction. It provides automatic visualization routines and model inspection capabilities while automating away model selection. + +dabl contains plot types not available in standard python libraries so far, as well as novel algorithms for picking interesting visualizations. +Heuristics are used to select appropriate preprocessing for machine learning, while state-of-the-art portfolio selection algorithms are used for efficient model and hyperparameter search. + +dabl also provides easy access to model evaluation and model inspection tools provided by scikit-learn.", + "from": "Microsoft, USA", + "id": "ckfp74z6auxpj0970lkzyyk22", + "isLightning": null, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Andreas Müller", + "place": "Microsoft, USA", + "slug": "dabl-automatic-machine-learning-with-a-human-in-the-loop", + "speaker": "Andreas Müller", + "speakerSlug": "andreas-muller", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "In many real-world applications, data quality and curation and domain knowledge play a much larger role in building successful models than coming up with complex processing techniques and tweaking hyper-parameters. +Therefore, a machine learning toolbox should enable users to understand both data and model, and not burden the practitioner with picking preprocessing steps and hyperparameters. +The dabl library is a first step in this direction. It provides automatic visualization routines and model inspection capabilities while automating away model selection.
+dabl contains plot types not available in standard python libraries so far, as well as novel algorithms for picking interesting visualizations. +Heuristics are used to select appropriate preprocessing for machine learning, while state-of-the-art portfolio selection algorithms are used for efficient model and hyperparameter search.
+dabl also provides easy access to model evaluation and model inspection tools provided by scikit-learn.
+", + "time": "19:35", + "title": "Dabl: Automatic Machine Learning with a Human in the Loop", + "track": "Talks & Q&A", + }, + Object { + "contentType": "d5d4bfeb605c41569b30d478a03bbb0e", + "description": "The domain of Natural Language Processing have seen a tremendous amount of research and innovation in the past couple of years to tackle the problem of implementing high quality machine learning and AI solutions using natural text. Text Classification is one such area that is extremely important in all sectors like finance, media, product development, etc. Building up a text classification system from scratch for every use case can be challenging in terms of cost as well as resources, considering there is a good amount of dataset to begin training with. + +Here comes the concept of transfer learning. Using some of the models that has been pre-trained on terabytes of data and fine-tuning it based on the problem at hand is the new way to efficiently implement machine learning solutions without spending months on data cleaning pipeline. + +This talk with highlight ways of implementing the newly launched BERT and fine tuning the base model to build an efficient text classifying model. Basic understanding of python is desirable.", + "from": "Indellient US Inc., USA", + "id": "ckfwamppzgh7y0970xkxr22bx", + "isLightning": null, + "isoDate": "2020-11-06T00:00:00.000Z", + "label": "November 6", + "name": "Jayeeta Putatunda", + "place": "Indellient US Inc., USA", + "slug": "power-of-transfer-learning-in-nlp-build-a-text-classification-model-using-bert", + "speaker": "Jayeeta Putatunda", + "speakerSlug": "jayeeta-putatunda", + "status": "PUBLISHED", + "tag": "talk--undefined", + "text": "The domain of Natural Language Processing have seen a tremendous amount of research and innovation in the past couple of years to tackle the problem of implementing high quality machine learning and AI solutions using natural text. Text Classification is one such area that is extremely important in all sectors like finance, media, product development, etc. Building up a text classification system from scratch for every use case can be challenging in terms of cost as well as resources, considering there is a good amount of dataset to begin training with.
+Here comes the concept of transfer learning. Using some of the models that has been pre-trained on terabytes of data and fine-tuning it based on the problem at hand is the new way to efficiently implement machine learning solutions without spending months on data cleaning pipeline.
+This talk with highlight ways of implementing the newly launched BERT and fine tuning the base model to build an efficient text classifying model. Basic understanding of python is desirable.
+", + "time": "18:15", + "title": "Power of Transfer Learning in NLP: Build a Text Classification Model Using BERT", + "track": "Talks & Q&A", + }, +] +`; diff --git a/tests/mlconf/__snapshots__/tracks.test.js.snap b/tests/mlconf/__snapshots__/tracks.test.js.snap new file mode 100644 index 0000000..70168fe --- /dev/null +++ b/tests/mlconf/__snapshots__/tracks.test.js.snap @@ -0,0 +1,7 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`RS should be correct tracks data 1`] = ` +Array [ + "Talks & Q&A", +] +`; diff --git a/tests/mlconf/__snapshots__/workshops.test.js.snap b/tests/mlconf/__snapshots__/workshops.test.js.snap new file mode 100644 index 0000000..32395ad --- /dev/null +++ b/tests/mlconf/__snapshots__/workshops.test.js.snap @@ -0,0 +1,648 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`RS should be correct workshops data 1`] = ` +Array [ + Object { + "additionalInfo": null, + "code": "3h-wsh", + "content": Array [ + "Introduction to AI in the Microsoft Azure Cloud", + "Introduction to Azure Machine Learning", + "Training Titanic predictive model using Automatic ML", + "Using Jupyter Notebooks in Azure ML", + "Using Visual Studio Code to schedule and track experiments", + "Hyperparameter optimization and HyperDrive", + "Training GANs on Azure ML to produce Artificial Art", + "Using DeepPavlov NLP to answer COVID-related questions on CORD dataset", + ], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-11-04T00:00:00.000Z", + "dateString": "For full-access tickets holders only", + "description": "This workshop will be both a gentle introduction to Machine Learning, and a practical exercise of using the cloud to train simple and not-so-simple machine learning models. We will start with using Automatic ML to train the model to predict survival on Titanic, and then move to more complex machine learning tasks such as hyperparameter optimization and scheduling series of experiments on the compute cluster. Finally, I will show how Azure Machine Learning can be used to generate artificial paintings using Generative Adversarial Networks, and how to train language question-answering model on COVID papers to answer COVID-related questions.
+", + "duration": null, + "finishingTime": "", + "id": "ckgkutycphblr0911yxv7crj4", + "includedToPackage": true, + "level": "Beginners and ML practitioners.", + "location": "Nov 2, 18:00-20:00 CET. The workshop will be recorded.
+", + "order": 90, + "prerequisites": "To actively take part in this workshop, you will need Microsoft Azure Account. In order not to spend time during the workshop, please register free Azure account in advance if you do not already have one (students can register student account).
+Also, you may want to install Visual Studio Code, and Azure Account and Azure ML Extensions (those are required just for one exercise).
+", + "schedule": null, + "slogan": null, + "slug": "introduction-to-machine-learning-on-the-cloud", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/pnKYOEaiTu23p56sfwHT", + }, + "bio": "Dmitry is a Microsoft veteran, working for more than 13 years. He started as a Technical Evangelist, and in this role presented on numerous conferences, including twice being on stage with Steve Ballmer. He then worked for 2 years as Senior Software Engineer, helping big European companies to start pilot digital transformation projects based on AI and ML. As Cloud Developer Advocate, Dmitry focuses on creating educational content and working with academic and research institutions. He is also an Associate Professor at MIPT, HSE and MAI in Moscow, a big fan of functional programming and F#, and a maintainer/primary developer of [mPyPl](http://soshnikov.com/mPyPl/) library. In his spare time, Dmitry explores Science Art and Technological Magic, as well as performs Chinese tea ceremonies. He can be reached at [soshnikov.com](http://soshnikov.com).", + "company": "Cloud Developer Advocate @ Microsoft", + "country": "Russia", + "githubUrl": null, + "id": "ckcq6n36xxgat0b97lxet1gxq", + "idMain": "ckcq6n36xxgat0b97lxet1gxq", + "info": Array [], + "mediumUrl": null, + "name": "Dmitry Soshnikov", + "ownSite": "https://soshnikov.com/", + "talks": Array [], + "twitterUrl": null, + "workshops": Array [ + Object { + "slug": "introduction-to-machine-learning-on-the-cloud", + "title": "Introduction to Machine Learning on the Cloud", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Introduction to Machine Learning on the Cloud", + "toc": null, + "trainer": "Dmitry Soshnikov", + "trainers": Array [], + "trainersTitle": "Dmitry Soshnikov", + }, + Object { + "additionalInfo": null, + "code": "3h-wsh-DeepPavlov", + "content": Array [], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-11-04T00:00:00.000Z", + "dateString": "For full-access tickets holders only", + "description": "Simple chatbots can be built with a number of simple rules, but their UX will be very narrow and limited. Building complex AI assistants, in contrast, requires a lot of effort. To make your users happy, you have to master many things at once: rules, intents, finite state machines, chit-chat tech, dialog flow management, and many other things. It's a job for an entire team. Fortunately, you don't have to hire it. Instead, you can rely upon your trusty software from DeepPavlov.ai. With it, you can offload the complexity of managing the entire infrastructure to DeepPavlov Agent – an open-source Conversational AI orchestrator. Next, you can pick state-of-the-art NLP components from DeepPavlov Library to decode human emotions and understand their intents. Finally, you can pick some of the available skills from DeepPavlov Dream to avoid reinventing the wheel like chit-chat.
+In this workshop, you'll be guided through the entire process, from an overview of the platform to building a sample AI assistant that you'll be able to re-use later in your own work.
+By the end of this workshop you'll be able to use the provided components from the DeepPavlov family of projects to build simple AI assistant:
+Nov 3, 18:00-21:00 CET. The workshop will be recorded.
+", + "order": 100, + "prerequisites": null, + "schedule": null, + "slogan": null, + "slug": "ai-assistant-with-deep-pavlov", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/bKRipg63QmCJZ5TbE17t", + }, + "bio": "Mikhail Burtsev is a head of Neural Networks and Deep Learning Laboratory at Moscow Institute of Physics and Technology. He is also a founder and leader of open-source conversational AI framework [DeepPavlov](http://deeppavlov.ai/). Mikhail had proposed and co-organize a series of academic [Conversational AI Challenges](http://convai.io/) (including NIPS 2017, NeurIPS 2018, EMNLP 2020). + +His research interests are in the fields of Natural Language Processing, Machine Learning, Artificial Intelligence and Complex Systems. Mikhail Burtsev has published more than 20 technical papers including – Nature, Artificial Life, Lecture Notes in Computer Science series, and other peer-reviewed venues. ", + "company": "DeepPavlov.ai", + "country": "Russia", + "githubUrl": null, + "id": "ckejts5zpox7v0a854aku8ol5", + "idMain": "ckejts5zpox7v0a854aku8ol5", + "info": Array [ + Object { + "id": "ckejtsyxbox930a856pur09jb", + "idAlt": "ckejtsyxbox930a856pur09jb", + "isNightSpeaker": null, + "label": "November 6", + "order": 45, + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/bKRipg63QmCJZ5TbE17t", + }, + "bio": "Mikhail Burtsev is a head of Neural Networks and Deep Learning Laboratory at Moscow Institute of Physics and Technology. He is also a founder and leader of open-source conversational AI framework [DeepPavlov](http://deeppavlov.ai/). Mikhail had proposed and co-organize a series of academic [Conversational AI Challenges](http://convai.io/) (including NIPS 2017, NeurIPS 2018, EMNLP 2020). + +His research interests are in the fields of Natural Language Processing, Machine Learning, Artificial Intelligence and Complex Systems. Mikhail Burtsev has published more than 20 technical papers including – Nature, Artificial Life, Lecture Notes in Computer Science series, and other peer-reviewed venues. ", + "company": "DeepPavlov.ai", + "country": "Russia", + "githubUrl": null, + "id": "ckejts5zpox7v0a854aku8ol5", + "idMain": "ckejts5zpox7v0a854aku8ol5", + "mediumUrl": null, + "name": "Mikhail Burtsev", + "ownSite": null, + "twitterUrl": "https://twitter.com/mikhailburtsev", + }, + "status": "PUBLISHED", + }, + ], + "mediumUrl": null, + "name": "Mikhail Burtsev", + "ownSite": null, + "talks": Array [ + Object { + "description": "DeepPavlov Agent is a framework designed to facilitate the development of scalable and production-ready multi-skill virtual assistants, complex dialogue systems, and chatbots. Key features of DeepPavlov Agent include (1) scalability and reliability in the high load environment due to micro-service architecture; (2) ease of adding and orchestrating conversational skills; (3) shared dialogue state memory and NLP annotations accessible to all skills. + +DeepPavlov DREAM is a socialbot platform with a modular design with the main components such as annotators, skills and selectors run as independent services. These components are configured and deployed using Docker containers. It allows developers to focus on application development instead of focusing on the intrinsic details of the manual low-level infrastructure configuration.", + "isLightning": null, + "timeString": "16:50", + "title": "DeepPavlov Agent: Open-source Framework for Multiskill Conversational AI", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + "twitterUrl": "https://twitter.com/mikhailburtsev", + "workshops": Array [ + Object { + "title": "AI Assistant with DeepPavlov", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "AI Assistant with DeepPavlov", + "toc": null, + "trainer": "Mikhail Burtsev", + "trainers": Array [], + "trainersTitle": "Mikhail Burtsev", + }, + Object { + "additionalInfo": null, + "code": "3h-wsh", + "content": Array [ + "1st part. An introduction to audio fingerprinting–one of the first algorithms developed in the industry and the most successful commercially until today was developed by researchers from Shazam. Their solution is to identify the strongest peaks in the spectrogram and to store the relative signatures of these peaks.", + "2nd part. Shazam allows you to send a recording made on your phone of nearly any song–not covers, and it will tell you the song’s name, and other data about that song. We will describe the process of creating an audio fingerprint from a media file, how to store it, and search for matches.", + ], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-11-04T00:00:00.000Z", + "dateString": "For full-access tickets holders only", + "description": "An acoustic fingerprint is a condensed digital summary, a fingerprint, deterministically generated from an audio signal, that can be used to identify an audio sample or quickly locate similar items in an audio database. Using open-source python libraries, we will describe the process of creating an audio fingerprint from a media file, how to store it, and search for matches.
+", + "duration": null, + "finishingTime": "", + "id": "ckgt7fihs2kht0b77w28gtnro", + "includedToPackage": true, + "level": null, + "location": "Nov 4, 17:00-18:30 CET. The workshop will be recorded.
+", + "order": 105, + "prerequisites": null, + "schedule": null, + "slogan": null, + "slug": "from-shazam-to-today-s-audio-fingerprinting-algorithms-the-theory-best-practices-and-open-source-libraries-to-experiment-with", + "speaker": Object { + "info": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "From Shazam to Today's Audio Fingerprinting Algorithms, the Theory, Best Practices, and Open Source Libraries to Experiment with", + "toc": null, + "trainer": "Argyris Argyrou & Theodors Palamas", + "trainers": Array [ + Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/JOdGEw5WQLe2jEUSeHZ6", + }, + "bio": "Argyris is the SVP of Data at Orfium.com, and a PhD candidate in Cyprus University of Technology. His research interests are NLP and Machine learning. He is the founder and lead researcher at summarly.com, and co-organizer of PyData Cyprus.", + "company": "Orfium.com", + "country": "Cyprus", + "githubUrl": null, + "id": "ckgt7phe5uv5l0911epmps679", + "idMain": "ckgt7phe5uv5l0911epmps679", + "mediumUrl": null, + "name": "Argyris Argyrou", + "ownSite": null, + "slug": "argyris-argyrou", + "talks": Array [], + "twitterUrl": "https://twitter.com/argyrisargyrou", + "workshops": Array [], + "workshopsActivity": Array [ + Object { + "slug": "from-shazam-to-today-s-audio-fingerprinting-algorithms-the-theory-best-practices-and-open-source-libraries-to-experiment-with", + "title": "From Shazam to Today's Audio Fingerprinting Algorithms, the Theory, Best Practices, and Open Source Libraries to Experiment with", + }, + ], + }, + Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/iePFXzNoTTikAM0J7Uli", + }, + "bio": "Theodoros is the Lead ML Data Scientist in Audio Recognition at Orfium.com. His research and work focuses both on deep learning and algorithmic methods to solve audio-related problems such as exact audio recognition, cover song recognition, denoising and audio classification. The process includes everything from feature design and extraction to model training and evaluation. ", + "company": "Orfium.com", + "country": "USA", + "githubUrl": null, + "id": "ckgt7s0cc2lba0b77l3u1gw5m", + "idMain": "ckgt7s0cc2lba0b77l3u1gw5m", + "mediumUrl": null, + "name": "Theodoros Palamas", + "ownSite": null, + "slug": "theodoros-palamas", + "talks": Array [], + "twitterUrl": null, + "workshops": Array [], + "workshopsActivity": Array [ + Object { + "slug": "from-shazam-to-today-s-audio-fingerprinting-algorithms-the-theory-best-practices-and-open-source-libraries-to-experiment-with", + "title": "From Shazam to Today's Audio Fingerprinting Algorithms, the Theory, Best Practices, and Open Source Libraries to Experiment with", + }, + ], + }, + ], + "trainersTitle": "Argyris Argyrou, Theodoros Palamas", + }, + Object { + "additionalInfo": null, + "code": "3h-wsh-tensorflow.js", + "content": Array [], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-11-04T00:00:00.000Z", + "dateString": "For full-access tickets holders only", + "description": "Come check out our workshop which will walk you through 3 common journeys when using TensorFlow.js. We will start with demonstrating how to use one of our pre-made models - super easy to use JS classes to get you working with ML fast. We will then look into how to retrain one of these models in minutes using in browser transfer learning via Teachable Machine and how that can be then used on your own custom website, and finally end with a hello world of writing your own model code from scratch to make a simple linear regression to predict fictional house prices based on their square footage.
+", + "duration": null, + "finishingTime": "", + "id": "ckf2dx5zr5lis0976xpv3ryg4", + "includedToPackage": true, + "level": "Great for beginners or researchers looking to get the reach and scale of web technologies so more people can use their models. No ML knowledge is assumed.", + "location": "Nov 4, 18:00-21:00 CET. The workshop will be recorded.
+", + "order": 110, + "prerequisites": "Workshop requires some working knowledge of using HTML / CSS / JS to get the most out of it. +No Machine Learning background is assumed.
+", + "schedule": null, + "slogan": null, + "slug": "hands-on-with-tensor-flow-js", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/YeF9oCpNSz6mvX7LUXtU", + }, + "bio": "Jason is a Senior Developer Advocate for TensorFlow.js at Google. + +Jason combines his knowledge of the technical and creative worlds to solve complex, strategic / technical challenges for Google's largest customers and internal teams. Developing innovative world firsts utilizing the latest technologies and hardware is a key component of his role to rapidly prototype new ideas and consult on project solutions globally. + +With a background in Computer Science at the University of Bristol, England, where he specialized in reality mining and invisible computing, Jason has been a \\"hybrid engineer\\" for over 15 years. Combining his passion for several areas including both front and back end web programming, but also design and user experience, he has worked in many sizes of companies from startups (including founding his own) to Google. ", + "company": "Google", + "country": "USA", + "githubUrl": null, + "id": "ckenytg4xv9ky0908tyf29riv", + "idMain": "ckenytg4xv9ky0908tyf29riv", + "info": Array [ + Object { + "id": "ckenyu1y8v9mp0908c63db5oz", + "idAlt": "ckenyu1y8v9mp0908c63db5oz", + "isNightSpeaker": null, + "label": "November 5", + "order": 55, + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/YeF9oCpNSz6mvX7LUXtU", + }, + "bio": "Jason is a Senior Developer Advocate for TensorFlow.js at Google. + +Jason combines his knowledge of the technical and creative worlds to solve complex, strategic / technical challenges for Google's largest customers and internal teams. Developing innovative world firsts utilizing the latest technologies and hardware is a key component of his role to rapidly prototype new ideas and consult on project solutions globally. + +With a background in Computer Science at the University of Bristol, England, where he specialized in reality mining and invisible computing, Jason has been a \\"hybrid engineer\\" for over 15 years. Combining his passion for several areas including both front and back end web programming, but also design and user experience, he has worked in many sizes of companies from startups (including founding his own) to Google. ", + "company": "Google", + "country": "USA", + "githubUrl": null, + "id": "ckenytg4xv9ky0908tyf29riv", + "idMain": "ckenytg4xv9ky0908tyf29riv", + "mediumUrl": null, + "name": "Jason Mayes", + "ownSite": "http://jasonmayes.com/", + "twitterUrl": "https://twitter.com/jason_mayes", + }, + "status": "PUBLISHED", + }, + ], + "mediumUrl": null, + "name": "Jason Mayes", + "ownSite": "http://jasonmayes.com/", + "talks": Array [ + Object { + "description": "Discover how to embrace machine learning in JavaScript using TensorFlow.js in the browser and beyond in this speedy talk. Get inspired through a whole bunch of creative prototypes that push the boundaries of what is possible in the modern web browser (things have come a long way) and then take your own first steps with machine learning in minutes. By the end of the talk everyone will understand how to recognize an object of their choice which could then be used in any creative way you can imagine. Familiarity with JavaScript is assumed, but no background in machine learning is required. Come take your first steps with TensorFlow.js!", + "isLightning": null, + "timeString": "20:10", + "title": "TensorFlow.js 101: ML in the Browser and Beyond", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + "twitterUrl": "https://twitter.com/jason_mayes", + "workshops": Array [ + Object { + "title": "Hands on with TensorFlow.js", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Hands on with TensorFlow.js", + "toc": null, + "trainer": "Jason Mayes", + "trainers": Array [], + "trainersTitle": "Jason Mayes", + }, + Object { + "additionalInfo": null, + "code": "3h-wsh", + "content": Array [ + "Part I (first hour): Seminar on how Automated Machine Learning (AutoML) can help practitioners and engineers use AI in their domains even though they lack experience with machine learning or are concerned about the black box nature of AI models. AutoML simplifies model development to a few steps, and interpretability can draw back the curtain from complex black box models.", + "Part II (2 hours): Hands-on workshop where you work in our MATLAB Online platform and build machine learning models using interactive tools. You will apply machine learning to the problem of classifying human activities based on accelerometer sensors, get familiar with the basics of deep learning, and apply transfer learning to an image processing task.", + ], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-11-04T00:00:00.000Z", + "dateString": "For full-access tickets holders only", + "description": "Are you new to Machine and Deep Learning and want to learn how to apply these techniques in your work? Building good machine learning models is difficult and time consuming – get empowered to apply AI to your domain with AutoML and tools that don’t require extensive coding experience!
+", + "duration": null, + "finishingTime": "", + "id": "ckgkk999rgn730911evn8ukjh", + "includedToPackage": true, + "level": "Great for beginners who need to familiarize themselves with the basics, but also researchers and engineers eager to learn about how advanced methods like AutoML and model interpretability will help them apply AI to their domains.", + "location": "Nov 9, 18:00-21:00 CET. The workshop will be recorded.
+", + "order": 120, + "prerequisites": "No machine learning background is assumed. No prior experience with MATLAB is expected, though casual knowledge of a high-level language will be helpful.
+To actively take part and access MATLAB Online, you will need a MathWorks account. If you do not already have one, please register by following this link.
+", + "schedule": null, + "slogan": null, + "slug": "applied-ai-with-auto-ml-and-interpretability-in-matlab", + "speaker": Object { + "info": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Applied AI with AutoML and Interpretability in MATLAB", + "toc": " +", + "trainer": "Bernhard Suhm & Louvere Walker-Hannon", + "trainers": Array [ + Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/7rZ4ptJ5QdmZ7jiilMHi", + }, + "bio": "Bernhard Suhm is the product manager for Machine Learning at MathWorks. He works closely with customer facing and development teams to address customer needs and market trends in our machine learning related products, primarily the Statistics and Machine Learning toolbox. Prior to joining MathWorks Bernhard led analyst teams and developed methods applying analytics to optimizing the delivery of customer service in call centers. He also held positions at a usability consulting company and Carnegie Mellon University. He received a PhD in Computer Science specializing in speech user interfaces from Karlsruhe University in Germany.", + "company": "MathWorks", + "country": "USA", + "githubUrl": null, + "id": "ckg29vd0aouka09115rd0kiv6", + "idMain": "ckg29vd0aouka09115rd0kiv6", + "mediumUrl": null, + "name": "Bernhard Suhm", + "ownSite": null, + "slug": "bernhard-suhm", + "talks": Array [ + Object { + "description": "Adoption of AI has been slowed by the challenges involved in obtaining performant models, which require significant expertise and effort, and the limited number of practitioners with machine learning expertise. Automated machine learning (AutoML) eliminates the routine steps in the machine learning workflow, thus empowering domain experts without machine learning background to build good initial models, and allowing experienced practitioners to focus additional manual model optimization. This talk describes the extent of automation available for the various steps and demonstrates AutoML with a classifier for human activities based on accelerometer sensor data.", + "isLightning": true, + "timeString": "19:30", + "title": "Broadening AI Adoption with AutoML", + "track": Object { + "isPrimary": true, + "name": "Talks & Q&A", + }, + }, + ], + "twitterUrl": "https://twitter.com/BernhardSuhm", + "workshops": Array [], + "workshopsActivity": Array [ + Object { + "slug": "applied-ai-with-auto-ml-and-interpretability-in-matlab", + "title": "Applied AI with AutoML and Interpretability in MATLAB", + }, + ], + }, + Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/9k2y3WBFRIKDHHdphIF5", + }, + "bio": "Louvere Walker-Hannon is a MathWorks Senior Application Engineer, who provides direction and recommendations on technical workflows for various applications. Specifically, she assists with providing guidance on the following topics image processing, computer vision, machine learning, deep learning, geospatial analysis, and data analytics when discussing technical workflows. She has a bachelor’s degree in Biomedical Engineering and a master’s degree in Geographic Information Technology with a specialization in Remote Sensing. Louvere has worked in three different engineering roles throughout her 20 year career while at MathWorks and is a STEM advocate.", + "company": "MathWorks", + "country": "USA", + "githubUrl": null, + "id": "ckglyfhmgcxlu0970wsg35chb", + "idMain": "ckglyfhmgcxlu0970wsg35chb", + "mediumUrl": null, + "name": "Louvere Walker-Hannon", + "ownSite": null, + "slug": "louvere-walker-hannon", + "talks": Array [], + "twitterUrl": null, + "workshops": Array [], + "workshopsActivity": Array [ + Object { + "slug": "applied-ai-with-auto-ml-and-interpretability-in-matlab", + "title": "Applied AI with AutoML and Interpretability in MATLAB", + }, + ], + }, + ], + "trainersTitle": "Bernhard Suhm, Louvere Walker-Hannon", + }, + Object { + "additionalInfo": null, + "code": "3h-wsh", + "content": Array [ + "AI-powered software versus traditional software", + "MLOPS and AI pipeline in a nutshell", + "ML Platform: what is this?", + "Hands-on with AI pipelines", + ], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-11-04T00:00:00.000Z", + "dateString": "For full-access tickets holders only", + "description": "Are you a Software Engineer who got tasked to deploy a machine learning or deep learning model for the first time in your life? Are you wondering what steps to take and how AI-powered software is different from traditional software? Then it is the right workshop to attend.
+The internet offers thousands of articles and free of charge courses, showing how it is easy to train and deploy a simple AI model. At the same time in reality it is difficult to integrate a real model into the current infrastructure, debug, test, deploy, and monitor it properly. In this workshop, I will guide you through this process by sharing tips, tricks, and favorite open source tools that will make your life much easier. So, at the end of the workshop, you will know where to start your deployment journey, what tools to use, and what questions to ask.
+", + "duration": null, + "finishingTime": "", + "id": "ckgm6l9jvjrf00911dydhq2pc", + "includedToPackage": true, + "level": "Great for software engineers who got tasked with AI model deployment for the first time. No ML knowledge is assumed.", + "location": "Nov 10, 18:00-20:00 CET. The workshop will be recorded.
+", + "order": 130, + "prerequisites": "To get the most out of the workshop working knowledge of Python is required. No Machine Learning background is assumed.
+", + "schedule": null, + "slogan": null, + "slug": "the-hitchhiker-s-guide-to-the-machine-learning-engineering-galaxy", + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/vDjVGpY8SxCVmfgCSCZx", + }, + "bio": "I encourage others to see different perspectives and constructively break the rules. Observe - Optimize - Learn - Repeat is my work and life motto. Next to it, I found my joy in building and optimizing end-to-end Machine Learning Systems. + +- Principal Data Solutions Engineer @ LINKIT +- Organizer (volunteer) @ PyLadies Amsterdam +- WaiACCELERATE Tech Mentor (volunteer) @ Women in AI ", + "company": "LINKIT", + "country": "Netherlands", + "githubUrl": "https://github.com/EzheZhezhe", + "id": "ckgm6titarfyw0b77oqpl2kh8", + "idMain": "ckgm6titarfyw0b77oqpl2kh8", + "info": Array [ + Object { + "id": "ckgm6u122dukb0970abulp1tx", + "idAlt": "ckgm6u122dukb0970abulp1tx", + "isNightSpeaker": null, + "label": "Workshop", + "order": null, + "speaker": Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/vDjVGpY8SxCVmfgCSCZx", + }, + "bio": "I encourage others to see different perspectives and constructively break the rules. Observe - Optimize - Learn - Repeat is my work and life motto. Next to it, I found my joy in building and optimizing end-to-end Machine Learning Systems. + +- Principal Data Solutions Engineer @ LINKIT +- Organizer (volunteer) @ PyLadies Amsterdam +- WaiACCELERATE Tech Mentor (volunteer) @ Women in AI ", + "company": "LINKIT", + "country": "Netherlands", + "githubUrl": "https://github.com/EzheZhezhe", + "id": "ckgm6titarfyw0b77oqpl2kh8", + "idMain": "ckgm6titarfyw0b77oqpl2kh8", + "mediumUrl": null, + "name": "Alyona Galyeva", + "ownSite": "https://www.linkedin.com/in/alyonagalyeva", + "twitterUrl": null, + }, + "status": "PUBLISHED", + }, + ], + "mediumUrl": null, + "name": "Alyona Galyeva", + "ownSite": "https://www.linkedin.com/in/alyonagalyeva", + "talks": Array [], + "twitterUrl": null, + "workshops": Array [ + Object { + "title": "The Hitchhiker's Guide to the Machine Learning Engineering Galaxy", + }, + ], + "workshopsActivity": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "The Hitchhiker's Guide to the Machine Learning Engineering Galaxy", + "toc": null, + "trainer": "Alyona Galyeva", + "trainers": Array [], + "trainersTitle": "Alyona Galyeva", + }, + Object { + "additionalInfo": null, + "code": "3h-wsh", + "content": Array [], + "contentType": "2ce17eb4016e4be5ae72bb0db484f3f0", + "date": "2020-11-04T00:00:00.000Z", + "dateString": "For full-access tickets holders only", + "description": "In this tutorial, we present a portion of unique industry experience in efficient data labeling via crowdsourcing shared by both leading researchers and engineers from Yandex.
+We will make an introduction to data labeling via public crowdsourcing marketplaces and will present the key components of efficient label collection. This will be followed by a practice session, where participants will choose one of the real label collection tasks, experiment with selecting settings for the labeling process, and launch their label collection project on one of the largest crowdsourcing marketplaces. The projects will be run on real crowds within the tutorial session. While the crowd performers are annotating the project set up by the attendees, we will present the major theoretical results in efficient aggregation, incremental relabeling, and dynamic pricing. We will also discuss the strengths and weaknesses as well as applicability to real-world tasks, summarizing our five year-long research and industrial expertise in crowdsourcing. Finally, participants will receive a feedback about their projects and practical advice on how to make them more efficient.
+", + "duration": null, + "finishingTime": "", + "id": "ckh08z8if4ln20911xdkyr37j", + "includedToPackage": true, + "level": "Beginners, advanced specialists, and researchers are invited to learn how to collect high quality labeled data and do it efficiently.", + "location": "Nov 11, 18:00-21:00 CET. The workshop will be recorded.
+", + "order": 140, + "prerequisites": null, + "schedule": null, + "slogan": null, + "slug": "crowdsourcing-practice-for-efficient-data-labeling", + "speaker": Object { + "info": Array [], + }, + "startingTime": null, + "status": "PUBLISHED", + "title": "Crowdsourcing Practice for Efficient Data Labeling", + "toc": null, + "trainer": "Olga Megorskaya & Alexey Drutsa & Dmitry Ustalov", + "trainers": Array [ + Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/cKd0CFeIT0elC6w0hyu4", + }, + "bio": "Olga is a head of Toloka crowdsourcing platform. She's been responsible for providing human-labeled data for all AI projects at Yandex and implementing crowd-based human-in-the-loop solutions in such areas as software testing, customer support, product localization, generation of content, etc. Olga helped Yandex to grow the number of crowd performers involved in data labeling from several dozens in 2009 up to 6.5M in 2020 and is now developing Toloka as a global infrostructure for data labelling available for all ML specialists. +She graduated from the Saint Petersburg State University as a specialist in Mathematical Methods and Modeling in Economics. Also, she was a co-author of research papers and tutorials on efficient crowdsourcing and quality control at SIGIR, CVPR, KDD, WSDM, and SIGMOD.", + "company": "Yandex.Toloka", + "country": "Russia", + "githubUrl": null, + "id": "ckh093snyccm30b778er0hfd4", + "idMain": "ckh093snyccm30b778er0hfd4", + "mediumUrl": null, + "name": "Olga Megorskaya", + "ownSite": "https://www.linkedin.com/in/omegorskaya/", + "slug": "olga-megorskaya", + "talks": Array [], + "twitterUrl": null, + "workshops": Array [], + "workshopsActivity": Array [ + Object { + "slug": "crowdsourcing-practice-for-efficient-data-labeling", + "title": "Crowdsourcing Practice for Efficient Data Labeling", + }, + ], + }, + Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/HiCzvN4SFi2tbA8J8zSW", + }, + "bio": "Alexey is responsible for data-driven decisions and the crowd platform ecosystem. His research interests are focused on Machine Learning, Data Analysis, Auction Theory; his research is published at ICML, NeurIPS, WSDM, WWW, KDD, SIGIR, CIKM, and TWEB. Alexey was a co-author of three tutorials on practical A/B testing (at KDD2018, WWW2018, andSIGIR 2019) and four hands-on tutorials on efficient crowdsourcing (at KDD 2019, WSDM 2020, SIGMOD 2020, and CVPR2020). He served as a senior PC member at WWW2019 and as a PC member at several NeurIPS, ICML, KDD, WSDM, CIKM, and WWW conferences; he was also a session chair at WWW2017. He graduated from Lomonosov Moscow State University (Faculty of Mechanics and Mathematics) in 2008 and received his PhD in Computational Mathematics from the same university in 2011.", + "company": "Yandex.Toloka", + "country": "Russia", + "githubUrl": null, + "id": "ckh0a48qrconq0970sgunic5d", + "idMain": "ckh0a48qrconq0970sgunic5d", + "mediumUrl": null, + "name": "Alexey Drutsa", + "ownSite": null, + "slug": "alexey-drutsa", + "talks": Array [], + "twitterUrl": null, + "workshops": Array [], + "workshopsActivity": Array [ + Object { + "slug": "crowdsourcing-practice-for-efficient-data-labeling", + "title": "Crowdsourcing Practice for Efficient Data Labeling", + }, + ], + }, + Object { + "avatar": Object { + "url": "https://media.graphcms.com/output=format:jpg/resize=fit:crop,height:500,width:500/ZOvduo5TcCK6Yo5KGZsP", + }, + "bio": "Dr. Dmitry Ustalov is responsible for crowd activity analysis, investigation of suspected fraud, and product metrics at Yandex.Toloka. His research interests are focused on Crowdsourcing and Natural Language Processing. His studies are published at such premier venues as COLI, ACL, EACL, and EMNLP; he serves as a reviewer for COLI, SWJ, ACL, EMNLP, COLING, ISWC, *SEM, EKAW, and other publications. Dmitry has organized the Crowd Science workshop at NeurIPS 2020 as well as the hands-on crowdsourcing tutorials at SIGMOD/PODS '20 and WSDM '20. Before joining Yandex, he received his Kandidat Nauk (PhD) degree in 2018 from the South Ural State University (Russia) and was a post-doctoral research fellow at the University of Mannheim (Germany).", + "company": "Yandex.Toloka", + "country": "Russia", + "githubUrl": "https://github.com/dustalov", + "id": "ckh0a6esy4n9u09111fgkj8js", + "idMain": "ckh0a6esy4n9u09111fgkj8js", + "mediumUrl": null, + "name": "Dmitry Ustalov", + "ownSite": null, + "slug": "dmitry-ustalov", + "talks": Array [], + "twitterUrl": null, + "workshops": Array [], + "workshopsActivity": Array [ + Object { + "slug": "crowdsourcing-practice-for-efficient-data-labeling", + "title": "Crowdsourcing Practice for Efficient Data Labeling", + }, + ], + }, + ], + "trainersTitle": "Olga Megorskaya, Alexey Drutsa, Dmitry Ustalov", + }, +] +`; diff --git a/tests/mlconf/conference.test.js b/tests/mlconf/conference.test.js new file mode 100644 index 0000000..ba037f6 --- /dev/null +++ b/tests/mlconf/conference.test.js @@ -0,0 +1,13 @@ +import { getSettings } from '../../develop/conference-settings'; +import { getContent } from '../../src'; +import { createReport } from '../../utils/content-report'; + +describe('RS', () => { + const settings = getSettings(); + + it('should be correct conference data', async () => { + const content = await getContent(settings.mlconf); + const report = createReport(content); + expect(report.conference).toMatchSnapshot(); + }); +}); diff --git a/tests/mlconf/otherContent.test.js b/tests/mlconf/otherContent.test.js new file mode 100644 index 0000000..20220b2 --- /dev/null +++ b/tests/mlconf/otherContent.test.js @@ -0,0 +1,13 @@ +import { getSettings } from '../../develop/conference-settings'; +import { getContent } from '../../src'; +import { createReport } from '../../utils/content-report'; + +describe('RS', () => { + const settings = getSettings(); + + it('should be correct otherContent data', async () => { + const content = await getContent(settings.mlconf); + const report = createReport(content); + expect(report.otherContent).toMatchSnapshot(); + }); +}); diff --git a/tests/mlconf/pages.test.js b/tests/mlconf/pages.test.js new file mode 100644 index 0000000..24690d9 --- /dev/null +++ b/tests/mlconf/pages.test.js @@ -0,0 +1,13 @@ +import { getSettings } from '../../develop/conference-settings'; +import { getContent } from '../../src'; +import { createReport } from '../../utils/content-report'; + +describe('RS', () => { + const settings = getSettings(); + + it('should be correct pages data', async () => { + const content = await getContent(settings.mlconf); + const report = createReport(content); + expect(report.pages).toMatchSnapshot(); + }); +}); diff --git a/tests/mlconf/schedule.test.js b/tests/mlconf/schedule.test.js new file mode 100644 index 0000000..63cee36 --- /dev/null +++ b/tests/mlconf/schedule.test.js @@ -0,0 +1,13 @@ +import { getSettings } from '../../develop/conference-settings'; +import { getContent } from '../../src'; +import { createReport } from '../../utils/content-report'; + +describe('RS', () => { + const settings = getSettings(); + + it('should be correct schedule data', async () => { + const content = await getContent(settings.mlconf); + const report = createReport(content); + expect(report.schedule).toMatchSnapshot(); + }); +}); diff --git a/tests/mlconf/speakers.test.js b/tests/mlconf/speakers.test.js new file mode 100644 index 0000000..0179329 --- /dev/null +++ b/tests/mlconf/speakers.test.js @@ -0,0 +1,13 @@ +import { getSettings } from '../../develop/conference-settings'; +import { getContent } from '../../src'; +import { createReport } from '../../utils/content-report'; + +describe('RS', () => { + const settings = getSettings(); + + it('should be correct speakers data', async () => { + const content = await getContent(settings.mlconf); + const report = createReport(content); + expect(report.speakers).toMatchSnapshot(); + }); +}); diff --git a/tests/mlconf/sponsors.test.js b/tests/mlconf/sponsors.test.js new file mode 100644 index 0000000..210742b --- /dev/null +++ b/tests/mlconf/sponsors.test.js @@ -0,0 +1,13 @@ +import { getSettings } from '../../develop/conference-settings'; +import { getContent } from '../../src'; +import { createReport } from '../../utils/content-report'; + +describe('RS', () => { + const settings = getSettings(); + + it('should be correct sponsors data', async () => { + const content = await getContent(settings.mlconf); + const report = createReport(content); + expect(report.sponsors).toMatchSnapshot(); + }); +}); diff --git a/tests/mlconf/talks.test.js b/tests/mlconf/talks.test.js new file mode 100644 index 0000000..03ab28e --- /dev/null +++ b/tests/mlconf/talks.test.js @@ -0,0 +1,13 @@ +import { getSettings } from '../../develop/conference-settings'; +import { getContent } from '../../src'; +import { createReport } from '../../utils/content-report'; + +describe('RS', () => { + const settings = getSettings(); + + it('should be correct talks data', async () => { + const content = await getContent(settings.mlconf); + const report = createReport(content); + expect(report.talks).toMatchSnapshot(); + }); +}); diff --git a/tests/mlconf/tracks.test.js b/tests/mlconf/tracks.test.js new file mode 100644 index 0000000..31cde61 --- /dev/null +++ b/tests/mlconf/tracks.test.js @@ -0,0 +1,13 @@ +import { getSettings } from '../../develop/conference-settings'; +import { getContent } from '../../src'; +import { createReport } from '../../utils/content-report'; + +describe('RS', () => { + const settings = getSettings(); + + it('should be correct tracks data', async () => { + const content = await getContent(settings.mlconf); + const report = createReport(content); + expect(report.tracks).toMatchSnapshot(); + }); +}); diff --git a/tests/mlconf/workshops.test.js b/tests/mlconf/workshops.test.js new file mode 100644 index 0000000..28e7e40 --- /dev/null +++ b/tests/mlconf/workshops.test.js @@ -0,0 +1,13 @@ +import { getSettings } from '../../develop/conference-settings'; +import { getContent } from '../../src'; +import { createReport } from '../../utils/content-report'; + +describe('RS', () => { + const settings = getSettings(); + + it('should be correct workshops data', async () => { + const content = await getContent(settings.mlconf); + const report = createReport(content); + expect(report.workshops).toMatchSnapshot(); + }); +}); diff --git a/tests/rs.test.js b/tests/rs.test.js new file mode 100644 index 0000000..72593a6 --- /dev/null +++ b/tests/rs.test.js @@ -0,0 +1,23 @@ +import { getSettings } from '../develop/conference-settings'; +import { getContent } from '../src'; +import { createReport } from '../utils/content-report'; + +describe('RS', () => { + const settings = getSettings(); + + it.each([ + 'pages', + 'conference', + 'speakers', + 'sponsors', + 'schedule', + 'tracks', + 'talks', + 'workshops', + 'otherContent', + ])('should prepare %s', async contentSection => { + const content = await getContent(settings.mlconf); + const report = createReport(content); + expect(report[contentSection]).toMatchSnapshot(); + }); +}); diff --git a/tests/smoke.test.js b/tests/smoke.test.js index acac205..f48995f 100644 --- a/tests/smoke.test.js +++ b/tests/smoke.test.js @@ -1,10 +1,14 @@ import { getContent } from '../src'; -import settings from './jsnation.conference-settings'; +import { getSettings } from '../develop/conference-settings'; -describe('JsNation', () => { - it('should generate content', async () => { - expect(async () => { - await getContent(settings); - }).not.toThrow(); - }); +describe('get Content', () => { + const settings = getSettings(); + it.each(['jsn', 'gqconf', 'mlconf', 'qaconf', 'doconf', 'nodeconf', 'rs'])( + 'should generate content for %s', + async () => { + expect(async confCode => { + await getContent(settings[confCode]); + }).not.toThrow(); + }, + ); }); diff --git a/utils/content-report.js b/utils/content-report.js new file mode 100644 index 0000000..16cc054 --- /dev/null +++ b/utils/content-report.js @@ -0,0 +1,56 @@ +import hash from 'object-hash'; + +const createPagesReport = pages => { + const pagesKeys = Object.keys(pages); + const report = pagesKeys.map(key => { + const page = pages[key]; + const { + id, + titleSeo, + description, + seoDescription, + titlePage, + ...rest + } = page; + return { + pageCode: key, + id, + titleSeo, + description, + seoDescription, + titlePage, + content: hash(rest), + }; + }); + return report; +}; + +export const createReport = content => { + try { + const { + pages, + conference, + speakers, + sponsors, + schedule, + tracks, + talks, + workshops, + ...rest + } = content; + return { + pages: createPagesReport(pages), + conference, + speakers, + sponsors, + schedule, + tracks, + talks, + workshops, + otherContent: hash(rest), + }; + } catch (err) { + console.error(err); + return {}; + } +}; diff --git a/yarn.lock b/yarn.lock index df03340..160c9d1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4927,10 +4927,10 @@ data-urls@^1.0.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" -dayjs@^1.8.19: - version "1.8.19" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.19.tgz#5117dc390d8f8e586d53891dbff3fa308f51abfe" - integrity sha512-7kqOoj3oQSmqbvtvGFLU5iYqies+SqUiEGNT0UtUPPxcPYgY1BrkXR0Cq2R9HYSimBXN+xHkEN4Hi399W+Ovlg== +dayjs@^1.9.6: + version "1.9.6" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.6.tgz#6f0c77d76ac1ff63720dd1197e5cb87b67943d70" + integrity sha512-HngNLtPEBWRo8EFVmHFmSXAjtCX8rGNqeXQI0Gh7wCTSqwaKgPIDqu9m07wABVopNwzvOeCb+2711vQhDlcIXw== debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9: version "2.6.9" @@ -9992,6 +9992,11 @@ object-hash@^1.1.4: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== +object-hash@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea" + integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg== + object-inspect@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67"