Bachelor's student @ University of Melbourne | CS & AI & Data Science
Apache open-source contributor. Google Summer of Code 2026 with Apache IoTDB.
Google Summer of Code 2026 — Apache IoTDB. I built the ThingsBoard × IoTDB 2.x
table-model integration, mentored by an IoTDB PMC member, and have continued
maintaining it since: the iotdb-thingsboard-table module, table-model support in
the Grafana data source plugin, the Grafana build migration off grafana-toolkit,
the user and migration guides, and an ingestion-throughput benchmark.
Mostly correctness work found by reading source rather than picking off an issue tracker — resources leaked on failure paths, values that break a contract at a boundary, error handling that discards the original failure. Where a regression test can isolate the defect I add one, and mutation-check it by reverting the fix against the base commit to confirm the new test goes red.
| Project | What it is | Merged |
|---|---|---|
| apache/paimon | Lake format for streaming and batch | 25 |
| apache/opendal | Unified data access layer | 22 |
| apache/iotdb-extras | IoTDB ecosystem integrations — GSoC 2026 | 13 |
| apache/beam | Distributed data processing | 12 |
| apache/shardingsphere | Distributed database middleware | 8 |
| debezium/debezium-platform | Change data capture | 4 |
| apache/iotdb-client-nodejs | IoTDB Node.js client | 4 |
| opencv/opencv | Computer vision library | 3 |
| apache/seatunnel | Data integration platform | 3 |
| apache/iotdb-client-go | IoTDB Go client | 3 |
| apache/iotdb | Time-series database | 3 |
| apache/iceberg | Open table format | 1 |
A few of them:
- paimon#9408 — a partition hash of
Integer.MIN_VALUEstays negative throughMath.absand selects a negative shuffle channel. - shardingsphere#39611 — converting a
pre-epoch date to a protobuf timestamp derived the seconds by truncating division, naming the
second above the one the value falls in, while
getNanosis a non-negative offset into it. - iotdb#17212 — periodic system-metrics collection could leave child processes unreaped; fixed the cleanup and the interrupt handling.
I also take part in design discussion on dev@iotdb.apache.org — proposals of my own on the Node.js session pool, the Grafana plugin's version policy, and table-model support for the Flink connectors, plus other people's threads on aggregate function design, IPv6 endpoints and the Rust client SDK.
| Project | Description | Tech Stack |
|---|---|---|
| FusionSQL | Text-to-SQL solution with BGE-M3 fusion retrieval (table-level ∪ column-level), achieving 95.7% recall rate | Python, BGE-M3, Qwen, FlagEmbedding |
| text2sql_research | Text-to-SQL with graph structure & RAG | Python, LangChain, Graph DB |
| LLM-Research-Internship-2025 | Technical notes on LLM alignment & prompt engineering | Markdown |
| 2024_ai_intership_log | AI system development: multimodal ad review with ReAct architecture | Python, FastAPI, LangChain, Docker |
| Project | Description | Tech Stack |
|---|---|---|
| MarsCode_Winter_project | Heimdallr: Full-stack frontend monitoring system with SDK, backend & dashboard | TypeScript, Vue, MySQL |
| Project | Description | Tech Stack |
|---|---|---|
| EODP-project | Crime rate prediction in Victoria using socio-economic factors | Python, Jupyter, Scikit-learn |
| Project | Description | Tech Stack |
|---|---|---|
| OOSD-project | Shadow Donkey Kong: 2D arcade game with enemy system | Java, Bagel Engine |
| ads-project2 | Algorithm & data structure implementations | C |
Languages: Java · Python · Go · TypeScript · Rust · C · SQL
Data infrastructure: Apache Paimon · Iceberg · Beam · SeaTunnel · IoTDB · ShardingSphere · OpenDAL · Debezium
AI/ML: PyTorch · LangChain · Transformers · RAG · ReAct
Backend: FastAPI · Node.js · MySQL
Tools: Docker · Git · Maven · Jupyter



