-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
901 lines (836 loc) · 38.4 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
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
<!DOCTYPE html>
<meta charset="utf-8">
<head>
<title>Me</title>
<link href="https://fonts.googleapis.com/css2?family=Quicksand:wght@300;400;500;515;600;700&display=swap" rel="stylesheet">
<link href="css/menu.css" rel="stylesheet">
<link href="css/toggle.css" rel="stylesheet">
<script src="https://kit.fontawesome.com/d74ce70443.js" crossorigin="anonymous"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<style>
/* ------------------ Common ------------------ */
#svg-outer {
cursor: grab;
}
.dark-mode {
color: white;
background: #222;
}
.dark-mode a {
color: #62badd;
}
.dark-mode #menuToggle a {
color: white;
}
body {
margin: 0;
font-family: 'Quicksand', sans-serif;
overflow: hidden;
}
.background {
fill: none;
pointer-events: all;
}
.page-outer {
width: 100%;
height: 100%;
}
.page-inner {
padding-top: 40px;
}
svg {
position: fixed;
height: 100%;
width: 100%;
top: 0;
left: 0;
}
.title {
font-size: 20px;
text-align: center;
}
.text-base {
font-size: 12px;
}
.list {
list-style: none;
margin-left: 0;
}
.list .list-item {
margin-bottom: 10px;
}
.list .list-item .notes {
margin-left: 20px;
font-size: 12px;
}
.list .list-item .heading .logo {
height: 100%;
}
.list .list-item .heading {
display: flex;
gap: 10px;
align-items: center;
height: 40px;
}
.list .list-item .label {
font-size: 20px;
}
.list .list-item div p {
margin-block-start: .6em;
margin-block-end: .6em;
}
/* ------------------ Nav ------------------ */
#arrow {
display: inline;
}
#nav {
z-index: 100;
position: fixed;
left: 0;
top: 0;
height: 100%;
padding-top: 20px;
padding-left: 20px;
}
#nav .link {
z-index: 100;
margin-top:15px;
cursor: pointer;
display: inline-block;
padding-bottom: 2px;
border-bottom: 1px solid transparent;
transition: .1s all;
font-size: 16px;
}
#nav .link:hover {
/* border-bottom: 1px solid gray; */
letter-spacing: 1.1px;
}
/* ------------------ Home ------------------ */
#home #card {
display: flex;
width: 80%;
justify-items: center;
align-items: center;
margin-left: auto;
margin-right: auto;
margin-top: 25%;
}
#home #card #headshot {
border-radius: 50%;
height: 200px;
margin-right: 30px;
}
#home #card #info {
width: calc(100% - 230px);
display: flex;
flex-direction: column;
gap: 15px;
}
/* ------------------ Resume ------------------ */
#resume-outer #resume {
margin: 10px auto;
display: block;
background: white;
padding: 20px;
}
#resume-outer {
padding-top: 20px;
height: 200%;
}
/* ------------------ Zoom-Buttons ------------------ */
#zoom-buttons {
position: fixed;
bottom: 10px;
right: 10px;
padding: 20px;
z-index: 100;
-webkit-touch-callout: none; /* iOS Safari */
-webkit-user-select: none; /* Safari */
-khtml-user-select: none; /* Konqueror HTML */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* Internet Explorer/Edge */
user-select: none; /* Non-prefixed version, currently supported by Chrome and Opera */
}
.zoom-button {
cursor: pointer;
font-size: 40px;
color: #ddd;
transition: .2s all;
text-align: center;
}
.zoom-button:hover {
transform: scale(1.1);
color: #888;
}
/* ------------------ Overrides ------------------ */
#teavar-logo {
font-size: 20px
}
#teavar-logo #highlight1 {
background-color: rgba(220,220,220,0.8);
color: rgba(40,40,40,1);
padding: 0px 3px;
}
#teavar-logo #highlight2 {
background-color: rgba(40,40,40,0.8);
padding: 0px 3px;
color: rgba(220,220,220,1);
}
@media only screen and (min-device-width : 320px) and (max-device-width : 480px) {
.page-inner {
width: 80%;
margin: 0px auto;
padding-top: 0px;
}
#home {
padding-top: 70px;
}
}
</style>
<body>
<!-- <div id="nav" xmlns="http://www.w3.org/1999/xhtml"></div> -->
<nav role="navigation">
<div id="menuToggle">
<input id="hamburger" type="checkbox" />
<span></span>
<span></span>
<span></span>
<ul id="menu">
</ul>
</div>
</nav>
<div id="zoom-buttons">
<div class="zoom-button" id="zoom-in">+</div>
<div class="zoom-button" id="zoom-out">-</div>
</div>
<svg id="svg-outer" viewbox="0,0,800,800">
<g id="view-box" width="100%">
<foreignObject id="home-outer" class="page-outer" x="0" y="0" width="100%" height="200%">
<div class="page-inner" id="home" xmlns="http://www.w3.org/1999/xhtml">
<div id="card">
<img id="headshot" src="img/manursing2.png"/>
<div id="info">
<div class="item">Jeremy Bogle | <a href="mailto:[email protected]">[email protected]</a></div>
<div style="height:1px;background:#ddd"></div>
<div class="item">Software Engineer</div>
<div style="height:1px;background:#ddd"></div>
<div class="item">Master of Computer Systems (MIT)</div>
<div style="height:1px;background:#ddd"></div>
<div class="item">New York, NY</div>
</div>
</div>
</div>
</foreignObject>
<foreignObject id="research-outer" class="page-outer" x="-1200" y="-700" width="100%" height="200%">
<div class="page-inner" xmlns="http://www.w3.org/1999/xhtml">
<div class="title">
<div>Research</div>
</div>
<div class="list">
<div class="list-item">
<div class="heading">
<div id="teavar-logo"><span id="highlight1">TEA</span><span id="highlight2">VAR</span></div>
</div>
<div class="notes">
<p>First author on <a href="https://dl.acm.org/doi/10.1145/3341302.3342069">paper</a> published in ACM SIGCOMM 2019</p>
<p>Modeled traffic routing in a software-defined network as a linar optimization that optimized for potential network failures similar to CVaR in financial portfolio optimization</p>
<p>Implemented with Gurobi linear optimizer in the Julia programming language and experiments plotted using python and gnuplot</p>
</div>
</div>
<div class="list-item">
<div class="heading">
<img class="logo" style="margin-left: -8px" src="img/microsoft.png"/>
</div>
<div class="notes">
<p>Worked with Microsoft researchers in their cloud optimization group</p>
<p>Collaborated on the TEAVAR paper listed above and backed the analysis with real Microsoft network data</p>
</div>
</div>
<div class="list-item">
<div class="heading">
<img class="logo" src="img/csail.png"/>
</div>
<div class="notes">
<p>Worked as a masters student in the CSAIL Networks lab with Professor Manya Ghobadi while pursuing my degree in computer systems</p>
<p><a href="docs/thesis.pdf">Thesis</a> project was related to routing traffic in a software-defined network</p>
</div>
</div>
<div class="list-item">
<div class="heading">
<a href="docs/sqo.pdf">Serverless Query Optimizer</a>
</div>
<div class="notes">
<p>Abstracted a database query optimizer as a lambda function written in Java</p>
<p>Explored parallelizing the query plan search to more efficiently cover the search space and efficiently determine an optimal query plan</p>
<p>Wrote a paper discussing the trade-offs for having the query optimizer as a scaleable serverless function to reduce cycles on the database and cache sup-plans</p>
</div>
</div>
<div class="list-item">
<div class="heading">
<a href="docs/flexnet.pdf">FLEXNET</a>
</div>
<div class="notes">
<p>Flexibile, reconfigurable software-defined network modeled as a linear optimization</p>
<p>Given instant network reconfiguration on traffic shifts, optimizes routing to minimize loss and congestion</p>
</div>
</div>
<div class="list-item">
<div class="heading">
<img class="logo" src="img/media-lab.png"/>
</div>
<div class="notes">
<p>Undergraduate researcher on PEV self driving car project</p>
<p>Built a job scheduling simulation server in Python using real taxi, hubway, and subway data in Boston</p>
<p>Integrated the simulation with open street map for <a href="https://www.media.mit.edu/projects/fleet-simulation/overview/">visualizations</a></p>
</div>
</div>
</div>
</div>
</foreignObject>
<foreignObject id="interests-outer" class="page-outer" x="1200" y="-700" width="100%" height="200%">
<div class="page-inner" xmlns="http://www.w3.org/1999/xhtml">
<div class="title">
<div>Interests</div>
<div class="text-base">things I like to talk about</div>
</div>
<div class="list">
<div class="list-item">
<div class="heading">
<div> <i class="fas fa-network-wired" style="margin-right: 10px"></i>Networks</div>
</div>
<div class="notes">
<p>Experience researching in the field of computer networks with software-defined networks and network routing optimization</p>
<p>Interested in real-time distributed streaming technologies, peer to peer networks and service mesh frameworks in micro-service deployments</p>
</div>
</div>
<div class="list-item">
<div class="heading">
<div> <i class="fas fa-shield-alt" style="margin-right: 10px"></i>Security</div>
</div>
<div class="notes">
<p>Experience with Oauth2.0, JWT authentication and API gateway services including Kong, AWS API gateway</p>
<p>Interested in best security practices in large microservice ecosystems to keep secrets synced securely and safely</p>
<p>Enjoy discussing API rate-limiting, authentication and access control</p>
</div>
</div>
<div class="list-item">
<div class="heading">
<div> <i class="fas fa-database" style="margin-right: 10px"></i>Databases</div>
</div>
<div class="notes">
<p>Experience with many databases in production queuing and streaming systems, and deep production knowledge with the following database systems, indexes and caches - Cassandra, Redis, Postgres, Solr, Elasticsearch, Memcached</p>
<p>Interested in distributed database consistency challenges including data replication and coordination as well as the tradeoffs between reliability vs performance and memory vs disk storage</p>
</div>
</div>
<div class="list-item">
<div class="heading">
<div> <i class="fas fa-box-open" style="margin-right: 10px"></i>Infrastructure</div>
</div>
<div class="notes">
<p>Experience with containers and kubernetes deployments, exploring service versioning and api diff generation for catching regressions</p>
<p>Interested in service containerization, container orchestration, logging frameworks such as Grafana and Prometheus and CI/CD pipelines with automated testing</p>
</div>
</div>
<div class="list-item">
<div class="heading">
<div> <i class="fas fa-code" style="margin-right: 10px"></i>Web</div>
</div>
<div class="notes">
<p>Experience with the latest web frameworks including React, NextJS and react state management tools and interested in the future of web technologies as we continue to build high powered clients</p>
<p>Interested in web assembly, webRTC, and other methods for more powerful client side applications and client side computing</p>
</div>
</div>
<div class="list-item">
<div class="heading">
<div> <i class="fas fa-dice-d6" style="margin-right: 10px"></i>Blockchain</div>
</div>
<div class="notes">
<p>Expert devevloping smart contracts on EVM and Solana and been following the movements of the blockchain space closely</p>
<p>Interested in how blockchain technology and various consensus algorithms can be used to sync data worldwide on a distributed ledger</p>
<p>Enjoy discussing trade-offs between databases, blockchains, new consensus mechanisms and other distributed ledger technologies</p>
</div>
</div>
</div>
</div>
</foreignObject>
<foreignObject id="projects-outer" class="page-outer" x="1200" y="700" width="100%" height="200%">
<div class="page-inner" xmlns="http://www.w3.org/1999/xhtml">
<div class="title">
Features
</div>
<div class="list">
<div class="list-item">
<div class="heading">
<div> Apple</div>
</div>
<div class="notes">
<p>Various cross-functional social music projects exposed via core query API including social search, friends, friends are listening, social graph, and shared listening via facetime and shareplay</p>
<p>Music ML based audio features loudness, energy, acoustiness etc. BPM and key detection was a project that enabled more features like client smooth song transitions, partner integrations with Porsche, as well as the Photos memories project listed below</p>
<p>3rd pary and partner API JWT authentication, global and dynamic rate limiting used for all media integrations including App store, Music, Podcasts, TV+ on platforms like Samsung, LG TV, Porsche, Tesla and the <a href="https://developer.apple.com/documentation/applemusicapi/">third party API</a></p>
<p>I was the DRI (directly responsible invidual) for the photos memories music recognition cross-functional product - received a <b>patent</b> for the work use music ML data to inform transitions and match audio and photo filters locally on-device to a collection of photos</p>
<p>Podcasts data query API for serving first party apps on all platforms and partner integrations</p>
</div>
</div>
</div>
<div style="margin-top:30px" class="title">
Personal Projects
</div>
<div class="list">
<div class="list-item">
<div class="heading">
<div><i class="fas fa-key" style="margin-right: 10px"></i>Pods</div>
</div>
<div class="notes">
<p>Personal data store with data access API for giving generic applications limited access to personal data</p>
<p>Implemented Oauth2.0 + OpenID Connect as a set of microservices that together authenticate and authorize database reads and writes</p>
<p>Flexible translation layer that exposes database queries as an HTTP api that takes a POST request with an access token and raw DB query to execute with permissions</p>
<p>Deployed on a raspberry pi to serve as an home-owned password manager that connected via home wifi and an application can request read access to sync state or retrieve individual passwords</p>
</div>
</div>
<div class="list-item">
<div class="heading">
<img class="logo" src="img/stations.svg" />
</div>
<div class="notes">
<p>Web application with that used Apple Music, Spotify and Soundcloud APIs to create shared playlists and playlists including songs from multiple providers</p>
<p>React/Redux based front-end, Golang backend, and mySql database deployed entirely on AWS EC2</p>
<p>Serverside queues and websockets allow for clients to listen simultaneously and sync up playback, up-vote, down-vote and add new songs on the queue and receive real-time notifications</p>
<p>Won 2nd place in the MIT web design competition</p>
</div>
</div>
<div class="list-item">
<div class="heading">
<img class="logo" id="up-logo" style="height: 90%" src="img/uplogo-black.png"/>
</div>
<div class="notes">
<p>Started an LLC in high school to fly drones and take photos of houses for real estate companies</p>
<p>Developed video editing, photo editing, graphic design, and communication skills</p>
</div>
</div>
</div>
</div>
</foreignObject>
<foreignObject class="page-outer" id="skills-outer" x="0" y="1400" width="100%" height="200%">
<div class="page-inner skills" style="margin-top:10px" xmlns="http://www.w3.org/1999/xhtml">
<style>
.header {
display: flex;
justify-content: space-between;
justify-items: center;
margin-bottom: 10px;
}
.description {
color: #4a4a4a;
font-size: 12px;
}
.table {
margin-top: 20px;
font-size: 12px;
}
.table .row-header {
border-bottom: 1px solid #ddd;
font-weight: 600;
}
.table .row {
padding: 10px 5px;
width: 100%;
display: flex;
}
.table .row .first{
flex-grow: 1;
width: 25%;
}
.table .row .second {
flex-grow: 3;
width: 75%;
}
</style>
<div class="header">
<div>Programming Languages</div>
</div>
<div class="description">I've interacted with a variety of systems and programming languages and am aware of many trade-offs that exists. Here are some thougts and tidbits about when I've worked with each of these languages.</div>
<div class="table">
<div class="row row-header">
<div class="first">Name</div>
<div class="second">Description</div>
</div>
<div class="row">
<div class="first">Typescript</div>
<div class="second">Massive fan of typescript. While it has quirks, the typing system is incredibly flexible and expressive and allows for functional programming to create things very quickly. Most used client side on web projects, or sometime serverless nodeJS APIs. Would not use for large scale backends</div>
</div>
<div class="row">
<div class="first">Java</div>
<div class="second">Became intimiately familiar using Java at scale during my time as an engineer at Apple. Having seen massive codebases, I see large value in having something as robust as Java and being able to debug in common ways with thread and heap dumps and having easy multi-threading. However, many issues arose from the garbage collection and additional overhead of the JVM and I would be excited to see similarly sized system in action with Go or Rust</div>
</div>
<div class="row">
<div class="first">Rust</div>
<div class="second">Quickly gaining rust experience and consistently being impressed by features of the language that allow for safe, performant code. Written smart contracts and high performance multi-threaded code reading and writing to postgres in rust.</div>
</div>
<div class="row">
<div class="first">Go</div>
<div class="second">Built a web proxy from scratch in Go to handle mirroring HTTP requests to multiple upstreams, comparing results and storing in Cassandra database. Also used for a websockets project. Very handy networking libraries and similarly and a fan of the class interface and typing system</div>
</div>
<div class="row">
<div class="first">Python</div>
<div class="second">Used for scripting, data science libraries including Numpy, Pandas and used with tensorflow for any ML projects. I have also used Django for web services. Wary about python without types for production use across multiple teams</div>
</div>
<div class="row">
<div class="first">Clojure</div>
<div class="second">Used extensively during my time at Apple as a JVM compatible functional programming language. It was nice being able to leverage all Java types but be expressive in the query API which had a lot of data manipulation. Also leveraged and experimented with thread pooling and async programming with libraries like core.async and manifold</div>
</div>
<div class="row">
<div class="first">Julia</div>
<div class="second">Great for data-science and optimizations. Used during my research work writing linear optimization programs and was able to implement objective functions and conditions and use mathematical solvers (Gurobi) very easily.</div>
</div>
<div class="row">
<div class="first">Scala</div>
<div class="second">Used when writing load tests using Gatling. No real opinions or formative experiences yet</div>
</div>
<div class="row">
<div class="first">C/C++</div>
<div class="second">Used moderately for lower level embedded systems and university classwork. Familiar with memory management and parallel computing library cilk. Would prefer starting with rust for newer projects at this stage</div>
</div>
</div>
</div>
</foreignObject>
<foreignObject class="page-outer" id="resume-outer" x="-1200" y="700" width="100%" height="200%">
<div class="page-inner resume" xmlns="http://www.w3.org/1999/xhtml">
<style>
.resume {
font-size: 7px;
width: 550px;
margin: 0px auto;
}
.resume .r-item {
margin-top: 5px;
}
.resume .r-section {
margin-top: 10px;
}
.resume a {
color: #0044d6;
}
.resume .justify-between {
display: flex;
justify-content: space-between
}
.resume .text-medium {
font-size: 9px;
}
.resume .r-notes {
display: flex;
flex-direction: column;
padding-left: 20px;
}
.resume .text-italic {
font-style: italic;
}
</style>
<div style="display:flex;justify-content:space-between;margin-bottom:10px;">
<div style="font-size:15px">Jeremy Bogle</div>
<div style="text-align:right">
<a href="mailto:[email protected]">[email protected]</a>
<div href="tel:+1-781-835-9305">781-835-9305</div>
</div>
</div>
<div class="r-section">
<div class="text-medium">EDUCATION</div>
<hr/>
<div class="r-item">
<div class="justify-between">
<div class="text-medium">Massachusetts Institute of Technology (Masters)</div>
<div>September 2018 - June 2019</div>
</div>
<div class="justify-between">
<div class="text-italic">Masters in Computer Science with a Concentration in Computer Systems</div>
<div>GPA: 5.0/5.0</div>
</div>
<div class="r-notes">
<div>• Database Systems, Computer Networks, Advanced Algorithms, Distributed Systems, Computer Systems Security</div>
<div>• First author on published research applying financial risk theory to optimize network traffic (<a href="https://news.mit.edu/2019/reduce-cost-cloud-infrastructure-0819">https://news.mit.edu/2019/reduce-cost-cloud-infrastructure-0819</a>)</div>
</div>
</div>
<div class="r-item">
<div class="justify-between">
<div class="text-medium">Massachusetts Institute of Technology (Undergrad)</div>
<div>September 2014 - June 2018</div>
</div>
<div class="justify-between">
<div class="text-italic">B.S. in Electrical Engineering and Computer Science with a Minor in Economics</div>
<div>GPA: 4.4/5.0</div>
</div>
<div class="r-notes">
<div>• CS Coursework: Software Construction (Java), Software Studio (Javascript), AI, Machine Learning, User Interface Design, Algorithms, Computation Structures (Assembly, C/C++), Programming Fundamentals (Python), Mathematics for Computer Science</div>
<div>• EE Coursework: Microcomputer Project Laboratory (Assembly, C), Electromagnetic Waves and Applications, Circuits and Electronics</div>
<div>• Economics Coursework: Health Economics, Public Economics and Policy, Microeconomics, Macroeconomics</div>
</div>
</div>
</div>
<div class="r-section">
<div class="text-medium">EXPERIENCE</div>
<hr/>
<div class="r-item">
<div class="justify-between">
<div class="text-medium">Cardinal Labs</div>
<div>December 2021 - Present</div>
</div>
<div class="text-italic">Co-founder & CTO</div>
<div class="r-notes">
<div>• Worked on the cutting edge to scale Solana blockchain via smart-contracts (<b>rust</b>), app development (<b>react, typescript</b>) and related cloud infrastructure</div>
<div>• With a team of 5, deployed 15+ smart contracts, SDKs (<b>serverless, typescript</b>), reached 5mm+ transactions, 150k+ unique users, and 40k MAU</div>
<div>• Developed CI/CD for node deployments (<b>terraform</b>), read optimized query index (<b>postgres, graphQL</b>), and smart contract upgrades with multi-party sign-off</div>
</div>
<div class="r-item">
<div class="justify-between">
<div class="text-medium">Apple</div>
<div>August 2018 - September 2018, August 2019 - December 2021</div>
</div>
<div class="text-italic">Senior Software Engineer</div>
<div class="r-notes">
<div>• Architected systems and infra (<b>java, clojure</b>) on k8s serving billions of users and devices worldwide with 100k+ QPS across Apple Music, Podcasts, TV+</div>
<div>• Developed global automated API diff service (<b>golang</b>) and dashboard for safer deployments with anomaly detection, rollback, and sign-off features</div>
<div>• Owned and managed globally distributed rate limit, authentication, and API infra (<b>Kong, Lua</b>) for servicing internal, third-party, and partner integrations</div>
<div>• Led multiple cross-functional feature projects involving product, design, and engineering teams over multiple months shipping across multiple platforms</div>
<div>• Worked closely with SREs to address production issues, moved core services from bare metal to edge DCs (<b>k8s, spinnaker, helm</b>), led team infra trainings</div>
</div>
</div>
<div class="r-item">
<div class="justify-between">
<div class="text-medium">Microsoft + MIT CSAIL</div>
<div>August 2018 - August 2019</div>
</div>
<div class="text-italic">Software Engineer / Researcher (graduate student)</div>
<div class="r-notes">
<div>• Applied financial theory to optimize inter-data-center traffic to minimize bandwidth usage and congestion and maximize availability - algorithm written in <b>Julia</b></div>
<div>• First author on research paper (<a href="https://dl.acm.org/doi/10.1145/3341302.3342069">https://dl.acm.org/doi/10.1145/3341302.3342069</a>) published in SIGCOMM 2019 and presented in Beijing (now over 60+ citations)</div>
<div>• Integrated real Microsoft historical WAN data into backtesting experiments, graphical and statistical analysis (<b>julia, python</b>) for the paper</div>
</div>
</div>
<div class="r-item">
<div class="justify-between">
<div class="text-medium">Novartis</div>
<div>June 2017 - August 2017</div>
</div>
<div class="text-italic">Software Engineer (intern)</div>
<div class="r-notes">
<div>• Created an image recognition application (<b>tensorflow</b>) that allows scientists and engineers to rapidly draw scalable models and diagrams</div>
<div>• Trained a machine learning model to identify shapes drawn by users and allow them to be placed into diagrams</div>
<div>• Built a web (<b>react</b>) drawing interface for users to collaborate in real-time (<b>websockets, webRTC</b>) to draw diagrams and convert hand drawn shapes to SVGs</div>
</div>
</div>
<div class="r-item">
<div class="justify-between">
<div class="text-medium">NASDAQ</div>
<div>May 2016 - August 2016</div>
</div>
<div class="text-italic">Software Engineer (intern)</div>
<div class="r-notes">
<div>• Developed a web development platform (<b>javascript</b>) and potential new product for the Global Corporate Solutions business in the web hosting space</div>
<div>• Created a PDF parser (<b>python</b>) to generate easy to read, human friendly, interactive websites from company filings that can be shared out to shareholders</div>
</div>
</div>
</div>
<div class="r-section">
<div class="text-medium">LEADERSHIP AND ACTIVITIES</div>
<hr/>
<div class="r-item">
<div class="justify-between">
<div class="text-medium">Theta Tau Professional Engineering Fraternity</div>
<div>March 2016 - Present</div>
</div>
<div class="text-italic">President & Active Board Director</div>
<div class="r-notes">
<div>• Managed and led 50 diverse college students in the creation of a brand new professional engineering fraternity</div>
<div>• Governed all internal chapter operations and finances while acting as chapter president and now serve as active director of alumni association</div>
</div>
</div>
<div class="r-item">
<div class="justify-between">
<div class="text-medium">MIT Varsity Swimming & Diving, MIT Varsity Water Polo</div>
<div>September 2014 - June 2018</div>
</div>
<div class="text-italic">Captain</div>
<div class="r-notes">
<div>• Swimming: 7x All-American at Division III National Championships, 12x NEWMAC conference champion, 4x Academic All-American (sprint free and backstroke)</div>
<div>• Water Polo: Center and center defender, won a Division III Eastern Championships and placed 5th at the CWPA Eastern Championships</div>
</div>
</div>
</div>
<div class="r-section">
<div class="text-medium">SKILLS AND INTERESTS</div>
<hr/>
<div class="r-item">
<div class="text-medium">Software Engineering</div>
<div class="r-notes">
<div>• Programming Languages: Rust, Go, Java, Clojure, Javascript/Typescript, Python, C/C++, Lua, Julia, Sql</div>
<div>• Technologies: Kubernetes, Redis, Cassandra, Kafka, Kong, Prometheus, Grafana, Airflow, Postgres, GraphQL, React, Tensorflow, terraform, webRTC, AWS/GCP</div>
</div>
</div>
<div class="r-item">
<div class="text-medium">Other Interests</div>
<div class="r-notes">
<div>• Hobbyist with music production, video/audio/photo editing using Final Cut Pro, Adobe Premier, and Adobe After Effects</div>
<div>• Served as a prefect, senior RA, class president, and now alumni class representative at boarding school. Enjoys skiing and golf</div>
</div>
</div>
</div>
</div>
</foreignObject>
</g>
</svg>
</body>
<script src="https://d3js.org/d3.v4.min.js"></script>
<script src="https://d3js.org/topojson.v1.min.js"></script>
<script>
const pages = [
{
id: "home",
title: "Home",
x: 0,
y: 0,
},
{
id: "research",
title: "Research",
x: -1200,
y: -700,
},
{
id: "interests",
title: "Interests",
x: 1200,
y: -700,
},
{
id: "projects",
title: "Projects",
x: 1200,
y: 700,
},
{
id: "resume",
title: "Resume",
x: -1200,
y: 700,
},
{
id: "skills",
title: "Skills",
x: 0,
y: 1400,
},
];
let grabbingDisabled = false;
const zoom = d3.zoom()
.scaleExtent([.3, 2])
.on("start", () => {
if (!grabbingDisabled) {
d3.select('#svg-outer').attr("style", "cursor: grabbing")
}
})
.on("end", () => {
d3.select('#svg-outer').attr("style", "");
grabbingDisabled = false;
})
.on("zoom", () => {
let transform = d3.event.transform;
let g = d3.select("#view-box");
g.attr("transform", transform);
});
const birdsEyeTransform = d3.zoomIdentity
.translate(300,250)
.scale(.3);
const centerTransform = d3.zoomIdentity
.translate(0,0)
.scale(1);
const svg = d3.select("#svg-outer")
.on("click", stopped);
var initialTransform = centerTransform;
var hash = "#home"
initLinks();
if (window.location.hash) {
hash = window.location.hash;
let bounds = d3.select(hash).attr("bounds").split(",").map(parseFloat);
initialTransform = getTransformFromBounds(bounds);
}
svg.call(zoom) // delete this line to disable free zooming
.call(zoom.transform, initialTransform)
.on("wheel.zoom", null);
var active = d3.select(hash).classed("active", true);
function initLinks() {
const menu = d3.select("#menu");
pages.forEach((link, i) => {
let y = window.matchMedia('only screen and (min-device-width : 320px) and (max-device-width : 480px)').matches && link.id != 'home' ? link.y - 100 : link.y;
d3.select(`#${link.id}-outer`)
.attr("x", link.x)
.attr("y", y)
menu.append("a")
.attr("href", `#${link.id}`)
.append("li")
.attr("bounds", `${link.x},${link.y + parseFloat(svg.style('height').slice(0, -2))},${link.x + parseFloat(svg.style('width').slice(0, -2))},${link.y}`)
.attr("id", link.id)
.html(link.title)
.on("click", clicked);
});
menu.append("input")
.attr("type", "checkbox")
.attr("id", "switch")
.on("click", toggleDarkMode)
menu.append("label")
.attr("for", "switch")
}
function getTransformFromBounds(bounds) {
const dx = bounds[2] - bounds[0];
const dy = bounds[1] - bounds[3];
const x = (bounds[0] + bounds[2]) / 2;
const y = (bounds[3] + bounds[1]) / 2;
const width = svg.style('width').slice(0, -2);
const height = svg.style('height').slice(0, -2);
const scale = Math.max(1, Math.min(8, 0.9 / Math.max(dx / width, dy / height)));
const translate = [width / 2 - scale * x, height / 2 - scale * y];
const transform = d3.zoomIdentity
.translate(translate[0], translate[1])
.scale(scale);
return transform;
}
function clicked(d) {
if (active.node() === this) return reset();
// d3.selectAll("#arrow").remove();
active.classed("active", false);
active = d3.select(this).classed("active", true);
// active.append("div").attr("id", "arrow").html("☞ ").lower();
let bounds = d3.select(this).attr("bounds").split(",").map(parseFloat);
svg.transition()
.duration(1500)
.call(zoom.transform, getTransformFromBounds(bounds));
grabbingDisabled = true;
document.getElementById("hamburger").click();
}
function reset() {
d3.selectAll("#arrow").remove();
active.classed("active", false);
active = d3.select(null);
svg.transition()
.duration(750)
.call(zoom.transform, birdsEyeTransform);
}
// If the drag behavior prevents the default click,
// also stop propagation so we don’t click-to-zoom.
function stopped() {
if (d3.event.defaultPrevented) d3.event.stopPropagation();
}
function toggleDarkMode() {
var element = document.body;
element.classList.toggle("dark-mode");
d3.select("#up-logo").attr("src", "img/upphoto.png");
d3.select("#up-logo").attr("style", "height:80%; margin-left: 5px");
}
d3.select("#zoom-in").on("click", function() {
zoom.scaleBy(svg.transition().duration(100), 1.2);
});
d3.select("#zoom-out").on("click", function() {
zoom.scaleBy(svg.transition().duration(100), 0.8);
});
</script>