forked from nuprl/gtp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
people.rkt
207 lines (188 loc) · 6.77 KB
/
people.rkt
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
#lang scribble/html
@require["templates.rkt"]
@(define (principal-investigators . index->pi*)
@with-devider{
@red-back[#:title "Principal Investigators"
@(list
(for/list ([index->pi (in-list index->pi*)]
[i (in-naturals)])
(index->pi i))
@div[class: "col-md-12 devider"])]})
@(define ((pi->string pi . bio*) n)
(define pic-on-left? (even? n))
(define image-elem
@div[class: "col-md-3"]{
@img[class: "img-responsive prof-icon"
src: (person->image pi)]})
(define bio-elem
@div[class: "col-md-12 bio"]{
@p[bio*]})
(define history-elem
@div[class: (string-append "col-md-6 info-2 " (if pic-on-left? "col-md-offset-3" ""))]{
@add-between[@pi->history[pi] @br[]]})
(define position-elem
@div[class: (string-append "col-md-3 info-1 " (if pic-on-left? "" " col-md-offset-1"))]{
@list[@person-title[pi] @br[] @person->href[pi]]})
@div[class: "col-md-12"]{
@h3[class: "gray-back"]{
@person-short-name[pi]}
@(if pic-on-left?
@(list
@|image-elem|
@div[class: "col-md-9"]{
@|position-elem|
@|history-elem|
@|bio-elem|})
@(list
@div[class: "col-md-9"]{
@|history-elem|
@|position-elem|
@|bio-elem|}
@|image-elem|))})
@(define (red-back elem* #:title title)
@div[class: "col-md-12"]{
@h3[class: "red-back-big"]{@|title|}
@|elem*|})
@(define (team-members . tm*)
@with-devider[
@red-back[#:title "Team Members"
@(for/list ([u+s* (in-list (group-by-university tm*))])
(student*->string (reverse (cdr u+s*))))]])
@(define (student*->string s*)
(define u (student-university (car s*)))
@div[class: "col-md-12"]{
@h3[class: "gray-back"]{
@university-name[u]}
@(map student->string s*)})
@(define (student->string s #:alumnus? [alum? #f])
@div[class: "col-md-6"]{
@div[class: "col-md-4"]{
@img[class: "img-responsive student-icon"
src: (person->image s)]}
@div[class: "col-md-8 info-1"]{
@(add-between
(list (person-short-name s)
(if alum? (alma-mater s) (person-title s))
(person->href s))
@br[])}})
@(define (group-by-university tm*)
(define H (make-hasheq))
(for ([tm (in-list tm*)])
(define uni (student->university-id tm))
(hash-set! H uni (cons tm (hash-ref H uni (lambda () '())))))
(sort (hash->list H) symbol<? #:key car))
@(define (alumni . p*)
@with-devider[
@red-back[#:title "Alumni"
@(for/list ([p (in-list p*)])
(student->string p #:alumnus? #t))]])
@(define (with-devider elem)
@(cons @|elem| @div[class: "col-md-12 devider"]))
@; =============================================================================
@page[4]{
@principal-investigators[
@pi->string[samth]{
My research focuses on the design and implementation of
programming systems.
I'm particularly interested in programming languages that
support the evolution of software.
I primarily work on Racket and Typed Racket as well as with
Mozilla Research on JavaScript.
}
@pi->string[matthias]{
I explore all aspects of program design and programming language design.
My current research involves work on behavioral software contracts,
gradual typing of scripting languages, language interoperability,
language extensibility, and module systems.
I also engage in educational outreach work.
For the past 20 years, I have worked with middle schools,
high schools, after-school programs, and college faculty on
injecting design ideas into mathematics and computer science courses.
Such educational interactions often inspire our research,
and many research efforts end up improving my educational work.
}
@pi->string[jfoster]{
I am a Professor in the Computer Science Department and UMIACS
at the University of Maryland, College Park.
I am a member of the programming languages group at Maryland.
The goal of my research is to develop practical tools and
techniques to improve software quality.
I am interested in programming languages, software engineering,
advanced static type systems, scalable constraint-based analysis,
and building tools that implement my ideas.
}
@pi->string[jeremy-siek]{
Associate Professor of Computer Science in the School of Informatics
and Computing at Indiana University.
Jeremy teaches courses in programming, programming languages, compilers,
logic, and other areas of computer science.
Jeremy designs new language features to help programmers create and
use software libraries and domain-specific languages, especially generic
and high-performance ones.
In particular, Jeremy invented the gradual typing approach to mixing
static and dynamic type checking within the same language.
Prior to that, Jeremy authored the Boost Graph Library and attempted
to add concepts to C++.
Jeremy is a member of the Programming Languages Group at IU and the
Center for Research in Extreme Scale Technologies.
}
@pi->string[sk]{
Though my head is often in security, networking, verification,
and HCI, my heart is in programming languages.
Over the years I have contributed to several innovative and
useful software systems: JavaScript and Web tools,
Racket (formerly DrScheme), WeScheme, Margrave, Flapjax,
FrTime, Continue, FASTLINK, and more.
}
@pi->string[jan-vitek]{
I work on the design and implementation of programming languages.
I led the implementation of the first real-time Java virtual
machine to be flight-tested.
With Noble and Potter, I proposed what became known as Ownership Types.
I tried to understand JavaScript by dynamic analysis and am
now looking at supporting scalable data analysis in R.
}
]
@; ===========================================================================
@; 2016-05-10: Sorting members manually, for now
@team-members[
;; -- UMD
niki-vazou
brianna-ren
milod-kazerounian
;; -- IU
da
ambrosebs
caner-derici
andre-kuhlenschmidt
michael-vitousek
sarah-spall
rajan-walia
andrew-kent
;; -- Brown
jack-wrenn
preston-tunnell-wilson
sorawee-porncharoenwase
;; -- NEU
stephen-chang
benjamin-chung
ben-greenman
alex-knauth
milo-turner
]
@alumni[
asumu-takikawa
david-christiansen
david-kempe-II
di-zhong
earl-dean
joe-gibbs-politz
justin-pombrio
matteo-cimini
matthew-kolosick
philip-blair
spenser-bauman
zeina-migeed
]
@; @div[class: "col-md-12 devider"]
}