12. Talent Connect Features 2013
Agenda / Speakers
Who is here / Connections who are here
People you should meet (PYMK joined with attendees)
Rate sessions
Analytics (mixpanel)
Push notifications (Urban airship stretch goal)
Sharing to NUS – (viral hooks experimental stretch goal)
Embedded Slideshare decks (extreme experimental
stretch goal)
Confidential
12
26. Build for scale (3200+ Attendees)
Nodejs (~2000 qps)
Server side memcache (hapi.js)
Client side cache (versioning heartbeat)
Real time content changes (js injection)
Reusable shell and content ready for Talent
Connect London (+2 weeks)
Confidential
26
27. Build for client speed
DOM manipulation only (saves rendering
time for WebViews)
Client side cache (versioning heartbeat)
Lazy load images
Static assets loaded into native app when
“common”, network sensitive, or large in
size
Confidential
27
29. Conference risks
Wireless/network connection at event
could be spotty (slow to/no-load of
resources)
Last minute agenda/speaker updates most
likely
Confidential
29
30. Overcoming risks
Content must be cached on client
Post-push-to-app-store changes via js
injections (DOM manipulation on the fly
and cached on client in case of network
outage)
Confidential
30
31. localStorage.setItem(“client-cache”,”ftw”);
function checkForAgendaUpdates() {
$.getJSON(versionAPI, {}, function(data) {
// RETURNS Small dataset aka {version: 1.0}
// push as little data to the client as possible
// object also cached on server to reduce large file requests when not needed
var newVersion = data.version;
if (!localStorage.getItem("currentVersion") || data.version > localStorage.getItem("currentVersion")) {
console.log("We are out of date and must update");
$.getJSON(updateAPI, {}, function(data) {
if (localStorage.getItem("location") == "london") {
agendaJSON = data.London;
} else {
agendaJSON = data.Vegas;
}
localStorage.setItem("agenda", JSON.stringify(data));
localStorage.setItem("currentVersion", newVersion);
});
}
});
}
Confidential
31