PageSourceSearch

https://ypei.org/index.html

html ypei.org collected 2026-10-10 02:20:23 UTC 11,321 bytes, 270 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4<!-- 2025-04-27 Sun 09:28 -->
5<meta charset="utf-8" />
6<meta name="viewport" content="width=device-width, initial-scale=1" />
7<title>Yuchen Pei</title>
8<meta name="author" content="Yuchen Pei" />
9<meta name="generator" content="Org Mode" />
10<style>
11  #content { max-width: 60em; margin: auto; }
12  .title  { text-align: center;
13             margin-bottom: .2em; }
14  .subtitle { text-align: center;
15              font-size: medium;
16              font-weight: bold;
17              margin-top:0; }
18  .todo   { font-family: monospace; color: red; }
19  .done   { font-family: monospace; color: green; }
20  .priority { font-family: monospace; color: orange; }
21  .tag    { background-color: #eee; font-family: monospace;
22            padding: 2px; font-size: 80%; font-weight: normal; }
23  .timestamp { color: #bebebe; }
24  .timestamp-kwd { color: #5f9ea0; }
25  .org-right  { margin-left: auto; margin-right: 0px;  text-align: right; }
26  .org-left   { margin-left: 0px;  margin-right: auto; text-align: left; }
27  .org-center { margin-left: auto; margin-right: auto; text-align: center; }
28  .underline { text-decoration: underline; }
29  #postamble p, #preamble p { font-size: 90%; margin: .2em; }
30  p.verse { margin-left: 3%; }
31  pre {
32    border: 1px solid #e6e6e6;
33    border-radius: 3px;
34    background-color: #f2f2f2;
35    padding: 8pt;
36    font-family: monospace;
37    overflow: auto;
38    margin: 1.2em;
39  }
40  pre.src {
41    position: relative;
42    overflow: auto;
43  }
44  pre.src:before {
45    display: none;
46    position: absolute;
47    top: -8px;
48    right: 12px;
49    padding: 3px;
50    color: #555;
51    background-color: #f2f2f299;
52  }
53  pre.src:hover:before { display: inline; margin-top: 14px;}
54  /* Languages per Org manual */
55  pre.src-asymptote:before { content: 'Asymptote'; }
56  pre.src-awk:before { content: 'Awk'; }
57  pre.src-authinfo::before { content: 'Authinfo'; }
58  pre.src-C:before { content: 'C'; }
59  /* pre.src-C++ doesn't work in CSS */
60  pre.src-clojure:before { content: 'Clojure'; }
61  pre.src-css:before { content: 'CSS'; }
62  pre.src-D:before { content: 'D'; }
63  pre.src-ditaa:before { content: 'ditaa'; }
64  pre.src-dot:before { content: 'Graphviz'; }
65  pre.src-calc:before { content: 'Emacs Calc'; }
66  pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
67  pre.src-fortran:before { content: 'Fortran'; }
68  pre.src-gnuplot:before { content: 'gnuplot'; }
69  pre.src-haskell:before { content: 'Haskell'; }
70  pre.src-hledger:before { content: 'hledger'; }
71  pre.src-java:before { content: 'Java'; }
72  pre.src-js:before { content: 'Javascript'; }
73  pre.src-latex:before { content: 'LaTeX'; }
74  pre.src-ledger:before { content: 'Ledger'; }
75  pre.src-lisp:before { content: 'Lisp'; }
76  pre.src-lilypond:before { content: 'Lilypond'; }
77  pre.src-lua:before { content: 'Lua'; }
78  pre.src-matlab:before { content: 'MATLAB'; }
79  pre.src-mscgen:before { content: 'Mscgen'; }
80  pre.src-ocaml:before { content: 'Objective Caml'; }
81  pre.src-octave:before { content: 'Octave'; }
82  pre.src-org:before { content: 'Org mode'; }
83  pre.src-oz:before { content: 'OZ'; }
84  pre.src-plantuml:before { content: 'Plantuml'; }
85  pre.src-processing:before { content: 'Processing.js'; }
86  pre.src-python:before { content: 'Python'; }
87  pre.src-R:before { content: 'R'; }
88  pre.src-ruby:before { content: 'Ruby'; }
89  pre.src-sass:before { content: 'Sass'; }
90  pre.src-scheme:before { content: 'Scheme'; }
91  pre.src-screen:before { content: 'Gnu Screen'; }
92  pre.src-sed:before { content: 'Sed'; }
93  pre.src-sh:before { content: 'shell'; }
94  pre.src-sql:before { content: 'SQL'; }
95  pre.src-sqlite:before { content: 'SQLite'; }
96  /* additional languages in org.el's org-babel-load-languages alist */
97  pre.src-forth:before { content: 'Forth'; }
98  pre.src-io:before { content: 'IO'; }
99  pre.src-J:before { content: 'J'; }
100  pre.src-makefile:before { content: 'Makefile'; }
101  pre.src-maxima:before { content: 'Maxima'; }
102  pre.src-perl:before { content: 'Perl'; }
103  pre.src-picolisp:before { content: 'Pico Lisp'; }
104  pre.src-scala:before { content: 'Scala'; }
105  pre.src-shell:before { content: 'Shell Script'; }
106  pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
107  /* additional language identifiers per "defun org-babel-execute"
108       in ob-*.el */
109  pre.src-cpp:before  { content: 'C++'; }
110  pre.src-abc:before  { content: 'ABC'; }
111  pre.src-coq:before  { content: 'Coq'; }
112  pre.src-groovy:before  { content: 'Groovy'; }
113  /* additional language identifiers from org-babel-shell-names in
114     ob-shell.el: ob-shell is the only babel language using a lambda to put
115     the execution function name together. */
116  pre.src-bash:before  { content: 'bash'; }
117  pre.src-csh:before  { content: 'csh'; }
118  pre.src-ash:before  { content: 'ash'; }
119  pre.src-dash:before  { content: 'dash'; }
120  pre.src-ksh:before  { content: 'ksh'; }
121  pre.src-mksh:before  { content: 'mksh'; }
122  pre.src-posh:before  { content: 'posh'; }
123  /* Additional Emacs modes also supported by the LaTeX listings package */
124  pre.src-ada:before { content: 'Ada'; }
125  pre.src-asm:before { content: 'Assembler'; }
126  pre.src-caml:before { content: 'Caml'; }
127  pre.src-delphi:before { content: 'Delphi'; }
128  pre.src-html:before { content: 'HTML'; }
129  pre.src-idl:before { content: 'IDL'; }
130  pre.src-mercury:before { content: 'Mercury'; }
131  pre.src-metapost:before { content: 'MetaPost'; }
132  pre.src-modula-2:before { content: 'Modula-2'; }
133  pre.src-pascal:before { content: 'Pascal'; }
134  pre.src-ps:before { content: 'PostScript'; }
135  pre.src-prolog:before { content: 'Prolog'; }
136  pre.src-simula:before { content: 'Simula'; }
137  pre.src-tcl:before { content: 'tcl'; }
138  pre.src-tex:before { content: 'TeX'; }
139  pre.src-plain-tex:before { content: 'Plain TeX'; }
140  pre.src-verilog:before { content: 'Verilog'; }
141  pre.src-vhdl:before { content: 'VHDL'; }
142  pre.src-xml:before { content: 'XML'; }
143  pre.src-nxml:before { content: 'XML'; }
144  /* add a generic configuration mode; LaTeX export needs an additional
145     (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
146  pre.src-conf:before { content: 'Configuration File'; }
147
148  table { border-collapse:collapse; }
149  caption.t-above { caption-side: top; }
150  caption.t-bottom { caption-side: bottom; }
151  td, th { vertical-align:top;  }
152  th.org-right  { text-align: center;  }
153  th.org-left   { text-align: center;   }
154  th.org-center { text-align: center; }
155  td.org-right  { text-align: right;  }
156  td.org-left   { text-align: left;   }
157  td.org-center { text-align: center; }
158  dt { font-weight: bold; }
159  .footpara { display: inline; }
160  .footdef  { margin-bottom: 1em; }
161  .figure { padding: 1em; }
162  .figure p { text-align: center; }
163  .equation-container {
164    display: table;
165    text-align: center;
166    width: 100%;
167  }
168  .equation {
169    vertical-align: middle;
170  }
171  .equation-label {
172    display: table-cell;
173    text-align: right;
174    vertical-align: middle;
175  }
176  .inlinetask {
177    padding: 10px;
178    border: 2px solid gray;
179    margin: 10px;
180    background: #ffffcc;
181  }
182  #org-div-home-and-up
183   { text-align: right; font-size: 70%; white-space: nowrap; }
184  textarea { overflow-x: auto; }
185  .linenr { font-size: smaller }
186  .code-highlighted { background-color: #ffff00; }
187  .org-info-js_info-navigation { border-style: none; }
188  #org-info-js_console-label
189    { font-size: 10px; font-weight: bold; white-space: nowrap; }
190  .org-info-js_search-highlight
191    { background-color: #ffff00; color: #000000; font-weight: bold; }
192  .org-svg { }
193</style>
194<link rel='stylesheet' href='../css/default.css' type='text/css'/>
195                     <link rel='stylesheet' href='../css/page.css' type='text/css'/>
196                     <link rel='alternate' title="Yuchen's blog" href='/blog-feed.xml' type='application/rss+xml'>
197                     <link rel='alternate' title="Yuchen's microblog" href='/microblog-feed.xml' type='application/rss+xml'>
198</head>
199<body>
200<div id="preamble" class="status">
201<nav>
202  <span id="logo">
203    <a href="/index.html">About</a>
204  </span>
205  <span id="menu">
206    <a href="/blog.html">Blog</a><a href="/microblog.html">Microblog</a><a href="https://g.ypei.me">Projects (git)</a>
207  </span>
208</nav>
209</div>
210<div id="content" class="content">
211<h1 class="title">Yuchen Pei</h1>
212<p>
213Hello! I am Yuchen. You have reached my personal website.
214</p>
215
216<p>
217I am a programmer, mathematician and free software advocate.
218</p>
219
220<p>
221I did a PhD in Mathematics and Statistics at the <a href="https://warwick.ac.uk/fac/sci/masdoc">MASDOC program at
222Warwick</a>, and spent some years in postdoc positions at <a href="http://cmsa.fas.harvard.edu">CMSA at Harvard</a>
223and the <a href="https://www.math.kth.se/RMSMA/">KTH RMSMA group</a>. My research was on probability and algebraic
224combinatorics.
225</p>
226
227<p>
228Since leaving academia I have been mainly working as a computer
229programmer. In my personal capacity I enjoy writing Emacs packages,
230and you can find many of them on <a href="https://g.ypei.me/">my cgit instance</a>.
231</p>
232
233<p>
234As a free software advocate, I am an associate member and licensing
235volunteer of the <a href="https://fsf.org">Free Software Foundation</a>, and a maintainer of <a href="https://www.gnu.org/software/librejs/">GNU
236LibreJS</a> and <a href="https://h-node.org">h-node.org</a>. In my past academic life I also applied the
237philosophy of free software to knowledge and research. For example I
238shared my research in Robinson-Schensted algorithms as a <a href="https://toywiki.xyz">wiki</a> under a
239free Creative Commons license. I believe anyone can be an academic,
240seeking truth and sharing their findings with the public.
241</p>
242
243<p>
244I can be reached at: &#105;&#100;&#64;&#121;&#112;&#101;&#105;&#46;&#111;&#114;&#103; (PGP key: <a href="/assets/ypei-pubkey.txt">47F9 D050 1E11
2458879 9040 4941 2126 7E93 EF86 DFD0</a>).
246</p>
247
248<p>
249Views expressed on this website do not represent any organisations I
250belong to or associate with, past, present or future.
251</p>
252</div>
253<div id="postamble" class="status">
254<footer>
255  <div>
256    <a href="https://www.gnu.org/"><img src="/assets/gnu-linux-banner.png" title="Powered by GNU/Linux"/></a>
257    <a href="https://www.gnu.org/savannah-checkouts/gnu/emacs/emacs.html"><img src="/assets/Emacs-logo.svg" title="Edited with GNU Emacs"/></a>
258    <a href="https://orgmode.org/manual/Publishing.html"><img src="/assets/Org-mode-unicorn.svg" title="Made with Org Mode"/></a>
259    <a href="https://www.gnu.org/software/librejs/free-your-javascript.html"><img src="/assets/LibreJS_icon.png" title="LibreJS-compliant"/></a>
260    <a href="/blog-feed.xml"><img src="/assets/feed-icon.svg" title="Blog Feed"/></a>
261    <a href="/microblog-feed.xml"><img src="/assets/feed-icon.svg" title="Microblog Feed"/></a>
262    <a href="https://creativecommons.org/licenses/by-sa/4.0/"><img src="/assets/CC-BY-SA.svg" title="Licensed under CC BY-SA 4.0"/></a>
263    <a href="https://www.gnu.org/licenses/fdl-1.3.html"><img src="/assets/gfdl-logo-med.png" title="Licensed under GFDLv1.3+"/></a>
264    <a href="https://commons.wikimedia.org/wiki/File:Copying_is_not_theft.ogv"><img src="/assets/Anti_pirate_icon.png" title="Anti-piracy notice: please do not attack ships when browsing this website! (h/t: lxo)"/></a>
265  </div>
266  <div><a href="/weblabels.html" rel="jslicense">JavaScript license information</a></div>
267</footer>
268</div>
269</body>
270</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.