<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Software on Hugh Zheng's website</title><link>https://yuzh98.github.io/software/</link><description>Recent content in Software on Hugh Zheng's website</description><generator>Hugo</generator><language>en</language><managingEditor>hugh.stats@gmail.com (Hugh Zheng)</managingEditor><webMaster>hugh.stats@gmail.com (Hugh Zheng)</webMaster><lastBuildDate>Mon, 26 Oct 2026 13:00:00 -0400</lastBuildDate><atom:link href="https://yuzh98.github.io/software/index.xml" rel="self" type="application/rss+xml"/><item><title>latex2arxiv</title><link>https://yuzh98.github.io/software/latex2arxiv/</link><pubDate>Wed, 20 May 2026 12:00:00 -0400</pubDate><author>hugh.stats@gmail.com (Hugh Zheng)</author><guid>https://yuzh98.github.io/software/latex2arxiv/</guid><description>&lt;blockquote>
&lt;p>Open-source · &lt;a href="https://github.com/YuZh98/latex2arxiv" target="_blank" rel="noopener noreffer ">github.com/YuZh98/latex2arxiv&lt;/a>&lt;/p>&lt;/blockquote>
&lt;p>&lt;a href="https://pypi.org/project/latex2arxiv/" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/pypi/v/latex2arxiv.svg"
 data-srcset="https://img.shields.io/pypi/v/latex2arxiv.svg, https://img.shields.io/pypi/v/latex2arxiv.svg 1.5x, https://img.shields.io/pypi/v/latex2arxiv.svg 2x"
 data-sizes="auto"
 alt="https://img.shields.io/pypi/v/latex2arxiv.svg"
 title="PyPI" />&lt;/a>
&lt;a href="https://pepy.tech/project/latex2arxiv" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://static.pepy.tech/badge/latex2arxiv"
 data-srcset="https://static.pepy.tech/badge/latex2arxiv, https://static.pepy.tech/badge/latex2arxiv 1.5x, https://static.pepy.tech/badge/latex2arxiv 2x"
 data-sizes="auto"
 alt="https://static.pepy.tech/badge/latex2arxiv"
 title="Downloads" />&lt;/a>
&lt;a href="https://github.com/YuZh98/latex2arxiv/actions/workflows/test.yml" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://github.com/YuZh98/latex2arxiv/actions/workflows/test.yml/badge.svg"
 data-srcset="https://github.com/YuZh98/latex2arxiv/actions/workflows/test.yml/badge.svg, https://github.com/YuZh98/latex2arxiv/actions/workflows/test.yml/badge.svg 1.5x, https://github.com/YuZh98/latex2arxiv/actions/workflows/test.yml/badge.svg 2x"
 data-sizes="auto"
 alt="https://github.com/YuZh98/latex2arxiv/actions/workflows/test.yml/badge.svg"
 title="Tests" />&lt;/a>
&lt;a href="https://github.com/YuZh98/homebrew-latex2arxiv" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/homebrew-tap-orange?logo=homebrew&amp;amp;logoColor=white"
 data-srcset="https://img.shields.io/badge/homebrew-tap-orange?logo=homebrew&amp;amp;logoColor=white, https://img.shields.io/badge/homebrew-tap-orange?logo=homebrew&amp;amp;logoColor=white 1.5x, https://img.shields.io/badge/homebrew-tap-orange?logo=homebrew&amp;amp;logoColor=white 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/homebrew-tap-orange?logo=homebrew&amp;amp;logoColor=white"
 title="Homebrew" />&lt;/a>
&lt;a href="https://marketplace.visualstudio.com/items?itemName=YuZh98.latex2arxiv" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://vsmarketplacebadges.dev/version-short/YuZh98.latex2arxiv.svg?label=VS%20Code&amp;amp;logo=visualstudiocode"
 data-srcset="https://vsmarketplacebadges.dev/version-short/YuZh98.latex2arxiv.svg?label=VS%20Code&amp;amp;logo=visualstudiocode, https://vsmarketplacebadges.dev/version-short/YuZh98.latex2arxiv.svg?label=VS%20Code&amp;amp;logo=visualstudiocode 1.5x, https://vsmarketplacebadges.dev/version-short/YuZh98.latex2arxiv.svg?label=VS%20Code&amp;amp;logo=visualstudiocode 2x"
 data-sizes="auto"
 alt="https://vsmarketplacebadges.dev/version-short/YuZh98.latex2arxiv.svg?label=VS%20Code&amp;amp;logo=visualstudiocode"
 title="VS Code" />&lt;/a>
&lt;a href="https://github.com/YuZh98/latex2arxiv/blob/main/materials/mcp.md" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/MCP-server-8A2BE2"
 data-srcset="https://img.shields.io/badge/MCP-server-8A2BE2, https://img.shields.io/badge/MCP-server-8A2BE2 1.5x, https://img.shields.io/badge/MCP-server-8A2BE2 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/MCP-server-8A2BE2"
 title="MCP" />&lt;/a>
&lt;a href="https://chromewebstore.google.com/detail/latex2arxiv-for-overleaf/oeaoajmhcmlgdbeacnpkcofodekkpeab" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/chrome-web-store/v/oeaoajmhcmlgdbeacnpkcofodekkpeab?label=Chrome&amp;amp;logo=googlechrome&amp;amp;logoColor=white"
 data-srcset="https://img.shields.io/chrome-web-store/v/oeaoajmhcmlgdbeacnpkcofodekkpeab?label=Chrome&amp;amp;logo=googlechrome&amp;amp;logoColor=white, https://img.shields.io/chrome-web-store/v/oeaoajmhcmlgdbeacnpkcofodekkpeab?label=Chrome&amp;amp;logo=googlechrome&amp;amp;logoColor=white 1.5x, https://img.shields.io/chrome-web-store/v/oeaoajmhcmlgdbeacnpkcofodekkpeab?label=Chrome&amp;amp;logo=googlechrome&amp;amp;logoColor=white 2x"
 data-sizes="auto"
 alt="https://img.shields.io/chrome-web-store/v/oeaoajmhcmlgdbeacnpkcofodekkpeab?label=Chrome&amp;amp;logo=googlechrome&amp;amp;logoColor=white"
 title="Chrome Web Store" />&lt;/a>&lt;/p></description></item><item><title>Combinatorial Regression</title><link>https://yuzh98.github.io/software/combinatorial-regression/</link><pubDate>Wed, 20 May 2026 12:00:00 -0400</pubDate><author>hugh.stats@gmail.com (Hugh Zheng)</author><guid>https://yuzh98.github.io/software/combinatorial-regression/</guid><description>&lt;blockquote>
&lt;p>Open-source · &lt;a href="https://github.com/YuZh98/combinatorial-regression" target="_blank" rel="noopener noreffer ">github.com/YuZh98/combinatorial-regression&lt;/a>&lt;/p>&lt;/blockquote>
&lt;p>&lt;a href="https://github.com/YuZh98/combinatorial-regression/blob/main/LICENSE" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/github/license/YuZh98/combinatorial-regression"
 data-srcset="https://img.shields.io/github/license/YuZh98/combinatorial-regression, https://img.shields.io/github/license/YuZh98/combinatorial-regression 1.5x, https://img.shields.io/github/license/YuZh98/combinatorial-regression 2x"
 data-sizes="auto"
 alt="https://img.shields.io/github/license/YuZh98/combinatorial-regression"
 title="License" />&lt;/a>&lt;/p>
&lt;p>Reproducibility code for the paper &lt;em>Statistical Modeling of Combinatorial Response Data&lt;/em>. Includes the MH-within-Gibbs sampler, kernel comparison experiments, and waterfowl matching data analysis.&lt;/p>
&lt;hr>
&lt;h2 id="quick-start">Quick Start&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Sanity check&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">make smoke
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">make probit_smoke
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Main simulation study (MH-within-Gibbs)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">make full
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Kernel comparison (supplementary)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">make kernel_compare
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Data analysis (waterfowl matching)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">make duck_full &lt;span class="c1"># full model&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">make duck_reduced &lt;span class="c1"># reduced model&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="simulation-study">Simulation study&lt;/h2>
&lt;p>The default &lt;code>make full&lt;/code> runs both exponential and half-Gaussian kernels. To run only the main-paper kernel:&lt;/p></description></item><item><title>combreg</title><link>https://yuzh98.github.io/software/combreg/</link><pubDate>Sun, 19 Jul 2026 00:01:00 -0400</pubDate><author>hugh.stats@gmail.com (Hugh Zheng)</author><guid>https://yuzh98.github.io/software/combreg/</guid><description>&lt;blockquote>
&lt;p>Open-source · &lt;a href="https://github.com/YuZh98/combreg" target="_blank" rel="noopener noreffer ">github.com/YuZh98/combreg&lt;/a>&lt;/p>&lt;/blockquote>
&lt;h1 id="combreg">combreg&lt;/h1>
&lt;!-- badges: start -->
&lt;p>&lt;a href="https://CRAN.R-project.org/package=combreg" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://www.r-pkg.org/badges/version/combreg"
 data-srcset="https://www.r-pkg.org/badges/version/combreg, https://www.r-pkg.org/badges/version/combreg 1.5x, https://www.r-pkg.org/badges/version/combreg 2x"
 data-sizes="auto"
 alt="https://www.r-pkg.org/badges/version/combreg"
 title="CRAN status" />&lt;/a>
&lt;a href="https://github.com/YuZh98/combreg/actions/workflows/R-CMD-check.yaml" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://github.com/YuZh98/combreg/actions/workflows/R-CMD-check.yaml/badge.svg"
 data-srcset="https://github.com/YuZh98/combreg/actions/workflows/R-CMD-check.yaml/badge.svg, https://github.com/YuZh98/combreg/actions/workflows/R-CMD-check.yaml/badge.svg 1.5x, https://github.com/YuZh98/combreg/actions/workflows/R-CMD-check.yaml/badge.svg 2x"
 data-sizes="auto"
 alt="https://github.com/YuZh98/combreg/actions/workflows/R-CMD-check.yaml/badge.svg"
 title="R-CMD-check" />&lt;/a>
&lt;a href="https://lifecycle.r-lib.org/articles/stages.html#experimental" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/lifecycle-experimental-orange.svg"
 data-srcset="https://img.shields.io/badge/lifecycle-experimental-orange.svg, https://img.shields.io/badge/lifecycle-experimental-orange.svg 1.5x, https://img.shields.io/badge/lifecycle-experimental-orange.svg 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/lifecycle-experimental-orange.svg"
 title="Lifecycle: experimental" />&lt;/a>
&lt;a href="https://opensource.org/licenses/MIT" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/License-MIT-yellow.svg"
 data-srcset="https://img.shields.io/badge/License-MIT-yellow.svg, https://img.shields.io/badge/License-MIT-yellow.svg 1.5x, https://img.shields.io/badge/License-MIT-yellow.svg 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/License-MIT-yellow.svg"
 title="License: MIT" />&lt;/a>&lt;/p>
&lt;!-- badges: end -->
&lt;p>Bayesian regression for &lt;strong>combinatorial response data&lt;/strong>: each response is a
binary vector constrained to an integral polytope,
$\mathcal{Y} = {,y \in {0,1}^d : A y \le b,}$. Ignoring the
constraint and fitting an unconstrained model leads to biased estimation, and enumerating all feasible outcomes is computationally impractical in high-dimensional settings. In &lt;a href="https://doi.org/10.1080/01621459.2026.2714575" target="_blank" rel="noopener noreffer ">Zheng, Ghosh &amp;amp; Duan (2026)&lt;/a>, an augmented likelihood that respects the combinatorial constraints is proposed, along with a Metropolis–Hastings-within-Gibbs (MH-Within-Gibbs) sampler that scales to high-dimensional problems.&lt;/p></description></item><item><title>Anti-correlation Gaussian Data Augmentation</title><link>https://yuzh98.github.io/software/anti-correlation-gaussian/</link><pubDate>Wed, 20 May 2026 12:00:00 -0400</pubDate><author>hugh.stats@gmail.com (Hugh Zheng)</author><guid>https://yuzh98.github.io/software/anti-correlation-gaussian/</guid><description>&lt;blockquote>
&lt;p>Open-source · &lt;a href="https://github.com/YuZh98/Anti-correlation-Gaussian" target="_blank" rel="noopener noreffer ">github.com/YuZh98/Anti-correlation-Gaussian&lt;/a>&lt;/p>&lt;/blockquote>
&lt;p>&lt;a href="https://github.com/YuZh98/Anti-correlation-Gaussian/blob/main/LICENSE" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/License-MIT-yellow.svg"
 data-srcset="https://img.shields.io/badge/License-MIT-yellow.svg, https://img.shields.io/badge/License-MIT-yellow.svg 1.5x, https://img.shields.io/badge/License-MIT-yellow.svg 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/License-MIT-yellow.svg"
 title="License: MIT" />&lt;/a>
&lt;a href="https://www.r-project.org/" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/R-%e2%89%a54.0-blue"
 data-srcset="https://img.shields.io/badge/R-%e2%89%a54.0-blue, https://img.shields.io/badge/R-%e2%89%a54.0-blue 1.5x, https://img.shields.io/badge/R-%e2%89%a54.0-blue 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/R-≥4.0-blue"
 title="R ≥ 4.0" />&lt;/a>&lt;/p>
&lt;p>Code accompanying the paper &lt;a href="https://arxiv.org/abs/2309.09371" target="_blank" rel="noopener noreffer ">&lt;em>Gibbs Sampling using Anti-correlation Gaussian Data Augmentation, with Applications to L1-ball-type Models&lt;/em>&lt;/a>.&lt;/p>
&lt;hr>
&lt;h2 id="files">Files&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>File&lt;/th>
 &lt;th>Purpose&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>SourceCode.R&lt;/code>&lt;/td>
 &lt;td>&lt;code>l1ball.linreg(X, y, ...)&lt;/code>: blocked Gibbs sampler for the L1-ball-prior linear regression model using the anti-correlation Gaussian data-augmentation step&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>SliceSampler.R&lt;/code>&lt;/td>
 &lt;td>Scalar and directional slice samplers (Neal, 2003). Used to update κ; can be sourced standalone&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>LinearReg.R&lt;/code>&lt;/td>
 &lt;td>Toy variable-selection demo (&lt;code>n = 300&lt;/code>, &lt;code>p = 500&lt;/code>) producing estimation, trace, and ACF plots&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>TruncatedMVN.R&lt;/code>&lt;/td>
 &lt;td>Extension of the anti-correlation trick to sampling a multivariate normal truncated to a box, plus a 2-D demo&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>tests/test_samplers.R&lt;/code>&lt;/td>
 &lt;td>Smoke + correctness tests&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="quick-start">Quick start&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-r" data-lang="r">&lt;span class="line">&lt;span class="cl">&lt;span class="nf">source&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;SliceSampler.R&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nf">source&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;SourceCode.R&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nf">set.seed&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">n&lt;/span> &lt;span class="o">&amp;lt;-&lt;/span> &lt;span class="m">100&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">p&lt;/span> &lt;span class="o">&amp;lt;-&lt;/span> &lt;span class="m">20&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">X&lt;/span> &lt;span class="o">&amp;lt;-&lt;/span> &lt;span class="nf">matrix&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nf">rnorm&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">p&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">p&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">beta_true&lt;/span> &lt;span class="o">&amp;lt;-&lt;/span> &lt;span class="nf">c&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nf">rep&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="m">5&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="nf">rep&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">p&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="m">5&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">y&lt;/span> &lt;span class="o">&amp;lt;-&lt;/span> &lt;span class="nf">as.numeric&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">X&lt;/span> &lt;span class="o">%*%&lt;/span> &lt;span class="n">beta_true&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="nf">rnorm&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">fit&lt;/span> &lt;span class="o">&amp;lt;-&lt;/span> &lt;span class="nf">l1ball.linreg&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">X&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">y&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">steps&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="m">4000&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">burnin&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="m">2000&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">thin&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="m">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">init_method&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s">&amp;#34;random&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">verbose&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="kc">FALSE&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nf">round&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">fit&lt;/span>&lt;span class="o">$&lt;/span>&lt;span class="n">theta.est&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="m">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>To reproduce the paper&amp;rsquo;s linear-regression figures:&lt;/p></description></item><item><title>aldous-broder-lean</title><link>https://yuzh98.github.io/software/aldous-broder-lean/</link><pubDate>Mon, 26 Oct 2026 13:00:00 -0400</pubDate><author>hugh.stats@gmail.com (Hugh Zheng)</author><guid>https://yuzh98.github.io/software/aldous-broder-lean/</guid><description>&lt;blockquote>
&lt;p>Open-source · &lt;a href="https://github.com/YuZh98/aldous-broder-lean" target="_blank" rel="noopener noreffer ">github.com/YuZh98/aldous-broder-lean&lt;/a>&lt;/p>&lt;/blockquote>
&lt;p>&lt;a href="https://github.com/YuZh98/aldous-broder-lean/actions/workflows/ci.yml" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://github.com/YuZh98/aldous-broder-lean/actions/workflows/ci.yml/badge.svg"
 data-srcset="https://github.com/YuZh98/aldous-broder-lean/actions/workflows/ci.yml/badge.svg, https://github.com/YuZh98/aldous-broder-lean/actions/workflows/ci.yml/badge.svg 1.5x, https://github.com/YuZh98/aldous-broder-lean/actions/workflows/ci.yml/badge.svg 2x"
 data-sizes="auto"
 alt="https://github.com/YuZh98/aldous-broder-lean/actions/workflows/ci.yml/badge.svg"
 title="CI" />&lt;/a> &lt;a href="https://github.com/YuZh98/aldous-broder-lean/blob/main/lean-toolchain" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/Lean-4-blue"
 data-srcset="https://img.shields.io/badge/Lean-4-blue, https://img.shields.io/badge/Lean-4-blue 1.5x, https://img.shields.io/badge/Lean-4-blue 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/Lean-4-blue"
 title="Lean 4" />&lt;/a> &lt;a href="https://github.com/YuZh98/aldous-broder-lean/blob/main/lake-manifest.json" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/mathlib-v4.30.0-blue"
 data-srcset="https://img.shields.io/badge/mathlib-v4.30.0-blue, https://img.shields.io/badge/mathlib-v4.30.0-blue 1.5x, https://img.shields.io/badge/mathlib-v4.30.0-blue 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/mathlib-v4.30.0-blue"
 title="mathlib" />&lt;/a> &lt;a href="https://github.com/YuZh98/aldous-broder-lean/blob/main/LICENSE" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/License-Apache_2.0-blue.svg"
 data-srcset="https://img.shields.io/badge/License-Apache_2.0-blue.svg, https://img.shields.io/badge/License-Apache_2.0-blue.svg 1.5x, https://img.shields.io/badge/License-Apache_2.0-blue.svg 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/License-Apache_2.0-blue.svg"
 title="License: Apache 2.0" />&lt;/a>&lt;/p>
&lt;p>Machine-checked proofs of the main results of my paper &lt;a href="https://arxiv.org/abs/2610.13063" target="_blank" rel="noopener noreffer ">&lt;em>The Order Mass Identity of Rooted Forests, with a Direct Proof of the Extended Aldous–Broder Theorem&lt;/em>&lt;/a> (arXiv:2610.13063, 2026). To my knowledge, this is the first machine-checked proof of the Aldous–Broder theorem.&lt;/p></description></item><item><title>latex2ufdissertation</title><link>https://yuzh98.github.io/software/latex2ufdissertation/</link><pubDate>Wed, 20 May 2026 12:00:00 -0400</pubDate><author>hugh.stats@gmail.com (Hugh Zheng)</author><guid>https://yuzh98.github.io/software/latex2ufdissertation/</guid><description>&lt;blockquote>
&lt;p>Open-source · &lt;a href="https://github.com/YuZh98/latex2ufdissertation" target="_blank" rel="noopener noreffer ">github.com/YuZh98/latex2ufdissertation&lt;/a>&lt;/p>&lt;/blockquote>
&lt;p>&lt;a href="https://github.com/YuZh98/latex2ufdissertation/actions/workflows/ci.yml" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://github.com/YuZh98/latex2ufdissertation/actions/workflows/ci.yml/badge.svg?branch=main"
 data-srcset="https://github.com/YuZh98/latex2ufdissertation/actions/workflows/ci.yml/badge.svg?branch=main, https://github.com/YuZh98/latex2ufdissertation/actions/workflows/ci.yml/badge.svg?branch=main 1.5x, https://github.com/YuZh98/latex2ufdissertation/actions/workflows/ci.yml/badge.svg?branch=main 2x"
 data-sizes="auto"
 alt="https://github.com/YuZh98/latex2ufdissertation/actions/workflows/ci.yml/badge.svg?branch=main"
 title="CI" />&lt;/a>
&lt;a href="https://github.com/YuZh98/latex2ufdissertation/blob/main/LICENSE" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/License-MIT-yellow.svg"
 data-srcset="https://img.shields.io/badge/License-MIT-yellow.svg, https://img.shields.io/badge/License-MIT-yellow.svg 1.5x, https://img.shields.io/badge/License-MIT-yellow.svg 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/License-MIT-yellow.svg"
 title="License: MIT" />&lt;/a>
&lt;a href="https://www.python.org/downloads/" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/python-3.10%2B-blue.svg"
 data-srcset="https://img.shields.io/badge/python-3.10%2B-blue.svg, https://img.shields.io/badge/python-3.10%2B-blue.svg 1.5x, https://img.shields.io/badge/python-3.10%2B-blue.svg 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/python-3.10%2B-blue.svg"
 title="Python: 3.10&amp;#43;" />&lt;/a>&lt;/p>
&lt;p>A safety-net validator for UF doctoral dissertations using the Fall 2025+ University of Florida LaTeX template. Given a project archive, project directory, git URL, or compiled PDF, it produces a severity-tiered report citing the originating UF rule for each finding — one more pair of eyes before clicking submit.&lt;/p></description></item><item><title>NoteBuilder</title><link>https://yuzh98.github.io/software/notebuilder/</link><pubDate>Mon, 26 Oct 2026 12:00:00 -0400</pubDate><author>hugh.stats@gmail.com (Hugh Zheng)</author><guid>https://yuzh98.github.io/software/notebuilder/</guid><description>&lt;blockquote>
&lt;p>Open-source · &lt;a href="https://github.com/YuZh98/notebuilder" target="_blank" rel="noopener noreffer ">github.com/YuZh98/notebuilder&lt;/a>&lt;/p>&lt;/blockquote>
&lt;p>Study material that does something. Build notebooks from reactive cards, drill them in Study mode, and hand them to anyone as a single offline file.&lt;/p>
&lt;p>&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://raw.githubusercontent.com/YuZh98/notebuilder/main/docs/screenshots/v0.2.0/study-live.png"
 data-srcset="https://raw.githubusercontent.com/YuZh98/notebuilder/main/docs/screenshots/v0.2.0/study-live.png, https://raw.githubusercontent.com/YuZh98/notebuilder/main/docs/screenshots/v0.2.0/study-live.png 1.5x, https://raw.githubusercontent.com/YuZh98/notebuilder/main/docs/screenshots/v0.2.0/study-live.png 2x"
 data-sizes="auto"
 alt="https://raw.githubusercontent.com/YuZh98/notebuilder/main/docs/screenshots/v0.2.0/study-live.png"
 title="NoteBuilder Study mode: two sliders drive computed values, live prose, and a growth chart in one card" />&lt;/p>
&lt;p>&lt;a href="https://github.com/YuZh98/notebuilder/actions/workflows/ci.yml" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://github.com/YuZh98/notebuilder/actions/workflows/ci.yml/badge.svg?branch=main"
 data-srcset="https://github.com/YuZh98/notebuilder/actions/workflows/ci.yml/badge.svg?branch=main, https://github.com/YuZh98/notebuilder/actions/workflows/ci.yml/badge.svg?branch=main 1.5x, https://github.com/YuZh98/notebuilder/actions/workflows/ci.yml/badge.svg?branch=main 2x"
 data-sizes="auto"
 alt="https://github.com/YuZh98/notebuilder/actions/workflows/ci.yml/badge.svg?branch=main"
 title="CI" />&lt;/a> &lt;a href="https://github.com/YuZh98/notebuilder/tree/main/v2" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/tests-2718-brightgreen"
 data-srcset="https://img.shields.io/badge/tests-2718-brightgreen, https://img.shields.io/badge/tests-2718-brightgreen 1.5x, https://img.shields.io/badge/tests-2718-brightgreen 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/tests-2718-brightgreen"
 title="Tests" />&lt;/a> &lt;a href="https://github.com/YuZh98/notebuilder/blob/main/v2/package.json" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/Svelte-5-FF3E00?logo=svelte&amp;amp;logoColor=white"
 data-srcset="https://img.shields.io/badge/Svelte-5-FF3E00?logo=svelte&amp;amp;logoColor=white, https://img.shields.io/badge/Svelte-5-FF3E00?logo=svelte&amp;amp;logoColor=white 1.5x, https://img.shields.io/badge/Svelte-5-FF3E00?logo=svelte&amp;amp;logoColor=white 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/Svelte-5-FF3E00?logo=svelte&amp;amp;logoColor=white"
 title="Svelte 5" />&lt;/a> &lt;a href="https://github.com/YuZh98/notebuilder/tree/main/v2/src-tauri" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/Tauri-2-24C8DB?logo=tauri&amp;amp;logoColor=white"
 data-srcset="https://img.shields.io/badge/Tauri-2-24C8DB?logo=tauri&amp;amp;logoColor=white, https://img.shields.io/badge/Tauri-2-24C8DB?logo=tauri&amp;amp;logoColor=white 1.5x, https://img.shields.io/badge/Tauri-2-24C8DB?logo=tauri&amp;amp;logoColor=white 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/Tauri-2-24C8DB?logo=tauri&amp;amp;logoColor=white"
 title="Tauri 2" />&lt;/a> &lt;a href="https://github.com/YuZh98/notebuilder/releases/latest" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/platform-macOS-black?logo=apple"
 data-srcset="https://img.shields.io/badge/platform-macOS-black?logo=apple, https://img.shields.io/badge/platform-macOS-black?logo=apple 1.5x, https://img.shields.io/badge/platform-macOS-black?logo=apple 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/platform-macOS-black?logo=apple"
 title="macOS" />&lt;/a> &lt;a href="https://github.com/YuZh98/notebuilder/blob/main/LICENSE" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/License-MIT-yellow.svg"
 data-srcset="https://img.shields.io/badge/License-MIT-yellow.svg, https://img.shields.io/badge/License-MIT-yellow.svg 1.5x, https://img.shields.io/badge/License-MIT-yellow.svg 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/License-MIT-yellow.svg"
 title="License: MIT" />&lt;/a>&lt;/p></description></item><item><title>RecVAE — Recurrent 3D-Conv VAE for fMRI</title><link>https://yuzh98.github.io/software/vae-fmri-alzheimer/</link><pubDate>Wed, 20 May 2026 12:00:00 -0400</pubDate><author>hugh.stats@gmail.com (Hugh Zheng)</author><guid>https://yuzh98.github.io/software/vae-fmri-alzheimer/</guid><description>&lt;blockquote>
&lt;p>Open-source · &lt;a href="https://github.com/YuZh98/VAE-fMRI-Alzheimer" target="_blank" rel="noopener noreffer ">github.com/YuZh98/VAE-fMRI-Alzheimer&lt;/a>&lt;/p>&lt;/blockquote>
&lt;p>&lt;a href="https://github.com/YuZh98/VAE-fMRI-Alzheimer/actions/workflows/tutorials.yml" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://github.com/YuZh98/VAE-fMRI-Alzheimer/actions/workflows/tutorials.yml/badge.svg"
 data-srcset="https://github.com/YuZh98/VAE-fMRI-Alzheimer/actions/workflows/tutorials.yml/badge.svg, https://github.com/YuZh98/VAE-fMRI-Alzheimer/actions/workflows/tutorials.yml/badge.svg 1.5x, https://github.com/YuZh98/VAE-fMRI-Alzheimer/actions/workflows/tutorials.yml/badge.svg 2x"
 data-sizes="auto"
 alt="https://github.com/YuZh98/VAE-fMRI-Alzheimer/actions/workflows/tutorials.yml/badge.svg"
 title="CI" />&lt;/a>
&lt;a href="https://github.com/YuZh98/VAE-fMRI-Alzheimer/blob/main/LICENSE" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/license-Apache--2.0-blue"
 data-srcset="https://img.shields.io/badge/license-Apache--2.0-blue, https://img.shields.io/badge/license-Apache--2.0-blue 1.5x, https://img.shields.io/badge/license-Apache--2.0-blue 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/license-Apache--2.0-blue"
 title="License: Apache-2.0" />&lt;/a>
&lt;a href="https://www.python.org/" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/python-3.9%2B-blue"
 data-srcset="https://img.shields.io/badge/python-3.9%2B-blue, https://img.shields.io/badge/python-3.9%2B-blue 1.5x, https://img.shields.io/badge/python-3.9%2B-blue 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/python-3.9%2B-blue"
 title="Python ≥3.9" />&lt;/a>
&lt;a href="https://pytorch.org/" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/pytorch-2.0%2B-ee4c2c"
 data-srcset="https://img.shields.io/badge/pytorch-2.0%2B-ee4c2c, https://img.shields.io/badge/pytorch-2.0%2B-ee4c2c 1.5x, https://img.shields.io/badge/pytorch-2.0%2B-ee4c2c 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/pytorch-2.0%2B-ee4c2c"
 title="PyTorch ≥2.0" />&lt;/a>
&lt;a href="https://colab.research.google.com/github/YuZh98/VAE-fMRI-Alzheimer/blob/main/notebooks/RecVAE_on_synthetic.ipynb" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://colab.research.google.com/assets/colab-badge.svg"
 data-srcset="https://colab.research.google.com/assets/colab-badge.svg, https://colab.research.google.com/assets/colab-badge.svg 1.5x, https://colab.research.google.com/assets/colab-badge.svg 2x"
 data-sizes="auto"
 alt="https://colab.research.google.com/assets/colab-badge.svg"
 title="Open in Colab" />&lt;/a>&lt;/p>
&lt;p>&lt;strong>A recurrent 3D-conv VAE for resting-state fMRI volumes&lt;/strong>, in the same family as Kim et al. (2021) but with a linear latent transition solved in closed form by ridge regression rather than learned by SGD. Ships with a synthetic data path so you can run it without ADNI access; every example fits on a laptop CPU.&lt;/p></description></item><item><title>Academic Application Tracker</title><link>https://yuzh98.github.io/software/academic-application-tracker/</link><pubDate>Wed, 20 May 2026 12:00:00 -0400</pubDate><author>hugh.stats@gmail.com (Hugh Zheng)</author><guid>https://yuzh98.github.io/software/academic-application-tracker/</guid><description>&lt;blockquote>
&lt;p>Open-source · &lt;a href="https://github.com/YuZh98/academic-application-tracker" target="_blank" rel="noopener noreffer ">github.com/YuZh98/academic-application-tracker&lt;/a>&lt;/p>&lt;/blockquote>
&lt;p>A local Streamlit dashboard that answers one question every morning: &lt;strong>&amp;ldquo;What do I do today?&amp;rdquo;&lt;/strong>&lt;/p>
&lt;p>Track dozens of postdoc, PhD, faculty, and fellowship applications in parallel — deadlines, recommendation letters, materials checklists, interview rounds — without a single missed follow-up.&lt;/p>
&lt;p>&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://raw.githubusercontent.com/YuZh98/academic-application-tracker/main/docs/ui/screenshots/v0.14.0/collage.png"
 data-srcset="https://raw.githubusercontent.com/YuZh98/academic-application-tracker/main/docs/ui/screenshots/v0.14.0/collage.png, https://raw.githubusercontent.com/YuZh98/academic-application-tracker/main/docs/ui/screenshots/v0.14.0/collage.png 1.5x, https://raw.githubusercontent.com/YuZh98/academic-application-tracker/main/docs/ui/screenshots/v0.14.0/collage.png 2x"
 data-sizes="auto"
 alt="https://raw.githubusercontent.com/YuZh98/academic-application-tracker/main/docs/ui/screenshots/v0.14.0/collage.png"
 title="Academic Application Tracker" />&lt;/p>
&lt;p>&lt;a href="https://github.com/YuZh98/academic-application-tracker/actions/workflows/ci.yml" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://github.com/YuZh98/academic-application-tracker/actions/workflows/ci.yml/badge.svg?branch=main"
 data-srcset="https://github.com/YuZh98/academic-application-tracker/actions/workflows/ci.yml/badge.svg?branch=main, https://github.com/YuZh98/academic-application-tracker/actions/workflows/ci.yml/badge.svg?branch=main 1.5x, https://github.com/YuZh98/academic-application-tracker/actions/workflows/ci.yml/badge.svg?branch=main 2x"
 data-sizes="auto"
 alt="https://github.com/YuZh98/academic-application-tracker/actions/workflows/ci.yml/badge.svg?branch=main"
 title="CI" />&lt;/a> &lt;a href="https://academic-application-tracker.streamlit.app" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/demo-live-E63946?style=flat-square"
 data-srcset="https://img.shields.io/badge/demo-live-E63946?style=flat-square, https://img.shields.io/badge/demo-live-E63946?style=flat-square 1.5x, https://img.shields.io/badge/demo-live-E63946?style=flat-square 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/demo-live-E63946?style=flat-square"
 title="Live demo" />&lt;/a> &lt;a href="https://github.com/YuZh98/academic-application-tracker/blob/main/pyproject.toml" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/python-3.11%E2%80%933.14-blue"
 data-srcset="https://img.shields.io/badge/python-3.11%E2%80%933.14-blue, https://img.shields.io/badge/python-3.11%E2%80%933.14-blue 1.5x, https://img.shields.io/badge/python-3.11%E2%80%933.14-blue 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/python-3.11%E2%80%933.14-blue"
 title="Python" />&lt;/a> &lt;a href="https://github.com/YuZh98/academic-application-tracker/blob/main/pyproject.toml" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/coverage-95%25-brightgreen"
 data-srcset="https://img.shields.io/badge/coverage-95%25-brightgreen, https://img.shields.io/badge/coverage-95%25-brightgreen 1.5x, https://img.shields.io/badge/coverage-95%25-brightgreen 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/coverage-95%25-brightgreen"
 title="Coverage" />&lt;/a> &lt;a href="https://github.com/YuZh98/academic-application-tracker/blob/main/LICENSE" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/License-MIT-yellow.svg"
 data-srcset="https://img.shields.io/badge/License-MIT-yellow.svg, https://img.shields.io/badge/License-MIT-yellow.svg 1.5x, https://img.shields.io/badge/License-MIT-yellow.svg 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/License-MIT-yellow.svg"
 title="License: MIT" />&lt;/a>&lt;/p></description></item><item><title>Quant Prep Terminal</title><link>https://yuzh98.github.io/software/quant-prep-terminal/</link><pubDate>Tue, 02 Jun 2026 12:00:00 -0400</pubDate><author>hugh.stats@gmail.com (Hugh Zheng)</author><guid>https://yuzh98.github.io/software/quant-prep-terminal/</guid><description>&lt;blockquote>
&lt;p>Open-source · &lt;a href="https://github.com/YuZh98/quant-prep-terminal" target="_blank" rel="noopener noreffer ">github.com/YuZh98/quant-prep-terminal&lt;/a>&lt;/p>&lt;/blockquote>
&lt;p>Everything you need to prepare for a quantitative-finance interview, packed into one HTML file: cheatsheets, flashcards, and a small lab where you can build an option position and watch its payoff in real time. No install, no sign-up — open it and study.&lt;/p>
&lt;p>&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://raw.githubusercontent.com/YuZh98/quant-prep-terminal/main/docs/01-hero.png"
 data-srcset="https://raw.githubusercontent.com/YuZh98/quant-prep-terminal/main/docs/01-hero.png, https://raw.githubusercontent.com/YuZh98/quant-prep-terminal/main/docs/01-hero.png 1.5x, https://raw.githubusercontent.com/YuZh98/quant-prep-terminal/main/docs/01-hero.png 2x"
 data-sizes="auto"
 alt="https://raw.githubusercontent.com/YuZh98/quant-prep-terminal/main/docs/01-hero.png"
 title="Quant Prep Terminal — home" />&lt;/p>
&lt;p>&lt;a href="https://yuzh98.github.io/quant-prep-terminal/" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/demo-live-27ff9e?style=flat-square"
 data-srcset="https://img.shields.io/badge/demo-live-27ff9e?style=flat-square, https://img.shields.io/badge/demo-live-27ff9e?style=flat-square 1.5x, https://img.shields.io/badge/demo-live-27ff9e?style=flat-square 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/demo-live-27ff9e?style=flat-square"
 title="Live demo" />&lt;/a> &lt;a href="https://github.com/YuZh98/quant-prep-terminal/blob/main/LICENSE" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/License-CC%20BY--NC%204.0-ff2d95?style=flat-square"
 data-srcset="https://img.shields.io/badge/License-CC%20BY--NC%204.0-ff2d95?style=flat-square, https://img.shields.io/badge/License-CC%20BY--NC%204.0-ff2d95?style=flat-square 1.5x, https://img.shields.io/badge/License-CC%20BY--NC%204.0-ff2d95?style=flat-square 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/License-CC%20BY--NC%204.0-ff2d95?style=flat-square"
 title="License: CC BY-NC 4.0" />&lt;/a> &lt;a href="https://github.com/YuZh98/quant-prep-terminal/blob/main/index.html" target="_blank" rel="noopener noreffer ">&lt;img
 class="lazyload"
 src="https://yuzh98.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/badge/build-none%20%c2%b7%20one%20HTML%20file-19e6ff?style=flat-square"
 data-srcset="https://img.shields.io/badge/build-none%20%c2%b7%20one%20HTML%20file-19e6ff?style=flat-square, https://img.shields.io/badge/build-none%20%c2%b7%20one%20HTML%20file-19e6ff?style=flat-square 1.5x, https://img.shields.io/badge/build-none%20%c2%b7%20one%20HTML%20file-19e6ff?style=flat-square 2x"
 data-sizes="auto"
 alt="https://img.shields.io/badge/build-none%20·%20one%20HTML%20file-19e6ff?style=flat-square"
 title="Single file" />&lt;/a>&lt;/p></description></item></channel></rss>