Website, LinkedIn, Resume, My Pull Requests, My Activity
Senior Software Engineer at Red Hat, working on OpenShift API for Data Protection (OADP) and Maintainer of the Velero project. Focused on upstream community leadership, mentoring contributors, and architecting cloud-native data protection for Kubernetes.
mindmap
root((Tiger))
🐣 Bangkok, Thailand 🇹🇭
(🏫Sarasas Witead Romklao)
(🏫Assumption College)
Invercargill, New Zealand 🇳🇿
(🏫James Hargest College)
🍳Pascal/Delphi
Personal Projects
Websites
🍳Flutter/Dart
🍳Vue/NextJS
🍳GitHub Actions
🍳CircleCI
Raleigh, North Carolina 🇺🇸
(🏫North Carolina State University)
📚Computer Science Minor
🍳Java/Eclipse
🍳Python
🍳Unit Tests
🍳Continuous Integration
🍳HTML/CSS
🍳GitHub
📚Industrial and Systems Engineering Major
🍳Human Factors and Ergonomics
🍳VisualBasic for Applications
🍳Fusion 360
🍳3D Printing
((🏙️Red Hat))
💼Technical Marketing Internship
🍳Red Hat Product Demo System
🍳ASCIIDoc
🍳OpenShift
🍳Blogging
🍳Ansible
🍳Trello
💼Senior Software Engineer
🧑🤝🧑Migration and Modernization Engineering
**OpenShift API for Data Protection**
🍳Golang
🍳Containers
🍳OpenShift/Kubernetes
🍳Prow
🍳Velero Maintainer
🍳Jira
🍳GitHub Actions
Open Source Leadership
🍳Community Mentorship
🍳Upstream Strategy
🍳Technical Evangelism
(🏙️Deutsche Bank)
💼dbAchieve Internship
🍳SpringBoot
🍳Maven
🍳Confluence
🍳Oracle SQL
🍳AngularJS
🍳BitBucket
- North Carolina State University - BS Industrial Engineering (2018-2021), Minor in Computer Science (2016-2021)
- CS50 - Computer Science (2015)
- James Hargest College - Invercargill, New Zealand (2012-2015)
- Assumption College - Bangkok, Thailand (2010-2012)
In red below are some places I have lived in, visited, or transited through. Screenshot from Google Maps' Timeline
North Carolina destinations map
open-prs.json is automatically generated on the update-pr-badges workflow schedule and exported for consumption by kaovilai.pw.
| Field | Type | Description |
|---|---|---|
updatedAt |
string (ISO 8601) | Timestamp of last generation |
prs |
array | All open PRs by kaovilai (sorted by org then status priority) |
reviewQueue |
object | Professional review-queue panel data |
| Field | Type | Description |
|---|---|---|
number |
number | PR number |
repo |
string | owner/name |
org |
string | Repository owner/org login |
title |
string | PR title |
url |
string | PR URL |
targetBranch |
string | Base branch |
status |
string | Badge status: ready, waiting-merge, ci-pending, draft, stale, hold, failing-ci, needs-attention |
milestone |
string|null | Linked issue milestone (velero repos only) |
author |
string | GitHub login of PR author |
isCopilotAuthored |
boolean | True when authored by a Copilot coding-agent bot |
assignees |
string[] | Assignee logins |
isDraft |
boolean | Draft state |
labels |
string[] | Label names |
updatedAt |
string (ISO 8601) | Last activity timestamp |
Includes only public professional contributions (repos owned by GitHub organizations, not personal accounts). Excludes drafts, rebase-blocked PRs, and merge-conflicted PRs.
| Field | Type | Description |
|---|---|---|
updatedAt |
string (ISO 8601) | Timestamp of last generation |
needsReview |
array | Open PRs still waiting for human review/approval, sorted by longest waiting first |
approvedWaitingToLand |
array | Sufficiently approved PRs still open (CI, merge queue, hold, etc.), sorted by longest waiting first |
| Field | Type | Description |
|---|---|---|
number |
number | PR number |
repo |
string | owner/name |
org |
string | Organization login |
title |
string | PR title |
url |
string | PR URL |
targetBranch |
string | Base branch |
author |
string | GitHub login of PR author |
isCopilotAuthored |
boolean | True when authored by Copilot coding-agent bot |
assignees |
string[] | Assignee logins |
labels |
string[] | Label names |
mergeStateStatus |
string | GitHub merge state: CLEAN, DIRTY, BEHIND, BLOCKED, UNKNOWN, etc. |
isApproved |
boolean | True if sufficiently approved (native GitHub approval OR both lgtm+approved Prow labels) |
hasProwApproval |
boolean | True if both lgtm and approved labels are present |
hasGithubApproval |
boolean | True if at least one native GitHub approving review exists |
reviewRequests |
string[] | Requested reviewer/team logins |
group |
string | needsReview or approvedWaitingToLand |
reason |
string | Classification reason: awaitingReview, hold, pendingMerge |
waitingDays |
number | Days since last activity |
updatedAt |
string (ISO 8601) | Last activity timestamp |
bash .github/scripts/validate-open-prs-json.sh open-prs.json