54,302 blogs · [ { "id": "01a08c65-3ee1-725d-9d66-fab188ab7f52", "title": "🎙️ Danny & Sam on the Pyrefly Type Checker", "url": "https://yangdanny97.github.io/blog/2026/06/18/software-engineering-radio", "published_at": "2026-06-18T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab189198999", "title": "Lessons from Pyre that Shaped Pyrefly", "url": "https://yangdanny97.github.io/blog/2026/03/18/lessons-from-pyre", "published_at": "2026-03-18T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab189fab7fb", "title": "Python Typing Spec Conformance", "url": "https://yangdanny97.github.io/blog/2026/03/10/pyrefly-conformance", "published_at": "2026-03-10T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab18a50825f", "title": "Empty Container Inference in Python", "url": "https://yangdanny97.github.io/blog/2026/02/25/pyrefly-inference", "published_at": "2026-02-25T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab18ae9423b", "title": "Making Pyrefly’s Diagnostics 18x Faster", "url": "https://yangdanny97.github.io/blog/2026/02/06/pyrefly-diagnostics", "published_at": "2026-02-06T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab18b1863e4", "title": "Type Narrowing Patterns in Pyrefly", "url": "https://yangdanny97.github.io/blog/2026/01/27/pyrefly-narrowing", "published_at": "2026-01-27T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab18b39d7a2", "title": "Making a Strava-style Heatmap With My Citibike Ride History", "url": "https://yangdanny97.github.io/blog/2026/01/17/citibike-strava-heatmap", "published_at": "2026-01-17T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab18be3b120", "title": "🎙️ Pyrefly: Fast, IDE-friendly typing for Python", "url": "https://yangdanny97.github.io/blog/2025/10/13/talk-python-pyrefly", "published_at": "2025-10-13T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab18c723ec0", "title": "Introducing Pyrefly", "url": "https://yangdanny97.github.io/blog/2025/05/15/introducing-pyrefly", "published_at": "2025-05-15T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab18ca06a5a", "title": "Enhancing the Python ecosystem w/ type checking and free threading", "url": "https://yangdanny97.github.io/blog/2025/05/05/pandas-and-free-threading", "published_at": "2025-05-05T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab18cee3d75", "title": "Investigating Malware on My Fencing Club’s Website", "url": "https://yangdanny97.github.io/blog/2025/04/18/fencing-club-malware", "published_at": "2025-04-18T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab18d16d7c9", "title": "Adopt Your Spot NYC", "url": "https://yangdanny97.github.io/blog/2024/12/20/adopt-your-spot", "published_at": "2024-12-20T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab18d91e1fc", "title": "From Data to Art: Making ‘Rat Revolution’", "url": "https://yangdanny97.github.io/blog/2024/12/16/rat-revolution", "published_at": "2024-12-16T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab18df339fd", "title": "NYC Subway Connectivity", "url": "https://yangdanny97.github.io/blog/2024/11/20/nyc-subway-connectivity", "published_at": "2024-11-20T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab18eab7673", "title": "[Recipe] Chestnut Chicken", "url": "https://yangdanny97.github.io/blog/2024/11/15/chestnut-chicken", "published_at": "2024-11-15T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab18edcac2d", "title": "[Recipe] Samgyetang (Chicken and Ginseng Soup)", "url": "https://yangdanny97.github.io/blog/2024/09/30/samgyetang", "published_at": "2024-09-30T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab18f6d6f98", "title": "[Recipe] Tanin-don ⏱️", "url": "https://yangdanny97.github.io/blog/2024/09/29/tanindon", "published_at": "2024-09-29T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab190498e8f", "title": "Du Bois Challenge - Recreating Historical Data Viz in 2024 using D3.js", "url": "https://yangdanny97.github.io/blog/2024/04/26/dubois-challenge", "published_at": "2024-04-26T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab190972cae", "title": "1 Year of Data Visualization Freelancing", "url": "https://yangdanny97.github.io/blog/2023/12/29/freelancing", "published_at": "2023-12-29T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab19102ec91", "title": "The Right Way To Pipe", "url": "https://yangdanny97.github.io/blog/2023/12/28/pipes", "published_at": "2023-12-28T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab19163a946", "title": "Advent of Code 2023 in Rust", "url": "https://yangdanny97.github.io/blog/2023/12/27/advent-of-code-in-rust", "published_at": "2023-12-27T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab19240a198", "title": "[Recipe] Kelp and Soybean Soup", "url": "https://yangdanny97.github.io/blog/2023/12/24/kelp-soup", "published_at": "2023-12-24T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab1933125b4", "title": "[Recipe] Rice Cooker Hainan Chicken ⏱️", "url": "https://yangdanny97.github.io/blog/2023/12/08/rice-cooker-hainan-chicken", "published_at": "2023-12-08T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab1940f5e58", "title": "[Recipe] Orzo and Vegetable Soup ⏱️", "url": "https://yangdanny97.github.io/blog/2023/12/07/orzo-vegetable-soup", "published_at": "2023-12-07T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab194b1432c", "title": "[Recipe] Shrimp Pasta ⏱️", "url": "https://yangdanny97.github.io/blog/2023/12/06/shrimp-pasta", "published_at": "2023-12-06T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab194b790ca", "title": "[Recipe] Tomato Seaweed Soup ⏱️", "url": "https://yangdanny97.github.io/blog/2023/12/05/tomato-seaweed-soup", "published_at": "2023-12-05T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab1954e38b5", "title": "[Review] W.E.B Dubois’s Data Portraits: Visualizing Black America", "url": "https://yangdanny97.github.io/blog/2023/10/03/dubois-data-portraits", "published_at": "2023-10-03T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab195d1363c", "title": "D3 Circular Bar Chart Tutorial", "url": "https://yangdanny97.github.io/blog/2023/08/06/circular-bar-chart", "published_at": "2023-08-06T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab19676c6d3", "title": "[Recipe] Yakisoba ⏱️", "url": "https://yangdanny97.github.io/blog/2023/07/20/yakisoba", "published_at": "2023-07-20T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab196ad29ab", "title": "[Recipe] Whole Chicken Soup", "url": "https://yangdanny97.github.io/blog/2023/07/19/chicken-soup", "published_at": "2023-07-19T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab196d1200b", "title": "[Recipe] Chicken Feet Soup", "url": "https://yangdanny97.github.io/blog/2023/07/18/chicken-feet-soup", "published_at": "2023-07-18T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab1972c806f", "title": "Compiler Hacking Part 5: Building an LLVM Backend with LLVMLite", "url": "https://yangdanny97.github.io/blog/2023/07/18/chocopy-llvm-backend", "published_at": "2023-07-18T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab198076925", "title": "[Recipe] Tofu Skin/Yuba Salad", "url": "https://yangdanny97.github.io/blog/2023/07/17/tofu-skin-salad", "published_at": "2023-07-17T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab1984d7f05", "title": "[Recipe] Winter Melon Soup", "url": "https://yangdanny97.github.io/blog/2023/07/16/winter-melon-soup", "published_at": "2023-07-16T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab1985ccad4", "title": "[Recipe] Mung Bean Porridge", "url": "https://yangdanny97.github.io/blog/2023/07/15/mung-bean-porridge", "published_at": "2023-07-15T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab199265b2e", "title": "[Recipe] Daikon Soup", "url": "https://yangdanny97.github.io/blog/2023/07/14/daikon-soup", "published_at": "2023-07-14T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab1996327c9", "title": "[Recipe] Corn, Carrots, and Pork Rib Soup", "url": "https://yangdanny97.github.io/blog/2023/07/13/corn-carrot-pork-rib-soup", "published_at": "2023-07-13T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab1998a61f4", "title": "[Recipe] Dried Vegetable and Almond Soup", "url": "https://yangdanny97.github.io/blog/2023/07/12/dried-vegetable-almond-soup", "published_at": "2023-07-12T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab19a1fe479", "title": "[Recipe] Water Chestnut Soup", "url": "https://yangdanny97.github.io/blog/2023/07/11/water-chestnut-soup", "published_at": "2023-07-11T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab19ab3d293", "title": "[Recipe] Egg Drop Soup ⏱️", "url": "https://yangdanny97.github.io/blog/2023/07/10/egg-drop-soup", "published_at": "2023-07-10T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab19abb2074", "title": "[Recipe] Fish Bone Miso Soup", "url": "https://yangdanny97.github.io/blog/2023/07/09/fish-bone-miso-soup", "published_at": "2023-07-09T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab19ac9dd46", "title": "Reflections on Writing My First Book", "url": "https://yangdanny97.github.io/blog/2023/06/12/publishing-a-book", "published_at": "2023-06-12T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab19bc60714", "title": "Bartender/Barista Media", "url": "https://yangdanny97.github.io/blog/2023/06/11/bartender-barista-media", "published_at": "2023-06-11T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab19c32c374", "title": "Tufte in D3", "url": "https://yangdanny97.github.io/blog/2023/03/23/tufte-in-D3", "published_at": "2023-03-23T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab19d02bc6d", "title": "Advent of Code 2022 in Erlang", "url": "https://yangdanny97.github.io/blog/2022/12/27/advent-of-code-in-erlang", "published_at": "2022-12-27T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab19d07f752", "title": "Compiler Hacking Part 4: Building a WASM Backend", "url": "https://yangdanny97.github.io/blog/2022/10/11/chocopy-wasm-backend", "published_at": "2022-10-11T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab19d15fb7a", "title": "ReScript Tutorial: Learn ReScript in Y Minutes", "url": "https://yangdanny97.github.io/blog/2022/09/14/rescript-tutorial", "published_at": "2022-09-14T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab19dc3cc57", "title": "Scratching the PL Itch", "url": "https://yangdanny97.github.io/blog/2022/09/03/scratching-the-pl-itch", "published_at": "2022-09-03T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab19e31e299", "title": "D3.js Resources: Tutorials, Tools, and References", "url": "https://yangdanny97.github.io/blog/2022/08/07/d3-resources", "published_at": "2022-08-07T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab19eb2a452", "title": "Compiler Hacking Part 3: Building a CIL Backend", "url": "https://yangdanny97.github.io/blog/2022/05/22/chocopy-cil-backend", "published_at": "2022-05-22T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab19ebbd20e", "title": "Introduction to D3.js", "url": "https://yangdanny97.github.io/blog/2021/09/06/intro-to-d3", "published_at": "2021-09-06T00:00:00+00:00" }, { "id": "01a08c65-3ee1-725d-9d66-fab19efb3863", "title": "Compiler Hacking Part 2: Building a JVM Backend", "url": "https://yangdanny97.github.io/blog/2021/08/26/chocopy-jvm-backend", "published_at": "2021-08-26T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b76192540389", "title": "Rewriting a Project in ReScript", "url": "https://yangdanny97.github.io/blog/2021/07/09/Migrating-to-Rescript", "published_at": "2021-07-09T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b76192b158ba", "title": "Elevation Contour Plots With D3", "url": "https://yangdanny97.github.io/blog/2020/11/26/D3-elevations", "published_at": "2020-11-26T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b761936aaf86", "title": "Guide to Writing Polyglot Compiler Extensions", "url": "https://yangdanny97.github.io/blog/2020/07/23/polyglot2", "published_at": "2020-07-23T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b76193b4cf0b", "title": "[Recipe] Impossible Bolognese", "url": "https://yangdanny97.github.io/blog/2020/07/16/bolognese", "published_at": "2020-07-16T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b761940e094d", "title": "My Experience Working With Polyglot (Extensible Compiler Framework)", "url": "https://yangdanny97.github.io/blog/2020/07/15/polyglot", "published_at": "2020-07-15T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b761946b0221", "title": "Compiler Hacking Part 1: Building a compiler frontend in Python", "url": "https://yangdanny97.github.io/blog/2020/05/29/chocopy-typechecker", "published_at": "2020-05-29T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b761949a9b93", "title": "Building a Dashboard using Vega - Tutorial", "url": "https://yangdanny97.github.io/blog/2020/05/07/vega-covid-dashboard-tutorial", "published_at": "2020-05-07T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b761950de1e3", "title": "Building a Course Recommender System", "url": "https://yangdanny97.github.io/blog/2020/05/02/course-recommender-system", "published_at": "2020-05-02T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b7619581f882", "title": "Folsom Biking Trails", "url": "https://yangdanny97.github.io/blog/2020/04/17/folsom-trails", "published_at": "2020-04-17T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b76196520da0", "title": "[Recipe] Pan-Fried Pork Chops", "url": "https://yangdanny97.github.io/blog/2020/04/17/pork-chops", "published_at": "2020-04-17T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b761970368c9", "title": "Recreating the 5 Years of Drought Visualization", "url": "https://yangdanny97.github.io/blog/2020/01/02/drought-map", "published_at": "2020-01-02T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b761977548d9", "title": "[Recipe] Mapo Tofu ⏱️", "url": "https://yangdanny97.github.io/blog/2019/11/20/mapo-tofu", "published_at": "2019-11-20T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b76198428130", "title": "[Recipe] Pork Belly Noodles ⏱️", "url": "https://yangdanny97.github.io/blog/2019/11/12/pork-belly-noodles", "published_at": "2019-11-12T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b761990e1e47", "title": "Scrutinizing Datasets", "url": "https://yangdanny97.github.io/blog/2019/11/11/scrutinizing-datasets", "published_at": "2019-11-11T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b7619a0bd933", "title": "[Recipe] Beef Bulgogi", "url": "https://yangdanny97.github.io/blog/2019/10/27/bulgogi", "published_at": "2019-10-27T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b7619a14b301", "title": "[Recipe] Tomato and Egg ⏱️", "url": "https://yangdanny97.github.io/blog/2019/10/26/tomato-egg", "published_at": "2019-10-26T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b7619a7faca6", "title": "Mapping San Francisco Building Ages Using D3", "url": "https://yangdanny97.github.io/blog/2019/08/25/D3-Mapping-SF-Building-Ages", "published_at": "2019-08-25T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b7619afa444b", "title": "Mapmaking with D3: Tips and Common Pitfalls", "url": "https://yangdanny97.github.io/blog/2019/08/24/D3-Mapmaking-Tips", "published_at": "2019-08-24T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b7619bde3bfb", "title": "Review: Bose QC-35 vs Sony WH-1000xM2", "url": "https://yangdanny97.github.io/blog/2019/06/16/Headphones", "published_at": "2019-06-16T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b7619cbc62d4", "title": "Reflections on Cornell’s Undergrad Compilers Practicum (pt 2)", "url": "https://yangdanny97.github.io/blog/2019/05/26/compilers-2", "published_at": "2019-05-26T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b7619d3902a4", "title": "A Brief Explanation of Capture-Avoiding Substitution", "url": "https://yangdanny97.github.io/blog/2019/05/25/capture-avoiding-substitution", "published_at": "2019-05-25T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b7619d762a70", "title": "How MOSS Works", "url": "https://yangdanny97.github.io/blog/2019/05/03/MOSS", "published_at": "2019-05-03T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b7619ddaed88", "title": "A Week in Paris", "url": "https://yangdanny97.github.io/blog/2019/04/14/Paris", "published_at": "2019-04-14T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b7619e03eeed", "title": "Reflections on Cornell’s Undergrad Compilers Practicum (pt 1)", "url": "https://yangdanny97.github.io/blog/2019/03/19/Compilers-1", "published_at": "2019-03-19T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b7619e950663", "title": "D3 Spider Chart Tutorial", "url": "https://yangdanny97.github.io/blog/2019/03/01/D3-Spider-Chart", "published_at": "2019-03-01T00:00:00+00:00" }, { "id": "01a08c65-3ee2-71e7-bc96-b7619eab633a", "title": "How Perceptrons Work", "url": "https://yangdanny97.github.io/blog/2019/02/28/Perceptrons", "published_at": "2019-02-28T00:00:00+00:00" } ] posts Claim your blog
Back to yangdanny97.github.io
Blog · corpus.blog/blogs/yangdanny97.github.io/posts

yangdanny97.github.io

yangdanny97.github.io

2026

2025

2024

2023

2022

2021

2020

2019