Skip to content

Instantly share code, notes, and snippets.

@davidshimjs
Created October 20, 2014 08:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save davidshimjs/ebb6a0448853c13ea7bd to your computer and use it in GitHub Desktop.
Save davidshimjs/ebb6a0448853c13ea7bd to your computer and use it in GitHub Desktop.
Making schedule table about HTML5DevConf 2014 conference
/**
* 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));
})();
/**
* 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