Compare commits

...

3 commits

Author SHA1 Message Date
ee1d847215
Resume 2026-02-19 22:33:16 -08:00
e28a5f66bf Euler 2025-11-13 00:23:37 -08:00
32c499da0a Update flake 2025-11-13 00:07:13 -08:00
9 changed files with 2124 additions and 166 deletions

11
.gitignore vendored
View file

@ -4,7 +4,14 @@
!flake.nix
!flake.lock
!euler/
!euler/**
euler/target/
!resume/
!resume/**
!xiao-esp32c6/
!xiao-esp32c6/**
xiao-esp32c6/.embuild
xiao-esp32c6/target
xiao-esp32c6/.embuild/
xiao-esp32c6/target/

7
euler/Cargo.lock generated Normal file
View file

@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "euler"
version = "0.1.0"

6
euler/Cargo.toml Normal file
View file

@ -0,0 +1,6 @@
[package]
name = "euler"
version = "0.1.0"
edition = "2024"
[dependencies]

1
euler/src/lib.rs Normal file
View file

@ -0,0 +1 @@

1
euler/src/main.rs Normal file
View file

@ -0,0 +1 @@
fn main() {}

279
flake.lock generated
View file

@ -6,7 +6,8 @@
"devenv"
],
"flake-compat": [
"devenv"
"devenv",
"flake-compat"
],
"git-hooks": [
"devenv",
@ -18,11 +19,11 @@
]
},
"locked": {
"lastModified": 1752264895,
"narHash": "sha256-1zBPE/PNAkPNUsOWFET4J0cjlvziH8DOekesDmjND+w=",
"lastModified": 1760971495,
"narHash": "sha256-IwnNtbNVrlZIHh7h4Wz6VP0Furxg9Hh0ycighvL5cZc=",
"owner": "cachix",
"repo": "cachix",
"rev": "47053aef762f452e816e44eb9a23fbc3827b241a",
"rev": "c5bfd933d1033672f51a863c47303fc0e093c2d2",
"type": "github"
},
"original": {
@ -39,14 +40,17 @@
"flake-parts": "flake-parts",
"git-hooks": "git-hooks",
"nix": "nix",
"nixpkgs": "nixpkgs"
"nixd": "nixd",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1758578119,
"narHash": "sha256-gQ4tWrxpG43cCTEnFqbdcKOB00l4s7VsRIJAxpRgSE0=",
"lastModified": 1771545453,
"narHash": "sha256-8Zg8fqyXdmhRhiUzNpD96eZ1Htjkfeo6573HmKp15Gs=",
"owner": "cachix",
"repo": "devenv",
"rev": "56782ef9e6fec7fc5cbbbd88f04ce114faac2e35",
"rev": "1419489f71dbb1736142428e2e81e3911e79945f",
"type": "github"
},
"original": {
@ -57,15 +61,19 @@
},
"espkgs": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_2"
"flake-utils": [
"flake-utils"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1758247379,
"narHash": "sha256-u7LOGpRhY1MmelsdLF5BlZRtuwYD5GBfQzVOdNojhz8=",
"lastModified": 1767865407,
"narHash": "sha256-QWF1rZYd+HvNzLIeRS+OEBX7HF0EhWCGeLbMkgtbsIo=",
"owner": "mirrexagon",
"repo": "nixpkgs-esp-dev",
"rev": "f087ab9ecf5177d5bcf773b0c7467fa91b33dae7",
"rev": "5287d6e1ca9e15ebd5113c41b9590c468e1e001b",
"type": "github"
},
"original": {
@ -76,15 +84,17 @@
},
"fenix": {
"inputs": {
"nixpkgs": "nixpkgs_3",
"nixpkgs": [
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1758695884,
"narHash": "sha256-rnHjtBRkcwRkrUZxg0RqN1qWTG+QC/gj4vn9uzEkBww=",
"lastModified": 1771485140,
"narHash": "sha256-oFJv+Zp5AjQ9yDWlisGSD5OK20iz7v+hfedEdRg2/Aw=",
"owner": "nix-community",
"repo": "fenix",
"rev": "9cdb79384d02234fb2868eba6c7d390253ef6f83",
"rev": "f95b0cc3fffa5057e9d207afb98dda5178253380",
"type": "github"
},
"original": {
@ -96,11 +106,11 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1747046372,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"lastModified": 1761588595,
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
"type": "github"
},
"original": {
@ -133,11 +143,11 @@
]
},
"locked": {
"lastModified": 1756770412,
"narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
"lastModified": 1760948891,
"narHash": "sha256-TmWcdiUUaWk8J4lpjzu4gCGxWY6/Ok7mOK4fIFfBuU4=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "4524271976b625a4a605beefd893f270620fd751",
"rev": "864599284fc7c0ba6357ed89ed5e2cd5040f0c04",
"type": "github"
},
"original": {
@ -146,6 +156,21 @@
"type": "github"
}
},
"flake-root": {
"locked": {
"lastModified": 1723604017,
"narHash": "sha256-rBtQ8gg+Dn4Sx/s+pvjdq3CB2wQNzx9XGFq/JVGCB6k=",
"owner": "srid",
"repo": "flake-root",
"rev": "b759a56851e10cb13f6b8e5698af7b59c44be26e",
"type": "github"
},
"original": {
"owner": "srid",
"repo": "flake-root",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
@ -164,24 +189,6 @@
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"git-hooks": {
"inputs": {
"flake-compat": [
@ -195,11 +202,11 @@
]
},
"locked": {
"lastModified": 1758108966,
"narHash": "sha256-ytw7ROXaWZ7OfwHrQ9xvjpUWeGVm86pwnEd1QhzawIo=",
"lastModified": 1760663237,
"narHash": "sha256-BflA6U4AM1bzuRMR8QqzPXqh8sWVCNDzOdsxXEguJIc=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "54df955a695a84cd47d4a43e08e1feaf90b1fd9b",
"rev": "ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37",
"type": "github"
},
"original": {
@ -256,47 +263,76 @@
]
},
"locked": {
"lastModified": 1755029779,
"narHash": "sha256-3+GHIYGg4U9XKUN4rg473frIVNn8YD06bjwxKS1IPrU=",
"lastModified": 1771532737,
"narHash": "sha256-H26FQmOyvIGnedfAioparJQD8Oe+/byD6OpUpnI/hkE=",
"owner": "cachix",
"repo": "nix",
"rev": "b0972b0eee6726081d10b1199f54de6d2917f861",
"rev": "7eb6c427c7a86fdc3ebf9e6cbf2a84e80e8974fd",
"type": "github"
},
"original": {
"owner": "cachix",
"ref": "devenv-2.30.4",
"ref": "devenv-2.32",
"repo": "nix",
"type": "github"
}
},
"nixd": {
"inputs": {
"flake-parts": [
"devenv",
"flake-parts"
],
"flake-root": "flake-root",
"nixpkgs": [
"devenv",
"nixpkgs"
],
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1763964548,
"narHash": "sha256-JTRoaEWvPsVIMFJWeS4G2isPo15wqXY/otsiHPN0zww=",
"owner": "nix-community",
"repo": "nixd",
"rev": "d4bf15e56540422e2acc7bc26b20b0a0934e3f5e",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixd",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1755783167,
"narHash": "sha256-gj7qvMNz7YvhjYxNq4I370cAYIZEw2PbVs5BSwaLrD4=",
"owner": "cachix",
"repo": "devenv-nixpkgs",
"rev": "4a880fb247d24fbca57269af672e8f78935b0328",
"lastModified": 1771369470,
"narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0182a361324364ae3f436a63005877674cf45efb",
"type": "github"
},
"original": {
"owner": "cachix",
"ref": "rolling",
"repo": "devenv-nixpkgs",
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-python": {
"inputs": {
"flake-compat": "flake-compat_2",
"nixpkgs": "nixpkgs_5"
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1755249745,
"narHash": "sha256-lDIbUfJ8xK62ekG+qojTlA1raHpKdScBTx8IFlQYx9U=",
"lastModified": 1771493264,
"narHash": "sha256-M5hvivITtG0wnuCRsIXf8d6MYEs5bIF8eTY2TCNRZj4=",
"owner": "cachix",
"repo": "nixpkgs-python",
"rev": "b6632af2db9f47c79dac8f4466388c7b1b6c3071",
"rev": "7d828f3a6acb63582c6a642e3b0ce0e2ecb03749",
"type": "github"
},
"original": {
@ -305,93 +341,13 @@
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1758070117,
"narHash": "sha256-uLwwHFCZnT1c3N3biVe/0hCkag2GSrf9+M56+Okf+WY=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e9b7f2ff62b35f711568b1f0866243c7c302028d",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1758427187,
"narHash": "sha256-pHpxZ/IyCwoTQPtFIAG2QaxuSm8jWzrzBGjwQZIttJc=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "554be6495561ff07b6c724047bdd7e0716aa7b46",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1758427187,
"narHash": "sha256-pHpxZ/IyCwoTQPtFIAG2QaxuSm8jWzrzBGjwQZIttJc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "554be6495561ff07b6c724047bdd7e0716aa7b46",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1753345091,
"narHash": "sha256-CdX2Rtvp5I8HGu9swBmYuq+ILwRxpXdJwlpg8jvN4tU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "3ff0e34b1383648053bba8ed03f201d3466f90c9",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_6": {
"locked": {
"lastModified": 1744536153,
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"devenv": "devenv",
"espkgs": "espkgs",
"fenix": "fenix",
"flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs_4",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs",
"nixpkgs-python": "nixpkgs-python",
"rust-overlay": "rust-overlay"
}
@ -399,11 +355,11 @@
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1758620797,
"narHash": "sha256-Ly4rHgrixFMBnkbMursVt74mxnntnE6yVdF5QellJ+A=",
"lastModified": 1771444642,
"narHash": "sha256-ztRHVn93XOfYZNnGYyNadFdR8gp3Xi2JKDKwBzb0ApI=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "905641f3520230ad6ef421bcf5da9c6b49f2479b",
"rev": "70f44024cc9d92c56df79832d81775cb99dc2e21",
"type": "github"
},
"original": {
@ -415,14 +371,16 @@
},
"rust-overlay": {
"inputs": {
"nixpkgs": "nixpkgs_6"
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1758681214,
"narHash": "sha256-8cW731vev6kfr58cILO2ZsjHwaPhm88dQ8Q6nTSjP9I=",
"lastModified": 1771470520,
"narHash": "sha256-PvytHcaYN5cPUll7FB70mXv1rRsIBRmu47fFfq3haxA=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "b12ed88d8d33d4f3cbc842bf29fad93bb1437299",
"rev": "a1d4cc1f264c45d3745af0d2ca5e59d460e58777",
"type": "github"
},
"original": {
@ -446,18 +404,25 @@
"type": "github"
}
},
"systems_2": {
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"devenv",
"nixd",
"nixpkgs"
]
},
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"lastModified": 1734704479,
"narHash": "sha256-MMi74+WckoyEWBRcg/oaGRvXC9BVVxDZNRMpL+72wBI=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "65712f5af67234dad91a5a4baee986a8b62dbf8f",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
}

View file

@ -1,12 +1,30 @@
{
inputs = {
devenv.url = "github:cachix/devenv";
espkgs.url = "github:mirrexagon/nixpkgs-esp-dev";
fenix.url = "github:nix-community/fenix";
devenv = {
inputs.nixpkgs.follows = "nixpkgs";
url = "github:cachix/devenv";
};
espkgs = {
inputs = {
flake-utils.follows = "flake-utils";
nixpkgs.follows = "nixpkgs";
};
url = "github:mirrexagon/nixpkgs-esp-dev";
};
fenix = {
inputs.nixpkgs.follows = "nixpkgs";
url = "github:nix-community/fenix";
};
flake-utils.url = "github:numtide/flake-utils";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-python.url = "github:cachix/nixpkgs-python";
rust-overlay.url = "github:oxalica/rust-overlay";
nixpkgs-python = {
inputs.nixpkgs.follows = "nixpkgs";
url = "github:cachix/nixpkgs-python";
};
rust-overlay = {
inputs.nixpkgs.follows = "nixpkgs";
url = "github:oxalica/rust-overlay";
};
};
outputs = inputs @ {
@ -21,8 +39,10 @@
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
overlays = [
(_: _: espkgs.packages.${system})
];
};
espPkgs = espkgs.packages.${system};
in {
packages = {
devenv-up = self.devShells.${system}.default.config.procfileScript;
@ -60,7 +80,7 @@
};
packages = with pkgs; [
espflash
espPkgs.esp-idf-full
# esp-idf-full
ldproxy
opencode
sops

1843
resume/resume.pdf Normal file

File diff suppressed because it is too large Load diff

108
resume/resume.typ Normal file
View file

@ -0,0 +1,108 @@
// Page setup
#set page(margin: (x: 0.7in, y: 0.55in))
#set text(font: "New Computer Modern", size: 10.5pt)
#set par(justify: true, leading: 0.42em, spacing: 0.42em)
#show link: set text(fill: rgb("#333333"))
#set list(indent: 0pt, body-indent: 0.4em, marker: [], spacing: 5pt)
// Section header
#let section(title) = {
v(7pt)
text(size: 11pt, weight: "bold", smallcaps(title))
v(-2pt)
line(length: 100%, stroke: 0.4pt)
v(2pt)
}
// Unified entry: primary header + date, secondary header, then body
#let entry(primary, date, secondary, body) = {
grid(
columns: (1fr, auto),
text(weight: "bold", primary),
align(end, text(date)),
)
v(-1pt)
text(style: "italic", secondary)
linebreak()
body
}
// === HEADER ===
#align(center)[
#text(size: 14pt, weight: "bold")[Sicheng Pan] #h(6pt)
#text(size: 9.5pt)[
#link("mailto:sicheng0129@gmail.com")[sicheng0129\@gmail.com] #h(4pt) | #h(4pt)
+1 (510) 301-0622 #h(4pt) | #h(4pt)
#link("https://www.linkedin.com/in/sicheng-pan-0129/")[LinkedIn]
]
]
// === EDUCATION ===
#section("Education")
#entry(
[University of California, Berkeley], [2023 -- 2024],
[M.S. in Electrical Engineering and Computer Sciences, GPA: 3.94/4.0],
[Thesis: _Extensible Rule Language for Query Optimizer_, advised by Alvin Cheung],
)
#v(5pt)
#entry(
[University of California, Berkeley], [2019 -- 2023],
[B.A. in Computer Science and Statistics, GPA: 4.0/4.0],
[Highest Distinction in General Scholarship · Honors in Computer Science],
)
// === EXPERIENCE ===
#section("Experience")
#entry(
[Chroma], [Aug 2024 -- Present],
[Member of Technical Staff, Data Plane],
)[
- Integrated 4-bit RaBitQ quantization into the SPANN index, reducing compaction time from 20 min to 2 min per 1M vectors (1536-dim) with 5× lower memory usage, enabling collections to scale from 5M to 50M with ~40ms query latency and >90% recall\@10.
- Designed and implemented a hybrid search API supporting composable KNN expressions (e.g., reciprocal rank fusion), sparse vector indexing (BM25, SPLADE) via Block-Max WAND, achieving sub-100ms latency at 1M scale. Shipped end-to-end across engine, API, Python/JS/Rust clients, and docs.
- Co-led rewrite of the distributed frontend from Python to Rust (tokio/axum), owning the read path (query plan serialization, executors). Throughput increased from 800 to 6,000+ RPS on 16 cores with latency spikes eliminated. Also shipped as the new Rust-based local client.
- Designed a serializable query plan and pushed query orchestration from the frontend to the query server, reducing network round trips from 3 to 1 per query and eliminating large intermediate data transfers.
- Implemented instant collection forking with copy-on-write semantics, enabling users to checkpoint datasets and share sample collections without incurring storage copy.
- Built regex query support via two-stage approach: extracting required literals from regex patterns to narrow candidates via the trigram index, then brute-force matching survivors, achieving sub-100ms latency at 1M scale.
- Implemented efficient limit/offset pagination, negation filters using roaring bitmaps, CMEK encryption (GCP), and group-by deduplication for chunked-document search results.
]
#v(5pt)
#entry(
[Duolingo], [Summer 2022],
[Software Engineer Intern, Data Infrastructure and Experimentation Team],
)[
- Implemented approximate query pipeline on BigQuery for the analytics dashboard, saving >50% query time at \<1% uncertainty.
- Implemented caching mechanism for common queries based on historical frequencies (AWS, Jenkins), saving >80% time for analysts.
]
#v(5pt)
#entry(
[R-Polars Project], [Summer 2023],
[Contributor, Google Summer of Code],
)[
- Exported Polars features to R including streaming I/O in Apache Parquet and Arrow formats.
- Refactored error handling with recoverable errors from Rust and implemented background query pipeline via multi-threading, saving >50% user wait time.
]
// === RESEARCH ===
#section("Research")
#entry(
[QED: A Powerful Query Equivalence Decider for SQL], [2021 -- 2024],
[UC Berkeley EECS, advised by Alvin Cheung · Published at VLDB 2024],
)[
- Co-developed QED, a SQL query equivalence prover in Rust using a novel formalism (Q-expressions) under bag semantics with a complete checking algorithm for a general query fragment parameterized by first-order theories.
- Verified 299/444 query rewrite pairs from Apache Calcite and 979/1287 from CockroachDB, more than 2× the coverage of prior state-of-the-art.
]
// === SKILLS ===
#v(4pt)
#line(length: 100%, stroke: 0.4pt)
*Languages:* Rust, Python, SQL, R, Nix \
*Tools & Infrastructure:* Linux, Git, gRPC/Protobuf, tokio, axum, AWS, GCP, Kubernetes, Docker