Cloud Notebooks

Jan Poeschko
Wolfram Research

Notebook interface

Integrate[1/(1-x^10),x]

Plot[Evaluate[Table[BesselJ[n,x],{n,4}]],{x,0,10},Filling->Axis]

Plot3D[Sin[x+y^2],{x,-3,3},{y,-2,2}]

Button["Write",Print[10!]]

Manipulate[Plot[Sin[a x+b],{x,0,6}],{{a,2,"Multiplier"},1,4,Appearance->"Labeled"},{{b,0,"Phase Parameter"},0,10,Appearance->"Labeled"}]

Optimizations

various JavaScript performance optimizations

faster updates of graphics (thanks to React)

smaller (initial) JavaScript bundle size (thanks to webpack & code splitting)

Server-side rendering

static HTML for faster initial view of notebooks (while downloading JS bundles)

generated whenever editing (and closing) or uploading a notebook

Node.js for server-side rendering using React

good for SEO

mostly using web fonts for consistency between client and server rendering

New in 1.44: Multi-click selection

Manipulate[ArrayPlot[Take[data,h,w]],{{data,RandomInteger[{0,1},{10,20}]},ControlType->None},{{h,5},1,10,1},{{w,5},1,20,1},Dynamic[Panel[Grid[Outer[Checkbox[Dynamic[data[[#1,#2]]],{0,1}]&,Range[h],Range[w]]]]]]

New in 1.44: Spell checking

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Deploying notebooks to the Cloud

CloudDeploy[Manipulate[x!,{x,1,10}],"test/Manipulate",Permissions->All->{"Read","Interact"}]

Deploying static content will produce static HTML:

grid=Grid[{{1,2},{3,4}}]

staticobj=CloudDeploy[grid,"test/DeployStatic"]

CloudObjectInformation[staticobj,"MIMEType"]

The static HTML is produced by HTMLFragment:

ExportString[grid,"HTMLFragment"]

CloudExport can be used to force generation of an actual notebook:

CloudExport[grid,"NB","test/ExportNB"]

Views and kernels

({{Editor (“product”) view, Deployed view}, {develop.wolframcloud.com, mathematica.wolframcloud.com, etc., www.wolframcloud.com}, {session kernel, public kernel}, {expires after a certain time of inactivity, no (or only short-lived) session}, {tied to browser session (shared between notebooks in same session), consumes owner’s cloud credits}, {requires authentication and product subscription, does not necessarily require authentication}, {Read permission is sufficient for interactivity, Interact permission needed for interactivity}})

New in 1.45: Stable notebook sessions

no more “session expired” warning that requires a full page refresh

kernel session will still time out after inactivity

Future

box editor for math, grids, etc.

live collaboration on notebooks

Thank you!

Get in touch:

jpoeschko@wolfram.com