<commit_before><!doctype html>
<html lang="en">
<head>
	<meta charset="utf-8">

	<title>Talk | Node.js Interactive 2015 | Peer-to-Peer Numeric Computing with JavaScript</title>

	<meta name="description" content="Node.js Interactive (2015) talk on peer-to-peer numeric computing with JavaScript.">
	<meta name="author" content="<NAME>">

	<meta name="apple-mobile-web-app-capable" content="yes">
	<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">

	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">

	<link rel="stylesheet" href="css/grid.css">
	<link rel="stylesheet" href="css/reveal.css">
	<link rel="stylesheet" href="css/theme/white.css">
	<link rel="stylesheet" href="css/style.css">

	<!-- Code syntax highlighting -->
	<link rel="stylesheet" href="css/code/zenburn.css">

	<!-- Printing and PDF exports -->
	<script src="js/lib/reveal/pdf.js"></script>

	<!--[if lt IE 9]>
	<script src="js/lib/reveal/html5shiv.js"></script>
	<![endif]-->
</head>

<body>

	<div class="reveal">

		<!-- Any section element inside of this container is displayed as a slide -->
		<div class="slides">
			<section class="center">
				<!-- <h1>Node.js Interactive 2015</h1> -->
				<h3>Peer-to-Peer Numeric Computing with JavaScript</h3>
				<p>
					<small><a href="https://github.com/kgryte"><NAME></a> / <a href="https://twitter.com/kgryte">@kgryte</a></small>
				</p>
			</section>

			<section class="center">
				<p>...about me</p>
			</section>

			<section>
				<div class="row">
					<div class="column column-6">Oxford University Logo</div>
					<div class="column column-6">Decoded Logo</div>
				</div>
				<div class="row">
					<div class="column column-6">Nodeprime</div>
					<div class="column column-6">Vurb</div>
				</div>
			</section>

			<section class="center">
				<pre><code class="hljs" data-trim contenteditable>
