├── .gitignore ├── LICENSE ├── README.md ├── chicv.cls ├── fonts ├── AvenirNextLTPro-Bold.otf ├── AvenirNextLTPro-Italic.otf ├── AvenirNextLTPro-Regular.otf ├── SourceHanSerifCN-Bold.otf ├── SourceHanSerifCN-Heavy.otf ├── SourceHanSerifCN-Medium.otf └── SourceHanSerifCN-Regular.otf ├── img └── chi-cv-preview.png ├── resume.pdf └── resume.tex /.gitignore: -------------------------------------------------------------------------------- 1 | ## Core latex/pdflatex auxiliary files: 2 | *.aux 3 | *.lof 4 | *.log 5 | *.lot 6 | *.fls 7 | *.out 8 | *.toc 9 | *.fmt 10 | *.fot 11 | *.cb 12 | *.cb2 13 | .*.lb 14 | 15 | ## Intermediate documents: 16 | *.dvi 17 | *.xdv 18 | *-converted-to.* 19 | # these rules might exclude image files for figures etc. 20 | # *.ps 21 | # *.eps 22 | # *.pdf 23 | 24 | ## Generated if empty string is given at "Please type another file name for output:" 25 | .pdf 26 | 27 | ## Bibliography auxiliary files (bibtex/biblatex/biber): 28 | *.bbl 29 | *.bcf 30 | *.blg 31 | *-blx.aux 32 | *-blx.bib 33 | *.run.xml 34 | 35 | ## Build tool auxiliary files: 36 | *.fdb_latexmk 37 | *.synctex 38 | *.synctex(busy) 39 | *.synctex.gz 40 | *.synctex.gz(busy) 41 | *.pdfsync 42 | 43 | ## Build tool directories for auxiliary files 44 | # latexrun 45 | latex.out/ 46 | 47 | ## Auxiliary and intermediate files from other packages: 48 | # algorithms 49 | *.alg 50 | *.loa 51 | 52 | # achemso 53 | acs-*.bib 54 | 55 | # amsthm 56 | *.thm 57 | 58 | # beamer 59 | *.nav 60 | *.pre 61 | *.snm 62 | *.vrb 63 | 64 | # changes 65 | *.soc 66 | 67 | # comment 68 | *.cut 69 | 70 | # cprotect 71 | *.cpt 72 | 73 | # elsarticle (documentclass of Elsevier journals) 74 | *.spl 75 | 76 | # endnotes 77 | *.ent 78 | 79 | # fixme 80 | *.lox 81 | 82 | # feynmf/feynmp 83 | *.mf 84 | *.mp 85 | *.t[1-9] 86 | *.t[1-9][0-9] 87 | *.tfm 88 | 89 | #(r)(e)ledmac/(r)(e)ledpar 90 | *.end 91 | *.?end 92 | *.[1-9] 93 | *.[1-9][0-9] 94 | *.[1-9][0-9][0-9] 95 | *.[1-9]R 96 | *.[1-9][0-9]R 97 | *.[1-9][0-9][0-9]R 98 | *.eledsec[1-9] 99 | *.eledsec[1-9]R 100 | *.eledsec[1-9][0-9] 101 | *.eledsec[1-9][0-9]R 102 | *.eledsec[1-9][0-9][0-9] 103 | *.eledsec[1-9][0-9][0-9]R 104 | 105 | # glossaries 106 | *.acn 107 | *.acr 108 | *.glg 109 | *.glo 110 | *.gls 111 | *.glsdefs 112 | *.lzo 113 | *.lzs 114 | 115 | # uncomment this for glossaries-extra (will ignore makeindex's style files!) 116 | # *.ist 117 | 118 | # gnuplottex 119 | *-gnuplottex-* 120 | 121 | # gregoriotex 122 | *.gaux 123 | *.gtex 124 | 125 | # htlatex 126 | *.4ct 127 | *.4tc 128 | *.idv 129 | *.lg 130 | *.trc 131 | *.xref 132 | 133 | # hyperref 134 | *.brf 135 | 136 | # knitr 137 | *-concordance.tex 138 | # TODO Comment the next line if you want to keep your tikz graphics files 139 | *.tikz 140 | *-tikzDictionary 141 | 142 | # listings 143 | *.lol 144 | 145 | # luatexja-ruby 146 | *.ltjruby 147 | 148 | # makeidx 149 | *.idx 150 | *.ilg 151 | *.ind 152 | 153 | # minitoc 154 | *.maf 155 | *.mlf 156 | *.mlt 157 | *.mtc[0-9]* 158 | *.slf[0-9]* 159 | *.slt[0-9]* 160 | *.stc[0-9]* 161 | 162 | # minted 163 | _minted* 164 | *.pyg 165 | 166 | # morewrites 167 | *.mw 168 | 169 | # nomencl 170 | *.nlg 171 | *.nlo 172 | *.nls 173 | 174 | # pax 175 | *.pax 176 | 177 | # pdfpcnotes 178 | *.pdfpc 179 | 180 | # sagetex 181 | *.sagetex.sage 182 | *.sagetex.py 183 | *.sagetex.scmd 184 | 185 | # scrwfile 186 | *.wrt 187 | 188 | # sympy 189 | *.sout 190 | *.sympy 191 | sympy-plots-for-*.tex/ 192 | 193 | # pdfcomment 194 | *.upa 195 | *.upb 196 | 197 | # pythontex 198 | *.pytxcode 199 | pythontex-files-*/ 200 | 201 | # tcolorbox 202 | *.listing 203 | 204 | # thmtools 205 | *.loe 206 | 207 | # TikZ & PGF 208 | *.dpth 209 | *.md5 210 | *.auxlock 211 | 212 | # todonotes 213 | *.tdo 214 | 215 | # vhistory 216 | *.hst 217 | *.ver 218 | 219 | # easy-todo 220 | *.lod 221 | 222 | # xcolor 223 | *.xcp 224 | 225 | # xmpincl 226 | *.xmpi 227 | 228 | # xindy 229 | *.xdy 230 | 231 | # xypic precompiled matrices and outlines 232 | *.xyc 233 | *.xyd 234 | 235 | # endfloat 236 | *.ttt 237 | *.fff 238 | 239 | # Latexian 240 | TSWLatexianTemp* 241 | 242 | ## Editors: 243 | # WinEdt 244 | *.bak 245 | *.sav 246 | 247 | # Texpad 248 | .texpadtmp 249 | 250 | # LyX 251 | *.lyx~ 252 | 253 | # Kile 254 | *.backup 255 | 256 | # gummi 257 | .*.swp 258 | 259 | # KBibTeX 260 | *~[0-9]* 261 | 262 | # TeXnicCenter 263 | *.tps 264 | 265 | # auto folder when using emacs and auctex 266 | ./auto/* 267 | *.el 268 | 269 | # expex forward references with \gathertags 270 | *-tags.tex 271 | 272 | # standalone packages 273 | *.sta 274 | 275 | # Makeindex log files 276 | *.lpz 277 | 278 | ## IDE settings 279 | .vscode 280 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Matchy 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Chi CV template 2 | 3 | ![GitHub top language](https://img.shields.io/github/languages/top/matchy233/chi-cv-template) 4 | ![GitHub](https://img.shields.io/github/license/matchy233/chi-cv-template) 5 | 6 | Rip-off of [Alex Chi Zhang (cxs/skyzh)](https://github.com/skyzh)'s 7 | [CV](https://skyzh.github.io/files/cv.pdf) as a LaTeX template called `chicv`. 8 | 9 | Suggestions and PRs are welcome. Honestly, I'm not a master in LaTeX. 10 | 11 | 照着迟先生的简历扒的模板。祝大家都能成功得令人震惊。 12 | 13 | Note to `chi-cv-template` users: according to [Chi's twitter](https://twitter.com/iskyzh/status/1639139679235633153), 14 | he's planning to switch to a new typesetting app: [typst](https://typst.app/), 15 | which is also recommended by several of my friends. 16 | It's currently (as of March 2023) in beta, but it's worth a try. 17 | 18 | ## Sample Output 19 | 20 | ![Sample output of Chi-CV template](./img/chi-cv-preview.png) 21 | 22 | [PDF file](resume.pdf) 23 | 24 | ## To-Dos 25 | 26 | ### Chores 27 | 28 | - [ ] Instructions on how to compile 29 | - [ ] Intro to custom environments and commands 30 | - [ ] (Probably) publish to CTAN as a proper `.cls`. 31 | 32 | ### Additional ideas 33 | 34 | I personally need an academic curriculum vitae. 35 | 36 | - [ ] Publication list 37 | 38 | ## Acknowledgement 39 | 40 | Heavily referred to the code of [billryan/resume](https://github.com/billryan/resume) and [ice1000/resume](https://github.com/ice1000/resume). 41 | -------------------------------------------------------------------------------- /chicv.cls: -------------------------------------------------------------------------------- 1 | \NeedsTeXFormat{LaTeX2e} 2 | \ProvidesClass{chicv}[2022/08/21 A CV template based on the Curriculum Vitae of Alex Chi Zhang] 3 | \LoadClass[10pt]{article} % based on article class 4 | 5 | % 6 | \RequirePackage[ 7 | a4paper, 8 | left=0.8in, 9 | right=0.8in, 10 | top=0.5in, 11 | bottom=0.8in, 12 | nohead 13 | ]{geometry} 14 | 15 | \RequirePackage{fancyhdr} 16 | 17 | % For font setting 18 | \RequirePackage[T1]{fontenc} 19 | \RequirePackage{titlesec} 20 | 21 | % Require XCharter font 22 | \RequirePackage{XCharter} 23 | \setmainfont{XCharter} 24 | 25 | % For color 26 | \RequirePackage{xcolor} 27 | 28 | % For smarter command definition 29 | \RequirePackage{xifthen} 30 | \RequirePackage{xparse} 31 | 32 | % For hyperlink customization 33 | \RequirePackage[hidelinks]{hyperref} 34 | \RequirePackage{fontawesome5} % icons 35 | 36 | % For list environment customizations 37 | \RequirePackage{enumitem} 38 | 39 | % For customizing underline 40 | \RequirePackage[normalem]{ulem} 41 | \RequirePackage{contour} 42 | 43 | %% ----------------- END OF PACKAGES ----------------- %% 44 | 45 | % Footer 46 | %%% Only add "updated" footer to last page 47 | \pagestyle{fancy} 48 | \fancypagestyle{default}{ 49 | \fancyhf{} 50 | \RenewDocumentCommand{\headrulewidth}{}{0pt} 51 | } 52 | \fancypagestyle{lastpage}{ 53 | \fancyhf{} 54 | \RenewDocumentCommand{\headrulewidth}{}{0pt} 55 | \rfoot{\color{gray}Updated on \today} 56 | } 57 | 58 | % Spacings 59 | \setlength{\footskip}{4pt} 60 | \setlength{\parindent}{0pt} 61 | \setlength{\leftskip}{0pt} 62 | \setlist[itemize]{ 63 | leftmargin=36pt, 64 | itemsep=-\parsep, 65 | topsep=-\partopsep-\parskip, 66 | after=\vspace{2pt} 67 | } 68 | 69 | % Font size macros 70 | \newcommand{\HUGE}{\@setfontsize\HUGE{24pt}{18}} 71 | \renewcommand\Huge{\@setfontsize\Huge{22pt}{18}} 72 | \renewcommand\huge{\@setfontsize\huge{20pt}{18}} 73 | \renewcommand\LARGE{\@setfontsize\LARGE{18pt}{18}} 74 | \renewcommand\Large{\@setfontsize\Large{12pt}{18}} 75 | \renewcommand\large{\@setfontsize\large{11pt}{18}} 76 | 77 | % heading font: Avenir Next 78 | \IfFontExistsTF{Avenir Next LT Pro}{ 79 | \newfontfamily{\headingfont}{Avenir Next LT Pro} 80 | }{ 81 | \IfFontExistsTF{Avenir Next}{ 82 | \newfontfamily{\headingfont}{Avenir Next} 83 | }{ 84 | % use local font in ./fonts folder 85 | \newfontfamily{\headingfont}{AvenirNextLTPro}[ 86 | Path = ./fonts/, 87 | Extension = .otf, 88 | UprightFont = *-Regular, 89 | BoldFont = *-Bold, 90 | ItalicFont = *-Italic, 91 | ] 92 | } 93 | } 94 | 95 | % add CJK fonts and use zh line break 96 | % usage: \useChinese{}{} 97 | \newcommand{\useChinese}[2]{ 98 | \RequirePackage{xeCJK} 99 | \setCJKmainfont{SourceHanSerifCN}[ 100 | Path = ./fonts/, 101 | Extension = .otf, 102 | UprightFont = *-#1, 103 | BoldFont = *-#2, 104 | ] 105 | \XeTeXlinebreaklocale "zh" 106 | \XeTeXlinebreakskip = 0pt plus 1pt 107 | } 108 | 109 | % format for section title 110 | \titleformat{\section} 111 | {\headingfont\Large} % shape 112 | {} % format 113 | {0em} % label 114 | {\vspace{-2ex}{\color{gray}\hrule}} % before-code 115 | [] % after-code 116 | \titlespacing{\section} 117 | {0pt} % left spacing 118 | {0pt} % before spacing 119 | {0pt} % after spacing 120 | 121 | % format for subseciton title 122 | \titleformat{\subsection} 123 | {} % shape 124 | {} % format 125 | {0em} % label 126 | {} % beforcode 127 | [] % aftercode 128 | \titlespacing{\subsection} 129 | {12pt} % left spacing 130 | {\parskip} % before spacing 131 | {\parskip} % after spacing 132 | 133 | % custom underline style 134 | \renewcommand{\ULdepth}{3pt} 135 | \contourlength{0.6pt} 136 | \RenewDocumentCommand{\underline}{ m } 137 | { 138 | \uline{\phantom{#1}}% 139 | \llap{\contour{white}{#1}}% 140 | } 141 | 142 | % ----------------- CUSTOM COMMANDS ----------------- % 143 | 144 | \NewDocumentCommand{\cventry}{ m m o o } 145 | { 146 | \subsection[#1]{\textbf{#1} \hfill #2} 147 | \IfNoValueTF{#3} 148 | {} 149 | {\setlength{\parindent}{12pt}{\par #3 \hfill #4 \par}} 150 | \vspace{2pt} 151 | } 152 | 153 | 154 | \NewDocumentCommand{\name}{ m } 155 | {{\headingfont\Huge#1}} 156 | 157 | 158 | \NewDocumentEnvironment{compactlist}{} 159 | { 160 | \begin{itemize}[ 161 | label={}, 162 | leftmargin=12pt, 163 | itemsep=-\parsep, 164 | topsep=0pt-\partopsep-\parskip, 165 | ] 166 | } 167 | { 168 | \end{itemize} 169 | } 170 | 171 | \newcounter{infonum} 172 | \NewDocumentCommand{\infomark}{}{} 173 | 174 | \NewDocumentEnvironment{basicinfo}{ o } 175 | {% 176 | \par\vspace{1ex} 177 | \setcounter{infonum}{0} 178 | \IfValueTF{#1}{ 179 | \RenewDocumentCommand{\infomark}{}{#1} 180 | } 181 | { 182 | } 183 | } 184 | {% 185 | } 186 | 187 | \NewDocumentCommand{\info}{ m }{ 188 | \stepcounter{infonum} 189 | \ifthenelse{\theinfonum = 1}{ 190 | #1 191 | }{ 192 | $\mid$ #1 193 | } 194 | } 195 | 196 | % defines one's email 197 | % usage: \email{} 198 | \NewDocumentCommand{\email}{ m }{ 199 | \faEnvelope\ \underline{\href{mailto:#1}{#1}}\hspace{-14pt} 200 | } 201 | 202 | % defines one's phone 203 | % usage: \phone{} 204 | \NewDocumentCommand{\phone}{ m }{ 205 | \faPhone\ {#1}\hspace{-14pt} 206 | } 207 | 208 | % defines one's linkedin 209 | % usage: \linkedin{} 210 | \NewDocumentCommand{\linkedin}{ m o }{ 211 | \faLinkedinIn\IfNoValueTF{#2}{ 212 | \underline{\href{#1}{#1}} 213 | }{ 214 | \underline{\href{#2}{#1}} 215 | } 216 | \hspace{-20pt} 217 | } 218 | 219 | \NewDocumentCommand{\linkedinsquare}{ m o }{ 220 | \faLinkedin\IfNoValueTF{#1}{ 221 | \underline{\href{#1}{#1}} 222 | }{ 223 | \underline{\href{#2}{#1}} 224 | } 225 | \hspace{-20pt} 226 | } 227 | 228 | % defines one's GitHub 229 | % usage: \github{} 230 | \NewDocumentCommand{\github}{ m o }{ 231 | \faGithub\IfNoValueTF{#2}{ 232 | \underline{\href{#1}{#1}} 233 | }{ 234 | \underline{\href{#2}{#1}} 235 | } 236 | \hspace{-20pt} 237 | } 238 | 239 | % defines one's homepage 240 | % usage: \homepage{} 241 | \NewDocumentCommand{\homepage}{ m o }{ 242 | \faGlobe\IfNoValueTF{#2}{ 243 | \underline{\href{#1}{#1}} 244 | }{ 245 | \underline{\href{#2}{#1}} 246 | } 247 | \hspace{-20pt} 248 | } 249 | 250 | % Customize icon link 251 | % usage: \iconlink[][]{} 252 | \NewDocumentCommand{\iconlink}{ o o m }{ 253 | \IfNoValueTF{#1}{ 254 | \let\icon\faLink 255 | }{ 256 | \let\icon#1 257 | } 258 | \IfNoValueTF{#2}{ 259 | \hspace{-12pt}\underline{\href{#3}{\icon}} 260 | }{ 261 | \hspace{-12pt}\underline{\href{#3}{\icon\ #2}} 262 | } 263 | \hspace{-8pt} 264 | } 265 | 266 | % Set up pagestyle 267 | \pagestyle{default} 268 | \AtEndDocument{\thispagestyle{lastpage}} 269 | -------------------------------------------------------------------------------- /fonts/AvenirNextLTPro-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matchy233/chi-cv-template/252e47e14ed31211a911799a4f40e3d1685ffea2/fonts/AvenirNextLTPro-Bold.otf -------------------------------------------------------------------------------- /fonts/AvenirNextLTPro-Italic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matchy233/chi-cv-template/252e47e14ed31211a911799a4f40e3d1685ffea2/fonts/AvenirNextLTPro-Italic.otf -------------------------------------------------------------------------------- /fonts/AvenirNextLTPro-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matchy233/chi-cv-template/252e47e14ed31211a911799a4f40e3d1685ffea2/fonts/AvenirNextLTPro-Regular.otf -------------------------------------------------------------------------------- /fonts/SourceHanSerifCN-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matchy233/chi-cv-template/252e47e14ed31211a911799a4f40e3d1685ffea2/fonts/SourceHanSerifCN-Bold.otf -------------------------------------------------------------------------------- /fonts/SourceHanSerifCN-Heavy.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matchy233/chi-cv-template/252e47e14ed31211a911799a4f40e3d1685ffea2/fonts/SourceHanSerifCN-Heavy.otf -------------------------------------------------------------------------------- /fonts/SourceHanSerifCN-Medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matchy233/chi-cv-template/252e47e14ed31211a911799a4f40e3d1685ffea2/fonts/SourceHanSerifCN-Medium.otf -------------------------------------------------------------------------------- /fonts/SourceHanSerifCN-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matchy233/chi-cv-template/252e47e14ed31211a911799a4f40e3d1685ffea2/fonts/SourceHanSerifCN-Regular.otf -------------------------------------------------------------------------------- /img/chi-cv-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matchy233/chi-cv-template/252e47e14ed31211a911799a4f40e3d1685ffea2/img/chi-cv-preview.png -------------------------------------------------------------------------------- /resume.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matchy233/chi-cv-template/252e47e14ed31211a911799a4f40e3d1685ffea2/resume.pdf -------------------------------------------------------------------------------- /resume.tex: -------------------------------------------------------------------------------- 1 | % !TEX program = xelatex 2 | 3 | \documentclass{chicv} 4 | 5 | % optionally suppress printing the page number 6 | \pagenumbering{gobble} 7 | 8 | % optional Chinese support 9 | % \useChinese{Medium}{Heavy} 10 | % \useChinese{Regular}{Bold} 11 | 12 | \begin{document} 13 | 14 | %% basic personal info 15 | \name{Chi Zhang} 16 | \begin{basicinfo} 17 | \info{\email{skyzh@cmu.edu}} 18 | \info{\homepage{skyzh.dev}[https://skyzh.dev]} 19 | \info{\github{skyzh}[https://github.com/skyzh]} 20 | \info{\linkedinsquare{alex-chi-skyzh}[https://www.linkedin.com/in/alex-chi-skyzh/?originalSubdomain=cn]} 21 | % \phone{} 22 | \end{basicinfo} 23 | 24 | \section{Education} 25 | \cventry{Carnegie Mellon University} 26 | {August 2022 -- December 2023 (Expected)} 27 | [Master of Science in Computer Science] 28 | [Pittsburgh, PA, USA] 29 | \cventry{Shanghai Jiao Tong University} 30 | {September 2018 -- June 2022} 31 | [B.Eng in Computer Science and Technology] 32 | [Shanghai, China] 33 | \begin{itemize} 34 | \item GPA 93.58/100, Rank 1/149, National Scholarship 2019 (Top 0.2\% national-wide) 35 | \item A+ Courses: Operating Systems, Computer Architecture, Computer Networks, and 28 others 36 | % \item 长中文段落测试:「于是我们奋力前进,却如同逆水行舟,注定要不停地退回过去。」——《了不起的盖茨比》菲茨杰拉德 37 | \end{itemize} 38 | 39 | \section{Internship Experience} 40 | 41 | \cventry{Singularity Data, Inc.} 42 | {August 2021 – July 2022} 43 | [Database System R\&D Intern] 44 | [Shanghai, China] 45 | 46 | \begin{itemize} 47 | \item One of the top contributors of \iconlink[\faGithub][RisingWave]{https://github.com/singularity-data/risingwave} — a next-generation streaming database in the cloud. \\ Worked on the development of almost all components related to stream computing and state store. 48 | \item Designed and implemented \textbf{shared state} to support \textbf{streaming index} in RisingWave; implemented \textbf{lookup join executor} based on shared state to support efficient \textbf{index delta joins}. 49 | \item Lead the team to investigate and analyze \textbf{performance issues} in RisingWave with benchmarks; fixed bugs and proposed strategies which improved the system throughput by 10x in a 3-month period. 50 | \item Greatly improved RisingWave’s development experience by initiating the \textbf{developer ecosyste}m, \\including \textbf{streaming system dashboard}, \textbf{developers’ tool} \textit{RiseDev}, and a \textbf{benchmark set-up tool} \\based on Terraform. They are now indispensable parts of everyone’s development process. 51 | \end{itemize} 52 | 53 | \cventry{ByteDance, Ltd.} 54 | {June 2021 – August 2021} 55 | [Storage System R\&D Intern, TerarkDB Team] 56 | [Beijing, China] 57 | 58 | \begin{itemize} 59 | \item Implemented \textbf{Zone-Aware Garbage Collection} in \textbf{TerrakDB} for Zoned Namespace SSDs, which\\ reduced 3-4x of space amplification caused by interleaving write lifetime in a single ZNS zone.\iconlink[\faGithub]{https://github.com/bytedance/terarkdb} 60 | \item Added observability facilities to \textbf{ZenFS} (by Western Digital) to analyze bottlenecks and implemented a \textbf{WAL-Aware Zone Allocator}, which reduced the p999 tail latency by 100x.\iconlink[\faGithub]{https://github.com/bzbd/zenfs} 61 | \end{itemize} 62 | 63 | \cventry{PingCAP, Inc.} 64 | {August 2020 -- January 2021} 65 | [Sotrage System R\&D Intern, TiKV Storage Team][Shanghai, China] 66 | \begin{itemize} 67 | \item Built LSM-based storage engine \textbf{AgateDB} from ground-up. Inspired by WiscKey and BadgerDB, \\AgateDB separates large vallues from LSM tree into value log, so as to reduce write amplification.\iconlink[\faGithub]{https://github.com/tikv/agatedb} 68 | \end{itemize} 69 | 70 | \section{Open-Source Contributions} 71 | 72 | \cventry{cmu-db/bustub} 73 | {Fall 2022} 74 | [Teaching Assistant for 15-445/645 Database Systems] 75 | [\iconlink[\faGithub][cmudb/bustub]{https://github.com/cmu-db/bustub}] 76 | \begin{itemize} 77 | \item Design and implement \textbf{query processing (SQL) layer} (binder, planner, optimizer) for the bustub\\ project and design course projects. 78 | \end{itemize} 79 | 80 | \cventry{RisingLight Community} 81 | {January 2022 -- Now} 82 | [RisingLight Project Maintainer] 83 | [\iconlink[\faGithub][risinglightdb]{https://github.com/risinglightdb}] 84 | \begin{itemize} 85 | \item Leads the development of \textbf{RisingLight}, an OLAP database system for educational purpose. RisingLight is written in Rust, supports simple TPC-H queries, and has a merge-tree based columnar storage. 86 | \end{itemize} 87 | 88 | \cventry{TiKV Community} 89 | {May 2020 -- Now} 90 | [TiKV Maintainer] 91 | [\iconlink[\faGithub][tikv]{https://github.com/tikv}] % TODO: github link 92 | \begin{itemize} 93 | \item Maintains \textbf{TiKV Coprocessor}, the push-down execution framework of TiDB. Mentored community\\ members to contribute features (e.g. new data types, plugin system) in the \textbf{LFX Mentorship}. \iconlink{https://github.com/tikv/tikv/issues/9066}\ \iconlink{https://github.com/tikv/tikv/issues/9747} 94 | \end{itemize} 95 | 96 | \cventry{Personal Projects}{\textbf{4k} followers \iconlink[\faGithub][skyzh]{https://github.com/skyzh}} 97 | \begin{itemize} 98 | \item \textbf{type-exercise-in-rust} (\faIcon[regular]{star}870): 99 | {\small Learn Rust black magics (GAT, HRTB, bypassing compiler bugs, macros) by implementing an expression framework in database systems.\iconlink[\faGithub]{https://github.com/skyzh/type-exercise-in-rust}} 100 | \end{itemize} 101 | 102 | 103 | \section{Skills} 104 | 105 | \begin{compactlist} 106 | \item \textbf{Programming Languages}: Rust, C++, Golang, Python and Node.js 107 | \item \textbf{Tech Skills}: Key-Value Storage Systems, SSD-optimized File Systems, Database Systems, Stream-Processing Systems 108 | \end{compactlist} 109 | 110 | \end{document} 111 | --------------------------------------------------------------------------------