-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
190 lines (180 loc) · 11 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
<html>
<head>
<title>Joel Galenson</title>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-46493232-1', 'auto');
ga('send', 'pageview');
</script>
</head>
<body>
<p>
<table>
<tr>
<td>
<img src="joel.jpg"/>
</td>
<td>
<b>Joel Galenson</b><br/>
I am a software engineer at <a href="https://www.augmentcode.com/">Augment</a>.<br/>
<!--I am a computer science Ph.D. student at UC Berkeley.<br/>
I am advised by <a href="http://www.cs.berkeley.edu/~bodik/">Ras Bodik</a> and <a href="http://srl.cs.berkeley.edu/~ksen/doku.php">Koushik Sen</a>.<br/>-->
<br/>
<a href="jgalenson-resume.pdf">Resume</a> <a href="jgalenson-cv.pdf">CV</a>
<!--My research statement is <a href="jgalenson-rs.pdf">here</a>.-->
<br/>
Contact me at jgalenson at gmail dot com.
</td>
</tr>
</table>
<h3>Education</h3>
I completed my Ph.D. from UC Berkeley in 2014.<br/>
I received a B.S. (with honors and distinction) from Stanford University in 2008.
<h3>Research interests</h3>
Program synthesis, static and dynamic analysis, testing, compilers, language design <br/>
AI, LLMs, data science, prompt engineering <br />
Systems security, return-oriented programming, exploit development, malware detection
<h3>Experience</h3>
<ul>
<li>
I am a software engineer at <a href="https://www.augmentcode.com/">Augment</a>, where I work on AI for code.
</li>
<li>
I was a software engineer at Google/<a href="https://x.company/">X, the moonshot factory</a> working on program synthesis with AI. I have worked on products that launched in <a href="https://blog.google/products/search/google-search-generative-ai-learning-features/">Search</a>, <a href="https://blog.google/technology/developers/google-colab-ai-coding-features/">Colab</a>, <a href="https://developer.android.com/studio/preview/studio-bot">Android Studio</a>, <a href="https://blog.google/technology/ai/ai-developers-google-cloud-workspace/">Google Cloud</a>, and more. I have focused on areas including improving model correctness, training classifiers, and building the products themselves.
</li>
<li>
I was a software engineer at Google, where I was on the Android Platform Security team.
<ul>
<li>
I worked on adding <a href="https://security.googleblog.com/2021/06/rustc-interop-in-android-platform.html">support</a> for the Rust language to the Android platform to improve its security, which includes writing Rust code, working with upstream, and integrating it into the Android platform.
</li>
<li>
I proposed, co-designed, and implemented one of Android's premier (upcoming) privacy features.
</li>
<li>
I have made numerous optimizations to the upstream LLVM compiler to improve the performance of components such as its integer overflow sanitizer and undefined behavior sanitizer. This work was crucial in allowing us to enable these features on production devices.
</li>
<li>
I was one of the maintainers of Android's SELinux system, which uses mandatory access controls to improve the security of the system. I have worked on improving Android's core policy and on bringing up multiple new devices.
</li>
</ul>
<li> I worked at <a href="https://www.qualcomm.com/invention/research/locations/silicon-valley">Qualcomm Research Silicon Valley</a> from 2014-2017.
<ul>
<li>
I researched behavioral mobile security <a href="https://www.qualcomm.com/products/features/security/haven">solutions</a> to protect against malware and exploits. I have spent much of my time developing attacks on Android, including building real exploits that bypass SELinux and target Chrome and the Stagefright and Dirtycow bugs. I have handwritten ARM assembly and built a simple shellcode and ROP compiler to ease payload development. I developed and gave our lab a tutorial on memory error attacks and defenses, including building a sequence of ROP attacks from simple to complex.
</li>
<li>
I worked on developing compilation techniques for programming special purpose accelerator architectures. Our compiler was based on LLVM, and I worked on the backend, including scheduling, software pipelining, optimizing individual instructions, co-designing new instructions, and numerous architecture-specific passes. I also worked on providing tools to understand and optimize the compiler output as well as improving our test infrastructure and tracking upstream development.
</li>
</ul>
</ul>
<h3>Former projects</h3>
<ul>
<li>
<a href="http://jgalenson.github.io/codehint/">CodeHint</a>: a dynamic program synthesis tool integrated into the IDE.<br/>
CodeHint received second place at <a href="http://liveprogramming.github.io/2013/index.html">LIVE 2013</a>.
</li>
<li>
<a href="https://github.com/jgalenson/pbd">PBD</a>: A programming by demonstration system that applies some of CodeHint's ideas to help synthesize data tructures or end-user tasks.
</li>
<li>
<a href="https://github.com/jgalenson/research.js">Research.js</a>: A project to try to get researchers to compile their tools to JavaScript to make demos more easily available. A short writeup is available <a href="http://jgalenson.github.io/research.js/papers/researchjs.pdf">here</a>.
</li>
<li>
<a href="http://dx.doi.org/10.1007/978-3-642-37036-6_2">The Compiler Forest</a>: While I interned at <a href="http://research.microsoft.com/en-us/labs/siliconvalley/">Microsoft Research Silicon Valley</a> I worked on a framework to enable modular compiler construction.
</li>
<li>
<a href="http://dx.doi.org/10.1016/j.parco.2011.02.005">Yada</a>: A deterministic parallel programming language that aimed to make certain types of parallel programming easy with simple type annotations.
</li>
<li>
<a href="http://dx.doi.org/10.1145/1707801.1706339">Angelic programming</a>: A programming methodology that allows users to refine their specifications into programs.
</li>
<li>
<a href="https://github.com/jgalenson/piVC">PiVC</a>: A verifying compiler that accompanies the <a href="http://www.springer.com/978-3-540-74112-1">The Calculus of Computation</a>.
</li>
</ul>
<h3>Publications</h3>
<ul>
<li>
<b>Research.js: Evaluating Research Tool Usability on the Web</b><br/>
Joel Galenson, Cindy Rubio-González, Sarah Chasins, and Liang Gong.<br/>
In <i>Proceedings of the 5th Workshop on Evaluation and Usability of Programming Languages and Tools (PLATEAU)</i>, Portland, Oregon, USA, 2014.<br/>
[<a href="papers/plateau2014.pdf">pdf</a>] [<a href="papers/plateau2014/plateau2014.html">talk</a>][<a href="http://dx.doi.org/10.1145/2688204.2688217">doi</a>]
</li>
<li>
<b>Dynamic and Interactive Synthesis of Code Snippets</b><br/>
Joel Galenson.<br/>
Ph.D. Dissertation.<br/>
[<a href="papers/thesis.pdf">pdf</a>]
</li>
<li>
<b>CodeHint: Dynamic and Interactive Synthesis of Code Snippets</b><br/>
Joel Galenson, Philip Reames, Rastislav Bodik, Bjoern Hartmann, and Koushik Sen.<br/>
In <i>Proceedings of the 36th International Conference on Software Engineering (ICSE 2014)</i>, Hyderabad, India, 2014.<br/>
[<a href="papers/icse2014.pdf">pdf</a>] [<a href="papers/icse2014-talk.odp">slides</a>] [<a href="http://dx.doi.org/10.1145/2568225.2568250">doi</a>]
</li>
<li>
<b>The Compiler Forest</b><br/>
Mihai Budiu, Joel Galenson, and Gordon D. Plotkin.<br/>
In <i>Proceedings of the 22nd European conference on Programming Languages and Systems (ESOP 2013)</i>, Rome, Italy, 2013<br/>
[<a href="papers/esop2013.pdf">pdf</a>] [<a href="papers/esop2013-talk.pdf">slides</a>] [<a href="http://dx.doi.org/10.1007/978-3-642-37036-6_2">doi</a>]
</li>
<li>
<b>Yada: Straightforward Parallel Programming</b><br/>
David Gay, Joel Galenson, Mayur Naik, and Kathy Yelick. <br/>
In <i>Parallel Computing</i>, Elsevier, 2011.<br/>
[<a href="papers/pc2011.pdf">pdf</a>] [<a href="http://dx.doi.org/10.1016/j.parco.2011.02.005">doi</a>]
</li>
<li>
<b>Programming with Angelic Nondeterminism</b><br/>
Rastislav Bodik, Satish Chandra, Joel Galenson, Doug Kimmelman, Nicholas Tung, Shaon Barman, and Casey Rodarmor.<br/>
In <i>Proceedings of the 37th Symposium on Principles of Programming Languages (POPL 2010)</i>, Madrid, Spain, 2010.<br/>
[<a href="papers/popl2010.pdf">pdf</a>] [<a href="http://dx.doi.org/10.1145/1707801.1706339">doi</a>]
</li>
<li>
<b>An empirical analysis of return on investment maximization in sponsored search auctions</b><br/>
Jason Auerbach, Joel Galenson, and Mukund Sundararajan.<br/>
In <i>Proceedings of the Second International Workshop on Data Mining and Audience Intelligence for Advertising (ADKDD 2008)</i>, Las Vegas, Nevada, USA, 2008.<br/>
[<a href="papers/adkdd2008.pdf">pdf</a>] [<a href="http://dx.doi.org/10.1145/1517472.1517473">doi</a>]
</li>
</ul>
<h3>Refereed Presentations</h3>
<ul>
<li>
<b>CodeHint: Dynamic and Interactive Synthesis for Modern IDEs</b><br/>
Future Programming Workshop, SPLASH, 2014.<br/>
[<a href="http://vimeo.com/97711432">talk</a>]
</li>
<li>
<b>CodeHint: Dynamic and Interactive Synthesis for Modern IDEs</b><br/>
Future Programming Workshop, Strange Loop, 2014.<br/>
[<a href="papers/future_programming_strangeloop.odp">slides</a>] [<a href="papers/future_programming_strangeloop.pdf">slides (pdf without animations)</a>]
</li>
<li>
<b>Code Hint</b><br/>
First International Workshop on Live Programming, 2013.<br/>
Awarded second prize.<br/>
[<a href="https://www.youtube.com/watch?v=SnkskEgcbuQ">talk</a>]
</li>
</ul>
<h3>Professional activities</h3>
<ul>
<li>Artifact Evaluation Committee: POPL 2015</li>
<li>External reviewer: ASPLOS 2013, OOPSLA 2013, VMCAI 2013, PLDI 2014, CAV 2014.</li>
</ul>
<h3>Teaching</h3>
<ul>
<li>TA for <a href="http://www.cs.berkeley.edu/~jrs/61b/">CS 61B: Data Structures</a>, UC Berkeley, Spring 2014</li>
<li>TA for <a href="http://www.cs.berkeley.edu/~bodik/hack_your_language.html">CS 164: Programming Languages and Compilers</a>, UC Berkeley, Fall 2009</li>
<li>TA for <a href="http://www.stanford.edu/class/cs156/">CS 156: Calculus for Computations</a>, Stanford, Winter 2008</li>
<li><a href="https://cs198.stanford.edu/cs106/">Section leader</a> for CS 106{<a href="http://www.stanford.edu/class/cs106a/">A</a>,<a href="http://www.stanford.edu/class/cs106b/">B</a>,<a href="http://www.stanford.edu/class/cs106x/">X</a>}, Stanford, Fall 2005 - Summer 2008 (12 quarters)</li>
</ul>
<h3>Computer skills</h3>
C++, Java, Rust, Python, Go, Scala, OCaml, C#, JavaScript, C, ARM, LaTeX, HTML<br/>
Linux, Android, return-oriented programming
</p>
</body>
</html>