mirror of
https://github.com/tiennm99/cv.git
synced 2026-08-06 04:23:11 +00:00
feat(cv): update for Thoughtworks Software Engineer application
Tailored CV headline to emphasize AI-Assisted Delivery, updated experience summary to highlight fresher→senior progression and stakeholder collaboration, made Claude Code plugin/skill marketplace more explicit, replaced miti99 project with miti99bot (AWS Lambda + CI signal), and reordered sections (Experience→Projects→Skills→Education) to fit 1-page layout.
This commit is contained in:
@@ -9,32 +9,22 @@
|
||||
- Telegram: [tiennm5](https://t.me/tiennm5)
|
||||
|
||||
|
||||
# Education
|
||||
## **Ho Chi Minh City University of Technology**, B.E. in Computer Science and Engineering -- HCMC, Vietnam
|
||||
Sept 2017 – June 2023
|
||||
|
||||
- GPA: 8.0/10 — Academic Excellence Scholarship; Five Good Student Award
|
||||
|
||||
- Thesis: Survival2D — 2D multiplayer Battle Royale game server in Java (Netty/WebSocket); authoritative architecture, FlatBuffers serialization (76% packet reduction vs JSON), behavior tree AI bots, and server-side anti-cheat
|
||||
|
||||
|
||||
|
||||
# Experience
|
||||
## **Senior Software Engineer**, ZingPlay Game Studios, VNG Corp. -- HCMC, Vietnam
|
||||
|
||||
July 2020 – present
|
||||
|
||||
Progressed from Game Programming Fresher to Senior Software Engineer. Focuses on Java game backends, live operations, delivery automation, and collaboration with client, QA, release, and product stakeholders.
|
||||
Progressed from Game Programming Fresher to Senior Software Engineer over 5+ years building and operating production backends for real-time multiplayer games, collaborating daily with client, QA, release, and product stakeholders.
|
||||
|
||||
- [Chaos Age 2](https://play.google.com/store/apps/details?id=vn.zps.tl2): Primary Java server contributor across gameplay, battle sync, matchmaking, payment/webpay, admin tooling, tests, and delivery automation
|
||||
- [Chaos Age 2](https://play.google.com/store/apps/details?id=vn.zps.tl2): Built and operated gameplay systems, battle synchronization, matchmaking, payments/webpay, admin tooling, automated tests, and delivery pipelines as primary Java backend contributor
|
||||
|
||||
- Built and maintained Java 21 backend modules with Netty/Vert.x, Couchbase, Redis, Kafka, Gradle, JUnit 5, Mockito, Docker-based local dependencies, and GitLab CI pipelines; used tests around gameplay, payment, and release-critical flows
|
||||
- Built and maintained Java 21 backend modules with Netty/Vert.x, Couchbase, Redis, Kafka, Gradle, JUnit 5, Mockito, Docker-based local dependencies, and GitLab CI pipelines; used automated tests around gameplay, payment, and release-critical flows
|
||||
|
||||
- [Burkozel](https://play.google.com/store/apps/details?id=zps.games.burkozel) and [Show](https://play.google.com/store/apps/details?id=zps.games.show): Implemented and maintained backend gameplay events, payment/config updates, tests, metrics, concurrency fixes, live diagnostics, and release support
|
||||
- Applied OOP and design patterns to reusable packet handlers, gameplay workflows, payment/config modules, and admin tooling for live products
|
||||
|
||||
- [Sky Garden](https://play.google.com/store/apps/details?id=vn.kvtm.js) / KVTM: Maintained Java server features, web payment fixes, Redis/runtime diagnostics, GM tooling, CI/deploy support, and Godot migration support
|
||||
- [Burkozel](https://play.google.com/store/apps/details?id=zps.games.burkozel), [Show](https://play.google.com/store/apps/details?id=zps.games.show), and [Sky Garden](https://play.google.com/store/apps/details?id=vn.kvtm.js): Diagnosed and fixed live concurrency issues; maintained backend gameplay events, payment/config updates, metrics, and release support
|
||||
|
||||
- Built internal Claude Code plugin/skill marketplace and Java game-server scaffolding guidance to standardize packet-handler generation, framework usage, and AI-assisted delivery workflows
|
||||
- Built an internal Claude Code plugin/skill marketplace and Java game-server scaffolding guidance, standardizing packet-handler generation, framework usage, and AI-assisted delivery workflows
|
||||
|
||||
|
||||
|
||||
@@ -43,7 +33,9 @@ Progressed from Game Programming Fresher to Senior Software Engineer. Focuses on
|
||||
|
||||
Nov 2025 – present
|
||||
|
||||
Telegram bot for tracking Apple App Store and Google Play metadata changes; originally built in Java, then ported to JavaScript.
|
||||
Telegram bot for tracking Apple App Store and Google Play app updates; original Java 21 implementation later ported to Node.js/Vercel.
|
||||
|
||||
- Built Java bot with Gradle, MongoDB, command-pattern Telegram handlers, reusable repository abstractions, Docker Compose, and JUnit scraper tests; ported to serverless Node.js with Upstash Redis, Vercel Cron, and GitHub Actions checks
|
||||
|
||||
|
||||
|
||||
@@ -51,37 +43,41 @@ Telegram bot for tracking Apple App Store and Google Play metadata changes; orig
|
||||
|
||||
2026
|
||||
|
||||
Multiplayer Gomoku game with Go WebSocket backend, protobuf messaging, Docker support, PVP/PVE/spectator modes, and Phaser client.
|
||||
Multiplayer Gomoku game with authoritative Go WebSocket backend, protobuf binary messages, Docker Compose, GitHub Actions CI, and Phaser client.
|
||||
|
||||
- Designed server-authoritative gameplay (move validation, win detection, PVP/PVE/spectator modes, minimax AI with alpha-beta pruning) with Go tests over game, lobby, and codec flows; CI runs vet, tests, and builds
|
||||
|
||||
|
||||
|
||||
## **[Rplace](https://github.com/tiennm99/rplace)**
|
||||
## **[miti99bot](https://github.com/tiennm99/miti99bot)**
|
||||
|
||||
2026
|
||||
May 2026 – present
|
||||
|
||||
Collaborative pixel-art canvas using Svelte, Hono, Cloudflare Workers, and Durable Object SQLite.
|
||||
Modular Go Telegram bot framework on AWS Lambda (SAM) with pluggable KV storage providers (Firestore/DynamoDB) and AI integration with rate limiting.
|
||||
|
||||
|
||||
|
||||
## **[DB Keepalive](https://github.com/tiennm99/db-keepalive)**
|
||||
|
||||
2026
|
||||
|
||||
Pluggable Go daemon for keeping free-tier database clusters active across Redis, Valkey, PostgreSQL, MySQL, MongoDB, and Couchbase.
|
||||
- Covered modules, storage providers, and AI rate limiting with 53 Go test files; GitHub Actions CI plus OIDC-authenticated AWS deploy pipeline
|
||||
|
||||
|
||||
|
||||
# Skills
|
||||
**Languages:** Java, Go, JavaScript/TypeScript, Shell
|
||||
|
||||
**Frameworks & Libraries:** Netty, Vert.x, Spring Boot, JUnit 5, Mockito, Cocos2d-x, Godot
|
||||
**Frameworks & Libraries:** Netty, Vert.x, Spring Boot, JUnit 5, Mockito, Cocos2d-x, Godot, WebSocket
|
||||
|
||||
**Databases:** Couchbase, Redis, MySQL, Kafka, ClickHouse
|
||||
**Data & Messaging:** Couchbase, Redis, MySQL, Kafka, ClickHouse
|
||||
|
||||
**Infrastructure & DevOps:** Docker, GitLab CI, GitHub Actions, Linux, AWS Lambda/SAM, Cloudflare Workers
|
||||
**Infrastructure & DevOps:** Docker, GitLab CI, GitHub Actions, Linux, AWS Lambda/SAM, Cloudflare Workers, Vercel
|
||||
|
||||
**Architecture:** Object-oriented design, game server architecture, real-time multiplayer systems, event-driven design, clean reusable code
|
||||
**Architecture:** OOP and design patterns, reusable components, real-time multiplayer game-server architecture, event-driven design
|
||||
|
||||
**Delivery Practices:** Unit testing, code review, production debugging, continuous integration and delivery (CI/CD), DevOps collaboration, AI-assisted development workflows
|
||||
|
||||
# Education
|
||||
## **Ho Chi Minh City University of Technology**, B.E. in Computer Science and Engineering -- HCMC, Vietnam
|
||||
Sept 2017 – June 2023
|
||||
|
||||
- GPA: 8.0/10 — Academic Excellence Scholarship; Five Good Student Award
|
||||
|
||||
- Thesis: Survival2D — multiplayer Battle Royale game server in Java (Netty/WebSocket) with authoritative architecture, FlatBuffers serialization, behavior-tree AI bots, and server-side anti-cheat
|
||||
|
||||
**Delivery Practices:** Unit testing, code review, production debugging, CI/CD, AI-assisted development workflows
|
||||
|
||||
**Languages (Spoken):** Vietnamese (Native), English (TOEIC 600+)
|
||||
|
||||
+48
-43
@@ -49,6 +49,53 @@
|
||||
<li>GitHub: <a href="https://github.com/tiennm99">tiennm99</a></li>
|
||||
<li>Telegram: <a href="https://t.me/tiennm5">tiennm5</a></li>
|
||||
</ul>
|
||||
<h1>Experience</h1>
|
||||
<h2><strong>Senior Software Engineer</strong>, ZingPlay Game Studios, VNG Corp. -- HCMC, Vietnam</h2>
|
||||
<p>July 2020 – present</p>
|
||||
<p>Progressed from Game Programming Fresher to Senior Software Engineer over 5+ years building and operating production backends for real-time multiplayer games, collaborating daily with client, QA, release, and product stakeholders.</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://play.google.com/store/apps/details?id=vn.zps.tl2">Chaos Age 2</a>: Built and operated gameplay systems, battle synchronization, matchmaking, payments/webpay, admin tooling, automated tests, and delivery pipelines as primary Java backend contributor</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Built and maintained Java 21 backend modules with Netty/Vert.x, Couchbase, Redis, Kafka, Gradle, JUnit 5, Mockito, Docker-based local dependencies, and GitLab CI pipelines; used automated tests around gameplay, payment, and release-critical flows</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Applied OOP and design patterns to reusable packet handlers, gameplay workflows, payment/config modules, and admin tooling for live products</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://play.google.com/store/apps/details?id=zps.games.burkozel">Burkozel</a>, <a href="https://play.google.com/store/apps/details?id=zps.games.show">Show</a>, and <a href="https://play.google.com/store/apps/details?id=vn.kvtm.js">Sky Garden</a>: Diagnosed and fixed live concurrency issues; maintained backend gameplay events, payment/config updates, metrics, and release support</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Built an internal Claude Code plugin/skill marketplace and Java game-server scaffolding guidance, standardizing packet-handler generation, framework usage, and AI-assisted delivery workflows</p>
|
||||
</li>
|
||||
</ul>
|
||||
<h1>Projects</h1>
|
||||
<h2><strong><a href="https://github.com/tiennm99/store-scraper-bot">Store Scraper Bot</a> / <a href="https://github.com/tiennm99/store-scraper-bot-java">Java original</a></strong></h2>
|
||||
<p>Nov 2025 – present</p>
|
||||
<p>Telegram bot for tracking Apple App Store and Google Play app updates; original Java 21 implementation later ported to Node.js/Vercel.</p>
|
||||
<ul>
|
||||
<li>Built Java bot with Gradle, MongoDB, command-pattern Telegram handlers, reusable repository abstractions, Docker Compose, and JUnit scraper tests; ported to serverless Node.js with Upstash Redis, Vercel Cron, and GitHub Actions checks</li>
|
||||
</ul>
|
||||
<h2><strong><a href="https://github.com/tiennm99/gomoku">Gomoku</a></strong></h2>
|
||||
<p>2026</p>
|
||||
<p>Multiplayer Gomoku game with authoritative Go WebSocket backend, protobuf binary messages, Docker Compose, GitHub Actions CI, and Phaser client.</p>
|
||||
<ul>
|
||||
<li>Designed server-authoritative gameplay (move validation, win detection, PVP/PVE/spectator modes, minimax AI with alpha-beta pruning) with Go tests over game, lobby, and codec flows; CI runs vet, tests, and builds</li>
|
||||
</ul>
|
||||
<h2><strong><a href="https://github.com/tiennm99/miti99bot">miti99bot</a></strong></h2>
|
||||
<p>May 2026 – present</p>
|
||||
<p>Modular Go Telegram bot framework on AWS Lambda (SAM) with pluggable KV storage providers (Firestore/DynamoDB) and AI integration with rate limiting.</p>
|
||||
<ul>
|
||||
<li>Covered modules, storage providers, and AI rate limiting with 53 Go test files; GitHub Actions CI plus OIDC-authenticated AWS deploy pipeline</li>
|
||||
</ul>
|
||||
<h1>Skills</h1>
|
||||
<p><strong>Languages:</strong> Java, Go, JavaScript/TypeScript, Shell</p>
|
||||
<p><strong>Frameworks & Libraries:</strong> Netty, Vert.x, Spring Boot, JUnit 5, Mockito, Cocos2d-x, Godot, WebSocket</p>
|
||||
<p><strong>Data & Messaging:</strong> Couchbase, Redis, MySQL, Kafka, ClickHouse</p>
|
||||
<p><strong>Infrastructure & DevOps:</strong> Docker, GitLab CI, GitHub Actions, Linux, AWS Lambda/SAM, Cloudflare Workers, Vercel</p>
|
||||
<p><strong>Architecture:</strong> OOP and design patterns, reusable components, real-time multiplayer game-server architecture, event-driven design</p>
|
||||
<p><strong>Delivery Practices:</strong> Unit testing, code review, production debugging, continuous integration and delivery (CI/CD), DevOps collaboration, AI-assisted development workflows</p>
|
||||
<h1>Education</h1>
|
||||
<h2><strong>Ho Chi Minh City University of Technology</strong>, B.E. in Computer Science and Engineering -- HCMC, Vietnam</h2>
|
||||
<p>Sept 2017 – June 2023</p>
|
||||
@@ -57,51 +104,9 @@
|
||||
<p>GPA: 8.0/10 — Academic Excellence Scholarship; Five Good Student Award</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Thesis: Survival2D — 2D multiplayer Battle Royale game server in Java (Netty/WebSocket); authoritative architecture, FlatBuffers serialization (76% packet reduction vs JSON), behavior tree AI bots, and server-side anti-cheat</p>
|
||||
<p>Thesis: Survival2D — multiplayer Battle Royale game server in Java (Netty/WebSocket) with authoritative architecture, FlatBuffers serialization, behavior-tree AI bots, and server-side anti-cheat</p>
|
||||
</li>
|
||||
</ul>
|
||||
<h1>Experience</h1>
|
||||
<h2><strong>Senior Software Engineer</strong>, ZingPlay Game Studios, VNG Corp. -- HCMC, Vietnam</h2>
|
||||
<p>July 2020 – present</p>
|
||||
<p>Progressed from Game Programming Fresher to Senior Software Engineer. Focuses on Java game backends, live operations, delivery automation, and collaboration with client, QA, release, and product stakeholders.</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://play.google.com/store/apps/details?id=vn.zps.tl2">Chaos Age 2</a>: Primary Java server contributor across gameplay, battle sync, matchmaking, payment/webpay, admin tooling, tests, and delivery automation</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Built and maintained Java 21 backend modules with Netty/Vert.x, Couchbase, Redis, Kafka, Gradle, JUnit 5, Mockito, Docker-based local dependencies, and GitLab CI pipelines; used tests around gameplay, payment, and release-critical flows</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://play.google.com/store/apps/details?id=zps.games.burkozel">Burkozel</a> and <a href="https://play.google.com/store/apps/details?id=zps.games.show">Show</a>: Implemented and maintained backend gameplay events, payment/config updates, tests, metrics, concurrency fixes, live diagnostics, and release support</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://play.google.com/store/apps/details?id=vn.kvtm.js">Sky Garden</a> / KVTM: Maintained Java server features, web payment fixes, Redis/runtime diagnostics, GM tooling, CI/deploy support, and Godot migration support</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Built internal Claude Code plugin/skill marketplace and Java game-server scaffolding guidance to standardize packet-handler generation, framework usage, and AI-assisted delivery workflows</p>
|
||||
</li>
|
||||
</ul>
|
||||
<h1>Projects</h1>
|
||||
<h2><strong><a href="https://github.com/tiennm99/store-scraper-bot">Store Scraper Bot</a> / <a href="https://github.com/tiennm99/store-scraper-bot-java">Java original</a></strong></h2>
|
||||
<p>Nov 2025 – present</p>
|
||||
<p>Telegram bot for tracking Apple App Store and Google Play metadata changes; originally built in Java, then ported to JavaScript.</p>
|
||||
<h2><strong><a href="https://github.com/tiennm99/gomoku">Gomoku</a></strong></h2>
|
||||
<p>2026</p>
|
||||
<p>Multiplayer Gomoku game with Go WebSocket backend, protobuf messaging, Docker support, PVP/PVE/spectator modes, and Phaser client.</p>
|
||||
<h2><strong><a href="https://github.com/tiennm99/rplace">Rplace</a></strong></h2>
|
||||
<p>2026</p>
|
||||
<p>Collaborative pixel-art canvas using Svelte, Hono, Cloudflare Workers, and Durable Object SQLite.</p>
|
||||
<h2><strong><a href="https://github.com/tiennm99/db-keepalive">DB Keepalive</a></strong></h2>
|
||||
<p>2026</p>
|
||||
<p>Pluggable Go daemon for keeping free-tier database clusters active across Redis, Valkey, PostgreSQL, MySQL, MongoDB, and Couchbase.</p>
|
||||
<h1>Skills</h1>
|
||||
<p><strong>Languages:</strong> Java, Go, JavaScript/TypeScript, Shell</p>
|
||||
<p><strong>Frameworks & Libraries:</strong> Netty, Vert.x, Spring Boot, JUnit 5, Mockito, Cocos2d-x, Godot</p>
|
||||
<p><strong>Databases:</strong> Couchbase, Redis, MySQL, Kafka, ClickHouse</p>
|
||||
<p><strong>Infrastructure & DevOps:</strong> Docker, GitLab CI, GitHub Actions, Linux, AWS Lambda/SAM, Cloudflare Workers</p>
|
||||
<p><strong>Architecture:</strong> Object-oriented design, game server architecture, real-time multiplayer systems, event-driven design, clean reusable code</p>
|
||||
<p><strong>Delivery Practices:</strong> Unit testing, code review, production debugging, CI/CD, AI-assisted development workflows</p>
|
||||
<p><strong>Languages (Spoken):</strong> Vietnamese (Native), English (TOEIC 600+)</p>
|
||||
</article>
|
||||
</body>
|
||||
|
||||
|
||||
+935
-2850
File diff suppressed because it is too large
Load Diff
+53
-73
@@ -10,10 +10,10 @@
|
||||
locale-catalog-language: "en",
|
||||
text-direction: ltr,
|
||||
page-size: "us-letter",
|
||||
page-top-margin: 0.7in,
|
||||
page-bottom-margin: 0.7in,
|
||||
page-left-margin: 0.7in,
|
||||
page-right-margin: 0.7in,
|
||||
page-top-margin: 0.45in,
|
||||
page-bottom-margin: 0.45in,
|
||||
page-left-margin: 0.55in,
|
||||
page-right-margin: 0.55in,
|
||||
page-show-footer: false,
|
||||
page-show-top-note: true,
|
||||
colors-body: rgb(0, 0, 0),
|
||||
@@ -24,7 +24,7 @@
|
||||
colors-links: rgb(0, 0, 0),
|
||||
colors-footer: rgb(128, 128, 128),
|
||||
colors-top-note: rgb(128, 128, 128),
|
||||
typography-line-spacing: 0.6em,
|
||||
typography-line-spacing: 0.5em,
|
||||
typography-alignment: "justified",
|
||||
typography-date-and-location-column-alignment: right,
|
||||
typography-font-family-body: "XCharter",
|
||||
@@ -48,10 +48,10 @@
|
||||
links-underline: true,
|
||||
links-show-external-link-icon: false,
|
||||
header-alignment: center,
|
||||
header-photo-width: 3.5cm,
|
||||
header-space-below-name: 0.7cm,
|
||||
header-space-below-headline: 0.7cm,
|
||||
header-space-below-connections: 0.7cm,
|
||||
header-photo-width: 3cm,
|
||||
header-space-below-name: 0.3cm,
|
||||
header-space-below-headline: 0.3cm,
|
||||
header-space-below-connections: 0.3cm,
|
||||
header-connections-hyperlink: true,
|
||||
header-connections-show-icons: false,
|
||||
header-connections-display-urls-instead-of-usernames: true,
|
||||
@@ -59,11 +59,11 @@
|
||||
header-connections-space-between-connections: 0.5cm,
|
||||
section-titles-type: "with_full_line",
|
||||
section-titles-line-thickness: 0.5pt,
|
||||
section-titles-space-above: 0.5cm,
|
||||
section-titles-space-below: 0.3cm,
|
||||
section-titles-space-above: 0.3cm,
|
||||
section-titles-space-below: 0.2cm,
|
||||
sections-allow-page-break: true,
|
||||
sections-space-between-text-based-entries: 0.15cm,
|
||||
sections-space-between-regular-entries: 0.42cm,
|
||||
sections-space-between-text-based-entries: 0.2em,
|
||||
sections-space-between-regular-entries: 0.7em,
|
||||
entries-date-and-location-width: 4.15cm,
|
||||
entries-side-space: 0cm,
|
||||
entries-space-between-columns: 0.1cm,
|
||||
@@ -86,16 +86,9 @@
|
||||
)
|
||||
|
||||
|
||||
#grid(
|
||||
columns: (auto, 1fr),
|
||||
column-gutter: 0cm,
|
||||
align: horizon + left,
|
||||
[#pad(left: 0.4cm, right: 0.4cm, image("avatar.jpg", width: 3.5cm))
|
||||
],
|
||||
[
|
||||
= Tien Nguyen Minh
|
||||
|
||||
#headline([Senior Java Software Engineer])
|
||||
#headline([Senior Java Software Engineer | Java 21, Real-Time Backends, CI\/CD, AI-Assisted Delivery])
|
||||
|
||||
#connections(
|
||||
[HCMC, Vietnam],
|
||||
@@ -106,29 +99,8 @@
|
||||
[#link("https://github.com/tiennm99", icon: false, if-underline: false, if-color: false)[github.com\/tiennm99]],
|
||||
[#link("https://t.me/tiennm5", icon: false, if-underline: false, if-color: false)[t.me\/tiennm5]],
|
||||
)
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
== Education
|
||||
|
||||
#education-entry(
|
||||
[
|
||||
#strong[Ho Chi Minh City University of Technology], B.E. in Computer Science and Engineering -- HCMC, Vietnam
|
||||
|
||||
],
|
||||
[
|
||||
Sept 2017 – June 2023
|
||||
|
||||
],
|
||||
main-column-second-row: [
|
||||
- GPA: 8.0\/10 — Academic Excellence Scholarship; Five Good Student Award
|
||||
|
||||
- Thesis: Survival2D — 2D multiplayer Battle Royale game server in Java (Netty\/WebSocket); authoritative architecture, FlatBuffers serialization (76\% packet reduction vs JSON), behavior tree AI bots, and server-side anti-cheat
|
||||
|
||||
],
|
||||
)
|
||||
|
||||
== Experience
|
||||
|
||||
#regular-entry(
|
||||
@@ -141,17 +113,17 @@
|
||||
|
||||
],
|
||||
main-column-second-row: [
|
||||
#summary[Progressed from Game Programming Fresher to Senior Software Engineer. Focuses on Java game backends, live operations, delivery automation, and collaboration with client, QA, release, and product stakeholders.]
|
||||
#summary[Progressed from Game Programming Fresher to Senior Software Engineer over 5+ years building and operating production backends for real-time multiplayer games, collaborating daily with client, QA, release, and product stakeholders.]
|
||||
|
||||
- #link("https://play.google.com/store/apps/details?id=vn.zps.tl2")[Chaos Age 2]: Primary Java server contributor across gameplay, battle sync, matchmaking, payment\/webpay, admin tooling, tests, and delivery automation
|
||||
- #link("https://play.google.com/store/apps/details?id=vn.zps.tl2")[Chaos Age 2]: Built and operated gameplay systems, battle synchronization, matchmaking, payments\/webpay, admin tooling, automated tests, and delivery pipelines as primary Java backend contributor
|
||||
|
||||
- Built and maintained Java 21 backend modules with Netty\/Vert.x, Couchbase, Redis, Kafka, Gradle, JUnit 5, Mockito, Docker-based local dependencies, and GitLab CI pipelines; used tests around gameplay, payment, and release-critical flows
|
||||
- Built and maintained Java 21 backend modules with Netty\/Vert.x, Couchbase, Redis, Kafka, Gradle, JUnit 5, Mockito, Docker-based local dependencies, and GitLab CI pipelines; used automated tests around gameplay, payment, and release-critical flows
|
||||
|
||||
- #link("https://play.google.com/store/apps/details?id=zps.games.burkozel")[Burkozel] and #link("https://play.google.com/store/apps/details?id=zps.games.show")[Show]: Implemented and maintained backend gameplay events, payment\/config updates, tests, metrics, concurrency fixes, live diagnostics, and release support
|
||||
- Applied OOP and design patterns to reusable packet handlers, gameplay workflows, payment\/config modules, and admin tooling for live products
|
||||
|
||||
- #link("https://play.google.com/store/apps/details?id=vn.kvtm.js")[Sky Garden] \/ KVTM: Maintained Java server features, web payment fixes, Redis\/runtime diagnostics, GM tooling, CI\/deploy support, and Godot migration support
|
||||
- #link("https://play.google.com/store/apps/details?id=zps.games.burkozel")[Burkozel], #link("https://play.google.com/store/apps/details?id=zps.games.show")[Show], and #link("https://play.google.com/store/apps/details?id=vn.kvtm.js")[Sky Garden]: Diagnosed and fixed live concurrency issues; maintained backend gameplay events, payment\/config updates, metrics, and release support
|
||||
|
||||
- Built internal Claude Code plugin\/skill marketplace and Java game-server scaffolding guidance to standardize packet-handler generation, framework usage, and AI-assisted delivery workflows
|
||||
- Built an internal Claude Code plugin\/skill marketplace and Java game-server scaffolding guidance, standardizing packet-handler generation, framework usage, and AI-assisted delivery workflows
|
||||
|
||||
],
|
||||
)
|
||||
@@ -168,7 +140,9 @@
|
||||
|
||||
],
|
||||
main-column-second-row: [
|
||||
#summary[Telegram bot for tracking Apple App Store and Google Play metadata changes; originally built in Java, then ported to JavaScript.]
|
||||
#summary[Telegram bot for tracking Apple App Store and Google Play app updates; original Java 21 implementation later ported to Node.js\/Vercel.]
|
||||
|
||||
- Built Java bot with Gradle, MongoDB, command-pattern Telegram handlers, reusable repository abstractions, Docker Compose, and JUnit scraper tests; ported to serverless Node.js with Upstash Redis, Vercel Cron, and GitHub Actions checks
|
||||
|
||||
],
|
||||
)
|
||||
@@ -183,37 +157,26 @@
|
||||
|
||||
],
|
||||
main-column-second-row: [
|
||||
#summary[Multiplayer Gomoku game with Go WebSocket backend, protobuf messaging, Docker support, PVP\/PVE\/spectator modes, and Phaser client.]
|
||||
#summary[Multiplayer Gomoku game with authoritative Go WebSocket backend, protobuf binary messages, Docker Compose, GitHub Actions CI, and Phaser client.]
|
||||
|
||||
- Designed server-authoritative gameplay (move validation, win detection, PVP\/PVE\/spectator modes, minimax AI with alpha-beta pruning) with Go tests over game, lobby, and codec flows; CI runs vet, tests, and builds
|
||||
|
||||
],
|
||||
)
|
||||
|
||||
#regular-entry(
|
||||
[
|
||||
#strong[#link("https://github.com/tiennm99/rplace")[Rplace]]
|
||||
#strong[#link("https://github.com/tiennm99/miti99bot")[miti99bot]]
|
||||
|
||||
],
|
||||
[
|
||||
2026
|
||||
May 2026 – present
|
||||
|
||||
],
|
||||
main-column-second-row: [
|
||||
#summary[Collaborative pixel-art canvas using Svelte, Hono, Cloudflare Workers, and Durable Object SQLite.]
|
||||
#summary[Modular Go Telegram bot framework on AWS Lambda (SAM) with pluggable KV storage providers (Firestore\/DynamoDB) and AI integration with rate limiting.]
|
||||
|
||||
],
|
||||
)
|
||||
|
||||
#regular-entry(
|
||||
[
|
||||
#strong[#link("https://github.com/tiennm99/db-keepalive")[DB Keepalive]]
|
||||
|
||||
],
|
||||
[
|
||||
2026
|
||||
|
||||
],
|
||||
main-column-second-row: [
|
||||
#summary[Pluggable Go daemon for keeping free-tier database clusters active across Redis, Valkey, PostgreSQL, MySQL, MongoDB, and Couchbase.]
|
||||
- Covered modules, storage providers, and AI rate limiting with 53 Go test files; GitHub Actions CI plus OIDC-authenticated AWS deploy pipeline
|
||||
|
||||
],
|
||||
)
|
||||
@@ -222,14 +185,31 @@
|
||||
|
||||
#strong[Languages:] Java, Go, JavaScript\/TypeScript, Shell
|
||||
|
||||
#strong[Frameworks & Libraries:] Netty, Vert.x, Spring Boot, JUnit 5, Mockito, Cocos2d-x, Godot
|
||||
#strong[Frameworks & Libraries:] Netty, Vert.x, Spring Boot, JUnit 5, Mockito, Cocos2d-x, Godot, WebSocket
|
||||
|
||||
#strong[Databases:] Couchbase, Redis, MySQL, Kafka, ClickHouse
|
||||
#strong[Data & Messaging:] Couchbase, Redis, MySQL, Kafka, ClickHouse
|
||||
|
||||
#strong[Infrastructure & DevOps:] Docker, GitLab CI, GitHub Actions, Linux, AWS Lambda\/SAM, Cloudflare Workers
|
||||
#strong[Infrastructure & DevOps:] Docker, GitLab CI, GitHub Actions, Linux, AWS Lambda\/SAM, Cloudflare Workers, Vercel
|
||||
|
||||
#strong[Architecture:] Object-oriented design, game server architecture, real-time multiplayer systems, event-driven design, clean reusable code
|
||||
#strong[Architecture:] OOP and design patterns, reusable components, real-time multiplayer game-server architecture, event-driven design
|
||||
|
||||
#strong[Delivery Practices:] Unit testing, code review, production debugging, CI\/CD, AI-assisted development workflows
|
||||
#strong[Delivery Practices:] Unit testing, code review, production debugging, continuous integration and delivery (CI\/CD), DevOps collaboration, AI-assisted development workflows
|
||||
|
||||
#strong[Languages (Spoken):] Vietnamese (Native), English (TOEIC 600+)
|
||||
== Education
|
||||
|
||||
#education-entry(
|
||||
[
|
||||
#strong[Ho Chi Minh City University of Technology], B.E. in Computer Science and Engineering -- HCMC, Vietnam
|
||||
|
||||
],
|
||||
[
|
||||
Sept 2017 – June 2023
|
||||
|
||||
],
|
||||
main-column-second-row: [
|
||||
- GPA: 8.0\/10 — Academic Excellence Scholarship; Five Good Student Award
|
||||
|
||||
- Thesis: Survival2D — multiplayer Battle Royale game server in Java (Netty\/WebSocket) with authoritative architecture, FlatBuffers serialization, behavior-tree AI bots, and server-side anti-cheat
|
||||
|
||||
],
|
||||
)
|
||||
|
||||
+67
-52
@@ -1,10 +1,9 @@
|
||||
# yaml-language-server: $schema=https://raw.githubusercontent.com/rendercv/rendercv/refs/tags/v2.8/schema.json
|
||||
cv:
|
||||
name: Tien Nguyen Minh
|
||||
headline: Senior Java Software Engineer | Java 21, Backend Systems, Real-Time Multiplayer, CI/CD
|
||||
headline: Senior Java Software Engineer | Java 21, Real-Time Backends, CI/CD, AI-Assisted Delivery
|
||||
location: HCMC, Vietnam
|
||||
email: tiennm99@outlook.com
|
||||
photo: avatar.jpg
|
||||
phone: (+84) 869 156 149
|
||||
website: https://miti99.com/
|
||||
social_networks:
|
||||
@@ -15,6 +14,51 @@ cv:
|
||||
- network: Telegram
|
||||
username: tiennm5
|
||||
sections:
|
||||
experience:
|
||||
- company: ZingPlay Game Studios, VNG Corp.
|
||||
position: Senior Software Engineer
|
||||
date:
|
||||
start_date: 2020-07
|
||||
end_date: present
|
||||
location: HCMC, Vietnam
|
||||
summary: Progressed from Game Programming Fresher to Senior Software Engineer over 5+ years building and operating production backends for real-time multiplayer games, collaborating daily with client, QA, release, and product stakeholders.
|
||||
highlights:
|
||||
- "[Chaos Age 2](https://play.google.com/store/apps/details?id=vn.zps.tl2): Built and operated gameplay systems, battle synchronization, matchmaking, payments/webpay, admin tooling, automated tests, and delivery pipelines as primary Java backend contributor"
|
||||
- "Built and maintained Java 21 backend modules with Netty/Vert.x, Couchbase, Redis, Kafka, Gradle, JUnit 5, Mockito, Docker-based local dependencies, and GitLab CI pipelines; used automated tests around gameplay, payment, and release-critical flows"
|
||||
- "Applied OOP and design patterns to reusable packet handlers, gameplay workflows, payment/config modules, and admin tooling for live products"
|
||||
- "[Burkozel](https://play.google.com/store/apps/details?id=zps.games.burkozel), [Show](https://play.google.com/store/apps/details?id=zps.games.show), and [Sky Garden](https://play.google.com/store/apps/details?id=vn.kvtm.js): Diagnosed and fixed live concurrency issues; maintained backend gameplay events, payment/config updates, metrics, and release support"
|
||||
- "Built an internal Claude Code plugin/skill marketplace and Java game-server scaffolding guidance, standardizing packet-handler generation, framework usage, and AI-assisted delivery workflows"
|
||||
projects:
|
||||
- name: "[Store Scraper Bot](https://github.com/tiennm99/store-scraper-bot) / [Java original](https://github.com/tiennm99/store-scraper-bot-java)"
|
||||
start_date: 2025-11
|
||||
end_date: present
|
||||
summary: Telegram bot for tracking Apple App Store and Google Play app updates; original Java 21 implementation later ported to Node.js/Vercel.
|
||||
highlights:
|
||||
- "Built Java bot with Gradle, MongoDB, command-pattern Telegram handlers, reusable repository abstractions, Docker Compose, and JUnit scraper tests; ported to serverless Node.js with Upstash Redis, Vercel Cron, and GitHub Actions checks"
|
||||
- name: "[Gomoku](https://github.com/tiennm99/gomoku)"
|
||||
date: 2026
|
||||
summary: Multiplayer Gomoku game with authoritative Go WebSocket backend, protobuf binary messages, Docker Compose, GitHub Actions CI, and Phaser client.
|
||||
highlights:
|
||||
- "Designed server-authoritative gameplay (move validation, win detection, PVP/PVE/spectator modes, minimax AI with alpha-beta pruning) with Go tests over game, lobby, and codec flows; CI runs vet, tests, and builds"
|
||||
- name: "[miti99bot](https://github.com/tiennm99/miti99bot)"
|
||||
start_date: 2026-05
|
||||
end_date: present
|
||||
summary: Modular Go Telegram bot framework on AWS Lambda (SAM) with pluggable KV storage providers (Firestore/DynamoDB) and AI integration with rate limiting.
|
||||
highlights:
|
||||
- "Covered modules, storage providers, and AI rate limiting with 53 Go test files; GitHub Actions CI plus OIDC-authenticated AWS deploy pipeline"
|
||||
skills:
|
||||
- label: Languages
|
||||
details: Java, Go, JavaScript/TypeScript, Shell
|
||||
- label: Frameworks & Libraries
|
||||
details: Netty, Vert.x, Spring Boot, JUnit 5, Mockito, Cocos2d-x, Godot, WebSocket
|
||||
- label: Data & Messaging
|
||||
details: Couchbase, Redis, MySQL, Kafka, ClickHouse
|
||||
- label: Infrastructure & DevOps
|
||||
details: Docker, GitLab CI, GitHub Actions, Linux, AWS Lambda/SAM, Cloudflare Workers, Vercel
|
||||
- label: Architecture
|
||||
details: OOP and design patterns, reusable components, real-time multiplayer game-server architecture, event-driven design
|
||||
- label: Delivery Practices
|
||||
details: Unit testing, code review, production debugging, continuous integration and delivery (CI/CD), DevOps collaboration, AI-assisted development workflows
|
||||
education:
|
||||
- institution: Ho Chi Minh City University of Technology
|
||||
area: Computer Science and Engineering
|
||||
@@ -25,58 +69,29 @@ cv:
|
||||
location: HCMC, Vietnam
|
||||
highlights:
|
||||
- "GPA: 8.0/10 — Academic Excellence Scholarship; Five Good Student Award"
|
||||
- "Thesis: Survival2D — 2D multiplayer Battle Royale game server in Java (Netty/WebSocket); authoritative architecture, FlatBuffers serialization to reduce packet size compared with JSON, behavior tree AI bots, and server-side anti-cheat"
|
||||
experience:
|
||||
- company: ZingPlay Game Studios, VNG Corp.
|
||||
position: Senior Software Engineer
|
||||
date:
|
||||
start_date: 2020-07
|
||||
end_date: present
|
||||
location: HCMC, Vietnam
|
||||
summary: Senior Java engineer with 5+ years building and operating production backends for real-time multiplayer games. Experienced in Java 21, Netty/Vert.x, Redis, Couchbase, Kafka, automated testing, CI/CD, production debugging, and cross-functional delivery.
|
||||
highlights:
|
||||
- "[Chaos Age 2](https://play.google.com/store/apps/details?id=vn.zps.tl2): Primary Java backend contributor for gameplay systems, battle synchronization, matchmaking, payments/webpay, admin tooling, automated tests, and delivery pipelines"
|
||||
- "Built and maintained Java 21 backend modules with Netty/Vert.x, Couchbase, Redis, Kafka, Gradle, JUnit 5, Mockito, Docker-based local dependencies, and GitLab CI pipelines; used automated tests around gameplay, payment, and release-critical flows"
|
||||
- "Applied OOP and design patterns to reusable packet handlers, gameplay workflows, payment/config modules, and admin tooling for live products"
|
||||
- "[Burkozel](https://play.google.com/store/apps/details?id=zps.games.burkozel), [Show](https://play.google.com/store/apps/details?id=zps.games.show), and [Sky Garden](https://play.google.com/store/apps/details?id=vn.kvtm.js): Maintained backend gameplay events, payment/config updates, metrics, concurrency fixes, live diagnostics, Redis/runtime debugging, CI/deploy support, and release support"
|
||||
- "Standardized Java game-server scaffolding, packet-handler generation, framework usage, and AI-assisted delivery workflows with documented guidance"
|
||||
projects:
|
||||
- name: "[Store Scraper Bot](https://github.com/tiennm99/store-scraper-bot) / [Java original](https://github.com/tiennm99/store-scraper-bot-java)"
|
||||
start_date: 2025-11
|
||||
end_date: present
|
||||
summary: Telegram bot for tracking Apple App Store and Google Play app updates; original Java 21 implementation later ported to Node.js/Vercel.
|
||||
highlights:
|
||||
- "Built Java bot with Gradle, MongoDB, Telegram command handlers, reusable repository abstractions, Docker/Compose setup, and JUnit scraper tests"
|
||||
- "Ported operational bot to serverless Node.js with Upstash Redis, Vercel Cron, webhook/cron request validation, and GitHub Actions syntax/leak checks"
|
||||
- name: "[Gomoku](https://github.com/tiennm99/gomoku)"
|
||||
date: 2026
|
||||
summary: Multiplayer Gomoku game with authoritative Go WebSocket backend, protobuf binary messages, Docker Compose, GitHub Actions CI, and Phaser client.
|
||||
highlights:
|
||||
- "Designed server-authoritative gameplay with move validation, win detection, PVP/PVE/spectator modes, per-player state machine, and minimax AI"
|
||||
- "Covered game, lobby, network codec, and state flows with Go tests; CI runs go vet, go test, server build, and client build"
|
||||
- name: "[Rplace](https://github.com/tiennm99/rplace)"
|
||||
date: 2026
|
||||
summary: Collaborative pixel canvas on Cloudflare Workers using Durable Object SQLite storage, WebSocket pixel broadcasts, edge validation, and Svelte client.
|
||||
highlights:
|
||||
- "Implemented batch pixel placement, per-user cooldowns, real-time broadcast, and 4096x4096 canvas chunking"
|
||||
- "Added Vitest coverage for worker validation, Durable Object storage, canvas loading, cookies, WebSocket behavior, and rate limits"
|
||||
skills:
|
||||
- label: Languages
|
||||
details: Java, Go, JavaScript/TypeScript, Shell
|
||||
- label: Frameworks & Libraries
|
||||
details: Netty, Vert.x, Spring Boot, JUnit 5, Mockito, Cocos2d-x, Godot, WebSocket
|
||||
- label: Databases
|
||||
details: Couchbase, Redis, MySQL, Kafka, ClickHouse
|
||||
- label: Infrastructure & DevOps
|
||||
details: Docker, GitLab CI, GitHub Actions, Linux, AWS Lambda/SAM, Cloudflare Workers, Vercel
|
||||
- label: Architecture
|
||||
details: Object-oriented design, reusable backend components, game server architecture, real-time multiplayer systems, event-driven design
|
||||
- label: Delivery Practices
|
||||
details: Unit testing, code review, production debugging, CI/CD, DevOps collaboration, AI-assisted development workflows
|
||||
- label: Languages (Spoken)
|
||||
details: Vietnamese (Native), English (TOEIC 600+)
|
||||
- "Thesis: Survival2D — multiplayer Battle Royale game server in Java (Netty/WebSocket) with authoritative architecture, FlatBuffers serialization, behavior-tree AI bots, and server-side anti-cheat"
|
||||
design:
|
||||
theme: engineeringresumes
|
||||
page:
|
||||
top_margin: 0.45in
|
||||
bottom_margin: 0.45in
|
||||
left_margin: 0.55in
|
||||
right_margin: 0.55in
|
||||
header:
|
||||
photo_width: 3cm
|
||||
space_below_name: 0.3cm
|
||||
space_below_headline: 0.3cm
|
||||
space_below_connections: 0.3cm
|
||||
section_titles:
|
||||
space_above: 0.3cm
|
||||
space_below: 0.2cm
|
||||
sections:
|
||||
space_between_regular_entries: 0.7em
|
||||
space_between_text_based_entries: 0.2em
|
||||
typography:
|
||||
line_spacing: 0.5em
|
||||
font_size:
|
||||
body: 10pt
|
||||
# page:
|
||||
# size: us-letter
|
||||
# top_margin: 0.7in
|
||||
|
||||
Reference in New Issue
Block a user