Skip to content

Instantly share code, notes, and snippets.

@nikcorg
Last active August 4, 2023 12:45
Show Gist options
  • Save nikcorg/1fe60d2da6e22653806c to your computer and use it in GitHub Desktop.
Save nikcorg/1fe60d2da6e22653806c to your computer and use it in GitHub Desktop.
Slide decks of JSConf 2014

Jake Archibald (@jaffathecake): The ServiceWorker is coming; look busy
https://speakerdeck.com/jaffathecake/the-serviceworker-is-coming-look-busy https://github.com/jakearchibald/trained-to-thrill/
https://www.youtube.com/watch?v=SmZ9XcTpMS4

Hunter Loftis (@hunterloftis): We Will All Be Game Progmrammers
http://wwabgp.herokuapp.com/s
http://youtu.be/QX0eauXBKwc

CarterRabasa (@carterrabasa): A Community of People; Not Projects
https://github.com/crabasa/community-toolkit
http://youtu.be/guC2guiPGRc

Cristoph Martens (@martensms): JavaScript Level 9000
https://github.com/martensms/jsconf2014-slides
http://youtu.be/v34CEyqVEuM

Michael Poltorak Nielsen (@michaelpoltorak): Alternative Smartphone Interactions based on Sensor Data
http://www.slideshare.net/michaelpoltorak/slides-alternative-smartphone-interactions-39642568
http://youtu.be/q20W5dWHTas

Mathias Bynens (@mathias): JavaScript ♥ Unicode
https://mathiasbynens.be/notes/javascript-unicode
http://youtu.be/zi0w7J7MCrk

Drew Petersen (@kirbysayshi): Developing Games Using Data not Trees
https://speakerdeck.com/kirbysayshi/developing-games-using-data-not-trees
http://youtu.be/uNVP5jDOVAY

Jaswanth Sreeram (@jsreeram): Parallel JavaScript
<slides missing>
http://youtu.be/Ls27mCiYsQo

Michele Guido (@sheley): It Takes a Village to Make a Programmer
https://twitter.com/sheley/status/510758480928854016
http://youtu.be/FHNrw7aiKOE

Sara Robinson (@srobtweets): What Harry Potter Can Teach Us About JavaScript
https://sarajrobinson.com/jsconfeu/
http://youtu.be/osQbwqq7ZR4

Tim Messerschmidt (@seraandroid): Supercharging Node with Kraken
http://www.slideshare.net/paypal
http://youtu.be/gKebfQH8aXU

Federico Musto: Linino.IO - A Whole New Take
<slides missing>
http://youtu.be/eipW64BGoOE

Frederik Braun (@freddyb): We're struggling to keep up (A brief history of Browser Security Features)
<slides missing>
http://youtu.be/mj-U9FlbAl0

Rik Arends (@rikarends): Beyond HTML and CSS: Fusing Javascript and shaders for live graphics and UI programming
http://hello.onejs.io/
https://github.com/onejs/onejs
http://youtu.be/X8xxz-YeWtk

Ray McDermott (@raymcdermott): How Toyota Motor Europe use Heroku to manufacture web sites on the web
http://www.slideshare.net/mondraymond/heroku-toyota-motor-europe-platform-as-a-factory-as-a-service
http://youtu.be/JlRHyg60vvI

James Coglan (@jcoglan): Practical functional programming: pick two
http://slides.jcoglan.com/functional-jsconf
http://youtu.be/XcS-LdEBUkE

William Lewis & Pavel Dovbush; Badoo (@netproteus & @dppsu): Building a maintainable bi-directional cross platform protocol
http://techblog.badoo.com/files/building-a-maintainable-bi-directional-cross-platform-protocol/JSON_RPC.pdf
http://youtu.be/Wkw4TOBEKUY

Raul Fraile (@raulfraile): How GZIP compression works
http://www.slideshare.net/raulfraile/how-gzip-compression-works-js-conf-eu-2014
http://youtu.be/wLx5OGxOYUc

Tim Taubert (@ttaubert): Keeping secrets with JavaScript: An Introduction to the WebCrypto API
http://timtaubert.de/blog/2014/09/keeping-secrets-with-javascript/
http://youtu.be/yf4m9LdO1zI

