-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
281 lines (238 loc) · 15.1 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
<!DOCTYPE HTML>
<html>
<head>
<title>Tommy's Personal Page</title>
<link rel="icon" href="images/icon.ico">
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<link rel="stylesheet" href="assets/css/main.css" />
<noscript><link rel="stylesheet" href="assets/css/noscript.css" /></noscript>
<script src="https://kit.fontawesome.com/4f33254d66.js" crossorigin="anonymous"></script>
</head>
<body class="is-preload">
<!-- Wrapper -->
<div id="wrapper">
<!-- Header -->
<header id="header">
<div class="logo">
<span class="icon fa-gem"></span>
</div>
<div class="content">
<div class="inner">
<h1>Tommy Li</h1>
<p>Software Engineer<br>Google</p>
</div>
</div>
<nav>
<ul>
<li><a href="#about">About Me</a></li>
<li><a href="#work">Experience</a></li>
<li><a href="#contact">Contact Me</a></li>
</ul>
</nav>
</header>
<!-- Main -->
<div id="main">
<!-- About -->
<article id="about">
<h2 class="major">About Me</h2>
<span class="image main"><img src="images/pic01.jpg" alt="" /></span>
<h3><a href="https://drive.google.com/file/d/12yVLztANYWAoW8InKKK5kOJG-EB99WIH/view">My Résumé</a></h3>
<h3>Quick Overview</h3>
<ul style="list-style-type:circle;">
<li>Current Software Engineer at Google</li>
<li>Past experience at Amazon, AbbVie, GSA, Paciolan, Google Summer of Code</li>
<li>Contributor of <a href="https://github.com/Nuitka">Nuitka Organization (Open Source)</a></li>
<li>Very passionate about computer science</li>
<li><a href="#work">Find out more about my work and projects here</a></li>
</ul>
<p>
Hello! :)<br><br>
I'm Tommy, I truly enjoy coding and my work revolves around my goal of developing software that improves people's lives.
</p>
<p>
From various work experiences, personal projects, and course material, I have established a solid foundation in software engineering and development.
In particular, I am experienced in backend development with Node.js and Python.
In addition, I am also proficient in JavaScript/HTML/CSS, C++, and Java.
</p>
<p>
I really enjoy coding and am always open to learning new skills.
Outside of classes and work, I contribute to open source, go to hackathons, do research, and make personal projects.
I also like to spend my free time playing games and listening to music.
</p>
</article>
<!-- Work -->
<article id="work">
<h2 class="major">Experience</h2>
<ul style="list-style-type:circle;">
<li><a href="https://drive.google.com/file/d/12yVLztANYWAoW8InKKK5kOJG-EB99WIH/view">Résumé</a></li>
</ul>
<h3 class="major"><br>Professional Experience</h3>
<h3>Google</h3>
<h4>Software Engineer</h4>
<ul style="list-style-type:circle;">
<li>Using AI to make YouTube a safer platform for users and creators.</li>
</ul>
<h3>Google</h3>
<h4>Software Engineering Intern</h4>
<ul style="list-style-type:circle;">
<li>Worked on Google Ads analytics backend production infrastructure services</li>
<li>Built an API used by 2 other teams handling 10 million+ requests per hour</li>
<li>Fully implemented, tested, and deployed API to production using various Google internal tools</li>
</ul>
<h3>Amazon</h3>
<h4>Software Development Engineer Intern</h4>
<ul style="list-style-type:circle;">
<li>Worked on Amazon Luna backend services</li>
<li>Designed, implemented, tested, and deployed a new Luna service from scratch using AWS CDK</li>
<li>Built a fully functional CI/CD pipeline with 7 stages for automated testing and deployment</li>
</ul>
<h3>AbbVie, Inc.</h3>
<h4>Student Software Engineer; Team Lead</h4>
<ul style="list-style-type:circle;">
<li>Leader of UCI capstone team developing software which generates a 3D model from a set of three existing 2D images</li>
<li>Managed and assigned tasks and stories among team members to ensure collaborative efficiency</li>
<li>Designed and implemented stitching algorithm using dlib facial landmarks to improve 3D facial model depth accuracy</li>
</ul>
<h3>U.S. General Services Administration</h3>
<h4>DevOps Engineer Intern</h4>
<ul style="list-style-type:circle;">
<li>Developed proof-of-concept CI/CD pipeline for provisioning serverless AWS infrastructure</li>
<li>Tested extensible automated build, test and deploy workflows with AWS CodePipeline using resources defined with
CloudFormation templates in AWS CDK (Lambda, Step Functions, DynamoDB, CloudWatch, S3, API Gateway)</li>
<li>Tested AWS resource delays to facilitate business decisions of moving legacy systems to AWS infrastructure</li>
</ul>
<h3>Paciolan, LLC</h3>
<h4>Student Software Engineer</h4>
<ul style="list-style-type:circle;">
<li>Designed and implemented new Twilio shortcode SMS feature using AWS in Node.js</li>
<li>Implemented AWS CloudWatch metrics to record the number of SMS sent</li>
<li>Implemented unit and component tests with Mocha framework reaching 100% path coverage</li>
<li>Utilized AGILE practices for software development and GitLab for version control</li>
</ul>
<h3><a href="https://github.com/Nuitka">Nuitka Organization (Open Source)</a></h3>
<h4>Member</h4>
<ul style="list-style-type:circle;">
<li>Implemented new algorithm to support distutil compilation of packages with distinct namespaces</li>
<li>Improved automated PyPI testing algorithm running time by 50% via caching</li>
</ul>
<h3><a href="https://github.com/tommyli3318/Nuitka-website/blob/GSoC-final-posting/posts/tommy-gsoc-summary.rst">Google Summer of Code 2019</a></h3>
<h4>Student Developer</h4>
<ul style="list-style-type:circle;">
<li>Worked under the <a href="https://nuitka.net/">Nuitka sub-organization</a> of Python Software Foundation</li>
<li>Implemented automated testing algorithm to ensure Nuitka's compatibility with the most popular PyPI packages</li>
<li>Developed py_module compilation support for Nuitka</li>
<li>Improved clarity of Nuitka standalone test files with the addition of a special mechanism</li>
<li>Performed standalone package testing to find bugs in Nuitka compilation</li>
<li><a href="https://github.com/tommyli3318/Nuitka-website/blob/GSoC-final-posting/posts/tommy-gsoc-summary.rst">Click here for a summary of my work</a></li>
</ul>
<h3>Undergraduate Research (Calit2)</h3>
<h4>Researcher</h4>
<ul style="list-style-type:circle;">
<li>Utilized QIIME, Qiita, and MG-RAST to perform DNA analysis on data from sequencing centers</li>
<li>Presented findings of the human gut microbiome and living habits to an audience of over 300</li>
</ul>
<h3 class="major"><br>Hackathons</h3>
<h3><a href="https://devpost.com/software/safeskate">"SafeSkate" - Winner of HackUCI 2020</a></h3>
<ul style="list-style-type:circle;">
<li>Computer vision and IoT project to detect obstacles for skateboards via Raspberry Pi camera</li>
<li>Designed and implemented backend algorithm for object detection using OpenCV in Python</li>
<li>Optimized backend script to detect contours 30% faster by improving code logic</li>
<li>Set up Firebase and communication between backend and frontend via API endpoints</li>
</ul>
<h3><a href="https://devpost.com/software/codebattle-c96yms">"CodeBattle" - Winner of HackSC 2019</a></h3>
<ul style="list-style-type:circle;">
<li>Led my team to develop CodeBattle, an interactive coding webpage where players battle in real-time</li>
<li>Communicated with team to create a structure of connecting frontend to backend</li>
<li>Implemented backend using AWS serverless lambdas with API endpoints to interact with frontend</li>
<li>Constructed database for user and room data using Amazon DynamoDB</li>
</ul>
<h3><a href="https://devpost.com/software/zot-calendars">"Zot Calendar" - HackUCI 2019</a></h3>
<ul style="list-style-type:circle;">
<li>Designed an assignment tracker for students which sorts tasks based on importance</li>
<li>Took initiative to communicate with team and decide on frameworks to use</li>
<li>Implemented backend algorithm to determine the importance of each task on a person’s schedule</li>
</ul>
<h3><a href="https://github.com/tommyli3318/Zot-Trending">"Zot Trending" - ZotHacks 2018</a></h3>
<ul style="list-style-type:circle;">
<li>Created a newsfeed web page sourcing trendy news via APIs</li>
<li>Implemented backend algorithm to source news using Python</li>
<li>Constructed API routes to communicate with frontend using Flask</li>
<li>Learned the Git Flow and the importance of teamwork in software projects</li>
</ul>
<h3 class="major"><br>Projects</h3>
<h3><a href="https://github.com/tommyli3318/DiscordBattleBot" target="_blank">Discord Battle Bot</a></h3>
<ul style="list-style-type:circle;">
<li>Discord bot which allows users to challenge other users to a mini-game duel</li>
<li>Built using the Discord API in Python</li>
</ul>
<h3>Wumpus World AI</h3>
<ul style="list-style-type:circle;">
<li>Project for CS-171 Intro Artificial Intelligence</li>
<li>Created AI which makes smart decisions based around its environment</li>
<li>Designed and implemented data structures for the AI's knowledge base</li>
<li>Implemented A* search to efficiently navigate to desired parts of the map</li>
</ul>
<h3><a href="https://tommyli3318.github.io/Tic-Tac-Toe/" target="_blank">Tic Tac Toe</a></h3>
<ul style="list-style-type:circle;">
<li>Tic Tac Toe game with an unbeatable AI</li>
<li>Implemented AI in JavaScript with minimax algorithm</li>
</ul>
<h3><a href="https://github.com/tommyli3318/Columns-2">Columns 2</a></h3>
<ul style="list-style-type:circle;">
<li>Pure Python version of the classic video game Columns</li>
<li>Implemented game logic using Python</li>
<li>Developed display using the Pygame package</li>
</ul>
<h3><a href="https://github.com/tommyli3318/Newegg-Web-Scraper">Web Scraper for Newegg</a></h3>
<ul style="list-style-type:circle;">
<li>Implemented scraping algorithm using Python</li>
<li>Takes in a search term (ex: gaming mouse) as input</li>
<li>Writes all the search results found on newegg and their relevant information to a .csv file</li>
</ul>
<h3><a href="https://github.com/tommyli3318/python-heap/blob/main/heap.py" target="_blank">Python Heapq Wrapper</a></h3>
<ul style="list-style-type:circle;">
<li>A simple wrapper around the Python heapq implementation to make it more convenient to work with heaps</li>
</ul>
</article>
<!-- Contact -->
<article id="contact">
<h2 class="major">Contact Me</h2>
<h3>Email</h3>
<ul style="list-style-type:circle;">
<li><a href="mailto:[email protected]">[email protected]</a></li>
<li><a href="mailto:[email protected]">[email protected]</a></li>
</ul>
<h3>LinkedIn</h3>
<ul style="list-style-type:circle;">
<li><a href="https://www.linkedin.com/in/tommyli3318/">https://www.linkedin.com/in/tommyli3318/</a></li>
</ul>
</article>
</div>
<!-- Footer -->
<footer id="footer">
<ul class="icons">
<li><a href="https://drive.google.com/file/d/12yVLztANYWAoW8InKKK5kOJG-EB99WIH/view" class="far fa-file"></a></li>
<li><a href="https://www.linkedin.com/in/tommyli3318/" class="icon brands fa-linkedin"></a></li>
<li><a href="https://github.com/tommyli3318" class="icon brands fa-github"></a></li>
</ul>
</footer>
</div>
<!-- BG -->
<div id="bg"></div>
<!-- Scripts -->
<script src="assets/js/jquery.min.js"></script>
<script src="assets/js/browser.min.js"></script>
<script src="assets/js/breakpoints.min.js"></script>
<script src="assets/js/util.js"></script>
<script src="assets/js/main.js"></script>
<script>
// Open all non-domain links in a new page
var a_tags = document.body.getElementsByTagName("a");
for (var i = 0; i < a_tags.length; ++i) {
if (!a_tags[i].href.includes(document.domain))
a_tags[i].setAttribute("target","_blank");
}
</script>
</body>
</html>