Top Banner
touch develo p a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research PEPM Workshop San Diego, January 20, 2014
30

Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

Dec 26, 2015

Download

Documents

Wilfrid Gardner
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

touchdevelop

a mobile IDE in the cloud

Michał Moskal, Nikolai Tillmann, Peli de Halleux,

Tom Ball, Sebastian Burckhardt, Manuel

Fähndrich*

Microsoft Research

PEPM WorkshopSan Diego, January 20, 2014

Page 2: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

first, most personal, and sometimes only computing device

can you really program on such a tiny screen?

Page 3: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

interfaces having always been changing

?

Page 4: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

web app (2012)

iOS, Android, Windows PhoneWindows, Mac, Linux

touchdevelop: a touch-first IDE

Windows Phone app(2011)

Page 5: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

core editing

demotouchdevelop

touchdevelop.com

Page 6: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

typed language + semi-structured editor

typed, imperative, procedural,data-structures, lambda expressions, module system

expressions edited as token sequences

auto-completion by crowd-sourcing

high-level abstractions

language + editor

Page 7: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

mission: democratize programming

touchdevelop: BASIC for all devices and the web(or Bourne Shell, AppleScript, VBA, Excel Macros, …)

Page 8: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

app-creators to be

students & teachers

enthusiasts

developers who want to prototype

goal: anyone with a computing device

who are our users

Page 9: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

publishing, hubcrowd-sourced crashes, coverage, profiles

Electronic Constructor, Rex, Buddy and the Bones

demotouchdevelop

touchdevelop.com

Page 10: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

future of programming: devices+cloud+social

Devices: phones, tablets, laptops, desktops, ...Works on all devices, keyboard or not -> editing ASTsEasy access to on-device media and sensorsScripts synchronized across all your devices

Cloud-powered: platform and user scriptsCrowd-sourced crash logging, profiling, coverage collectionCloud data and (soon) executionPlugins in the cloud

Social: user-generated contentScripts, libraries – come with source for tweakingComments, likes, tags, followers, ...Pictures and sounds – searchable Scripts as docs (especially libraries), tutorials (teaching)

Page 11: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

touchdevelop.com

400,000+ app downloads

160,000+registered users

70,000+published scripts

700+apps in stores

Page 12: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

script ::= meta-info decl*decl ::= action | page | event | global | library | recordaction ::= private? sync? action sig stmt*event ::= event sig stmt*page ::= private? page sig init stmt* display stmt*sig ::= id (id : type)* returns (id : type)*global ::= var id : type flag*record ::= cloud? (object | table | index | decorator) keys (id : type)* values (id : type)*stmt ::= expr | // comment | if expr then stmt* else stmt* | loop do stmt* | boxed stmt*loop ::= while expr | for id < expr | for each id in exprexpr ::= token* (where sig stmt*)*token ::= “...” | true | false | 0 | 1 | ... | ( | ) | , | + | * | ... | async | id |  → id

abstract syntax

Page 13: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

Manipulating TouchDevelop programs with TouchDevelop

demotouchdevelop

touchdevelop.com

Page 14: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

REST-based service APIs at http://touchdevelop.com/api/...

opportunity: data mining

lists properties

/api/scripts

/api/users

/api/comments

/api/screenshots

/api/reviews

/api/tags

/api/art

...

/api/[id]/api/[scriptid]/text/api/[scriptid]/ast/api/[scriptid]/successors/api/[scriptid]/base/api/[userid]/scripts/api/[scriptid]/comments/api/[scriptid]/screenshots /api/[scriptid]/reviews /api/[userid]/picture… touchdevelop.com/help/cloudservices

Page 15: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

high-velocity research platform

IDE powered by the clouddata mining: 1,000+ active user every day, 3,000,000+ program snapshotssocial features (sharing, attribution, discussions, …)information-flow analysis to deal with privacy concernscrowd-sourced profiling, code coverage, crash reportingranking of code by noveltylive programmingcloud-based code synthesis from keywordscloud statecoming soon: collaborative coding, adaptive tutorials, cloud execution, “apps”, …

Page 16: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

touchdevelop + education

1st App Day in May 2013, 500+ students. Many follow-up events, and 1500 students planned this year.130,000+ students doing TouchDevelop tutorials in Hour of Code.

Page 17: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

Interactive tutorials based on AST diff

demotouchdevelop

touchdevelop.com

Page 18: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

sharing data in the cloudmakes apps more social, fun, and convenient.examples: games, settings,chat, favorites, ratings, comments, grocery list…

just tag your data as ‘cloud’,we synchronize and merge

cloud state

cloud state

Page 19: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

putting parts of scripts in the cloudmakes mobile apps more efficient and enriches functionalitysupporting non-blockingexecution using distributed state

just tag your code as ‘cloud’, we do the rest…

coming soon: mobile cloud computing

cloudexecution

Page 20: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

Cloud chat

demotouchdevelop

touchdevelop.com

Page 21: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

try it yourself: touchdevelop.com

questions?touchdevelop

Page 22: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

building touchdevelop

backup slidestouchdevelop

Page 23: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

.ts

architecture

touchdevelop.com

Page 24: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

.js

152,000 lines of C#

12,000 lines of XAML

130,000 lines of C#(plus 10,000 lines of tools in C#)

the scale of things

60,000 lines of TypeScript

4,000 lines of CSS

Page 25: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

TypeScript JavaScript – types are great!TypeScript is JavaScript+type annotationsTypeScript compiler erases type annotations

reality check: HTML5 is still work in processno effective standard for storageno effective standard for sensor accessno effective standard for data accesstons of quirks in all engines

reflections after building web app

touchdevelop.com/help/platforms

Page 26: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

PC – legacy development model

Android: AIDE, App Inventor, …

iOS: Codea

mobile development environments are becoming popular on all platformsonly touchdevelop embraces new devices(touchscreen, editor, language, social)

related approaches: mobile IDEs

Page 27: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

code + run scripts on all devices

Page 28: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

highlights

Structured/token split editing TD plugins in TD operating on ASTs

Lint, C++ export, JSON schema generator, decamelizer, localizer, regex explorer, claudifier, many more possible!

Multiple refactorings extract to local, simplify, extract to parameter, promote to global/field, demote to

local, extract action, extract to library, surround with …

Wealth of data in the cloud Language research platform Tutorial – diff

Page 29: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

TouchDevelop (www.touchdevelop.com) is…

a simple statically-typed safe programming language

a browser-based programming environment

a set of high-level APIs for sensors, data, services, …

a cloud of programmers, scripts, users, data, bugs, …

Page 30: Touch develop a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research.

computing devices everywhere

smartphones, tablets – mobile, touchscreens

cloud-connected (intermittent)

social communities, crowd-sourcing

education

why do we care?