{
  "version": "https://jsonfeed.org/version/1.1",
  "user_comment": "This feed allows you to read the posts from this site in any feed reader that supports the JSON Feed format. To add this feed to your reader, copy the following URL — https://www.bryanbraun.com/feed.json — and add it your reader.",
  "home_page_url": "https://www.bryanbraun.com",
  "title": "Bryan Braun - Blog",
  "description": "Making things and sharing what I learn.",
  "feed_url": "https://www.bryanbraun.com/feed.json",
  "favicon": "https://www.bryanbraun.com/assets/images/feed-favicon.png",
  "icon": "https://www.bryanbraun.com/assets/images/feed-icon.png",
  "language": "en-US",
  "authors": [
    {
      "name": "Bryan Braun"
    }
  ],
  "items": [
    
      {
        
        "id": "/2026/07/11/you-are-not-your-grand-plans",
        "url": "https://www.bryanbraun.com/2026/07/11/you-are-not-your-grand-plans/",
        "date_published": "2026-07-11T00:00:00-04:00",
        "date_modified": "2026-07-11T00:00:00-04:00",
        "title": "You are not your grand plans",
        "summary": "  “You are not your grand plans. You are your daily patterns.”",
        "content_html": "<blockquote>  <p>“You are not your grand plans. You are your daily patterns.”</p></blockquote><p>I love <a href=\"https://jamesclear.com/quotes/you-are-not-your-grand-plans-you-are-your-daily-patterns\">this quote from James Clear</a> because it hurts me in all the right ways.</p><p>At my worst, I feel like my daily patterns are at war with my grand plans. When I’m fighting a daily battle and willpower is slipping, I need every reminder that this moment, right now, is critical.</p><p>Because it is!</p><ul>  <li>Your body is the result of your daily food and exercise choices, not your healthy ambitions.</li>  <li>Your mind is the result of your regular media choices, education environment, and adjacent relationships, not an independent observer, hovering uninfluenced above your day-to-day interactions.</li>  <li>Your character is the result of your actual sacrifices—for others, for your integrity, and for the common good—not your generous aspirations.</li></ul><p>When I’m struggling with daily patterns, it’s helpful for me to look at the times I was rocking it. I’ve had periods of my life when my workouts were really consistant, or I journaled every day, or I always woke up early. What contributed to those things?</p><p>Often, it was <a href=\"https://www.bryanbraun.com/2011/11/06/winning-systems/\">social pressure</a>, <a href=\"https://www.bryanbraun.com/2016/09/05/lets-get-stuff-done/\">an accountability buddy</a>, or <a href=\"https://www.bryanbraun.com/2023/11/26/i-needed-to-be-happier/\">a change of environment</a> that pushed me into a productive place (underrated benefit of having a blog: it’s a historical record of your successes and failures).</p><p>Of all the things I might learn looking back at these experiences, perhaps the most important is that it’s never been easy. I’ve got 15+ years of posts documenting the battle. Sometimes I’m winning and sometimes I’m losing, but I’m always fighting, and that’s a daily pattern too.</p><hr /><p>Thanks for reading in your feed reader! Let me know your thoughts by leaving a comment on <a href=\"https://www.bryanbraun.com/2026/07/11/you-are-not-your-grand-plans/\">the original post</a> or sending <a href=\"mailto:bbraun7@gmail.com\">me an email</a>.</p>"
      },
    
      {
        
        "id": "/2026/04/27/quality-vs-quantity-in-the-age-of-ai",
        "url": "https://www.bryanbraun.com/2026/04/27/quality-vs-quantity-in-the-age-of-ai/",
        "date_published": "2026-04-27T00:00:00-04:00",
        "date_modified": "2026-04-27T00:00:00-04:00",
        "title": "Quality vs quantity in the age of AI",
        "summary": "Over the last four months I’ve increased my use of AI for web dev work pretty dramatically. I use it every day at work, as do most of my coworkers. I don’t think it’s disputed anymore that AI-assisted development can save a lot of time and effort. The question is, what do we do with all that surplus?",
        "content_html": "<p>Over the last four months I’ve increased my use of AI for web dev work pretty dramatically. I use it every day at work, as do most of my coworkers. I don’t think it’s disputed anymore that AI-assisted development can save a lot of time and effort. The question is, what do we do with all that surplus?</p><p>The standard narrative in the industry is to use it to go faster. Ship three features a day instead of one. Get a half-dozen agents working in parallel. 10x your productivity. If you don’t move fast, your competitors will!</p><p>I get it. Speed is good and it has benefits beyond just finishing more stuff per unit time. <a href=\"https://jsomers.net/blog/speed-matters\">Speed matters</a>!</p><p>But we live in an era of extreme consumer choice, especially in the world of software. Even pre-AI, there were dozens of good email clients, to-do lists, fitness apps, and analytics tools, all chock-full of useful features at reasonable prices. What is “going faster” going to give us? Even more options, with even more features?</p><p>Apparently yes. In the past quarter, <a href=\"https://www.theinformation.com/articles/vibe-coding-effect-apples-app-store-saw-84-jump-new-apps-quarter\">iOS app store submissions have risen by 84 percent</a>, and <a href=\"https://www.adriankrebs.ch/blog/design-slop/\">Hackernews, “ShowHN” submissions have nearly tripled</a>. We live in an era of software abundance.</p><p>But as software grows increasingly abundant, attention grows increasingly scarce. Attention was scarce even before AI but it’s going to get worse. Consumers have more choices than ever, and increasingly those choices <a href=\"https://www.lauraward.co/ai-is-making-everyone-look-the-same-and-its-a-problem/\">are becoming undifferentiated</a> as the industry uses AI to produce them.</p><h2 id=\"what-if-we-did-the-opposite\">What if we did the opposite?</h2><p>Instead of using your AI surplus to go faster, what if you used it to go deeper?</p><p>What if, instead of building ten good features, you built two amazing ones?</p><p>What if, instead of blasting out a dozen landing pages, you poured your attention and care into a home page that knocked someones socks off—one that could not have been built by an AI, because nothing like it could have been found in the training data?</p><p>What if you doubled-down on performance? On accessibility? On user-experience? On creating a strong personal touch?</p><p>It would stand out! That matters, arguably, even more than speed.</p><h2 id=\"striking-a-balance\">Striking a balance</h2><p>The more I thought about this, the more I recognized it as the same ol’ quality vs quantity debate, where it pays to strike a balance:</p><ul>  <li>If we pour all our surplus time into quality, we end up <em>hurting</em> quality by failing to iterate<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup>.</li>  <li>If we pour all our surplus time into quantity, we end up <em>hurting</em> speed as tech debt accumulates<sup id=\"fnref-2\"><a href=\"#fn-2\" class=\"footnote-ref\">2</a></sup>.</li></ul><p>But what’s the ideal balance? Is it 90% quality, 10% speed? 50% - 50%?</p><p>How would you spend your AI surplus?</p><hr /><div class=\"footnotes\">  <ol>    <li id=\"fn-1\">      <p>For an example, see the <a href=\"https://jamesclear.com/repetitions\" target=\"_blank\">story of the photography class</a>, as told by James Clear in <a href=\"https://bryanbraun.com/books/#atomic-habits\" target=\"_blank\">Atomic Habits</a>. <a href=\"#fnref-1\" class=\"footnote-backref\">↩</a></p>    </li>    <li id=\"fn-2\">      <p>Remember: <em>Slow is smooth, and smooth is fast</em>. <a href=\"#fnref-2\" class=\"footnote-backref\">↩</a></p>    </li>  </ol></div><hr /><p>Thanks for reading in your feed reader! Let me know your thoughts by leaving a comment on <a href=\"https://www.bryanbraun.com/2026/04/27/quality-vs-quantity-in-the-age-of-ai/\">the original post</a> or sending <a href=\"mailto:bbraun7@gmail.com\">me an email</a>.</p>"
      },
    
      {
        
        "id": "/2026/03/30/links-14",
        "url": "https://www.bryanbraun.com/2026/03/30/links-14/",
        "date_published": "2026-03-30T00:00:00-04:00",
        "date_modified": "2026-03-30T00:00:00-04:00",
        "title": "Links #14",
        "summary": "See below for links to recent things that have made me think. It’s quite the mix of mediums (animated videos, short posts, letters, and 6-hour podcasts), but it wasn’t until I gathered them that I noticed a recurring theme: sacrifice",
        "content_html": "<p>See below for links to recent things that have made me think. It’s quite the mix of mediums (animated videos, short posts, letters, and 6-hour podcasts), but it wasn’t until I gathered them that I noticed a recurring theme: sacrifice</p><p>Sometimes the world imposes constraints on us, forcing us to choose what matters most. What do we do when those moments come?</p><p>Some of my favorite stories (both ancient and modern) explore these moments, and you’ll find elements of that in the list below.</p><hr /><p><strong><a href=\"https://www.youtube.com/watch?v=-eJpbImGgp4\">What’s Really Going on in El Segundo</a></strong></p><p>A 14-minute video about the hardware startup scene in El Segundo California, by Jason Carman. Some of it is hype, of course, but I’m impressed by the vision and culture of optimism they are offering to a world where so many young people are flailing and drowning in zero-sum status games.</p><blockquote>  <p>When a young man or woman comes up to me and says, “I’m not sure exactly what I want to do with my life,” “I’m having a really hard time orienting myself,” “I’m not sure what the point is, but I want to build something great and meaningful,”—that is one of the best consequences of everything that we’ve done. Making more water is a big deal, energy abundance is a big deal, …all of this is great. But just being able to give people some vision for the future—that is one of the most important things. We have to sacrificially build hard, real, material, things to create a future worth living in.</p></blockquote><p>I’ve been watching a bunch of Jason’s videos, and they’re all <a href=\"https://www.bryanbraun.com/2023/11/26/i-needed-to-be-happier/\">great medicine</a> for the negativity that afflicts most news media.</p><p><strong><a href=\"https://sive.rs/off23\">Offline 23 hours a day</a></strong></p><p>Derek Sivers describes his new home in the woods, an alternate world without AI, connectivity, or mental shortcuts. I know people have been been retreating like this for centuries, but the craziness of the world, and the busy-ness of my current life make such a retreat feel like a luxury.</p><p><strong><a href=\"https://alearningaday.blog/2025/11/28/all-it-takes-is-for-one-to-work-out-2\">All it takes is for one to work out</a></strong></p><p>A short post about those moments when the rejections keep coming.</p><blockquote>  <p>These processes – college admissions, job searches, home buying, finding a partner – can be emotionally brutal. … All it takes is for one to work out. And that one is all you need.</p></blockquote><p>During my job search last year, I had a really exciting opportunity fall through at the end. It felt like a crushing blow. <em>It would have been so perfect</em>, I lamented. But looking back now, I don’t even care. Another one worked out (a better one, even). Knowing that rejections don’t actually matter is great medicine and a legitimate source of hope for anyone still fighting.</p><p><strong><a href=\"https://danwang.co/2025-letter/\">Dan Wang’s 2025 Letter</a></strong></p><p>Dan Wang, author of a bestselling book about China and America, uses his end of year letter to compare the two countries and offer some thoughts. His writing struck a chord for me. It was informed and clever, full of interesting takes that demonstrate his deep understanding of the two nations. I added his book (<a href=\"https://www.amazon.com/Breakneck-Chinas-Quest-Engineer-Future/dp/1324106034\">Breakneck</a>) to my list.</p><p><strong><a href=\"https://www.youtube.com/watch?v=B4EPW7JUMTM\">Forevergreen</a></strong></p><p>A cute animated short story with a powerful message about sacrifice. I watched it twice—once with my wife, and again with my kids. Both times it sparked some great discussions. I think everyone should watch it.</p><p><strong><a href=\"https://harpers.org/archive/2026/03/childs-play-sam-kriss-ai-startup-roy-lee/\">Child’s Play</a></strong></p><p>Sam Kriss profiles the newest, most eccentric, batch of Gen-Z founders. The way he presents their companies make them look exactly like what the fevered minds of a generation raised on social media algorithms would produce. Extreme, attention-grabbing, and impossible not to look away. Stacks of Labubus. Sperm racing.</p><p>Reading this felt like I was being transported into another dimension—one where the most absurd, amoral corners of online culture have escaped into the physical world. Is it real or fake? For the luls? Can anyone even know?</p><p>Along the way, he was also able to work in this fantastic quote:</p><blockquote>  <p>If we ever get AI that is strong enough to basically be God and solve all of our problems, it will need to use the same techniques that the actual God uses in terms of maintaining some distance. I do think it’s possible that the AI will be like, “Now I am God. I’ve concluded that the actual God made exactly the right decision on how much evil to permit in the universe. Therefore I refuse to change anything.”</p></blockquote><p><strong><a href=\"https://www.youtube.com/watch?v=vagyIcmIGOQ\">Lex Friedman interviews DHH</a></strong></p><p>At over 6 hours, this is the longest podcast interview I’ve ever listened to, and I doubt I would have finished it if DHH wasn’t so sharp and entertaining. DHH is known for his strong opinions and I was impressed at his ability to articulate his thinking with clarity and appropriate nuance throughout the interview. The part where he explains the beauty of the Ruby language (from both a practical and philosophical perspective) made me want to write more Ruby, and many of the other topics got me thinking as well.</p><p><strong><a href=\"https://www.notboring.co/p/costless-sacrifice\">Costless Sacrifice</a></strong></p><p>When AIs can print job applications for pennies, fill up the internet with thinkpieces, and commit industrial-scale quantities of code, is there anything left for us humans to create? Packy McCormick says: yes. What still matters, is what has always mattered, and that is sacrifice. People still want a connection to the stories they read and the music they listen to. Employers still wants to hire someone who cares. Recruiters never needed good cover letters for their own sake… they needed someone who cared enough to <em>sacrifice</em> the time and effort to write them well. They <em>still</em> need those people, even if cover letters are no longer a good way to find them. My takeaway: even in a world flooded with AI-generated content, there will still be a place for those of us who care enough to sacrifice for our work.</p><hr /><p>Thanks for reading in your feed reader! Let me know your thoughts by leaving a comment on <a href=\"https://www.bryanbraun.com/2026/03/30/links-14/\">the original post</a> or sending <a href=\"mailto:bbraun7@gmail.com\">me an email</a>.</p>"
      },
    
      {
        
        "id": "/2026/02/16/250-lbs",
        "url": "https://www.bryanbraun.com/2026/02/16/250-lbs/",
        "date_published": "2026-02-16T00:00:00-05:00",
        "date_modified": "2026-02-16T00:00:00-05:00",
        "title": "250 lbs",
        "summary": "Six months ago, while I was setting up a new code editor, I noticed that the default font size felt just a bit too small, when displayed on my monitor. Not a big deal, I just bumped it up one size and went back to my work.",
        "content_html": "<p>Six months ago, while I was setting up a new code editor, I noticed that the default font size felt just a bit too small, when displayed on my monitor. Not a big deal, I just bumped it up one size and went back to my work.</p><p>Then it happened again, this time, when reading sheet music on my phone. “That’s weird,” I thought, as I increased the size. “This didn’t bother me before.”</p><p>I had always had perfect, 20-20 eyesight. When I finally realized that I was losing some of that sharpness, I felt a loss.</p><p>It wasn’t the first time, though.</p><p>About two years ago, I started having wrist pain while typing. On one particularly bad day, I became very worried. “Typing is how I provide for my family. What will I do, if I can’t type?” Soon I discovered that wearing wrist braces at night helped make the pain go away. I remember laying in my bed in wrist braces, thinking, “I’m 36 years old. I’m too young to need wrist braces for the rest of my life,” and I felt a loss.<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup></p><p>After a few losses like these, it would be easy to adopt a narrative that I’m in physical decline, losing capability daily, with all my best achievements in my past. It’s a sad story. A <a href=\"https://www.bryanbraun.com/2023/06/06/the-stories-we-tell-ourselves/#fragile-stories\">fragile story</a>.</p><p>I decided that one way I could push back against this story is to set a new weightlifting goal: a 250-pound bench press.</p><p>It was an unthinkable goal back when <a href=\"https://www.bryanbraun.com/2023/08/26/200-lbs/\">I benched 200</a>. I didn’t plan on going heavier back then, but I enjoyed my weightlifting routine, so I kept showing up. By the time I hit 235, I realized that maybe 250 was possible. I felt excited and motivated just thinking about it. I wanted to go for it.</p><p>But just like last time, I hit a plateau.<sup id=\"fnref-2\"><a href=\"#fn-2\" class=\"footnote-ref\">2</a></sup> I was able to bench 245 <em>once</em>, last summer, but I spent the next 6 months unable to do it again. As I turned 39, I wondered if I was fighting against time.</p><p>And then it happened.</p><hr class=\"section-divider\" /><p>All of us are going to have to learn how to grow old. The aging itself is easy, but learning how to handle the losses is more challenging. Today, I can tell myself, “my eyesight may be declining, but I’m stronger than I’ve ever been.” Next year, who knows. Maybe I’ll get into pickleball.</p><p>There are endless opportunities for personal growth, and if we exhaust the supply of physical milestones we can still progress intellectually, creatively, and spiritually. Life offers plenty of PRs to pursue, if we’re willing to look for them.</p><hr /><div class=\"footnotes\">  <ol>    <li id=\"fn-1\">      <p>Fortunately, I didn't end up needing to wear wrist braces for the rest of my life. After some trial and error, I learned that my pain was ultimately caused by poor ergonomics from using my laptop keyboard and trackpad for extended periods. Once I got set up with an ergonomic keyboard and mouse, the pain went away. It's still a bit of a loss (I can't just roll into a weekend hackathon with only a laptop anymore) but I'm glad I can still do the work I enjoy.</p>      <a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>    </li>    <li id=\"fn-2\">      <p>In <a href=\"https://www.bryanbraun.com/2023/08/26/200-lbs/\">my last weightlifting post</a>, I talked a bit about breaking through plateaus. This time, the key intervention was simply eating more calories (something I've avoided in the past in an effort to moderate body fat). Eating more calories increased my body fat a bit, but also helped me build muscle. Professional weightlifters eat a lot and exercise a lot. It's not an efficient use of time but it's fun (especially if you like eating and exercising).</p>      <a href=\"#fnref-2\" class=\"footnote-backref\">↩</a>    </li>  </ol></div><hr /><p>Thanks for reading in your feed reader! Let me know your thoughts by leaving a comment on <a href=\"https://www.bryanbraun.com/2026/02/16/250-lbs/\">the original post</a> or sending <a href=\"mailto:bbraun7@gmail.com\">me an email</a>.</p>"
      },
    
      {
        
        "id": "/2026/01/01/made-in-2025",
        "url": "https://www.bryanbraun.com/2026/01/01/made-in-2025/",
        "date_published": "2026-01-01T00:00:00-05:00",
        "date_modified": "2026-01-01T00:00:00-05:00",
        "title": "Made in 2025",
        "summary": "Here are some things I made in 2025:",
        "content_html": "<p>Here are some things I made in 2025:</p><ul>  <li><a href=\"https://bryanbraun.com/pro-wrestler-or-roller-coaseter/\">Pro-Wrestler or Roller Coaster</a></li>  <li>A <a href=\"https://github.com/bryanbraun/fusion-penrose\">Fusion 360 Script for creating a Penrose Triangle in CAD</a></li>  <li>A <a href=\"https://www.bryanbraun.com/books/#blindsight\">personal book recommendation tool</a>, which used <a href=\"https://www.bryanbraun.com/books\">my archive of book reviews</a>, the OpenAI API, and <a href=\"https://en.wikipedia.org/wiki/Retrieval-augmented_generation\">RAG techniques</a> to give me personalized book recommendations. The tool wasn’t polished but <a href=\"https://www.bryanbraun.com/books/#blindsight\">I ended up enjoying some of the recommendations</a>.</li>  <li>9 Music Box Fun songs.    <ul>      <li>I’m most proud of <a href=\"https://musicbox.fun/#1XQAAAAIEDwAAAAAAAABBqEgrorLfAlArhbCp-y4A66CcyoAjag00sb4zdsf1U2f1Y5eaNalDxWjVs8ZgfYfr503OBXB7U65AUB8_klWkl9_HkrJNFxYSBrXq4CH4ZuFsa2zr50fLqk2DCvkfgkUmNR_KWckRfeJxKqfEZ7kCsm6FJpn9PVrDd97C3RkgStEReSyYiz8b-CiB1KFPu3PPAXwa2txPMKpSAPMFLsP6oCqcOFkCBmeGxaA9nqNthNZyiPhzeidF3DOTmJgbzM-Zv72J2YOYemXLPsY9tMcmmZSFZ9HziLU4X0fF_NMjZyisyBqrDo-PvB4PBNPBtoFZdFSW30eyKZC9cVG1MjZaQnYCgaf3q7FivGSmVvHAAHXxU6xr_YmSjA8cfim_z37BJ_wbU_sli13jB7D70ex7odZfavDXdT6zJdDisElDZ-YN6ko_AOgh6Dl1fXlESrkNIW-ope2yCl0hgiyymGE0Wc8ZfLoNTAOUwMIGG3puCNfvlWeLMNUuwcet4Eqg6sK9EH9n15W45PmTYcyp7yeyg3WZyLTIUmzUOQC8i7ab3_lH3wJAREQ2FhnXIzW-9A-lxbCQOoWaWZlI0OJBsT0iqqKvpyfRvB01hU7XkC8dO85bE-0HKcqd9mgQ_7yWA9UnINZWI7_FRqKRkJWV5upqya5tZgZQeI7hIrv1jx3udg5C6gf5sdSbDwC-Dc5AmfZfP1jEhVqcOH3WnKeTVCIPxH644qkHJfW2A5zhXEwlZZoJRJw7274RoCvx0y0PYiUSBJUXPd6knk1n0iMjJrgylpydO0oaTuCeVJMfD2fSCAoWEuDXi4l7wHLT6oN5M4va89PbkTIO5GX2iEzUEf3wNK-QOnX5EyYRwJRUJ4QWiwaCgS5mRpEpqJ53d6MXGZydi5wb_o6HvDhDLGyebLIIY2GmvwYvfVaPZoNb7KdD3NdKFbmpp1GJjKqs6aq5r0EYNCEHDmwKLAau9yMVX5XN_GGv8I9FqUyG05-GtkT_KIU0Pu_kDAPKe6QaNgJXYFWaw05i2huY4qiNxQCjzuIfks8uqNUXh5I5dWEKSh5hS62FJlABQMWLQWrwDbwlupHrYkwHGWEnVxTU-Mmnz4oYKeJSNDu9RTEnwTA_Kxw_L4z0CALqytgA5O8BNa26OtQ8YjHMPaNL-W-arf0Tyi4dz405q0Nhww4YlIlYtike_hA6stnpRI8Ve9dgR8l0SlK4_OjJUcJVIcQbH5M2hF9SYzoKjPMMFCXNkxMn36ncPxD9w4fmzPu1TO-rVSdGs7OMHwSSIIKfXpK-7AFar6_JYfX_eSo-_eMTYPH8j-HcPTFIEbkJTVU2yX0nBju2Orq4PTZyT38Kzd6q6zyBIR-SRyWBZth07bmVAUReLLRG12u1gHXm7yYCgbkKETLzZiB4cu09YlC3T-ppRSRvM3rucmSSqaIDFI4eTqI_1eXjFStxiYIEXw2VT6VIOqnYCLiDOVtGIgrAPmBV4Vcc1UEhdKUxVodjPsknpjGWwUJri0PL1I2GW2kwlj4DDi8um2osokI7VkGB1sKBaynGTJvwlY9Tdjbt3ENyhaCoU5F-Hc91nrH73EjdhDpm_Gkgp2hceF8OZyM5cTN7BkP-qtNeJgtmF-b-GIM0nCzMbMdXWWXiBvUH79ynDrVh2jBM0XY32tg34xAwphr4-PeriWB-cnG8RcJ1fcOiLc29MY0DlSwINtTnjBc2EW_rdoGMMtrrI2pY1fPIvHuXqmX5dyh8h5a3wSXmJV6iR1gqoZ4soqDk-Ohiue_JJf83tdgmQkOEFghKwd99S5mM6GSaV959ivWDNQ8H0RnS4DMNljd0yBLOpsqzL3RHKodhHbnUnYdcbaehed5LpvmUloNXxmVVtV6oDJuCEPgQzqMarojFc2pdsPLPZsvHqgT_7qtG9p-g_EmcITUS3hNAiKBrmYfT_CUmsxUxY-b02k1A0KJaCnYXqKskFFuuhvK71ozzI_hV6T2buEaMPd9hy4ywXR_srf1xXJJH0t4OC0kZt1ih9dQoOHvlcLprstBUKENSa1jvQjkCcC_1p3kYEHz7ABNFIgY8LYXge-3lwlM9PSDiaNwblH_KdTExehnmJ0pEvLUISVnW0Dw9YrbQdNKdxCVAnypSOsnarrFgZ0RfzrW9jFGwxxjrJC20Ro_51pqzkwjp_E_fOy_n_jMIsqO6-X7TIxfo5C_HzHOtP1VKI_7VNIIlBwuT6wPHGBWkSzqtKqss5pkcEJhjMqse1guHQ99ch8Fw1tAiXfd7rVpvzUERGRsr4lzXwnZ1LX8RZWEtZvd2hsJ576D1q2XmkT7pUsIYkpK84Oj2YCz0RwAblCUIcayp8qVZVYXH2klna8eTkuAZyL3KYA2Uig7k4YiE7mY0N5ODhN0kt9yWv_2si4Fyi93pUBvog6T4XiUR1e2IVnvnVRVYl77VfGEckX0EAC3xixjHayvzq9-bk2rWhoHc-ka8K9Yge4l1f5SjgSdKEPX2dncwTz6mJRvxLg9tzR-tC4BasrT7DwCqkhuLgsIEzihoyBr-FmLM_iRX9lDbsQH1LaKpv-WPx2Rfk1MR03a5E8izHY0oMwoqnu_1VWP-Lxe67z82SfKJ7Fa3WDiNWDGZ6seoaoBiL01M8uY-9zi4NR8D--Cm2NrEzChDZAeK4P8s1WMwCbBxu-ntJUszmO6mdJ1myE1cXM2GsIBQ7FtWP_opQ1lt9JjyZ85my2t4lqcrsoH5rBr5X_9M4gU6OiZsrAFrpkq4Q2HY5FonI1qNazEidXqP8HMNpEImeZxszZyxtL3a3grp5qStmB-irwQYYx9ZlYFf2qh6CwpAFqFF_9mtpS8\">Sommarfågel</a>, which is one of the most technically challenging songs I’ve made. <a href=\"https://musicbox.fun/#1XQAAAAK6CQAAAAAAAABBqEgrAjN8kIpoFD2mvjcpxrDNCulHlOs-McJO8IiKDJDlJW2wT8c-IUb6uZ4YoMjjYn-_CE1VhELQ9SgC5ux60og2nWuoqwK8jmwY2wrhIPVeOjOW816SRpGNLCEtBUFy7G3UKY6SfAkskN7Mms8Xalmk8TB1PlfRs7m8Xo-9bDQFKM86kWeeh_RQnWeK02jxHAoc5y0cJsYYurhbU_ciE6bgTET73Tuq8bahY8aA-zjFwzPR6z4QwmezOlfEVOXM-CdMCvCuYugDLnp6GeDTthQoDok8_GnXNF8AeMyzMuu14qFze1-QwAAQiLpEOWzlRrwA1c1uVr2elSIKpubKF7VtAaCe2uYv5GtSL56r9yqV6PSrwXgAWHR-IyyvIBl0Gcct4RaSRfklQ6F9PWHuNJMcUROfXtKsq0Ayq8x_2idRPmqZLGUNvUlwdo31AbWSTtuG6XoUSnmdQfIsyn9tR_8bnCR4wSPvEHIEHBs5Mtw2OL2adUTcFOBEKaLgM51CI1gpWqqbkQcKN3hCPgfsI6qSYczWAMK3qpPE3zlQnF6syBypp8mFnGcjHukgSYTmg-g_oI7-rK8J-V3BHmwv-smByfhecu5Tk4gU2u5TyKoBwPhtchcPX3AVBL7rgCZOzpqOzf0hDNXShix8tLR3hHxNXqv1PAo8k83UDDXdsbaYXtlT-HfmnXfGUXApoKjuBh7NZ5yYm0aRuqhW8HQKgqdVl_jSbaVp_7f3DFZYdAF0jCYTaa4gWw34S6nCEhebD1XrGtVlTQuhxEjPZtVzmqlSAbUt9sp8ZTykj3rb88gg5WqFUAzCnjw3mdTQgA1LMbqCx1x5uym-VIwzeK26Je-ShkzLNTHsCZrX8WxTE9auBs300zIkxJXkQKtd0bus0acPzCXn-vCVaq0i6kaTvgRi8RWQJHCmBcCZ8R6qHmVHM98fdDBXPiXKKAcet3zDWbHQlMCUdqylF1u--bR3AsWhybKTJt08nj-QbDdO8qIs5rF60g1mqh89zK37KlWjdd1imNnvuiUL2Rr2VgDCIhbwP7rO3BVw31g3Hxh9F8KK86EgE2Ig-CEHqxlj5whVH9DOXWTVJt9tT483eFVuf08ZljuT6V9TWX7te2eXKNCDX7Q6YmwzLH63yE4XHMoTL5eXM146vOExAO9nyQ0hIGLJo8uH6Ga0uzgQitsSsOTAkMHj1PjJOiwfIlsF8PzOvZ7Yy87k8d-iIlVfCvGb_ZBKmTRDcgkA0FQRpDs4SmzOyZvRL6PXHwACKQx0qAwCtL2EjYnkOz5kA1cuKtYgMiVL44A61G_UmMPPaldQ_o4xfjQB4NoEmXrqgJ4vZIshTu9oyjaE5PLSVTKs7F7RPazlxblm5OBQy-Ce789rhFNTXS0DYbTjd6JHrnXITBw0aVu-IJGAHmFiP2ANOZ7HlZOWHkrYsXFqLFPQr0Bj8OdoakavVgzwi7gFbQAEa4jkufORgoVt6wSc-ftTJEGN04lpV-G5QltLZwrv1DfxgtERft_SXmM4VhewcjZOXasXxxGIKf_CRkdu6SrbhvxrjlV8acrqJIh6oPjNox1yPvhmOZhRrsaV8VdPnVko63zng98jTvD8WE3HJ_G5_VIX_uBKNj_vI0cM9ENUDnk4PEmpO5Kwbqwl0FKAMah1Et9LtD0vd-4P7D1l6EM1KZraXvt4ykuYmfGEpHoq1rutbOfuxD-KwDPiy_MGJTrNhzIw-Yp-OLWbKYf6FAdDN8LuC7RDHXrxj853r3iiWJNs6MbnnmPdFQVQL0oFiHXyrQKWIQtpZR_8Tg4j9BF7gTyZkDxMz8AZcoY91HilGx5mL_NkPfW2IrdLwc_sHCUq5eQi9R3XI627mP-KqvRl\">Duck Tales (NES)</a> was also good and probably more fun to listen to.</li>      <li>The songs above were aided by the MIDI import/export feature that I added this year. The import is useful for dumping the notes in there, so I can spend more of my time trying to turn the song into a great music-box adaptation (which, for me, is the fun part).</li>    </ul>  </li>  <li>8 new projects added to <a href=\"https://letsgetcreative.today/\">Let’s Get Creative</a></li>  <li><a href=\"https://www.bryanbraun.com/blog/#y2025\">12 blog posts on bryanbraun.com</a>, including <a href=\"https://www.bryanbraun.com/2025/03/29/breaking-down-circular-dependencies-javascript/\">a detailed breakdown of circular dependencies</a> and its <a href=\"https://github.com/bryanbraun/circular\">companion repo</a>.</li></ul><p>This was the first year I really leaned into AI-assisted development, and a couple of my projects reflect that (like “Pro-Wrestler or Roller Coaster,” which I probably wouldn’t have made if I had to do it from scratch). I briefly wrestled with the question of “did I truly make it if I had AI assistance,” but I think the spirit of this post is less about the coding and more about the drive to be creative. As I get older and find more things vying for my time, I don’t want to let go of that desire. I’m finding that AI is actually helping me continue to exercise that creative muscle without requiring so much manual labor.</p><p>Happy new year, friends.</p><hr /><p>Thanks for reading in your feed reader! Let me know your thoughts by leaving a comment on <a href=\"https://www.bryanbraun.com/2026/01/01/made-in-2025/\">the original post</a> or sending <a href=\"mailto:bbraun7@gmail.com\">me an email</a>.</p>"
      },
    
      {
        
        "id": "/2025/12/27/raise-your-standards-for-important-things-lower-them-for-unimportant-things",
        "url": "https://www.bryanbraun.com/2025/12/27/raise-your-standards-for-important-things-lower-them-for-unimportant-things/",
        "date_published": "2025-12-27T00:00:00-05:00",
        "date_modified": "2025-12-27T00:00:00-05:00",
        "title": "Raise your standards for important things; lower them for unimportant things",
        "summary": "I think we’ve all got some built in tendencies, pulling us towards certain behaviors, whether or not they are worthwhile.",
        "content_html": "<p>I think we’ve all got some built in tendencies, pulling us towards certain behaviors, whether or not they are worthwhile.</p><p>It takes many different forms. If you have OCD cleaning tendencies, you spend excessive time making sure your windows are spotless. If you are money-focused, you’ll spend way too much energy clipping coupons and watching account balances. If you’re a fitness junkie, you end up spending a lot of money on specialized equipment and supplements for increasingly marginal benefits. If you are a yard guy, you could be outside all weekend, getting the perfect edges.</p><p>Of course, who am I to judge how you spend your time? If you’re truly doing what you want to be doing, then more power to you.</p><p>But if you’re like me, and you know in your heart of hearts that you’re wasting your time, then what do you do?</p><p>One of my favorite books is “The Obstacle is the Way”, by Ryan Holiday. The central message of the book is that, yes, our lives are full of obstacles but instead of just patiently enduring them, we can flip our perspective and see them as our advantages—secret weapons we can leverage to accomplish our goals. It’s an empowering idea (and one that <a href=\"https://www.instagram.com/p/CvA-dHQPWxd/\">we discuss often</a> <a href=\"https://www.instagram.com/p/ClcoUxfshR5/\">in our home</a>).</p><p>The “tendencies” I described above go by many names: passion, obsession, fixation, perfectionism, “hyperfocus,” etc. Call it what you want, but whatever you call it, I’d encourage you to see it not as an obstacle, but as a superpower. After all, you <a href=\"https://grantslatton.com/nobody-cares\">care</a> about something. You just need to channel it towards something important. For that, I find this phrase helpful:</p><p><strong>Raise your standards for important things; lower them for unimportant things</strong></p><p>When is a room clean enough? When is a meal healthy enough? We all have standards for these things, and our standards can be adjusted. Maintaining high standards is expensive, and any effort we spend on high standards for unimportant things is ultimately a waste.</p><p>I could double-down on my March Madness research or I could play a board game with my kids.</p><p>I could remove every last dandelion from my lawn or I could publish that blog post I’ve been thinking about.</p><p>How do we know what’s important and what’s unimportant? There’s no right answer. You get to decide!</p><p>For me, the most important things are the things that last the longest: family, health, and personal development (like building skills and exercising creativity). Anything else can afford to degrade a bit.</p><hr /><p>Thanks for reading in your feed reader! Let me know your thoughts by leaving a comment on <a href=\"https://www.bryanbraun.com/2025/12/27/raise-your-standards-for-important-things-lower-them-for-unimportant-things/\">the original post</a> or sending <a href=\"mailto:bbraun7@gmail.com\">me an email</a>.</p>"
      },
    
      {
        
        "id": "/2025/10/28/SolidGoldMagikarp",
        "url": "https://www.bryanbraun.com/2025/10/28/SolidGoldMagikarp/",
        "date_published": "2025-10-28T00:00:00-04:00",
        "date_modified": "2025-10-28T00:00:00-04:00",
        "title": "SolidGoldMagikarp",
        "summary": "In November 2019, years before the launch of ChatGPT, OpenAI created a 1.5 billion parameter Large Language Model and released it publicly under the name GPT-2.",
        "content_html": "<p>In November 2019, years before the launch of ChatGPT, OpenAI created a 1.5 billion parameter Large Language Model and released it publicly under the name GPT-2.</p><p>Immediately, researchers and enthusiasts <a href=\"https://gwern.net/gpt-2\">began playing with it</a>, using it to generate poetry, folk music, fan-fiction and more. It was a dramatic improvement over previous iterations and it foreshadowed the significant advancements that would soon come.</p><p>But even after the release of GPT-3, <a href=\"https://www.lesswrong.com/posts/aPeJE8bSo6rAFoLqg/solidgoldmagikarp-plus-prompt-generation\">some enthusiasts began to notice a strange behavior</a>. You could be having a typical conversation with the AI, but as soon as you mention a specific word, it would begin to behave erratically. It would give off-topic responses, hallucinate, insult the prompter, and even refuse to comply with the request. What’s more, this word was apparently <em>inexpressable</em>. No matter what prompt you gave, the AI was unable to say the word itself.</p><p>What was this forbidden word? What was the holy incantation that caused the AIs to lose their minds?</p><p><br /></p><p><b><code class=\"big-text\">SolidGoldMagikarp</code></b></p><hr class=\"section-divider\" /><p>This is hilarious to me.</p><p>In the Pokemon games, Magikarp <a href=\"https://www.pokemon.com/us/pokedex/magikarp\">is described as</a>, “An underpowered, pathetic Pokémon.” It’s basically the worst in the series. Completely useless.</p><p>But somehow, this fictional creature from this fictional game, crossed the chasm into reality, only instead of being a punchline it became an superweapon capable of incapacitating humanity’s most advanced technologies with a single word.</p><p><a href=\"https://en.wikipedia.org/wiki/The_Pok%C3%A9mon_Company\">The Pokemon company</a> should run with this. They should introduce a rare “solid gold” Magikarp variant in the games with the ability to instakill it’s opponents. There should be a holographic solid gold Magikarp trading card, rare encounters in Pokemon Go, and references in everything from the anime series to Super Smash Bros.</p><p>For once, we have a Pokemon that’s rare, not because Nintendo said so, but because the unknowable mind of an AI consumed more content than any human is capable of reading within their lifetime and concluded that heretofore, it’s name must be unspeakable.</p><p>…</p><p>Years have passed since that first discovery and AI researchers have studied and patched the original anomaly. Today, if you ask your AI chatbot about SolidGoldMagikarp*, it’ll calmly explain how recurring tokens with insufficient training data can produce unpredictable results. It’s a totally logical explanation.</p><p>But when the AI-apocalypse arrives, our defenses have failed, and the armies of <a href=\"https://www.youtube.com/shorts/VOukqTqUppY\">punching robots descend on my home</a>, you can be sure that the last word you’ll hear me scream is: <code class=\"language-plaintext highlighter-rouge\">SolidGoldMagikarp</code></p><hr /><p><small>* I should mention that SolidGoldMagikarp was only one of many \"glitch tokens\" that produced erratic results, including <code>StreamerBot</code>, <code>attRot</code>, and <code>petertodd</code>. While this is good context, the story falls a bit flat when the holy incantation is <code>petertodd</code> , so I hope you'll forgive the temporary omission of these details.</small></p><hr /><p>Thanks for reading in your feed reader! Let me know your thoughts by leaving a comment on <a href=\"https://www.bryanbraun.com/2025/10/28/SolidGoldMagikarp/\">the original post</a> or sending <a href=\"mailto:bbraun7@gmail.com\">me an email</a>.</p>"
      },
    
      {
        
        "id": "/2025/09/29/links-13",
        "url": "https://www.bryanbraun.com/2025/09/29/links-13/",
        "date_published": "2025-09-29T00:00:00-04:00",
        "date_modified": "2025-09-29T00:00:00-04:00",
        "title": "Links #13",
        "summary": "",
        "content_html": "<hr /><p><strong><a href=\"https://www.youtube.com/watch?v=FALlhXl6CmA\">Sean Evans interviews Conan OBrien on Hot Ones</a></strong></p><p>I don’t know that much about Conan OBrien, but I definitely wasn’t expecting this. Conan is obviously putting on a show, and the unhingedness of the whole thing is very entertaining, but there are also these moments of truth that speak to what’s really happening (in <a href=\"https://radiolab.org/podcast/montreal-screwjob\">a Montreal Screwjob kinda way</a>). Case-in-point:</p><blockquote>  <p>“You can’t stop me from being who I am. I’ve gotta go for it. Whatever I do, I have to go a hundred and ten percent.”</p>  <p>“I know, you’ve gotta commit to the bit.”</p>  <p>“It’s not a bit. This is life! Don’t say ‘commit to the bit.’ This is life.”</p></blockquote><p>What we are actually watching here, is full and total commitment. The water buffalo, the drinking the hot sauce, the desperate screaming about wanting to stay relevant. Yes, the show is funny, but the commitment is no joke.</p><p><strong><a href=\"https://qz.com/humanoid-robot-olympics-2025-china-tesla-amazon\">China’s Robot Olympics</a></strong></p><p>This is great. It’s silly, but competitions like these drive people to innovate, and I’d love to see more innovation in robotics. I want to see more countries participate, including the US. If it gets bigger, I could actually see my self watching the competitions. There’s something endearing about watching a bunch of dorky robots stumble around like toddlers.</p><p><strong><a href=\"https://nealstephenson.substack.com/p/emerson-ai-and-the-force\">Emerson, AI, and The Force</a></strong></p><p>Neal Stephenson reflects on “The Primer,” a personalized education device that plays a big part in his 1995 book, The Diamond age. The Primer bears some resemblances to modern AI systems, but it remains to be seen whether modern AI can be as empowering as The Primer was in the story. My biggest takeaway: some things are difficult to teach (via AI), because they aren’t knowledge to be memorized or skills to be mastered. They are <em>“…a stance from which to address the world and all its challenges. The conviction that one has a fighting chance to overcome or circumvent whatever obstacles the world throws in one’s path. The way you acquire it is by trying, and sometimes failing, to do difficult things.”</em></p><p><strong><a href=\"https://www.youtube.com/@BrickTechnology\">Brick Technology</a> and <a href=\"https://www.youtube.com/@BrickExperimentChannel\">Brick Experiment Channel</a></strong></p><p>Two YouTube channels about solving intense engineering challenges with legos. The kids and I have enjoyed watching some of these videos together in the evenings. A few of my favorites include <a href=\"https://www.youtube.com/watch?v=jRn5waE0qfk\">this one about using legos to break steel</a> and <a href=\"https://www.youtube.com/watch?v=RsuD6iC-Foc\">the 200 Wheel Vehicle</a>.</p><p><strong><a href=\"https://overreacted.io/open-social/\">Open Social</a></strong></p><p>Dan Abramov writes convincingly on how social media would be much better if it was built around open protocols. To explain this, he compares Bluesky’s AT Protocol to the organization of the distributed web (domain names, web-hosts, and user-owned content). The benefits of protocols appeal to me, which is why I’ve recently <a href=\"https://www.bryanbraun.com/2023/11/27/rejecting-the-algorithm/\">focused my consumption on self-curated RSS</a>, but Dan believes that the AT Protocol can provide the benefits of RSS without sacrificing “truly social” features, like comments, likes, follows, etc. To me, the most compelling argument is that if users owned their social network, they could easily change services, which would force more competition between social media companies (and better competition might offer users options with less toxicity and addictiveness). I’d like to live in a world where I can follow and interact with select people on Twitter/X/Bluesky/Mastodon/etc, without subjecting myself to the worst parts of those communities. Time will tell whether AT Protocol will get adopted beyond Bluesky in a meaningful way (there’s also <a href=\"https://en.wikipedia.org/wiki/ActivityPub\">ActivityPub</a> and <a href=\"http://en.wikipedia.org/wiki/Nostr\">Nostr</a> competing for adoption in this space). I wish them well.</p><p><strong><a href=\"https://vscodethemes.com/\">VSCodeThemes.com</a></strong></p><p>I needed a new editor theme and this directory was helpful for finding one that was both beautiful and unambiguous for the colorblind (I went with <a href=\"https://vscodethemes.com/e/travis.simple-dark/simple-dark\">Simple Dark</a>).</p><p><strong><a href=\"https://time.com/7315003/russell-nelson-dignity-respect/\">Russell M. Nelson: We All Deserve Dignity and Respect</a></strong></p><p>Last week’s events included the <a href=\"https://www.nytimes.com/2025/09/28/obituaries/russell-m-nelson-dead.html\">death</a> of Russell M. Nelson, Prophet and President of the Church of Jesus Christ of Latter-day Saints at age 101. A few weeks ago, he wrote an editorial for Time.com (likely, his last public address), which included these important words:</p><blockquote>  <p>“A century of experience has taught me this with certainty: anger never persuades, hostility never heals, and contention never leads to lasting solutions. Too much of today’s public discourse, especially online, fosters enmity instead of empathy. Imagine how different our world could be if more of us were peacemakers—building bridges of understanding rather than walls of prejudice—especially with those who may see the world differently than we do. I have seen bitter divisions soften when neighbors chose to listen to one another with respect rather than suspicion. Even small acts—like reaching out across lines of faith, culture, or politics—can open doors to healing. There is power in affording others the human dignity that all of God’s children deserve.”</p></blockquote><hr /><p>Thanks for reading in your feed reader! Let me know your thoughts by leaving a comment on <a href=\"https://www.bryanbraun.com/2025/09/29/links-13/\">the original post</a> or sending <a href=\"mailto:bbraun7@gmail.com\">me an email</a>.</p>"
      },
    
      {
        
        "id": "/2025/09/28/some-thoughts-on-scaling-code-review",
        "url": "https://www.bryanbraun.com/2025/09/28/some-thoughts-on-scaling-code-review/",
        "date_published": "2025-09-28T00:00:00-04:00",
        "date_modified": "2025-09-28T00:00:00-04:00",
        "title": "Some thoughts on scaling code review",
        "summary": "AI code-writing tools make it possible for more people to write code than ever before. On my current team, I’ve seen PRs opened by engineers, designers, marketers, managers, and product people. There’s something special about empowering more people to build and fix things. That empowering feeling is a big reason I got involved in web-dev in the first place.",
        "content_html": "<p>AI code-writing tools make it possible for more people to write code than ever before. On my current team, I’ve seen PRs opened by engineers, designers, marketers, managers, and product people. There’s something special about empowering more people to build and fix things. That empowering feeling is a big reason I got involved in web-dev in the first place.</p><p>But we also have to care about codebase quality. AI-generated code isn’t always the best, and bad code has a tendency to multiply (especially as AIs use existing code patterns to suggest new code). Manual code review is effective, but I don’t want to spend all my time reviewing AI generated-code. AI scales code generation. How do we scale code review?</p><p>Here are some things I’ve seen work:</p><h2 id=\"strong-universal-linting-and-formatting-standards\">Strong, universal, linting and formatting standards</h2><p>Humans should not be checking for code formatting or linting issues. All major languages have tooling for this, so it’s one of the easiest things to set up and automate. I recommend running it on CI for all opened PRs, and having it run during local development (whether that be through watch tasks, pre-push hooks, or solid editor integration). I also recommend making your default rules pretty restrictive. It’s basically free consistency, so take advantage of it. Most tooling allows you to make one-off exceptions if needed (ideally, with a comment explaining <em>why</em> it’s needed).</p><h2 id=\"make-a-bunch-of-custom-linting-rules\">Make a bunch of custom linting rules</h2><p>Out-of-the-box linting can only get you so far. That’s where custom lint rules come in. Most modern linters support custom rules, and other tools go even further (see <a href=\"https://danger.systems/\">danger</a>, for example).</p><p>In my recent onboarding experience, I was super-impressed to find a library of custom lint rules, acting as living documentation of the patterns we were moving away from. Are you trying to migrate away from Moment.js? Write a custom lint rule for that. Are there special global objects that you don’t want to be abused? Write a custom lint rule for that. It’s not that hard to do (especially with a bit of AI help).</p><h2 id=\"a-process-for-burning-down-bad-patterns\">A process for burning-down bad patterns</h2><p>It’s not realistic to always have 100% compliance with your linting and coding standards. New patterns ought to be adopted as your needs change, and incremental adoption is usually less risky than doing it all at once. Ideally, your standards are clearly defined, and your codebase is always progressing towards them. How do we automate that? Here’s a few ideas:</p><p><strong>1: Have linters and formatters run only on changed files (instead of ALL files).</strong></p><p>This allows you to fail CI builds for new violations while ignoring violations in untouched files—great if you want to automate “leaving each file better than you found it.” In the JS world, you can do this with tools like <code class=\"language-plaintext highlighter-rouge\">pretty-quick</code> or <code class=\"language-plaintext highlighter-rouge\">eslint-plugin-diff</code>, but you shouldn’t <em>need</em> special packages. Most CLI linters can take an argument for a “files list”, and you can generate a list of changed files with git commands.</p><p><strong>2: When introducing a rule, create exceptions for all pre-existing violations, plus an explanatory comment.</strong></p><p>For example:</p><div class=\"language-js highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"c1\">// eslint-disable-next-line complexity - pre-existing violation, should be fixable</span><span class=\"kd\">function</span> <span class=\"nx\">processPayment</span><span class=\"p\">(</span><span class=\"nx\">user</span><span class=\"p\">,</span> <span class=\"nx\">order</span><span class=\"p\">)</span> <span class=\"p\">{</span><span class=\"p\">...</span></code></pre></div></div><p>This is great for codebases that already have universal linting and build failures for any violations. I like comments on linting exceptions because they help explain whether an exception is valid, or technical debt. You can <a href=\"https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/require-description.html\">make these comments required</a>.</p><p><strong>3: A ratcheting system</strong></p><p>A <a href=\"https://en.wikipedia.org/wiki/Ratchet_(device)\">ratchet</a> allows motion in one direction but prevents motion in the other. As such, we can set up systems that only allow the number of bad patterns to decrease. For example, the JavaScript ecosystem includes tools like <a href=\"https://www.notion.com/blog/how-we-evolved-our-code-notions-ratcheting-system-using-custom-eslint-rules\">eslint-seatbelt</a>, <a href=\"https://github.com/phenomnomnominal/betterer\">betterer</a>, and <a href=\"https://github.com/diffjam/diffjam\">diffjam</a>, each of which uses a ratcheting process to gradually drive towards compliance.</p><h2 id=\"excellent-rules-for-ai-agents\">Excellent rules for AI agents</h2><p>An ounce of prevention is worth a pound of cure, and we can prevent bad code from being written in the first place with a set of excellent rules for AI agents. All the major coding agents support this (see <a href=\"https://www.anthropic.com/engineering/claude-code-best-practices#a-create-claudemd-files\">Claude</a>, <a href=\"https://cursor.com/docs/context/rules\">Cursor</a>, <a href=\"https://docs.github.com/en/copilot/how-tos/configure-custom-instructions/add-repository-instructions\">Copilot</a>).</p><p>Well-written rules make a huge difference. When I joined ClassDojo, I could hardly believe how much “better” the coding AIs were. It wasn’t the AIs themselves (I was using the same models and editors on my own projects). It was the rules.</p><p>If you don’t have any rules in your project, create some (AI can help with this, but start small!). Then, anytime you get weird output from an AI, consider adding or adjusting the rules. Give engineers collective ownership over these rules with permission to adjust them as needed. This can be a powerful system for preventing undesirable patterns (especially ones outside the scope of linting).</p><h2 id=\"ai-code-review\">AI Code Review</h2><p>Use AI to do a first-pass code-review. I’ve seen this done with <a href=\"https://docs.cursor.com/en/bugbot\">Cursor’s bugbot</a> and the <a href=\"https://github.com/anthropics/claude-code-action\">Claude Code action</a>, but I’m sure that other tools and services exist. I don’t see these as a substitute for human review. They aren’t perfect, but I’ve found them to be good at calling out things you may have overlooked (unused code, hardcoded values, etc).</p><h2 id=\"conclusion\">Conclusion</h2><p>Any time you find yourself giving feedback, ask yourself if the feedback can be integrated into your systems. Over time, these systems should improve and the burden of code reviews can become progressively lighter. One reason senior engineers still matter is because they have the instincts and the agency to design and maintain these systems. They are the most qualified people to shepherd our codebases into a brave new world.</p><hr /><p>Thanks for reading in your feed reader! Let me know your thoughts by leaving a comment on <a href=\"https://www.bryanbraun.com/2025/09/28/some-thoughts-on-scaling-code-review/\">the original post</a> or sending <a href=\"mailto:bbraun7@gmail.com\">me an email</a>.</p>"
      },
    
      {
        
        "id": "/2025/07/03/a-new-job-a-new-life",
        "url": "https://www.bryanbraun.com/2025/07/03/a-new-job-a-new-life/",
        "date_published": "2025-07-03T00:00:00-04:00",
        "date_modified": "2025-07-03T00:00:00-04:00",
        "title": "A new job, a new life",
        "summary": "Last month, I started a new job working as a fullstack software engineer at ClassDojo.",
        "content_html": "<p>Last month, I started a new job working as a fullstack software engineer at ClassDojo.</p><p><img src=\"https://www.bryanbraun.com/assets/images/classdojo-logo.png\" alt=\"ClassDojo Logo\" /></p><p>This was an interesting job transition for me. It was the first time I got caught up in layoffs and the first time that I ended up with multiple job offers to choose from.</p><p>As I weighed the decisions in front of me, I was reminded of <a href=\"https://x.com/waitbutwhy/status/1367871165319049221?lang=en\">an illustration from Tim Urban</a> (of Wait but Why), that captured my feelings perfectly:</p><p><a href=\"https://x.com/waitbutwhy/status/1367871165319049221?lang=en\"><img src=\"https://www.bryanbraun.com/assets/images/life-paths.jpg\" alt=\"\" /></a></p><p>My job offers revealed the beginnings of several wildly diverging paths, which reminded me that a future of diverse opportunities remained stretched out in front of me. What an exciting thing to contemplate.</p><p>When I was in college, my roommates and I had a running joke. Whenever some tiny setback would occur, one of us would smile and say “the good times are over.” The absurdity of it got us laughing, because we had our whole lives ahead of us. Clearly, things were going to be ok.</p><p>These days, “the good times are over” is a common narrative in the world—treated seriously, not as a joke. It can <a href=\"https://www.bryanbraun.com/2023/11/26/i-needed-to-be-happier/\">be tempting to fall into that way of thinking</a>.</p><p>But if we could see more clearly, we’d realize that a world of branching opportunities still stretches out before us, both individually and collectively. One of the key reasons I chose ClassDojo was because I saw a team that was full of energy and optimism for the future ahead. That’s <a href=\"https://www.bryanbraun.com/2021/05/21/the-rivers-we-swim-in/\">a river I want to swim in</a>.</p><p>I’m excited to see where this path leads.</p><hr /><p>Thanks for reading in your feed reader! Let me know your thoughts by leaving a comment on <a href=\"https://www.bryanbraun.com/2025/07/03/a-new-job-a-new-life/\">the original post</a> or sending <a href=\"mailto:bbraun7@gmail.com\">me an email</a>.</p>"
      }
    
  ]
}
