{
    "componentChunkName": "component---src-templates-post-js",
    "path": "/blog/vibe-coding-baseball",
    "result": {"data":{"markdownRemark":{"html":"<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 700px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/d7c1324a15eaf9b306fb46fce33f8bbc/0b1d8/vibe-coding-baseball.jpg\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 64%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'256\\'%20viewBox=\\'0%200%20400%20256\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'m0%206%201%206v2a667%20667%200%200%200%200%2085l-1%2044v43h3l11-2a403%20403%200%200%201%2042-7l3-1%204-3c1-3%203-4%203-3l4-2a76%2076%200%200%201%2016-13l1-1c1%200%202-1%202-3%200-3%200-3%201-1s4%203%205%201l3-1c9-1%2011-2%2011-7%200-3-1-5-3-6h-8l-3%201c-3%200-8%203-14%209l-5%204c-1-1%206-8%2011-11l6-5c1-2%209-2%2014%201%202%200%202%200%202-6l-1-8v-4c3-2%205%201%203%205l-1%208c0%205%200%205%205%2010%204%205%2010%209%2013%2010l1-7a324%20324%200%200%200%201-24l1%2015%201%2016%201-2%201%201c1%201%201%201%201-2v-8c-1-2-1-3%201-4s4%202%202%203v10l1-1%201-2%201-2%201-8%201-6v5c0%205%202%209%202%204%200-2%200-2%201-1s1%201%201-1v-1c1%201%201%200%202-3l1-3c1%201%203-2%202-3l1-1%201-1%202-2v-1l1-1h1l1-3%202-3v-1l2%201h3c5-2%203-8-3-6-2%200-2%200-2-2l1-2%201%201%203%201c3%200%203-1%203-5l-2-6-2-2-1-1-1%201-2%203c-2%201-2%201-2-2l4-8%206-13-1-1c-2%200-3%200-2-1l-1-1-2%202c0%202-2%203-2%201s-4-3-8-2h-6c-3%200-3%200-2%201%202%202%200%206-3%206-2%200-4-5-2-6v-2l-2-1-3-2c-2%200-2%200-1%202l2%202-17-9c-7-4-9-5-8-2l-1%203v1c2%200%203%201%201%203-3%202-6%200-6-4-1-3-1-3-1%201%200%206-2%207-2%202%200-3%200-3-1-2h-2c-1-1-1-1-1%201h-1v-8c-1-1%201-10%202-9l2-1h5l2%201%202%202c-1%201%201%201%2013%203%2018%202%2024%201%2025-7s1-8%201-1%201%208%206%204c4-3%205-2%201%201s-6%206-3%205h1l-1%201v1l3%202c4%203%2013%201%2013-3l1%202%201%203v-3c0-3%200-3%201-2s1%200%201-4c0-5%201-7%202-3l1%206c0%203%200%203%204-5%209-17%2010-17%2013-18l3-1c3-3%203-15%200-14-5%202-5%202-3%200l2-4c0-4%206-6%208-2l3%203c1%201%201%201-1%201-3%200-5%203-5%208%200%206%202%209%206%209%203%200%203%200%207%207%202%205%204%208%205%207v2l1%202%201-2c0-3%202-4%204-1v1c-2%200-5%204-4%205s1%201%201-1c1-3%203-3%202%200l-1%202v1l4%207c1%201%201-4%201-10a217%20217%200%200%201%201-17v-3h16v15c1%2015%201%2016%206%2019%203%202%207%201%204-1-1-1%200-6%202-5l1-1h2c2%201%202%201%202-1l1-2%201-4c0-2%200-2%201-1%201%202%203%202%204%201l2%201v1c1%201%202-1%202-8%201-14%201-15%202-3l1%2013h4l6-1%201-1-4-2c-2-2-3-3-4-2s-1%201-1-2%203-6%207-6l2-1v-1h2c0%201%201%202%203%202l2%202%201%201c2%200%201%205-1%206l-3%203h1c1-1%201-1%201%201v1h1l2%201v4l2%201h-1c-1%200-2%200-1%202l-1%203c-2%202-2%201-2-4l-1-5-1%201-8%201h-7l7-1c6-1%206-1-4-1-9%200-12%201-9%202%201%201%200%201-1%201-4%200-3%201%201%202l13%201v3l-2%201h-1c-1-1-1-1-1%201%200%201%200%202%201%201%202%200%202%203%201%204v5l-4%203c-1%202-2%202-3%201h-3c-2%201-3%201-3-1l-4-3c-2-1-2-1-1-3%202-1%202-1%201-2l-3-4c-1-2-1%200-1%209%200%2010%200%2011%201%2010l3-1c1%201%202%200%203-1s3-2%202%200l1%203v1l-1-1v1l-1%202-6%203c-4%203-9%206-12%206l-5%204v3c0%201%201%202%204%202l6%202c3%201%204%200%204-7v-4h4c4%200%204%200%204%204l1%203%208-8c7-7%208-8%207-9v-2l1-2%201-1c2-1%202-2%202-8v-8h4c3%200%203%200%203%204%200%205%201%206%205%201%205-6%206-9%203-9-2%200-6-3-4-3l3%201c2%202%202%200%200-2-3-3-3-3%201-3%203%201%203-1%200-2-2-1-2-1%201-1%204%200%204-1%204-13l1-8h8v5c0%204%201%205%201%203%201-2%201-2%202-1s1%201%201-1l1-2%201-2h1v-1l1-2v-1h1c1%201%201%201%202-2l1-5v-4l2-4%202-3%202-1%204-1c1-2%203%200%202%202l1%202%201%203c0%203-4%2011-4%209s0-2-2%200l-2%203-1%201-1%201-2%203-3%205-2%204-1%209c0%205%200%206-1%202l-1-5c-2%201-2%205-1%206l1%202-1%202c0-1-2%200-3%202-3%202-3%203-3%209%200%2012%202%2011%203-2%201-5%201-5%201%201s0%207%203%204c4-4%207-11%204-12v-6l1-8c0-6%202-4%202%202l1%203v-3c0-1%200-2%201-1%201%203%202%202%202-2%200-3%202-3%202%200%200%202%200%202%201%201l2-3%201-4c0-2%201-3%203-3l4-1h5c3%200%200%2012-3%2012l-1%202-1%202-1%202-1%201c-1-1-2%202-3%207l-1%204v-4l-1-3c-2%200-8%206-8%208l-1%201h-1l-3%204c-4%204-4%208-1%208l2-2h1l5%201c1-3%203%201%202%204%200%204-2%205-2%202l-1-2v1l-2%201c-1%200-2%200-2%202l-1%203v-3c0-3%200-3-4-3l-4%202-2%201c-1-1-2%204-2%2013v8l-1-7c-1-10-1-6-1%208v11l4-1h7l3-1-4%201-4%204-4%201c-2-1-3-1-3%203%200%202%200%203%202%204v1c-2%200-2%202-2%2020l1%2021%2016%204%205%201h2c1-2-1-4-4-4l-14-4h7c0%201%201%201%202-1h1c0%201%204%202%205%201h1c0%202%202%201%202-1s0-2%201%200a1363%201363%200%200%201%2060%2011l5%201V0H0v6m231%2030v28l1-4c0-3%200-4%202-4l1-8%201-7%201%205%201%205c1%200%202%202%202%208%201%206%201%205%201-8%200-14%200-15-2-15l-5-1-3%201M113%2057l7%204%203%202%201%201%204%202%204%202-1-2c-1-1-1-1%201-1a36%2036%200%200%200%208-1l1-1v-1l1-2c-1-3-4-4-19-5h-13l3%202m143%2011c0%202-1%202-6%203s-6%202-7%204l-1%204v-4c-1-2-3-5-3-2%201%202%200%204-2%204l-2-2-1-1-1%201h-1l-2-1c-1%202%206%2017%208%2015l2%205%201%206v-4l1-7c1-2%201-2%201%201l1%208c-1%205-1%205%205%204%206-2%209-5%208-7l-1-2h-3c-4%200-3-2%201-2%203-1%204-2%204-8l-2-15m49%205c-7%207-10%2012-9%2014h-1l-1%2010%201%2010c1%200%2011-11%2011-13s0-2-1-1h-1c-2-5-2-6%201-7%202-1%202-1%202-8v-7l-2%202m-81%202%201%203-1-1-2-2-1%202v2l-2-2c-2-4-3-4-3%200l1%203-2-3c-3-4-4-4-2%200v3c-1%201-2%202-1%203%200%202%200%202-4%201-5%200-5%200-4%204%200%202%200%202%201%201h2l5%201c5%200%208%202%208%207%200%202%204%208%205%207%201%200%202-1%201-2l1-2%201-3-2-1-1-1h-1c-2%203-4-1-5-11l-1-3%202%203%203%204%201%203c1%200%201-2-1-6l-1-4%203%203c2%205%203%205%203%200l-1-3%202%204c2%205%204%206%204%203%200-2-2-8-4-8l-2-3-3-4v2M103%2087v6l1-1%204-1%204%201%202%201%201%203c-1%203-1%203%201%203l2-1%202-2%203-3%202-1%201-2c0-2%200-2-3-1h-4c1-1-1-1-6-1l-9-1h-1m82%208-2%201c-1%200-7%2011-7%2015h1c1-2%201-2%203-1l1%201c3-4%203-5%202-5-2-1%200-5%202-5%200%200%202%201%202%203l2%203v-4c1-7%200-9-3-9-1%200-2%200-1%201m27%200-1%201c-3%200-4%203-3%207l1%202%202%201c1%201%201%201%201-1l1-3%201%202c-1%206%200%207%205%204%203-2%203-5-1-10-2-4-6-6-6-3m63%2011c-12%2011-12%2015%200%2015l3-2%202-1%201-1h1l1-1c0-1%201-2%202-1l1-9-1-9-10%209m-146-6v2c-1%202-3%203-3%201l-1-2c-2%200-2%203%200%203%202%201%200%203-2%203l-2%201%203%201%201%202-1%201-1%202%202%201%201-1%201-1%201%201%201%203c1%202%203%200%203-3%200-2%200-2%202%200%201%202%203%202%203-1l-1-1c-1%200-2-1-1-2h2l2-1-2-2c-3%200-3-2-1-3v-2h-2c-1%203-3%202-3-1%200-2-2-3-2-1m171%206-6%206v6c0%2010%200%2010%209%209l7-1v-7c-1-8-2-10-2-3l-1-6v-10l-7%206m32%203c-2%202-2%204-2%207%200%204-1%205-3%206l-2%201%203-1c3%200%203-1%203-4%200-6%204-11%209-9%204%200%206%203%203%203l-1%201-3%202h-4c0-5-2-2-2%203v5h12l-1-4%201-6h1l1%201c2%200%201-2-1-5-4-3-10-3-14%200m-50%2013-2%202c-3%200-9%203-9%204%200%202%204%208%206%209l5-3c4-2%204-3%204-7s-1-6-2-6l-2%201m16%207-5%204h-2c-1-1-2-1-5%201s-4%203-3%204%201%201-1%201-2%201-2%202c0%202%200%202-1%201-2-1-3-1-8%204l-3%201c-2%200-2%201-2%207%200%208%200%207%208%206%203%200%204-1%205-3%205-13%2022-9%2022%204l-2%208-1%204v2l7%201%201%201%202%201c2%200%202-1%202-21l-1-21h-3c-2-1%201-4%203-4%201%201%201%200%201-2s0-2-4-2l-8%201m-243%208c0%201%200%202-1%201l-3%201c-1%202-2%202-2%201-1-1-1%200-1%202s1%203%203%204l2%203%201%201%201-2%202%201h2l2-3c3-2%202-7-2-7l-3-2-1-2v2m173%204-1%201c-1-1-2%200-3%201%200%202%200%202-2%200-2-1-2-1-2%201s-2%203-3%200l-1%201c-1%203-3%203-4%200%200-2%200-2-2%200-1%204-3%204-3%201v-2l-2%202c-2%203-4%203-3-1l-1-3-1%203c-1%204-5%204-4%200v-3l-1%202-3%204v1l1%202c0%203%201%205%202%205s1-2-1-5c0-2%200-2%202-2s3%202%203%204l3%204c1%200%201-2-1-5-1-2-1-3%205-3%205%200%205%200%205%202%200%203%204%206%205%204l1-2c0-1%201-1%202%201h3c0-2%201-2%201-1h6c2%201%206-3%206-6v-1l2%202c2%200%201-3-1-4-2-2-2-2-2%200s-2%201-4-2-3-4-2-1M99%20153l-9%204h-1c-1%200-12%206-16%2010-4%205-2%207%204%205l3-2%202-1h1l-1-2h2c2%203%204%201%205-2%200-3%200-3%201-1s4%204%206%202l2-1%203-2%204-1c3%201%205-2%203-6l-3-3c0%201-1%201%200%200h-6m131%205-3%201-2%203-5%206-3%204-2%202-4%205-3%205-1%201h-1l-1-1-1%201v3l-1%202c1%202%200%201-2-1-1-3-2-2-2%201s-3%203-4%200c-1-4-3-4-3%200v4c-1%200-4-2-4-4l-1-2-1%204v3c-1%200-4-3-4-5l-1-1v5c2%204-1%202-5-2l-1-1%201%204v2c-1%200-4-2-4-4l-1-1v4c2%204%200%204-2%201-2-4-3-4-2%200v3l-1-2-2-2v2c0%202%200%203-2%205-3%203%200%207%209%2012%206%203%206%205%200%205-7%201-19%205-18%206l-6%201c-6%200-6%200-3%201l3%202%2026%206c11%202%2016%204%2011%204l-7-1a454%20454%200%200%200-30-4l3%201-3%201a202%20202%200%200%200-49-5l-8%202-6%203-3%201-8%202-8%202h-3c-1%201-9%201-10-1l-8-1-9-1h-9l-8-2-2-1h-3c-3%200-3%200-1-1l6-3c6-2%207-3%203-4-5-2-9-2-10-1H5l-5-2v31h401v-32l-5%201-7%202c-2%201-2%201-3-1h-2l-4%201c-8%202-6%204%203%205%206%201%207%204%202%204l-6%201c-1-1-13%201-16%203h-3l-6-1h-10c0%202-17%202-18%200l-4-1-4-2-3-2-15-5c-2-1-12%200-17%202h-8c-5-2-10-1-33%204s-29%206-28%204l6-1a245%20245%200%200%200%2056-14l12-3-15%202h-9l-1-1-1%202c0%201-4%202-5%201l-5-1-11-2-12-2c-7%200-6-3%201-6%208-4%2012-11%209-16-2-3-2-7%200-14%202-6%202-18%200-20l-3-4c-2-3-2-3-6-2m106%2024c0%201%201%202%205%203l8%202%2010%202%2015%203c11%201%2026%202%2027%200h-4l-11-1-18-4a90%2090%200%200%201-21-4l-9-3c-2%200-2%200-2%202m-299%204-13%203-23%204%206%201a195%20195%200%200%201%2016-2l4-1%2020-3%201-2c0-2-5-3-11%200M0%20210c0%205%200%206%202%206l4%201c7%203%2034%208%2038%208%205-1%209-4%206-4-2%200-2%200%200-1l3-1-3-1-1-1-14-4a2366%202366%200%200%201-33-8c-2%200-2%200-2%205m394-3-10%202a671%20671%200%200%201-38%209c-3%200%201%202%204%202%202%200%202%200%201%201v2c4%203%209%202%2029-3l20-4v-5c0-5%200-5-6-4m-205%2034c0%202%200%202%206%203%206%202%2015%200%2015-3s-20-3-21%200\\'%20fill=\\'%2364ffda\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"vibe coding baseball\"\n        title=\"vibe coding baseball\"\n        src=\"/static/d7c1324a15eaf9b306fb46fce33f8bbc/03346/vibe-coding-baseball.jpg\"\n        srcset=\"/static/d7c1324a15eaf9b306fb46fce33f8bbc/71299/vibe-coding-baseball.jpg 175w,\n/static/d7c1324a15eaf9b306fb46fce33f8bbc/1e9fe/vibe-coding-baseball.jpg 350w,\n/static/d7c1324a15eaf9b306fb46fce33f8bbc/03346/vibe-coding-baseball.jpg 700w,\n/static/d7c1324a15eaf9b306fb46fce33f8bbc/c3223/vibe-coding-baseball.jpg 1050w,\n/static/d7c1324a15eaf9b306fb46fce33f8bbc/da6ee/vibe-coding-baseball.jpg 1400w,\n/static/d7c1324a15eaf9b306fb46fce33f8bbc/0b1d8/vibe-coding-baseball.jpg 1953w\"\n        sizes=\"(max-width: 700px) 100vw, 700px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n        decoding=\"async\"\n      />\n  </a>\n    </span></p>\n<p>Five years ago, I made the difficult decision to leave my dream job at the New York Yankees front office. But ever since then, I've had this nagging itch to work on my own baseball analytics projects. Build something from scratch. Dive back into a field that I’ve always been passionate about.</p>\n<p>So why didn't I?</p>\n<p>The truth was that I was almost always too tired to write more code after coding all day at my day job. Instead, I'd go to the gym, plop down on the couch, and binge whatever was on Netflix. And honestly? I don't blame myself. I think a lot of engineers working in tech can relate to that feeling. \"I'll start that side project this weekend\" is the biggest lie we tell ourselves.</p>\n<p>For five years, that's exactly how it went. The itch never went away, but the energy and motivation to actually do the work were not quite there.</p>\n<p>Then came the seismic shift of agentic coding tools.</p>\n<h2>The game has changed</h2>\n<p>When agentic coding tools like Claude Code first came out in 2025, I admit I didn't think THAT much of them. I'd been using LLMs to help me write code for a few years, and I assumed it would shift the needle a bit more in terms of speeding up my typical workflow.</p>\n<p>There's the old Henry Ford saying about the innovation of cars: \"If I had asked people what they wanted, they would have said faster horses.\" If the early days of code autocompletion was a horse, then Claude Code is a goddamn Ferrari. It has completely changed how I think about building anything and everything.</p>\n<p>The mental burden has shifted dramatically. Instead of grinding through code, debugging errors, and worrying about architectural decisions, my mind is now free to focus on <strong>strategy</strong>. What kind of predictive model should I build? What does success look like? I think of an approach and describe it. Then, Claude runs with it, does comprehensive research online, and builds an elegant implementation in about five minutes. I ask it to evaluate the change and it spits out a clean summary of metrics. It feels like having J.A.R.V.I.S. from the Iron Man movies.</p>\n<p>Here's the wild part: I've made meaningful progress on this project from my <em>phone</em>, nowhere near my laptop, while comfortably watching TV on the couch. The same couch that used to be where my side projects went to die is now where they come to life.</p>\n<p>Claude Code wrote 99% of the code for me. The project reached its current state in only a few weeks of part-time work. It would've taken me months if I had to write every line myself, and honestly, it'd probably be buggier and lower quality.</p>\n<h3>What I built</h3>\n<p>With fantasy baseball season approaching, I decided to build a machine learning model that predicts hitters' stats for the 2026 season. Specifically, the six stats that we score in a fantasy league with my friends: on-base percentage (OBP), slugging percentage (SLG), home runs (HR), runs (R), RBIs, and stolen bases (SB).</p>\n<p>Plenty of baseball nerds like me have built projection models, but this one is quite distinct due to its multi-task learning (MTL) neural network architecture.</p>\n<p>What makes the MTL model special? Instead of training six completely independent models (one per stat), it learns all six stats together through a shared backbone. The model's backbone extracts general features from the input, and each prediction \"head\" is uniquely designed to process those features to predict a specific stat. Think of it like a student studying for six different exams at once, where knowledge from one subject helps with the others. The model predicts rate stats like OBP and SLG, then feeds those predictions into the count stats like home runs and RBIs. It captures the natural relationships between stats; for example, a player with a high on-base percentage is probably going to score more runs.</p>\n<p>Since the MTL model has multiple prediction heads, I decided to name it \"Baseball Hydra\" or just Hydra for short.</p>\n<p>Under the hood, the model training pipeline pulls all 1.1 million Statcast batted ball metrics from the 2016 to 2025 seasons, plus FanGraphs stats, sprint speeds, bat speeds, ballpark factors, and more. All of that gets distilled into 100+ engineered features that describe a hitter's profile, like exit velocity percentiles, barrel rates, expected walk rate, sprint speed, etc.</p>\n<h3>The results</h3>\n<p>You can find a CSV file of the full projections <a href=\"https://github.com/lambertchu/baseball-hydra/blob/main/data/projections/projections_mtl_2026.csv\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">here</a>.</p>\n<p>So how do the results stack up against existing models? In baseball analytics, ZiPS and Steamer are two of the most well-known and well-regarded public projection systems. They've been refined over many years by some of the smartest people in the industry.</p>\n<p>My Hydra model already beats both models in mean RSME when backtesting over the last 4 seasons. Not too bad for a few weeks of vibe coding from the couch!</p>\n<p>Here are the full benchmark results. It covers 1,063 player-seasons from 2022-2025. These are RMSE numbers, so a lower number is better:</p>\n<table>\n<thead>\n<tr>\n<th>System</th>\n<th>OBP</th>\n<th>SLG</th>\n<th>HR</th>\n<th>R</th>\n<th>RBI</th>\n<th>SB</th>\n<th>Mean RMSE</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>Hydra</strong></td>\n<td>0.0306</td>\n<td>0.0621</td>\n<td>7.49</td>\n<td>19.01</td>\n<td>19.83</td>\n<td>6.87</td>\n<td><strong>8.882</strong></td>\n</tr>\n<tr>\n<td>ZiPS</td>\n<td>0.0289</td>\n<td>0.0594</td>\n<td>7.45</td>\n<td>19.71</td>\n<td>21.24</td>\n<td>6.41</td>\n<td>9.151</td>\n</tr>\n<tr>\n<td>Steamer</td>\n<td>0.0294</td>\n<td>0.0602</td>\n<td>7.96</td>\n<td>20.94</td>\n<td>21.55</td>\n<td>6.53</td>\n<td>9.512</td>\n</tr>\n<tr>\n<td>Last season</td>\n<td>0.0352</td>\n<td>0.0726</td>\n<td>8.65</td>\n<td>22.37</td>\n<td>23.23</td>\n<td>7.35</td>\n<td>10.284</td>\n</tr>\n</tbody>\n</table>\n<p>Hydra is <strong>2.9% ahead of ZiPS</strong> and <strong>6.6% ahead of Steamer</strong> on aggregate mean RMSE. The largest gains come from the counting stats R and RBI. Presumably, this is where the MTL model architecture's cross-stat sharing helps the most.</p>\n<p>Now, I'm not about to claim victory over these systems just yet. There's still gaps to close; even though my model performs better in aggregate, it is still behind ZiPS in predicting OBP and SLG.</p>\n<p>On top of that, there are other models like The Bat X and ATC that are known to have the best performance amongst publicly available projections, but I wasn’t able to benchmark against them due to a lack or historical data (if you’re reading this and do have this data and want to share them with me, please hit me up!)</p>\n<p>Personally, I am annoyed that Hydra predicts only ~40 home runs this year for Aaron Judge and Shohei Ohtani, my two favorite players. It seems quite conservative with predictions in general, which may make it look quite good when players “regress to the mean,” but it would fail to predict outlier season performances.</p>\n<p>Despite some shortcomings, the fact that a novel multi-task approach can get this close, this quickly, is a really encouraging signal. It tells me that this architecture is onto something, and with more time and refinement, it can quickly become even better.</p>\n<p>There are still plenty of other improvements that I'd like to try, including more sophisticated contact quality features, improved metrics for expected strikeouts and walks, injury history, minor league data, and sequence modeling of pitch outcomes... not to mention the need to build a new model or expand this one to cover pitching stats.</p>\n<h3>The Risks</h3>\n<p>Believe it or not, not everything about agentic AI is perfect.</p>\n<p>While working on Hydra, I didn't realize until very late that the model was treating the 2020 season like any other MLB season. But ask any baseball fan (or person older than 7) why 2020 was unlike any other year in the past or present; they would immediately know why. Thanks to COVID, there were only 60 games played that year compared to a normal year's 162 games.</p>\n<p>It's funny how Claude Code was able to discuss advanced machine learning and sabermetrics like the smartest human alive, but it failed to consider the simple fact that COVID impacted baseball in 2020, significantly distorting the dataset and model training.</p>\n<p>The fact that agentic AI is so smart 95% of the time is also what makes it dangerous... what happens when we blindly trust it during the other 5%? We still need humans tightly coupled with AI interactions; an observation that is trivial to a human still may not be obvious to machine. We can easily fall into the trap of lazily accepting AI output, but we are still needed for critical thinking to distinguish the fake-smart from the real-smart. The people that are able to do this effectively are now wielding superpowers.</p>\n<h3>Creating over consuming</h3>\n<p>Something unexpected happened along the way. I started getting dopamine hits from <em>creating</em> instead of mindlessly scrolling through my phone or watching TV. My side project stopped feeling like work and started feeling like play.</p>\n<p>I wrote about the benefits of publishing your work <a href=\"https://lambertchu.com/blog/publish-your-work\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">a few years ago</a>, and one of my favorite takeaways was how the creative process provides a much more meaningful sense of fulfillment than consuming content. Building this project has been a perfect reminder of that, especially the feeling of being free to think about high-level details like a grand architect.</p>\n<p>There's one funny downside though: I feel <em>more</em> guilt when I'm not working on some kind of side project. When a side project required writing every line of code myself, I had an excuse for making slow progress. But when AI can crank out features in minutes? Suddenly, the only bottleneck is whether I actually type out a prompt. The excuses are running out.</p>\n<h3>What's next</h3>\n<p>At the end of the day, I'm just a guy who loves baseball and missed being close to the game. Agentic coding tools gave me a way back in, and I'm having more fun than I expected.</p>\n<p>My Baseball Hydra project is <a href=\"https://github.com/lambertchu/baseball-hydra\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">open source on GitHub</a> if you want to check it out. Whether you're into baseball analytics, machine learning, or just curious about what agentic coding looks like in practice, I'd love to hear what you think. And if you've been sitting on your own side project idea for years and haven’t given agentic AI a shot — maybe it's time to dust it off. The tools are better than you think.</p>","frontmatter":{"title":"Vibe coding my way back to baseball","description":"I left the Yankees 5 years ago. AI helped bring me back to the sabermetrics game.","date":"2026-04-07T12:00:00.000Z","slug":"/blog/vibe-coding-baseball","tags":["MLB","Technology","Data Science"]}}},"pageContext":{}},
    "staticQueryHashes": ["1994492073","3236104089","604461682"]}