-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathresume.tex
383 lines (342 loc) · 11.2 KB
/
resume.tex
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
% !TEX TS-program = xelatex
% !TEX encoding = UTF-8
\documentclass[letterpaper,10pt,oneside]{simpleresume}
\usepackage{pbox}
\usepackage{minibox}
% CV Info (to be customized).
\newcommand{\CVAuthor}{Devin Lehmacher}
\newcommand{\CVTitle}{\CVAuthor{}'s Resume}
\newcommand{\CVWebpage}{github.com/lehmacdj}
\newcommand{\CVMailAddress}{[email protected]}
\newcommand{\JobHeading}[3]{%
#1
\hfill
\pbox[t][0pt]{\textwidth}{%
\minibox[t,r]{%
#2 \\
#3
}
}
}
% PDF settings and properties.
\hypersetup{%
pdftitle={\CVTitle},
pdfauthor={\CVAuthor},
pdfsubject={\CVWebpage},
pdfcreator={XeLaTeX},
pdfproducer={},
pdfkeywords={},
pdfpagemode={},
unicode=true,
bookmarksopen=true,
pdfstartview=FitH,
pdfpagelayout=OneColumn,
pdfpagemode=UseOutlines,
hidelinks,
breaklinks}
% Shorthand.
\newcommand{\CodeCommand}[1]{\mbox{\textbf{\textbackslash{#1}}}}
\begin{document}
\begin{minipage}[t][0pt]{\linewidth}
\pagestyle{empty}
\title{\CVAuthor}
\begin{subtitle}
1504 143rd Ave SE, Bellevue, WA 98007
\par
\href{mailto:\CVMailAddress}
{\CVMailAddress}
\,\SubBulletSymbol\,
+1\,(864)\,722--3014
\,\SubBulletSymbol\,
\href{https://\CVWebpage}
{\CVWebpage}
\end{subtitle}
\begin{body}
\section%
{Summary}
{Summary}
{PDF:Summary}
Curious, spontaneous, continuously learning software engineer dedicated to
writing performant, scalable software that handles errors gracefully. 3+ years
of industry experience developing and designing cloud services.
% maybe something about leadership experience + functional programming would
% be good to put here too
\section%
{Education}
{Education}
{PDF:Education}
\JobHeading%
{\href{https://www.cornell.edu}{\textbf{Cornell University}}}
{\DatestampYMD{2015}{08}{25} --- \DatestampYMD{2019}{05}{26}}
{Ithaca, NY}
\BulletItem%
Bachelors of Arts in
\href{https://www.cs.cornell.edu}{Computer Science}
\BulletItem%
Cumulative GPA:\@ 3.611
\Hide{%
% this is calculated from only classes in subject CS
% >>> 4 * 4 + (4 * 4 + 3 * 3.3) + (4 * 4 + 3 * 3.7) + (3 * 4 + 4.3 * 2 + 4.3 * 4) + (3 * 4 + 4 * 4.3 + 4 * 4 + 3.7 * 3) + (3 * 3.7 + 2 * 3.7 + 4 * 4 + 4 * 3.7) + (4 * 2.3 + 3 * 3.7 + 4 * 4.3)
% 249.9
% >>> last / (4 + 4 + 3 + 4 + 3 + 3 + 2 + 4 + 3 + 4 + 4 + 3 + 3 + 2 + 4 + 4 + 4 + 3 + 4)
% 3.84461538461538461538
, Major GPA: 3.84\@
}
\Hide{%
SAT 1580+
}
\Hide{%
% classes probably not super relevant after having real job experience
\section%
{Classes}
{Classes}
{PDF:Classes}
\Class{Object Oriented Programming and Data Structures}{CS 2110}
$\bullet$
\Class{Functional Programming and Data Structures}{CS 3110}
\Class{Introduction to Compilers \& Practicum}{CS 4120 \& CS 4121}
$\bullet$
\Class{Operating Systems \& Practicum}{CS 4410 \& CS 4411}
$\bullet$
\Class{Database Systems}{CS 4320}
\Class{Intro to Analysis of Algorithms}{CS 4820}
$\bullet$
\Class{Intro to Theory of Computing}{CS 4810}
$\bullet$
\Class{Discrete Structures}{CS 2800}
\Class{Advanced Programming Languages}{CS 6110}
$\bullet$
\Class{Certified Software Systems}{CS 6115}
$\bullet$
\Class{Computer System Organization}{CS 3410}
\Class{Category Theory for Computer Scientists}{CS 6117}
$\bullet$
\Class{Constructive Type Theory}{CS 6180}
$\bullet$
\Class{Kleene Algebra}{CS 6861}
}
\section%
{Experience}
{Experience}
{PDF:Experience}
\JobHeading%
{\textbf{SimSpace}, \emph{Software Engineer II}}
{\DatestampYMD{2021}{6}{14} --- Present}
{Boston, MA (Remote)}
\BulletItem%
Technical Lead of Team Fourier, responsible for components managing and
\BulletContinuation%
orchestrating attacks targeting SimSpace's hyperrealistic cyber range platform
\BulletItem%
Defining and executing plan to decouple attack functionality from monolithic architecture
\BulletItem%
Led team level sprint planning and execution for 1 month of work at a time
\BulletItem%
Onboarded 4 new team members, quickly getting them up to speed with unfamiliar technologies
\BulletItem%
Brought lack of product vision for automated attacks to management's attention
\BulletItem%
Helping define product vision and set priorities for attack platform
\BulletItem%
Integrated linters and autoformatters into the build process, reducing noise during code review
% there is also SimSpace.Lint.OpenImportWarnings, not really a large item, but
% it's a good story, and impact != time spent. Some people wanted warning free,
% some people couldn't live without warnings that sometimes had false
% positives. Was able to write a linter in only a few hours that gave us the
% best of both worlds
\GapNoBreak%
\JobHeading%
{\textbf{Microsoft}, Azure AD, \emph{Software Engineer II}}
{\DatestampYMD{2019}{8}{26} --- \DatestampYMD{2021}{5}{28}}
{Redmond, WA}
\BulletItem%
Member of Hybrid Authentication Team, which is responsible for critical hybrid
\BulletContinuation%
Azure AD authentication scenarios servicing >50 million MAU
% \BulletItem%
% Curate our team wiki, modernizing and contributing guides and documentation
\Hide{%
\BulletItem%
Participate in regular security and privacy reviews to ensure compliance
}
\BulletItem%
Drove an infrastructure redesign, moving to a declarative Kubernetes-like deployment technology
\BulletItem%
Coordinated team of 4 through a service's transition to general availability, throughout which we:
% in terms of coordination tasks I specifically:
% - held monthly retrospectives
% - tracked progress on work items
% - suggested relevant work items
\SubBulletItem%
Improved service availability from 1-2 nines to 4 nines over a 6 month period
% this was mostly accomplished through improving scalability, though we also
% made some improvements on account of fixing bugs and improving error
% handling
\SubBulletItem
Quintupled the service's scalability via a database schema redesign and autoscaling
% perhaps some other factors were relevant here too
\BulletItem%
Improved team efficiency by introducing a kanban board for tracking bugs and tasks, curating
\BulletContinuation%
the team wiki, and helping define the agenda for observability and reliability monitoring
\GapNoBreak%
\JobHeading%
{\textbf{Cornell University}, \emph{Teaching Assistant}}
{\DatestampYM{2016}{2} --- \DatestampYM{2019}{05}}
{Ithaca, NY}
\BulletItem
Courses ranging from introductory Object Oriented Programming to Formal
Verification
\BulletItem%
Taught and mentored students in weekly sections with up to 25 students
\Hide{%
\BulletItem%
Held weekly office hours to help students understand the course material
}
\BulletItem%
Answered students' questions on Piazza course platform, during office hours, and after class
\BulletItem%
Graded and contributed to the development of assignments and exams
\GapNoBreak%
\JobHeading%
{\textbf{Microsoft}, \emph{Software Engineering Intern}}
{\DatestampYMD{2018}{05}{29} --- \DatestampYMD{2018}{08}{17}}
{Redmond, WA}
\BulletItem%
Designed a microservice architecture for a new cloud service
\BulletItem%
Worked with team to determine what the service's critical features are
\BulletItem%
Implemented a prototype of the service using Microsoft Service Fabric and Azure
\GapNoBreak%
\JobHeading%
{\textbf{Itron Inc.}, \emph{Intern}}
{\DatestampYMD{2017}{06}{23} --- \DatestampYMD{2017}{08}{18}}
{Oconee, SC}
\BulletItem%
Created a dashboard to visualize available space for testing electrical meters
\BulletItem%
Utilized Transact-SQL to collect data for the dashboard
\BulletItem%
Built and deployed reports to Sharepoint using Microsoft Reporting Services
\Hide{%
\textbf{Research Assistant} at Clemson University
\hfill
\DatestampYMD{2015}{06}{15} --- \DatestampYMD{2016}{08}{15}
\BulletItem%
Tested the performance of MedusaLoop, a program that models protein loops
\BulletItem%
Analyzed test results to visualize performance
\BulletItem%
Wrote a daemon to dispatch jobs from a database to a server instance
\BulletItem%
Wrote back end code that interacted with a database to fetch and write new jobs
}
\section%
{Projects}
{Projects}
{PDF:Projects}
\textbf{Xi Compiler}, compiler for a simple C-like programming language
\BulletItem%
Collaborated with a group of 3 other students over the course of a semester
\BulletItem%
Implemented parser, type checker, optimizer, and x86 assembly code generation
\BulletItem%
Added object oriented features while maintaining backwards compatibility
\GapNoBreak%
\Hide{%
\href{https://github.com/lehmacdj/wiki-language-server}{\textbf{Wiki Language Server}},
Language server for zettlekasten-style interlinked markdown notes
\BulletItem%
Implement language server protocol
}
\Hide{%
\href{https://github.com/lehmacdj/graph}{\textbf{Graph System}},
Knowledge graph application
\BulletItem%
Primarily console application allowing filesystem like access to data stored in a graph structure
\BulletItem%
Extensively uses algebraic effects via polysemy library to make code more testable
\BulletItem%
Use GitHub Actions to ensure that test suite is run for all code changes
\Hide{%
\BulletItem%
Made several JSON schema migrations, requiring careful planning for backwards compatibility
}
\GapNoBreak%
}
\textbf{Open Source Contributions}
\BulletItem%
Submit pull requests and bug reports, contribute to feature discussions
\BulletItem%
Made git credential daemon conform to the XDG directory specification
\Hide{%
\BulletItem%
Contribute bug fixes and improvements to vim plugins
}
\BulletItem%
Add missing functionality and support for new versions of dependencies to libraries
% mostly in Haskell ecosystem, at least mono-traversable / classy-prelude,
% can't think of others right now; but also from time at SimSpace semver
% library support for parsing full node semver ranges, and ekg support for
% servant 0.19
\GapNoBreak%
\textbf{PortOS}, minimal operating system running on a MIPS virtual machine
\BulletItem%
Implemented multithreading with preemption and TCP and UDP protocol analogs
\BulletItem%
Learned how to navigate and write a moderately sized (10,000 lines) C code base
\GapNoBreak%
\Hide{%
\textbf{Interpreters}, interpreters and type checkers for variety of languages
\BulletItem%
a subset Scheme, System F, OCalf (a subset of OCaml), and several others
\BulletItem%
Learned how to write REPLs using Haskeline and implement parsers using megaparsec
\GapNoBreak%
}
\Hide{%
\textbf{Heaplib}
\BulletItem%
Implemented and tested malloc, free, and resize in C
\BulletItem%
Learned how to use raw pointers and the trade-offs involved with building
an allocator
\BulletItem%
Wrote a large number of tests to ensure that pointer arithmetic was correct
\GapNoBreak%
}
\Hide{%
\textbf{MIPS Processor}, CS 3410
\BulletItem%
Designed a MIPS processor in Logisim and tested it with programs written in
assembly
\BulletItem%
Learned how to decode binary MIPS instructions into control signals
\GapNoBreak%
}
\Hide{%
\textbf{OCaml Ed}, github.com/lehmacdj/ocaml-ed
\BulletItem%
Implementation of ed, the 1960s line editor, written using OCaml
\BulletItem%
Wrote clear error handling code that cleanly passes errors up to the top level
\GapNoBreak%
}
\Hide{%
\textbf{Life Simulator}, github.com/lehmacdj/simulation
\BulletItem%
Implemented the Game of Life and multicolor variants using Rust
\BulletItem%
Learned how to write memory safe code using Rust and generate png images
}
\section%
{Skills}
{Skills}
{PDF:Skills}
Fluent: C\#, Swift, Haskell, shell scripting, Git, Vim, (Postgre)SQL, JavaScript
\GapNoBreak%
Familiar: TypeScript, React, C, Kotlin, Java, Azure, Rust, Python, OCaml
\end{body}
\end{minipage}
\end{document}