Mobile CDF Deployment

Rob Raguet-Schofield

Wolfram Research

October 20, 2015

The Elephant in the Room

I have given a talk with this title at this conference a few times now.  What is different now?

For the past few years I have demonstrated technology.  This year I am demonstrating products.  One of these products has already shipped.  The other two products will ship soon.

Deploy your CDF content to mobile devices using Wolfram’s apps or yours.

Wolfram Cloud

Wolfram Cloud for iOS uses web technologies to display and edit CDF content on your iOS device.

Wolfram Cloud is availble now for iOS.

Features

Create and edit documents

Perform computations in Wolfram Cloud

More CPU available

More RAM available

Less battery impact for big computations

Small download size

Thin client app relies on web services for heavy lifting

Limitations

Requires network connection

Limited interactivity

More About Wolfram Cloud

For more information attend Nick’s talk at 4:30 PM today.

Wolfram Player

Our users have frequently requested a standalone native Player app for iOS, so we built it.

Wolfram Player will be available for iOS in the near future (planned for 2015)

We plan to make the app available for free

Free app will statically display arbitrary CDF documents

Free app will allow full dynamic interactivity for EnterpriseCDF documents

Optional in-app purchase (reasonable price) will enable full dynamic interactivity for arbitrary CDF documents

Native App

Platform appropriate user interface and user experience

Local computations for improved interactivity

Typesetting

∫(Sqrt[x+(Sqrt[x])])\[DifferentialD]x

TraditionalForm[%]

Graphics

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

Graphics3D

RegionPlot3D[x y z<1,{x,-5,5},{y,-5,5},{z,-5,5},PlotStyle->Directive[Yellow,Opacity[0.5]],Mesh->None]

Dynamic

Checkbox[Dynamic[foo]]

Graphics[{Red,Disk[{0,.25},.5],Green,Disk[{-.33,-.25},.5],Blue,Disk[{.33,-.25},.5]},Background->Dynamic[If[foo,RGBColor[0,0,0],RGBColor[1,1,1]]]]

Manipulate

Manipulate[ContourPlot3D[x^2+y^2+a z^3==1,{x,-2,2},{y,-2,2},{z,-2,2},Mesh->None],{a,-2,2}]

Built for touchscreens

MousePosition[]

Style[Dynamic[TouchPosition[]],Background->Green]

DynamicModule[{r=.5},GestureHandler[
Graphics3D[{Sphere[{0,0,0},Dynamic[r]]},ImageSize->300,PlotRange->1,Method->{"RotationControl"->None}],{
"Drag":>Function[r+={Sequence@First[#],1}]
}]]

Manipulate[Expand[(a+b)^n],{n,1,100,1},
ControlType->VerticalSlider,
TouchscreenControlPlacement->Right]

Limitations

Relatively large app download size

A couple hundred megabytes

Full Wolfram Engine embedded

Read-only documents

Like Player on desktop systems, Wolfram Player for iOS does not allow content creation

Incomplete features

EventHandler

TabView

Locator (outside of Manipulate)

InputField limitations

JLink

DatabaseLink

Performance

Constrained RAM on older devices

Slower CPU than desktops and laptops

Other limitations

Wolfram Engine session cannot currently be restarted

CDFKit

CDFKit for iOS is currently being tested by a few partners and will soon be available more widely.

SDK

CDFKit is an iOS SDK. Clients can embed CDFKit into their iOS applications to:

Display and interact with CDF content

Perform evaluations of Wolfram Language expressions

CDFKit has a concise interface that can be called from your native Objective-C or Swift code.

App types

CDF content can cover the screen or occupy just a subset of the screen.

Wolfram Player is built using CDFKit.

We are building a version of the Wolfram Alpha app that uses CDFKit for interactive outputs.