function beep() {
    console.log( 'boop' );
}
				</code></pre>
			</section>

			<section>
				<h2>Motivations</h2>
				<ul>
					<li class="fragment">In-browser analysis</li>
					<li class="fragment">Decreased server load</li>
					<li class="fragment">Visualization environment</li>
					<li class="fragment">Streams</li>
					<li class="fragment">JSON</li>
					<li class="fragment">Performance</li>
					<li class="fragment">Ubiquity</li>
					<li class="fragment">CLI</li>
					<li class="fragment">Electron</li>
					<li class="fragment">Web Technologies</li>
				</ul>
				<aside class="notes">
					<ul>
						<li>
							The browser is a powerful IDE.
						</li>
						<li>
							Easier to scale. Leveraging the client enables less server infrastructure (outsourcing computation).
						</li>
						<li>
							Visualization already happens in the browser. Every solution wants to display D3 and WebGL plots. But every solution which does so requires complex communication logic.
						</li>
						<li>
							Streams API: while nothing inherent to JavaScript itself, its prevalence as a programming pattern facilitates a different way of thinking about problems compared to the procedural paradigms found in MATLAB, etc.
						</li>
						<li>
							JSON is a first-class citizen. Often in other languages, considerable time is spent marshalling and unmarshalling data from JSON. While JSON is still marshalled/unmarshalled, support for JSON is built-in and 1:1 correspondence between file structure and program structure. Additionally, JSON facilitates different data access patterns. And lastly, JSON is a predominant transport format for the web and almost any API.
						</li>
						<li>
							The JavaScript runtime environment is an environment which is under constant pressure to run faster. In other languages, you simply choose a different language if you want to go faster; just kind of accepted. With JavaScript, ain't going to go away anytime soon and don't have the luxury to use some other "faster" language. We see all sorts of optimizations from the compiler on up: code invariant loop motion, dead code elimination, cache inlining, etc. These may happen elsewhere, but I hypothesize with much less fervor.
						</li>
						<li>
							JavaScript is everywhere. Almost everything either already runs or supports running a browser. Distribution is streamlined.
						</li>
						<li>
							Creating (general purpose) command-line utilities is easy and an accepted practice. Not the case with other environments; e.g., MATLAB, Python, R.
						</li>
						<li>
							Straightforward to take a browser app and make it a desktop application.
						</li>
						<li>
							"Natively" supported browser technologies; e.g., WebRTC, WebGL, audio, video, etc. Basically, built-in drivers. Hard to find in other environments.
						</li>
					</ul>
				</aside>
			</section>

			<section class="center">
				<h2>Wishlist</h2>
				<ul>
					<li class="fragment">Int, <a href="https://developer.mozilla.org/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/Int64">Int64</a></li>
					<li class="fragment"><a href="https://en.wikipedia.org/wiki/WebCL">WebCL</a></li>
					<li class="fragment"><a href="https://hacks.mozilla.org/2014/10/introducing-simd-js/">SIMD (long)</a></li>
					<!--
						polyfill: https://github.com/tc39/ecmascript_simd/blob/master/src/ecmascript_simd.js

						Intel announcement: https://01.org/blogs/tlcounts/2014/bringing-simd-javascript

						MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SIMD
					-->
					<li class="fragment"><a href="http://www.2ality.com/2013/12/paralleljs.html">Parallel Computing</a></li>
					<li class="fragment"><a href="http://www.2ality.com/2011/12/fake-operator-overloading.html">Operator Overloading</a></li>
					<!--
						operator-overloading-js: https://github.com/kushal-likhi/operator-overloading-js

						paper.js: http://scratchdisk.com/posts/operator-overloading

						paper.js src: https://github.com/paperjs/paper.js/blob/master/src/core/PaperScript.js
					-->
				</ul>
			</section>

			<section>
				<h2>Contributors</h2>
				<div class="row">
					<div class="column column-4">Philipp Photo</div>
					<div class="column column-4">Robert Photo</div>
					<div class="column column-4">Rebekah Photo</div>
				</div>
			</section>

			<section class="center">
				<h2>Contact</h2>
				<ul>
					<li><a href="https://github.com/kgryte">github/kgryte</a></li>
					<li><a href="https://twitter.com/kgryte">@kgryte</a></li>
					<li><a href="mailto:<EMAIL>"><EMAIL></a></li>
				</ul>
			</section>

			<section class="center">
				<h2>Appendix</h2>
			</section>

		</div>

	</div>

	<script src="js/lib/reveal/head.min.js"></script>
	<script src="js/lib/reveal/reveal.js"></script>
	<script src="js/lib/reveal/init.js"></script>
</body>
</html><commit_msg>Add ToC and appendix items<commit_after><!doctype html>
<html lang="en">
<head>
	<meta charset="utf-8">

	<title>Talk | Node.js Interactive 2015 | Peer-to-Peer Numeric Computing with JavaScript</title>

	<meta name="description" content="Node.js Interactive (2015) talk on peer-to-peer numeric computing with JavaScript.">
	<meta name="author" content="<NAME>">

	<meta name="apple-mobile-web-app-capable" content="yes">
	<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">

	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">

	<link rel="stylesheet" href="css/grid.css">
	<link rel="stylesheet" href="css/reveal.css">
	<link rel="stylesheet" href="css/theme/white.css">
	<link rel="stylesheet" href="css/style.css">

	<!-- Code syntax highlighting -->
	<link rel="stylesheet" href="css/code/zenburn.css">

	<!-- Printing and PDF exports -->
	<script src="js/lib/reveal/pdf.js"></script>

	<!--[if lt IE 9]>
	<script src="js/lib/reveal/html5shiv.js"></script>
	<![endif]-->
</head>

