(01) — 履歷與筆記台灣 · UTC+8

軟體工程師,把想法做成產品。

從理解問題,到設計、開發與上線。
圖號 02 / 05 — 精選作品
(02)

精選作品

正式上線的系統與聚焦的概念驗證:問題、決策、資料流,以及每個專案實際驗證了什麼。

所有專案 →
商城零售+B2B營運後台商品+結算員工工作中心任務+資源客戶服務入口表單+個人紀錄共用業務模組交易 · 紀錄 · 文件POSTGRESQL角色授權 · 列級安全性支付整合 · 物件儲存 · 排程維運
案例 — 合約工程
跨境電商與營運平台

以首位工程師身分負責平台架構與交付,帶領另一位工程師開發內部應用,並負責系統整合、交易控制及存取邊界。

TypeScript · Next.js · React · PostgreSQL · Drizzle ORM · Stripe · Vitest · Testcontainers · Turborepo · GitHub ActionsARCH — 交易設計 · 存取邊界 · 稽核紀錄 · 維運
CHECKOUTweb · mobilePAYMENT GATEWAYrouting · idempotencyone event shapeLOCAL PSPcardsLOCAL PSPbank transferLOCAL PSPwalletMULTIPLE LOCAL PROVIDERSLEDGERorders · settlementCHECKOUT → PSP → LEDGER
案例 — 軟體工程師
跨國電商金流整合

負責公司電商的 Payment Gateway:串接各地本地金流商,做前後端整合與背後的資料流。

Java · Spring Boot · React · Oracle · Local PSPs · CODAARCH — 金流路由 · 清算流程
BROWSER WALLETNEXT.JS APPIDENTITY / TOKENTEST LENDINGconnect · signinterface + backendERC-3643 · OnchainIDproject contractsMongoDB · tx recordsserver actionswallet-signed actionsAPPLICATION INTEGRATION · TESTNET PoC
黑客松專案 — Web3 概念驗證
RWA 股票借貸 — Hackathon

以 Next.js 介面與後端串接錢包、身分流程及借貸合約的測試網應用,於 RWA 黑客松獲得 Honorable Prize。

Next.js · React · TypeScript · MongoDB · Ethers.js · ERC-3643 · OnchainID · Lending contract integrationARCH — 錢包 · 身分 · 交易狀態 · 借貸
圖號 03 / 05 — 文章
依分類篩選
精選文章
  1. 用真實 PostgreSQL 驗證系統邊界從 migration 建立隔離測試庫,以受限角色與實際寫入結果,驗證 mock 難以涵蓋的權限與交易行為。
  2. 文件簽署:保存內容與事件依據以範本版本、文件指紋、限時連結與序列化狀態變更,保留簽署流程的查核依據。
  3. FLP 不可能性:為什麼系統沒有做錯,卻可能永遠無法決定?從無法區分的執行、bivalent configuration 到公平排程,逐步拆解 FLP:訊息最終會到,為什麼共識仍可能永遠無法完成?
  4. 正式環境的 Log 該怎麼設計?從字串輸出到可追蹤事件好 log 不是印得多,而是能沿著 request、job 與業務事件還原發生了什麼,同時控制敏感資料、儲存成本與告警噪音。
  5. 共用帳號,分開資料存取權限以應用權限、資料庫授權與交易範圍內的列級安全性,區分客戶與員工的資料存取。
  6. Consensus 與 Paxos:Leader 故障後,決策為什麼不會改變?從同步共識演算法到 Paxos 的 ballot 與 leader 故障案例,逐步理解 accepted、chosen、learned,以及 quorum 如何保住既有決策。
  7. 檔案加密後怎麼換密鑰?Envelope Encryption 與 Key Rotation用 DEK 加密資料,再以 KMS 裡的 KEK 保護 DEK。理解兩層密鑰後,才能安全輪替、遷移與淘汰舊 key。
  8. CS 411 資料庫底層機制互動圖解從資料頁如何讀入記憶體,看懂 B+ tree、hash 分裂、外部排序、join buffer、查詢計畫與交易衝突圖。
  9. Multicast 如何實作:排序、可靠傳遞與 View Change用具體訊息軌跡理解 FIFO buffer、causal delivery vector、total-order sequencer,以及 virtual synchrony 如何守住成員變更的邊界。
  10. 什麼時候該用 Message Queue?先確認你真的需要非同步Queue 能解耦、多路分發並吸收尖峰,但也帶來重複訊息、最終一致性與追蹤成本。小規模系統不一定需要它。
  11. Safety 與 Liveness:系統正確,究竟保證了什麼?分清楚不變條件與進度保證,理解有限反例、公平性,以及 global snapshot 如何偵測穩定條件。
  12. CS 513 資料清理互動圖解從名稱分群、不同修復版本,到資料溯源、流程紀錄與概念對齊,用五組互動圖看懂資料清理的判斷過程。
  13. Global Snapshot:從 Consistent Cut 到 Chandy-Lamport 演算法用轉帳例子理解 process state 與 channel state,再逐步推演三個節點的 marker snapshot,以及演算法為什麼正確。
  14. ECS 已經能跑 Cron,為什麼還需要 Function Compute?Function Compute 與 Lambda 不一定比主機內排程更省。真正要比較的是閒置成本、隔離、事件整合、尖峰擴展與維運責任。
  15. CS 425 期中視覺讀本:把分散式系統動起來用互動圖複習 partial failure、P2P routing、gossip、SWIM、logical clock、multicast order、MapReduce recovery、quorum 與 Cassandra。
  16. 可靠的 AI 工作流:允許不知道、知道何時停下,並保留人的決定從 BIM 與工程量工作流抽出一套可移植架構:Human > Agent > Rule、合法留白、確定性計算、停止條件、證據鏈與規則沉澱。
  17. 先別急著設計:把理想需求一層一層剝回真正的問題業主描述的是終局願景,工程團隊卻可能把它當成今天的規格。這是我從需求釐清、成本失控與架構設計中學到的方法。
  18. 信任 AI Agent,不是靠膽量,而是靠環境設計整理 Lauren Tan 的 agent workflow,也納入社群對 PR 指標、自動 merge、可移植性與人類責任的質疑。
  19. Agent 不需要更多工具:Armin Ronacher 的保守派 Agentic Engineering從 Pi 的極簡 harness、local-first 工作流到真實環境驗證:Agent 寫得更快之後,工程師更該守住可理解性與成果衡量。
  20. SAA-C03 總複習:成本決策與真正值得背的陷阱以成本槓桿、高頻混淆對照與刷題複盤法完成整個系列。
  21. AWS 資料與分析:從問題類型選 Engine將 ad hoc SQL、warehouse、ETL、stream、search、dashboard 與 cluster 對應到真正負責的服務。
  22. 從 CAP 到 Cassandra、HBase:Consistency 是 API Contract串起 partition behavior、consistency model、quorum、LSM-style write、Cassandra 與 HBase,而不把設計簡化成 CAP 口號。
  23. AWS 韌性、DR 與遷移:讓 RTO/RPO 決定架構分清 high availability 與 disaster recovery,再把 business recovery target 對應到 replication 與 migration tool。
  24. MapReduce:把 Computation 移到 Data,失敗時重新計算理解 map、shuffle、reduce、partition、straggler、speculative execution 與 lineage-based fault tolerance。
  25. AWS 可觀測性與治理:Metrics、Events、Audit、Configuration從每個服務記錄什麼、可對什麼行動,分清 CloudWatch、EventBridge、CloudTrail 與 Config。
  26. Consensus 與 Paxos:用 Majority 保住唯一決策分清 consensus safety 與 progress,再理解 Paxos 的 proposal、acceptor、ballot 與 quorum intersection。
  27. AWS Messaging 與 Serverless:先設計 Delivery Semantics先分 queue、pub/sub、stream 與 orchestration,再串 Lambda、API Gateway 與 event-driven workload。
  28. 用 Docker 建立 AI 可用的本地資料環境:不碰正式庫,也不失去業務脈絡我如何用本地 PostgreSQL、遮罩種子與可重建流程支援 AI 輔助開發;以及這道邊界能保護什麼、不能保護什麼。
  29. Global Snapshot:不停機也能擷取 Distributed State理解 consistent cut、in-transit message 與 Chandy-Lamport marker algorithm。
  30. AWS 資料庫與 Cache:先定義 Data Contract從 consistency、query 與 scale 需求,選 RDS、Aurora、DynamoDB、ElastiCache 或 purpose-built database。
  31. 沒有 Global Clock 的時間:Causality 與 Multicast Order從 clock synchronization 推進到 Lamport timestamp、vector clock,以及 FIFO、causal、total-order multicast。
  32. AWS 儲存選型:從 Access Pattern、共用與 Recovery 開始先分 object、block、file,再選 storage class、replication、lifecycle 與 hybrid transfer tool。
  33. Gossip、Membership 與 Failure Detection:在不確定中維持群組串起 epidemic dissemination、membership view、heartbeat、suspicion、false positive 與可擴展的 failure detection。
  34. AWS Compute 與彈性:對齊 Runtime、Scaling Unit 與 Failure Model依 control、workload shape 與 state,選擇 EC2、Auto Scaling、load balancer、container 或 Lambda。
  35. 從 Napster 到 Chord:P2P 為什麼走向 Structured Overlay從 state、message 與 failure 比較 centralized index、flooding、supernode、BitTorrent swarm 與 DHT routing。
  36. 從 pgvector 到可拒答的知識庫問答:我的 RAG MVP一個尚未上線、已在本地測試的健康衛教問答 MVP:自有文章、pgvector、檢索門檻、多輪追問與引用檢查如何一起工作。
  37. AWS 網路與 Edge:選服務前先把 Packet 路徑畫出來用 packet path 串起 subnet、routing、security、private access、hybrid connection、DNS 與 global delivery。
  38. Cloud 本質上是 Distributed System,再加上一套營運模型從 partial failure、concurrency、elasticity、virtualization 與經濟模型理解 cloud 為何存在。
  39. AWS 身分與安全:先追 Request,再找 Explicit Deny把 IAM evaluation、Organizations、KMS、secret、network protection 與 detection 串成同一套安全模型。
  40. SAA-C03 備考地圖:不要背服務,要學會做決策把四大考綱轉成一套可重複使用的讀題、排除與架構選擇方法。
  41. 清理 17,545 份歷史菜單:改善可用性,但不抹掉證據回顧 NYPL menu project 的 profiling、canonical city/meal、保守推論、constraint、provenance 與誠實驗證。
  42. Cost-Aware Learned Caching:從 LBSC 到可驗證的系統提案說明異質 storage 為何不能只看 miss count、LBSC 如何學 eviction,以及怎麼把後續研究縮成可信實驗。
  43. Taxonomy Alignment:同名不一定同義用明確 semantic relation、logical constraint、possible world 與人工 review 對齊階層式 vocabulary。
  44. 重讀 NoDB:不先付完整載入成本,也能查 Raw Data從實務角度評析 NoDB 的 data-to-query 指標、selective parsing、positional map、cache 與 break-even。
  45. Research Nexus:真實資料如何改變資料庫設計回顧一個由論文引用資料與 Scholar enrichment 建成的 11-table 研究探索資料庫,以及真實資料帶來的設計修正。
  46. Data Provenance:讓每個結果都能回答從哪裡來分清 prospective/retrospective provenance,以合適粒度建模 lineage,並用 YesWorkflow 式 annotation 描述 script dependency。
  47. 資訊整合:從異質來源做到可信資料用實務角度整理 schema matching、entity resolution、provenance、merge policy、ETL 與 federated query。
  48. 資料清理 Workflow:Automation 不等於 Reproducibility用明確的 input、output、parameter、dependency、validation gate 與可重跑 evidence 設計 cleaning pipeline。
  49. 平行與分散式資料庫:先優化資料搬移串起 partition、replication、parallel join、skew、distributed commit 與 consensus,並分清它們各自解決的問題。
  50. 業務時間:訂單與對帳使用一致的期間邊界區分時間點與業務日期,讓報表、訂單識別及排程使用明確且一致的期間邊界。
  51. 資料庫復原:WAL、Checkpoint、Undo 與 Redo理解 crash 後什麼能留下、WAL 為何有效,以及 buffer policy 如何決定 undo 與 redo。
  52. Database Repair:當乾淨版本不只一個理解 minimal repair、repair policy、穩定結論與 consistent query answer,同時保留資料歧義。
  53. Relational、Document、Graph 或 Raw Data:從 Workload 選模型用 invariant、access path、更新 ownership、relationship depth、latency 與維運成本比較資料模型。
  54. Query Optimization:先估 Cardinality,才有 Cost從 rule-based rewrite、selectivity、join order 到 physical-plan cost,系統化判讀估算誤差。
  55. Datalog 與 Recursive Query:用小語言表達資料關係理解 fact、rule、join、recursion 與 fixed point,以及相同推理如何出現在 recursive SQL 與品質檢查。
  56. 從 Relational Algebra 到 Physical Operators:查詢成本從哪裡來把 logical meaning 和 scan、sort、hash、join algorithm 分開,再用 page I/O 估算成本。
  57. Transactions、Serializability 與 Isolation:推理並行寫入從 ACID、schedule 與 precedence graph,一路理解 anomaly、isolation level、lock 與雙 session 實驗。
  58. 把 Integrity Constraint 寫成可執行的資料品質規則把 key、reference、domain 與跨欄商業規則,轉成 violation query 與可強制執行的 constraint。
  59. B+ Tree 與 Hash Index:從 Page I/O 看懂索引怎麼選從樹結構、fanout 量級與更新成本,一路做到可執行 PostgreSQL、EXPLAIN 判讀與選型。
  60. Graph Data Model 與 Cypher:讓 Relationship 成為一等公民用 Neo4j 理解 node、relationship、direction 與 traversal cost,也知道什麼資料不必硬做成 graph。
  61. OpenRefine:先探索、再轉換,最後匯出 Recipe使用 facet、clustering、GREL、reconciliation 與 operation history,同時避免互動式 cleaning 變成不可重現的黑箱。
  62. MongoDB 資料建模:Flexible Schema 不等於不用設計用 access pattern、成長上限、更新 ownership 與 query plan 決定 embedding 或 reference。
  63. Functional Dependencies 與正規化:從 Closure 推到 3NF、BCNF用一條完整推理鏈串起 attribute closure、candidate key、minimal cover、lossless decomposition、3NF 與 BCNF。
  64. 資料清理中的 Regular Expression:比對結構,不要假裝理解語意建立可測試的 regex,用於 validation、extraction 與 transformation,同時分清 parsing 與 semantic check。
  65. 從概念模型到資料表:轉換時不要弄丟語意從需求找出 entity、relationship、key 與 cardinality,再有系統地轉成 relational tables。
  66. Constraints 與 Triggers:讓所有寫入者都遵守不變量用可測試的失敗行為,安排 NOT NULL、CHECK、UNIQUE、foreign key 與 trigger 的責任。
  67. 先 Profile 再 Cleaning:把懷疑變成可量測的缺陷在修改資料前,以 data profile 分清 syntax、schema、semantic、duplicate、missingness 與 distribution 問題。
  68. 聚合、View 與更新:把邏輯放在正確的邊界從 GROUP BY 語意、一般與 materialized view,到原子更新與 stored routine 的合理邊界。
  69. JOIN、NULL 與集合運算:先確保多表查詢是對的從 join cardinality、outer join 條件位置到 NULL-safe anti-join,先把多表查詢的正確性說清楚。
  70. 資料品質從問題開始,不是從 Dataset 開始用 fitness for use、品質維度與成本,判斷哪些資料必須清、哪些已經足夠。
  71. 從 Relation 到 SQL:查詢背後的資料模型用同一套心智模型理解 relation、schema、key、bag、NULL,以及 SQL 的邏輯處理順序。
  72. 結帳併發:庫存、餘額預留與狀態轉換用固定順序鎖定、重新讀取可售量與條件式狀態轉換,處理結帳、付款及取消的競爭。
  73. 促銷資料建模:規則、持有權與使用紀錄以共用生命週期處理促銷,同時明確定義持有權、併發使用限制與訂單金額紀錄。
  74. 不只 Batch:Spark Streaming、Graph 與 Machine-Learning Pipeline在共同 execution foundation 上理解 incremental stream、property graph 與可重現的 feature-to-model workflow。
  75. 儲存決策與即時計算資格區分需要保留的業務決策,以及隨交易、退款與期間變動的資格判定。
  76. Spark DataFrame 與 SQL:把更多資訊交給 Optimizer理解 schema、logical plan、Catalyst 與 columnar execution,為何常比 opaque RDD code 更有效率。
  77. 市場、通路與帳號:三個不同的責任以市場設定、通路策略與付款責任,讓零售和 B2B 共用平台,同時區分價格、計價單位及權限。
  78. Spark RDD:Lazy Execution、Lineage、Partition 與 Shuffle從 execution model 判讀 Spark performance,而不是把 transformation 當成本機 collection method。
  79. Clustering 與 Classification:看似相近,其實在回答不同問題用 objective、assumption、decision boundary 與 evaluation 串起 k-means、decision tree、SVM。
  80. Association Rules:從 Apriori 剪枝到 FP-Growth先分清 support、confidence、lift,再理解 Apriori 與 FP-Growth 如何用不同方式省下搜尋成本。
  81. MinHash 與 LSH:不做兩兩比較也能找出近似資料把文件轉成 shingle,以 signature 近似 Jaccard similarity,再用 LSH 把搜尋縮成少量 candidate pairs。
  82. 從手動看 CODA 到自動對帳:B2B 銀行檔案怎麼變成可靠帳務比利時 CODA 銀行檔案如何從 Isabel 或安全檔案傳輸,經過 fixed-width parsing、配對、人工審核與冪等入帳。
  83. HTTP 失敗,不代表付款失敗:我串接 PSP 後學到的交易生命週期從 PSP 與銀行的關係、authorization、capture、void、refund,到代管卡片欄位、簽章與 webhook 狀態同步。
看全部文章→
圖號 04 / 05 — 合作
(04) — 合作

有個問題 要解嗎?

01需求轉化

把目標、使用者需求與限制,轉成清楚的範圍、優先順序和可執行的技術方案。

02架構設計與實作

設計領域模型、資料流、API、雲端與系統整合,再把方案做成經過測試、能上線的產品。

03規模、可靠性與成本

找出效能瓶頸、故障路徑與成本來源,在不過度設計的前提下規劃系統成長。

04技術負責與交付

從前期探索到正式上線,負責取捨、進度與技術品質;也可以在現有團隊最需要的環節加入。

訊息會透過 Formspark 安全送出。

下載履歷 ↓johnnyjclin@gmail.com各類軟體專案 · 台灣 · 可遠端 · 接案或全職