-
Notifications
You must be signed in to change notification settings - Fork 2
/
index.html
539 lines (479 loc) · 24.9 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-122958892-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'UA-122958892-1');
</script>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="Hazel is a live functional programming environment featuring typed holes.">
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet">
<title>Hazel, a live functional programming environment featuring typed holes.</title>
<style>
* {
box-sizing: border-box;
}
.contributor-list {
margin-bottom: 10px;
}
.contributor-item {
display: grid;
grid-template-columns: auto 1fr;
}
.contributor-item>.date {
text-align: right;
}
body {
margin: 0px;
background-color: wheat;
font-family: Arial, sans-serif;
/* Oxygen */
padding: 0px !important;
}
.header {
font-family: Montserrat, sans-serif;
width: 100%;
padding-top: 20px;
padding-bottom: 20px;
padding-left: 20px;
font-size: 125%;
background-color: #073f24;
color: white
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: Montserrat, sans-serif;
}
.tagline {
font-size: 14pt;
font-weight: normal;
}
.tagline strong {
font-weight: bold;
}
#tagline-1 {
color: #e0f7c5;
}
#tagline-2 {
color: #fceac5
}
.main-area {
padding: 20px;
display: grid;
grid-template-columns: 1fr 350px;
grid-column-gap: 12px;
max-width: 1080px;
}
@media screen and (max-width: 800px) {
.main-area {
grid-template-columns: 1fr;
}
}
.card {
background-color: white;
padding: 15px;
border-radius: 5px;
border: 1px solid tan;
box-shadow: 0px 2px tan;
font-size: 11pt;
margin-bottom: 12px;
}
p {
font-family: Arial, sans-serif;
margin-top: 0px;
margin-bottom: 10px;
line-height: 1.4;
}
ul {
line-height: 1.4;
}
.talks-list {
padding-left: 0;
}
.news-list {
padding-left: 0px;
display: grid;
grid-template-columns: auto 1fr;
row-gap: 16px;
}
.news-item {
margin-bottom: 10px;
}
.date {
color: #999;
font-weight: normal;
margin-bottom: 3px;
margin-right: 10px;
}
.news-text {}
a {
color: #337ab7;
text-decoration: none;
font-weight: bold;
}
a:hover {
color: #11293f;
}
#try-it .btn:hover {
color: white
}
.major-paper {
font-weight: bold;
}
h1 {
margin-top: 0px !important;
margin-bottom: 0px !important;
font-weight: bold;
font-size: 17pt;
}
h2 {
margin-top: 0px !important;
padding-bottom: 5px;
font-weight: bold;
text-transform: uppercase;
font-size: 110%;
color: #444;
border-bottom: 1px solid #DDD;
margin-bottom: 10px;
}
h3 {
margin-top: 12px;
margin-bottom: 5px;
font-weight: bold;
font-size: 105%;
color: #444;
}
h4 {
margin-top: 12px;
margin-bottom: 5px;
font-weight: bold;
font-size: 90%;
color: #777;
}
.btn {
padding: 15px;
background-color: purple;
color: white;
display: block;
width: 100%;
text-align: center;
border-radius: 5px;
text-decoration: none;
font-family: Montserrat, sans-serif;
font-weight: bold;
}
.source-link {
margin-bottom: 0px;
}
.source-link a {
text-decoration: none;
}
.source-link img {
vertical-align: middle;
position: relative;
top: -2px;
margin-right: 2px;
}
.paper {
margin-left: 20px;
line-height: 1.5;
}
.award {
color: purple;
font-weight: bold;
}
</style>
</head>
<body>
<div class="header">
<h1>Hazel <span class="tagline">is a <strong id="tagline-1">live functional programming environment</strong>
organized around <strong id="tagline-2">typed holes</strong>.</span></h1>
</div>
<div class="main-area">
<div class="left-col">
<div class="card" id="about">
<h2>Quick Summary</h2>
Hazel is a live functional programming environment that is able to typecheck, manipulate, and even run
incomplete programs, i.e. programs with holes. <strong>There are no meaningless editor states.</strong>
</div>
<div class="card" id="about">
<h2>Motivation</h2>
<p>
When programming, we spend a substantial amount of our time working with program text
that is not yet a formally complete program, e.g. because there are blank spots, type errors or merge
conflicts at various locations.
</p>
<p>
Conventional programming language definitions assign no formal meaning to structures like these, so we are
left without live feedback about the behavior of even complete portions of the program.
Moreover, program editors and other tools have no choice but to resort to complex and <i>ad hoc</i> heuristics
to
provide various useful language services (like code completion, type inspection, and code navigation) without
gaps in service.
</p>
<p>
We are developing a more principled approach to working with incomplete programs, rooted in (contextual modal
and gradual) type theory.
We model incomplete programs as programs with <em>holes</em>, which (1) stand for parts of the program that
are missing; and (2) serve as membranes
around parts of the program that are erroneous or, in the collaborative setting, conflicted.
</p>
<p>The following papers describes our research vision in more detail.
<div class="paper">
<a class="major-paper" href="https://arxiv.org/pdf/1703.08694">Toward Semantic Foundations for Program
Editors</a><br />
<strong>SNAPL 2017</strong> [<a href="./hazel.bib">.bib</a>]
[<a href="./hazel-snapl17.pdf">slides</a>]
</div>
</p>
<p>
<div class="paper">
<a class="major-paper" href="./papers/propl24.pdf">Toward a Live, Rich, Composable, and Collaborative Planetary Compute Engine</a><br />
<strong>PROPL 2024</strong> [<a href="./hazel.bib">.bib</a>]
</div>
</p>
</div>
<div class="card">
<h2>Hazel</h2>
<p>
We are first implementing these ideas into <strong>Hazel</strong>, a web-based programming environment for an
<a href="http://elm-lang.org/">Elm</a>/ML-like functional programming language designed around
typed-hole-driven development.
</p>
<p>Uniquely, every incomplete program that you can construct using Hazel's language of edit actions is both
<em>statically</em> and <em>dynamically</em> well-defined, i.e. it has
a (possibly incomplete) type, and you can run it to produce a (possibly incomplete) result. Consequently,
Hazel serves as an elegant platform for research on the future of programming (and programming education).
</p>
<!-- <p>
The <a href="./hazel/hazel.html">Hazel implementation</a> is a work-in-progress. As Hazel evolves, we plan to apply it first to teach introductory functional programming courses. As it evolves further, we plan to use Hazel to do data anlysis, music and visual art. One day, we plan for Hazel to serve as the foundation of a new kind of computational wiki.</p>
-->
<!--
<p class="col-md-12">
This substantially simplifies the design of a
number of powerful editor services, and it substantially tightens the feedback loop between the programmer and the programming environment.
Put pithily, Hazel is as live as it gets!
</p>
-->
</div>
<div class="card" id="news">
<h2>News and Publications</h2>
<div class="news-list">
<div class="date">Jan 2025</div>
<div class="news-text"><a href="https://conf.researchr.org/home/POPL-2025">POPL 2025</a> conditionally accepted <a>Grove: A Bidirectionally Typed Structure Editor Calculus</a> describing our work on reworking the foundations of collaborative editing around commutative edit actions.</div>
<div class="date">Oct 2024</div>
<div class="news-text"><a href="https://2024.splashcon.org/track/splash-2024-oopsla">OOPSLA 2024</a> published <a href="./papers/chatlsp-oopsla2024.pdf.pdf">Statically Contextualizing Large Language Models with Typed Holes</a> describing our work on combining language servers with large language models to dramatically improve AI code completion performance.</div>
<div class="date">Oct 2024</div>
<div class="news-text"><a href="https://2024.splashcon.org/home/hatra-2024">HATRA 2024</a> accepted <a href="./papers/learner_centered_proofs_hatra_2024.pdf"> Learner-Centered Design Criteria for Classroom Proof Assistants
</a> describing our goals for using Hazel for teaching and learning proof.</div>
<div class="date">Oct 2024</div>
<div class="news-text"><a href="https://2024.splashcon.org/home/hatra-2024">HATRA 2024</a> will start with a keynote by Cyrus on <a href="https://2024.splashcon.org/details/hatra-2024-papers/7/Research-Methods-for-Designing-Next-Generation-Programming-Systems">Research Methods for Designing Next-Generation Programming Systems</a>.</div>
<div class="date">Sep 2024</div>
<div class="news-text"><a href="https://www.nsf.gov/">NSF</a> awarded Cyrus and Jean-Baptiste Jeannin a grant
on <a href="https://www.nsf.gov/awardsearch/showAward?AWD_ID=2422028&HistoricalAwards=false">Customizing a Classroom Proof Assistant for Mathematical Computing and Engineering Courses</a>.
This will focus on turning Hazel into a classroom proof assistant.</div>
<div class="date">Jan 2024</div>
<div class="news-text"><a href="https://popl24.sigplan.org/">POPL 2024</a> published <a href="./papers/marking-popl24.pdf">Total Type Error Localization and Recovery with Holes</a>
describing a principled approach to localizing errors in ill-typed programs. This paper was awarded a <span class="award">Distinguished Paper Award</span>!</div>
<div class="date">Jan 2024</div>
<div class="news-text"><a href="https://popl24.sigplan.org/home/propl-2024">PROPL 2024</a> accepted <a href="./papers/propl24.pdf">Toward a Live, Rich, Composable, and Collaborative Planetary Compute Engine</a>
describing our vision for tooling for the future of large-scale computational climate science.</div>
<div class="date">Jan 2024</div>
<div class="news-text"><a href="https://trendsfp.github.io/index.html">TFP 2024</a> accepted <a href="./papers/polymorphism-tfp24.pdf">Polymorphism with Typed Holes</a>, a paper
describing our approach to explicitly implicit polymorphism in Hazel.</div>
<div class="date">Oct 2023</div>
<div class="news-text"><a href="https://2023.splashcon.org/">OOPSLA 2023</a> published <a
href="./papers/peanut-oopsla2023.pdf">Live Pattern
Matching with Typed Holes</a>
describing our work on reasoning about programs with pattern holes. This paper was awarded a <span class="award">Distinguished Paper Award</span>!</div>
<div class="date">Oct 2023</div>
<div class="news-text"><a href="https://conf.researchr.org/home/vlhcc-2023">VL/HCC 2023</a> published <a href="./papers/teen-tylr-vlhcc2023.pdf">Gradual Structure Editing with Obligations</a> describing our work on natural keyboard-driven structure editing.</div>
<div class="date">Jan 2023</div>
<div class="news-text"><a href="https://www.nsf.gov/">NSF</a> awarded Cyrus the <a
href="https://new.nsf.gov/funding/opportunities/faculty-early-career-development-program-career" class="award">NSF
CAREER award</a>
for the
project <a href="https://www.nsf.gov/awardsearch/showAward?AWD_ID=2238744&HistoricalAwards=false">Live
and
Direct Programming Environments</a> which will support <a
href="https://cse.engin.umich.edu/stories/cyrus-omar-earns-nsf-career-to-design-live-program-sketching-environments">Hazel-related
research projects</a>.</div>
<div class="date">Dec 2022</div>
<div class="news-text"><a href="https://2022.splashcon.org/track/splash-2022-Onward-papers">Onward! 2022</a>
published <a href="./papers/explainthis-onward2022.pdf">Contextualized Programming Language
Documentation</a> describing the ExplainThis service in Hazel.</div>
<div class="date">Sep 2022</div>
<div class="news-text"><a href="https://conf.researchr.org/home/vlhcc-2022">VL/HCC 2022</a> published <a
href="./papers/assistant-vlhcc2022.pdf">An Integrative Human-Centered
Architecture for Interactive Programming Assistants</a> describing our ongoing work on the Hazel
Assistant.</div>
<div class="date">Sep 2022</div>
<div class="news-text"><a href="https://icfp22.sigplan.org/home/tyde-2022">TyDe 2022</a> published <a
href="./papers/tiny-tylr-tyde2022.pdf">tylr: A Tiny Tile-Based Structure Editor</a> describing our ongoing
work on
natural keyboard-driven structure editing interfaces.</div>
<!-- <div class="date">Oct 2021</div>
<div class="news-text"><a href="https://2021.splashcon.org/home/live-2021#About">LIVE 2021</a> accepted our essay on Restructuring Structure Editing (link pending revisions). David will be presenting it (in person) at SPLASH in October.</div> -->
<div class="date">June 2021</div>
<div class="news-text"><a href="https://pldi21.sigplan.org/">PLDI 2021</a> published <a
href="./papers/livelits-pldi2021.pdf">Filling Typed Holes with Live GUIs</a> describing <a
href="#livelits">live
literals (livelits)</a> in Hazel.</div>
<div class="date">Oct 2020</div>
<div class="news-text"><a href="https://2020.splashcon.org/home/hatra-2020">HATRA 2020</a> published <a href="papers/hazeltutor-hatra2020.pdf">Hazel Tutor: Guiding Novices Through Type-Driven Development Strategies
</a> describing our work on teaching type-driven development with Hazel.</div>
<div class="date">Aug 2020</div>
<div class="news-text">
<a href="https://icfp20.sigplan.org/">ICFP 2020</a> published <a
href="https://arxiv.org/pdf/1911.00583.pdf">Program Sketching with Live Bidirectional Evaluation</a>
describing <a href="https://uchicago-pl.github.io/smyth">Smyth</a>, a foundational component of the <a
href="#assistant">Hazel Assistant</a>.
</div>
<!-- <div class="date">Sep 2019</div>
<div class="news-text"><a href="https://people.cs.uchicago.edu/~comar/">Cyrus</a> started as an Assistant Professor at the University of Michigan.</div> -->
<div class="date">Jan 2019</div>
<div class="news-text"><a href="https://popl19.sigplan.org/home">POPL 2019</a> published <a
href="https://arxiv.org/pdf/1805.00155">Live Functional Programming with Typed Holes</a> which develops <a
href="#hazelnut-live">a rich operational semantics</a> for expressions with typed holes.</div>
<div class="date">Sep 2018</div>
<div class="news-text"><a href="http://www.thestrangeloop.com">Strange Loop</a> hosted <a
href="https://www.thestrangeloop.com/2018/hazel-a-live-functional-programming-environment-with-typed-holes.html">a
presentation on Hazel</a>.</div>
<div class="date">May 2018</div>
<div class="news-text"><a
href="https://www.nsf.gov/awardsearch/simpleSearchResult?queryText=%22Semantic+Foundations+for+Hole-Driven+Development%22">NSF</a>
selected the research that Cyrus, Ravi and Matthew proposed for funding.</div>
<div class="date">May 2017</div>
<div class="news-text"><a href="http://snapl.org">SNAPL 2017</a> published <a
href="https://arxiv.org/pdf/1703.08694">Toward Semantic Foundations for Program Editors</a> describing our
broad research vision.</div>
<div class="date">Jan 2017</div>
<div class="news-text"><a href="http://popl17.sigplan.org/program/program-POPL-2017">POPL 2017</a> published
<a href="https://arxiv.org/pdf/1607.04180">Hazelnut: A Bidirectionally Typed Structure Editor Calculus</a>,
which defines <a href="#hazelnut">a calculus of edit actions</a> that insert typed holes
automatically.
</div>
</div>
</div>
</div>
<div class="right-col">
<div class="card" id="try-it">
<p><a href="build/dev/" class="btn" style="background-color: #78184A; border-color: purple;">Play with Hazel</a>
</p>
<p style="padding-left: 5px; padding-right: 5px" class="source-link">
<a href="https://github.com/hazelgrove/hazel"><img width="20" height="20"
src="imgs/GitHub/GitHub-Mark/PNG/GitHub-Mark-32px.png"> Source code on GitHub</a>
<!-- (<a href="https://reasonml.github.io/">Reason</a>/<a href="http://ocaml.org/">OCaml</a> + <a href="https://coq.inria.fr/">Coq</a>, compiled using <a href="https://ocsigen.org/js_of_ocaml/">js_of_ocaml</a>) -->
</p>
</div>
<div class="card" id="contributors">
<h2>Team Hazel</h2>
<div class="contributor-list">
<p>Hazel is an open source research project led by the
<strong><a href="http://fplab.mplse.org/">Future of Programming Lab (FP Lab)</a></strong>
at the University of Michigan.
</p>
<p>If you have questions or are interested in contributing to Hazel, get in touch with the team lead,
<strong><a href="https://web.eecs.umich.edu/~comar">Cyrus Omar</a></strong>.
</p>
</div>
</div>
<!-- <div class="card" id="funding">
<h2>Funding</h2>
<img src="https://www.nsf.gov/images/logos/NSF_4-Color_bitmap_Logo.png" style="width: 75px; height: 75px" />
NSF
</div> -->
<!--<div class="card" id="talks">
<h2>Recent & Upcoming Talks</h2>
See the <a href="https://fplab.mplse.org/">FP Lab</a> website for up-to-date info.
<div class="talks-list">
<div class="news-item">
<div class="date">June 24, 2021</div>
<div class="news-text">Cyrus Omar presented our <a href="./papers/livelits-paper.pdf">Livelits paper</a> at <a href="https://pldi21.sigplan.org/details/pldi-2021-papers/34/Filling-Typed-Holes-with-Live-GUIs">PLDI 2021</a>.</div>
</div>
<div class="news-item">
<div class="date">Dec 2, 2020</div>
<div class="news-text">Hannah Potter presented progress on <a href="hazeltutor-hatra2020.pdf">Hazel Tutor</a> at <a href="https://2020.splashcon.org/home/hatra-2020?plenary=Hide%20plenary%20sessions#About">HATRA 2020</a>.</div>
</div>
<div class="news-item">
<div class="date">Aug 26, 2020</div>
<div class="news-text">Justin Lubin <a href="https://dl.acm.org/doi/10.1145/3408991">presented</a> our <a href="https://arxiv.org/pdf/1911.00583.pdf">Smyth paper</a> at ICFP 2020.</div>
</div>
<div class="news-item">
<div class="date">Aug 26, 2020</div>
<div class="news-text">Zhiyi Pan won Third Place in the Undergraduate category of the ICFP Student Research Competition for her work on Type Hole Inference. Yongwei Yuan also presented his work on Pattern Matching with Typed Holes.</div>
</div>
<div class="news-item">
<div class="date">Sep 23, 2019</div>
<div class="news-text">David Moon and Cyrus Omar presented progress on the Hazel editing experience and livelits at the <a href="https://purpl.cs.purdue.edu/kickoff.html">Midwest PL Summit at Purdue</a>.</div>
</div>
<div class="news-item">
<div class="date">Aug 18, 2019</div>
<div class="news-text">David presented progress on the Hazel editing experience [<a href="https://github.com/hazelgrove/editor-tyde19/blob/master/editor-tyde19.pdf">extended abstract</a>] and Cyrus presented livelits in Hazel [<a href="./talks/livelits-tyde19.pdf">slides</a>, <a href="https://github.com/hazelgrove/livelits-tyde/blob/master/livelits-tyde.pdf">extended abstract</a>] at the <a href="https://icfp19.sigplan.org/home/tyde-2019">TyDe</a> workshop at <a href="https://icfp19.sigplan.org/home">ICFP 2019</a> in Berlin.</div>
</div>
<div class="news-item">
<div class="date">Jan 17, 2019</div>
<div class="news-text">Cyrus presented our <a href="https://arxiv.org/pdf/1805.00155">Hazelnut Live paper</a> at <a href="https://popl19.sigplan.org/home">POPL 2019</a> in Lisbon.</div>
</div>
<div class="news-item">
<div class="date">Nov 6, 2018</div>
<div class="news-text">Cyrus <a href="https://github.com/hazelgrove/LIVE2018/raw/master/hazel-live-2018-submission.pdf">presented Hazel</a> at the <a href="https://2018.splashcon.org/track/live-2018-papers#program">LIVE</a> workshop at <a href="http://www.splashcon.org/">SPLASH</a> in Boston.</div>
</div>
<div class="news-item">
<div class="date">Oct 31, 2018</div>
<div class="news-text">Cyrus gave a <a href="https://www.cs.cmu.edu/Groups/pop/index.html">POP seminar</a> at CMU.</div>
</div>
<div class="news-item">
<div class="date">Oct 2018</div>
<div class="news-text">Cyrus presented Hazel at the <a href="http://pages.cs.wisc.edu/~loris/midwest-pl-summit18/index.html">Midwest PL Summit</a> in Madison.</div>
</div>
<div class="news-item">
<div class="date">Sep 2018</div>
<div class="news-text">Cyrus <a href="https://www.thestrangeloop.com/2018/hazel-a-live-functional-programming-environment-with-typed-holes.html">presented Hazel</a> at <a href="http://www.thestrangeloop.com">Strange Loop</a> in St. Louis.</div>
</div>
<div class="news-item">
<div class="date">Oct 2017</div>
<div class="news-text">Cyrus gave <a href="./live-2017.pdf">a talk</a> about live programming in Hazel at the <a href="https://2017.splashcon.org/track/live-2017#About">LIVE</a> workshop at <a href="https://2017.splashcon.org">SPLASH</a>.</div>
</div>
<div class="news-item">
<div class="date">May 2017</div>
<div class="news-text">Cyrus and Matthew attended <a href="http://snapl.org">SNAPL</a> and <a href="./hazel-snapl17.pdf">talked</a> about <a href="https://arxiv.org/pdf/1703.08694">the vision for the Hazel project</a>.</div>
</div>
<div class="news-item">
<div class="date">Jan 2017</div>
<div class="news-text">Cyrus <a href="./hazelnut-popl17-talk.pdf">presented</a> the <a href="https://arxiv.org/pdf/1607.04180">Hazelnut paper</a> at <a href="http://popl17.sigplan.org/program/program-POPL-2017">POPL</a> and Ian presented some <a href="http://www.cs.cmu.edu/~iev/resources/obt17-slides.pdf">initial ideas on live programming</a> at OBT 2017.</div>
</div>
</div>
</div>-->
<div class="" id="hazel-eyes" style="display: flex; justify-content: center;
flex-direction: column; margin-top: 30px">
<script type="text/javascript" src="js/jseyes.js"></script>
<div style="display: flex; justify-content: center;">
<script type="text/javascript">
myeyes = new jseyes();
myeyes.main.img = "imgs/hazel-logo.png";
myeyes.eye1.img = "imgs/jseyeblack.gif";
myeyes.eye2.img = "imgs/jseyeblack.gif";
myeyes.write();
</script>
</div>
<div>
<p style="font-size: 7pt; opacity: 1; color: #888; text-align: center; margin-top: 15px">(h/t <a
href="http://modgethanc.com/">Vincent Zeng</a>)</p>
</div>
</div>
</div>
</div>
</body>
</html>