Matthew Podwysocki (@mattpodwysocki): Async and Streaming JS - Are we doing it wrong?
https://github.com/mattpodwysocki/jsconfeu-2014
http://youtu.be/-vPFP-2Mkl8

Michael Donohoe (@donohoe): Deep-link to Anything on the Web
https://docs.google.com/presentation/d/1N6cbH0LOHRGiZY4FPlS5bho9cK7UMtM7Ho_XN8yP1T0/
https://www.youtube.com/watch?v=ybaVRa5AZ5c

Mathieu 'p01' Henri (@p01): Monster Audio-Visual demos in a TCP packet
<slides missing>
http://youtu.be/8aYVH2j0kAU

Arne Martin Aurlien (@arnemart): Implement an Esoteric Programming Language for Fun and... Well, Fun
https://github.com/arnemart/jsconf2k14
http://befungius.aurlien.net/
http://youtu.be/oCPT3L33848

Brad Bouse (@bradbouse): Usefulness of Uselessness
http://www.wholepixel.com/jsconf/index.html
http://youtu.be/K7C7iUYntNs

Dave Cridland (@dwddave): Air Crashes
https://www.surevine.com/air-disasters-and-software-not-such-a-tenuous-link/
http://youtu.be/Oxz23A9_Mc4

Stephan Seidt (@evilhackerdude): The Meaning of Words
<slides missing>
http://youtu.be/d1HM-9reFAE

Tim Pietrusky (@timpietrusky): Nerd Disco
http://slides.com/timpietrusky/nerd-disco/
http://youtu.be/tia6iP85Zuk

Vyacheslav Egorov (@mraleph): invokedynamic.js
http://mrale.ph/talks/jsconfeu2014/
https://github.com/mraleph/mraleph.github.com/tree/master/talks/jsconfeu2014/code
http://youtu.be/YOHBZactXus

Mathias Buus Madsen (@mafintosh): Javascript... Torrents... and Mad Science!
https://github.com/mafintosh/jsconf-eu-2014 http://youtu.be/BTCsSwCpGP8

Adrian Perez de Castro (@aperezdc): JavaScript in JavaScript: Inception
http://perezdecastro.org/jsinception/
http://youtu.be/F2cL4EOAztk

Mark Knichel (@m_knichel): JavaScript Tools at Scale Using Type Information
https://docs.google.com/presentation/d/1-bXaZUjGdg9KIwPj2v3jRY4ak4CjmwIDWBVDlEknj6c/present#slide=id.p
http://youtu.be/oXZaqHWq6cM

Rob Ashton (@robashton): Got Make?
http://slides.com/robashton/got-make
https://github.com/robashton/jsconfeu2014
http://linkis.com/codeofrob.com/entrie/kqnsq
http://youtu.be/sS5EByZm1EI

Dan Mané (@danmane): Why are there so many Javascript charting libraries?!?
<slides missing>
http://youtu.be/_A_FdbTkp9c

Marcy Sutton (@marcysutton): JavaScript for Everybody
http://marcysutton.github.io/accessibility-of-mvcs/
http://youtu.be/04DOp1F9Od4

Sergii Iefremov (@iefserge): Runtime.JS: V8 JavaScript Kernel
http://runtimejs.org/jsconf/
http://youtu.be/nPl0zlAI3MY

Lena Reinhard (@ffffux): This is bigger than us: Building a future for Open Source
https://speakerdeck.com/ffffux/this-is-bigger-than-us-building-a-future-for-open-source
http://youtu.be/-thLNvxFUu4

Raquel Vélez (@rockbot): Evolution of a Developer
https://speakerdeck.com/rockbot/evolution-of-a-developer
http://youtu.be/rP1q6oIVco4

Sebastien Cevey (@theefer): Server-less applications powered by Web Components
http://slides.com/theefer/serverless-web-components-jsconf
http://youtu.be/MdcD1rNkNLE

Jan Monschke (@thedeftone): Using the web for music production and for live performances
http://janmonschke.com/JSConf2014/
http://youtu.be/cqtBpCqgOgM

Shirmung Bielefeld (@shirmung): == ? === ??? ...#@^%
<slides missing>
http://youtu.be/qGyqzN0bjhc