<body>

	<div class="reveal">

		<!-- Any section element inside of this container is displayed as a slide -->
		<div class="slides">
			<section class="center">
				<!-- <h1>Node.js Interactive 2015</h1> -->
				<h3>Peer-to-Peer Numeric Computing with JavaScript</h3>
				<p>
					<small><a href="https://github.com/kgryte"><NAME></a> / <a href="https://twitter.com/kgryte">@kgryte</a></small>
				</p>
			</section>

			<section class="center">
				<div class="row">
					<ul class="column column-12">
						<li class="fragment">Intro</li>
						<li class="fragment">Overview</li>
						<li class="fragment">Motivations</li>
						<li class="fragment">Numeric Computing</li>
						<li class="fragment">Peer-to-Peer</li>
						<li class="fragment">Future Work</li>
						<li class="fragment">Wrap-up</li>
					</ul>
				</div>
			</section>

			<section class="center">
				<h2>Intro</h2>
			</section>

			<section>
				<div class="row">
					<div class="column column-6">Oxford University Logo</div>
					<div class="column column-6">Decoded Logo</div>
				</div>
				<div class="row">
					<div class="column column-6">Nodeprime</div>
					<div class="column column-6">Vurb</div>
				</div>
			</section>

			<section class="center">
				<pre><code class="hljs" data-trim contenteditable>
function beep() {
    console.log( 'boop' );
}
				</code></pre>
			</section>

			<section class="center">
				<h2>Motivations</h2>
				<aside class="notes">
					Why JavaScript? Why is this environment/platform any more suitable than already established platforms built on Python, R, Julia, etc? Any inherent advantages?
				</aside>
			</section>

			<section class="center">
				<h2>Ubiquity</h2>
				<aside class="notes">
					JavaScript is everywhere. Almost everything either already runs or supports running a browser. Distribution is streamlined.
				</aside>
			</section>

			<section class="center">
				<h2>Performance</h2>
				<aside class="notes">
					The JavaScript runtime environment is an environment which is under constant pressure to run faster. In other languages, you simply choose a different language if you want to go faster; just kind of accepted. With JavaScript, ain't going to go away anytime soon and don't have the luxury to use some other "faster" language. We see all sorts of optimizations from the compiler on up: code invariant loop motion, dead code elimination, cache inlining, etc. These may happen elsewhere, but I hypothesize with much less fervor.
				</aside>
			</section>

			<section class="center">
				<h2>Visualization</h2>
				<aside class="notes">
					Visualization already happens in the browser. Every solution wants to display D3 and WebGL plots. But every solution which does so requires complex communication logic.
				</aside>
			</section>

			<section class="center">
				<h2>JSON</h2>
				<aside class="notes">
					JSON is a first-class citizen. Often in other languages, considerable time is spent marshalling and unmarshalling data from JSON. While JSON is still marshalled/unmarshalled, support for JSON is built-in and 1:1 correspondence between file structure and program structure. Additionally, JSON facilitates different data access patterns. And lastly, JSON is a predominant transport format for the web and almost any API.
				</aside>
			</section>

			<section class="center">
				<h2>Streams</h2>
				<aside class="notes">
					Streams API: while nothing inherent to JavaScript itself, its prevalence as a programming pattern facilitates a different way of thinking about problems compared to the procedural paradigms found in MATLAB, etc.
				</aside>
			</section>

			<section class="center">
				<h2>In-browser analysis</h2>
				<aside class="notes">
					The browser is a powerful IDE.
				</aside>
			</section>

			<section class="center">
				<h2>Server Load</h2>
				<aside class="notes">
					Easier to scale. Leveraging the client enables less server infrastructure (outsourcing computation).
				</aside>
			</section>

			<section class="center">
				<h2>CLI</h2>
				<aside class="notes">
					Creating (general purpose) command-line utilities is easy and an accepted practice. Not the case with other environments; e.g., MATLAB, Python, R.
				</aside>
			</section>

			<section class="center">
				<h2>Electron</h2>
				<aside class="notes">
					Straightforward to take a browser app and make it a desktop application.
				</aside>
			</section>

			<section class="center">
				<h2>Web Technologies</h2>
				<aside class="notes">
					"Natively" supported browser technologies; e.g., WebRTC, WebGL, audio, video, etc. Basically, built-in drivers. Hard to find in other environments.
				</aside>
			</section>

			<section>

			</section>

			<section class="center">
				<h2>Wishlist</h2>
				<ul>
					<li class="fragment">
						<a href="https://developer.mozilla.org/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/Int64">Int64</a>
					</li>
					<li class="fragment">
						<a href="http://wiki.ecmascript.org/doku.php?id=harmony:typed_objects">Typed Objects</a>
					</li>
					<li class="fragment">
						<a href="https://en.wikipedia.org/wiki/WebCL">WebCL</a>
					</li>
					<li class="fragment">
						<a href="https://hacks.mozilla.org/2014/10/introducing-simd-js/">SIMD (long)</a>
					</li>
					<li class="fragment">
						<a href="http://www.2ality.com/2013/12/paralleljs.html">Parallel Computing</a>
					</li>
					<li class="fragment">
						<a href="http://www.2ality.com/2011/12/fake-operator-overloading.html">Operator Overloading</a>
					</li>
					<li class="fragment">
						<a href="https://medium.com/javascript-scene/why-we-need-webassembly-an-interview-with-brendan-eich-7fb2a60b0723#.8cos1ynh1">Web Assembly</a>
					</li>
				</ul>
			</section>

			<section>
				<h2>Contributors</h2>
				<div class="row">
					<div class="column column-4">Philipp Photo</div>
					<div class="column column-4">Robert Photo</div>
					<div class="column column-4">Rebekah Photo</div>
				</div>
			</section>

			<section class="center">
				<h2>Contact</h2>
				<ul>
					<li><a href="https://github.com/kgryte">github/kgryte</a></li>
					<li><a href="https://twitter.com/kgryte">@kgryte</a></li>
					<li><a href="mailto:<EMAIL>"><EMAIL></a></li>
				</ul>
			</section>

			<section class="center">
				<h2>Appendix</h2>
			</section>

			<section class="center">
				<h2>Integer Support</h2>
				<ul>
					<li>
						<a href="https://esdiscuss.org/topic/efficient-64-bit-arithmetic#content-7">discussion</a>
					</li>
					<li>
						<a href="https://gist.github.com/BrendanEich/4294d5c212a6d2254703">gist</a>
					</li>
				</ul>
			</section>

			<section class="center">
				<h2>Typed Objects</h2>
				<ul>
					<li>
						<a href="https://github.com/dslomov/typed-objects-es7">spec</a>
					</li>
					<li>
						<a href="https://github.com/nikomatsakis/typed-objects-explainer/">explainer</a>
					</li>
				</ul>
			</section>

			<section class="center">
				<h2>WebCL</h2>
				<ul>
					<li>
						<a href="https://github.com/mikeseven/node-opencl">node-opencl</a>
					</li>
			</section>

			<section class="center">
				<h2>SIMD</h2>
				<ul>
					<li>
						<a href="https://github.com/tc39/ecmascript_simd/blob/master/src/ecmascript_simd.js">polyfill</a>
					</li>
					<li>
						<a href="https://01.org/blogs/tlcounts/2014/bringing-simd-javascript">Intel announcement</a>
					</li>
					<li>
						<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SIMD">MDN</a>
					</li>
				</ul>
			</section>

			<section class="center">
				<h2>Operator Overloading</h2>
				<ul>
					<li>
						<a href="https://github.com/kushal-likhi/operator-overloading-js">operator-overloading-js</a>
					</li>
					<li>
						<a href="http://scratchdisk.com/posts/operator-overloading">paper.js</a>
					</li>
					<li>
						<a href="https://github.com/paperjs/paper.js/blob/master/src/core/PaperScript.js">paper.js source</a>
					</li>
				</ul>
			</section>

			<section class="center">
				<h2>The End</h2>
			</section>

		</div>

	</div>

	<script src="js/lib/reveal/head.min.js"></script>
	<script src="js/lib/reveal/reveal.js"></script>
	<script src="js/lib/reveal/init.js"></script>
</body>
</html>
{'fraction_non_alphanumeric': 0.16074962889658584, 'fraction_numerical': 0.013421573478476003, 'mean_word_length': 3.3278907922912206, 'pattern_counts': {'":': 0, '<': 512, '<?xml version=': 0, '>': 512, 'https://': 30, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1154556', 'n_tokens_mistral': 6648, 'n_tokens_neox': 5209, 'n_words': 1319}