Created
October 20, 2014 08:32
-
-
Save davidshimjs/ebb6a0448853c13ea7bd to your computer and use it in GitHub Desktop.
Making schedule table about HTML5DevConf 2014 conference
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 1. You should run this script on a modern browser like a chrome debugger. | |
* 2. Insert JSON strings on debugger to the `rawData` in `googleApp` script below. | |
*/ | |
console.clear(); | |
(function () { | |
var lists = { | |
day1: [], | |
day2: [] | |
}; | |
var ROOT_DOMAIN = 'http://html5devconf.com/'; | |
var getLink = function ($el) { | |
return $el.has('a') ? ROOT_DOMAIN + $el.find('a').attr('href') : ''; | |
}; | |
var getSchedule = function ($el, className) { | |
var lists = []; | |
$el.find('.' + className).each(function (i, el) { | |
var $el = $(el); | |
// If A `.sched` row has two <p> tags, If should be a special time to one action. | |
if ($el.find('p').length === 2) { | |
lists.push({ | |
title: $el.find('p:last').text() | |
}); | |
} else { | |
$el.find('.sched-sess').each(function (i, el) { | |
var $el = $(el); | |
var data = { | |
title: '', | |
titleLink: '', | |
room: '', | |
speakers: [] | |
}; | |
// If A `.sched` row has two <p> tags, If should be a special time to one action. | |
if ($el.find('p').length === 2) { | |
data.title = $el.find('p:last').text(); | |
} else { | |
$el.find('li').each(function (i, el) { | |
var $el = $(el); | |
var text = $el.text(); | |
if (i === 0) { | |
data.title = text; | |
data.titleLink = getLink($el); | |
} else if (text.indexOf('Speaker: ') !== -1) { | |
data.speakers.push({ | |
name: text, | |
link: getLink($el) | |
}); | |
} else if (text.indexOf('Room: ') !== -1) { | |
data.room = text.replace(/^Room: /, ''); | |
} else if (!data.title) { | |
// An Empty column founded before a description for Social Night | |
data.title = text; | |
} else { | |
throw new Error('Found a new type column: ' + text); | |
} | |
}); | |
} | |
lists.push(data); | |
}); | |
} | |
}); | |
return lists; | |
}; | |
$('.indexcall').each(function (i, el) { | |
var $el = $(el); | |
var time = $el.find('h1').text(); | |
var times = time.split(' - '); | |
var schedules; | |
for (var className in lists) { | |
if (lists.hasOwnProperty(className)) { | |
schedules = getSchedule($el, className); | |
lists[className].push({ | |
time: time, | |
schedules: schedules | |
}); | |
} | |
} | |
}); | |
console.log(JSON.stringify(lists)); | |
})(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 3. You should run this script on Google script editor with Google SpreadSheet. | |
*/ | |
function myFunction() { | |
// this data was extracted by the `debugger` script. | |
var rawData = { | |
"day1": [{ | |
"time": "7:30am - 9:00am", | |
"schedules": [{ | |
"title": "Registration" | |
}] | |
}, { | |
"time": "9:00am - 9:20am", | |
"schedules": [{ | |
"title": "Overflow", | |
"titleLink": "http://html5devconf.com/speakers.html", | |
"room": "E-133", | |
"speakers": [] | |
}, { | |
"title": "The Web of Things - Leveraging the Web for the Internet of Things (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/frank_greco.html#session", | |
"room": "E-135", | |
"speakers": [{ | |
"name": "Speaker: Frank Greco, Kaazing Corporation", | |
"link": "http://html5devconf.com/speakers/frank_greco.html" | |
}] | |
}, { | |
"title": "Implementing Web Components at scale", | |
"titleLink": "http://html5devconf.com/speakers/chris_danford.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Chris Danford, Pinterest", | |
"link": "http://html5devconf.com/speakers/chris_danford.html" | |
}] | |
}, { | |
"title": "Performance: How Fast is Fast Enough? (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers//daniel_austin.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Daniel Austin, GRIN Technologies,Inc.", | |
"link": "http://html5devconf.com/speakers//daniel_austin.html" | |
}] | |
}, { | |
"title": "Mobile Web, merging adaptive and responsive techniques", | |
"titleLink": "http://html5devconf.com/speakers/francisco_ferreira.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Francisco Ferreira, eBay", | |
"link": "http://html5devconf.com/speakers/francisco_ferreira.html" | |
}] | |
}] | |
}, { | |
"time": "9:30am - 9:50am", | |
"schedules": [{ | |
"title": "Overflow", | |
"titleLink": "http://html5devconf.com/speakers.html", | |
"room": "E-133", | |
"speakers": [] | |
}, { | |
"title": "The Web of Things - Leveraging the Web for the Internet of Things (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/frank_greco.html#session", | |
"room": "E-135", | |
"speakers": [{ | |
"name": "Speaker: Frank Greco, Kaazing Corporation", | |
"link": "http://html5devconf.com/speakers/frank_greco.html" | |
}] | |
}, { | |
"title": "Harnessing the power of UI Components", | |
"titleLink": "http://html5devconf.com/speakers/phil_cockfield.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Phil Cockfield, Respondly", | |
"link": "http://html5devconf.com/speakers/phil_cockfield.html" | |
}] | |
}, { | |
"title": "Performance: How Fast is Fast Enough? (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers//daniel_austin.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Daniel Austin, GRIN Technologies,Inc.", | |
"link": "http://html5devconf.com/speakers//daniel_austin.html" | |
}] | |
}, { | |
"title": "Getting Enterprises to Embrace Javascript or: I was a 98-Pound Weakling", | |
"titleLink": "http://html5devconf.com/speakers/michael_cohen.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Michael Cohen, GoDaddy", | |
"link": "http://html5devconf.com/speakers/michael_cohen.html" | |
}] | |
}] | |
}, { | |
"time": "10:00am - 10:40am", | |
"schedules": [{ | |
"title": "BREAK" | |
}] | |
}, { | |
"time": "10:40am - 11:00am", | |
"schedules": [{ | |
"title": "Version 7: The Evolution of the JavaScript (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/jafar_husain.html#session", | |
"room": "E-135", | |
"speakers": [{ | |
"name": "Speaker: Jafar Husain, Netflix", | |
"link": "http://html5devconf.com/speakers/jafar_husain.html" | |
}] | |
}, { | |
"title": "Overflow", | |
"titleLink": "http://html5devconf.com/speakers.html", | |
"room": "E-133", | |
"speakers": [] | |
}, { | |
"title": "Integrating RequireJS", | |
"titleLink": "http://html5devconf.com/speakers/parris_khachi.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Parris Khachi, Eventbrite", | |
"link": "http://html5devconf.com/speakers/parris_khachi.html" | |
}] | |
}, { | |
"title": "How to create a Native-like experience in the Mobile Web (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/amit_zur.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Amit Zur, Capriza Inc.", | |
"link": "http://html5devconf.com/speakers/amit_zur.html" | |
}] | |
}, { | |
"title": "Web Native Iconography - New approaches for richer communication", | |
"titleLink": "http://html5devconf.com/speakers/pj_onori.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: PJ Onori, Waybury", | |
"link": "http://html5devconf.com/speakers/pj_onori.html" | |
}] | |
}, { | |
"title": "Bringing Web content to the Big Screen with Google Cast (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/kevin_nilson.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Kevin Nilson, Google", | |
"link": "http://html5devconf.com/speakers/kevin_nilson.html" | |
}] | |
}] | |
}, { | |
"time": "11:10am - 11:30am", | |
"schedules": [{ | |
"title": "Version 7: The Evolution of the JavaScript (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/jafar_husain.html#session", | |
"room": "E-135", | |
"speakers": [{ | |
"name": "Speaker: Jafar Husain, Netflix", | |
"link": "http://html5devconf.com/speakers/jafar_husain.html" | |
}] | |
}, { | |
"title": "Overflow", | |
"titleLink": "http://html5devconf.com/speakers.html", | |
"room": "E-133", | |
"speakers": [] | |
}, { | |
"title": "Tonight We're Gonna Code Like It's 1999: Creating Responsive Emails", | |
"titleLink": "http://html5devconf.com/speakers/jennifer_wong.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Jennifer Wong, HotPads at Zillow", | |
"link": "http://html5devconf.com/speakers/jennifer_wong.html" | |
}] | |
}, { | |
"title": "How to create a Native-like experience in the Mobile Web (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/amit_zur.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Amit Zur, Capriza Inc.", | |
"link": "http://html5devconf.com/speakers/amit_zur.html" | |
}] | |
}, { | |
"title": "Telling interactive rich media stories in the browser", | |
"titleLink": "http://html5devconf.com/speakers/amey_godse.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Amey Godse, Whamix", | |
"link": "http://html5devconf.com/speakers/amey_godse.html" | |
}] | |
}, { | |
"title": "Bringing Web content to the Big Screen with Google Cast (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/kevin_nilson.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Kevin Nilson, Google", | |
"link": "http://html5devconf.com/speakers/kevin_nilson.html" | |
}] | |
}] | |
}, { | |
"time": "11:40am - 12:00pm", | |
"schedules": [{ | |
"title": "Virtual Reality & The Future of the Web (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/vlad_vukicevic.html#session", | |
"room": "E-135", | |
"speakers": [{ | |
"name": "Speaker: Vlad Vukicevic, Mozilla", | |
"link": "http://html5devconf.com/speakers/vlad_vukicevic.html" | |
}, { | |
"name": "Speaker: Josh Carpenter , Mozilla", | |
"link": "http://html5devconf.com/speakers/josh_carpenter.html" | |
}] | |
}, { | |
"title": "The new Meteor platform: web and native mobile from a single reactive JavaScript codebase (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/matt_debergalis.html#session", | |
"room": "Room: E-133", | |
"speakers": [{ | |
"name": "Speaker: Matt DeBergalis, Meteor", | |
"link": "http://html5devconf.com/speakers/matt_debergalis.html" | |
}] | |
}, { | |
"title": "The Future of App Building with WebGL (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/siebrand_dijkstra.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Siebrand Dijkstra, AppMachine", | |
"link": "http://html5devconf.com/speakers/siebrand_dijkstra.html" | |
}] | |
}, { | |
"title": "Building Games for Every Platform with HTML5", | |
"titleLink": "http://html5devconf.com/speakers/austin_hallock.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Austin Hallock, Clay.io", | |
"link": "http://html5devconf.com/speakers/austin_hallock.html" | |
}] | |
}, { | |
"title": "Building a Nodebot with Javascript and the Intel XDK (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/stewart_christie%20(1st%20session).html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Stewart Christie, Intel", | |
"link": "http://html5devconf.com/speakers/stewart_christie%20(1st%20session).html" | |
}] | |
}, { | |
"title": "Driving Evolution of the 3D Web (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/leonard_daly.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Leonard Daly, Daly Realism", | |
"link": "http://html5devconf.com/speakers/leonard_daly.html" | |
}] | |
}] | |
}, { | |
"time": "12:10am - 12:30pm", | |
"schedules": [{ | |
"title": "Virtual Reality & The Future of the Web (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/vlad_vukicevic.html#session", | |
"room": "E-135", | |
"speakers": [{ | |
"name": "Speaker: Vlad Vukicevic, Mozilla", | |
"link": "http://html5devconf.com/speakers/vlad_vukicevic.html" | |
}, { | |
"name": "Speaker: Josh Carpenter , Mozilla", | |
"link": "http://html5devconf.com/speakers/josh_carpenter.html" | |
}] | |
}, { | |
"title": "The new Meteor platform: web and native mobile from a single reactive JavaScript codebase (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/matt_debergalis.html#session", | |
"room": "Room: E-133", | |
"speakers": [{ | |
"name": "Speaker: Matt DeBergalis, Meteor", | |
"link": "http://html5devconf.com/speakers/matt_debergalis.html" | |
}] | |
}, { | |
"title": "The Future of App Building with WebGL (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/siebrand_dijkstra.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Siebrand Dijkstra, AppMachine", | |
"link": "http://html5devconf.com/speakers/siebrand_dijkstra.html" | |
}] | |
}, { | |
"title": "WAI-ARIA: Awesome for Everyone", | |
"titleLink": "http://html5devconf.com/speakers/matt_long.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Matt Long, Cengage Learning", | |
"link": "http://html5devconf.com/speakers/matt_long.html" | |
}] | |
}, { | |
"title": "Building a Nodebot with Javascript and the Intel XDK (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/stewart_christie%20(1st%20session).html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Stewart Christie, Intel", | |
"link": "http://html5devconf.com/speakers/stewart_christie%20(1st%20session).html" | |
}] | |
}, { | |
"title": "Driving Evolution of the 3D Web (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/leonard_daly.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Leonard Daly, Daly Realism", | |
"link": "http://html5devconf.com/speakers/leonard_daly.html" | |
}] | |
}] | |
}, { | |
"time": "12:30pm - 1:30pm", | |
"schedules": [{ | |
"title": "LUNCH" | |
}] | |
}, { | |
"time": "1:30pm - 1:50pm", | |
"schedules": [{ | |
"title": "React and Flux (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/bill_fisher.html#session", | |
"room": "E-135", | |
"speakers": [{ | |
"name": "Speaker: Bill Fisher, Facebook", | |
"link": "http://html5devconf.com/speakers/bill_fisher.html" | |
}] | |
}, { | |
"title": "Dump SASS and Less CSS for JS powered CSS (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/michael_mikowski.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Michael Mikowski, Qualaroo ", | |
"link": "http://html5devconf.com/speakers/michael_mikowski.html" | |
}] | |
}, { | |
"title": "Continuous Delivery in NodeJS Projects, from Dev to Prod in 5min", | |
"titleLink": "http://html5devconf.com/speakers/antonio_silveira.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Antonio Silveira, GoDaddy", | |
"link": "http://html5devconf.com/speakers/antonio_silveira.html" | |
}] | |
}, { | |
"title": "Designing to Persuade and Engage Your Audience (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/andi_galpern.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Andi Galpern, CASCADE SF", | |
"link": "http://html5devconf.com/speakers/andi_galpern.html" | |
}] | |
}, { | |
"title": "Advanced Firebase: Querying, Indexing, and Security Rules (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/erik_beeson.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Erik Beeson, shelv.es", | |
"link": "http://html5devconf.com/speakers/erik_beeson.html" | |
}] | |
}] | |
}, { | |
"time": "2:00pm - 2:20pm", | |
"schedules": [{ | |
"title": "Dump SASS and Less CSS for JS powered CSS (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/michael_mikowski.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Michael Mikowski, Qualaroo ", | |
"link": "http://html5devconf.com/speakers/michael_mikowski.html" | |
}] | |
}, { | |
"title": "Engaging Apps: Service Workers, Push, and Notifications (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/alex_russell.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Alex Russell, Google", | |
"link": "http://html5devconf.com/speakers/alex_russell.html" | |
}] | |
}, { | |
"title": "React and Flux (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/bill_fisher.html#session", | |
"room": "E-135", | |
"speakers": [{ | |
"name": "Speaker: Bill Fisher, Facebook", | |
"link": "http://html5devconf.com/speakers/bill_fisher.html" | |
}] | |
}, { | |
"title": "Going Node at Netflix", | |
"titleLink": "http://html5devconf.com/speakers/micah_ransdell.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Micah Ransdell, Netflix", | |
"link": "http://html5devconf.com/speakers/micah_ransdell.html" | |
}] | |
}, { | |
"title": "Designing to Persuade and Engage Your Audience (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/andi_galpern.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Andi Galpern, CASCADE SF", | |
"link": "http://html5devconf.com/speakers/andi_galpern.html" | |
}] | |
}, { | |
"title": "Advanced Firebase: Querying, Indexing, and Security Rules (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/erik_beeson.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Erik Beeson, shelv.es", | |
"link": "http://html5devconf.com/speakers/erik_beeson.html" | |
}] | |
}] | |
}, { | |
"time": "2:30pm - 2:50pm", | |
"schedules": [{ | |
"title": "The Next Leap in JavaScript Performance (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/moh_haghighat.html#session", | |
"room": "E-135", | |
"speakers": [{ | |
"name": "Speaker: Moh Haghighat, Intel", | |
"link": "http://html5devconf.com/speakers/moh_haghighat.html" | |
}] | |
}, { | |
"title": "Behold the power of the “Web App Manifest” (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/jeff_burtoft.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Jeff Burtoft, Microsoft", | |
"link": "http://html5devconf.com/speakers/jeff_burtoft.html" | |
}] | |
}, { | |
"title": "The Physical Web", | |
"titleLink": "http://html5devconf.com/speakers/matthew_sibigtroth.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Matthew Sibigtroth, Google", | |
"link": "http://html5devconf.com/speakers/matthew_sibigtroth.html" | |
}] | |
}, { | |
"title": "Icons and the Web", | |
"titleLink": "http://html5devconf.com/speakers/bear_travis.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Bear Travis, Adobe", | |
"link": "http://html5devconf.com/speakers/bear_travis.html" | |
}] | |
}, { | |
"title": "Atomic Desktop Power with Node.js (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/ben_farrell.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Ben Farrell, GE", | |
"link": "http://html5devconf.com/speakers/ben_farrell.html" | |
}] | |
}, { | |
"title": "Angular 101 (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/sean_cannon.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Sean Cannon, Presence", | |
"link": "http://html5devconf.com/speakers/sean_cannon.html" | |
}] | |
}] | |
}, { | |
"time": "3:00pm - 3:20pm", | |
"schedules": [{ | |
"title": "The Next Leap in JavaScript Performance (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/moh_haghighat.html#session", | |
"room": "E-135", | |
"speakers": [{ | |
"name": "Speaker: Moh Haghighat, Intel", | |
"link": "http://html5devconf.com/speakers/moh_haghighat.html" | |
}] | |
}, { | |
"title": "Behold the power of the “Web App Manifest” (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/jeff_burtoft.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Jeff Burtoft, Microsoft", | |
"link": "http://html5devconf.com/speakers/jeff_burtoft.html" | |
}] | |
}, { | |
"title": "Generating Real Time Imagery Using HTML5", | |
"titleLink": "http://html5devconf.com/speakers/patrick_gunderson.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Patrick Gunderson, Tool", | |
"link": "http://html5devconf.com/speakers/patrick_gunderson.html" | |
}] | |
}, { | |
"title": "JavaScript on TV", | |
"titleLink": "http://html5devconf.com/speakers/roy_sutton.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Roy Sutton, LG Silicon Valley Lab", | |
"link": "http://html5devconf.com/speakers/roy_sutton.html" | |
}] | |
}, { | |
"title": "Atomic Desktop Power with Node.js (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/ben_farrell.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Ben Farrell, GE", | |
"link": "http://html5devconf.com/speakers/ben_farrell.html" | |
}] | |
}, { | |
"title": "Angular 101 (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/sean_cannon.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Sean Cannon, Presence", | |
"link": "http://html5devconf.com/speakers/sean_cannon.html" | |
}] | |
}] | |
}, { | |
"time": "3:20pm - 4:00pm", | |
"schedules": [{ | |
"title": "Break" | |
}] | |
}, { | |
"time": "4:00pm - 4:20pm", | |
"schedules": [{ | |
"title": "What’s coming in Node.js (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/bert_belder.html#session", | |
"room": "E-135", | |
"speakers": [{ | |
"name": "Speaker: Bert Belder, StrongLoop", | |
"link": "http://html5devconf.com/speakers/bert_belder.html" | |
}] | |
}, { | |
"title": "Angular or Backbone: Go Mobile! (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/doris_chen.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Doris Chen, Microsoft", | |
"link": "http://html5devconf.com/speakers/doris_chen.html" | |
}] | |
}, { | |
"title": "Creative coding on the mobile", | |
"titleLink": "http://html5devconf.com/speakers/bartek_drozdz.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Bartek Drozdz, Tool", | |
"link": "http://html5devconf.com/speakers/bartek_drozdz.html" | |
}] | |
}, { | |
"title": "Creating Complex Interactive Animations with SVG, and CSS, and performant JS", | |
"titleLink": "http://html5devconf.com/speakers/sarah_drasner.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Sarah Drasner, Fauna Inc.", | |
"link": "http://html5devconf.com/speakers/sarah_drasner.html" | |
}] | |
}, { | |
"title": "Scaling Selenium Testing at Yelp (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/ken_struys.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Ken Struys, Yelp Inc.", | |
"link": "http://html5devconf.com/speakers/ken_struys.html" | |
}] | |
}, { | |
"title": "The Lesser Known Featuers of ECMAScript 6", | |
"titleLink": "http://html5devconf.com/speakers/bryan_hughes.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Bryan Hughes, Rdio", | |
"link": "http://html5devconf.com/speakers/bryan_hughes.html" | |
}] | |
}] | |
}, { | |
"time": "4:30pm - 4:50pm", | |
"schedules": [{ | |
"title": "What’s coming in Node.js (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/bert_belder.html#session", | |
"room": "E-135", | |
"speakers": [{ | |
"name": "Speaker: Bert Belder, StrongLoop", | |
"link": "http://html5devconf.com/speakers/bert_belder.html" | |
}] | |
}, { | |
"title": "Angular or Backbone: Go Mobile! (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/doris_chen.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Doris Chen, Microsoft", | |
"link": "http://html5devconf.com/speakers/doris_chen.html" | |
}] | |
}, { | |
"title": "Innovation Springs From Creativity", | |
"titleLink": "http://html5devconf.com/speakers/simon_amarasingham.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Simon Amarasingham, dSonic", | |
"link": "http://html5devconf.com/speakers/simon_amarasingham.html" | |
}] | |
}, { | |
"title": "Persistent Mobile JavaScript - Tips & Tricks", | |
"titleLink": "http://html5devconf.com/speakers/yorick_phoenix.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Yorick Phoenix, ISSIO Solutions,Inc", | |
"link": "http://html5devconf.com/speakers/yorick_phoenix.html" | |
}] | |
}, { | |
"title": "Scaling Selenium Testing at Yelp (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/ken_struys.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Ken Struys, Yelp Inc.", | |
"link": "http://html5devconf.com/speakers/ken_struys.html" | |
}] | |
}, { | |
"title": "Using Microsoft tools and platforms to build the IoT (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/olivier_bloch.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Olivier Bloch, Microsoft Open Technologies", | |
"link": "http://html5devconf.com/speakers/olivier_bloch.html" | |
}] | |
}] | |
}, { | |
"time": "5:00pm - 5:20pm", | |
"schedules": [{ | |
"title": "Data Structures with Javascript (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/rajesh_kumar.html#session", | |
"room": "E-135", | |
"speakers": [{ | |
"name": "Speaker: Rajesh Kumar, Uber", | |
"link": "http://html5devconf.com/speakers/rajesh_kumar.html" | |
}] | |
}, { | |
"title": "Backbone.js Tricks or Treats (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/tiago_romerogarcia.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Tiago Romero Garcia, Avenue Code,LLC", | |
"link": "http://html5devconf.com/speakers/tiago_romerogarcia.html" | |
}] | |
}, { | |
"title": "Beer Locker: Building a RESTful API with Node (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/scott_smith.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Scott Smith, Front Porch,Inc.", | |
"link": "http://html5devconf.com/speakers/scott_smith.html" | |
}] | |
}, { | |
"title": "A new CMS in the field: Backdrop (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/jen_lampton.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Jen Lampton, Backdrop CMS", | |
"link": "http://html5devconf.com/speakers/jen_lampton.html" | |
}] | |
}, { | |
"title": "Thinking 2D to learn 3D (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/rocco_balsamo.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Rocco Balsamo, Gliffy", | |
"link": "http://html5devconf.com/speakers/rocco_balsamo.html" | |
}] | |
}, { | |
"title": "Using Microsoft tools and platforms to build the IoT (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/olivier_bloch.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Olivier Bloch, Microsoft Open Technologies", | |
"link": "http://html5devconf.com/speakers/olivier_bloch.html" | |
}] | |
}] | |
}, { | |
"time": "5:30pm - 5:50pm", | |
"schedules": [{ | |
"title": "Data Structures with Javascript (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/rajesh_kumar.html#session", | |
"room": "E-135", | |
"speakers": [{ | |
"name": "Speaker: Rajesh Kumar, Uber", | |
"link": "http://html5devconf.com/speakers/rajesh_kumar.html" | |
}] | |
}, { | |
"title": "Backbone.js Tricks or Treats (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/tiago_romerogarcia.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Tiago Romero Garcia, Avenue Code,LLC", | |
"link": "http://html5devconf.com/speakers/tiago_romerogarcia.html" | |
}] | |
}, { | |
"title": "Beer Locker: Building a RESTful API with Node (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/scott_smith.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Scott Smith, Front Porch,Inc.", | |
"link": "http://html5devconf.com/speakers/scott_smith.html" | |
}] | |
}, { | |
"title": "A new CMS in the field: Backdrop (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/jen_lampton.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Jen Lampton, Backdrop CMS", | |
"link": "http://html5devconf.com/speakers/jen_lampton.html" | |
}] | |
}, { | |
"title": "Thinking 2D to learn 3D (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/rocco_balsamo.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Rocco Balsamo, Gliffy", | |
"link": "http://html5devconf.com/speakers/rocco_balsamo.html" | |
}] | |
}] | |
}, { | |
"time": "6:00pm - 9:00pm", | |
"schedules": [{ | |
"title": " Social Night for HTML5devconf, IoTaconf and F50.io at Moscone made possible by Meteor, Intel, Leap Motion and Yahoo.", | |
"titleLink": "http://html5devconf.com/undefined", | |
"room": "", | |
"speakers": [] | |
}] | |
}], | |
"day2": [{ | |
"time": "7:30am - 9:00am", | |
"schedules": [{ | |
"title": "Registration" | |
}] | |
}, { | |
"time": "9:00am - 9:20am", | |
"schedules": [{ | |
"title": "Parallel JavaScript: A High-Level Parallel Programming Model for the Web", | |
"titleLink": "http://html5devconf.com/speakers/jaswanth_sreeram.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Jaswanth Sreeram, Intel Labs", | |
"link": "http://html5devconf.com/speakers/jaswanth_sreeram.html" | |
}] | |
}, { | |
"title": "Well-Designed Development: Sass for Engineers", | |
"titleLink": "http://html5devconf.com/speakers/smith_schwartz.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Smith Schwartz, Say Media", | |
"link": "http://html5devconf.com/speakers/smith_schwartz.html" | |
}] | |
}, { | |
"title": "HTML5 Powered IoT Products (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/aaron_franco.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Aaron Franco, Clickslide", | |
"link": "http://html5devconf.com/speakers/aaron_franco.html" | |
}] | |
}, { | |
"title": "A world of multi-device, multi-platform mobile ecosystem", | |
"titleLink": "http://html5devconf.com/speakers/swati_raju.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Swati raju, Groupon Inc", | |
"link": "http://html5devconf.com/speakers/swati_raju.html" | |
}] | |
}, { | |
"title": "Unleash the power of 3D with Babylon.js (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/david_catuhe.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: David Catuhe, Microsoft", | |
"link": "http://html5devconf.com/speakers/david_catuhe.html" | |
}] | |
}] | |
}, { | |
"time": "9:30am - 9:50am", | |
"schedules": [{ | |
"title": "Death to Cookies, Long Live JSON Web Tokens", | |
"titleLink": "http://html5devconf.com/speakers/eugenio_pace.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Eugenio Pace, Auth0", | |
"link": "http://html5devconf.com/speakers/eugenio_pace.html" | |
}] | |
}, { | |
"title": "Responsible Responsive", | |
"titleLink": "http://html5devconf.com/speakers/jameson_macArthur.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Jameson MacArthur, LockerDome", | |
"link": "http://html5devconf.com/speakers/jameson_macArthur.html" | |
}] | |
}, { | |
"title": "HTML5 Powered IoT Products (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/aaron_franco.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Aaron Franco, Clickslide", | |
"link": "http://html5devconf.com/speakers/aaron_franco.html" | |
}] | |
}, { | |
"title": "Website content performance modeling", | |
"titleLink": "http://html5devconf.com/speakers/pierre_lermant.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Pierre Lermant, Akamai", | |
"link": "http://html5devconf.com/speakers/pierre_lermant.html" | |
}] | |
}, { | |
"title": "Unleash the power of 3D with Babylon.js (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/david_catuhe.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: David Catuhe, Microsoft", | |
"link": "http://html5devconf.com/speakers/david_catuhe.html" | |
}] | |
}] | |
}, { | |
"time": "10:00am - 10:40am", | |
"schedules": [{ | |
"title": "BREAK" | |
}] | |
}, { | |
"time": "10:40am - 11:00am", | |
"schedules": [{ | |
"title": "How Web Components will change CSS best practices (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/philip_walton.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Philip Walton, Google", | |
"link": "http://html5devconf.com/speakers/philip_walton.html" | |
}] | |
}, { | |
"title": "SEO For Single Page Apps", | |
"titleLink": "http://html5devconf.com/speakers/jason_moore.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Jason Moore, Use All Five", | |
"link": "http://html5devconf.com/speakers/jason_moore.html" | |
}] | |
}, { | |
"title": "Join the dark side: Selenium testing with Nightwatch.js (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/seth_mclaughlin.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Seth McLaughlin, Shape Security", | |
"link": "http://html5devconf.com/speakers/seth_mclaughlin.html" | |
}] | |
}, { | |
"title": "DIY Science using the Intel IoT Devkit (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/stewart_christie.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Stewart Christie, Intel", | |
"link": "http://html5devconf.com/speakers/stewart_christie.html" | |
}] | |
}, { | |
"title": "FlexJS - An Introduction (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/omprakash_muppirala.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: OmPrakash Muppirala, IBM", | |
"link": "http://html5devconf.com/speakers/omprakash_muppirala.html" | |
}] | |
}] | |
}, { | |
"time": "11:10am - 11:30am", | |
"schedules": [{ | |
"title": "How Web Components will change CSS best practices (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/philip_walton.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Philip Walton, Google", | |
"link": "http://html5devconf.com/speakers/philip_walton.html" | |
}] | |
}, { | |
"title": "Mobile Automated Testing Challenges", | |
"titleLink": "http://html5devconf.com/speakers/gene_reese.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Gene Reese, Shasta QA", | |
"link": "http://html5devconf.com/speakers/gene_reese.html" | |
}] | |
}, { | |
"title": "Join the dark side: Selenium testing with Nightwatch.js (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/seth_mclaughlin.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Seth McLaughlin, Shape Security", | |
"link": "http://html5devconf.com/speakers/seth_mclaughlin.html" | |
}] | |
}, { | |
"title": "DIY Science using the Intel IoT Devkit (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/stewart_christie.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Stewart Christie, Intel", | |
"link": "http://html5devconf.com/speakers/stewart_christie.html" | |
}] | |
}, { | |
"title": "FlexJS - An Introduction (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/omprakash_muppirala.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: OmPrakash Muppirala, IBM", | |
"link": "http://html5devconf.com/speakers/omprakash_muppirala.html" | |
}] | |
}] | |
}, { | |
"time": "11:40am - 12:00pm", | |
"schedules": [{ | |
"title": "Performance Optimization Automation for Client-Side Applications", | |
"titleLink": "http://html5devconf.com/speakers/matthew_lancaster.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Matthew Lancaster, Accenture", | |
"link": "http://html5devconf.com/speakers/matthew_lancaster.html" | |
}] | |
}, { | |
"title": "Stop Abusing Bootstrap", | |
"titleLink": "http://html5devconf.com/speakers/erik_beeson.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Erik Beeson, shelv.es", | |
"link": "http://html5devconf.com/speakers/erik_beeson.html" | |
}] | |
}, { | |
"title": "Scaling A/B testing with Node.js (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/alex_liu.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Alex Liu, Netflix", | |
"link": "http://html5devconf.com/speakers/alex_liu.html" | |
}] | |
}, { | |
"title": "Fast and free CDNs using WebRTC stack", | |
"titleLink": "http://html5devconf.com/speakers/sumit_amar.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Sumit Amar, Electronic Arts", | |
"link": "http://html5devconf.com/speakers/sumit_amar.html" | |
}] | |
}, { | |
"title": "Making cross platform app development more fun with AppMachine (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/matthijs_koopman.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Matthijs Koopman, AppMachine", | |
"link": "http://html5devconf.com/speakers/matthijs_koopman.html" | |
}, { | |
"name": "Speaker: Reintjan Hoiting, AppMachine", | |
"link": "http://html5devconf.com/speakers/reintjan_hoiting.html" | |
}] | |
}] | |
}, { | |
"time": "12:10am - 12:30pm", | |
"schedules": [{ | |
"title": "AngularJS - Introduction to customized Directives", | |
"titleLink": "http://html5devconf.com/speakers/sarada_pachalla.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Sarada Pachalla, GE", | |
"link": "http://html5devconf.com/speakers/sarada_pachalla.html" | |
}] | |
}, { | |
"title": "Chrome Apps for Mobile, using Apache Cordova", | |
"titleLink": "http://html5devconf.com/speakers/michal_mocny.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Michal Mocny, Google", | |
"link": "http://html5devconf.com/speakers/michal_mocny.html" | |
}] | |
}, { | |
"title": "Scaling A/B testing with Node.js (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/alex_liu.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Alex Liu, Netflix", | |
"link": "http://html5devconf.com/speakers/alex_liu.html" | |
}] | |
}, { | |
"title": "A Bionic Man on an HTML5 Powered Motorcycle", | |
"titleLink": "http://html5devconf.com/speakers/brandon_nozaki_miller.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Brandon Nozaki Miller, DigiNow.it", | |
"link": "http://html5devconf.com/speakers/brandon_nozaki_miller.html" | |
}] | |
}, { | |
"title": "Making cross platform app development more fun with AppMachine (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/matthijs_koopman.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Matthijs Koopman, AppMachine", | |
"link": "http://html5devconf.com/speakers/matthijs_koopman.html" | |
}, { | |
"name": "Speaker: Reintjan Hoiting, AppMachine", | |
"link": "http://html5devconf.com/speakers/reintjan_hoiting.html" | |
}] | |
}] | |
}, { | |
"time": "12:30pm - 1:30pm", | |
"schedules": [{ | |
"title": "LUNCH" | |
}] | |
}, { | |
"time": "1:30pm - 1:50pm", | |
"schedules": [{ | |
"title": "Theory and Practice of Functional Reactive Javascript (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/pete_hodgson.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Pete Hodgson, ThoughtWorks", | |
"link": "http://html5devconf.com/speakers/pete_hodgson.html" | |
}] | |
}, { | |
"title": "Hacking Reality: Browser-Based VR in HTML5 (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/tony_parisi.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Tony Parisi, Vizi", | |
"link": "http://html5devconf.com/speakers/tony_parisi.html" | |
}] | |
}, { | |
"title": "Box2D with SIMD enhancements in JavaScript (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/peter_jensen.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Peter Jensen, Intel Corporation", | |
"link": "http://html5devconf.com/speakers/peter_jensen.html" | |
}, { | |
"name": "Speaker: Ningxin Hu, Intel Corporation", | |
"link": "http://html5devconf.com/speakers/ningxin_hu.html" | |
}] | |
}, { | |
"title": "Continuation-Local-Storage and the Magic of AsyncListener", | |
"titleLink": "http://html5devconf.com/speakers/islam_sharabash.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Islam Sharabash, DataHero", | |
"link": "http://html5devconf.com/speakers/islam_sharabash.html" | |
}] | |
}] | |
}, { | |
"time": "2:00pm - 2:20pm", | |
"schedules": [{ | |
"title": "Theory and Practice of Functional Reactive Javascript (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/pete_hodgson.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Pete Hodgson, ThoughtWorks", | |
"link": "http://html5devconf.com/speakers/pete_hodgson.html" | |
}] | |
}, { | |
"title": "Hacking Reality: Browser-Based VR in HTML5 (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/tony_parisi.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Tony Parisi, Vizi", | |
"link": "http://html5devconf.com/speakers/tony_parisi.html" | |
}] | |
}, { | |
"title": "Box2D with SIMD enhancements in JavaScript (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/peter_jensen.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Peter Jensen, Intel Corporation", | |
"link": "http://html5devconf.com/speakers/peter_jensen.html" | |
}, { | |
"name": "Speaker: Ningxin Hu, Intel Corporation", | |
"link": "http://html5devconf.com/speakers/ningxin_hu.html" | |
}] | |
}, { | |
"title": "In vivo prototyping", | |
"titleLink": "http://html5devconf.com/speakers/bartosz_szopka.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Bartosz Szopka, Kerio Technologies", | |
"link": "http://html5devconf.com/speakers/bartosz_szopka.html" | |
}] | |
}] | |
}, { | |
"time": "2:30pm - 2:50pm", | |
"schedules": [{ | |
"title": "Responsive Web Design Meets the Mobile HTML5 Hybrid App (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/chris_perkins.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Chris Perkins, Intel", | |
"link": "http://html5devconf.com/speakers/chris_perkins.html" | |
}] | |
}, { | |
"title": "Holy Grail of portability - Develop Once, Deploy Anywhere", | |
"titleLink": "http://html5devconf.com/speakers/piotr_sadowski.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Piotr Sadowski, Solpeo", | |
"link": "http://html5devconf.com/speakers/piotr_sadowski.html" | |
}] | |
}, { | |
"title": "The Power, and Pain, of Cordova Plugins (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/paul_fischer.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Paul Fischer, Intel Corporation", | |
"link": "http://html5devconf.com/speakers/paul_fischer.html" | |
}] | |
}, { | |
"title": "Pi's, Node, and Real-Time things", | |
"titleLink": "http://html5devconf.com/speakers/allan_naranjo.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Allan Naranjo, AgilityFeat", | |
"link": "http://html5devconf.com/speakers/allan_naranjo.html" | |
}] | |
}, { | |
"title": "High Performance Interactive Venue Maps at SeatGeek", | |
"titleLink": "http://html5devconf.com/speakers/ed_kelley.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Ed Kelley, SeatGeek", | |
"link": "http://html5devconf.com/speakers/ed_kelley.html" | |
}] | |
}] | |
}, { | |
"time": "3:00pm - 3:20pm", | |
"schedules": [{ | |
"title": "Responsive Web Design Meets the Mobile HTML5 Hybrid App (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/chris_perkins.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Chris Perkins, Intel", | |
"link": "http://html5devconf.com/speakers/chris_perkins.html" | |
}] | |
}, { | |
"title": "Making WebGL tools with Polymer", | |
"titleLink": "http://html5devconf.com/speakers/aki_rodic.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Aki Rodic, Google", | |
"link": "http://html5devconf.com/speakers/aki_rodic.html" | |
}] | |
}, { | |
"title": "The Power, and Pain, of Cordova Plugins (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/paul_fischer.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Paul Fischer, Intel Corporation", | |
"link": "http://html5devconf.com/speakers/paul_fischer.html" | |
}] | |
}, { | |
"title": "Server forever alone? Building the decentralized web.", | |
"titleLink": "http://html5devconf.com/speakers/stefan_thomas.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Stefan Thomas, Ripple Labs Inc.", | |
"link": "http://html5devconf.com/speakers/stefan_thomas.html" | |
}] | |
}, { | |
"title": "different.js", | |
"titleLink": "http://html5devconf.com/speakers/pete_hodgson.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Pete Hodgson, ThoughtWorks", | |
"link": "http://html5devconf.com/speakers/pete_hodgson.html" | |
}] | |
}] | |
}, { | |
"time": "3:20pm - 4:00pm", | |
"schedules": [{ | |
"title": "Break" | |
}] | |
}, { | |
"time": "4:00pm - 4:20pm", | |
"schedules": [{ | |
"title": "Lessons and Learnings: Moving to NodeJS", | |
"titleLink": "http://html5devconf.com/speakers/stephen_woods.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Stephen Woods, Yahoo", | |
"link": "http://html5devconf.com/speakers/stephen_woods.html" | |
}] | |
}, { | |
"title": "Algorithms for Animation – 3 simple formulas to activate your UI", | |
"titleLink": "http://html5devconf.com/speakers/courtney_hemphill.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Courtney Hemphill, Carbon Five", | |
"link": "http://html5devconf.com/speakers/courtney_hemphill.html" | |
}] | |
}, { | |
"title": "Debugging, Profiling, Heap Dumping and other fix-it techniques in Node.js (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/shubhra_kar.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Shubhra Kar, StrongLoop", | |
"link": "http://html5devconf.com/speakers/shubhra_kar.html" | |
}] | |
}, { | |
"title": "Freeing the Floats of the Future From the Tyranny of the Rectangle", | |
"titleLink": "http://html5devconf.com/speakers/bem_jones-bey.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Bem Jones-Bey, Adobe", | |
"link": "http://html5devconf.com/speakers/bem_jones-bey.html" | |
}] | |
}, { | |
"title": "Building games for big Brands (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/nathan_bingham.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Alex Porter, Bradley and Montgomery (BaM)", | |
"link": "http://html5devconf.com/speakers/alex_porter.html" | |
}] | |
}] | |
}, { | |
"time": "4:30pm - 4:50pm", | |
"schedules": [{ | |
"title": "Server side templating or front-end templating? Get the best of both!", | |
"titleLink": "http://html5devconf.com/speakers/jon_abrams.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Jon Abrams, OUYA", | |
"link": "http://html5devconf.com/speakers/jon_abrams.html" | |
}] | |
}, { | |
"title": "Debugging, Profiling, Heap Dumping and other fix-it techniques in Node.js (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/shubhra_kar.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Shubhra Kar, StrongLoop", | |
"link": "http://html5devconf.com/speakers/shubhra_kar.html" | |
}] | |
}, { | |
"title": "Using Typescript in a big open source project", | |
"titleLink": "http://html5devconf.com/speakers/david_catuhe.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: David Catuhe, Microsoft", | |
"link": "http://html5devconf.com/speakers/david_catuhe.html" | |
}] | |
}, { | |
"title": "Building games for big Brands (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/nathan_bingham.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Alex Porter, Bradley and Montgomery (BaM)", | |
"link": "http://html5devconf.com/speakers/alex_porter.html" | |
}] | |
}] | |
}, { | |
"time": "5:00pm - 5:20pm", | |
"schedules": [{ | |
"title": "Don't do _this at home: best practices for managing function scope", | |
"titleLink": "http://html5devconf.com/speakers/jillian_munson.html#session", | |
"room": "E-133", | |
"speakers": [{ | |
"name": "Speaker: Jillian Munson, Nickelodeon", | |
"link": "http://html5devconf.com/speakers/jillian_munson.html" | |
}] | |
}, { | |
"title": "Curing Cancer With HTML5", | |
"titleLink": "http://html5devconf.com/speakers/rich_trott.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Rich Trott, UC San Francisco", | |
"link": "http://html5devconf.com/speakers/rich_trott.html" | |
}] | |
}, { | |
"title": "Never Solve a Problem Twice: Building Reusable Modules with Backbone.Marionette and Require.js", | |
"titleLink": "http://html5devconf.com/speakers/justin_anastos.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Justin Anastos, Use All Five, Inc.", | |
"link": "http://html5devconf.com/speakers/justin_anastos.html" | |
}] | |
}, { | |
"title": "Dealing with Disconnected Operation in a Mobile Business Application: Issues and Techniques for Supporting Offline Usage", | |
"titleLink": "http://html5devconf.com/speakers/dan_bricklin.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Dan Bricklin, Alpha Software", | |
"link": "http://html5devconf.com/speakers/dan_bricklin.html" | |
}] | |
}, { | |
"title": "The web is your API: feeds and actions using HTML5 and webmentions (50min, Part 1)", | |
"titleLink": "http://html5devconf.com/speakers/ben_werdmuller.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Ben Werdmuller, Known", | |
"link": "http://html5devconf.com/speakers/ben_werdmuller.html" | |
}] | |
}] | |
}, { | |
"time": "5:30pm - 5:50pm", | |
"schedules": [{ | |
"title": "Building Hypermedia APIs in Javascript", | |
"titleLink": "http://html5devconf.com/speakers/nicolas_grenie.html#session", | |
"room": "E-131", | |
"speakers": [{ | |
"name": "Speaker: Nicolas Grenie, 3scale.net", | |
"link": "http://html5devconf.com/speakers/nicolas_grenie.html" | |
}] | |
}, { | |
"title": "Angular & Rails: Marriage or Divorce?", | |
"titleLink": "http://html5devconf.com/speakers/christian_vuerings.html#session", | |
"room": "E-132", | |
"speakers": [{ | |
"name": "Speaker: Christian Vuerings, UC Berkeley", | |
"link": "http://html5devconf.com/speakers/christian_vuerings.html" | |
}] | |
}, { | |
"title": "Cover Flow in JavaScript and CSS 3-D", | |
"titleLink": "http://html5devconf.com/speakers/ariya_hidayat.html#session", | |
"room": "E-130", | |
"speakers": [{ | |
"name": "Speaker: Ariya Hidayat, Shape Security", | |
"link": "http://html5devconf.com/speakers/ariya_hidayat.html" | |
}] | |
}, { | |
"title": "The web is your API: feeds and actions using HTML5 and webmentions (50min, Part 2)", | |
"titleLink": "http://html5devconf.com/speakers/ben_werdmuller.html#session", | |
"room": "N-120", | |
"speakers": [{ | |
"name": "Speaker: Ben Werdmuller, Known", | |
"link": "http://html5devconf.com/speakers/ben_werdmuller.html" | |
}] | |
}] | |
}, { | |
"time": "6:00pm - 9:00pm", | |
"schedules": [] | |
}] | |
}; | |
var START_ROW = 3; | |
var sheet = SpreadsheetApp.getActiveSheet(); | |
var sheetName = sheet.getSheetName(); | |
var mapRoomToColumnIndex = { | |
'E-130': 3, | |
'E-131': 4, | |
'E-132': 5, | |
'E-133': 6, | |
'E-135': 7, | |
'N-120': 8 | |
}; | |
var dayLists = rawData[sheetName]; | |
var row = START_ROW; | |
var range = sheet.getRange('A:H'); | |
var getValueWithUrl = function (text, url) { | |
return url ? '=hyperlink("' + url + '", "' + text + '")' : text; | |
}; | |
dayLists.forEach(function (list) { | |
var times = list.time.split(' - '); | |
var startTime = times[0]; | |
var endTime = times[1]; | |
var speakerMaxLength = 0; | |
var speakerLength; | |
range.getCell(row, 1).setValue(startTime); | |
range.getCell(row, 2).setValue(endTime); | |
list.schedules.forEach(function (schedule) { | |
var columnIndex = 3; // Default Value for special actions | |
var title = getValueWithUrl(schedule.title, schedule.titleLink); | |
speakerLength = 0; | |
if (mapRoomToColumnIndex.hasOwnProperty(schedule.room)) { | |
columnIndex = mapRoomToColumnIndex[schedule.room]; | |
} | |
range.getCell(row, columnIndex).setValue(title); | |
if (schedule.speakers) { | |
schedule.speakers.forEach(function (speaker) { | |
var speakerValue = getValueWithUrl(speaker.name, speaker.link); | |
speakerLength++; | |
range.getCell(row + speakerLength, columnIndex).setValue(speakerValue); | |
}); | |
} | |
speakerMaxLength = Math.max(speakerMaxLength, speakerLength); | |
}); | |
row = row + 1 + (speakerMaxLength ? speakerMaxLength : 0); | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment