Skip to content

Commit c932eeb

Browse files
committed
short babylonian programming slides
SQUASHED: AUTO-COMMIT-src-babylonian-programming-editor-presentation-short.md,AUTO-COMMIT-src-client-lively.js,
1 parent ccdfc43 commit c932eeb

File tree

1 file changed

+231
-0
lines changed
  • src/babylonian-programming-editor/presentation

1 file changed

+231
-0
lines changed
Lines changed: 231 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,231 @@
1+
<!-- markdown-config presentation=true -->
2+
3+
<link rel="stylesheet" type="text/css" href="../../../src/client/presentation.css" />
4+
<link rel="stylesheet" type="text/css" href="../../../src/client/lively.css" />
5+
<link rel="stylesheet" type="text/css" href="../../../templates/livelystyle.css" />
6+
7+
<style>
8+
9+
.centered {
10+
display: block;
11+
margin-left: auto;
12+
margin-right: auto;
13+
}
14+
15+
.left {
16+
position: absolute;
17+
width: 40%;
18+
left: 20px;
19+
top: 150px;
20+
}
21+
22+
.right {
23+
position: absolute;
24+
width: 50%;
25+
right: 10px;
26+
top: 100px;
27+
}
28+
29+
30+
.bottomLeft {
31+
width: 50%;
32+
position: absolute;
33+
bottom: 40px;
34+
left: 20px;
35+
}
36+
37+
.bottomRight {
38+
width: 50%;
39+
position: absolute;
40+
bottom: 40px;
41+
right: 20px;
42+
}
43+
44+
h2 {
45+
text-align: left;
46+
}
47+
48+
a:visited.plain, a:link.plain {
49+
color: inherit;
50+
text-decoration: none;
51+
}
52+
53+
h2.sub {
54+
margin-top: -20px;
55+
}
56+
57+
58+
59+
60+
61+
62+
63+
</style>
64+
65+
66+
![](knuth_1972_page1.png){style="position:absolute; top:40px; left:40px; width:400px; border: 1px solid lightgray"}
67+
68+
---
69+
70+
![](knuth_1972_page1.png){style="position:absolute; top:40px; left:40px; width:400px; border: 1px solid lightgray"}
71+
72+
![](knuth_1972_cistern.png){style="position:absolute; top:50px; left:450px; width:500px; border: 1px solid lightgray"}
73+
74+
75+
76+
---
77+
78+
![](knuth_1972_page1.png){style="position:absolute; top:40px; left:40px; width:400px; border: 1px solid lightgray"}
79+
80+
![](knuth_1972_cistern.png){style="position:absolute; top:50px; left:450px; width:500px; border: 1px solid lightgray"}
81+
82+
![](babylonian_smalltalk_motivation.png){style="position:absolute; top:290px; left:130px; width:800px; border: 1px solid lightgray"}
83+
84+
85+
---
86+
87+
![](babylonian_lion.png){style="width: 200px; position: absolute; right: 20px; bottom: 20px;"}
88+
89+
<div class="title">
90+
<a class="plain" href="https://arxiv.org/pdf/1902.00549">
91+
Babylonian-style Programming
92+
</a>
93+
</div>
94+
<div class="subtitle">
95+
Design and Implementation of a General-purpose Editor<br>Supporting the Integration of Live Examples into Source Code
96+
</div>
97+
98+
<div class="authors">
99+
David Rauch, Patrick Rein, Stefan Ramson, Jens Lincke, and Robert Hirschfeld
100+
</div>
101+
102+
103+
<div class="credentials">
104+
<br>
105+
<a class="plain" href="https://www.hpi.uni-potsdam.de/hirschfeld/">Software Architecture Group<br>
106+
Hasso Plattner Institute, University of Potsdam, Germany</a>
107+
<br>
108+
<br>
109+
<a class="plain" href="https://2019.programming-conference.org/"><b>‹Programming› 2019<br> Mon 1 - Thu 4 April 2019 Genoa, Italy</b></a>
110+
</div>
111+
112+
113+
114+
---
115+
## Existing Example-based Systems
116+
117+
![](example_based_systems.png){.centered}
118+
119+
---
120+
# Design
121+
## Probes {.sub}
122+
123+
- Probe source code for values
124+
- Attach to syntax elements
125+
- See values for examples
126+
- See changes during statement
127+
- Chronological order
128+
- Object inspector supported
129+
130+
![](design_probes.png){.right style="width:58%"}
131+
132+
---
133+
# Design
134+
## State over Time {.sub}
135+
136+
- Sliders
137+
- Attach to flow control structures
138+
- Scroll through iterations
139+
- Probes filter values
140+
- Easier correlation of values
141+
142+
![](design_state_over_time.png){.right style="width:40%"}
143+
144+
145+
---
146+
# Design
147+
## Objects and Data Structures {.sub}
148+
149+
- Supported by probes
150+
- Usable in examples
151+
- (Custom) instance templates
152+
- Links
153+
154+
![](design_objects_and_data_structures_1.png){.bottomLeft}
155+
![](design_objects_and_data_structures_2.png){.right}
156+
157+
<!-- #TODO source: @rhi, Fibonacci -> similar.... -->
158+
159+
---
160+
# Design
161+
## Behavioral Highlighting {.sub}
162+
163+
- Examples indicate intent
164+
- Fade out code that was not reached
165+
- Quickly find relevant code
166+
- Examine conditions without probes
167+
168+
169+
![](design_behavioural_highlighting.png){.right}
170+
171+
<!-- Behavioral highlighting for a conditional -->
172+
173+
---
174+
# Design
175+
## Persistent Examples {.sub}
176+
177+
- Serialized to JSON
178+
- Saved as comments
179+
- Before and after syntax elements
180+
- On load: parse and hide
181+
182+
![](design_persistent_examples.png){.right}
183+
184+
---
185+
# Design
186+
## Additional Features {.sub}
187+
188+
- Replacements
189+
- Replace source code
190+
- Only for example evaluation
191+
- Pre- and postscript
192+
- Run before and after example
193+
- Similar to setup and teardown
194+
195+
![](design_additional_features.png){.right}
196+
197+
198+
---
199+
<!-- #TODO pull this up into presentation? -->
200+
<script>
201+
202+
203+
204+
// poor men's slide master #Hack #TODO How to pull this better into lively-presentation?
205+
var ctx = this;
206+
(async () => {
207+
await lively.sleep(500)
208+
var presentation = lively.query(ctx, "lively-presentation")
209+
if (presentation && presentation.slides) {
210+
presentation.slides().forEach(ea => {
211+
var img = document.createElement("img")
212+
img.classList.add("logo")
213+
img.src="https://lively-kernel.org/lively4/lively4-seminars/PX2018/media/hpi_logo.png"
214+
img.setAttribute("width", "50px")
215+
ea.appendChild(img)
216+
var div = document.createElement("div")
217+
div.classList.add("page-number")
218+
ea.appendChild(div)
219+
});
220+
}
221+
222+
// hot fix
223+
await lively.sleep(500)
224+
Array.from(lively.allElements(true))
225+
.filter(ea => ea.textContent && ea.textContent.match(/^Like douc/)).forEach(ea => ea.textContent = "Like documentation")
226+
227+
228+
229+
return ""
230+
})()
231+
</script>

0 commit comments

Comments
 (0)