PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix(...
Transcript of PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix(...
![Page 1: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/1.jpg)
![Page 2: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/2.jpg)
PEER-TO-PEER NUMERIC COMPUTING WITHJAVASCRIPT
/ Athan Reines @kgryte
![Page 3: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/3.jpg)
![Page 4: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/4.jpg)
![Page 10: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/10.jpg)
![Page 11: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/11.jpg)
WHY JAVASCRIPT?
![Page 12: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/12.jpg)
UBIQUITY
![Page 14: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/14.jpg)
IN-BROWSER ANALYSIS
![Page 15: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/15.jpg)
DATA PIPELINESSTREAMS
source.pipe( transform ).pipe( transform ).pipe( destination );
CLI
$ cat ./data.csv | node ./bin/filter | node ./bin/stats > ./out.txt
![Page 17: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/17.jpg)
Data Structures
arrays matrices ndarrays (in progress) data frames (in progress)
![Page 18: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/18.jpg)
var matrix = require( 'dstructs-matrix' );
var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */
mat.sset( '1:3,:', 5 ); /* [ 0 0 5 5 5 5 0 0 0 0 ] */
![Page 19: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/19.jpg)
Validation
positive zero safe integer permutation positive integer array
...many others
![Page 20: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/20.jpg)
var isUint32Array = require( 'validate.io-uint32array' ); var isPosIntArray = require( 'validate.io-positive-integer-array' );
function foo( x ) { if ( !isUint32Array( x ) && !isPosIntArray( x ) ) { throw new TypeError( 'invalid input argument. Value: ̀'+x+'̀.' ); } ... }
![Page 21: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/21.jpg)
Computation
error function quantiles fliplr cosine similarity
...many others
![Page 22: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/22.jpg)
var matrix = require( 'dstructs-matrix' ); var mean = require( 'compute-mean' );
var mat = matrix( [7,3,9,11], [2,2], 'float64' ); /* [ 7 3 9 11 ] */
// Compute the mean across the columns: var mu = mean( mat, {'dim': 2} ); /* [ 5 10 ] */
![Page 23: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/23.jpg)
Distributions
probability density functions moment generating functions random variates quantiles
...many others
![Page 24: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/24.jpg)
var randn = require( 'distributions-normal-random' );
// Seed the generator: randn.seed = 52;
// Generate a matrix of random variates: var mat = randn( [3,2], {'dtype': 'float64'} ); /* [ -0.482 0.274 0.725 1.113 0.608 1.050 ] */
![Page 25: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/25.jpg)
Random
lcg random data
...many others
![Page 26: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/26.jpg)
var randc = require( 'rand-color-hexadecimal' );
var hex = randc(); // returns '<color>'; e.g., '474747'
![Page 27: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/27.jpg)
Streams
split map join statistics
...many others
![Page 28: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/28.jpg)
var splitStream = require( 'flow-split' ); var mapStream = require( 'flow-map' ); var joinStream = require( 'flow-join' );
function map( value, idx ) { value = parseFloat( value ); return (value * idx).toString(); }
var sStream = splitStream( {'sep': '/\r?\n/'} ); var jStream = joinStream( {'sep': '\n'} ); var mStream = mapStream( map );
process.stdin .pipe( sStream ) .pipe( mStream ) .pipe( jStream ) .pipe( process.stdout );
![Page 29: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/29.jpg)
'1\n2\n3\n4\n' | flow-map ./transform.js | <stdin> $ echo -n $
![Page 30: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/30.jpg)
Charts
timeseries scatterplot network matrix diagrams
...many others
![Page 31: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/31.jpg)
Data
Iris sentiment analysis first name frequencies
...many others
![Page 32: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/32.jpg)
var toMatrix = require( 'dstructs-to-matrix' ); var iris = require( 'datasets-iris' );
var mat = toMatrix([ iris.setosa.sepal.len, iris.setosa.sepal.width, iris.setosa.petal.len, iris.setosa.petal.width, iris.versicolor.sepal.len, iris.versicolor.sepal.width, iris.versicolor.petal.len, iris.versicolor.petal.width, iris.virginica.sepal.len, iris.virginica.sepal.width, iris.virginica.petal.len, iris.virginica.petal.width ]);
![Page 34: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/34.jpg)
WHERE ARE WE NOW?
![Page 35: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/35.jpg)
> 1500 repos
> 1000 are public
>600 published modules
...a lot more to come
![Page 36: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/36.jpg)
FUTURE WORKworkflow
modules
documentation
community
![Page 39: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/39.jpg)
wrtcsimple-peerwebrtc-connectmultiplexrpc-multistream
![Page 40: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/40.jpg)
SIMPLE var server = rpc( methods ); var client = rpc();
client.pipe( server ).pipe( client );
client.on( 'methods', onMethods );
function onMethods( methods ) { methods.matrix( [0,1,2,3,4,5,6,7,8,9], [5,2], 'int16', onMatrix ); }
function onMatrix( err, matrix ) { if ( err ) { throw err; } ... }
![Page 41: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/41.jpg)
TCPServer
var rpc = require( 'rpc-multistream' ); var net = require( 'net' );
var server = rpc( methods ); server.on( 'methods', runAnalysis );
net.createServer( onConnection ).listen( 4242 );
function onConnection( connection ) { connection.pipe( server ).pipe( connection ); }
![Page 42: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/42.jpg)
TCPClient
var rpc = require( 'rpc-multistream' ); var net = require( 'net' );
var client = rpc( methods ); client.on( 'methods', runAnalysis );
var connection = net.connect( {'port':4242}, onConnect );
function onConnect() { connection.pipe( client ).pipe( connection ); }
![Page 43: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/43.jpg)
WEBRTCPeer 1
var rpc = require( 'rpc-multistream' ); var rtcc = require( 'webrtc-connect' );
var server = rpc( methods ); server.on( 'methods', runAnalysis );
rtcc.createServer( onPeer ).listen( 9999, '127.0.0.1' );
function onPeer( error, peer ) { if ( error ) { throw error; } peer.pipe( server ).pipe( peer ); }
![Page 44: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/44.jpg)
WEBRTCPeer 2
var rpc = require( 'rpc-multistream' ); var rtcc = require( 'webrtc-connect' );
var client = rpc( methods ); client.on( 'methods', runAnalysis );
rtcc.connect( {'port':9999,'url':'http://127.0.0.1'}, onPeer );
function onPeer( error, peer ) { if ( error ) { throw error; } peer.pipe( client ).pipe( peer ); }
![Page 46: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/46.jpg)
github.com/kgryte/talks-nodejs-interactive-2015
![Page 47: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/47.jpg)
CONTRIBUTORS
Philipp Burckhardt @burckhap
Robert Gislason Rebekah Smith @froodette
![Page 48: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/48.jpg)
github/kgryte
npmjs/~kgryte
@kgryte
![Page 49: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/49.jpg)
![Page 50: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/50.jpg)
APPENDIX
![Page 51: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/51.jpg)
![Page 52: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/52.jpg)
BIO
![Page 53: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/53.jpg)
![Page 54: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/54.jpg)
CONTEXT
![Page 55: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/55.jpg)
1970s
1980
1985
1986
![Page 56: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/56.jpg)
1988
1995
1997
2009
![Page 57: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/57.jpg)
2005
2010
2011
2012
![Page 58: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/58.jpg)
2005
2009
2011
2011
![Page 59: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/59.jpg)
open source
web technologies
decoupling computation and consumption
![Page 60: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/60.jpg)
WHY JAVASCRIPT?
![Page 62: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/62.jpg)
JSON { "type": "Matrix", "dtype": "int8", "shape": [5,2], "offset": 0, "strides": [2,1], "raw": true, "data": [4,2,13,1,1,8,21,9,9,11] }
![Page 63: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/63.jpg)
WEB TECHNOLOGIES
![Page 65: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/65.jpg)
WHAT COULD BE BETTER?
![Page 66: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/66.jpg)
(and bitwise ops)Int64Typed ObjectsWebCLSIMD (long)Parallel ComputingOperator OverloadingWeb Assembly
![Page 67: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/67.jpg)
INTEGER SUPPORTdiscussiongistInt64 in R
![Page 68: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/68.jpg)
TYPED OBJECTSspecexplainertyped data structures in Go
![Page 70: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/70.jpg)
SIMDpolyfillIntel announcementMDNpresentation
![Page 71: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/71.jpg)
PARALLEL COMPUTINGData parallelismTask parallelismSchedulerLock-free programmingShared Memory Web Workers
![Page 72: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/72.jpg)
OPERATOR OVERLOADINGoperator-overloading-jspaper.jspaper.js source
![Page 73: PEER-TO-PEER NUMERIC COMPUTING WITH · var matrix = require( 'dstructs-matrix' ); var mat = matrix( [5,2], 'int16' ); /* [ 0 0 0 0 0 0 0 0 0 0 ] */ mat.sset( '1:3,:', 5 ); /* [ 0](https://reader034.fdocuments.us/reader034/viewer/2022050606/5fad43e52d9309210c5c6aa2/html5/thumbnails/73.jpg)
THE END