Skip to content

Commit fa8a354

Browse files
authored
Merge pull request #89 from Perry2004/chore/2026-sep-content-update
Chore/2026 sep content update
2 parents f72f1d0 + 47c0007 commit fa8a354

11 files changed

Lines changed: 128 additions & 66 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,4 @@
4949
"vite": "^6.3.6"
5050
},
5151
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
52-
}
52+
}

public/coop_resume.pdf

-246 KB
Binary file not shown.

public/data/about-me.json

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"phrases": [
3-
"Cloud Ops Database Engineer",
3+
"Teaching Assistant",
44
"Database Engineer",
55
"DevOps Engineer",
66
"Software Engineer",
@@ -10,17 +10,15 @@
1010
"International Student from China",
1111
"Computer Science Student",
1212
"Statistics Student",
13-
"Cloud Infrastructure Specialist",
13+
"Cloud Engineer",
1414
"Kubernetes Enthusiast",
1515
"Database Administration Specialist",
1616
"Terraform Practitioner",
1717
"AWS Solutions User",
1818
"Automation Enthusiast",
1919
"Problem Solver",
2020
"Lifelong Learner",
21-
"Former PLAI Research Engineer",
22-
"Former UBC TA",
23-
"Open Source Contributor",
21+
"Open Source Maintainer",
2422
"Amateur Photographer",
2523
"Violin Player",
2624
"Aviation Fan",
@@ -34,10 +32,10 @@
3432
"Vocaloid Producer"
3533
],
3634
"paragraphs": [
37-
"I'm a Computer Science and Statistics student at UBC, currently on co-op as a Cloud Ops Database Engineer at Samsung R&D Canada. I'm passionate about technology, problem-solving, and continuous learning.",
38-
"At Samsung, I work on cloud infrastructure and database operations, building tools for account management and implementing Kubernetes and Terraform solutions. I also enjoy contributing to research projects at UBC's PLAI lab, where I develop Minecraft plugins and AI agent frameworks.",
39-
"I have experience with various technologies including Kubernetes, Docker, AWS, Python, TypeScript, and Java. I've worked with databases like MySQL, PostgreSQL, and MongoDB, and I enjoy automating workflows and building monitoring solutions.",
40-
"Beyond coding, I'm an amateur photographer, violin player, and aviation enthusiast. I love playing Minecraft (and have developed mods & plugins for it!), reading manga, and spending time with my cat. I also enjoy strategy games like War Thunder and Total War.",
35+
"I'm a Computer Science and Statistics student at UBC, where I currently working as a Teaching Assistant for CPSC330 Applied Machine Learning. I'm passionate about software development and cloud engineering.",
36+
"I've previously worked as a Cloud Operations & Database Engineering at Samsung R&D Canada and as a Software Engineer at UBC's Pacific Laboratory for Artificial Intelligence (PLAI). I have experience in cloud infrastructure, DevOps, database administration, and fullstack software development.",
37+
"I co-authored ClawBench and architected its core containerized runtime for safe, reproducible browser-agent evaluation. I also maintain the open-source project through CI/CD, releases, runtime integrations, community reviews, and user support.",
38+
"I work with AWS, Kubernetes, Terraform, Ansible, Docker, Grafana, OpenTelemetry, TypeScript, Go, Python, Java, PostgreSQL, and MongoDB, and I enjoy automating workflows and building reliable systems.",
4139
"I'm always eager to explore new technologies and collaborate on interesting projects. Feel free to reach out if you'd like to connect!"
4240
]
4341
}

public/data/work-experiences.json