Rosie Campbell (@rosiecampbell): Designing for displays that don't exist yet
<slides missing>
http://youtu.be/QAha1prc_pU

Sebastian Markbåge (@sebmarkbage): Minimal API Surface Area - Learning patterns instead of frameworks
http://youtu.be/4anAwXYqLG8
<slides missing>

Nikita Vasilyev (@elv1s): Future of Web Tooling
<slides missing>
http://youtu.be/U0_IrPqvwn4

Dominikus Baur (@dominikus): Web-based data visualization on mobile devices
http://dominikus.github.io/jsconfeu_2014/
http://youtu.be/X2ZlDrx6dAw

Brennan Novak (@brennannovak): Secure Crypto for Browser Based Apps
<slides missing>
http://youtu.be/xSIt6h_yjH0

Philip Roberts (@philip_roberts): What the heck is the event loop anyway?
http://youtu.be/8aGhZQkoFbQ

Amy Palamountain (@ammeep): Enemy of the State
http://amy.palamounta.in/blog/2014/04/13/enemy-of-the-state/
http://youtu.be/fAoSidif1gs

Jenna Zeigen (@zeigenvector): The Linguistic Relativity of Programming Languages
http://jennazeigen.com/jsconfeu-2014.pdf
http://youtu.be/tNylHHf2uJk

Iliyan Peychev (@ipeychev): HTTP 2.0 and QUIC - protocols of the (near) future
https://speakerdeck.com/ipeychev/http-2-dot-0-and-quic-protocols-of-the-near-future
http://youtu.be/qyexqwG6fGI

Jan Jongboom (@janjongboom): Abusing phones to make the internet of things
http://www.slideshare.net/janjongboom/jsconf-eu-2014-abusing-phones-to-make-the-internet-of-things
http://youtu.be/Uy062kp-LM4

Lloyd Watkin (@lloydwatkin): You've played with realtime, let's do it properly...
http://talks.evilprofessor.co.uk/jsconfeu-2014/
http://youtu.be/DRz5T3kcygM

Glen Maddern (@glenmaddern): GIFs vs Web Components
https://github.com/geelen/gifs-vs-web-components
http://youtu.be/i7mrZ_JsA8A

Lindsay Eyink (@leyink): Know Your /'s
<slides missing>
http://youtu.be/65YYMLQ1jkU

