feat: portfolio redesign with i18n, RBC project showcase, CI/CD

- Add i18n support (EN/ZH) with language toggle
- Redesign header with education dropdown, contact copy buttons
- Add RBC project showcase with bullet points, skills highlighting
- Create terraform-drift placeholder page
- Add ProjectShowcase component with media toggle (image/video)
- Update experience timeline with action-driven descriptions
- Add Docker + Forgejo CI workflow for image builds
- Update K8s manifests for riotpiao.com ingress
- Add DESIGN.md documenting design system patterns
This commit is contained in:
Story Crater Bot
2026-08-31 13:59:46 -07:00
parent e404dae7c8
commit b9ae470bc1
26 changed files with 1724 additions and 250 deletions
+34
View File
@@ -0,0 +1,34 @@
'use client'
import { createContext, useContext, useState, ReactNode } from 'react'
import translations from './translations.json'
type Language = 'en' | 'zh'
interface LanguageContextType {
lang: Language
setLang: (lang: Language) => void
t: typeof translations.en
}
const LanguageContext = createContext<LanguageContextType | undefined>(undefined)
export function LanguageProvider({ children }: { children: ReactNode }) {
const [lang, setLang] = useState<Language>('en')
const t = lang === 'zh' ? translations.zh : translations.en
return (
<LanguageContext.Provider value={{ lang, setLang, t }}>
{children}
</LanguageContext.Provider>
)
}
export function useLanguage() {
const context = useContext(LanguageContext)
if (!context) {
throw new Error('useLanguage must be used within LanguageProvider')
}
return context
}
+28
View File
@@ -0,0 +1,28 @@
'use client'
import { createContext, useContext, useState, ReactNode } from 'react'
interface TerminalContextType {
isOpen: boolean
setIsOpen: (open: boolean) => void
}
const TerminalContext = createContext<TerminalContextType | undefined>(undefined)
export function TerminalProvider({ children }: { children: ReactNode }) {
const [isOpen, setIsOpen] = useState(false)
return (
<TerminalContext.Provider value={{ isOpen, setIsOpen }}>
{children}
</TerminalContext.Provider>
)
}
export function useTerminal() {
const context = useContext(TerminalContext)
if (!context) {
throw new Error('useTerminal must be used within TerminalProvider')
}
return context
}
+354
View File
@@ -0,0 +1,354 @@
{
"en": {
"header": {
"title": "Rock Liang",
"subtitle": "Senior Software Engineer",
"nav": {
"home": "Home",
"askPoimen": "AskPoimen",
"skills": "Skills",
"contact": "Contact"
},
"experience": "Experience",
"experienceValue": "6+ YoE",
"education": "Education",
"educationValue": "M.Sc. UOttawa",
"educationDetails": {
"bachelor": {
"school": "University of Ottawa",
"degree": "Bachelor's Degree, Computer Science",
"period": "2016 2019"
},
"master": {
"school": "University of Ottawa",
"degree": "Master's degree, Computer Science",
"period": "Sep 2019 Nov 2021"
}
},
"contact": {
"portfolio": "portfolio.riotpiao.com",
"github": "GitHub",
"privateGithub": "Private Github",
"linkedin": "LinkedIn",
"email": "Email",
"copy": "Copy"
},
"skillsPlaceholder": "Skills will appear here"
},
"hero": {
"title": "Senior Software Engineer",
"subtitle": "Infrastructure × Backend × LLM Systems",
"description": "Building observable, scalable, fault-tolerant systems for mass audience.",
"exploreMore": "Explore more",
"terminalHint": "Press",
"terminalHintSuffix": "to explore via terminal",
"roles": [
"Infrastructure",
"SRE",
"SDE",
"Agentic Engineer",
"Distributed Systems",
"System/Platform Engineer"
]
},
"bio": {
"title": "About Me",
"intro": "Senior Software Engineer with 6+ years of experience building observable, scalable, and fault-tolerant systems for mass audiences.",
"expertise": {
"title": "Technical Expertise",
"content": "Infrastructure automation (Terraform, Kubernetes, ArgoCD) • Distributed systems (gRPC, Kafka, AWS Step Functions) • LLM inference optimization (INT4/INT8 quantization) • Backend systems (Go, Java, Python, C++)"
},
"highlights": {
"title": "Career Highlights",
"items": [
"Launched AWS Distributed-Map service across 57+ regions",
"Built multi-region infrastructure at RBC (40% cost reduction)",
"Architected production homelab: Kubernetes, Kafka, LLM inference",
"Open source: go-flink (distributed DataLakeHouse)"
]
},
"educationTitle": "Education",
"educationContent": "M.Sc. Computer Science, University of Ottawa (20192021)\nB.Sc. Computer Science, University of Ottawa (20162019)",
"currentFocus": "Currently focused on infrastructure automation, LLM systems optimization, and building the next generation of distributed systems."
},
"projects": {
"title": "What have i Built and Building",
"subtitle": "Demonstrate my work",
"watchVideo": "Watch Video",
"readArticle": "Read Article",
"askPoimen": "Ask Poimen for technical details",
"items": [
{
"title": "AWS Distributed-Map",
"description": "Launched distributed task orchestration service for mission-critical workloads.",
"longDescription": "Optimized execution across 57+ regions with fault-tolerant scheduling and auto-scaling.",
"stat": "Production launch, 57+ regions"
},
{
"title": "RBC: Multi-Cloud Platform",
"description": "Unified infrastructure platform consolidating public cloud and on-prem.",
"longDescription": "Terraform automation with Temporal orchestration. 99.2% automated provisioning, notification-driven operator fallback.",
"stat": "200+ microservices, 4 regions, 2hr→20min deploy",
"highlight": "Standardized IaC patterns across 12 teams—cut provisioning toil, 3x integration velocity.",
"bullets": [
"Integrated Terraform Cloud to centralize IaC workflows—reduced onboarding time for 12 teams",
"Built K8s CronJob to detect and reconcile Terraform state drift automatically (Golang)",
"Designed Slack notification service with Golang workers—operators resolve apply failures in <5min",
"Led requirement gathering across 4 platform teams—disambiguated specs, unblocked 3 stalled projects",
"Translated technical decisions for non-technical stakeholders—secured buy-in for platform migration"
],
"deepDive": {
"label": "Deep Dive: Terraform State Drift Solution →",
"url": "/terraform-drift"
}
},
{
"title": "Homelab: Kubernetes Cluster",
"description": "Bare-metal Kubernetes cluster running production workloads.",
"longDescription": "Talos OS with 3-node control plane. Cilium eBPF CNI, Longhorn storage, ArgoCD GitOps.",
"stat": "3-node cluster, 99.2% uptime"
},
{
"title": "Homelab: LLM Inference",
"description": "Production LLM inference pipeline with CPU optimization.",
"longDescription": "Temporal-based orchestration with INT4/INT8 quantization. Achieved 60% latency reduction.",
"stat": "60% latency cut, real-time inference"
},
{
"title": "Homelab: Kafka Cluster",
"description": "High-throughput event streaming with Strimzi KRaft.",
"longDescription": "3-broker KRaft cluster with auto-scaling, persistent storage, and monitoring.",
"stat": "3 brokers, 1K+ msgs/sec"
},
{
"title": "Open Source: go-flink",
"description": "Distributed DataLakeHouse framework written in Go.",
"longDescription": "Fault-tolerant data pipelines with streaming semantics and efficient processing.",
"stat": "Public repository, active"
}
]
},
"experience": {
"title": "Explore Experience",
"subtitle": "Feel free to Ask Poimen more abt it",
"items": [
{
"company": "riotpiao.com",
"role": "DevOps / SRE / SDE",
"period": "May 2026 — Present",
"description": "Built and maintain production-grade homelab on bare-metal Kubernetes (3-node Talos cluster). Architected Temporal-based LLM inference pipelines with 60% latency reduction. Full GitOps automation with ArgoCD, Terraform, and custom operators."
},
{
"company": "RBC",
"role": "Lead Software Engineer",
"period": "Nov 2024 — May 2026",
"description": "Deployments were manual and slow—teams blocked 2+ hours waiting. Chose Terraform for idempotent drift handling, Temporal for multi-cloud orchestration with built-in retry. Cut deploy time to 20min, consolidated public cloud and on-prem into single platform with 99.2% automation and notification-driven operator fallback."
},
{
"company": "AWS",
"role": "Senior Software Engineer (Step Functions)",
"period": "2022 — 2024",
"description": "Core contributor to AWS Step Functions, scaling to 57+ regions. Designed and implemented 8 critical components for distributed state machine execution. Achieved sub-100ms P99 latency for high-throughput workflow orchestration."
},
{
"company": "Titus",
"role": "ML Software Engineer Intern",
"period": "May — Aug 2019",
"description": "Built Personal Data Detection pipeline with 97.8% accuracy using transformer models. Developed Golang connector reducing p99 latency by 28%. Created SmartRegex system accelerating model deployment by 5x."
},
{
"company": "NAV Canada",
"role": "Summer Student",
"period": "May — Aug 2018",
"description": "Developed CFPS Flight Planning application using Django and React. Implemented NOTAMJ polling system and integrated Sonar code coverage. Built FWGS weather briefing interface for pilots."
}
]
},
"terminal": {
"title": "Poimen (Agent Terminal)",
"button": "Ask Poimen",
"helpText": "type 'help' for commands"
},
"footer": {
"copyright": "© 2025 Rock Liang. Deployed on homelab Kubernetes cluster (3-node Talos).",
"github": "GitHub",
"email": "Email"
}
},
"zh": {
"header": {
"title": "梁伟哲",
"subtitle": "高级软件工程师",
"nav": {
"home": "首页",
"askPoimen": "问Poimen",
"skills": "技能",
"contact": "联系"
},
"experience": "经验",
"experienceValue": "6年+",
"education": "学历",
"educationValue": "渥太华大学硕士",
"educationDetails": {
"bachelor": {
"school": "渥太华大学",
"degree": "计算机科学学士",
"period": "2016 2019"
},
"master": {
"school": "渥太华大学",
"degree": "计算机科学硕士",
"period": "2019年9月 2021年11月"
}
},
"contact": {
"portfolio": "portfolio.riotpiao.com",
"github": "GitHub",
"privateGithub": "私人GitHub",
"linkedin": "领英",
"email": "邮箱",
"copy": "复制"
},
"skillsPlaceholder": "技能将显示在这里"
},
"hero": {
"title": "高级软件工程师",
"subtitle": "基础设施 × 后端 × LLM系统",
"description": "为大规模用户构建可观测、可扩展、容错的系统。",
"exploreMore": "了解更多",
"terminalHint": "按",
"terminalHintSuffix": "通过终端探索",
"roles": [
"基础设施",
"SRE",
"软件开发",
"AI代理工程师",
"分布式系统",
"系统/平台工程师"
]
},
"bio": {
"title": "关于我",
"intro": "拥有6年以上经验的高级软件工程师,专注于为大规模用户构建可观测、可扩展、容错的系统。",
"expertise": {
"title": "技术专长",
"content": "基础设施自动化 (Terraform, Kubernetes, ArgoCD) • 分布式系统 (gRPC, Kafka, AWS Step Functions) • LLM推理优化 (INT4/INT8量化) • 后端系统 (Go, Java, Python, C++)"
},
"highlights": {
"title": "职业亮点",
"items": [
"在57+区域发布AWS Distributed-Map服务",
"在RBC构建多区域基础设施(成本降低40%)",
"架构生产级家庭实验室:Kubernetes、Kafka、LLM推理",
"开源项目:go-flink(分布式数据湖仓库)"
]
},
"educationTitle": "教育背景",
"educationContent": "渥太华大学计算机科学硕士 (2019–2021)\n渥太华大学计算机科学学士 (20162019)",
"currentFocus": "目前专注于基础设施自动化、LLM系统优化,以及构建下一代分布式系统。"
},
"projects": {
"title": "我构建的项目",
"subtitle": "展示我的作品",
"watchVideo": "观看视频",
"readArticle": "阅读文章",
"askPoimen": "问Poimen了解技术细节",
"items": [
{
"title": "AWS Distributed-Map",
"description": "发布面向关键任务的分布式任务编排服务。",
"longDescription": "在57+区域优化执行,具有容错调度和自动扩展功能。",
"stat": "生产发布,57+区域"
},
{
"title": "RBC: 多云平台",
"description": "统一基础设施平台,整合公有云和本地部署。",
"longDescription": "Terraform自动化配合Temporal编排。99.2%自动化配置,通知驱动的运维人员兜底。",
"stat": "200+微服务,4个区域,部署2小时→20分钟",
"highlight": "标准化12个团队的IaC模式——减少配置负担,集成速度提升3倍。",
"bullets": [
"集成Terraform Cloud实现IaC工作流集中化——12个团队onboarding时间缩短",
"构建K8s CronJob自动检测和修复Terraform状态漂移(Golang",
"设计Slack通知服务 + Golang worker——运维人员<5分钟解决apply失败",
"主导4个平台团队需求收集——澄清规格,解锁3个停滞项目",
"向非技术stakeholder翻译技术决策——获得平台迁移支持"
],
"deepDive": {
"label": "深入了解:Terraform状态漂移解决方案 →",
"url": "/terraform-drift"
}
},
{
"title": "家庭实验室:Kubernetes集群",
"description": "运行生产工作负载的裸机Kubernetes集群。",
"longDescription": "Talos OS 3节点控制平面,Cilium eBPF CNILonghorn存储,ArgoCD GitOps。",
"stat": "3节点集群,99.2%可用性"
},
{
"title": "家庭实验室:LLM推理",
"description": "具有CPU优化的生产LLM推理管道。",
"longDescription": "基于Temporal的编排,INT4/INT8量化,延迟降低60%。",
"stat": "延迟降低60%,实时推理"
},
{
"title": "家庭实验室:Kafka集群",
"description": "使用Strimzi KRaft的高吞吐量事件流。",
"longDescription": "3代理KRaft集群,具有自动扩展、持久存储和监控。",
"stat": "3代理,1K+消息/秒"
},
{
"title": "开源:go-flink",
"description": "用Go编写的分布式数据湖仓库框架。",
"longDescription": "具有流语义和高效处理的容错数据管道。",
"stat": "公开仓库,活跃中"
}
]
},
"experience": {
"title": "工作经历",
"subtitle": "欢迎向Poimen了解更多",
"items": [
{
"company": "riotpiao.com",
"role": "DevOps / SRE / 软件开发",
"period": "2026年5月 — 至今",
"description": "在裸机Kubernetes3节点Talos集群)上构建和维护生产级家庭实验室。架构基于Temporal的LLM推理管道,延迟降低60%。使用ArgoCD、Terraform和自定义操作器实现完整GitOps自动化。"
},
{
"company": "RBC",
"role": "技术主管",
"period": "2024年11月 — 2026年5月",
"description": "部署流程手动且缓慢——团队等待2+小时。选择Terraform处理幂等漂移,Temporal用于多云编排和内置重试。将部署时间缩短至20分钟,整合公有云和本地部署为统一平台,99.2%自动化,通知驱动的运维人员兜底机制。"
},
{
"company": "AWS",
"role": "高级软件工程师 (Step Functions)",
"period": "2022 — 2024",
"description": "AWS Step Functions核心贡献者,扩展至57+区域。设计实现8个关键组件用于分布式状态机执行。高吞吐量工作流编排实现P99延迟低于100ms。"
},
{
"company": "Titus",
"role": "机器学习软件工程师实习",
"period": "2019年5月 — 8月",
"description": "使用transformer模型构建准确率97.8%的个人数据检测管道。开发Golang连接器,p99延迟降低28%。创建SmartRegex系统,模型部署速度提升5倍。"
},
{
"company": "NAV Canada",
"role": "暑期实习生",
"period": "2018年5月 — 8月",
"description": "使用Django和React开发CFPS航班计划应用。实现NOTAMJ轮询系统并集成Sonar代码覆盖。为飞行员构建FWGS天气简报界面。"
}
]
},
"terminal": {
"title": "Poimen(代理终端)",
"button": "问Poimen",
"helpText": "输入 'help' 查看命令"
},
"footer": {
"copyright": "© 2025 梁伟哲。部署于家庭实验室Kubernetes集群(3节点Talos)。",
"github": "GitHub",
"email": "邮箱"
}
}
}