-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.ml
127 lines (119 loc) · 3.28 KB
/
index.ml
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
open Helpers
open Tyxml.Html
let intro_row =
div
~a:[a_class ["row"; "my-3"]]
[
div
~a:[a_class ["col"; "text-center"]]
[h1 ~a:[a_class ["display-1"]] [txt "Hi! I'm Vijay."]];
]
let info name content = div ~a:[a_class ["my-3"]] (h1 [txt name] :: content)
let work_info =
info
"Work"
[
div
~a:[a_class ["d-flex"; "justify-content-between"]]
[
div [a ~a:[a_href "https://www.osohq.com/"] [txt "Oso"]];
div ~a:[a_class ["font-weight-light"]] [txt "2022 - current"];
];
div
~a:[a_class ["d-flex"; "justify-content-between"]]
[
div
[
txt "Facebook/Meta on ";
a ~a:[a_href "https://flow.org/"] [txt "Flow"];
];
div ~a:[a_class ["font-weight-light"]] [txt "2019 - 2022"];
];
]
let writing_info =
let writing name links source =
div
~a:[a_class ["my-1"]]
[
div
(txt (Printf.sprintf "\"%s\"" name)
:: (List.map
(fun (text, href) ->
[txt " ("; a ~a:[a_href href] [txt text]; txt ")"]
)
links
|> List.flatten
)
);
div ~a:[a_class ["text-right"; "font-weight-light"]] [txt source];
]
in
info
"Writing"
[
writing
"Is Polar Turing-Complete?"
[
( "article",
"https://www.osohq.com/post/is-polar-turing-complete-and-why-i-hope-not"
);
]
"Oso Blog, December 2023";
writing
"Why I don't play Pokemon"
["article", "https://www.osohq.com/post/why-i-dont-play-pokemon"]
"Oso Blog, August 2022";
writing
"How I Implemented Type Inference for Request Validation"
[
( "article",
"https://www.osohq.com/post/type-inference-request-validation" );
]
"Oso Blog, August 2022";
writing
"Program Equivalence for Assisted Grading of Functional Programs"
[
"pdf", "static/oopsla-2020.pdf";
"extended version", "https://arxiv.org/pdf/2010.08051.pdf";
]
"Published in OOPSLA 2020";
writing
"Zeus: Algorithmic Program Equivalence"
["pdf", "static/senior-thesis.pdf"]
"Senior Honors Thesis, 2019";
]
let projects_info =
info
"Side Projects"
[
ul
[
li
[
a ~a:[a_href "https://github.com/vrama628/dominai"] [txt "DominAI"];
txt
" A server that lets you write code to play the card game \
Dominion";
];
li
[
a ~a:[a_href "/wilty"] [txt "Would I Lie to You?"];
txt
" An app for playing a party game based on a British game show";
];
];
]
let links_info =
info "Links" [p [a ~a:[a_href "https://github.com/vrama628"] [txt "GitHub"]]]
let info_row =
div
~a:[a_class ["row"; "my-3"; "justify-content-center"]]
[
div
~a:[a_class ["col-md-8"]]
[work_info; writing_info; projects_info; links_info];
]
let content =
Template.f
~title:"Vijay Ramamurthy"
~body:[div ~a:[a_class ["container"]] [intro_row; info_row]]