// Use this script to parse the Markdown contents into JSON
// Distributed under the Works On My Computer, You're Entirely On Your Own License
// WTFPL (http://www.wtfpl.net/) also applies
var doParse = module.exports.doParse = function (sources, cb) {
require("./reader").readFirstExisting(sources, function (err, data) {
if (err) {
return console.error("Error reading source", err.stack || err.message);
}
cb(require("./parser").parse(data));
});
};
function stdoutWrite(data) {
process.stdout.write(JSON.stringify(data), "utf-8");
}
if (require.main === module) doParse(require("./sources.json"), stdoutWrite);
var rRowSeparator = /\r?\n/;
var rProbablyUrl = /^https?:/;
var rProbablyVideoUrl = /vimeo|youtu\.?be/;
var rEmptyRow = /^(\s+)?$/;
var rLeadingTrailingWS = /^\s+|\s+$/g;
function trim(str) {
return str.replace(rLeadingTrailingWS, "");
}
function not(fn) {
return function () {
return ! fn.apply(undefined, arguments);
};
}
function regex(r) {
return function (val) {
return r.test(val);
};
}
function createChunk() {
return [];
}
function chunkify(chunks, row) {
if (rEmptyRow.test(row)) {
chunks.push(createChunk());
} else {
chunks[chunks.length - 1].push(row);
}
return chunks;
}
function parseChunk(chunk) {
var desc = chunk[0].match(/^(.*?)(?:\s\((@[^)]+)\))?:\s(.*)$/);
if (desc == null) {
throw new Error("Chunk contains malformed title line");
}
var presenter = desc[1];
var twitter = desc[2] || undefined;
var title = desc[3];
var urls = chunk.slice(1).filter(regex(rProbablyUrl));
var slides = urls.length > 0 ? urls.shift() : undefined;
var videos = urls.length > 0 ? urls.filter(regex(rProbablyVideoUrl)) : undefined;
var related = urls.length > 0 ? urls.filter(not(regex(rProbablyVideoUrl))) : undefined;
return {
title: title,
presenter: presenter,
twitter: twitter,
slides: slides,
videos: videos,
related: related
};
}
function nonEmptyChunk(chunk) {
return chunk.length > 0;
}
function parseData(data) {
return data.
split(rRowSeparator).
map(trim).
reduce(chunkify, [createChunk()]).
filter(nonEmptyChunk).
map(parseChunk);
}
module.exports.parse = parseData;
var rIsRemote = /^https?:/;
var rIsSecure = /^https:/;
var readRemoteSource = module.exports.readRemoteSource = function readRemoteSource(source, cb) {
var httpModule = rIsSecure.test(source) ? "https" : "http";
var req = require(httpModule).get(source, function (res) {
var payload = "";
if (res.statusCode > 200) {
return req.abort(), cb(new Error("HTTP Error " + res.statusCode));
}
res.on("data", function (chunk) {
payload += String(chunk);
});
res.on("end", function () {
try {
cb(undefined, payload);
} catch (err) {
cb(err);
}
});
}).on("error", function (err) {
cb(err, undefined);
});
};
var readLocalSource = module.exports.readLocalSource = function readLocalSource(source, cb) {
if (! cb) {
throw new Error("A callback is required");
}
function _actuallyRead() {
require("fs").readFile(source, "utf-8", function (err, data) {
if (err) {
return cb(err);
}
try {
cb(undefined, data);
} catch (ex) {
cb(ex);
}
});
}
require("fs").exists(source, function (exists) {
if (! exists) {
return cb(new Error("File doesn't exist: " + source));
}
_actuallyRead(cb);
});
};
var readFirstExisting = module.exports.readFirstExisting = function readFirstExisting(sources, cb) {
var mostRecentErr;
asyncIterate(sources, function (source, next) {
function localCallback(err, data) {
if (data) {
return cb(undefined, data);
}
if (err) {
mostRecentErr = err;
}
try {
next();
} catch (e) {
cb(mostRecentErr || e);
}
}
if (rIsRemote.test(source)) {
readRemoteSource(source, localCallback);
} else {
readLocalSource(source, localCallback);
}
});
};
function asyncIterate(collection, iterator) {
var items = collection.slice(0);
var cursor = -1;
var current;
function adv() {
cursor += 1;
if (cursor >= items.length) {
return false;
}
current = items[cursor];
return true;
}
function next() {
if (! adv()) {
throw new Error("No next item");
}
iterator(current, next);
}
next();
}
[
"berlin-jsconf-2014.md",
"https://gist.githubusercontent.com/nikcorg/1fe60d2da6e22653806c/raw/ee0762d05650df1bdede4cb4f80e2ca8cfb2becb/berlin-jsconf-2014.md"
]
@nikcorg
Copy link
Author

nikcorg commented Sep 18, 2014

Updated, thank you.

@lewiscowper
Copy link

@nikcorg
Copy link
Author

nikcorg commented Sep 19, 2014

Updated, thank you.

@doolittle
Copy link

Usefulness of Uselessness (brad bouse): http://wholepixel.com/jsconf

(sorry, totally didn't optimize for file size)

@nikcorg
Copy link
Author

nikcorg commented Sep 20, 2014

Updated, thank you.

@7Ds7
Copy link

7Ds7 commented Sep 21, 2014

@nikcorg
Copy link
Author

nikcorg commented Sep 21, 2014

Thanks, updated.

@necccc
Copy link

necccc commented Sep 21, 2014

Rik Arends (@rikarends): Beyond HTML and CSS: Fusing Javascript and shaders for live graphics and UI programming
http://hello.onejs.io/

fork here
https://gist.github.com/necccc/7726f34f0f386d26b036

@nikcorg
Copy link
Author

nikcorg commented Sep 21, 2014

Thanks, updated.

@abiyasa
Copy link

abiyasa commented Oct 1, 2014

For "Hunter Loftis (@hunterloftis): We Will All Be Game Programmers", the slide is at http://wwabgp.herokuapp.com/ (from his Twitter status)

@nikcorg
Copy link
Author

nikcorg commented Oct 15, 2014

Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment