1<!DOCTYPE html> 2<html lang="en" dir="ltr"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>Joshua Yang</title><link rel="stylesheet" href="/static/site/styles/new-styles.css"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Newsreader:opsz,[email protected],400;6..72,500;6..72,600&family=Source+Sans+3:wght@400;600&display=swap"/><link rel="stylesheet" href="/static/site/styles/pi-theme.css"/><link rel="icon" type="image/svg+xml" href="/static/site/media/images/Icons/favicon.svg"/><link rel="alternate icon" href="/static/site/media/images/Icons/favicon.ico"/><link rel="stylesheet" href="/static/site/_astro/blog-post.css"/><link href="./component-bbc3f7c0.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="./component-e427079e.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="./component-34bdfded.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="./component-788c9ca3.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="./component-274a3dfe.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="./component-94cb6c84.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="./component-58d5ff56.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="./component-7262b5a7.css" rel="stylesheet" type="text/css" data-persist="true"/><link href="./static/resource-style-a5c806d2.css" rel="stylesheet" type="text/css" data-persist="true"/><link rel="stylesheet" href="/static/site/quartz-bridge.css"/>
2<script src="./prescript-e3b0c442.js" type="application/javascript" data-persist="true"></script>
2<script type="application/javascript" data-persist="true">const fetchData = fetch("./static/contentIndex.json").then(data => data.json())</script>
2</head><body class="with-sidebar" data-slug="index" data-basepath><div id="mouse-trailer"></div><aside class="site-sidebar" aria-label="Sidebar"><nav class="sidebar-section" aria-label="Blog links"><h3 class="sidebar-title">blog</h3><p class="sidebar-note"><em><a href="https://www.swyx.io/learn-in-public" target="_blank" rel="noreferrer">learning in public</a> is good â keeping</em><br/><em> myself accountable by documenting the process every month.</em></p><ul class="sidebar-list"><li class="sidebar-item"><a href="/deep-learning/policy-optimization-methods-in-reinforcement-learning"><span class="sidebar-link-title">Policy Optimization Methods in Reinforcement Learning</span><span class="sidebar-link-date">2026-02-12</span></a></li><li class="sidebar-item"><a href="/deep-learning/ddpm---denoising-diffusion-probabilistic-models"><span class="sidebar-link-title">DDPM - Denoising Diffusion Probabilistic Models</span><span class="sidebar-link-date">2026-01-01</span></a></li><li class="sidebar-item"><a href="/deep-learning/vae---variational-auto-encoder"><span class="sidebar-link-title">VAE - Variational Auto Encoder</span><span class="sidebar-link-date">2025-12-30</span></a></li><li class="sidebar-item sidebar-item-muted"><a href="/blog">all posts â</a></li></ul></nav><nav class="sidebar-section" aria-label="Connect links"><h3 class="sidebar-title">connect with me!</h3><ul class="sidebar-list connect-list"><li class="sidebar-item"><a href="https://twitter.com/realjoshuayang" target="_blank" rel="noreferrer"><img class="icon" src="/static/site/media/icons/twitter.svg" alt/> @realjoshuayang</a></li><li class="sidebar-item"><a href="https://github.com/joshuayanggithub" target="_blank" rel="noreferrer"><img class="icon" src="/static/site/media/icons/github.svg" alt/> GitHub</a></li><li class="sidebar-item"><a href="https://linkedin.com/in/thejoshuayang" target="_blank" rel="noreferrer"><img class="icon" src="/static/site/media/icons/linkedin.png" alt/> LinkedIn</a></li><li class="sidebar-item"><a href="mailto:[email protected]" class="email-link"><img class="icon" src="/static/site/media/icons/email.svg" alt/> <span class="email-text" data-email="[email protected]"></span></a></li></ul></nav></aside><header><nav class="site-nav" aria-label="Site"><span></span><span class="site-nav-links"><a href="/blog">blog</a></span></nav><p class="last-updated">last updated: <span id="last-commit-date">loading...</span></p><h1>Joshua Yang</h1></header><main><section id="about"><h3>about</h3><p>I study CS at CMU, with a focus in ML. Generally interested in many things, including generative models and their underlying theory; reinforcement learning; foundation models in language and robotics and their connections.</p><p><span class="highlight-red">Connect with me!</span> Always eager to chat and talk about the latest research/news. Share some stuff you're working on, or others' work you find interesting : )</p></section><section id="projects" class="show-selected"><h3>projects</h3><div class="project-filters" role="tablist" aria-label="Project filter"><button type="button" class="project-filter is-active" data-filter="selected" role="tab" aria-selected="true">selected</button><button type="button" class="project-filter" data-filter="all" role="tab" aria-selected="false">all</button></div><div class="project-item is-selected is-featured"><div class="project-year">2026</div><div class="project-content"><video src="/static/site/media/demos/coinrun.mp4" class="project-media" autoplay loop muted playsinline></video><div class="project-text"><span class="project-title">CoinRun World Model</span><span class="project-description">Built a training pipeline for a world model of the 2D platformer CoinRun (an RL benchmark). I downsized <a href="https://oasis-model.github.io/" target="_blank" rel="noreferrer">Oasis</a>'s Minecraft world-model architecture: a spatiotemporal DiT conditioned on keyboard actions via AdaLN-style conditioning, and on prior context frames (including the initial prompt frame), which generates video frames with <a href="https://arxiv.org/abs/2010.02502" target="_blank" rel="noreferrer">DDIM</a> in pixel space, autoregressively (<a href="https://arxiv.org/abs/2407.01392" target="_blank" rel="noreferrer">diffusion forcing</a>). I also ran a scaling analysis over toy model sizes from 5M to 58M parameters on a log-log scale.</span><span class="project-links"><a href="https://github.com/joshuayanggithub/coinrun" target="_blank" rel="noreferrer">github</a></span></div></div></div><div class="project-item is-selected"><div class="project-year">2025</div><div class="project-content"><video src="/static/site/media/demos/cloth-folding-sim-card.mp4" class="project-media" autoplay loop muted playsinline></video><div class="project-text"><span class="project-title">Real2Sim and Real2Sim2Real Cloth Folding</span><span class="project-description"><span class="project-questions">1. How does varying simulation data fidelity affect sim2real performance?<br/>2. How can next-generation (differentiable) physics simulation data be leveraged for post-training policies?</sp
2an>Built a real2sim pipeline in <a href="https://github.com/newton-physics/newton" target="_blank" rel="noreferrer">NVIDIA Newton</a>, with domain randomization (varying cloth meshes, physics engine solvers, and the cloth's stiffness, damping and particle size, etc.) to generate ~10K <a href="https://arxiv.org/abs/2210.09347" target="_blank" rel="noreferrer">heuristic-based</a> cloth-folding demonstrations for downstream policies: imitation-learning paradigms like diffusion policy, or post-training foundation models. Also explored a real2sim2real pipeline by developing hardware drivers and infrastructure for creating a digital twin from teleop â sim.</span></div></div></div><div class="project-item"><div class="project-year"></div><div class="project-content"><img src="/static/site/media/demos/Diffusion.png" alt="Diffusion demo" class="project-media"/><div class="project-text"><span class="project-title">Image Generation</span><span class="project-description">Implemented DDPM/DDIM with CFG and VAE encoding trained with UNet on ImageNet-100 with 8xH100s on PSC. Also tried VAE reconstruction on faces.</span></div></div></div><div class="project-item is-selected"><div class="project-year"></div><div class="project-content"><video src="/static/site/media/demos/clothfoldingdemo.mp4" class="project-media" autoplay loop muted playsinline></video><div class="project-text"><span class="project-title">Household Robot</span><span class="project-description">Finetuned VLA (Ï0.5, SmolVLA) on cloth folding tasks, succeeding almost 100% of time on trained tasks - pretraining allows robot to adapt to disruptions/mistakes as well.</span></div></div></div><div class="project-item"><div class="project-year">2024</div><div class="project-content"><img src="/static/site/media/demos/slam.png" alt="SLAM demo" class="project-media"/><div class="project-text"><span class="project-title">SLAM Robot</span><span class="project-description">Implemented differential drive controller, EKF, sensor fusion, and 2D LiDAR SLAM in ROS2 Humble - simulated in Gazebo. </span></div></div></div><div class="project-item"><div class="project-year">2023</div><div class="project-content"><img src="/static/site/media/demos/compverse.png" alt="Compverse demo" class="project-media"/><div class="project-text"><span class="project-title">STEM Competition Web App</span><span class="project-description">Designed and built a multiplayer web app for lobbies and competing against players in science bowl/mathcounts Countdown games in real-time before agentic IDEs existed. </span></div></div></div><div class="project-item"><div class="project-year"></div><div class="project-content"><img src="/static/site/media/demos/9919.png" alt="FRC 7419 Robot" class="project-media"/><div class="project-text"><span class="project-title">FRC 7419 (9919) ChargedUp Robot</span><span class="project-description">Led the design, fabrication, assembly, and programming of a) omnidirectional drivetrain b) lowered center of gravity c) lower four-bar arm linkage for FRC 7419's offseason "ChargedUp" Robot - This year's game aimed to pick-and-place cube balloons and traffic cones in versatile positions.</span></div></div></div><div class="project-item"><div class="project-year"></div><div class="project-content"><img src="/static/site/media/demos/fpv.JPG" alt="FPV Drone" class="project-media"/><div class="project-text"><span class="project-title">Quadcopter FPV Drone</span><span class="project-description">A simple wiring, assembly, and installation for a quadcopter FPV drone.</span></div></div></div></section></main><footer><p>© 2026 Joshua Yang</p><section id="visitors"><div class="map-widget" id="map-container"></div></section></footer>
2<script> 3 document.querySelectorAll(".quartz-right .graph-container").forEach(function (container) { 4 var zoom = parseFloat(container.getAttribute("data-zoom") || "") || 1.8; 5 new MutationObserver(function (_, observer) { 6 var canvas = container.querySelector("canvas"); 7 if (!canvas) return; 8 observer.disconnect(); 9 setTimeout(function () { 10 var r = canvas.getBoundingClientRect(); 11 canvas.dispatchEvent(new WheelEvent("wheel", { 12 deltaY: -Math.log2(zoom) / 0.002, deltaMode: 0, 13 clientX: r.left + r.width / 2, clientY: r.top + r.height / 2, bubbles: true, cancelable: true 14 })); 15 }, 60); 16 }).observe(container, { childList: true, subtree: true }); 17 }); 18</script>
18<script src="/static/site/new-script.js"></script>
18<script> 19 window.MathJax = { 20 tex: { 21 inlineMath: [['$', '$'], ['\\(', '\\)']], 22 displayMath: [['$$', '$$'], ['\\[', '\\]']], 23 processEscapes: true, 24 macros: { 25 cancel: ['\\enclose{updiagonalstrike}{#1}', 1], 26 bcancel: ['\\enclose{downdiagonalstrike}{#1}', 1], 27 xcancel: ['\\enclose{updiagonalstrike,downdiagonalstrike}{#1}', 1], 28 boldsymbol: ['\\pmb{#1}', 1], 29 bm: ['\\pmb{#1}', 1] 30 } 31 }, 32 options: { 33 enableMenu: true 34 } 35 }; 36 </script>
36<script id="MathJax-script" src="https://cdn.jsdelivr.net/npm/[email protected]/es5/tex-chtml.js"></script>
36<script src="./static/resource-after-e13fffa1.js" type="application/javascript" data-persist="true"></script>
36<script src="./static/resource-after-8b336f9a.js" type="application/javascript" data-persist="true"></script>
36<script src="./static/resource-after-baba652b.js" type="application/javascript" data-persist="true"></script>
36<script src="./postscript-c4972f6d.js" type="module" data-persist="true"></script>
36</body></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.