mirror of
https://github.com/tiennm99/cv.git
synced 2026-10-14 12:16:48 +00:00
chore: auto-render CV
This commit is contained in:
1 parent
4e6bf2ae58
commit
5fabec1987
4 files changed
+985
-1053
No files matched your search
@@ -10,7 +10,7 @@
|
||||
|
||||
|
||||
# Education
|
||||
## **Ho Chi Minh City University of Technology**, B.E. in Computer Science in Computer Science and Engineering -- HCMC, Vietnam
|
||||
## **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
|
||||
@@ -24,50 +24,50 @@ Sept 2017 – June 2023
|
||||
|
||||
July 2020 – present
|
||||
|
||||
Progressed from Game Programming Fresher to Senior Software Engineer. Builds and maintains Java game backends and production tooling with cross-functional work across server, client, QA, and release workflows.
|
||||
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.
|
||||
|
||||
- [Chaos Age 2](https://play.google.com/store/apps/details?id=vn.zps.tl2): Sole server developer for a global strategy game; built Java 21 backend modules with Netty/Vert.x, Couchbase, Redis, Kafka, Gradle, and GitLab CI/CD
|
||||
- [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
|
||||
|
||||
- Improved delivery quality with JUnit 5/Mockito tests, load-test clients, Docker-based local dependencies, and multi-environment build/deploy 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 tests around gameplay, payment, and release-critical flows
|
||||
|
||||
- Built internal AI-assisted Claude Code skills/plugin marketplace for ZingPlay game-server development, including typed packet-handler scaffolding and framework guidance
|
||||
- [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
|
||||
|
||||
- [Sky Garden](https://play.google.com/store/apps/details?id=vn.kvtm.js): Maintained production Java server features for a live farm game; handled event logic, web payment fixes, Redis/runtime diagnostics, and release support
|
||||
- [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
|
||||
|
||||
- [Show](https://play.google.com/store/apps/details?id=zps.games.show), [Burkozel](https://play.google.com/store/apps/details?id=zps.games.burkozel), and [Bida3D](https://play.google.com/store/apps/details?id=zps.games.bida3d.vn): Delivered server-side gameplay, matchmaking, and client logic across real-time card and pool games
|
||||
- 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
|
||||
|
||||
|
||||
|
||||
# Projects
|
||||
## **[MiTiSrv](https://github.com/tiennm99/mitisrv)**
|
||||
|
||||
2018 – 2025
|
||||
|
||||
Lightweight Java game server framework using Netty; personal framework for experimenting with reusable multiplayer server architecture.
|
||||
|
||||
|
||||
|
||||
## **[Test Sharding](https://github.com/tiennm99/test-sharding)**
|
||||
|
||||
2025
|
||||
|
||||
Java server experiment for sharding with Couchbase replication, Redis replication, and Kafka.
|
||||
|
||||
|
||||
|
||||
## **[Store Scraper Bot](https://github.com/tiennm99/store-scraper-bot) / [Java original](https://github.com/tiennm99/store-scraper-bot-java)**
|
||||
|
||||
Nov 2025 – present
|
||||
|
||||
Telegram bot for tracking Apple App Store and Google Play metadata updates; original Java version later ported to JavaScript.
|
||||
Telegram bot for tracking Apple App Store and Google Play metadata changes; originally built in Java, then ported to JavaScript.
|
||||
|
||||
|
||||
|
||||
## **[Miti99bot](https://github.com/tiennm99/miti99bot)**
|
||||
## **[Gomoku](https://github.com/tiennm99/gomoku)**
|
||||
|
||||
2026
|
||||
|
||||
Go Telegram bot framework deployed serverlessly on AWS Lambda/SAM with Firestore and Gemini integration.
|
||||
Multiplayer Gomoku game with Go WebSocket backend, protobuf messaging, Docker support, PVP/PVE/spectator modes, and Phaser client.
|
||||
|
||||
|
||||
|
||||
## **[Rplace](https://github.com/tiennm99/rplace)**
|
||||
|
||||
2026
|
||||
|
||||
Collaborative pixel-art canvas using Svelte, Hono, Cloudflare Workers, and Durable Object SQLite.
|
||||
|
||||
|
||||
|
||||
## **[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.
|
||||
|
||||
|
||||
|
||||
|
||||
+16
-16
@@ -50,7 +50,7 @@
|
||||
<li>Telegram: <a href="https://t.me/tiennm5">tiennm5</a></li>
|
||||
</ul>
|
||||
<h1>Education</h1>
|
||||
<h2><strong>Ho Chi Minh City University of Technology</strong>, B.E. in Computer Science in Computer Science and Engineering -- HCMC, Vietnam</h2>
|
||||
<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>
|
||||
<ul>
|
||||
<li>
|
||||
@@ -63,37 +63,37 @@
|
||||
<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. Builds and maintains Java game backends and production tooling with cross-functional work across server, client, QA, and release workflows.</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>: Sole server developer for a global strategy game; built Java 21 backend modules with Netty/Vert.x, Couchbase, Redis, Kafka, Gradle, and GitLab CI/CD</p>
|
||||
<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>Improved delivery quality with JUnit 5/Mockito tests, load-test clients, Docker-based local dependencies, and multi-environment build/deploy pipelines</p>
|
||||
<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>Built internal AI-assisted Claude Code skills/plugin marketplace for ZingPlay game-server development, including typed packet-handler scaffolding and framework guidance</p>
|
||||
<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>: Maintained production Java server features for a live farm game; handled event logic, web payment fixes, Redis/runtime diagnostics, and release support</p>
|
||||
<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><a href="https://play.google.com/store/apps/details?id=zps.games.show">Show</a>, <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.bida3d.vn">Bida3D</a>: Delivered server-side gameplay, matchmaking, and client logic across real-time card and pool games</p>
|
||||
<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/mitisrv">MiTiSrv</a></strong></h2>
|
||||
<p>2018 – 2025</p>
|
||||
<p>Lightweight Java game server framework using Netty; personal framework for experimenting with reusable multiplayer server architecture.</p>
|
||||
<h2><strong><a href="https://github.com/tiennm99/test-sharding">Test Sharding</a></strong></h2>
|
||||
<p>2025</p>
|
||||
<p>Java server experiment for sharding with Couchbase replication, Redis replication, and Kafka.</p>
|
||||
<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 updates; original Java version later ported to JavaScript.</p>
|
||||
<h2><strong><a href="https://github.com/tiennm99/miti99bot">Miti99bot</a></strong></h2>
|
||||
<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>Go Telegram bot framework deployed serverlessly on AWS Lambda/SAM with Firestore and Gemini integration.</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>
|
||||
|
||||
+903
-970
File diff suppressed because it is too large.
Load diff
+40
-41
@@ -105,7 +105,6 @@
|
||||
[#link("https://linkedin.com/in/miti99", icon: false, if-underline: false, if-color: false)[linkedin.com\/in\/miti99]],
|
||||
[#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]],
|
||||
[#link("https://www.facebook.com/tiennm99/", icon: false, if-underline: false, if-color: false)[fb.com\/tiennm99]],
|
||||
)
|
||||
]
|
||||
)
|
||||
@@ -115,7 +114,7 @@
|
||||
|
||||
#education-entry(
|
||||
[
|
||||
#strong[Ho Chi Minh City University of Technology], B.E. in Computer Science in Computer Science and Engineering -- HCMC, Vietnam
|
||||
#strong[Ho Chi Minh City University of Technology], B.E. in Computer Science and Engineering -- HCMC, Vietnam
|
||||
|
||||
],
|
||||
[
|
||||
@@ -142,53 +141,23 @@
|
||||
|
||||
],
|
||||
main-column-second-row: [
|
||||
#summary[Progressed from Game Programming Fresher to Senior Software Engineer. Builds and maintains Java game backends and production tooling with cross-functional work across server, client, QA, and release workflows.]
|
||||
#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.]
|
||||
|
||||
- #link("https://play.google.com/store/apps/details?id=vn.zps.tl2")[Chaos Age 2]: Sole server developer for a global strategy game; built Java 21 backend modules with Netty\/Vert.x, Couchbase, Redis, Kafka, Gradle, and GitLab CI\/CD
|
||||
- #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
|
||||
|
||||
- Improved delivery quality with JUnit 5\/Mockito tests, load-test clients, Docker-based local dependencies, and multi-environment build\/deploy 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 tests around gameplay, payment, and release-critical flows
|
||||
|
||||
- Built internal AI-assisted Claude Code skills\/plugin marketplace for ZingPlay game-server development, including typed packet-handler scaffolding and framework guidance
|
||||
- #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
|
||||
|
||||
- #link("https://play.google.com/store/apps/details?id=vn.kvtm.js")[Sky Garden]: Maintained production Java server features for a live farm game; handled event logic, web payment fixes, Redis\/runtime diagnostics, and release support
|
||||
- #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.show")[Show], #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.bida3d.vn")[Bida3D]: Delivered server-side gameplay, matchmaking, and client logic across real-time card and pool games
|
||||
- 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
|
||||
|
||||
],
|
||||
)
|
||||
|
||||
== Projects
|
||||
|
||||
#regular-entry(
|
||||
[
|
||||
#strong[#link("https://github.com/tiennm99/mitisrv")[MiTiSrv]]
|
||||
|
||||
],
|
||||
[
|
||||
2018 – 2025
|
||||
|
||||
],
|
||||
main-column-second-row: [
|
||||
#summary[Lightweight Java game server framework using Netty; personal framework for experimenting with reusable multiplayer server architecture.]
|
||||
|
||||
],
|
||||
)
|
||||
|
||||
#regular-entry(
|
||||
[
|
||||
#strong[#link("https://github.com/tiennm99/test-sharding")[Test Sharding]]
|
||||
|
||||
],
|
||||
[
|
||||
2025
|
||||
|
||||
],
|
||||
main-column-second-row: [
|
||||
#summary[Java server experiment for sharding with Couchbase replication, Redis replication, and Kafka.]
|
||||
|
||||
],
|
||||
)
|
||||
|
||||
#regular-entry(
|
||||
[
|
||||
#strong[#link("https://github.com/tiennm99/store-scraper-bot")[Store Scraper Bot] \/ #link("https://github.com/tiennm99/store-scraper-bot-java")[Java original]]
|
||||
@@ -199,14 +168,14 @@
|
||||
|
||||
],
|
||||
main-column-second-row: [
|
||||
#summary[Telegram bot for tracking Apple App Store and Google Play metadata updates; original Java version later ported to JavaScript.]
|
||||
#summary[Telegram bot for tracking Apple App Store and Google Play metadata changes; originally built in Java, then ported to JavaScript.]
|
||||
|
||||
],
|
||||
)
|
||||
|
||||
#regular-entry(
|
||||
[
|
||||
#strong[#link("https://github.com/tiennm99/miti99bot")[Miti99bot]]
|
||||
#strong[#link("https://github.com/tiennm99/gomoku")[Gomoku]]
|
||||
|
||||
],
|
||||
[
|
||||
@@ -214,7 +183,37 @@
|
||||
|
||||
],
|
||||
main-column-second-row: [
|
||||
#summary[Go Telegram bot framework deployed serverlessly on AWS Lambda\/SAM with Firestore and Gemini integration.]
|
||||
#summary[Multiplayer Gomoku game with Go WebSocket backend, protobuf messaging, Docker support, PVP\/PVE\/spectator modes, and Phaser client.]
|
||||
|
||||
],
|
||||
)
|
||||
|
||||
#regular-entry(
|
||||
[
|
||||
#strong[#link("https://github.com/tiennm99/rplace")[Rplace]]
|
||||
|
||||
],
|
||||
[
|
||||
2026
|
||||
|
||||
],
|
||||
main-column-second-row: [
|
||||
#summary[Collaborative pixel-art canvas using Svelte, Hono, Cloudflare Workers, and Durable Object SQLite.]
|
||||
|
||||
],
|
||||
)
|
||||
|
||||
#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.]
|
||||
|
||||
],
|
||||
)
|
||||
|
||||
Reference in new issue
Block a user