Lines changed: 35 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,44 @@
11
{
22
"workExperiences": [
33
{
4-
"jobTitle": "Cloud Ops Database Engineer",
5-
"company": "Samsung R&D Canada",
6-
"companyShortName": "Samsung R&D Canada",
7-
"startDate": "Sep 2025",
4+
"jobTitle": "Teaching Assistant - CPSC330 Applied Machine Learning",
5+
"company": "The University of British Columbia, Department of Computer Science",
6+
"companyShortName": "UBC Computer Science",
7+
"startDate": "Sep 2026",
88
"endDate": "Present",
99
"descriptions": [
1010
{
11-
"shortDesc": "Built a centralized User Account Management tool with enterprise-grade controls for 2000+ database accounts.",
11+
"shortDesc": "Teaching assistant for CPSC330 Applied Machine Learning.",
1212
"longDesc": [
13-
"Developed a centralized User Account Management (UAM) tool to unify prod and non-prod account management for 2000+ accounts across all project databases with an intuitive UI, implementing automated password rotation, account expiration, safe credential delivery via corporate email, and ticket-attached audit logging for compliance."
13+
"Serving as a teaching assistant for CPSC330 Applied Machine Learning."
1414
]
15-
},
16-
{
17-
"shortDesc": "Orchestrated Kubernetes delivery for UAM and secured multi-account database connectivity with Terraform IaC.",
18-
"longDesc": [
19-
"Orchestrated the UAM application deployment on Kubernetes with Argo CD and AWS EKS, architecting network routings, VPC peerings, IAM policies, and Security Groups using Terraform to securely connect to 100+ MySQL, Postgres, Redshift, and MongoDB databases across 20+ VPCs in 5 AWS accounts and 3 regions."
20-
]
21-
},
15+
}
16+
],
17+
"location": "Vancouver, British Columbia, Canada"
18+
},
19+
{
20+
"jobTitle": "Cloud Operations & Database Engineer",
21+
"company": "Samsung R&D Canada",
22+
"companyShortName": "Samsung R&D Canada",
23+
"startDate": "Sep 2025",
24+
"endDate": "Aug 2026",
25+
"descriptions": [
2226
{
23-
"shortDesc": "Automated observability migration to Grafana by standardizing Alloy agent rollout via Ansible.",
27+
"shortDesc": "Built and deployed DB-UAM for secure, auditable management of 3,000+ accounts across 150+ databases.",
2428
"longDesc": [
25-
"Supported the migration from Datadog to self-hosted Grafana by automating the configuration and deployment of Alloy agents across 70+ MongoDB EC2 instances with Ansible, ensuring consistent metrics, traces, and log shipping."
29+
"Designed and built DB-UAM, a centralized portal for secure and auditable database-user lifecycle management across MongoDB, MySQL, PostgreSQL, and Amazon Redshift. Deployed it to AWS EKS through Argo CD using Helm charts and provisioned dedicated subnets, a Karpenter NodePool, cross-account networking, VPC peering, IAM policies, and security groups with Terraform, supporting 3,000+ accounts across 150+ databases in multiple VPCs, AWS accounts, and regions."
2630
]
2731
},
2832
{
29-
"shortDesc": "Built MongoDB index usage collection and visualization to guide DBA tuning decisions.",
33+
"shortDesc": "Migrated database observability to Grafana LGTM and expanded MongoDB and RDS monitoring.",
3034
"longDesc": [
31-
"Performed index usage statistics collection by developing a cron script and a dashboard to automatically collect, aggregate, and visualize MongoDB index usage across all replica sets, enabling senior DBAs to analyze and optimize index performance."
35+
"Migrated database observability from Datadog to a self-hosted Grafana LGTM stack integrated with AlertNow and Slack, using Ansible to deploy and configure Alloy across 80+ MongoDB EC2 instances for standardized metrics and logs. Customized a fork of an open-source MongoDB Prometheus exporter and configured an RDS exporter to support internal monitoring requirements and additional functionality, built MongoDB and RDS dashboards and alerts, and developed custom scripts for MongoDB index-usage analytics."
3236
]
3337
},
3438
{
35-
"shortDesc": "Designing Grafana dashboards for RDS, Redshift, and MongoDB to improve real-time visibility and alerting.",
39+
"shortDesc": "Deployed MongoDB Ops Manager to AWS EKS for secure and resilient database administration.",
3640
"longDesc": [
37-
"Designing and building custom Grafana dashboards to monitor RDS, Redshift, and MongoDB status, improving real-time visibility into database and OS health and enabling timely alerting."
41+
"Deployed MongoDB Ops Manager to AWS EKS using Helm charts and Terraform; configured TLS-encrypted communication, backup and recovery, high availability, and SSO integration with Authentik for secure and resilient MongoDB administration."
3842
]
3943
}
4044
],
@@ -48,56 +52,37 @@
4852
"endDate": "Aug 2025",
4953
"descriptions": [
5054
{
51-
"shortDesc": "Upgraded legacy Minecraft plugins/mods to 1.21 with robust connection lifecycle handling for data collection.",
55+
"shortDesc": "Modernized legacy Minecraft plugins and mods for reliable behavioral-data collection.",
5256
"longDesc": [
53-
"Upgraded and enhanced legacy Java plugins and mods from Minecraft 1.19 to 1.21, improving connection and termination logic based on client states to ensure stable and reliable behavioral data collection."
57+
"Modernized legacy Java Minecraft plugins and mods from Minecraft 1.19 to 1.21 and refactored connection and session-lifecycle logic, improving the reliability of behavioral-data collection."
5458
]
5559
},
5660
{
57-
"shortDesc": "Built an Agent Companion Framework enabling safe, private AI character interactions on the game server.",
61+
"shortDesc": "Architected an Agent Companion Framework for safe, private agent-player interactions.",
5862
"longDesc": [
59-
"Architected the Agent Companion Framework to integrate AI characters into the game server, featuring a custom session queue and specialized command interface for private, uninterrupted agent communication, with deterministic guardrails to prevent unsafe actions such as violence or property destruction."
63+
"Architected an Agent Companion Framework with session queuing and a command interface for private agent-player interactions; added deterministic safety guardrails to prevent unsafe in-game actions."
6064
]
6165
},
6266
{
63-
"shortDesc": "Enhanced PLAITime backend with transcription batching, real-time validation, and incentive mechanisms.",
67+
"shortDesc": "Implemented the PLAITime backend with context-aware transcription, real-time validation, and quality-based incentives.",
6468
"longDesc": [
65-
"Contributed to the PLAITime mechanism backend by integrating a transcription model to batch-process player voice transcripts with audio context, implementing real-time validation using Lambda functions and UDP sockets, and designing an incentive mechanism that dynamically awards playing time for high-value interactions while limiting low-quality sessions."
69+
"Implemented the new PLAITime backend with context-aware voice transcription using Whisper, real-time LLM validation through AWS Lambda and UDP sockets, and an incentive mechanism that adjusted playtime based on interaction quality."
6670
]
6771
}
6872
],
6973
"location": "Vancouver, British Columbia, Canada"
7074
},
7175
{
72-
"jobTitle": "Teaching Assistant",
73-
"company": "The University of British Columbia",
74-
"companyShortName": "UBC",
76+
"jobTitle": "Teaching Assistant - CPSC304 Introduction to Relational Databases",
77+
"company": "The University of British Columbia, Department of Computer Science",
78+
"companyShortName": "UBC Computer Science",
7579
"startDate": "Jan 2025",
76-
"endDate": "Aug 2025",
80+
"endDate": "Apr 2025",
7781
"descriptions": [
7882
{
79-
"shortDesc": "Guided students through database design concepts and implementation in weekly lab sessions.",
80-
"longDesc": [
81-
"Held weekly one-hour lab sessions to guide students through hands-on exercises on relational database design and implementation using ER models, relational algebra, and SQL."
82-
]
83-
},
84-
{
85-
"shortDesc": "Provided regular office hours and online support for student questions.",
86-
"longDesc": [
87-
"Provided weekly office hours to address students' questions and offer individualized support.",
88-
"Answered student queries promptly via Piazza and emails, fostering a supportive learning environment."
89-
]
90-
},
91-
{
92-
"shortDesc": "Assisted with full-stack database project development and implementation.",
93-
"longDesc": [
94-
"Assisted students in designing and implementing full-stack database projects using JavaScript/TypeScript and SQL, ensuring proper design and integration of the database."
95-
]
96-
},
97-
{
98-
"shortDesc": "Collaborated with instructors on course alignment and grading.",
83+
"shortDesc": "Led weekly database labs for 50+ students and mentored five full-stack project teams.",
9984
"longDesc": [
100-
"Coordinated with course instructors to align project deliverables with course objectives and maintain consistent grading standards."
85+
"Led weekly labs for 50+ students on database design, ER modeling, relational algebra, and SQL; mentored five teams on full-stack database projects."
10186
]
10287
}
10388
],

public/resume_latest.pdf

214 KB
Binary file not shown.

src/assets/projects-details.tsx

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { IconedLink, LinkText, ProjectInfo } from "@/components";
2-
import { SiGithub } from "react-icons/si";
2+
import { SiArxiv, SiGithub } from "react-icons/si";
33

44
/**
55
* This file contains the project details that will be displayed on the project cards.
@@ -8,6 +8,60 @@ import { SiGithub } from "react-icons/si";
88
* Modifying the file requires re-building the project.
99
*/
1010
export const projectInfos: ProjectInfo[] = [
11+
{
12+
title: "ClawBench Paper",
13+
intro: (
14+
<>
15+
<strong>EMNLP 2026 Findings</strong> and{" "}
16+
<strong>COLM 2026 Workshop on Agent Behavior</strong> paper on an
17+
open-source browser-agent evaluation benchmark with a{" "}
18+
<code>containerized runtime</code>, final request interception,
19+
interchangeable browser runtimes and agent harnesses, and five-layer
20+
recording
21+
</>
22+
),
23+
descriptions: [
24+
{
25+
shortDesc: (
26+
<>
27+
<strong>Architected and implemented</strong> ClawBench&apos;s core
28+
runtime for safe, reproducible browser-agent evaluation across 281
29+
tasks on 163 live websites.
30+
</>
31+
),
32+
longDesc: (
33+
<>
34+
<ul>
35+
<li>
36+
Built interchangeable browser-runtime and agent-harness
37+
integrations with final-request interception and{" "}
38+
<strong>five-layer recording</strong>.
39+
</li>
40+
<li>
41+
Established <strong>CI/CD</strong> and automated PyPI release
42+
pipelines, reviewed community pull requests, and resolved
43+
user-reported issues.
44+
</li>
45+
</ul>
46+
</>
47+
),
48+
},
49+
],
50+
links: [
51+
<>
52+
<IconedLink href="https://arxiv.org/abs/2604.08523">
53+
<SiArxiv />
54+
<LinkText>Read the paper</LinkText>
55+
</IconedLink>
56+
</>,
57+
<>
58+
<IconedLink href="https://github.com/TIGER-AI-Lab/ClawBench">
59+
<SiGithub />
60+
<LinkText>Check GitHub</LinkText>
61+
</IconedLink>
62+
</>,
63+
],
64+
},
1165
{
1266
title: "GP-News",
1367
intro: (

src/assets/skills-details.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ export const skillsData: SkillCategory[] = [
9393
{ name: "Three.js", icon: <TbBrandThreejs /> },
9494
{ name: "Express.js", icon: <SiExpress /> },
9595
{ name: "NestJS", icon: <SiNestjs /> },
96+
{ name: "Spring Boot", icon: <FaJava /> },
9697
{ name: "TanStack", icon: <FaReact /> },
9798
],
9899
},
@@ -173,6 +174,7 @@ export const skillsData: SkillCategory[] = [
173174
{ name: "Ansible", icon: <SiAnsible /> },
174175
{ name: "Terraform", icon: <SiTerraform /> },
175176
{ name: "Grafana", icon: <SiGrafana /> },
177+
{ name: "OpenTelemetry", icon: <MdOutlineEngineering /> },
176178
{ name: "CI/CD", icon: <MdOutlineEngineering /> },
177179
{ name: "GitHub Actions", icon: <FaGithub /> },
178180
{ name: "Golang", icon: <SiGo /> },

src/components/pages/AboutMe.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ function AboutMeRight() {
8282
</p>
8383
))}
8484
<Link
85-
href="/coop_resume.pdf"
85+
href="/resume_latest.pdf"
8686
download="PerryZ_resume.pdf"
8787
className="flex w-full justify-center self-start"
8888
>

src/components/ui/ContactInfoCard.tsx

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
import { Card, CardBody, Divider, Button, Link } from "@heroui/react";
22
import { ContactInfoItem } from "./ContactInfoItem";
33
import { MdEmail, MdLocationOn, MdPerson } from "react-icons/md";
4-
import { SiGithub, SiLinkedin, SiInstagram, SiPexels } from "react-icons/si";
4+
import {
5+
SiBilibili,
6+
SiGithub,
7+
SiInstagram,
8+
SiLinkedin,
9+
SiPexels,
10+
} from "react-icons/si";
511

612
export function ContactInfoCard() {
713
return (
@@ -89,6 +95,17 @@ export function ContactInfoCard() {
8995
<SiPexels className="h-5 w-5 sm:h-6 sm:w-6" />
9096
<span>Pexels</span>
9197
</Button>
98+
99+
<Button
100+
as="a"
101+
href="https://space.bilibili.com/384057718"
102+
className="gradient-button-hover-responsive flex items-center gap-2 border border-[#5ad6ff]/50 bg-white px-5 py-3 text-sm text-gray-700 shadow-sm dark:border-[#5ad6ff]/70 dark:bg-gray-800 dark:text-gray-200 sm:text-lg"
103+
target="_blank"
104+
rel="noopener noreferrer"
105+
>
106+
<SiBilibili className="h-5 w-5 sm:h-6 sm:w-6" />
107+
<span>Bilibili</span>
108+
</Button>
92109
</div>
93110
</div>
94111
</CardBody>

src/styles/index.css

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,12 @@
349349
height: 100%;
350350
}
351351

352+
/* React Chrono's inner wrapper is not independently scrollable in this layout.
353+
Allow wheel and touch gestures to continue to fullPage.js's scroll container. */
354+
.work-experiences-timeline .timeline-main-wrapper {
355+
overscroll-behavior-y: auto;
356+
}
357+
352358
.TimelineVerticalWrapper-sc-1427v1d-0 {
353359
height: 100%;
354360
justify-content: center;

0 commit comments

Comments
 (0)