semi automated svg programming via direct manipulation
play

Semi-Automated SVG Programming via Direct Manipulation Brian Hempel - PowerPoint PPT Presentation

Semi-Automated SVG Programming via Direct Manipulation Brian Hempel and Ravi Chugh Direct Manipulation 2 Direct Manipulation Drawing Documents And so many more 3 But not for one application 4 Programming 5 Programming 5


  1. Semi-Automated SVG Programming via Direct Manipulation Brian Hempel and Ravi Chugh

  2. Direct Manipulation 2

  3. Direct Manipulation Drawing Documents And so many more… 3

  4. But not for one application… 4

  5. Programming 5

  6. Programming 5

  7. Programming 5

  8. Program 6

  9. Program 6

  10. Program 6

  11. Refactored Program Program 6

  12. Better for both experts and non-experts Refactored Program Program 6

  13. DM 7

  14. DM + Code 8

  15. Existing Approach: DM + Code 9

  16. Existing Approach: DM + Code Bret Victor, “Drawing Dynamic Visualizations” 10

  17. Existing Approach: DM + Code Bret Victor, “Drawing Dynamic Visualizations” Toby Schachman, “Apparatus” 10

  18. DM + Code 12

  19. Code + DM 12

  20. Our Approach: Code + DM Chugh et al. [PLDI ’16] 14

  21. Our Approach: Code + DM Chugh et al. [PLDI ’16] 15

  22. [PLDI ’16] Code First, Then DM 16

  23. Goal: Less Keyboard, More Mouse. 17

  24. 18

  25. Draw 19

  26. Draw Relate 20

  27. Draw Relate Abstract 21

  28. New DM Tools Draw Relate Abstract 22

  29. New DM Tools Draw Relate Abstract 23

  30. New DM Tools Draw Relate Abstract 24

  31. New DM Tools Draw Relate Abstract 25

  32. Draw Relate Abstract 26

  33. Demo Draw Relate Abstract 27

  34. Demo Draw Relate Abstract 28

  35. Draw Relate Abstract Sketch-n-Sketch Programming in 2015 29

  36. Draw Relate Abstract Sketch-n-Sketch Programming in 2015 30

  37. Draw Relate Abstract Sketch-n-Sketch Programming in 2015 let rect1 = ... let line2 = ... let line3 = ... 30

  38. Draw Relate Abstract Sketch-n-Sketch Programming in 2015 let rect1 = ... let line2 = ... let line3 = ... 30

  39. Draw Relate Abstract Sketch-n-Sketch Programming in 2015 31

  40. Draw Relate Abstract Sketch-n-Sketch Programming in 2015 let rect1_x = ... let rect1_y = ... let rect1 = ... let line2 = ... let line3 = ... 31

  41. Draw Relate Abstract Sketch-n-Sketch Programming in 2015 let rect1_x = ... let rect1_y = ... let rect1 = ... let line2 = ... let line3 = ... 31

  42. Draw Relate Abstract Sketch-n-Sketch Programming in 2015 let rect1_x = ... let rect1_y = ... let rect1 = ... let line2 = ... let line3 = ... 31

  43. Draw Relate Abstract Sketch-n-Sketch Programming in 2015 32

  44. Draw Relate Abstract Sketch-n-Sketch Programming in 2015 let group x y size = let rect1 = ... let line2 = ... let line3 = ... group 0 0 999999 32

  45. Draw Relate Abstract Sketch-n-Sketch Programming in 2015 let group x y size = let rect1 = ... let line2 = ... let line3 = ... group 0 0 999999 32

  46. Draw Relate Abstract Sketch-n-Sketch Programming in 2015 let group x y size = let rect1 = ... let line2 = ... let line3 = ... group 0 0 999999 32

  47. Draw Relate Abstract Sketch-n-Sketch Programming in 2015 let group x y size = let rect1 = ... let line2 = ... let line3 = ... group 0 0 999999 32

  48. Draw Relate Abstract Sketch-n-Sketch Programming in 2015 33

  49. Draw Relate Abstract Sketch-n-Sketch Sketch-n-Sketch++ 33

  50. Draw Relate Abstract Sketch-n-Sketch Sketch-n-Sketch++ 34

  51. Draw Relate Abstract Sketch-n-Sketch Sketch-n-Sketch++ (def polygon7_bot (+ (+ (* 0.5!... (def k3105 (/ (- (+ (- polygon6... (def polygon7_top (- (* 0.5! (+... (def [polygon5_right k3038] [(-... (def k3061 (/ (- (+ polygon5_ri... (def polygon6_bot (- (+ (- poly... (def k3063 (/ (- (+ polygon6_bo... (def polygon5_top (- polygon6_t... (def k3103 (/ (- (+ (- polygon5... (def [k3041 polygon5_bot] [(- p... (def k3134 (/ (- (+ k3041 helpe... (def k3141 (/ (- (+ k3038 helpe... 34

  52. Draw Relate Abstract Sketch-n-Sketch Sketch-n-Sketch++ Smarter (def polygon7_bot (+ (+ (* 0.5!... (def k3105 (/ (- (+ (- polygon6... (def polygon7_top (- (* 0.5! (+... Algebra (def [polygon5_right k3038] [(-... (def k3061 (/ (- (+ polygon5_ri... (def polygon6_bot (- (+ (- poly... (def k3063 (/ (- (+ polygon6_bo... + (def polygon5_top (- polygon6_t... (def k3103 (/ (- (+ (- polygon5... (def [k3041 polygon5_bot] [(- p... (def k3134 (/ (- (+ k3041 helpe... Helper (def k3141 (/ (- (+ k3038 helpe... Functions 34

  53. Draw Relate Abstract Sketch-n-Sketch Sketch-n-Sketch++ 35

  54. Draw Relate Abstract Sketch-n-Sketch Sketch-n-Sketch++ ; Top-Level Defs (def rect1 ...) (def line2 ...) (def line3 ...) ; Main Expression [ rect1 ... ] 35

  55. Draw Relate Abstract Sketch-n-Sketch Sketch-n-Sketch++ ; Top-Level Defs Refactor (def group1 (def rect1 ...) (def rect1 ...) Programs (def line2 ...) (def line2 ...) (def line3 ...) (def line3 ...) of Arbitrary ; Main Expression Structure [ rect1 ... ] ) [ rect1 ... ] group1 36

  56. Draw Relate Abstract Sketch-n-Sketch Sketch-n-Sketch++ 37

  57. Draw Relate Abstract Sketch-n-Sketch Sketch-n-Sketch++ 37

  58. Draw Relate Abstract Sketch-n-Sketch Sketch-n-Sketch++ ?? ? ? ? ?? ? ? ? 37

  59. Draw Relate Abstract Sketch-n-Sketch Sketch-n-Sketch++ ?? Additional 
 Interaction 
 ? ? to Resolve 
 ? User Intent ?? ? ? ? 37

  60. Program 38

  61. Program 38

  62. Program Domain-specific 38

  63. Program General Domain-specific 38

  64. Program General Domain-specific 38

  65. Program General Domain-specific 38

  66. Program General Domain-specific 38

  67. Program General Domain-specific 38

  68. Program General Domain-specific 38

  69. Program General Domain-specific 38

  70. Related Work 39

  71. Related Work DM + Code DDV Apparatus 39

  72. Related Work Programming 
 by Example DM + Code Chimera DDV Metamouse Apparatus Mondrian 39

  73. Related Work Programming 
 by Example DM + Code Domain Apps Chimera DDV Parametric CAD Metamouse Apparatus Procedural modeling Mondrian 39

  74. Related Work Programming 
 by Example DM + Code Domain Apps Chimera DDV Parametric CAD Metamouse Apparatus Procedural modeling Mondrian Constraint Oriented Systems Sketchpad ThingLab Juno-2 39

  75. Related Work Programming 
 by Example DM + Code Domain Apps Chimera DDV Parametric CAD Metamouse Apparatus Procedural modeling Mondrian Constraint Code + DM Oriented Systems Wang et al. Sketchpad Live PBE ThingLab McDirmid’s Demos Juno-2 Sketch-n-Sketch 39

  76. Our Approach Start with general-purpose language add D.M. features. 40

  77. Goal: Less Keyboard, More Mouse. 41

  78. Sketch-n-Sketch https://ravichugh.github.io/sketch-n-sketch Demos on YouTube 42

  79. Sketch-n-Sketch https://ravichugh.github.io/sketch-n-sketch Demos on YouTube Just google “sketch n sketch” 42

  80. Thank you! 43

  81. 44

  82. Extra Slides 45

  83. Traces 46

  84. Traces let a = 3 in 46

  85. Traces let a = 3 in let b = 5 in 46

  86. Traces let a = 3 in let b = 5 in a + b 46

  87. Traces let a = 3 in let b = 5 in a + b ⇓ 46

  88. Traces let a = 3 in let b = 5 in a + b ⇓ 8 46

  89. Traces let a = 3 a in let b = 5 in a + b ⇓ 8 47

  90. Traces let a = 3 a in let b = 5 b in a + b ⇓ 8 48

  91. Traces let a = 3 a in let b = 5 b in a + b ⇓ 8 a+b 49

Recommend


More recommend